From: helge Date: Fri, 3 Jun 2005 14:06:36 +0000 (+0000) Subject: added gnustep-make vendor branch to trunk X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=85be941fcd152d18363e709f8549d56c36b664bf;p=sope added gnustep-make vendor branch to trunk git-svn-id: http://svn.opengroupware.org/SOPE/trunk@824 e4a50df8-12e2-0310-a44c-efbce7f8a7e3 --- diff --git a/gnustep-make/.cvsignore b/gnustep-make/.cvsignore new file mode 100644 index 00000000..ad3026da --- /dev/null +++ b/gnustep-make/.cvsignore @@ -0,0 +1,16 @@ +config.log +config.make +config.cache +which_lib +user_home +GNUmakefile +GNUstep.sh +GNUstep.csh +config.h +config.status +openapp +debugapp +executable.template +opentool +gnustep-make.spec +fixpath.sh diff --git a/gnustep-make/ANNOUNCE b/gnustep-make/ANNOUNCE new file mode 100644 index 00000000..d3927704 --- /dev/null +++ b/gnustep-make/ANNOUNCE @@ -0,0 +1,43 @@ +Announcement +************ + +The GNUstep Makefile Package version 1.10.0 is now available. + +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. + +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. + +Obtaining gnustep-make +====================== + +You can get the gstep-make-1.10.0.tar.gz distribution file at + + + Please log bug reports on the GNUstep project page + or send bug reports to +. + diff --git a/gnustep-make/COPYING b/gnustep-make/COPYING new file mode 100644 index 00000000..60549be5 --- /dev/null +++ b/gnustep-make/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) 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 +this service 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 make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. 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. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +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 +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the 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 a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE 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. + + 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 +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 19yy + + 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 2 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, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision 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, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This 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 Library General +Public License instead of this License. diff --git a/gnustep-make/ChangeLog b/gnustep-make/ChangeLog new file mode 100644 index 00000000..0e6585ef --- /dev/null +++ b/gnustep-make/ChangeLog @@ -0,0 +1,1851 @@ +2004-09-07 Adam Fedor + + * Version 1.10.0 + +Tue Sep 7 12:48:31 2004 Nicola Pero + + * target.make (SHARED_LIB_LINK_CMD): Removed -prebind flag. + +2004-09-06 Adam Fedor + + * configure.ac: Don't reset LIB_DIR. + +2004-09-03 Adam Fedor + + * Add missing GNUsteprc.in + +Fri Sep 3 21:52:00 2004 Nicola Pero + + * 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 + + * 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 + + * 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 + + * 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 + + * GNUstep.sh.in: Add newline at end of file (avoids bug in Solaris + sed). + +Fri Aug 20 02:26:12 2004 Nicola Pero + + * 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 + + * GNUstep.sh.in: Do not run make_services. + * GNUstep.csh.in: Do not run make_services. + +2004-08-07 Adam Fedor + + * configure.ac: Remove warning about moving old directories into + new directory structure (been there since 1.7.0). + +2004-07-31 Adam Fedor + + * 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 + + * 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 + + * configure.ac: Improve compiler type test. + * Documentation/gnustep.init: Fix template parsing rules. +ยบ +2004-07-04 Adrian Robert + + * 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 .html + to the list of files installed/uninstalled for HTML. + +2004-06-23 01:47 Alexander Malmberg + + * 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 , + Yves de Champlain + + * 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 + + * 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 + + * 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 + + * 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 + + * GNUmakefile.in (uninstall): Remove all installed files (still + need to do directories). + +2004-06-09 Adam Fedor + + * 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 + + * ld_lib_path.[c]sh: Allow seting of GNUstep framework location on + Mac OS X for all library combos (patch from Quentin Mathe + ). + + * 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 + + * debugapp.in (appname): Fixed escaping of --args argument to work + with an alien grep / os. + +2004-05-17 Richard Frith-Macdonald + + * 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 + + * 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 + + * 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 + + * Instance/Documentation/autogsdoc.make (internal-doc-distclean): + Added rule, to make sure a 'make distclean' actually cleans. + +2004-04-27 Adam Fedor + + * clean_os.sh: Report netbsd1.6* and netbsd2* as netbsdelf. + +Tue Apr 20 10:27:16 2004 Matt Rice + + * target.make: Use the GNU/Linux ELF code for GNU/Hurd too. + +2004-04-12 Adam Fedor + + * 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 + + * 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 + + * 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 + + * Instance/library.make: Use ALL_LDFLAGS when running DLLWRAP on + windows. + +2004-03-31 Richard Frith-Macdonald + + * Instance/Documentation/autogsdoc.make: Make doc subdirectory if + necessary. + +2004-03-31 Richard Frith-Macdonald + + * 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 + + * 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 + + * Documentation/make.texi (PACKAGE_NAME, PACKAGE_VERSION): Updated + documentation. + +Mon Mar 29 12:58:34 2004 Nicola Pero + + * 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 + + * 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 + + * Version: Do not define VERSION. + +Mon Mar 29 12:19:38 2004 Matt Rice + + * Master/source-distribution.make: Strip whitespaces from + PACKAGE_NAME. + +2004-03-28 Richard Frith-Macdonald + + * Instance/Documentation/autogsdoc.make: Correct dependency + information so that documentation is regenerated when needed. + +2004-03-28 David Ayers + + * Documentation/make.texi: Document native-library.make. + Capitalize acronyms. + +2004-03-23 David Ayers + + * Documentation/make.texi: Spelling fixes. + +Thu Mar 18 12:57:40 2004 Nicola Pero + + * 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 + + * Instance/palette.make: Link palatte to all libs on Windows + and Apple/two-level-namespaces. Similar to bundles. + (patch from Marc Ordinas i Llopis ). + +Mon Mar 15 13:57:50 2004 Nicola Pero + + * GNUmakefile.in: Fixed installation of strip_makefiles.sh when + using a different build directory. + +Thu Mar 11 18:36:59 2004 Nicola Pero + + * 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 + + * Instance/gswapp.make: Do not create library_paths.openapp on + Apple. ($(GNUSTEP_INSTANCE).iconheader): Rule removed. + +2004-03-09 Adam Fedor + + * 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 + + * 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 + + * 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 + + * common.make: Removed stale debugging statement. + +Tue Mar 9 17:05:38 2004 Nicola Pero + + * 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 + + * 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 + + * Instance/application.make ($(APP_FILE)): Do not create the + library_paths.openapp file on Apple. + +Mon Mar 8 13:20:38 2004 Nicola Pero + + * 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 + + * Documentation/machines.texi: Updates, add URL's for README's. + +Sun Mar 7 15:22:37 2004 Nicola Pero + + 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 + + * Documentation/README.Darwin: Minor improvements. + +Thu Mar 4 13:06:22 2004 Nicola Pero + + * 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 + + * 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 + + * 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 + + * 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 + + * Version 1.9.1 + * Documentation/announce.texi, readme.texi, install.texi, news.texi: + Update. + +2004-02-28 Quentin Mathe + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * Documentation/README.Darwin: Update. + +2004-01-21 Adam Fedor + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 , + Nicola Pero + + * 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 + + * Instance/framework.make (internal-framework-uninstall_): + Remove symlinks in $(GNUSTEP_LIBRARIES). + +Mon Jan 5 00:33:00 2004 Nicola Pero + + * 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 + + * Documentation/gnustep-howto.texi: Update. + * Documentation/machines.texi: Idem. + +Fri Dec 26 17:40:23 2003 Nicola Pero + + * 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 + + * user_home.c: Use name of current user under unix (rather than + environment variables etc). + +Fri Nov 28 19:07:11 2003 Nicola Pero + + * 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 + + * Instance/Shared/bundle.make + (shared-instance-bundle-all-localized-webresources): Fixed syntax + error. + +2003-11-13 David Ayers + + * Instance/framework.make: Remove symlink. + +Sat Nov 8 22:41:03 2003 Nicola Pero + + * 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 + + * 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 + + * 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 + + * rules.make (ADDITIONAL_INCLUDE_DIRS): Do not add -framework + flags from ADDITIONAL_NATIVE_LIBS. + +Mon Nov 3 23:30:47 2003 Marcus Muller + + * library-combo.make (INTERNAL_OBJCFLAGS): Do not add -framework + Foundation and -framework AppKit for Apple. + +Mon Nov 3 23:25:07 2003 Nicola Pero + + * Instance/framework.make (build-framework): Do not build + Info-gnustep.plist on Apple. + +Mon Nov 3 11:50:30 2003 Nicola Pero + + * 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 + + * config.make.in (HAS_LN_S): Set to no for mingw32. + +2003-10-25 00:50 Alexander Malmberg + + * 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 + + * Instance/Documentation/texi.make (internal-doc-clean): Remove + $(GNUSTEP_INSTANCE).html. + +2003-10-20 Adam Fedor + + * configure.ac: Add 2.57 prereq, subst OBJCFLAGS + * config.make.in (OBJCFLAGS): New + +Mon Oct 20 15:02:22 2003 Nicola Pero + + * 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 + + * Instance/framework.make (internal-framework-distclean): Delete + from GNUSTEP_BUILD_DIR. + +Mon Oct 20 14:44:57 2003 Nicola Pero + + 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 + + * Documentation/gnustep-howto.texi: Updates, clearer instructions. + * Documenation/machines.texi, Documentation/userfaq.texi: Idem. + +Sun Oct 19 16:09:46 2003 Nicola Pero + + * 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 + + * 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 + + * 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 + + * configure: Regenerated using autoconf 2.57 instead of 2.53. + +2003-10-14 Adam Fedor + + * common.make: Simplify common GNUstep dirs. + +Tue Oct 14 01:07:22 2003 Nicola Pero + + 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 + + * 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 + + * 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 + + * 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 + + * Instance/Shared/java.make (.PHONY): Removed line continuation in + excess. + +Mon Oct 13 13:56:00 2003 Nicola Pero + + * Instance/palette.make: Tidied up the way in which code was + commented. + +Mon Oct 13 13:09:53 2003 Nicola Pero + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * rules.make ($(GNUSTEP_OBJ_DIR)): Use ECHO_NOTHING. + +2003-10-09 Adam Fedor + + * 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 + + * Version: Bump to 1.8.90 + +2003-10-04 Adam Fedor + + * GNUmakefile.in (dist): Remove + * Documentation/machines.texi: Doc updates. + * Documentation/faq.texi, Documentattion/userfaq.texi: Idem. + +2003-09-29 Adam Fedor + + * 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 + + * target.make (darwin/BUNDLE_LDFLAGS): Supress warnings + * Documentation/machines.texi: Update darwin. + +2003-09-26 Adam Fedor + + * Version 1.8.0 released on branch. + +2003-09-25 Adam Fedor + + * target.make (darwin): Fix up bundle flags for GNU compiler. + +2003-09-19 Leigh Smith + + * library.make: Changed the full .inp declaration to $(DLL_DEF_INP). + +2003-09-15 Adam Fedor + + * Version: Add VERSION + * gnustep-make.spec.in: Update packager. + +Sun Sep 7 12:43:59 2003 Nicola Pero + + * config.site: Fixed Headers directory, it is now in Library/. + +Wed Sep 3 10:29:26 2003 Matt Rice , + Nicola Pero + + * 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 + + * Version 1.7.3 + +2003-08-22 Adam Fedor + + * configure.ac: On netbsd, Use -Wl to pass linker options. + +2003-08-05 Martin Brecher + * Documentation/openapp.1: New file. + * Documentation/GNUstep.7: Updated. File is now unprocessed. + +2003-08-07 Richard Frith-Macdonald + + * 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 + + * 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 + + * 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 + + * 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 + + * rules.make (%.plist): Filter the result through sed to drop #pragma + statements. + +2003-07-23 Richard Frith-Macdonald + + * Instance/Documentation/autogsdoc.make: put stamp file in + documentation subdirectory so it gets removed properly with 'clean' + +2003-07-22 Adam Fedor + + * Version 1.7.2 + +2003-07-22 Richard Frith-Macdonald + + * 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 + + * 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 + + * 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 + + * debugapp.in: Pass debugapp arguments to gdb to use when running + the application. + +Wed Jul 16 09:46:16 2003 Nicola Pero + + * 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 + + * 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 + + * configure.ac: Remove '^' match from gcc version sed script. + +2003-07-05 Adam Fedor + + * configure.ac: Add flags for openbsd like freebsd. + +2003-07-05 Adam Fedor + + * Documentation/GNUmakefile.in (after-install): gzip man files + * Documentation/GNUstep.7: Unziped. + +2003-07-05 Adam Fedor + + * clean_os.sh: Clean netbsdelf. + * configure.ac: Add -R flags for netbsdelf + * target.make (netbsd/ADDITONAL_LDFLAGS): Idem. + (Patches from Peter Cooper + +2003-06-29 Richard Frith-Macdonald + + * user_home.c: Cast all arguments to isspace() as int ... for picky + compiler versions. + +2003-06-25 Adam Fedor + + * 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 + + * Instance/subproject.make (subproject.def): Depend on DLL_DEF_INP. + +2003-06-21 Adam Fedor + + * 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 + + * Version 1.7.1 + +2003-06-18 Adam Fedor + + * target.make (openbsd): Enable shared libs, use -fPIC not -fpic. + +2003-06-17 Adam Fedor + + * 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 + + * configure.ac: Add option to disable moving obsolete dirs + * GNUmakefile.in: Update for change. + +2003-06-15 Adam Fedor + + * target.make (openbsd/SHARED_LIB_LINK_CMD): Use gcc to link + the library. + +2003-06-11 Adam Fedor + + * move_obsolete_paths.sh: Don't remove the Developer dir. + +2003-06-06 Adam Fedor + + * target.make (openbsd/OBJ_MERGE_CMD): Add. + +2003-06-05 Adam Fedor + + * config_thread.m: More complete thread test. + * configure.ac: Add runtime based on RUNTIME_LIB + +2003-06-03 Adam Fedor + + * 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 + + * Instance/Documentation/autogsdoc.make (internal-doc-install_): + Fixed typo - added missing ";". + +2003-06-02 18:16 Alexander Malmberg + + * 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 + + * 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 , + David Ayers + + * Instance/gswapp.make (internal-gswapp-install_): Fixed typo: + removed excess bracket. + +Fri May 30 23:28:55 2003 Nicola Pero + + * common.make (OBJC_FLAGS): Added -fno-strict-aliasing. + +2003-05-29 Adam Fedor + + * target.make (TARGET_SYSTEM_LIBS): Remove -ldl (added when necessary + by gnustep-base). + +Wed May 28 09:47:42 2003 Nicola Pero + + * 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 + + * Instance/Documentation/javadoc.make (internal-doc-install_): Fixed line breaking + typo. + +Tue May 27 13:21:57 2003 Nicola Pero + + * Instance/objc.make: Remove old deprecation warning. + * Instance/tool.make: The same. + +Tue May 27 13:12:59 2003 Nicola Pero + + * 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 + + * 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 + + * Instance/framework.make (build-framework-dirs): Merge contiguous + commands into single subshell. + +Tue May 27 11:36:06 2003 Nicola Pero + + * 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 + + * 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 + + * messages.make (ECHO_UNINSTALLING): New variable. + (ECHO_PREPROCESSING): Added missing definition in case + messages=yes. + +Tue May 27 11:00:59 2003 Nicola Pero + + * 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 + + * Instance/ctool.make: Old deprecation warning removed. + +Tue May 27 10:02:46 2003 Nicola Pero + + * relative_path.sh: Added code to normalize input paths by + removing /./ components before using them. + +2003-05-19 Adam Fedor + + * 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 + + * GNUmakefile.in (generated-files): Added fixpath.sh. + (fixpath.sh): New rule. + +Wed May 14 16:19:02 2003 Nicola Pero + + * transform_paths.sh: Quote paths. + +Wed May 14 16:15:16 2003 Nicola Pero + + * 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 + + * Documentation/install.texi (Flat Structure): Fixed typo. + (Reported by Lele Gaifax ). + +Tue May 6 11:30:19 2003 Nicola Pero + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * Documentation/filesystem.texi: Clarify Local installation + rights, Remove Network/{Server,Users}. + +Wed Apr 23 09:18:07 2003 Nicola Pero + + * 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 + + * 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 + + * GNUstep.csh.in: Quote all values of setenv, set, source calls. + +Mon Apr 14 12:59:23 2003 Nicola Pero + + 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 + + * 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 + + * 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 + + * 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 + + * Merged 1.6.0 branch changes in + +Mon Mar 10 12:51:20 2003 Nicola Pero + + * 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 + + * 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 + + * Version: 1.6.0 + +2003-03-14 Adam Fedor + + * 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 + + * clean_cpu.sh: Make all hppa variants the same. + (suggestion from Matthias Klose) + +2003-03-04 Adam Fedor + + * 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 + + * configure.ac: Enable GCC deprecation warnings for #import. + * configure: Regenerated. + +2003-03-03 iMartin Brecher + + * 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 + + * 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 + + * Documentation/README.MingW: Update URLs. + +2003-02-16 Adam Fedor + + * Version: 1.5.2 + * Documentation/announce.texi, news.texi, install.texi: Update + +2003-02-14 Adam Fedor + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * target.make (INTERNAL_CFLAGS): On darwin, apple foundation, add + -no-cpp-precomp. + +2003-01-09 Richard Frith-Macdonald + + * Documentation/README.MinGW: Updated for current cod, fixing a few + errors. + * user_home.c: Fixed typo. + +2003-01-03 Richard Frith-Macdonald + + * common.make: Don't use RUNTIME_FLAG for plain C code, just for ObjC + +Fri Jan 3 01:57:46 2003 Nicola Pero + + * create_domain_dir_tree.sh (mydir): Replaced dirname invocation + with a sed trick. Apparently dirname is not available on OpenStep + (reported by Pete French ). + +Tue Dec 31 16:10:49 2002 Nicola Pero + + * 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 + + * 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 + + 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 + + * Instance/application.make: Implemented support for Apple native + bundle organization, and Apple Info.plist. + +Wed Dec 25 03:04:42 2002 Nicola Pero + + * 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 + + * Master/application.make (internal-clean): Removed special code + for OBJC_COMPILER = NeXT. + +Fri Dec 20 17:27:16 2002 Nicola Pero + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * Instance/framework.make: Fixed typo in warning message. + +2002-12-10 Adam Fedor + + * 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 + + * 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 + ). + +2002-12-05 Mirko Viviani + + * Instance/framework.make ($(FRAMEWORK_FILE)): create the link with + GNUSTEP_INSTANCE name instead of FRAMEWORK_NAME. (patch from David + Ayers ) + +2002-12-03 Mirko Viviani + + * Instance/framework.make ($(FRAMEWORK_FILE)): remove the link before + creating a new one. + +2002-12-02 Mirko Viviani + + * Instance/framework.make ($(FRAMEWORK_FILE)): link + lib.so to for dynamic loading. + +Mon Dec 2 12:43:23 2002 Nicola Pero + + * Instance/framework.make: Added support for XXX_HEADER_FILES_DIR + and XXX_HEADER_FILES_INSTALL_DIR (Patch from David Ayers + ). + +2002-11-29 Adam Fedor + + * target.make (darwin1): Remove + (darwin6): Add. + +2002-11-27 Richard Frith-Macdonald + + * user_home.c: Use USERPROFILE for home directory on windoze. + * Documentation/RADME.MinGW: Fix typo reported by Tom Koelman + +2002-11-19 Adam Fedor + + * Version: 1.5.1 + * Documentation/news.texi: Updated. + +2002-11-19 Adam Fedor + + * create_domain_dir_tree.sh (mydir): Use `command` not + $(command), which doesn't work with all sh's. + +2002-11-15 Adam Fedor + + * 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 + + * 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 + + 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 + + * 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 + + * Instance/application.make (.PHONY): Added + internal-app-copy_into_dir. + (internal-app-copy_into_dir): Implemented. + +2002-11-05 Adam Fedor + + * 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 + + * 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 + + * GNUmakefile.in (distclean): Remove fixpath.sh. + +Mon Nov 4 12:08:58 2002 Nicola Pero + + * 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 + + * 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 + + * ChangeLog: Moved into ChangeLog.1 diff --git a/gnustep-make/ChangeLog.1 b/gnustep-make/ChangeLog.1 new file mode 100644 index 00000000..0514c74f --- /dev/null +++ b/gnustep-make/ChangeLog.1 @@ -0,0 +1,7067 @@ +Fri 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. diff --git a/gnustep-make/Documentation/.cvsignore b/gnustep-make/Documentation/.cvsignore new file mode 100644 index 00000000..833edd8d --- /dev/null +++ b/gnustep-make/Documentation/.cvsignore @@ -0,0 +1,22 @@ +GNUmakefile +version.texi +*.log +*.dvi +*.ps +*.html +*.info +*.aux +*.toc +*.cp +*.fn +*.vr +*.tp +*.ky +*.pg +*.vrs +*.gz +INSTALL +README +NEWS +GNUstep-HOWTO +internals diff --git a/gnustep-make/Documentation/.latex2html-init b/gnustep-make/Documentation/.latex2html-init new file mode 100644 index 00000000..cc4b5dc6 --- /dev/null +++ b/gnustep-make/Documentation/.latex2html-init @@ -0,0 +1,47 @@ + +# 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 = " +

+Copyright (C) 2000, 2001 Free Software Foundation, Inc. +

+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. +

+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. +

+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 ? " Next: $NEXT_TITLE \n" : undef) . + ($UP_TITLE ? "Up: $UP_TITLE \n" : undef) . + ($PREVIOUS_TITLE ? " Previous: $PREVIOUS_TITLE \n" : undef) . + "

\n" +} + +sub bot_navigation_panel { + "


". + ($NEXT_TITLE ? " Next: $NEXT_TITLE \n" : undef) . + ($UP_TITLE ? "Up: $UP_TITLE \n" : undef) . + ($PREVIOUS_TITLE ? " Previous: $PREVIOUS_TITLE \n" : undef) +} diff --git a/gnustep-make/Documentation/DESIGN b/gnustep-make/Documentation/DESIGN new file mode 100644 index 00000000..e5ec0f35 --- /dev/null +++ b/gnustep-make/Documentation/DESIGN @@ -0,0 +1,484 @@ +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 diff --git a/gnustep-make/Documentation/GNUmakefile b/gnustep-make/Documentation/GNUmakefile new file mode 100644 index 00000000..23856818 --- /dev/null +++ b/gnustep-make/Documentation/GNUmakefile @@ -0,0 +1,191 @@ +# +# 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. :-) + +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, execute GNUstep.sh in that +# directory, then run make again. + +# To execute all, or clean, or install, 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. Please note that +# "make install" will install into our temporary gnustep-make +# directory, which is usually not particularly useful, but anyway. +all clean install: ./tmp-installation/System/Library/Makefiles/GNUstep.sh + @echo "** Running 'make $@' using the local/temporary gnustep-make installation **" + (. ./tmp-installation/System/Library/Makefiles/GNUstep.sh; \ + $(MAKE) $@) + +CURRENT_DIR = $(shell pwd) + +# This creates a local temporary installation of GNUstep-make +./tmp-installation/System/Library/Makefiles/GNUstep.sh: + @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"; \ + make; \ + make install) + +distclean: + -(if [ -f ./tmp-installation/System/Library/Makefiles/GNUstep.sh ]; then \ + . ./tmp-installation/System/Library/Makefiles/GNUstep.sh; \ + $(MAKE) $@; \ + 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_DIR = $(GNUSTEP_SYSTEM_ROOT) + +include $(GNUSTEP_MAKEFILES)/common.make + +# The documents to be generated +DOCUMENT_NAME = gnustep-howto faq filesystem internals machines make userfaq + +# The text documents to be generated +DOCUMENT_TEXT_NAME = FAQ INSTALL README NEWS GNUstep-HOWTO ANNOUNCE + +TOP_DOC_FILES = FAQ INSTALL README NEWS GNUstep-HOWTO ANNOUNCE + +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 = faq.texi +FAQ_DOC_INSTALL_DIR = User/GNUstep/ + +make_TEXI_FILES = \ +make.texi +make_DOC_INSTALL_DIR = Developer/Make/Manual/ + +faq_TEXI_FILES = \ +faq.texi \ +version.texi +faq_DOC_INSTALL_DIR = User/GNUstep/ + +userfaq_TEXI_FILES = \ +userfaq.texi \ +version.texi +userfaq_DOC_INSTALL_DIR = User/GNUstep/ + +filesystem_TEXI_FILES = \ +filesystem.texi +filesystem_DOC_INSTALL_DIR = User/GNUstep/ + +machines_TEXI_FILES = \ +machines.texi +machines_DOC_INSTALL_DIR = User/GNUstep/ + +gnustep-howto_TEXI_FILES = \ +gnustep-howto.texi \ +version.texi +gnustep-howto_DOC_INSTALL_DIR = User/GNUstep/ + +internals_LATEX_FILES = \ +internals.tex +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) + +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) + +# Manual pages to install +MAN1_PAGES = openapp.1 +MAN7_PAGES = GNUstep.7 + +include $(GNUSTEP_MAKEFILES)/documentation.make + +include ../Version + +GNUSTEP_TEXI2HTML_FLAGS += -init_file gnustep.init + +# 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 + +# Install manually man pages +after-install:: $(GNUSTEP_DOCUMENTATION)/Developer/Make/Manual + $(INSTALL_DATA) DESIGN $(GNUSTEP_DOCUMENTATION)/Developer/Make/Manual + if [ ! -f $(GNUSTEP_DOCUMENTATION_MAN) ]; then \ + $(MKDIRS) $(GNUSTEP_DOCUMENTATION_MAN); \ + fi; \ + if [ ! -f $(GNUSTEP_DOCUMENTATION_MAN)/man1 ]; then \ + $(MKDIRS) $(GNUSTEP_DOCUMENTATION_MAN)/man1; \ + fi; \ + for file in $(MAN1_PAGES) __done; do \ + if [ $$file != __done ]; then \ + $(INSTALL_DATA) $$file $(GNUSTEP_DOCUMENTATION_MAN)/man1/$$file; \ + which gzip && rm -f $(GNUSTEP_DOCUMENTATION_MAN)/man1/$$file.gz \ + && gzip -9 $(GNUSTEP_DOCUMENTATION_MAN)/man1/$$file; \ + fi; \ + done; + if [ ! -f $(GNUSTEP_DOCUMENTATION_MAN)/man7 ]; then \ + $(MKDIRS) $(GNUSTEP_DOCUMENTATION_MAN)/man7; \ + fi; \ + for file in $(MAN7_PAGES) __done; do \ + if [ $$file != __done ]; then \ + $(INSTALL_DATA) $$file $(GNUSTEP_DOCUMENTATION_MAN)/man7/$$file; \ + which gzip && rm -f $(GNUSTEP_DOCUMENTATION_MAN)/man7/$$file.gz \ + && gzip -9 $(GNUSTEP_DOCUMENTATION_MAN)/man7/$$file; \ + fi; \ + done; + +# Uninstall manually man pages +after-uninstall:: + rm -f $(GNUSTEP_DOCUMENTATION)/Developer/Make/Manual/DESIGN + for file in $(MAN1_PAGES) __done; do \ + if [ $$file != __done ]; then \ + rm -f $(GNUSTEP_DOCUMENTATION_MAN)/man1/$$file; \ + fi; \ + done; + for file in $(MAN7_PAGES) __done; do \ + if [ $$file != __done ]; then \ + rm -f $(GNUSTEP_DOCUMENTATION_MAN)/man7/$$file; \ + fi; \ + done; + +after-distclean:: + rm -f version.texi +endif diff --git a/gnustep-make/Documentation/GNUstep.7 b/gnustep-make/Documentation/GNUstep.7 new file mode 100644 index 00000000..027700d1 --- /dev/null +++ b/gnustep-make/Documentation/GNUstep.7 @@ -0,0 +1,147 @@ +.\"GNUstep(7) man page +.\"put together by Martin Brecher +.\" +.\"Process this file with +.\"groff -man -Tascii GNUstep.7 +.\" +.TH GNUSTEP 7 "August 2003" GNUstep "GNUstep System Manual" +.SH NAME +GNUstep \- A free implementation of the OpenStep standard + +.SH DESCRIPTION +GNUstep provides an Object-Oriented application development framework +and toolset for use on a wide variety of computer platforms. +GNUstep is based on the original OpenStep specification provided by +NeXT, Inc. (now Apple). +.P +GNUstep is written in Objective-C, an object-oriented superset of the C +programming language, similar to SmallTalk. However there exist a number +of brigdes and interfaces to develop GNUstep programs using other languages +like JAVA or Ruby. + +.P +.B The GNUstep Core System +.P +The GNUstep core system consists of the following parts: +.IP gnustep-make + A set of scripts and makefiles that heavily ease the + creation and maintenance of software projects. +.IP gnustep-base + The FoundationKit libraries for non-GUI tools providing + everything from string + and array classes, filemanager classes to distributed objects. +.IP gnustep-gui + The ApplicationKit containing widgets, workspace classes and + means for + applications to interact with the user. This is the frontend of + GNUstep's GUI part. +.IP gnustep-back + This is the backend of 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 libart, one using xlib drawing) and win32. + +Apart from the above, there exist a number of addon libraries, like Renaissance +which allows developers to specify an application's user interface in xml. +For database access, there is gdl2 - the GNUstep Database Library. +Please refer to the GNUstep website for more information. + + +GNUstep is self-containing. That means that all GNUstep applications, tools, +libraries and add-ons are installed into the GNUstep directory hierarchy. +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 ~/GNUstep). +See the filesystem.texi document for more information. + +.P +.B Some Basic Terms: + +.P +.B Tools and Applications +.P +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 openapp command or from the +Workspace. + + +.P +.B Services +.P +In GNUstep applications globally offer functionality to other applications +through +.I 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. + +.P +.B 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. + +.P +.P +.B Getting More Help +.P +Most discussion and support is taking place on the GNUstep mailinglists +. Additionally, most larger +projects have their own mailing lists. Consult the appropriate websites for +details. +.P +Alternatively you are invited to join the #GNUstep IRC channel on +FreeNode (irc.freenode.net). +.P +.SH SEE ALSO +gcc(1), gdnc(1), gdomap(8), gopen(1), gpbs(1), make(1), openapp(1) +.PP +.B GNUstep Websites: +.PP +Official GNUstep website - +GNUstep Wiki (lots of useful information) - +GNUstep Project Page - +GNUstep Community Page - +GNUstep Documentation Library - +GNUstep Build Guide +.PP +Collaboration World - +GNUstep.de - +GNUstep.it - +GNUstep.us - +GWorkspace Website +.PP +.B Mailinglists: +.PP + - +Archives can be found at +.P +.SH AUTHORS +GNUstep is developed and maintained by a large number of people. Please +see for a list. +.PP +GWorkspace is developed by Enrico Sersale. Please see the GWorkspace Website +for details. +.PP +This man page was written by Martin Brecher . diff --git a/gnustep-make/Documentation/README.Cygwin b/gnustep-make/Documentation/README.Cygwin new file mode 100644 index 00000000..de2726c8 --- /dev/null +++ b/gnustep-make/Documentation/README.Cygwin @@ -0,0 +1,233 @@ +Date: 17-Sep-2002 (tested under windows-xp) +Author: Ildar Mulyukov + +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. Yo 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. + +In fact Cygwin already contains every package needed for GNUstep. + +Building GCC and GDB +-------------------- + +Cygwin contains it's own GCC and GDB packages that work very good in Cygwin +environment. But they lack Objective-C language support so for us these are +completely unusable. See http://cygwin.com/faq/faq_4.html#SEC90 + +So you have to build these two from sources. + +Please note that generally GDB is optional! It's up to you whether to +use it or not. If you don't use it you don't need to build it. + +1. GCC. Get sources from http://gcc.gnu.org. +Get sources (including languages you need), +unpack, build. Before installing uninstall previous version of GCC via +setup.exe program. + +Note: GCC provided in Cygwin was patched to behave better in +Windows/Cygwin environment. Cygwin team has done some changes that +were not committed to GCC CVS tree and they lost Objective-C +support. That's why you can't use even Cygwin GCC source. But don't +worry: newly built GCC works fine and I believe can do all those +"-mno-cygwin" and "-shared" things by fixing specs file. + +Note2: You can make packages from programs you built with utility +provided in APPENDIX A. These packages can be installed with setup.exe + +2. GDB. Sources are here: http://www.gnu.org/software/gdb/ . See +http://mail.gnu.org/pipermail/discuss-gnustep/2002-August/017238.html +Adam Fedor has made wonderful patch for current CVS GDB. It's probable +that you may use Cygwin GDB sources but I don't know really. Unpack, +apply patch, make, install. This may be non-trivial. Good luck. + +Obtaining GNUstep +----------------- + +The main GNUstep project pages tell you how to get hold of this. You +can get the latest release of the following libraries. However, since +Cygwin support is currently evolving, I recommend that you get the +latest snapshot or code from CVS. + +You need things in the following order: + +GNUstep-make (release, snapshot, or cvs core module) +libffcall (http://ftp.gnustep.org/pub/gnustep/lib) +GNUstep-libobjc (release, snapshot, or cvs dev-apps module) +GNUstep-base (snapshot, or cvs core module) + +For gui ... GNUstep-gui and GNUstep-back (snapshot, or cvs core module) + + + + +Building and installing libraries +--------------------------------- + +FFCALL: Unpack, configure, make, make install. See GNUstep-HOWTO for details. +Note again: you can make package. See APPENDIX A + +libiconv, libtiff, libjpeg, zlib, libxml2 and openssl are all in +Cygwin distro. Don't forget to install respective *-devel packages. + + +Building and installing gnustep-make +------------------------------------ + +As ususal. E.g. I use ../clear.cvs/gnustep/core/make/configure +--prefix=/usr/GNUstep --with-thread-lib=-lkernel32 && make && make +install + +Building and installing libobjc +------------------------------- + +You need to install gnustep-objc as it properly exports symbols for +DLLs and it's DLL (I don't know whether it works OK in static form) + +Go to gnustep-objc (or from CVS, into dev-apps/libobjc), and type + + make install + +This should build and install the ObjectiveC runtime and headers for you. +Note: I strongly suggest removing gcc's own objc/*.h and libobjc.a files. + + +Building and installing GNUstep-base +------------------------------------ + +Go to gnustep-base (or from CVS into the core/base directory), and type + + make install + +This should automatically run the configure script for you, build the +base library and some tools, and install the whole lot (along with some +system resources). + + + +Building and installing GNUstep-gui +----------------------------------- + +To build the gui, you need to have libtiff installed ... + +Go to gnustep-gui (or from CVS into the core/gui directory), and type + + make install + + + + +Building and installing GNUstep-back +------------------------------------ + +This software is PRE-ALPHA ... it is present in CVS for people who which to +help porting the GNUstep backend to windows! + +In the back directory, type + + make install + + + + +Troubleshooting +--------------- + +Pre-Compiled Binaries +--------------------- + +I don't currently know about any resource. I have ones but don't have +a place to put them. + +ACKNOWLEDGMENTS +--------------- + +Thanks to all the GNUstep hackers for this wonderful project. Thanks +to Richard Frith-Macdonald for his README.MinGW as I +have copy-pasted structure of this document from his README.MinGW + + +APPENDIX A +---------- + +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 *** --- diff --git a/gnustep-make/Documentation/README.Darwin b/gnustep-make/Documentation/README.Darwin new file mode 100644 index 00000000..d4b62028 --- /dev/null +++ b/gnustep-make/Documentation/README.Darwin @@ -0,0 +1,465 @@ +Date : 15-Jan-2004 +Last update: 20040727 (tested under Mac OS X 10.3 / Darwin 7) + --> must be verified on x86-darwin-7, powerpc-apple-darwin-6 +Authors: Adam Fedor + Quentin Mathรฉ + Lars S.-Helldorf + +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. + +Note: GNUstep seems to install on Mac OS X 10.2 / Darwin 6, but the bundles +support seems to be broken, then applications based on GNUstep-gui will not +work. (Must be verified) + +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='/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 + +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 + + +PRELIMINAIRES +------------- + +For all targets, get the following software: + +libxml2 (Optional, highly recommended, already in Mac OS X 10.3 / Darwin 7) +libtiff (Required) +libjpeg (Optional, highly recommended) +libpng (Optional, highly recommended) + +libffi (Required, only contained in the gcc distributions and pyobjc) +ffcall (On Darwin x86 - use instead of libffi) + +Xfree86 (Required, already in Mac OS X 10.3/Darwin 7, to know more read below, +needed for 10.2 / Darwin 6 and earlier) + +libart2 (Optional, but required in the case you choose to use the art backend) +freetype2 (Optional, but required in the case you choose to use the art backend) + +dlcompat (Required, to be able to load bundles, included with Fink installation) + +Obtaining GNUstep +----------------- + +The main GNUstep project pages tell you how to get hold of this. You can get the +latest release of the following libraries. However, since Mac OS X support is +currently evolving, we recommend that you get the latest snapshot or code from +CVS. + +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 currently + # not work +apple-apple-gnu # Apple Foundation with gnustep-gui on the top. Only of + # academically interest. +apple-apple-apple # Cocoa with GNUstep additions. For porting GNUstep apps to + # Cocoa. + +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 + +Unfortunately, using Apple GCC with gnu-gnu-gnu doesn't appear to work currently +(see below for more info), so this option really isn't open now. + +In addition, if you are on Mac OS X, you can also use the Apple Foundation and +AppKit frameworks to do GNUstep development with Cocoa, but this only works with +the Apple compiler: + +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. + +ffcall (ftp://ftp.gnustep.org/pub/gnustep/libs or +ftp://ftp.santafe.edu/pub/gnu/ffcall-1.9.tar.gz) + +See instructions below for building ffcall. + +GNUstep on Darwin PowerPC +------------------------- + +Haven't been able to get Apple GCC on Mac OS X 10.2 / Darwin 6 to compile +GNUstep-base. The compiler crashes with various errors. You need the FSF GCC +compiler here. You need at least version 3.3.2. (While version 3.3.2 works, it +will not install libffi) + +Building FSF-GCC +---------------- + +Darwin x86: + +FSF GCC is difficult to compile here. The only way I could do it was like this: + +ln -s /usr/bin/c++filt /usr/bin/c++filt3 # missing on Darwin 7.0.1 x86 + # not necessary on OpenDarwin 7.2.1 + +and then configure gcc with: + +mkdir build # create a sibling to the + # toplevel source dir +cd build +/gcc-X.X.X/configure --enable-languages=c,objc # don't try to build c++ +make bootstrap +make install +cd /usr/local/lib +ln -s libobjc.a libobjc.dylib # So the linker sees us + +(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 +/gcc-x.x.x/configure [ --prefix=] # by default gcc + # installs in /usr/local +make bootstrap +make install +cd /lib +ln -s libobjc.a libobjc.dylib # So the linker sees us + +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=/bin/gcc' >> ~/.profile + +with c shell like tcsh (Mac OS X 10.2): + +echo 'setenv CC /bin/gcc' >> ~/.tcshrc + +else use [CC='/bin/gcc'] option when running configure. + +then: + +./configure --with-library-combo=gnu-gnu-gnu [--prefix=] \ +[CC='/bin/gcc'] + +(apple-apple-apple is the default if you don't specify gnu-gnu-gnu). If you want +to be able to compile for different targets/platforms together. Do this: + +./configure --with-library-combo=gnu-gnu-gnu --disable-flattened \ +--enable-multi-platform [--prefix=] \ +[CC='/bin/gcc'] + +Now: + +make +make install + +Building and installing libobjc (target Apple GCC, gnu-gnu-gnu only !!!) +------------------------------- + +Warning ! Don't compile libobjc if you are using FSF GCC. + +Go to gnustep-objc (or from CVS, into dev-libs/libobjc), and type: + + make install + +This should build and install the GNU Objective-C runtime and headers for you. + +Building and installing libffi (on Darwin PowerPC only !!!) +------------------------------ + +Untar the GNU gcc distribution, at least a version 3.4 series snapshot (even if +you are not compiling the compiler) and: + +mkdir libffi-build +cd libffi-build +/libffi/configure [CC='/bin/gcc'] +make +make install + +Note: the lastest 3.4 snapshot doesn't seem to have a working libffi on Mac OS X +/ Darwin. + +Use PyObjC libffi from http://pyobjc.sourceforge.net, in the case GNUstep-base +install doesn't work with the 3.4 snapshot. + +mkdir libffi-build +cd libffi-build +/libffi-src/configure [CC='/bin/gcc'] +make +make install + +Warning ! Don't install libffi in , let it just install in +/usr/local + +Building and installing ffcall (on Darwin x86 only !!!) +------------------------------ + +./configure --prefix=$GNUSTEP_SYSTEM_ROOT \ + --libdir=$GNUSTEP_SYSTEM_ROOT/Library/Libraries \ + --includedir=$GNUSTEP_SYSTEM_ROOT/Library/Headers + +Now you can now build and install it simply by typing: + + make + make install + +Additional libraries +-------------------- + +Build and install and additional libraries listed above. You can also get them +via Fink (http://fink.sourceforge.net) or DarwinPorts +(http://darwinports.opendarwin.org/) and sometimes they are already present on +Mac OS X. + +And to have the additional libraries taken in account by the Mac OS X / Darwin +linker with bourne shell like bash (Mac OS X 10.3), here is an example with Fink +obtained libraries: + +echo 'export DYLD_LIBRARY_PATH=/lib:/sw/lib:$DYLD_LIBRARY_PATH' +>> ~/.profile + +with c shell like tcsh (Mac OS X 10.2): + +echo 'setenv DYLD_LIBRARY_PATH /lib:/sw/lib:$DYLD_LIBRARY_PATH' +>> ~/.tcshrc + +Source GNUstep.sh +----------------- + +If you are using bourne shell like bash, type: + +. /System/Makefiles/GNUstep.sh + +If you are using c shell like tcsh, type: + +source /System/Makefiles/GNUstep.csh + +Building and installing GNUstep-base +------------------------------------ + +Go to GNUstep-base (or from CVS into the core/base directory) + +If you are using the default gcc (Apple GCC) type: + + make install + +This should automatically run the configure script for you, build the base +library and some tools, and install the whole lot (along with some system +resources). + +Otherwise (if you installed FSF GCC) type: + + ./configure [CC='/bin/gcc'] + +or if you decided not to build libffi or ffcall: + + ./configure --disable-do [CC='/bin/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), and type + +If you are using the Apple GCC or the FSF GCC type: + + ./configure --disable-gsnd [CC='/bin/gcc'] + +followed by + + make + make install + +Note: The gsnd server hasn't been ported to Mac OS X / Darwin yet. + +In the case configure didn't found libjpeg, use --with-jpeg-library= --with-jpeg-include= to have the libjpeg detected. + +Example with Fink: + +./configure --disable-gsnd --with-jpeg-library=/sw/lib +--with-jpeg-include=/sw/include + + +Building and installing GNUstep-back +------------------------------------ + +Warning ! You must have installed X11User.pkg from the Panther install disc and +also X11SDK.pkg from the xCode Tools install disc to be able to compile +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 [CC='/bin/gcc'] + make + make install + +In the case, you choose to use the art backend, you will need to have the +freetype2 and libart2 libraries installed, first be sure to have libart2 in your +path, for example, with Fink installation type: + + export DYLD_LIBRARY_PATH=/sw/lib:$DYLD_LIBRARY_PATH + +Then you should be able to configure back and install it. + + ./configure --enable-graphics=art [CC='/bin/gcc'] + make + make install + +You also need to have /sw/lib in your library path before running GNUstep apps +with the art backend, as it needs to find libart2, so put the above export +DYLD_LIBRARY_PATH somewhere in your .profile (or do the export before launching +an application) [see the above "Additional Libraries" section]. + +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 (wich libart2 +uses by default). + +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, DYLD_LIBRARY_PATH environment variable is erased, 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 + +--- + +That's all. diff --git a/gnustep-make/Documentation/README.MinGW b/gnustep-make/Documentation/README.MinGW new file mode 100644 index 00000000..81810ca3 --- /dev/null +++ b/gnustep-make/Documentation/README.MinGW @@ -0,0 +1,343 @@ +Date: 09-Jan-2003 (tested under Windows XP) +Update: 23-Feb-2003 (also tested under Windows 2000) +Author: Richard Frith-Macdonald + +PURPOSE +------- + +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). + +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. + +MSYS is a very much cut down version of the Cygwin environment ... +providing a minimal set of tools needed to build programs using MingGW. +If you wish to build for MinGW by cross-compiling from a Cygwin +environment, please read README.cygwin instead. + +The base library is only recently ported to run on MinGW. While most +stuff works, including networking/distributed objects, there are probably +bits that have been overlooked or are untested as yet. The only *known* +areas of code not yet ported are the zlib, SSL and XML extensions. + +The gui library is only partially ported to run under MinGW ... you can +play with it, but expect to have to work on porting the library rather +than developing user applications. + + +PRELIMINARIES +------------- + +Before we start, we need to get some preliminary Windows software - +a tool for fetching source code via CVS. + +If you don't want to use Windows tools for this, you can get the +latest cygwin distribution and use the cvs client in that. The following is +for people who don't want to download all that cygwin stuff. + +To get stuff from CVS you can download and install WinCVS ... which +you can find at http://sourceforge.net/projects/cvsgui You will need +to be a system administrator on your machine to install this software. +You should be able to use it without changing/setting any special +configuration options. The one thing to remember is that the checkbox +to select whether to use UNIX line terminators instead of Windows/DOS +line terminators should be set to the unix option. + + +Installing and setting up MINGW and MSYS +---------------------------------------- + +Next, download msys-1.08 or later from +http://sourceforge.net/projects/mingw +and install it. + +Next, download MinGW-2.0.0-3 or later from +http://sourceforge.net/projects/mingw +and install it inside the msys installation +(usually in c:/msys/1.0/mingw) + +If you didn't install mingw in the standard location within the msys +installation, then after installing mingw, create a file called fstab in +c:/msys//etc, or wherever you installed msys, and make +sure it contains the line +c:/mingw /mingw +which also should be changed accordingly if you installed MinGW +somewhere else. + +You may need to edit /mingw/include/winsock2.h to change the size of the +sa_data field in the sockaddr structure from 14 to 22 ... this is because +newer versions of Windows have changed the layout of this structure. +This modification is needed to be able to correctly determine the +network interface details for your machine. + +It's a good idea to remove the libobjc.a and include/objc header that come +with gcc (gcc -v for location) so that they are not accidentally found +instead of the libobjc DLL that you will compile below. + +Now you can open a window containg a shell by choosing MSYS from the +start menu. + +At this point you may want to set the HOMEDRIVE and HOMEPATH environment +variables to point to the home directory you wish to work from (though +the defaults may be ok for you). +NB. This home directory for building software must *not* contain spaces. +(aside - MSYS uses the UNIX-style HOME environment variable, but Windows +programs, including GNUstep programs under Windows, use the HOMEDRIVE and +HOMEPATH environment variables to build a windows-style path for the home +directory. eg. if HOMEDRIVE is C: and HOMEPATH is \MyHome then the path +to the home directory is C:\MyHome). + +From this window we can now start building things. + +IMPORTANT NOTE +The msys make program sometimes crashes and core-dumps (usually while +installing software). If this happens, repeat the make command a few +times until it works ... the crash in make is not reliably repeatable +(which is probably why it has not been tracked down and fixed yet), +which means that a retry will usually work. + + +Obtaining GNUstep +----------------- + +The main GNUstep project pages tell you how to get hold of this. You can get +the latest release of the following libraries. However, since MinGW support +is currently evolving, we recommend that you get the latest snapshot +or code from CVS. + +You need things in the following order: + +GNUstep-make (release, snapshot, or cvs core module) +libffcall (http://ftp.gnustep.org/pub/gnustep/lib) +GNUstep-objc (release, snapshot, or cvs dev-apps module) +GNUstep-base (snapshot, or cvs core module) + +For gui ... GNUstep-back (snapshot, or cvs core module) + +NB. Ensure that the GNUstep code you are attempting to use has a date +later than the date at the top of this document! The instructions do +not apply to earlier code. + + +Setting up the GNUstep make environment +--------------------------------------- + +In the GNUstep-make (core/make) package, do './configure +--prefix=/C/GNUstep' You can of course use a different prefix to +install the GNUstep system in an alternative location. +The leading '/C' is the MSYS way of specifying that the 'C' drive is +to be used. Older versions of the tools required a windows style +path (eg. C:/GNUstep), but using the MSYS style path is important as +it will avoid problems later! + +Note: There was a comment that '--prefix=/C/GNUstep' did not work +with a bash shell as it got converted to C:\GNUstep (which is bad because +the shell treats a \G as something entirely different. If you have this +problem, try '--prefix=C:/GNUstep' (It's probably better to use the +native Msys shell though). + +Now you can type 'make install' to build and install the make package. + +Once this is done, type '. GNUstep.sh' to set up your GNUstep +environment. The environment for building software is now completely +set up, but for ease of use later, you might set up a script to be +used to set up any new shell windows you create. Something like this +in your ~/.profile would do nicely: + +export HOMEDRIVE=C: +export HOMEPATH=/home/myname +export HOME=/C/home/myname +export GNUSTEP_SYSTEM_ROOT=/C/GNUstep/System +. $GNUSTEP_SYSTEM_ROOT/Library/Makefiles/GNUstep.sh + +NOTE: Sometimes the HOME variable may already be set by Windows to be +%USERPROFILE% (which is the Windows variable that contains the path of +your home folder). MSYS has problems with that as it doesn't recognise +that %USERPROFILE% is a variable name. Be sure to check that if you run +into errors. + + MinGW comes with a buggy 'ln -s' and Makefiles are no longer + installed into $GNUSTEP_SYSTEM_ROOT/Makefiles so there is + no compatibility symlink to $GNUSTEP_SYSTEM_ROOT/Library/Makefiles + + + +Building and installing libobjc +------------------------------- + +Despite the statement in the GNUstep-HOWTO, even if you have a 3.x +compiler, you still need to install gnustep-objc as it properly +exports symbols for DLLs. + +Go to gnustep-objc (or from CVS, into dev-libs/libobjc), and type + + make install + +This should build and install the ObjectiveC runtime and headers for you. + + + +Building and installing FFCALL +------------------------------ + +The next priority is to get the ffcall library built and installed. +You should get the latest ffcall archive from +http://ftp.gnustep.org/pub/gnustep/libs. Currently this is +ffcall-1.8d.tar.gz + +Ignore any other instructions for building this ... + +First, in the shell window in which you have set up your GNUstep +environment, type + +./configure --prefix=$GNUSTEP_SYSTEM_ROOT \ + --libdir=$GNUSTEP_SYSTEM_ROOT/Library/Libraries \ + --includedir=$GNUSTEP_SYSTEM_ROOT/Library/Headers + +Now you can now build and install it simply by typing: + + make + make install + + + +Additional libraries +-------------------- + +There are some optional (but very strongly recommended) libraries you +can install to make GNUstep work better. For full multilingual support +you need libiconv, and for gui applications you need libtiff, libjpeg, +and zlib. + +libiconv + Needed for multilingual character support (unicode etc) + + Get the binary package from + http://www.zlatkovic.com/projects/libxml/index.html + Unpack this and + cp include/iconv.h $GNUSTEP_SYSTEM_ROOT/Library/Headers + cp lib/iconv.lib $GNUSTEP_SYSTEM_ROOT/Library/Libraries/libiconv.a + cp lib/iconv.dll $GNUSTEP_SYSTEM_ROOT/Tools/iconv.dll + +libtiff, libjpeg, and zlib + Needed for image handling support in the GNUstep gui libary + (not required for GNUstep-base, though zlib can be used by the base library). + + Get the binary packages from - + http://prdownloads.sourceforge.net/gnuwin32/tiff-3.5.7-lib.zip + http://prdownloads.sourceforge.net/gnuwin32/tiff-3.5.7-bin.zip + http://prdownloads.sourceforge.net/gnuwin32/libjpeg-6b-lib.zip + http://prdownloads.sourceforge.net/gnuwin32/libjpeg-6b-bin.zip + http://prdownloads.sourceforge.net/gnuwin32/zlib-1.1.4-lib.zip + http://prdownloads.sourceforge.net/gnuwin32/zlib-1.1.4-bin.zip + + Unpack and install + the header (.h) files in $GNUSTEP_SYSTEM_ROOT/Library/Headers + the library (.lib) files in $GNUSTEP_SYSTEM_ROOT/Library/Libraries + the dll files in $GNUSTEP_SYSTEM_ROOT/Tools + + Be sure to rename the .lib files to .a! + +libxml2 + Needed for XML parsing support, for MacOS-X compatible + property lists, and for documentation processing. + NB. at the time of writing, XML support in GNUstep base has *not* + been ported to Windows - but when it is, you will need this package. + + Get the binary package from + http://www.zlatkovic.com/projects/libxml/binaries.html + Unpack this and + cd include + tar -cf - libxml | (cd $GNUSTEP_SYSTEM_ROOT/Library/Headers; tar -xvf -) + cd ../lib + cp libxml2.lib $GNUSTEP_SYSTEM_ROOT/Library/Libraries/libxml2.a + cp libxml2.dll $GNUSTEP_SYSTEM_ROOT/Tools + +The following are libraries which are not currently used, but which will +be required at some point in the future - + +openssl + Needed for the SSL bundle, providing HTTPS support for NSURL. + NB. at the time of writing, SSL support in GNUstep base has *not* + been ported to Windows - but when it is, you will need this package. + Get the binary package from + http://www.kix.or.jp/~fujino/openssl + Unpack this and + tar -cf - openssl | (cd $GNUSTEP_SYSTEM_ROOT/Library/Headers; tar -xvf -) + cp *.lib $GNUSTEP_SYSTEM_ROOT/Library/Libraries + cp *.dll *.exe $GNUSTEP_SYSTEM_ROOT/Tools + + + +Building and installing GNUstep-base +------------------------------------ + +Go to gnustep-base (or from CVS into the core/base directory), and type + + make install + +This should automatically run the configure script for you, build the +base library and some tools, and install the whole lot (along with some +system resources). + + + +Building and installing GNUstep-gui +----------------------------------- + +To build the gui, you need to have libtiff installed ... + +Go to gnustep-gui (or from CVS into the core/gui directory), and type + + make install + + + + +Building and installing GNUstep-back +------------------------------------ + +This software is PRE-ALPHA ... it is present in CVS for people who wish to +help porting the GNUstep backend to Windows! + +In the back directory, type + + make install + + + + + +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. + + + +Good Sites for Pre-Compiled Binaries +------------------------------------ + +Many libraries, etc from: + + (libtiff, libxml2) + +MingW guile from + +. + +also need guile from + + + +for guile-config file. diff --git a/gnustep-make/Documentation/README.MinGWOnCygwin b/gnustep-make/Documentation/README.MinGWOnCygwin new file mode 100644 index 00000000..e8dda118 --- /dev/null +++ b/gnustep-make/Documentation/README.MinGWOnCygwin @@ -0,0 +1,205 @@ + + +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: + + + (for libxml2, more?) + (libtiff) + +MingW guile from + +. + +also need guile from + + + +for guile-config file. + +Author +------ + +Adam Fedor diff --git a/gnustep-make/Documentation/README.NetBSD b/gnustep-make/Documentation/README.NetBSD new file mode 100644 index 00000000..e2628b5e --- /dev/null +++ b/gnustep-make/Documentation/README.NetBSD @@ -0,0 +1,311 @@ +Installing GNUstep on NetBSD + +(C) 2001 JNQT + +Last update: 24 November 2001 + +I have installed GNUstep on NetBSD/i386 1.5.2. +I will not be responsible for any damage implicitly or explicitly +caused by this information. Use at your own risk. +Please submit any comments or suggestions to jnqt@fbe.freeserve.ne.jp. +For more information about installation, see the `GNUstep-HOWTO' file +located in the gnustep-make package. + +Good Luck! :-) + + +// +// Install GNUstep +// + + +su root + + +[Add `/etc/ld.so.conf'] +/usr/local/lib +/usr/X11R6/lib + + +ldconfig + + +[Use the NetBSD packages collection...Install `/usr/local'] +gcc-2.95.2 +gmake-3.79.1 +libiconv-1.6.1 +libxml2-2.4.6 +tiff-3.5.5 + + +rehash + + +alias gmake gmake CC=/usr/local/gcc-2.95.2/bin/cc CPP=/usr/local/gcc-2.95.2/bin/cpp + + +tar zxvf ffcall-1.8b.tar.gz +cd ffcall-1.8b +./configure --prefix=/usr +gmake +gmake check +gmake install + + +tar zxvf gnustep-make-1.0.0.tar.gz +cd gnustep-make-1.0.0 +./configure --prefix=/usr/local/GNUstep +gmake +gmake install +gmake distclean + + +source /usr/local/GNUstep/System/Library/Makefiles/GNUstep.csh + + +tar zxvf gnustep-objc-1.0.1.tar.gz +cd gnustep-objc-1.0.1 + +[Edit `./GNUmakefile' Line:39] + THREADING = posix -> THREADING = single + +gmake +gmake install + + +cd gnustep-make-1.0.0 +./configure +gmake +gmake install + + +tar zxvf gnustep-base-1.0.0.tar.gz +cd gnustep-base-1.0.0 + +ln -s /usr/local/bin/xml2-config /usr/local/bin/xml-config +./configure --with-xml-prefix=/usr/local --with-libiconv-library=/usr/local/lib + +gmake + +[Ahhh...Error...and Edit `./Source/dynamic-load.h' Line:94] + sym = dlsym(RTLD_NEXT, symbol); -> sym = dlsym(handle, symbol); + +gmake +gmake install + + +tar zxvf gnustep-gui-0.6.8.tar.gz +cd gnustep-gui-0.6.8 +./configure +gmake +gmake install + + +tar zxvf gnustep-xgps-0.6.8.tar.gz +cd gnustep-xgps-0.6.8 +./configure +gmake +gmake install + + +mkdir ~/GNUstep + + +[Add `/etc/rc.local'] +if [ -f /usr/local/GNUstep/System/Tools/ix86/netbsdelf1.5.2/gdomap ]; then + /usr/local/GNUstep/System/Tools/ix86/netbsdelf1.5.2/gdomap +fi + + +[Add `~/.cshrc'] +setenv GNUSTEP_TZ Japan +source /usr/local/GNUstep/System/Library/Makefiles/GNUstep.csh +if (`gdomap -L GDNCServer | grep -c Found` == '0') then + echo 'Starting GNUstep services.' + gdnc + gpbs +endif +alias gmake gmake CC=/usr/local/gcc-2.95.2/bin/cc CPP=/usr/local/gcc-2.95.2/bin/cpp + + +reboot + + +// +// e.g. Install CurrencyConverter(in the GNUstep examples) +// + + +su root + + +tar zxvf gustep-examples-0.9.2.tar.gz +cd gustep-examples-0.9.2/gui/CurrencyConverter +gmake +gmake install + + +startx + + +openapp CurrencyConverter.app + + +(http://hp.vector.co.jp/authors/VA019253/step/inst.html) + + +========================================================================= +Older, partially obsolete information Below: +========================================================================= + + +This information is provided by Turbocat's Development. +We do not make any guarantees as to the currency, accuracy, +or quality of information stored here. Use at your own risk. +Please submit any comments to info@turbocat.de or the GNUstep maintainers. + +--- + +Hi folks, + +we have installed GS on NetBSD 1.5 (intel) and this is what we did: + +pkg_add means, we have the pkg from the NetBSD package collection. + +1.) gnumake: pkg_add gmake-3.79.1.tgz +2.) libiconv: pkg_add libiconv-1.5.tgz +3.) libxml: + ./configure + +in Makefile: Add the following lines: + +INLCUDES = -I. -I/usr/local/include -I/usr/pkg/include +LDFLAGS = -L/usr/pkg/lib -liconv + + + make + su + make install + +4.) ffcall-1.6b: ./configure + make + make check + su + make install + +5.) pth-1.3.7: ./configure --enable-pthread --enable-syscall-soft + make + make test + su + make install + [for removing 'make uninstall'] + +5.1) cd /usr/lib + ar -dv libobjc_p.a NXConstStr.po + ar -dv libobjc_pic.a NXConstStr.so + ar -dv libobjc.a NXConstStr.o + rm libobjc.so.0.0 + +6.) core/make: #. Version <-- disable Version + ./configure --prefix=/usr/GNUstep + gmake + su + gmake install + + File : /usr/GNUstep/System/Library/Makefiles/framework.make + change ine: with ... {if($$2 == "R") ... + in ... {if($$2 == "D") ... + + +7.) core/base: source /usr/GNUstep/System/Library/Makefiles/GNustep.csh + + ./configure --prefix=/usr/GNUstep + + File: GSFormat.m include <-- ADD + (unichar *)strerror(save_errno); <- REPLACED +__strerror_r + File: NSCoder.m LINE 372: remove ";" + LINE 373, 374 : + return ((((GNU... + 0) * 100 + + GNU.. + 0) * 100) + GNU... + 0; + + File:dynamic-load.h Zeile 93: // sym = dlsym(RTLD_NEXT, symbol); + sym = dlsym(handle, symbol); + + gmake + su + gmake install + +8.) core/gui: ./configure --prefix=/usr/GNUstep + --with-tiff-library=/usr/pkg/lib + --with-jpeg-library=/usr/pkg/lib + +File: Source/SharedX/XGBitmapImageRep.m // include <-- uncomment + File: Source/XGBitmap.m // include <-- uncomment + +touch Sources/config.h + +setenv LD_LIBRARY_PATH "${LD_LIBRARY_PATH}:/usr/pkg/lib" + + gmake ADDITIONAL_INCLUDE_DIRS ="-I/usr/pkg/include + -I../Headers" + LDFLAGS="-L/usr/pkg/lib -ltiff -ljpeg" + + su + gmake install + +9.) core/xgps: ./configure --prefix=/usr/GNUstep + --with-tiff-library=/usr/pkg/lib + --with-jpeg-library=/usr/pkg/lib + + setenv LD_LIBRARY_PATH "${LD_LIBRARY_PATH}:/usr/X11R6/lib" + + gmake ADDITIONAL_INCLUDE_DIRS="-I/usr/pkg/include -I../Headers" + LDFLAGS="-L/usr/pkg/lib -L/usr/X11R6/lib + -ltiff -lXmu -lXt" + + su + gmake install + +9.1) extensions: ./configure --prefix=/usr/GNUstep + gmake + su + gmake install + +10.) Prefs: +/usr/GNUstep/System/Tools/defaults write NSGlobalDomain "Local +Time Zone" "Europe/Berlin" + + +10.1) /etc/rc.local: + + GNUSTEP_SYSTEM_ROOT=/usr/GNUstep + if [ -f /usr/GNUstep/System/Tools/ix86/netbsdelf1.5/gdomap ]; then + /usr/GNUstep/System/Tools/ix86/netbsdelf1.5/gdomap + fi + +10.2) .cshrc: + + Add this at the end of .cshrc: + + setenv LD_LIBRARY_PATH /usr/X11R6/lib:/usr/local/lib/usr/pkg/lib + source /usr/GNUstep/System/Library/Makefiles/GNUstep.csh + if ( `gdomap -L GDNCServer | grep -c Found` == '0' ) then + echo "Starting GNUstep services..." + gdnc + gpbs + endif + + +11.) GWorkspace: gmake LDFLAGS="-L/usr/pkg/lib -ltiff -lXmu -lXt" + + start: openapp GWorkspace.app + + +12.) ProjectCenter: su + gmake install LDFLAGS="-L/usr/pkg/lib -ltiff -lXmu -lXt" + + start: openapp ProjectCenter.app + + + diff --git a/gnustep-make/Documentation/announce.texi b/gnustep-make/Documentation/announce.texi new file mode 100644 index 00000000..cade3b8a --- /dev/null +++ b/gnustep-make/Documentation/announce.texi @@ -0,0 +1,26 @@ +@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}. diff --git a/gnustep-make/Documentation/end.texi b/gnustep-make/Documentation/end.texi new file mode 100644 index 00000000..9ad8eb1d --- /dev/null +++ b/gnustep-make/Documentation/end.texi @@ -0,0 +1,2 @@ +@bye +\bye diff --git a/gnustep-make/Documentation/faq.texi b/gnustep-make/Documentation/faq.texi new file mode 100644 index 00000000..54ae2792 --- /dev/null +++ b/gnustep-make/Documentation/faq.texi @@ -0,0 +1,611 @@ +\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 Be careful with Cocoa.h includes (Use #ifndef GNUSTEP, for instance) +@item Do not use CoreFoundation +@item Do not use Objective-C++ +@item Do not use Quicktime or other proprietary extension +@item You need to convert .nib files (see next question @pxref{Tools for porting}) +@item Some unfinished classes include Drawers. +@end itemize + +@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 ni2gmodel +This program coverts nib files from any system, such as Cocoa or 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). + +@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 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. Also Apple's +archiving format, as far as we know, would not be compatible between +different machines because of endiness issues, although GNUstep doesn't +have this problem. + +Your best bet is to implement your own archiving format that would work +both with GNUstep and Cocoa. Fortunately, you don't have to start from +scratch, since this has been essentially done for you in the nib2gmodel +tool, which has an archiver that works both on GNUstep and Cocoa. It +might be nice to split this off into a separate project to make it +easier for other people to do the same thing. + +@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. + +@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++" + +No. at present the GNU compiler (gcc) does not support +"Objective-C++". Apple is interested in adding back their implementation +to gcc and is slowly adding parts of it to the mainline gcc implementation. + +@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 the X-windows display postscript extension. +The interface to that is not the same as the interface to the +OPENSTEP/MacOS-X windows server. While someone could write a +backend library to provide the interface, nobody has bothered to +date. + +You should, however, be able to 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 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 maintainer of the library you are +working on 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 update the task list?, 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 update the task list?, How do I start writing tests?, Helping document GNUstep, 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 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 anonymous CVS to install the +latest GNUstep snapshots you can find. Then checkout the 'tests' +module from CVS. In the 'tests' directory, you will find a +regression testing framework. +In order to use this you will also need a recent (v 1.3.2 or later) copy of +Guile (you can get this from a GNU ftp site) and will need to check-out, +built, and installed the 'guile' package from the GNUstep CVS repository. + +@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. + +If you want to update the FAQ or documentation - grab +the latest snapshot of the GNUstep core you can find, update it +from the CVS 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? + +Um, it does. 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?:: +* Does it allow a mixture of Objective C and C++:: +* Where can I find more information?:: +@end menu + +@node What is the Objective C Runtime?, Does it allow a mixture of Objective C and C++, 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. + +@end itemize + +@node Does it allow a mixture of Objective C and C++, Where can I find more information?, What is the Objective C Runtime?, GNU Objective C Compiler and Runtime +@subsection Does it allow a mixture of Objective C and C++? + +No. +See @pxref{Can one use the hybrid "Objective-C++"} + +@node Where can I find more information?, , Does it allow a mixture of Objective C and C++, GNU Objective C Compiler and Runtime +@subsection Where can I find more information? + +The FAQ associated with the newsgroup @samp{comp.lang.objective-c} +contains more information about GNU Objective C. + +@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), event loops, and +random number generators. + +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 NeXT'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 +NeXT NSConnection using a GNU NSConnection. + +Here are some differences between GNU distributed objects and NeXT's +distributed objects: NeXT 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 is the standard backend that 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. At some point +it will become the standard. +@item w32 +This backend works on Windows and is currently beta quality. +@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 +currently doesn't work. + +@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 diff --git a/gnustep-make/Documentation/filesystem.texi b/gnustep-make/Documentation/filesystem.texi new file mode 100644 index 00000000..30a76367 --- /dev/null +++ b/gnustep-make/Documentation/filesystem.texi @@ -0,0 +1,480 @@ +\input texinfo @c -*-texinfo-*- +@c GNUstep filesystem hierarchy +@c %**start of header +@setfilename filesystem.info +@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: Tim Harrison, Martin Brecher, Adam Fedor, Nicola Pero + +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) +@top GNUstep Filesystem Hierarchy + +@menu +* The System Domain:: +* The Local Domain:: +* The Network Domain:: +* The Users Domain:: +* Hierarchy:: +* Description:: +@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 Local domain, the Network domain, +and the User domain. Each of these domains serve a special purpose. + +The following is a general overview of the GNUstep domains. A detailed +explanation of the directory structure contained within each domain is +found later in this document. + + +@node The System Domain, The Local Domain, Top, Top +@section The System Domain + +The System domain is found in the @file{System} folder of the GNUstep +installation. This directory contains all files which were included +in the default GNUstep installation or distribution. Normally these +include the basic GNUstep libraries (Foundation and AppKit), and might +include essential system applications (the Workspace Manager, the +Editor, applications related to system administrative tasks), the +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. +These files are usually essential for having a fully functional +system. 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. + + + +@node The Local Domain, The Network Domain, The System Domain, Top +@section The Local Domain + +While at first glance, the Local domain seems very similar to the +System domain, there are several differences between them. The most +important thing is the differing purpose of the Local domain, as it 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. The Local domain is - as the name suggests - usually +installed as @file{Local} on your GNUstep system. Every software +(except for gnustep-make, gnustep-base, gnustep-gui and gnustep-back +which 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. + + +@node The Network Domain, The Users Domain, The Local Domain, Top +@section The Network Domain + +The @file{Network} domain is optional and is currently 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 @file{Network} domain, you need to enable it when you configure +gnustep-make. + + + +@node The Users Domain, Hierarchy, The Network Domain, Top +@section The Users Domain + +On systems where GNUstep is installed optionally, the Users domain can +usually be found in a subdirectory of the user's home directory called +'GNUstep'. This location is configurable, and some installations may +put this directly in the user's directory (and typical user's home +directories would be located in a @file{Users} folder). As the name +suggests, 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 +addition to these special files, the User domain features the same +structure as the other domains. + + + + +@node Hierarchy, Description, The Users Domain, Top +@section Hierarchy + +@menu +* System Hierarchy:: +* Local Hierarchy:: +* Network Hierarchy:: +* User Hierarchy:: +* Library Folder:: +@end menu + +@node System Hierarchy, Local Hierarchy, Hierarchy, Hierarchy +@subsection System + +@example +System/ + Applications/ + Library/ + Tools/ + share/ +@end example + +@node Local Hierarchy, Network Hierarchy, System Hierarchy, Hierarchy +@subsection Local + +@example +Local/ + Applications/ + Library/ + Tools/ +@end example + +@node Network Hierarchy, User Hierarchy, Local Hierarchy, Hierarchy +@subsection Network + +@example +Network/ + Applications/ + Library/ + Tools/ +@end example + +@node User Hierarchy, Library Folder, Network Hierarchy, Hierarchy +@subsection User + +@example +@emph{User's GNUstep root dir}/ + Applications/ + Library/ + Tools/ +@end example + +@node Library Folder, , User Hierarchy, Hierarchy +@subsection Library Folder + +@multitable @columnfractions 0.2 0.2 0.2 0.2 0.2 +@item ApplicationSupport +@item Bundles +@item ColorPickers +@item Colors +@item Defaults @tab @tab @tab @tab @emph{user only} +@item DTDs +@item DocTemplates +@item Documentation +@item Fonts +@item Frameworks +@item Headers +@item Images +@item KeyBindings +@item Libraries +@item @tab Resources +@item @tab @tab gnustep-base @tab @tab @emph{system only} +@item @tab @tab @tab .lproj folders +@item @tab @tab @tab CharacterSets +@item @tab @tab @tab TimeZones +@item @tab @tab @tab Languages +@item @tab @tab gnustep-gui @tab @tab @emph{system only} +@item @tab @tab @tab .lproj folders +@item @tab @tab @tab TextConverters +@item Makefiles @tab @tab @tab @tab @emph{system only} +@item @tab Additional +@item PostScript +@item @tab PPD +@item Services +@item Sounds + +@end multitable + +@node Description, , Hierarchy, Top +@section Description + +@menu +* System Description:: +* Local Description:: +* Network Description:: +* Applications:: +* Tools:: +* share:: +* Library:: +@end menu + +@node System Description, Local Description, Description, Description +@subsection System + +The System directory is the location of the GNUstep makefile package, +base, gui and backend libraries, and any accompanying software that is +distributed as part of whatever distribution of GNUstep you are using. +This directory MUST exist for a proper installation of GNUstep. + +Using the --prefix option to the configure script in gnustep-make, an +installation of GNUstep may be placed wherever the installer wishes; +the System, Local (and optionally Network) domain by default will be +subdirectory of this root location. + +Common options are: + +@example +/usr/GNUstep +/usr/local/GNUstep +/opt/GNUstep +/ +@end example + +All directories referenced in this document are relative to this root location. + +@node Local Description, Network Description, System Description, Description +@subsection Local + +The Local domain is the location of libraries, frameworks, bundles, +and supporting files for locally installed applications or tools that +are not distributed as part of the distribution that you are using, +but that are compiled and/or installed manually by you or your +sysadmin. This directory MUST exist for a proper installation of +GNUstep. + +@node Network Description, Applications, Local Description, Description +@subsection Network + +The Network Domain is the location for all exported applications, remotely +mounted filesystems, and remote home directories for users made available via +directory services. It is optional, and disabled by default. + +@node Applications, Tools, Network Description, Description +@subsection Applications + +The @file{Applications} directory 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 (and so installed +in the @file{System/Applications} folder) include: +@example +Gorm.app +ProjectCenter.app +GSDefaults.app +GWorkspace.app +Preferences.app +@end example + +@node Tools, share, Applications, Description +@subsection Tools + +The @file{Tools} directory 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. + +Tools that are written in languages other than Objective-C, or are developed +to work with other runtime environments may have their own directory within +the Tools directory (for example: @file{Tools/Java}). + +@node share, Library, Tools, Description +@subsection share + +The share directory is used for configuration and installation +of the core GNUstep libraries and any additional libraries that +need configuration information. It is used by the configure (autoconf) +program. + + +@node Library, , share, Description +@subsection Library + +The @file{Library} directory contains most of the functional +code of the GNUstep Development Environment. + +The primary reason for the structure of folders within Library is to +keep a complimentary structure throughout all domains. This allows +easier development, by keeping a standard directory layout, providing +developers with a relatively common hierarchy to work within. + +@menu +* ApplicationSupport:: +* Bundles:: +* ColorPickers:: +* Colors:: +* Defaults:: +* DTDs:: +* DocTemplates:: +* Documenation:: +* Fonts:: +* Frameworks:: +* Headers:: +* Images:: +* KeyBindings:: +* Libraries:: +* Makefiles:: +* PostScript:: +* Services:: +* Sounds:: +@end menu + +@node ApplicationSupport, Bundles, Library, 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. + +@node Bundles, ColorPickers, ApplicationSupport, 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. + +@node ColorPickers, Colors, Bundles, 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. + +@node Colors, Defaults, ColorPickers, Library +@subsubsection Colors + +This directory contains files that define +specific color mappings for use within libraries or applications +that require color definitions. + +@node Defaults, DTDs, Colors, Library +@subsubsection Defaults + +This directory contains files that store defaults for applications, e.g. +user preferences. This directory only exists in the User domain. + +@node DTDs, DocTemplates, Defaults, Library +@subsubsection DTDs + +This directory contains any Document Type Definitions +required for document parsing. + +@node DocTemplates, Documenation, DTDs, 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). + +@node Documenation, Fonts, DocTemplates, Library +@subsubsection Documentation + +This directory contains documentation for libraries, applications, etc. + +@node Fonts, Frameworks, Documenation, Library +@subsubsection Fonts + +This directory contains fonts and files for organizing font information. + +@node Frameworks, Headers, Fonts, 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. + +@node Headers, Images, Frameworks, Library +@subsubsection Headers + +This directory contains header files associated with a library located +in the Libraries directory. + +@node Images, KeyBindings, Headers, Library +@subsubsection Images + +@node KeyBindings, Libraries, Images, Library +@subsubsection KeyBindings + +@node Libraries, Makefiles, KeyBindings, Library +@subsubsection Libraries + +This directory contains libraries. (NOTE: The Libraries directory +being in Library may sound somewhat redundant, however, it could be +read as "a Library of shared libraries".) + +@node Makefiles, PostScript, Libraries, Library +@subsubsection Makefiles + +This directory contains the different types of makefiles used by the +GNUstep development environment to build applications, libraries, +bundles, etc. These makefiles are usually included in a project +specific GNUmakefile, which is used to build a project under the +GNUstep development environment. + +This directory only exists in the System domain. + +@node PostScript, Services, Makefiles, 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. + +@node Services, Sounds, PostScript, 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". + +@node Sounds, , Services, Library +@subsubsection Sounds + +This directory contains sound files. + +@bye +\bye diff --git a/gnustep-make/Documentation/gnustep-howto.texi b/gnustep-make/Documentation/gnustep-howto.texi new file mode 100644 index 00000000..f4b091f0 --- /dev/null +++ b/gnustep-make/Documentation/gnustep-howto.texi @@ -0,0 +1,441 @@ +\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 - 2002 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 - 2002 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 format + +@end ifinfo + +@include version.texi + +@node Top, Introduction, (dir), (dir) + +@menu +* Introduction:: +* Preliminaries:: +* Compiling and Installing:: +* Additional Installation:: +* Tools and Applications:: +* Machine Specific:: +* Anonymous CVS:: +@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 recommended but not currently required. + +@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 libaudiofile (RECOMMENDED) +The GUI library uses this for the sound server + +@item freetype2 (RECOMMENDED, REQUIRED for art backend) +This is used for font information + +@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.org}. + +@item gnustep-objc package (for gcc version < 3.0 ONLY) (RECOMMENDED) +Note: Do not install this library unless you are sure you need it. +You probably don't need it except on MinGW. +This is a special version of the Objective-C runtime that include several +bug fixes and features that were not in gcc versions previous to 3.0. +It is available at @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 capabilties which are used by +all GNUstep software. To configure just type: + +@example +./configure +@end example + +The GNUstep makefile package needs a root directory. If the +GNUSTEP_SYSTEM_ROOT environment variable is set then configure will +determine the root directory from its value (by removing the final +/System path component from it). You can also specify the root +directory when you run configure with the prefix paramater; the +following command makes /usr/local/GNUstep the root directory: + +@example +./configure --prefix=/usr/local/GNUstep +@end example + +If you do not have the GNUSTEP_SYSTEM_ROOT environment variable set +and you do not specify a root directory when running configure, then +configure will use /usr/GNUstep as the default root directory. + +@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 Pacakge (gnustep-make). After installing +gnustep-make you need to execute GNUstep's shell configuration +script, as follows: + +@example + . /usr/GNUstep/System/Library/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 +Add the shell script @file{GNUstep.sh} located in the Makefile +package to your shell startup file (such as @file{.profile}). For instance, +if your GNUSTEP_SYSTEM_ROOT is @file{/usr/GNUstep/System}, + +@example +. /usr/GNUstep/System/Library/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 your GNUSTEP_SYSTEM_ROOT is different, you need to replace +@file{/usr/GNUstep/System} with your GNUSTEP_SYSTEM_ROOT). +It 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/GNUstep/System/Library/Makefiles/GNUstep.csh +@end example + +@node GNUstep Home, Time Zone, Environment Setup, Additional Installation +@section GNUstep Home + +Set up your home GNUstep directory. This should be done automatically +if you don't do it. This is where user defaults are kept as well as +other user configuration files. User installed apps, libraries, etc +are also here (if the default user directory is used). + +@example +cd +mkdir GNUstep +@end example + +@node Time Zone, GNUstep deamons, GNUstep Home, Additional Installation +@section Time Zone + +Next, set your local time zone. There are four ways to do this, pick +one (see +@file{$GNUSTEP_SYSTEM_ROOT/Library/Libraries/Resources/gnustep-bsae/NSTimeZones/zones} for +typical time zones): + +@enumerate +@item Use the defaults utility to set ``Local Time Zone'' to your local +time zone (defaults is installed with GNUstep in the Tools directory). Type +something like ``defaults write NSGlobalDomain "Local Time Zone" GB''. + +@item Set the @var{GNUSTEP_TZ} environment variable. + +@item Create the file @file{$GNUSTEP_SYSTEM_ROOT/Library/Libraries/Resources/gnustep-base/NSTimeZones/localtime} with the name of the local time zone in it. + +@item Set the @var{TZ} environment variable (this may conflict with other +software on your system though). +@end enumerate + +@node GNUstep deamons, , Time Zone, Additional Installation +@section GNUstep deamons + +Set up your system to execute some GNUstep deamons. 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 +GNUSTEP_SYSTEM_ROOT=/usr/GNUstep/System +if [ -f $GNUSTEP_SYSTEM_ROOT/Tools/gdomap ]; then + $GNUSTEP_SYSTEM_ROOT/Tools/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. +@end itemize + +@example +if [ `gdomap -L GDNCServer | grep -c Unable` == 1 ]; then + echo "Starting GNUstep services..." + gdnc + gpbs +fi +@end example + + +@node Tools and Applications, Machine Specific, Additional Installation, Top +@chapter Test Tools and Applications + +Test programs for the base library are in @file{base/Testing}. Example +applications are located in the gstep-examples package. To make these, +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{$GNUSTEP_SYSTEM_ROOT/Tools}). Usage is: + +@example +openapp application [additional arguments to app] +@end example + +Good Luck! + +@node Machine Specific, Anonymous CVS, Tools and Applications, Top +@chapter Machine Specific Instructions + +@include machines.texi + + +@node Anonymous CVS, , Machine Specific, Top +@chapter Getting Libraries via Anonymous CVS + +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 CVS. Go +to @url{http://savannah.gnu.org/cvs/?group_id=99} for information on how +to get anonymous CVS access. + +If you haven't already done so, change to the directory, where you +want the source to reside. To get a list of potential modules to check out, +type +@example +cvs -z3 checkout -c +@end example + +For instance, to check our @file{core}, which contains all the GNUstep +code libraries: +@example +cvs -z3 checkout 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 +cvs -z3 update -Pd +@end example + +You don't have to re-checkout after you have the source, just update! + +@bye +\bye diff --git a/gnustep-make/Documentation/gnustep.init b/gnustep-make/Documentation/gnustep.init new file mode 100644 index 00000000..cc5e2036 --- /dev/null +++ b/gnustep-make/Documentation/gnustep.init @@ -0,0 +1,23 @@ +if (defined($ENV{'GNUSTEP_WEB_ROOT'})) { + open(TMPL,"<$ENV{'GNUSTEP_WEB_ROOT'}/secondary.html.template"); + $tmpl=join("",); + close(TMPL); + ($T2H_EXTRA_HEAD,$T2H_AFTER_BODY_OPEN,$T2H_PRE_BODY_CLOSE) = + ($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; diff --git a/gnustep-make/Documentation/install.texi b/gnustep-make/Documentation/install.texi new file mode 100644 index 00000000..64c40852 --- /dev/null +++ b/gnustep-make/Documentation/install.texi @@ -0,0 +1,306 @@ + +@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. + +When you configure additional libraries, make sure you use the same +configuration options as with gstep-make. + +Also 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 + +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 a root directory. If the +GNUSTEP_SYSTEM_ROOT environment variable is set then configure will +use its value as the root directory. You can also specify the root +directory when you run configure with the prefix paramter; the +following command makes /usr/local/GNUstep the root directory: + +@example +./configure --prefix=/usr/local/GNUstep +@end example + +If you do not have the GNUSTEP_SYSTEM_ROOT environment variable set +and you do not specify a root directory when running configure, then +configure will use /usr/GNUstep as the default root directory. + +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:: +* Warnings for #import:: +* 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, Warnings for #import, 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 Warnings for #import, Flat Structure, Alternate Thread Library, Configuration +@subsection Warnings for #import + +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 presumable, 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 @code{CPPFLAGS} in the config.make file. + +@node Flat Structure, Cross-Compiling, Warnings for #import, 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, then you need to +compile the programs that come with the package. Currently there is +only a single C program which needs to be compiled; all of the other +files are either shell scripts or makefile fragments, so you can +compile and install the makefile package in one step with: + +@example +make install +@end example + +After you have installed the GNUstep makefile package, there is still +some minor administration to be performed. Based upon whether you are +setting up the GNUstep environment for a single user or all users on +your system, perform the appropriate step below. + +@node Setup, , Installation, Top +@section Setting up the GNUstep environment + +@menu +* Multi-User:: +* Single-User:: +@end menu + +@node Multi-User, Single-User, Setup, Setup +@subsection Setting up the GNUstep environment for all users + +The GNUstep environment and thus usage of the makefile package is based +almost solely upon the GNUSTEP_SYSTEM_ROOT environment variable. So +essentially the setup involved is to make sure that the variable is +defined for all users. The GNUstep.sh file within the makefile package +contains all of the environment variable settings required, so you want +to call that shell. Some systems, like GNU/Linux have an +@file{/etc/profile.d} directory where scripts can be executed +automatically. Just copy GNUstep.sh to this directory for it to +work. For other UNIX systems, there might be a system wide script that +everyone uses, such as @file{/etc/bashrc}, where you could add +lines similar to these: + +@example +# Setup for the GNUstep environment +. /usr/GNUstep/System/Library/Makefiles/GNUstep.sh +@end example + +This will source in the GNUstep.sh file and set the environment +variables; thus making them available for all users. Before executing +this script, you can setup a default path for scripts in the +makefiles package to use for searching for tools and apps by +defining the variable GNUSTEP_PATHLIST (and exporting +it). By default, it's set to + +@example +$GNUSTEP_USER_ROOT:$GNUSTEP_LOCAL_ROOT:$GNUSTEP_SYSTEM_ROOT +@end example + +which might look something like this: + +@example +~/GNUstep:/usr/GNUstep/Local:/usr/GNUstep/System +@end example + +when all is done. + +NB. This path is NOT used by GNUstep tools and applications +themselves ... they use a standard function +NSSearchPathForDirectoriesInDomains() to locate files instead. + +@node Single-User, , Multi-User, Setup +@subsection Setting up the GNUstep environment for a single user + +The GNUstep environment and thus usage of the makefile package is +based almost solely upon the GNUSTEP_SYSTEM_ROOT environment variable. +So essentially the setup involved is to make sure that the variable is +defined for the user. The GNUstep.sh file within the makefile package +contains all of the environment variable settings required, so you +want to call that shell when the user logs in to the system. Most +shells have some file that you read upon login, for example the BASH +shell reads the .bash_profile file in the user's home directory. So +you can add the following lines to that file: + +@example +# Setup for the GNUstep environment +if [ -f $GNUSTEP_SYSTEM_ROOT/Library/Makefiles/GNUstep.sh ]; then + . $GNUSTEP_SYSTEM_ROOT/Library/Makefiles/GNUstep.sh +fi +@end example + +This will source in the GNUstep.sh file and set the environment +variables; thus making them available for the user. + +The GNUstep.sh file will set up GNUSTEP_USER_ROOT to the GNUstep +subdirectory of the users home directory by default. This may be +overridden by a user providing a .GNUsteprc file in their home +directory. It may be overridden on a system-wide basis by supplying +a .GNUsteprc file in the GNUSTEP_SYSTEM_ROOT directory. + +@example +# Set up to store GNUstep files directly in my home directory +GNUSTEP_USER_ROOT=~ +@end example + +@bye diff --git a/gnustep-make/Documentation/internals.tex b/gnustep-make/Documentation/internals.tex new file mode 100644 index 00000000..93708015 --- /dev/null +++ b/gnustep-make/Documentation/internals.tex @@ -0,0 +1,198 @@ +\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} diff --git a/gnustep-make/Documentation/machines.texi b/gnustep-make/Documentation/machines.texi new file mode 100644 index 00000000..54387a4d --- /dev/null +++ b/gnustep-make/Documentation/machines.texi @@ -0,0 +1,792 @@ +\input texinfo @c -*-texinfo-*- +@setfilename machines.info +@settitle Platform Compatibility + +@ifclear HOWTO +@c Machine Specific, Darwin/ix86, , (DIR) +@node Machine Specific, Darwin/ix86, , (DIR) +@chapter Machines +@end ifclear + +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. + +@menu +* Darwin/ix86:: +* Darwin/PowerPC:: +* Debian/DEC-Alpha:: +* Debian/i386:: +* Debian/PowerPC:: +* Debian/SPARC:: +* FreeBSD 5.x:: +* FreeBSD 4.x:: +* FreeBSD 3.x:: +* FreeBSD 2.x:: +* Irix 6.5/MIPS:: +* MacOSX/PowerPC:: +* MkLinux/PowerPC:: +* NetBSD:: +* Netwinder:: +* OpenBSD 3.x:: +* OSF/Alpha:: +* RedHat/Intel:: +* Slackware/Intel:: +* 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 + +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 @samp +@item egcs or gcc < 2.95 +Might work, but few people use these now. +@item gcc 2.95.x +Probably the oldest compiler that GNUstep is regularly tested with. +@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. +@item gcc 3.0.x +A fairly good compiler. Recommended. +@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. Recommended. +@item gcc 3.3.x +Recommended. Fixes some bugs relating to protocols as well as other +improvements. +@item gcc 3.4 +No info yet. +@end table + +If you have compiled GNUstep on a specific machine, please send information +about what you needed and any special instructions needed to +GNUstep @email{bug-gnustep@@gnu.org}. + +If your having mysterious trouble with a machine, try compiling GNUstep +without optimization. Particularly in the newer GCC compilers, +optimization can break some code. The easiest way to do this is when +configuring, @samp{CFLAGS="" ./configure}. Or when building, +@samp{make OPTFLAG=""}. + +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. + +@c ----------------------------------------- +@node Darwin/ix86, Darwin/PowerPC, Machine Specific, Machine Specific +@section Darwin/ix86 + +Currently tested on Darwin 7.x + +@table @samp +@item Recommended compiler +gcc 3.3.2. Older versions will not compile on Darwin. + +Default compiler has unknown problems. +Use the GNU runtime. Download the gcc compiler and configure it with +--enable-threads=posix. You don't need binutils or anything else. + +@item Extra libs needed + +@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/DEC-Alpha, Darwin/ix86, Machine Specific +@section Darwin/PowerPC + +Currently tested on Darwin 6.x, 7.x + +@table @samp +@item Recommended compiler +gcc 3.3.2. Older versions will not compile on Darwin. + +Default compiler has unknown problems. +Use the GNU runtime. Download the gcc compiler and configure it with +--enable-threads=posix. You don't need binutils or anything else. + +@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). + +@item Special Instructions + +Read the @url{README.Darwin} file in the gnustep-make/Documentation +directory for complete instructions. + +@end table + +See also the MacOSX/PowerPC section + +@c ----------------------------------------- +@node Debian/DEC-Alpha, Debian/i386, Darwin/PowerPC, Machine Specific +@section Debian/DEC-Alpha + +@table @samp +@item Recommended compiler +Unknown + +@item Extra libs needed +Unknown + +@item Special Instructions +None +@end table + +@c ----------------------------------------- +@node Debian/i386, Debian/PowerPC, Debian/DEC-Alpha, Machine Specific +@section Debian/i386 + +Tested on sid. +@table @samp +@item Recommended compiler +Unknown + +@item Extra libs needed +Unknown + +@item Special Instructions +None +@end table + +@c ----------------------------------------- +@node Debian/PowerPC, Debian/SPARC, Debian/i386, Machine Specific +@section Debian/PowerPC + +Tested on sid. +@table @samp +@item Recommended compiler +Unknown + +@item Extra libs needed +Unknown + +@item Special Instructions +None +@end table + +@c ----------------------------------------- +@node Debian/SPARC, FreeBSD 5.x, Debian/PowerPC, Machine Specific +@section Debian/SPARC + +Tested on sid. +@table @samp +@item Recommended compiler +Unknown + +@item Extra libs needed +Unknown + +@item Special Instructions +None +@end table + +@c ----------------------------------------- +@node FreeBSD 5.x, FreeBSD 4.x, Debian/SPARC, Machine Specific +@section FreeBSD 5.x + +Tested on 5.0 and 5.1 +@table @samp +@item Recommended compiler + +@item Extra libs needed +None. + +@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. + +@end table + + +@c ----------------------------------------- +@node FreeBSD 4.x, FreeBSD 3.x, FreeBSD 5.x, Machine Specific +@section FreeBSD 4.x + +@table @samp +@item Recommended compiler + +@item Extra libs needed +Unknown + +@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 + +Compiles "out of the box" on FreeBSD 3.4. + +@table @samp +@item Recommended compiler +gcc 2.95.2 + +@item Extra libs needed +Unknown + +@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, Irix 6.5/MIPS, FreeBSD 3.x, Machine Specific +@section FreeBSD 2.x (@emph{Obsolete,Unstable}) + +@table @samp +@item Recommended compiler +gcc 2.8.x + +@item Extra libs needed +Unknown + +@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 Irix 6.5/MIPS, MacOSX/PowerPC, FreeBSD 2.x, Machine Specific +@section Irix 6.5/MIPS + +@table @samp +@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 + +Currently tested on MacOSX 10.2, 10.3 + +@table @samp +@item Recommended compiler +Default. + +@item Extra libs needed +None. + +@item Special Instructions +By default, on Mac OS X, only the GNUstep extensions are built. This +is if you want to build gdl2, etc on Mac OS X. Xcode project files +exist, but they may not be up-to-date. Try: + +@example +cd make +./configure --with-library-combo=apple-apple-apple +make install + +cd ../base +./configure --with-xml-prefix=/usr --disable-xmltest +make debug=yes install +@end example + +@end table + +See also the Darwin/PowerPC section. + +@c ----------------------------------------- +@node MkLinux/PowerPC, NetBSD, MacOSX/PowerPC, Machine Specific +@section MkLinux/PowerPC + +Tested with R2 RC2 (2004/03/04). + +@table @samp +@item Recommended compiler +gcc 3.x allthough earlier ones should work if you also install gnustep-objc + +@item Extra libs needed +None. + +@item Special Instructions +Unknown. + +@end table + +@c ----------------------------------------- +@node NetBSD, Netwinder, MkLinux/PowerPC, Machine Specific +@section NetBSD + +@table @samp +@item Recommended compiler +Unknown + +@item Extra libs needed +libiconv + +@item Special Instructions +See the @url{README.NetBSD} file located in the gnustep-make package. + +@end table + +@c ----------------------------------------- +@node Netwinder, OpenBSD 3.x, NetBSD, Machine Specific +@section Netwinder (@emph{Unstable}) + +@table @samp +@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.x (@emph{Needs Testing}) + +@table @samp +@item Recommended compiler +Unknown + +@item Extra libs needed +Unknown + +@item Special Instructions +Try reading the @url{README.NetBSD} which might work the same on OpenBSD. +@end table + +@c ----------------------------------------- +@node OSF/Alpha, RedHat/Intel, OpenBSD 3.x, Machine Specific +@section OSF Alpha (@emph{Unstable}) +@c Contact: suzukis@file.phys.tohoku.ac.jp + +Information is for Version 3.2C + +@table @samp +@item Recommended compiler +egcs-1.1.1/1.1.2, gcc-2.95 + +@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/Intel, Slackware/Intel, OSF/Alpha, Machine Specific +@section RedHat/Intel + +@table @samp +@item Recommended compiler +Standard + +@item Extra libs needed +Standard (ffcall or libffi) + +@item Special Instructions +None +@end table + +@c ----------------------------------------- +@node Slackware/Intel, Solaris 2.5.1/Sparc, RedHat/Intel, Machine Specific +@section Slackware/Intel + +@table @samp +@item Recommended compiler +Unknown. + +@item Extra libs needed +Unknown. + +@item Special Instructions +Unknown. + +@end table + +@c ----------------------------------------- +@node Solaris 2.5.1/Sparc, Solaris/Sparc, Slackware/Intel, Machine Specific +@section Solaris 2.5.1/Sparc (@emph{Obsolete}) + +This configuration is no longer being tested, but it may still work. + +@table @samp +@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 + +Tested on Solaris version 6, 7, and 8 + +@table @samp +@item Recommended compiler +gcc 3.2.1 or greater +gcc 2.95.3. Version 2.95.2 has several bugs that GNUstep tickles. +gcc 3.04. Not 3.1 - does not compile parts of GNUstep. + +@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 +@c Contact?: Sebastian Niesen <sniesen@niesen.net> + +@table @samp +@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 @samp{--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 + +GNUstep has been tested on version 6.2-6.4 of Suse + +@table @samp +@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 + +GNUstep has been tested on version 7.0, 8.0, 8.1, 8.2, 9.0, and 9.1 of Suse + +@table @samp +@item Recommended compiler +The default compiler that comes with Susu is fine. Also +gcc2.95.x, gcc3.0.x, 3.1 and 3.2 work, but 2.95 is faster. +Compile with --threads-enabled (non-standard). + +@item Extra libs needed +None + +@item Special Instructions +None. + +@end table + +@c ----------------------------------------- +@node Suse 7.x/PPC, Unixware-2.1.3/Intel, Suse/Intel, Machine Specific +@section Suse 7.x/PPC + +GNUstep has been tested on version 7.0 of Suse/PPC + +@table @samp +@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 +@c Contact?: Richard Frith-Macdonald <richard@brainstorm.co.uk> + +@table @samp +@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{Needs Testing}) + +@table @samp +@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 + +@table @samp +@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 + +@table @samp +@item Recommended compiler +Standard + +@item Extra libs needed +Standard (ffcall or libffi) + +@item Special Instructions + +@end table + +@ifclear HOWTO +@include end.texi +@end ifclear diff --git a/gnustep-make/Documentation/make.texi b/gnustep-make/Documentation/make.texi new file mode 100644 index 00000000..978a9ced --- /dev/null +++ b/gnustep-make/Documentation/make.texi @@ -0,0 +1,1383 @@ +\input texinfo @c -*-texinfo-*- +@c %**start of header +@setfilename make.info +@settitle GNUstep Makefile Package +@c %**end of header + +@setcontentsaftertitlepage +@smallbook +@setchapternewpage odd + +@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:: +* GNUmakefile.preamble:: +* GNUmakefile.postamble:: +* Project Types:: +* Common 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 +OBJC_PROGRAM_NAME = simple + +# The Objective-C files to compile +simple_OBJC_FILES = simple.m + +-include GNUmakefile.preamble + +# Include in the rules for making Objective-C programs +include $(GNUSTEP_MAKEFILES)/objc.make + +-include GNUmakefile.postamble +@end smallexample + +This is all that is necessary to define the project. + + +@node Running Make, GNUmakefile.preamble, 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 does not tell 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 +put into the binary files. + +@smallexample +make debug=yes +@end smallexample + +When debugging is turned on, the Makefile Package turns off optimization +so the user must override the optimization flag when running make if +both debugging information and optimization is to be performed by the +compiler. Use the variable @var{OPTFLAG} to override the +optimization flag. + +@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, Common Variables, GNUmakefile.postamble, Top +@section Project Types +@menu +* aggregate.make:: +* application.make:: +* bundle.make:: +* ctool.make:: +* documentation.make:: +* framework.make:: +* java.make:: +* library.make:: +* native-library.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 make 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. + +@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. + +@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 makefile +# + +# 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, objc.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. + +@node objc.make, palette.make, native-library.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 makefile +# + +# 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_DIR +Set @code{GNUSTEP_INSTALLATION_DIR} to the installation +directory. Typically this is either @code{$(GNUSTEP_SYSTEM_ROOT)}), +@code{$(GNUSTEP_LOCAL_ROOT)}, or @code{$(GNUSTEP_USER_ROOT)}. If not set +it defaults to @code{$(GNUSTEP_LOCAL_ROOT)}. +@end defvr + +@defvr {RPM} RPM_DISABLE_RELOCATABLE +Set this to @code{YES} if the package must be in @code{$(GNUSTEP_SYSTEM_ROOT)} +and is not relocatable. +@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, Running Make, 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 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_INSTALLATION_DIR} 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_INSTALLATION_DIR)/MyProject \ + $(GNUSTEP_RESOURCES)/MyProject +@end smallexample + +@node GNUmakefile.postamble, Project Types, 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, , Project Types, 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_DIR} variable, so the path will change +accordingly if the user specifies a different installation root +directory. +@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_DIR} variable, so the path will change +accordingly if the user specifies a different installation root +directory. +@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_DIR} variable, so the +path will change accordingly if the user specifies a different +installation root directory. +@end defvar + +@defvar GNUSTEP_LIBRARIES_ROOT +@code{GNUSTEP_LIBRARIES_ROOT} is the absolute path for the root +directory where libraries are installed. Because libraries are binary +objects and thus inherently target platform dependent, no libraries +should actually reside in @code{GNUSTEP_LIBRARIES_ROOT}; libraries are +placed in the appropriate subdirectory taking the target and possibly +the library combo into account, see @ref{Directory +Paths,,GNUSTEP_TARGET_LIBRARIES}, and @ref{Directory +Paths,,GNUSTEP_LIBRARIES}. This variable is dependent upon the +@code{GNUSTEP_INSTALLATION_DIR} variable, so the path will change +accordingly if the user specified a different installation root +directory. +@end defvar + +@defvar GNUSTEP_TARGET_LIBRARIES +@code{GNUSTEP_TARGET_LIBRARIES} is the absolute path for the directory +where libraries are installed taking the target platform into account. +It is a subdirectory of @code{GNUSTEP_LIBRARIES_ROOT} and is where +libraries that do not depend upon the library combination, GNUstep or +others, should be placed. This variable is dependent upon the +@code{GNUSTEP_INSTALLATION_DIR} variable, so the path will change +accordingly if the user specifies a different installation root +directory. +@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. It is a subdirectory of +@code{GNUSTEP_TARGET_LIBRARIES} and therefore a subdirectory of +@code{GNUSTEP_LIBRARIES_ROOT}. 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_DIR} variable, so the path will change +accordingly if the user specifies a different installation root +directory. +@end defvar + +@defvar GNUSTEP_RESOURCES +@code{GNUSTEP_RESOURCES} is the absolute path for the directory where +resource files 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 a +subdirectory of @code{GNUSTEP_LIBRARIES_ROOT}; it is dependent upon the +@code{GNUSTEP_INSTALLATION_DIR} variable, so the path will change +accordingly if the user specifies a different installation root +directory. +@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 three possible values are: @samp{gnu} for the GNU Runtime, +@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 three +possible values are: @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_DIR +@code{GNUSTEP_INSTALLATION_DIR} is the root directory 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_DIR="/GNUstep" +@end smallexample + +This command states that the @file{/GNUstep} directory should be used as +the installation root directory; applications in the package will be +installed under @file{/GNUstep/Apps} directory, libraries in the package +will be installed under the @file{/GNUstep/Library/Libraries} directory, +command line tools will be installed under the @file{/GNUstep/Tools} +directory, and etc. By default the Makefile Package sets +@code{GNUSTEP_INSTALLATION_DIR} to @code{GNUSTEP_LOCAL_ROOT} unless +@code{GNUSTEP_LOCAL_ROOT} is empty in which case +@code{GNUSTEP_INSTALLATION_DIR} will be set to +@code{GNUSTEP_SYSTEM_ROOT}. Some packages will also override +@code{GNUSTEP_INSTALLATION_DIR} within their makefile to force the +package to install in (say) @code{GNUSTEP_SYSTEM_ROOT} instead of the +default @code{GNUSTEP_LOCAL_ROOT} directory, but if the user sets the +value of @code{GNUSTEP_INSTALLATION_DIR} when running make then that +setting takes precedence over all others. + +@bye diff --git a/gnustep-make/Documentation/news.texi b/gnustep-make/Documentation/news.texi new file mode 100644 index 00000000..19c3171f --- /dev/null +++ b/gnustep-make/Documentation/news.texi @@ -0,0 +1,284 @@ +@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{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 + +@ifclear ANNOUNCE-ONLY + +@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 diff --git a/gnustep-make/Documentation/openapp.1 b/gnustep-make/Documentation/openapp.1 new file mode 100644 index 00000000..cb701c2b --- /dev/null +++ b/gnustep-make/Documentation/openapp.1 @@ -0,0 +1,106 @@ +.\"openapp(1) man page +.\"put together by Martin Brecher <martin@gnustep.de> +.\" +.\"Process this file with +.\"groff -man -Tascii openpp.1 +.\" +.TH OPENAPP 1 "August 2003" GNUstep "GNUstep System Manual" +.SH NAME +openapp \- launch applications from the command line + +.SH SYNOPSIS +.B openapp +.RB [ --find ] +.IR application +.RB [ "\fIarguments..." ] +.P +.SH DESCRIPTION +The +.B openapp +command allows you launch graphical GNUstep applications from the command +line.a +.PP +.I application +is the complete or relative name of the application program with or +without the .app extension, like 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 (i.e. ~/GNUstep/Applications), Local, Network, System. First match wins. +.PP +If +.I application +is given without extension (i.e. Ink instead of Ink.app), +.B openapp +searches for +.I application.app +, +.I application.debug +, +.I application.profile +(in that order). +.PP +If +.I --find +is used as first argument, +.B openapp +prints out +the full path of the application executable which would be +executed, without actually executing it as it would normally do. +.PP +.SH OPTIONS +.IP "\fB--find" +print complete path of the executable which would be launched. +.IP "\fB--help" +print above usage description. +.PP +.SH EXAMPLES +Start Ink.app without additional parameters: +.PP +.I openapp Ink.app +.PP +Launch Ink.app and pass it the --GNU-Debug argument: +.PP +.I openapp Ink.app --GNU-Debug=NSTextView +.PP +To determine which executable is launched by openapp, type: +.PP +.I openapp --find Ink.app +.PP +The output of the abovecommand might be something like: +.I /usr/GNUstep/Local/Applications/Ink.app/Ink +.PP +.SH BUGS +.B openapp +does currently not handle library combos. +.PP +.SH ENVIRONMENT +.IP "\fBGNUSTEP_PATHLIST" +This variable contains the paths of the domains in which +.B gopen +tries to find applications to open the files with. Entries are +separated by a colon. +.IP +.IP Example: +.I /home/foo/GNUstep:/usr/GNUstep/Local:/usr/GNUstep/Network:/usr/GNUstep/System +.PP +.SH SEE ALSO +GNUstep(7), gopen(1) +.P +.SH HISTORY +Work on +.B openapp +started October 1997. +.P +This manual page was first written July 2003. +.P +.SH AUTHORS +openapp was originally written by Ovidiu Predescu <ovidiu@net-community.com> +and is now maintained by Nicola Pero <n.pero@mi.flashnet.it>. +.P +This man page was written by Martin Brecher <martin@mb-itconsulting.com>. diff --git a/gnustep-make/Documentation/readme.texi b/gnustep-make/Documentation/readme.texi new file mode 100644 index 00000000..1f75ced3 --- /dev/null +++ b/gnustep-make/Documentation/readme.texi @@ -0,0 +1,71 @@ +@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. + +With GNUstep-Base, we strongly recommend the use of the ffcall +libraries, which provides stack frame handling for NSInvocation and +NSConnection. "Ffcall is under GNU GPL. As a special exception, if used +in GNUstep or in derivate works of GNUstep, the included parts of ffcall +are under GNU LGPL" (Text in quotes provided by the author of ffcall). + +@section History + +The GNUstep makefile package was designed by Scott Christley +@email{scottc@@net-community.com} and Ovidiu Predescu +@email{ovidiu@@net-community.com}. + +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 diff --git a/gnustep-make/Documentation/userfaq.texi b/gnustep-make/Documentation/userfaq.texi new file mode 100644 index 00000000..7b238466 --- /dev/null +++ b/gnustep-make/Documentation/userfaq.texi @@ -0,0 +1,477 @@ +\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 Inc.) OpenStep Standard. The project is not +finished, so some parts are not as polished as they could be. + +@node What is the OpenStep standard?, What platforms does GNUstep run on?, What is GNUstep?, GNUstep General Information +@subsection What is the OpenStep standard? + +OpenStep is an Application Programming Interface (API) for creating +applications using the Objective C language. It was published by NeXT +Computer Inc. in 1994. + +OpenStep consists of three parts: the @samp{FoundationKit}, a library of +non-graphical objects; the @samp{AppKit}, a library of objects useful in +creating graphical applications; and @samp{Display Postscript}, an +interface for drawing to the screen using the PostScript graphics +language. + +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{http://www.gnustep.org/information/machines_toc.html} for +information on what machines GNUstep builds on and what the status of +the ports is. Probably a few days porting to any other Unix system where +current gcc compilers and gdb debugger work. + +@node Does GNUstep run on Windows?, What is GNUstep's position towards KDE and the GNOME project?, What platforms does GNUstep run on?, GNUstep General Information +@subsection Does GNUstep run on Windows? + + The primary targets for GNUstep are free 'Unix' platforms such +as GNU/Linux. + +That being said, the base library should run on Windows-NT,98,2000 with the +Cygwin unix emulation library from Cygnus +(http://sourceware.cygnus.com/cygwin/) or the MinGW libraries. At +present there are a few problems with networking (Distributed Objects) +support, but the library is believed to work. + +The gui library uses the win32 backend library to work under +Windows. The backend library is a thin layer that converts the +GNUstep methods to handle drawing of GUI elements to calls to the +win32 API. This project is in beta. + +The application-wrapper used for GNUstep already allows for multiple +binaries to be stored for different systems, so you should be able +to write once, deploy anywhere. + + +@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 (if?) 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? + +Get the HOWTO from +@url{http://www.gnustep.org/resources/documentation/GNUstep-HOWTO} +Get the latest release from @url{ftp://ftp.gnustep.org}. If you're +really adventurous, get the latest snapshot by anonymous ftp from +@url{ftp://ftp.gnustep.org/pub/daily-snapshots} + +Use anonymous CVS to keep up to date - instructions are in the +HOWTO. + +@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? + +@itemize @bullet +@item gnustep-make does pretty much what the makefiles in NeXTstep do. +@item gnustep-base (Foundation) works well and is used in production evironments. +@item gnustep-gdl2 works well and is used in production evironments. +@item gnustep-gui (AppKit) has a lot working but there is still stuff missing. +@end itemize + +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, Debain packages, and BSD ports. Also Windows installers, MacOSX biniaries +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 these 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 MacOSX programs on GNUstep?:: +* Is GNUstep following Changes to OpenStep and MacOSX?:: +* Do we have to have the NeXTstep look and feel?:: +* What's up with the directory structure?:: +* Why not use Frameworks?:: +@end menu + +@node Can I run NeXT OPENSTEP or MacOSX programs on GNUstep?, Is GNUstep following Changes to OpenStep and MacOSX?, Compatibility and Layout, Compatibility and Layout +@subsection Can I run NeXT OPENSTEP or MacOSX programs on GNUstep? + +You can't run these programs on GNUstep, but if you have the source +code for the programs, you should be able to port them to GNUstep and +compile them. Whether or not you will be able to run them depends on how +complete GNUstep is at the time. + +@node Is GNUstep following Changes to OpenStep and MacOSX?, Do we have to have the NeXTstep look and feel?, Can I run NeXT OPENSTEP or MacOSX programs on GNUstep?, Compatibility and Layout +@subsection Is GNUstep following Changes to OpenStep and MacOSX? + +Yes, gnustep-base already contains the documented changes in the +Foundation library. GNUstep aims to be compatible with both the +OpenStep specification and with MacOS-X. It should be easy to write +an application that compiles cleanly under both GNUstep and Cocoa. + +@node Do we have to have the NeXTstep look and feel?, What's up with the directory structure?, Is GNUstep following Changes to OpenStep and MacOSX?, Compatibility and Layout +@subsection Do we have to have the NeXTstep look and feel? + +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. Actually we're hoping someone will volunteer to do it. + +@node What's up with the directory structure?, Why not use Frameworks?, Do we have to have the NeXTstep look and feel?, Compatibility and Layout +@subsection What's up with the directory structure? + +First of all, GNUstep uses a slightly different directory structure than +NeXT or MacOSX. Part of this is historical, part is because we can't do +things the same way (see @pxref{Why not use Frameworks?}). Although currently +the structure is very similar to the it is done in MacOSX. + +@node Why not use Frameworks?, , What's up with the directory structure?, Compatibility and Layout +@subsection Why not use Frameworks? + +Frameworks are much more difficult to port and to use, and are very +unnatural on a unix system - extremely unnatural on Windows. In a +framework, the shared dynamic library is inside a framework wrapper +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. + +I think OpenStep for Windows did that, and still called them frameworks. +Oh well we can do the same then, and call our libraries frameworks. + +In a shared library, the shared dynamic library is in a directory which is +in the path to the dynamic linker. the dynamic linker can find it very +easily. this is how all shared and static libraries work on Unix systems, +on Windows systems and possibly on most system at all. + +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 MacOSX 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 +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 +MacOS X frameworks. They are composed of a shared library and +associated with a bundle of resources. There is a difference in +terminology, in where the resources are installed, and possibly a slight +difference in the NSBundle API to get to the resource bundle (anyway, +it's a one line difference between MacOSX and GNUstep, so it looks like +very easy to #ifdef). + +In other words, GNUstep libraries are meant to basically do the same as +frameworks do on MacOSX, but to be portable to strange platforms (such as +Windows). + + +@c **************************************************************** +@node Troubleshooting, , Compatibility and Layout, Top +@section Troubleshooting + +@menu +* Problems compiling (loading shared libs):: +* Problems compiling (GNUstep Internal Error):: +* Problems with Alt key:: +* Problems with gcc3:: +* Problems with fonts:: +* 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 with Alt key, 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. + +@node Problems with Alt key, Problems with gcc3, Problems compiling (GNUstep Internal Error), 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 gcc3, Problems with fonts, Problems with Alt key, Troubleshooting +@subsection Problems with gcc3 + +Don't forget you need to update binutils and libc also. + +@node Problems with fonts, No Makefile, Problems with gcc3, 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 Makefile, , Problems with fonts, 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/GNUstep/System/Library/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 diff --git a/gnustep-make/FAQ b/gnustep-make/FAQ new file mode 100644 index 00000000..03223e10 --- /dev/null +++ b/gnustep-make/FAQ @@ -0,0 +1,529 @@ +GNUstep Frequently Asked Questions with Answers +*********************************************** + +Last updated 3 September 2004. Please send corrections to +<gnustep-maintainer@gnu.org>. Also look at the user FAQ for more user +oriented questions. + +Compatibility +============= + +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>). + +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: + + * Be careful with Cocoa.h includes (Use #ifndef GNUSTEP, for + instance) + + * Do not use CoreFoundation + + * Do not use Objective-C++ + + * Do not use Quicktime or other proprietary extension + + * You need to convert .nib files (see next question *note Tools for + porting::) + + * Some unfinished classes include Drawers. + +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. + +`ni2gmodel' + This program coverts nib files from any system, such as Cocoa or + 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). + +`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. + +`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. + + +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. Also Apple's +archiving format, as far as we know, would not be compatible between +different machines because of endiness issues, although GNUstep doesn't +have this problem. + + Your best bet is to implement your own archiving format that would +work both with GNUstep and Cocoa. Fortunately, you don't have to start +from scratch, since this has been essentially done for you in the +nib2gmodel tool, which has an archiver that works both on GNUstep and +Cocoa. It might be nice to split this off into a separate project to +make it easier for other people to do the same thing. + +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. + +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. + +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. + +Can one use the hybrid "Objective-C++" +-------------------------------------- + +No. at present the GNU compiler (gcc) does not support "Objective-C++". +Apple is interested in adding back their implementation to gcc and is +slowly adding parts of it to the mainline gcc implementation. + +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. + +What if I compile GNUstep under OPENSTEP/MacOS X? +------------------------------------------------- + +GNUstep uses the X-windows display postscript extension. The interface +to that is not the same as the interface to the OPENSTEP/MacOS-X +windows server. While someone could write a backend library to provide +the interface, nobody has bothered to date. + + You should, however, be able to use a GNUstep program with an X11 +server running on MacOSX. + +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. + +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. + +Compiling and Developing +======================== + +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.) + +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 maintainer of the library you are working on +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. + +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 :-) + +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. + +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 <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 `#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 Adam or Richard to coordinate efforts. + +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 anonymous CVS to install the +latest GNUstep snapshots you can find. Then checkout the 'tests' module +from CVS. In the 'tests' directory, you will find a regression testing +framework. In order to use this you will also need a recent (v 1.3.2 +or later) copy of Guile (you can get this from a GNU ftp site) and will +need to check-out, built, and installed the 'guile' package from the +GNUstep CVS repository. + +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. + +How can I help with the GNUstep website? +---------------------------------------- + +Talk to Adam Fedor <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. + + If you want to update the FAQ or documentation - grab the latest +snapshot of the GNUstep core you can find, update it from the CVS +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. + +Why doesn't GDB support Objective-C? +------------------------------------ + +Um, it does. As of GDB 6.0, gdb supports debugging of Objective-C code. + +GNU Objective C Compiler and Runtime +==================================== + +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. + + +Does it allow a mixture of Objective C and C++? +----------------------------------------------- + +No. See *note Can one use the hybrid "Objective-C++":: + +Where can I find more information? +---------------------------------- + +The FAQ associated with the newsgroup `comp.lang.objective-c' contains +more information about GNU Objective C. + +GNUstep Base Library +==================== + +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), event loops, and +random number generators. + + It provides functionality that aims to implement the non-graphical +portion of the OpenStep standard (the Foundation library). + +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. + +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 NeXT'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 NeXT NSConnection using a GNU NSConnection. + + Here are some differences between GNU distributed objects and NeXT's +distributed objects: NeXT 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. ]. + +GNUstep GUI Library +=================== + +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. + +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. + +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. + +What is the current state of development of the back-ends? +---------------------------------------------------------- + +There are several backends currently available: + +`xlib' + This is the standard backend that 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. At some + point it will become the standard. + +`w32' + This backend works on Windows and is currently beta quality. + +GNUstep DisplayGhostScript Server +================================= + +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. + +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 +currently doesn't work. + +What is the relationship between the Display Ghostscript Server and X Windows? +------------------------------------------------------------------------------ + +Display Ghostscript runs on top of X Windows. + diff --git a/gnustep-make/GNUmakefile.in b/gnustep-make/GNUmakefile.in new file mode 100644 index 00000000..c833ddb1 --- /dev/null +++ b/gnustep-make/GNUmakefile.in @@ -0,0 +1,348 @@ +# @configure_input@ +# +# Main GNUmakefile for the GNUstep GNUmakefile Package. +# +# Copyright (C) 1997-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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# +# 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.make + +# To install everything inside a temporary directory (say as part of +# building a binary package - deb or rpm), use something like `make +# install special_prefix=/var/tmp/gnustep-make' +special_prefix = + +GNUSTEP_SYSTEM_ROOT = $(special_prefix)@prefix@ +GNUSTEP_LOCAL_ROOT = $(special_prefix)@GNUSTEP_LOCAL_ROOT@ +GNUSTEP_NETWORK_ROOT = $(special_prefix)@GNUSTEP_NETWORK_ROOT@ +srcdir = @srcdir@ +VPATH = @srcdir@ + +GNUSTEP_FLATTENED = @GNUSTEP_FLATTENED@ +GNUSTEP_TARGET_CPU = @clean_target_cpu@ +GNUSTEP_TARGET_VENDOR = @clean_target_vendor@ +GNUSTEP_TARGET_OS = @clean_target_os@ + +GNUSTEP_LIB_COMBO = @ac_cv_library_combo@ + +ifeq ($(GNUSTEP_FLATTENED),) + GNUSTEP_TARGET_DIR = $(GNUSTEP_TARGET_CPU)/$(GNUSTEP_TARGET_OS) + GNUSTEP_TARGET_LDIR = $(GNUSTEP_TARGET_DIR)/$(GNUSTEP_LIB_COMBO) + MAYBE_LIBRARY_COMBO = $(GNUSTEP_LIB_COMBO) +else + GNUSTEP_TARGET_DIR = . + GNUSTEP_TARGET_LDIR = . + MAYBE_LIBRARY_COMBO = . +endif + +export GNUSTEP_TARGET_DIR +export GNUSTEP_TARGET_LDIR +export MAYBE_LIBRARY_COMBO + +makedir = $(GNUSTEP_SYSTEM_ROOT)/@MAKEFILES_SUFFIX@ +tooldir = $(GNUSTEP_SYSTEM_ROOT)/Tools + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ + +VERTAG = $(subst .,_,$(GNUSTEP_MAKE_VERSION)) + +MAKE_FILES = aggregate.make application.make bundle.make service.make \ + common.make library-combo.make java.make jni.make library.make \ + messages.make rules.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-executable.template java-tool.make framework.make \ + native-library.make spec-rules.template spec-debug-rules.template \ + spec-debug-alone-rules.template \ + tar-exclude-list + +MASTER_MAKE_FILES = \ + aggregate.make 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 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_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 \ + stamp-string.make strings.make + +INSTANCE_DOC_MAKE_FILES = autogsdoc.make gsdoc.make install_files.make \ + javadoc.make latex.make texi.make + +all: generated-files which_lib$(EXEEXT) user_home$(EXEEXT) + +# Please note that you should use a bit of care in the following rule, +# because it must work in a directory which is not the source +# directory - so for example $<, rather than which_lib.c, must be +# used. (I mean: 'cd core/make; cd ..; mkdir make-build; cd +# make-build; ../make/configure --disable-import; make;' must work) +which_lib$(EXEEXT): which_lib.c config.h + $(CC) @CFLAGS@ -Wall -I. -o $@ $< + +user_home$(EXEEXT): user_home.c config.h + $(CC) @CFLAGS@ -DGNUSTEP_SYSTEM_ROOT=$(GNUSTEP_SYSTEM_ROOT) \ + -Wall -I. -o $@ $< + +ifeq ($(messages),yes) + EC = +else + EC = @ +endif + +move_obsolete: + $(EC)(echo "Moving paths from old heirarchy: "; \ + $(srcdir)/move_obsolete_paths.sh $(GNUSTEP_SYSTEM_ROOT) $(GNUSTEP_LOCAL_ROOT) $(GNUSTEP_USER_ROOT)) + +install: all @GNUSTEP_MOVE_OBSOLETE@ + $(EC)(echo "Creating system domain: $(GNUSTEP_SYSTEM_ROOT)"; \ + $(srcdir)/create_domain_dir_tree.sh $(GNUSTEP_SYSTEM_ROOT); \ + echo "Creating local and network dirs: $(GNUSTEP_LOCAL_ROOT), $(GNUSTEP_NETWORK_ROOT)"; \ + $(srcdir)/mkinstalldirs $(GNUSTEP_LOCAL_ROOT) $(GNUSTEP_NETWORK_ROOT);\ + echo "Creating makefile directories in: $(makedir)"; \ + $(srcdir)/mkinstalldirs \ + $(makedir) \ + $(makedir)/$(GNUSTEP_TARGET_CPU) \ + $(makedir)/$(GNUSTEP_TARGET_DIR) \ + $(makedir)/Additional \ + $(makedir)/Auxiliary \ + $(makedir)/Master \ + $(makedir)/Instance \ + $(makedir)/Instance/Shared \ + $(makedir)/Instance/Documentation) + -$(EC) rm -f $(GNUSTEP_SYSTEM_ROOT)/Makefiles +ifeq ($(HAS_LN_S), yes) + $(EC) (cd $(GNUSTEP_SYSTEM_ROOT); $(LN_S) @MAKEFILES_SUFFIX@ Makefiles) +endif + $(EC)(echo "Installing gnustep-make support software"; \ + $(INSTALL_PROGRAM) -m 755 which_lib$(EXEEXT) \ + $(makedir)/$(GNUSTEP_TARGET_DIR); \ + $(INSTALL_PROGRAM) -m 755 user_home$(EXEEXT) \ + $(makedir)/$(GNUSTEP_TARGET_DIR)) + $(EC)(for f in config.guess config.sub install-sh mkinstalldirs \ + clean_cpu.sh clean_os.sh \ + clean_vendor.sh cpu.sh GNUstep-reset.sh \ + ld_lib_path.sh os.sh transform_paths.sh vendor.sh \ + ld_lib_path.csh relative_path.sh strip_makefiles.sh; do \ + $(INSTALL_PROGRAM) -m 755 $(srcdir)/$$f $(makedir); \ + done) + $(EC)($(INSTALL_PROGRAM) -m 755 GNUstep.sh $(makedir); \ + $(INSTALL_PROGRAM) -m 755 GNUstep.csh $(makedir); \ + $(INSTALL_PROGRAM) -m 755 fixpath.sh $(makedir); \ + $(INSTALL_PROGRAM) -m 755 openapp $(tooldir); \ + $(INSTALL_PROGRAM) -m 755 debugapp $(tooldir); \ + $(INSTALL_PROGRAM) -m 755 opentool $(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_DATA) executable.template $(makedir); \ + $(INSTALL_DATA) config.make $(makedir)/$(GNUSTEP_TARGET_DIR)) + $(EC)($(srcdir)/mkinstalldirs $(GNUSTEP_SYSTEM_ROOT)/share; \ + $(INSTALL_DATA) $(srcdir)/config.site $(GNUSTEP_SYSTEM_ROOT)/share) + $(EC)(echo "Installing system GNUsteprc"; \ + $(INSTALL_DATA) GNUsteprc $(GNUSTEP_SYSTEM_ROOT)/.GNUsteprc) + $(EC)(if [ "@GNUSTEP_STRIP_MAKEFILES@" = "strip" ]; then \ + echo "Stripping makefiles and shell scripts..."; \ + cd $(makedir); ./strip_makefiles.sh; \ + fi) + +# +# NICOLA - Need to clean the following message and print it at the end +# of the install rule +# +# @echo "" +# @echo "IMPORTANT: you need to execute a shell initialization script" +# @echo "before you can use gnustep-make. The command to run the shell" +# @echo "initialization script is:" +# @echo ". $(makedir)/GNUstep.sh" +# @echo "(be careful to put the space after the dot)" +# @echo "Please run it now." +# @echo "" + +uninstall: + rm -f $(makedir)/$(GNUSTEP_TARGET_DIR)/which_lib$(EXEEXT) + rm -f $(makedir)/$(GNUSTEP_TARGET_DIR)/user_home$(EXEEXT) + for f in config.guess config.sub install-sh mkinstalldirs \ + clean_cpu.sh clean_os.sh \ + clean_vendor.sh cpu.sh ld_lib_path.sh os.sh \ + transform_paths.sh vendor.sh \ + ld_lib_path.csh fixpath.sh \ + 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; \ + 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 + rm -f $(makedir)/executable.template + rm -f $(GNUSTEP_SYSTEM_ROOT)/share/config.site + rm -f $(makedir)/$(GNUSTEP_TARGET_DIR)/config.make + rm -f $(GNUSTEP_SYSTEM_ROOT)/.GNUsteprc + -for f in $(makedir)/$(GNUSTEP_TARGET_CPU) \ + $(makedir)/$(GNUSTEP_TARGET_DIR) \ + $(makedir)/Additional \ + $(makedir)/Auxiliary \ + $(makedir)/Master \ + $(makedir)/Instance/Shared \ + $(makedir)/Instance/Documentation \ + $(makedir)/Instance; do \ + rmdir $$f; \ + done +# To really uninstall all of GNUstep, a 'rm -Rf ${GNUSTEP_ROOT}' should do. + +clean: + rm -f *~ which_lib$(EXEEXT) user_home$(EXEEXT) \ + Master/*~ Instance/*~ Instance/Shared/*~ + +distclean: clean + rm -f GNUmakefile config.make config.h + rm -f config.cache config.log config.status + rm -f openapp + rm -f debugapp + rm -f opentool + rm -f executable.template + rm -f GNUstep.sh + rm -f GNUstep.csh + rm -f fixpath.sh + rm -f gnustep-make.spec + rm -f GNUsteprc + +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 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 + +generated-files: GNUmakefile GNUstep.sh GNUstep.csh fixpath.sh config.h config.make debugapp openapp opentool gnustep-make.spec executable.template + +GNUmakefile: GNUmakefile.in config.status + $(SHELL) config.status + +GNUstep.sh: GNUstep.sh.in + $(SHELL) config.status + +GNUstep.csh: GNUstep.csh.in + $(SHELL) config.status + +fixpath.sh: fixpath.sh.in + $(SHELL) config.status + +config.h: config.h.in + $(SHELL) config.status + +config.make: config.make.in Version + $(SHELL) config.status --recheck + +debugapp: debugapp.in + $(SHELL) config.status + +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 diff --git a/gnustep-make/GNUmakefile.postamble b/gnustep-make/GNUmakefile.postamble new file mode 100644 index 00000000..dec5a0b9 --- /dev/null +++ b/gnustep-make/GNUmakefile.postamble @@ -0,0 +1,45 @@ +# +# 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:: diff --git a/gnustep-make/GNUmakefile.preamble b/gnustep-make/GNUmakefile.preamble new file mode 100644 index 00000000..069ba77a --- /dev/null +++ b/gnustep-make/GNUmakefile.preamble @@ -0,0 +1,50 @@ +# +# 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 += + diff --git a/gnustep-make/GNUstep-HOWTO b/gnustep-make/GNUstep-HOWTO new file mode 100644 index 00000000..07752388 --- /dev/null +++ b/gnustep-make/GNUstep-HOWTO @@ -0,0 +1,1004 @@ + GNUstep HOWTO + ************* + + Last Update: 3 September 2004 + + This document explains how to build the different components of the + GNUstep core libraries and GNUstep Launchpad. + + Copyright (C) 1996 - 2002 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. + +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. + +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 recommended but not + currently required. + +`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. + +`libaudiofile (RECOMMENDED)' + The GUI library uses this for the sound server + +`freetype2 (RECOMMENDED, REQUIRED for art backend)' + This is used for font information + +`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.org>. + +`gnustep-objc package (for gcc version < 3.0 ONLY) (RECOMMENDED)' + Note: Do not install this library unless you are sure you need it. + You probably don't need it except on MinGW. This is a special + version of the Objective-C runtime that include several bug fixes + and features that were not in gcc versions previous to 3.0. It is + available at <ftp://ftp.gnustep.org/pub/gnustep/libs> which + compiles using the GNUstep Makefile package (so you don't have to + get the entire gcc dist). Make sure to set the THREADING variable + in the GNUmakefile. It's possible to compile the library static + (make shared=no) and just copy to the place where the gcc libobjc + library is (type gcc -v to get this location). Note you have to + install gnustep-make (below) before installing this library. + +`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). + +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). + +Installing the Core Libraries +============================= + +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 a root directory. If the +GNUSTEP_SYSTEM_ROOT environment variable is set then configure will +determine the root directory from its value (by removing the final +/System path component from it). You can also specify the root +directory when you run configure with the prefix paramater; the +following command makes /usr/local/GNUstep the root directory: + + ./configure --prefix=/usr/local/GNUstep + + If you do not have the GNUSTEP_SYSTEM_ROOT environment variable set +and you do not specify a root directory when running configure, then +configure will use /usr/GNUstep as the default root directory. + +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. + +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 Pacakge (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. + +Additional Installation +*********************** + +Environment Setup +================= + +Add the shell script `GNUstep.sh' located in the Makefile package to +your shell startup file (such as `.profile'). For instance, if your +GNUSTEP_SYSTEM_ROOT is `/usr/GNUstep/System', + + . /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 your GNUSTEP_SYSTEM_ROOT is different, you need to replace +`/usr/GNUstep/System' with your GNUSTEP_SYSTEM_ROOT). It 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 + +GNUstep Home +============ + +Set up your home GNUstep directory. This should be done automatically +if you don't do it. This is where user defaults are kept as well as +other user configuration files. User installed apps, libraries, etc are +also here (if the default user directory is used). + + cd + mkdir GNUstep + +Time Zone +========= + +Next, set your local time zone. There are four ways to do this, pick +one (see +`$GNUSTEP_SYSTEM_ROOT/Library/Libraries/Resources/gnustep-bsae/NSTimeZones/zones' +for typical time zones): + + 1. Use the defaults utility to set "Local Time Zone" to your local + time zone (defaults is installed with GNUstep in the Tools + directory). Type something like "defaults write NSGlobalDomain + "Local Time Zone" GB". + + 2. Set the GNUSTEP_TZ environment variable. + + 3. Create the file + `$GNUSTEP_SYSTEM_ROOT/Library/Libraries/Resources/gnustep-base/NSTimeZones/localtime' + with the name of the local time zone in it. + + 4. Set the TZ environment variable (this may conflict with other + software on your system though). + +GNUstep deamons +=============== + +Set up your system to execute some GNUstep deamons. 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) + GNUSTEP_SYSTEM_ROOT=/usr/GNUstep/System + if [ -f $GNUSTEP_SYSTEM_ROOT/Tools/gdomap ]; then + $GNUSTEP_SYSTEM_ROOT/Tools/gdomap + fi + + * gdnc - Start after sourcing `GNUstep.sh' (e.g. in .profile) + + * gpbs - Same as with gdnc, make sure X-Windows is running. + + if [ `gdomap -L GDNCServer | grep -c Unable` == 1 ]; then + echo "Starting GNUstep services..." + gdnc + gpbs + fi + +Test Tools and Applications +*************************** + +Test programs for the base library are in `base/Testing'. Example +applications are located in the gstep-examples package. To make these, +just uncompress and untar this package, cd to the appropriate +directory, and type make. You will need to install the GNUstep core +libraries first before doing this. + + To run the examples. Use the openapp utility that is part of the +GNUstep makefile package (and stored in `$GNUSTEP_SYSTEM_ROOT/Tools'). +Usage is: + + openapp application [additional arguments to app] + + Good Luck! + +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. + + 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' + Might work, but few people use these now. + +`gcc 2.95.x' + Probably the oldest compiler that GNUstep is regularly tested with. + +`gcc 2.96' + Not an official gcc release. Some versions (Redhat, Mandrake) have + problems that prevent GNUstep from being compiled correctly and + cause mysterious errors. + +`gcc 3.0.x' + A fairly good compiler. Recommended. + +`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. Recommended. + +`gcc 3.3.x' + Recommended. Fixes some bugs relating to protocols as well as other + improvements. + +`gcc 3.4' + No info yet. + + If you have compiled GNUstep on a specific machine, please send +information about what you needed and any special instructions needed to +GNUstep <bug-gnustep@gnu.org>. + + 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. + +Darwin/ix86 +=========== + +Currently tested on Darwin 7.x + +`Recommended compiler' + gcc 3.3.2. Older versions will not compile on Darwin. + + Default compiler has unknown problems. Use the GNU runtime. + Download the gcc compiler and configure it with + -enable-threads=posix. You don't need binutils or anything else. + +`Extra libs needed' + +`Special Instructions' + Read the <README.Darwin> file in the gnustep-make/Documentation + directory for complete instructions. + + +Darwin/PowerPC +============== + +Currently tested on Darwin 6.x, 7.x + +`Recommended compiler' + gcc 3.3.2. Older versions will not compile on Darwin. + + Default compiler has unknown problems. Use the GNU runtime. + Download the gcc compiler and configure it with + -enable-threads=posix. You don't need binutils or anything else. + +`Extra libs needed' + Use libffi (not ffcall). This should be enabled by default in + gnustep-base so you don't have to type -enable-libffi. For 6.x, + you need the dlcompat library (from <www.opendarwin.org>) to load + bundles (not needed for 7.x). + +`Special Instructions' + Read the <README.Darwin> file in the gnustep-make/Documentation + directory for complete instructions. + + + See also the MacOSX/PowerPC section + +Debian/DEC-Alpha +================ + +`Recommended compiler' + Unknown + +`Extra libs needed' + Unknown + +`Special Instructions' + None + +Debian/i386 +=========== + +Tested on sid. +`Recommended compiler' + Unknown + +`Extra libs needed' + Unknown + +`Special Instructions' + None + +Debian/PowerPC +============== + +Tested on sid. +`Recommended compiler' + Unknown + +`Extra libs needed' + Unknown + +`Special Instructions' + None + +Debian/SPARC +============ + +Tested on sid. +`Recommended compiler' + Unknown + +`Extra libs needed' + Unknown + +`Special Instructions' + None + +FreeBSD 5.x +=========== + +Tested on 5.0 and 5.1 +`Recommended compiler' + +`Extra libs needed' + None. + +`Special Instructions' + Can install via /usr/ports/devel/gnustep, but not all required + dependancies are installed. See the GNUstep-HOWTO for list of + libraries. + + +FreeBSD 4.x +=========== + +`Recommended compiler' + +`Extra libs needed' + Unknown + +`Special Instructions' + For gcc 3.0.4, make WANT_THREADS_SUPPORT=YES + + For libxml2 2.4.24, make WITHOUT_PYTHON=YES + + +FreeBSD 3.x +=========== + +Compiles "out of the box" on FreeBSD 3.4. + +`Recommended compiler' + gcc 2.95.2 + +`Extra libs needed' + Unknown + +`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"'. + + +FreeBSD 2.x (_Obsolete,Unstable_) +================================= + +`Recommended compiler' + gcc 2.8.x + +`Extra libs needed' + Unknown + +`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. + + +Irix 6.5/MIPS +============= + +`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 + + +MacOSX/PowerPC +============== + +Currently tested on MacOSX 10.2, 10.3 + +`Recommended compiler' + Default. + +`Extra libs needed' + None. + +`Special Instructions' + By default, on Mac OS X, only the GNUstep extensions are built. + This is if you want to build gdl2, etc on Mac OS X. Xcode project + files exist, but they may not be up-to-date. Try: + + cd make + ./configure --with-library-combo=apple-apple-apple + make install + + cd ../base + ./configure --with-xml-prefix=/usr --disable-xmltest + make debug=yes install + + + See also the Darwin/PowerPC section. + +MkLinux/PowerPC +=============== + +Tested with R2 RC2 (2004/03/04). + +`Recommended compiler' + gcc 3.x allthough earlier ones should work if you also install + gnustep-objc + +`Extra libs needed' + None. + +`Special Instructions' + Unknown. + + +NetBSD +====== + +`Recommended compiler' + Unknown + +`Extra libs needed' + libiconv + +`Special Instructions' + See the <README.NetBSD> file located in the gnustep-make package. + + +Netwinder (_Unstable_) +====================== + +`Recommended compiler' + Build #12 of the system. + +`Extra libs needed' + Unknown + +`Special Instructions' + See <http://www.netwinder.org/~patrix> + +OpenBSD 3.x (_Needs Testing_) +============================== + +`Recommended compiler' + Unknown + +`Extra libs needed' + Unknown + +`Special Instructions' + Try reading the <README.NetBSD> which might work the same on + OpenBSD. + +OSF Alpha (_Unstable_) +======================= + +Information is for Version 3.2C + +`Recommended compiler' + egcs-1.1.1/1.1.2, gcc-2.95 + +`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). + + +RedHat/Intel +============ + +`Recommended compiler' + Standard + +`Extra libs needed' + Standard (ffcall or libffi) + +`Special Instructions' + None + +Slackware/Intel +=============== + +`Recommended compiler' + Unknown. + +`Extra libs needed' + Unknown. + +`Special Instructions' + Unknown. + + +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. + +Solaris 2.[678]/Sparc +===================== + +Tested on Solaris version 6, 7, and 8 + +`Recommended compiler' + gcc 3.2.1 or greater gcc 2.95.3. Version 2.95.2 has several bugs + that GNUstep tickles. gcc 3.04. Not 3.1 - does not compile parts + of GNUstep. + +`Extra libs needed' + 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'. + +Solaris 2.7/Intel +================= + +`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. + + +Suse 6.x/Intel +============== + +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. + + +Suse/Intel +========== + +GNUstep has been tested on version 7.0, 8.0, 8.1, 8.2, 9.0, and 9.1 of +Suse + +`Recommended compiler' + The default compiler that comes with Susu is fine. Also gcc2.95.x, + gcc3.0.x, 3.1 and 3.2 work, but 2.95 is faster. Compile with + -threads-enabled (non-standard). + +`Extra libs needed' + None + +`Special Instructions' + None. + + +Suse 7.x/PPC +============ + +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' + +Unixware-2.1.3/Intel +==================== + +`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. + +Windows with CYGWIN (_Needs Testing_) +===================================== + +`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. + + +Windows with MinGW +================== + +`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. + +Yellowdog/PowerPC +================= + +`Recommended compiler' + Standard + +`Extra libs needed' + Standard (ffcall or libffi) + +`Special Instructions' + +Getting Libraries via Anonymous CVS +*********************************** + +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 CVS. Go +to <http://savannah.gnu.org/cvs/?group_id=99> for information on how to +get anonymous CVS access. + + If you haven't already done so, change to the directory, where you +want the source to reside. To get a list of potential modules to check +out, type + cvs -z3 checkout -c + + For instance, to check our `core', which contains all the GNUstep +code libraries: + cvs -z3 checkout 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: + + cvs -z3 update -Pd + + You don't have to re-checkout after you have the source, just update! + diff --git a/gnustep-make/GNUstep-reset.sh b/gnustep-make/GNUstep-reset.sh new file mode 100644 index 00000000..83739487 --- /dev/null +++ b/gnustep-make/GNUstep-reset.sh @@ -0,0 +1,106 @@ +#! /bin/echo 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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 function resets a path. +# The only argument is the name of the path variable to be reset. All +# paths beginning with GNUSTEP_SYSTEM_ROOT, GNUSTEP_LOCAL_ROOT, +# GNUSTEP_NETWORK_ROOT and GNUSTEP_USER_ROOT are removed from the path +# variable (yes, we are rather crude). All other paths are kept +# unchanged. +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" ]; then + case "$dir" in + $gnustep_dir*) 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 CLASSPATH +reset_path GUILE_LOAD_PATH +reset_path LD_LIBRARY_PATH +reset_path DYLD_LIBRARY_PATH +reset_path DYLD_FRAMEWORK_PATH +reset_path PATH + +# 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_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_SYSTEM_ROOT +unset GNUSTEP_ROOT +unset LIBRARY_COMBO diff --git a/gnustep-make/GNUstep.csh.in b/gnustep-make/GNUstep.csh.in new file mode 100755 index 00000000..138549a3 --- /dev/null +++ b/gnustep-make/GNUstep.csh.in @@ -0,0 +1,133 @@ +#! /bin/echo This file must be sourced inside csh using: source +# +# @configure_input@ +# +# Shell initialization for the GNUstep environment. +# +# Copyright (C) 1998-2002 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 <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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# + +# +# Set the GNUstep system root and local root +# +setenv GNUSTEP_ROOT "@GNUSTEP_ROOT@" +setenv GNUSTEP_SYSTEM_ROOT "@prefix@" +setenv GNUSTEP_FLATTENED "@GNUSTEP_FLATTENED@" +if ( ! ${?LIBRARY_COMBO} ) then + setenv LIBRARY_COMBO "@ac_cv_library_combo@" +endif + +setenv GNUSTEP_LOCAL_ROOT "@GNUSTEP_LOCAL_ROOT@" +setenv GNUSTEP_NETWORK_ROOT "@GNUSTEP_NETWORK_ROOT@" + +setenv GNUSTEP_MAKEFILES "${GNUSTEP_SYSTEM_ROOT}/@MAKEFILES_SUFFIX@" + +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 + +if ( "${GNUSTEP_FLATTENED}" == "" ) then + setenv GNUSTEP_USER_ROOT `${GNUSTEP_MAKEFILES}/${GNUSTEP_HOST_CPU}/${GNUSTEP_HOST_OS}/user_home user` +else + setenv GNUSTEP_USER_ROOT `${GNUSTEP_MAKEFILES}/user_home user` +endif + +# +# Add the GNUstep tools directories to the path +# +if ( ! ${?GNUSTEP_PATHLIST} ) then + setenv GNUSTEP_PATHLIST \ + "${GNUSTEP_USER_ROOT}:${GNUSTEP_LOCAL_ROOT}:${GNUSTEP_NETWORK_ROOT}:${GNUSTEP_SYSTEM_ROOT}" +endif + +set temp_path = "" +foreach dir ( `/bin/sh -c 'IFS=:; for i in ${GNUSTEP_PATHLIST}; do echo $i; done'` ) + set temp_path="${temp_path}${dir}/Tools:" + if ( "${GNUSTEP_FLATTENED}" == "" ) then + set temp_path="${temp_path}${dir}/Tools/${GNUSTEP_HOST_CPU}/${GNUSTEP_HOST_OS}/${LIBRARY_COMBO}:" + set temp_path="${temp_path}${dir}/Tools/${GNUSTEP_HOST_CPU}/${GNUSTEP_HOST_OS}:" + endif +end + +if ( ! ${?PATH} ) then + setenv PATH "${temp_path}" +else if ( { (echo "$PATH" | fgrep -v "$temp_path" >/dev/null) } ) then + setenv PATH "${temp_path}${PATH}" +endif +unset temp_path dir + +source "${GNUSTEP_MAKEFILES}/ld_lib_path.csh" + +# FIXME/TODO - use GNUSTEP_PATHLIST here +set gnustep_class_path="${GNUSTEP_USER_ROOT}/Library/Libraries/Java:${GNUSTEP_LOCAL_ROOT}/Library/Libraries/Java:${GNUSTEP_NETWORK_ROOT}/Library/Libraries/Java:${GNUSTEP_SYSTEM_ROOT}/Library/Libraries/Java" + +if ( ! ${?CLASSPATH} ) then + setenv CLASSPATH "${gnustep_class_path}" +else if ( { (echo "${CLASSPATH}" | fgrep -v "${gnustep_class_path}" >/dev/null) } ) then + setenv CLASSPATH "${CLASSPATH}:${gnustep_class_path}" +endif + +unset gnustep_class_path + +set gnustep_guile_path="${GNUSTEP_USER_ROOT}/Libraries/Guile:${GNUSTEP_LOCAL_ROOT}/Libraries/Guile:${GNUSTEP_NETWORK_ROOT}/Libraries/Guile:${GNUSTEP_SYSTEM_ROOT}/Libraries/Guile" + +if ( $?GUILE_LOAD_PATH == 0 ) then + setenv GUILE_LOAD_PATH "${gnustep_guile_path}" +else if ( { (echo "${GUILE_LOAD_PATH}" | fgrep -v "${gnustep_guile_path}" >/dev/null) } ) then + setenv GUILE_LOAD_PATH "${gnustep_guile_path}:${GUILE_LOAD_PATH}" +endif + +unset gnustep_guile_path + +# +# Perform any user initialization +# +if ( -e "$GNUSTEP_USER_ROOT/GNUstep.csh" ) then + source "$GNUSTEP_USER_ROOT/GNUstep.csh" +endif + diff --git a/gnustep-make/GNUstep.sh.in b/gnustep-make/GNUstep.sh.in new file mode 100755 index 00000000..640f7ed2 --- /dev/null +++ b/gnustep-make/GNUstep.sh.in @@ -0,0 +1,308 @@ +#! /bin/echo This file must be sourced inside (ba)sh using: . +# +# @configure_input@ +# +# Shell initialization for the GNUstep environment. +# +# Copyright (C) 1997-2002 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 <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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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 + set -y + GS_ZSH_NEED_TO_RESTORE_SET=yes + fi + +fi + +# +# Set the GNUstep system root and local root +# +GNUSTEP_ROOT=@GNUSTEP_ROOT@ +GNUSTEP_SYSTEM_ROOT=@prefix@ +GNUSTEP_FLATTENED=@GNUSTEP_FLATTENED@ +if [ -z "$LIBRARY_COMBO" ]; then + LIBRARY_COMBO=@ac_cv_library_combo@ +fi +export GNUSTEP_ROOT GNUSTEP_SYSTEM_ROOT GNUSTEP_FLATTENED LIBRARY_COMBO + +GNUSTEP_MAKEFILES=$GNUSTEP_SYSTEM_ROOT/@MAKEFILES_SUFFIX@ +export GNUSTEP_MAKEFILES + +GNUSTEP_LOCAL_ROOT=@GNUSTEP_LOCAL_ROOT@ +GNUSTEP_NETWORK_ROOT=@GNUSTEP_NETWORK_ROOT@ +export GNUSTEP_LOCAL_ROOT GNUSTEP_NETWORK_ROOT + +# 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 + +export GNUSTEP_HOST GNUSTEP_HOST_CPU GNUSTEP_HOST_VENDOR GNUSTEP_HOST_OS + +# +# Ask the user_home tool for the root path. +# +if [ -z "$GNUSTEP_FLATTENED" ]; then + GNUSTEP_USER_ROOT=`$GNUSTEP_MAKEFILES/$GNUSTEP_HOST_CPU/$GNUSTEP_HOST_OS/user_home user` +else + GNUSTEP_USER_ROOT=`$GNUSTEP_MAKEFILES/user_home user` +fi + +export GNUSTEP_USER_ROOT + +# +# GNUSTEP_PATHLIST is like an abstract path-like shell +# variable, which can be used to search the gnustep directories - and +# in these scripts, it is also used to set up other shell variables +# +if [ -z "$GNUSTEP_PATHLIST" ]; then + + # If we need to convert win32 paths, this is the time! + if [ -z "`echo $GNUSTEP_SYSTEM_ROOT | sed 's|^[a-zA-Z]:/.*$||'`" ]; then + G_U_R=`$GNUSTEP_MAKEFILES/fixpath.sh -u "$GNUSTEP_USER_ROOT"` + G_L_R=`$GNUSTEP_MAKEFILES/fixpath.sh -u "$GNUSTEP_LOCAL_ROOT"` + G_N_R=`$GNUSTEP_MAKEFILES/fixpath.sh -u "$GNUSTEP_NETWORK_ROOT"` + G_S_R=`$GNUSTEP_MAKEFILES/fixpath.sh -u "$GNUSTEP_SYSTEM_ROOT"` + else + G_U_R="$GNUSTEP_USER_ROOT" + G_L_R="$GNUSTEP_LOCAL_ROOT" + G_N_R="$GNUSTEP_NETWORK_ROOT" + G_S_R="$GNUSTEP_SYSTEM_ROOT" + fi + + # Now we basically want to build + # GNUSTEP_PATHLIST="$G_U_R:$G_L_R:$G_N_R:$G_S_R" + # but we want to remove duplicates. + + # Start with $G_U_R:$G_L_R - or $G_U_R if they are the same + if [ "$G_L_R" != "$G_U_R" ]; then + GNUSTEP_PATHLIST="$G_U_R:$G_L_R" + else + GNUSTEP_PATHLIST="$G_U_R" + fi + + # Now append $G_N_R but only if different from what already there + if [ "$G_N_R" != "$G_U_R" ]; then + if [ "$G_N_R" != "$G_L_R" ]; then + GNUSTEP_PATHLIST="$GNUSTEP_PATHLIST:$G_N_R" + fi + fi + + # Now append $G_S_R but only if different from what already there + if [ "$G_S_R" != "$G_U_R" ]; then + if [ "$G_S_R" != "$G_L_R" ]; then + if [ "$G_S_R" != "$G_N_R" ]; then + GNUSTEP_PATHLIST="$GNUSTEP_PATHLIST:$G_S_R" + fi + fi + fi + + unset G_U_R + unset G_L_R + unset G_N_R + unset G_S_R + + export GNUSTEP_PATHLIST +fi + +# +# Add path to Tools to PATH +# +tmp_IFS="$IFS" +IFS=: +temp_path= +for dir in $GNUSTEP_PATHLIST; do + + # Prepare the path_fragment + if [ -z "$GNUSTEP_FLATTENED" ]; then + path_fragment="$dir/Tools:$dir/Tools/${GNUSTEP_HOST_CPU}/${GNUSTEP_HOST_OS}/${LIBRARY_COMBO}:$dir/Tools/${GNUSTEP_HOST_CPU}/${GNUSTEP_HOST_OS}" + else + path_fragment="$dir/Tools" + fi + + # Add it to temp_path + if [ -z "$temp_path" ]; then + temp_path="$path_fragment" + else + temp_path="$temp_path:$path_fragment" + fi + + unset path_fragment + +done +IFS="$tmp_IFS" +unset tmp_IFS +unset dir +if [ -z "$PATH" ]; then + PATH="$temp_path" +else + if ( echo ${PATH}| grep -v "${temp_path}" >/dev/null ); then + PATH="${temp_path}:${PATH}" + fi +fi +unset temp_path +export PATH + +. $GNUSTEP_MAKEFILES/ld_lib_path.sh + +tmp_IFS="$IFS" +IFS=: +gnustep_class_path= +for dir in $GNUSTEP_PATHLIST; do + + if [ -z "$gnustep_class_path" ]; then + gnustep_class_path="$dir/Library/Libraries/Java" + else + gnustep_class_path="$gnustep_class_path:$dir/Library/Libraries/Java" + fi + +done +IFS="$tmp_IFS" +unset tmp_IFS +unset dir + +if [ -z "$CLASSPATH" ]; then + CLASSPATH="$gnustep_class_path" +else + if ( echo ${CLASSPATH}| grep -v "${gnustep_class_path}" >/dev/null ); then + CLASSPATH="$CLASSPATH:$gnustep_class_path" + fi +fi + +unset gnustep_class_path +export CLASSPATH + +# +# Setup path for loading guile modules too. +# +old_IFS="$IFS" +IFS=: +guile_paths= +for dir in $GNUSTEP_PATHLIST; do + + if [ -z "$guile_paths" ]; then + guile_paths="$dir/Library/Libraries/Guile" + else + guile_paths="$guile_paths:$dir/Library/Libraries/Guile" + fi + +done +IFS="$old_IFS" +unset old_IFS +unset dir + +if [ -z "$GUILE_LOAD_PATH" ]; then + GUILE_LOAD_PATH="$guile_paths" +else + if ( echo ${GUILE_LOAD_PATH}| grep -v "${guile_paths}" >/dev/null ); then + GUILE_LOAD_PATH="$guile_paths:$GUILE_LOAD_PATH" + fi +fi +export GUILE_LOAD_PATH +unset guile_paths + + +# +# Perform any user initialization +# +if [ -f "$GNUSTEP_USER_ROOT/GNUstep.sh" ]; then + . "$GNUSTEP_USER_ROOT/GNUstep.sh" +fi + +if [ -n "$GS_ZSH_NEED_TO_RESTORE_SET" ]; then + set +y +fi +# EOF \ No newline at end of file diff --git a/gnustep-make/GNUsteprc.in b/gnustep-make/GNUsteprc.in new file mode 100644 index 00000000..cb1fd20c --- /dev/null +++ b/gnustep-make/GNUsteprc.in @@ -0,0 +1,2 @@ +GNUSTEP_USER_ROOT=@GNUSTEP_USER_ROOT@ + diff --git a/gnustep-make/INSTALL b/gnustep-make/INSTALL new file mode 100644 index 00000000..df7f00ed --- /dev/null +++ b/gnustep-make/INSTALL @@ -0,0 +1,251 @@ +GNUstep makefile package installation +************************************* + +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. + + When you configure additional libraries, make sure you use the same +configuration options as with gstep-make. + + Also 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 +<http://www.gnustep.org>. + + Quick installation instructions: + + ./configure + make + make install + + To make and install the documentation: + + cd Documentation + make + make install + +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 a root directory. If the +GNUSTEP_SYSTEM_ROOT environment variable is set then configure will use +its value as the root directory. You can also specify the root +directory when you run configure with the prefix paramter; the +following command makes /usr/local/GNUstep the root directory: + + ./configure --prefix=/usr/local/GNUstep + + If you do not have the GNUSTEP_SYSTEM_ROOT environment variable set +and you do not specify a root directory when running configure, then +configure will use /usr/GNUstep as the default root directory. + + 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). + +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. + +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. + +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" + +Warnings for #import +-------------------- + +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 +presumable, this warning is no longer emitted when code is compiled. If +you are using an early compiler, you can supress these warnings by +adding `-Wno-import' to `CPPFLAGS' in the config.make file. + +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. + +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 + +Installation +============ + +After you configure the GNUstep makefile package, then you need to +compile the programs that come with the package. Currently there is +only a single C program which needs to be compiled; all of the other +files are either shell scripts or makefile fragments, so you can +compile and install the makefile package in one step with: + + make install + + After you have installed the GNUstep makefile package, there is still +some minor administration to be performed. Based upon whether you are +setting up the GNUstep environment for a single user or all users on +your system, perform the appropriate step below. + +Setting up the GNUstep environment +================================== + +Setting up the GNUstep environment for all users +------------------------------------------------ + +The GNUstep environment and thus usage of the makefile package is based +almost solely upon the GNUSTEP_SYSTEM_ROOT environment variable. So +essentially the setup involved is to make sure that the variable is +defined for all users. The GNUstep.sh file within the makefile package +contains all of the environment variable settings required, so you want +to call that shell. Some systems, like GNU/Linux have an +`/etc/profile.d' directory where scripts can be executed automatically. +Just copy GNUstep.sh to this directory for it to work. For other UNIX +systems, there might be a system wide script that everyone uses, such +as `/etc/bashrc', where you could add lines similar to these: + + # Setup for the GNUstep environment + . /usr/GNUstep/System/Library/Makefiles/GNUstep.sh + + This will source in the GNUstep.sh file and set the environment +variables; thus making them available for all users. Before executing +this script, you can setup a default path for scripts in the makefiles +package to use for searching for tools and apps by defining the +variable GNUSTEP_PATHLIST (and exporting it). By default, it's set to + + $GNUSTEP_USER_ROOT:$GNUSTEP_LOCAL_ROOT:$GNUSTEP_SYSTEM_ROOT + + which might look something like this: + + ~/GNUstep:/usr/GNUstep/Local:/usr/GNUstep/System + + when all is done. + + NB. This path is NOT used by GNUstep tools and applications +themselves ... they use a standard function +NSSearchPathForDirectoriesInDomains() to locate files instead. + +Setting up the GNUstep environment for a single user +---------------------------------------------------- + +The GNUstep environment and thus usage of the makefile package is based +almost solely upon the GNUSTEP_SYSTEM_ROOT environment variable. So +essentially the setup involved is to make sure that the variable is +defined for the user. The GNUstep.sh file within the makefile package +contains all of the environment variable settings required, so you want +to call that shell when the user logs in to the system. Most shells +have some file that you read upon login, for example the BASH shell +reads the .bash_profile file in the user's home directory. So you can +add the following lines to that file: + + # Setup for the GNUstep environment + if [ -f $GNUSTEP_SYSTEM_ROOT/Library/Makefiles/GNUstep.sh ]; then + . $GNUSTEP_SYSTEM_ROOT/Library/Makefiles/GNUstep.sh + fi + + This will source in the GNUstep.sh file and set the environment +variables; thus making them available for the user. + + The GNUstep.sh file will set up GNUSTEP_USER_ROOT to the GNUstep +subdirectory of the users home directory by default. This may be +overridden by a user providing a .GNUsteprc file in their home +directory. It may be overridden on a system-wide basis by supplying a +.GNUsteprc file in the GNUSTEP_SYSTEM_ROOT directory. + + # Set up to store GNUstep files directly in my home directory + GNUSTEP_USER_ROOT=~ + diff --git a/gnustep-make/Instance/Documentation/autogsdoc.make b/gnustep-make/Instance/Documentation/autogsdoc.make new file mode 100644 index 00000000..dff1b66f --- /dev/null +++ b/gnustep-make/Instance/Documentation/autogsdoc.make @@ -0,0 +1,78 @@ +# -*-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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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_DOCUMENTATION)/$(DOC_INSTALL_DIR)/$(GNUSTEP_INSTANCE); \ + $(TAR) cfX - $(GNUSTEP_MAKEFILES)/tar-exclude-list $(GNUSTEP_INSTANCE) | \ + (cd $(GNUSTEP_DOCUMENTATION)/$(DOC_INSTALL_DIR); $(TAR) xf -)$(END_ECHO) +ifneq ($(CHOWN_TO),) + $(ECHO_CHOWNING)$(CHOWN) -R $(CHOWN_TO) \ + $(GNUSTEP_DOCUMENTATION)/$(DOC_INSTALL_DIR)/$(GNUSTEP_INSTANCE)$(END_ECHO) +endif + +internal-doc-uninstall_:: + -$(ECHO_UNINSTALLING)rm -f $(GNUSTEP_DOCUMENTATION)/$(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 diff --git a/gnustep-make/Instance/Documentation/gsdoc.make b/gnustep-make/Instance/Documentation/gsdoc.make new file mode 100644 index 00000000..578a5f0f --- /dev/null +++ b/gnustep-make/Instance/Documentation/gsdoc.make @@ -0,0 +1,43 @@ +# -*-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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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_DOCUMENTATION)/$(DOC_INSTALL_DIR)/$(GNUSTEP_INSTANCE) + $(ECHO_INSTALLING)$(INSTALL_DATA) $(GSDOC_OBJECT_FILES) \ + $(GNUSTEP_DOCUMENTATION)/$(DOC_INSTALL_DIR)/$(GNUSTEP_INSTANCE)$(END_ECHO) +internal-doc-uninstall_:: + $(ECHO_UNINSTALLING)rm -f \ + $(addprefix $(GNUSTEP_DOCUMENTATION)/$(DOC_INSTALL_DIR)/\ + $(GNUSTEP_INSTANCE)/,$(GSDOC_OBJECT_FILES))$(END_ECHO) + +internal-doc-clean:: + -$(ECHO_NOTHING)rm -f $(GSDOC_OBJECT_FILES)$(END_ECHO) diff --git a/gnustep-make/Instance/Documentation/install_files.make b/gnustep-make/Instance/Documentation/install_files.make new file mode 100644 index 00000000..489bc5d7 --- /dev/null +++ b/gnustep-make/Instance/Documentation/install_files.make @@ -0,0 +1,36 @@ +# -*-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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +internal-doc-install_:: + $(ECHO_INSTALLING)for file in $($(GNUSTEP_INSTANCE)_INSTALL_FILES) __done; do \ + if [ $$file != __done ]; then \ + $(INSTALL_DATA) $$file \ + $(GNUSTEP_DOCUMENTATION)/$(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_DOCUMENTATION)/$(DOC_INSTALL_DIR)/$$file ; \ + fi; \ + done$(END_ECHO) diff --git a/gnustep-make/Instance/Documentation/javadoc.make b/gnustep-make/Instance/Documentation/javadoc.make new file mode 100644 index 00000000..25fa4a9b --- /dev/null +++ b/gnustep-make/Instance/Documentation/javadoc.make @@ -0,0 +1,86 @@ +# -*-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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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 + +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 + +ifneq ($(JAVADOC_BUILD_ALWAYS),YES) # Build only once + +internal-doc-all_:: $(GNUSTEP_INSTANCE)/index.html + +$(GNUSTEP_INSTANCE)/index.html: + $(ECHO_NOTHING)$(MKDIRS) $(GNUSTEP_INSTANCE); \ + $(JAVADOC) $(ALL_JAVADOCFLAGS) $(JAVADOC_FILES) -d $(GNUSTEP_INSTANCE)$(END_ECHO) + +else # Build always + +internal-doc-all_:: generate-javadoc + +generate-javadoc: + $(ECHO_NOTHING)$(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_DOCUMENTATION)/$(DOC_INSTALL_DIR)/$(GNUSTEP_INSTANCE); \ + $(TAR) cfX - $(GNUSTEP_MAKEFILES)/tar-exclude-list $(GNUSTEP_INSTANCE) | \ + (cd $(GNUSTEP_DOCUMENTATION)/$(DOC_INSTALL_DIR); $(TAR) xf -)$(END_ECHO) +ifneq ($(CHOWN_TO),) + $(ECHO_CHOWNING)$(CHOWN) -R $(CHOWN_TO) \ + $(GNUSTEP_DOCUMENTATION)/$(DOC_INSTALL_DIR)/$(GNUSTEP_INSTANCE)$(END_ECHO) +endif + +internal-doc-uninstall_:: + -$(ECHO_UNINSTALLING)rm -f $(GNUSTEP_DOCUMENTATION)/$(DOC_INSTALL_DIR)/$(GNUSTEP_INSTANCE)$(END_ECHO) + +endif # JAVADOC_FILES + +internal-doc-clean:: + -$(ECHO_NOTHING)rm -Rf $(GNUSTEP_INSTANCE)$(END_ECHO) + +internal-doc-distclean:: + diff --git a/gnustep-make/Instance/Documentation/latex.make b/gnustep-make/Instance/Documentation/latex.make new file mode 100644 index 00000000..ba8bedbd --- /dev/null +++ b/gnustep-make/Instance/Documentation/latex.make @@ -0,0 +1,98 @@ +# -*-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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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_DOCUMENTATION)/$(DOC_INSTALL_DIR) +internal-doc-uninstall_:: + $(ECHO_UNINSTALLING)rm -f \ + $(GNUSTEP_DOCUMENTATION)/$(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' +# +# NB: you may set LATEX2HTML on the command line if the following doesn't work +LATEX2HTML = $(shell which latex2html | awk '{print $$1}' | sed -e 's/which://') + +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_DOCUMENTATION)/$(DOC_INSTALL_DIR) + $(INSTALL_DATA) $(GNUSTEP_INSTANCE)/*.css \ + $(GNUSTEP_DOCUMENTATION)/$(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_DOCUMENTATION)/$(DOC_INSTALL_DIR)/*.html; \ + rm -f $(GNUSTEP_DOCUMENTATION)/$(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 diff --git a/gnustep-make/Instance/Documentation/texi.make b/gnustep-make/Instance/Documentation/texi.make new file mode 100644 index 00000000..a9c4dc44 --- /dev/null +++ b/gnustep-make/Instance/Documentation/texi.make @@ -0,0 +1,156 @@ +# -*-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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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 = texi2html +endif +ifeq ($(GNUSTEP_TEXI2HTML_FLAGS),) + GNUSTEP_TEXI2HTML_FLAGS = -split_chapter -expandinfo +endif + +internal-doc-all_:: $(GNUSTEP_INSTANCE).info \ + $(GNUSTEP_INSTANCE).pdf \ + $(GNUSTEP_INSTANCE)_toc.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 $@ + +$(GNUSTEP_INSTANCE)_toc.html: $(TEXI_FILES) + -$(GNUSTEP_TEXI2HTML) $(GNUSTEP_TEXI2HTML_FLAGS) $(ADDITIONAL_TEXI2HTML_FLAGS) \ + $(GNUSTEP_INSTANCE).texi + +$(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) + +# NB: Only install doc files if they have been generated + +# We install all info files in the same directory, which is +# GNUSTEP_DOCUMENTATION_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_DOCUMENTATION_INFO) + if [ -f $(GNUSTEP_INSTANCE).pdf ]; then \ + $(INSTALL_DATA) $(GNUSTEP_INSTANCE).pdf \ + $(GNUSTEP_DOCUMENTATION)/$(DOC_INSTALL_DIR); \ + fi + if [ -f $(GNUSTEP_INSTANCE).info ]; then \ + $(INSTALL_DATA) $(GNUSTEP_INSTANCE).info* $(GNUSTEP_DOCUMENTATION_INFO); \ + fi + if [ -f $(GNUSTEP_INSTANCE)_toc.html ]; then \ + $(INSTALL_DATA) $(GNUSTEP_INSTANCE)_*.html \ + $(GNUSTEP_DOCUMENTATION)/$(DOC_INSTALL_DIR); \ + fi + if [ -f $(GNUSTEP_INSTANCE).html ]; then \ + $(INSTALL_DATA) $(GNUSTEP_INSTANCE).html \ + $(GNUSTEP_DOCUMENTATION)/$(DOC_INSTALL_DIR); \ + fi + +$(GNUSTEP_DOCUMENTATION_INFO): + $(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO) + +internal-doc-uninstall_:: + rm -f \ + $(GNUSTEP_DOCUMENTATION)/$(DOC_INSTALL_DIR)/$(GNUSTEP_INSTANCE).pdf + rm -f \ + $(GNUSTEP_DOCUMENTATION_INFO)/$(GNUSTEP_INSTANCE).info* + rm -f \ + $(GNUSTEP_DOCUMENTATION)/$(DOC_INSTALL_DIR)/$(GNUSTEP_INSTANCE)_*.html + rm -f \ + $(GNUSTEP_DOCUMENTATION)/$(DOC_INSTALL_DIR)/$(GNUSTEP_INSTANCE).html + diff --git a/gnustep-make/Instance/README b/gnustep-make/Instance/README new file mode 100644 index 00000000..cb8f92e7 --- /dev/null +++ b/gnustep-make/Instance/README @@ -0,0 +1,23 @@ +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. diff --git a/gnustep-make/Instance/Shared/README b/gnustep-make/Instance/Shared/README new file mode 100644 index 00000000..15430557 --- /dev/null +++ b/gnustep-make/Instance/Shared/README @@ -0,0 +1,51 @@ +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. diff --git a/gnustep-make/Instance/Shared/bundle.make b/gnustep-make/Instance/Shared/bundle.make new file mode 100644 index 00000000..d87074ca --- /dev/null +++ b/gnustep-make/Instance/Shared/bundle.make @@ -0,0 +1,394 @@ +# -*-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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# +# input variables: +# + +# +# GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH : the path to the local +# resource bundle (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_MAIN_PATH : the path to the top level bundle +# directory to install, relative to GNUSTEP_BUILD_DIR during build +# (and installation dir when installed). For example, for a normal +# bundle it would be $(BUNDLE_DIR_NAME); for an application it would +# be $(APP_DIR_NAME); for a library or a tool, +# Resources/$(GNUSTEP_INSTANCE). +# +# GNUSTEP_SHARED_BUNDLE_INSTALL_DIR : the path to the dir +# in which the bundle is to be installed. For example, for a normal +# bundle it would be $(BUNDLE_INSTALL_DIR); for an application it would +# be $(APP_INSTALL_DIR); for a library or tool, $(LIBRARY_INSTALL_DIR), +# or $(TOOL_INSTALL_DIR). +# +# $(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)_LANGUAGES : the list of languages of localized resource +# files +# +# $(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_DIR) - 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} +# + +RESOURCE_FILES = $(strip $($(GNUSTEP_INSTANCE)_RESOURCE_FILES) \ + $($(GNUSTEP_INSTANCE)_COMPONENTS)) +RESOURCE_DIRS = $(strip $($(GNUSTEP_INSTANCE)_RESOURCE_DIRS)) +LANGUAGES = $(strip $($(GNUSTEP_INSTANCE)_LANGUAGES)) +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 + +ifeq ($(LANGUAGES),) + LANGUAGES = English +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. + +shared-instance-bundle-all: $(GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH) \ + $(FULL_RESOURCE_DIRS) \ + shared-instance-bundle-all-gsweb +ifneq ($(RESOURCE_FILES),) + $(ECHO_COPYING_RESOURCES)for f in $(RESOURCE_FILES); do \ + if [ -f $$f -o -d $$f ]; then \ + cp -r $$f $(GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH)/; \ + else \ + echo "Warning: $$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 $$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: $$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 $$l.lproj ]; then \ + $(MKDIRS) $(GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH)/$$l.lproj; \ + for f in $(LOCALIZED_RESOURCE_FILES); do \ + if [ -f $$l.lproj/$$f -o -d $$l.lproj/$$f ]; then \ + cp -r $$l.lproj/$$f \ + $(GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH)/$$l.lproj/$$f; \ + else \ + echo "Warning: $$l.lproj/$$f not found - ignoring"; \ + fi; \ + done; \ + else \ + echo "Warning: $$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 -r $$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 -r ./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 -r ./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_DIR) + $(ECHO_INSTALLING_BUNDLE)rm -rf $(GNUSTEP_SHARED_BUNDLE_INSTALL_DIR)/$(GNUSTEP_SHARED_BUNDLE_MAIN_PATH); \ + (cd $(GNUSTEP_BUILD_DIR); $(TAR) chfX - $(GNUSTEP_MAKEFILES)/tar-exclude-list $(GNUSTEP_SHARED_BUNDLE_MAIN_PATH)) \ + | (cd $(GNUSTEP_SHARED_BUNDLE_INSTALL_DIR); $(TAR) xf -)$(END_ECHO) +ifneq ($(CHOWN_TO),) + $(ECHO_CHOWNING)$(CHOWN) -R $(CHOWN_TO) \ + $(GNUSTEP_SHARED_BUNDLE_INSTALL_DIR)/$(GNUSTEP_SHARED_BUNDLE_MAIN_PATH)$(END_ECHO) +endif + +shared-instance-bundle-copy_into_dir:: + $(ECHO_COPYING_BUNDLE_INTO_DIR)rm -rf $(COPY_INTO_DIR)/$(GNUSTEP_SHARED_BUNDLE_MAIN_PATH); \ + (cd $(GNUSTEP_BUILD_DIR); $(TAR) chfX - $(GNUSTEP_MAKEFILES)/tar-exclude-list $(GNUSTEP_SHARED_BUNDLE_MAIN_PATH)) \ + | (cd $(COPY_INTO_DIR); $(TAR) xf -)$(END_ECHO) + +shared-instance-bundle-uninstall:: + $(ECHO_NOTHING)cd $(GNUSTEP_SHARED_BUNDLE_INSTALL_DIR); rm -rf $(GNUSTEP_SHARED_BUNDLE_MAIN_PATH)$(END_ECHO) diff --git a/gnustep-make/Instance/Shared/headers.make b/gnustep-make/Instance/Shared/headers.make new file mode 100644 index 00000000..9a619d50 --- /dev/null +++ b/gnustep-make/Instance/Shared/headers.make @@ -0,0 +1,125 @@ +# +# Shared/headers.make +# +# Makefile fragment with rules to install header 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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 + +ifeq ($(HEADER_FILES),) + +shared-instance-headers-install: + +shared-instance-headers-uninstall: + +else # we have some HEADER_FILES + +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 + +# +# 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: $(GNUSTEP_HEADERS)/$(HEADER_FILES_INSTALL_DIR) + $(ECHO_INSTALLING_HEADERS)for file in $(HEADER_FILES) __done; do \ + if [ $$file != __done ]; then \ + $(INSTALL_DATA) $(HEADER_FILES_DIR)/$$file \ + $(GNUSTEP_HEADERS)/$(HEADER_FILES_INSTALL_DIR)/$$file; \ + 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: \ + $(GNUSTEP_HEADERS)/$(HEADER_FILES_INSTALL_DIR) \ + $(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 + +$(GNUSTEP_HEADERS)/$(HEADER_FILES_INSTALL_DIR): + $(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO) + + +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) + +# TODO - during uninstall, it would be pretty to remove +# $(GNUSTEP_HEADERS)/$(HEADER_FILES_INSTALL_DIR) if it's empty. + +endif # HEADER_FILES = '' diff --git a/gnustep-make/Instance/Shared/java.make b/gnustep-make/Instance/Shared/java.make new file mode 100644 index 00000000..8e4c1706 --- /dev/null +++ b/gnustep-make/Instance/Shared/java.make @@ -0,0 +1,140 @@ +# +# Shared/java.make +# +# Makefile fragment with rules to compile and install java files, +# with associated property files. +# +# Copyright (C) 2000, 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# +# input variables: +# +# JAVA_OBJ_FILES, JAVA_JNI_OBJ_FILES, SUBPROJECT_OBJ_FILES : +# the list of object files (built by Instance/rules.make) +# +# $(GNUSTEP_INSTANCE)_JAVA_PROPERTIES_FILES : the list of .properties files +# to install together with the .java files +# +# 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-clean + + +shared-instance-java-all: $(JAVA_OBJ_FILES) \ + $(JAVA_JNI_OBJ_FILES) \ + $(SUBPROJECT_OBJ_FILES) + +# 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) + +shared-instance-java-install: shared-instance-java-install-dirs +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 + +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_JNI_OBJ_FILES)$(END_ECHO) + +shared-instance-java-uninstall: +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 diff --git a/gnustep-make/Instance/Shared/stamp-string.make b/gnustep-make/Instance/Shared/stamp-string.make new file mode 100644 index 00000000..0ccee7ac --- /dev/null +++ b/gnustep-make/Instance/Shared/stamp-string.make @@ -0,0 +1,136 @@ +# -*-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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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_NOTHING)echo "OLD_GNUSTEP_STAMP_ASTRING = $(GNUSTEP_STAMP_ASTRING)" > $(GNUSTEP_STAMP_FILE)$(END_ECHO) diff --git a/gnustep-make/Instance/Shared/strings.make b/gnustep-make/Instance/Shared/strings.make new file mode 100644 index 00000000..2f1f46f5 --- /dev/null +++ b/gnustep-make/Instance/Shared/strings.make @@ -0,0 +1,79 @@ +# +# Shared/strings.make +# +# Makefile fragment with rules to run make_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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# +# input variables: +# +# $(GNUSTEP_INSTANCE)_LANGUAGES: the list of 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)),) + Str_STRINGS_FILES = $($(GNUSTEP_INSTANCE)_STRINGS_FILES) +else + + Str1_STRINGS_FILES = \ + $($(GNUSTEP_INSTANCE)_OBJC_FILES) \ + $($(GNUSTEP_INSTANCE)_C_FILES) \ + $(addprefix $($(GNUSTEP_INSTANCE)_HEADER_FILES_DIR),$($(GNUSTEP_INSTANCE)_HEADER_FILES)) + + Str_STRINGS_FILES = $(strip $(Str1_STRINGS_FILES)) + +endif + +.PHONY: internal-$(GNUSTEP_TYPE)-strings + +ifeq ($(Str_STRINGS_FILES),) + +internal-$(GNUSTEP_TYPE)-strings:: + $(ALWAYS_ECHO_NO_FILES) + +else # we have some STRINGS_FILES + +Str_LANGUAGES = $(strip $($(GNUSTEP_INSTANCE)_LANGUAGES)) + +Str_MAKE_STRINGS_OPTIONS = $(strip $($(GNUSTEP_INSTANCE)_MAKE_STRINGS_OPTIONS)) +ifeq ($(Str_MAKE_STRINGS_OPTIONS),) + Str_MAKE_STRINGS_OPTIONS = $(MAKE_STRINGS_OPTIONS) +endif + +internal-$(GNUSTEP_TYPE)-strings:: +ifeq ($(Str_LANGUAGES),) + $(ALWAYS_ECHO_NO_LANGUAGES) +else + $(ECHO_MAKING_STRINGS)make_strings $(Str_MAKE_STRINGS_OPTIONS) \ + -L "$(Str_LANGUAGES)" \ + $(Str_STRINGS_FILES)$(END_ECHO) +endif + +endif # Str_STRING_FILES = '' diff --git a/gnustep-make/Instance/application.make b/gnustep-make/Instance/application.make new file mode 100644 index 00000000..4965301b --- /dev/null +++ b/gnustep-make/Instance/application.make @@ -0,0 +1,286 @@ +# -*-makefile-*- +# application.make +# +# Instance 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# +# 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). +# 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 application name +# + +.PHONY: internal-app-all_ \ + internal-app-install_ \ + internal-app-uninstall_ \ + internal-app-copy_into_dir \ + internal-application-build-template + +# +# 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 + +ALL_GUI_LIBS = \ + $(shell $(WHICH_LIB_SCRIPT) \ + $(ALL_LIB_DIRS) \ + $(ADDITIONAL_GUI_LIBS) $(AUXILIARY_GUI_LIBS) $(GUI_LIBS) \ + $(BACKEND_LIBS) $(ADDITIONAL_TOOL_LIBS) $(AUXILIARY_TOOL_LIBS) \ + $(FND_LIBS) $(ADDITIONAL_OBJC_LIBS) $(AUXILIARY_OBJC_LIBS) $(OBJC_LIBS) \ + $(SYSTEM_LIBS) $(TARGET_SYSTEM_LIBS) \ + debug=$(debug) profile=$(profile) shared=$(shared) \ + libext=$(LIBEXT) shared_libext=$(SHARED_LIBEXT)) + +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_MAIN_PATH = $(APP_DIR_NAME) +GNUSTEP_SHARED_BUNDLE_INSTALL_DIR = $(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 +# + +$(APP_FILE): $(OBJ_FILES_TO_LINK) + $(ECHO_LINKING)$(LD) $(ALL_LDFLAGS) -o $(LDOUT)$@ $(OBJ_FILES_TO_LINK)\ + $(ALL_GUI_LIBS)$(END_ECHO) +ifneq ($(FOUNDATION_LIB), apple) + $(ECHO_NOTHING)$(TRANSFORM_PATHS_SCRIPT) $(subst -L,,$(ALL_LIB_DIRS)) \ + >$(APP_DIR)/$(GNUSTEP_TARGET_LDIR)/library_paths.openapp$(END_ECHO) +endif + +# +# Compilation targets +# + +ifeq ($(FOUNDATION_LIB), apple) +internal-app-all_:: $(GNUSTEP_OBJ_DIR) \ + $(APP_DIR)/Contents/MacOS \ + $(APP_FILE) \ + shared-instance-bundle-all \ + $(APP_INFO_PLIST_FILE) + +$(APP_DIR)/Contents/MacOS: + $(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO) + +else + +internal-app-all_:: $(GNUSTEP_OBJ_DIR) \ + $(APP_DIR)/$(GNUSTEP_TARGET_LDIR) \ + $(APP_FILE) \ + internal-application-build-template \ + $(APP_DIR)/Resources \ + $(APP_INFO_PLIST_FILE) \ + $(APP_DIR)/Resources/$(GNUSTEP_INSTANCE).desktop \ + shared-instance-bundle-all + +$(APP_DIR)/$(GNUSTEP_TARGET_LDIR): + $(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO) + +ifeq ($(GNUSTEP_FLATTENED),) +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) +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 iff +# GNUSTEP_STAMP_STRING changes. +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 + +# FIXME: Missing dependency on $(GNUSTEP_INSTANCE)Info.plist files + +# 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 add +# xxx_PREPROCESS_INFO_PLIST = yes to your GNUmakefile, and provide a +# xxxInfo.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. +# + +# The following is really a hack, but very elegant. 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 - but we don't have a solution to +# this problem at the moment, so we don't depend on it. Adding +# xxx_PREPROCESS_INFO_PLIST = yes at the moment just turns on the +# dependency on xxxInfo.plist, which is then built from xxxInfo.cplist +# using the %.plist: %.cplist rules. +ifeq ($($(GNUSTEP_INSTANCE)_PREPROCESS_INFO_PLIST), yes) + GNUSTEP_PLIST_DEPEND = $(GNUSTEP_INSTANCE)Info.plist +else + GNUSTEP_PLIST_DEPEND = +endif + +# 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_INSTANCE)Info.plist" ]; then \ + sed '1d' "$(GNUSTEP_INSTANCE)Info.plist"; \ + 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_INSTANCE)Info.plist" ]; then \ + plmerge $@ "$(GNUSTEP_INSTANCE)Info.plist"; \ + fi$(END_ECHO) +endif + +$(APP_DIR)/Resources/$(GNUSTEP_INSTANCE).desktop: \ + $(APP_DIR)/Resources/Info-gnustep.plist + $(ECHO_CREATING)pl2link $^ $(APP_DIR)/Resources/$(GNUSTEP_INSTANCE).desktop$(END_ECHO) + + +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 +ifeq ($(strip),yes) + $(ECHO_STRIPPING)$(STRIP) $(APP_INSTALL_DIR)/$(APP_FILE_NAME)$(END_ECHO) +endif + +internal-app-uninstall_:: shared-instance-bundle-uninstall + +include $(GNUSTEP_MAKEFILES)/Instance/Shared/strings.make diff --git a/gnustep-make/Instance/bundle.make b/gnustep-make/Instance/bundle.make new file mode 100644 index 00000000..3c8db393 --- /dev/null +++ b/gnustep-make/Instance/bundle.make @@ -0,0 +1,319 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +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 +# + +.PHONY: internal-bundle-all_ \ + internal-bundle-install_ \ + internal-bundle-uninstall_ \ + internal-bundle-copy_into_dir \ + build-bundle + +# 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 ($(WITH_DLL), yes) + LINK_BUNDLE_AGAINST_ALL_LIBS = yes +endif + +# On Apple, two-level namespaces require all symbols in bundles +# to be resolved at link time. +ifeq ($(FOUNDATION_LIB), apple) + LINK_BUNDLE_AGAINST_ALL_LIBS = yes +endif + +ifeq ($(LINK_BUNDLE_AGAINST_ALL_LIBS), yes) +BUNDLE_LIBS += $(ADDITIONAL_GUI_LIBS) $(AUXILIARY_GUI_LIBS) $(BACKEND_LIBS) \ + $(GUI_LIBS) $(ADDITIONAL_TOOL_LIBS) $(AUXILIARY_TOOL_LIBS) \ + $(FND_LIBS) $(ADDITIONAL_OBJC_LIBS) $(AUXILIARY_OBJC_LIBS) $(OBJC_LIBS) \ + $(SYSTEM_LIBS) $(TARGET_SYSTEM_LIBS) +endif + +ALL_BUNDLE_LIBS = \ + $(shell $(WHICH_LIB_SCRIPT) \ + $(ALL_LIB_DIRS) \ + $(BUNDLE_LIBS) \ + debug=$(debug) profile=$(profile) shared=$(shared) \ + libext=$(LIBEXT) shared_libext=$(SHARED_LIBEXT)) + +ifeq ($(WITH_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_DIR) build-bundle + +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_MAIN_PATH = $(BUNDLE_DIR_NAME) +GNUSTEP_SHARED_BUNDLE_INSTALL_DIR = $(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) \ + $(BUNDLE_FILE) \ + $(BUNDLE_INFO_PLIST_FILE) \ + shared-instance-bundle-all +else +build-bundle:: $(BUNDLE_DIR)/Contents/MacOS \ + $(BUNDLE_FILE) \ + $(BUNDLE_INFO_PLIST_FILE) \ + shared-instance-bundle-all +endif + +# The rule to build $(BUNDLE_DIR)/Resources is already provided +# by Instance/Shared/bundle.make + +$(BUNDLE_DIR)/$(GNUSTEP_TARGET_LDIR): + $(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO) + +ifeq ($(WITH_DLL),yes) + +$(BUNDLE_FILE) : $(OBJ_FILES_TO_LINK) + $(ECHO_LINKING)$(DLLWRAP) --driver-name $(CC) \ + -o $(LDOUT)$(BUNDLE_FILE) \ + $(OBJ_FILES_TO_LINK) \ + $(ALL_LDFLAGS) \ + $(ALL_BUNDLE_LIBS)$(END_ECHO) + +else # WITH_DLL + +$(BUNDLE_FILE) : $(OBJ_FILES_TO_LINK) + $(ECHO_LINKING)$(BUNDLE_LD) $(BUNDLE_LDFLAGS) $(ALL_LDFLAGS) \ + -o $(LDOUT)$(BUNDLE_FILE) \ + $(OBJ_FILES_TO_LINK) \ + $(ALL_BUNDLE_LIBS)$(END_ECHO) + +endif # WITH_DLL + +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:: $(BUNDLE_INFO_PLIST_FILE) shared-instance-bundle-all +endif # OBJ_FILES_TO_LINK + +MAIN_MODEL_FILE = $(strip $(subst .gmodel,,$(subst .gorm,,$(subst .nib,,$($(GNUSTEP_INSTANCE)_MAIN_MODEL_FILE))))) + +# 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: $(BUNDLE_DIR)/Contents \ + $(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: $(BUNDLE_DIR)/Contents \ + $(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: $(BUNDLE_DIR)/Resources \ + $(GNUSTEP_STAMP_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_INSTANCE)Info.plist" ]; then \ + plmerge $@ $(GNUSTEP_INSTANCE)Info.plist; \ + fi$(END_ECHO) +else # following code for when no object file is built +# GNUstep bundles +$(BUNDLE_DIR)/Resources/Info-gnustep.plist: $(BUNDLE_DIR)/Resources \ + $(GNUSTEP_STAMP_DEPEND) + $(ECHO_CREATING)(echo "{"; echo ' NOTE = "Automatically generated, do not edit!";'; \ + echo " NSMainNibFile = \"$(MAIN_MODEL_FILE)\";"; \ + echo "}") >$@$(END_ECHO) + $(ECHO_NOTHING)if [ -r "$(GNUSTEP_INSTANCE)Info.plist" ]; then \ + plmerge $@ $(GNUSTEP_INSTANCE)Info.plist; \ + 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 + diff --git a/gnustep-make/Instance/clibrary.make b/gnustep-make/Instance/clibrary.make new file mode 100644 index 00000000..a98fa401 --- /dev/null +++ b/gnustep-make/Instance/clibrary.make @@ -0,0 +1,71 @@ +# +# Instance/clibrary.make +# +# Instance Makefile rules to build C 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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 + diff --git a/gnustep-make/Instance/ctool.make b/gnustep-make/Instance/ctool.make new file mode 100644 index 00000000..71d2dfb0 --- /dev/null +++ b/gnustep-make/Instance/ctool.make @@ -0,0 +1,80 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# +# The name of the ctools is in the CTOOL_NAME variable. +# +# xxx We need to prefix the target name when cross-compiling +# + +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_ + +ALL_TOOL_LIBS = \ + $(shell $(WHICH_LIB_SCRIPT) \ + $(ALL_LIB_DIRS) \ + $(ADDITIONAL_TOOL_LIBS) $(AUXILIARY_TOOL_LIBS) \ + $(TARGET_SYSTEM_LIBS) \ + debug=$(debug) profile=$(profile) shared=$(shared) \ + libext=$(LIBEXT) shared_libext=$(SHARED_LIBEXT)) + +# +# Compilation targets +# +internal-ctool-all_:: $(GNUSTEP_OBJ_DIR) \ + $(GNUSTEP_OBJ_DIR)/$(GNUSTEP_INSTANCE)$(EXEEXT) + +$(GNUSTEP_OBJ_DIR)/$(GNUSTEP_INSTANCE)$(EXEEXT): $(C_OBJ_FILES) \ + $(SUBPROJECT_OBJ_FILES) + $(ECHO_LINKING)$(LD) $(ALL_LDFLAGS) -o $(LDOUT)$@ \ + $(C_OBJ_FILES) $(SUBPROJECT_OBJ_FILES) \ + $(ALL_TOOL_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 + diff --git a/gnustep-make/Instance/documentation.make b/gnustep-make/Instance/documentation.make new file mode 100644 index 00000000..8161a150 --- /dev/null +++ b/gnustep-make/Instance/documentation.make @@ -0,0 +1,154 @@ +# -*-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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +ifeq ($(RULES_MAKE_LOADED),) + include $(GNUSTEP_MAKEFILES)/rules.make +endif + +# +# 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_DOCUMENTATION/DOC_INSTALL_DIR is built before their targets +# are. FIXME: Maybe this dependency should be in the submakefiles +# themselves. +internal-doc-install_:: $(GNUSTEP_DOCUMENTATION)/$(DOC_INSTALL_DIR) + +$(GNUSTEP_DOCUMENTATION)/$(DOC_INSTALL_DIR): + $(ECHO_CREATING)$(MKINSTALLDIRS) $(GNUSTEP_DOCUMENTATION)/$(DOC_INSTALL_DIR)$(END_ECHO) + +$(GNUSTEP_DOCUMENTATION)/$(DOC_INSTALL_DIR)/$(GNUSTEP_INSTANCE): + $(ECHO_CREATING)$(MKINSTALLDIRS) $(GNUSTEP_DOCUMENTATION)/$(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 + +# +# textdoc targets - these are meant to be used with texi.make ... maybe +# they should be moved in there +# +internal-textdoc-install_:: $(GNUSTEP_DOCUMENTATION)/$(DOC_INSTALL_DIR) + $(ECHO_NOTHING)$(INSTALL_DATA) $(GNUSTEP_INSTANCE) \ + $(GNUSTEP_DOCUMENTATION)/$(DOC_INSTALL_DIR)$(END_ECHO) + +internal-textdoc-uninstall_:: + $(ECHO_UNINSTALLING)rm -f \ + $(GNUSTEP_DOCUMENTATION)/$(DOC_INSTALL_DIR)/$(GNUSTEP_INSTANCE)$(END_ECHO) + +internal-textdoc-clean:: + $(ECHO_NOTHING) rm -f $(GNUSTEP_INSTANCE) $(END_ECHO) + +internal-textdoc-distclean:: + diff --git a/gnustep-make/Instance/framework.make b/gnustep-make/Instance/framework.make new file mode 100644 index 00000000..c756e4ff --- /dev/null +++ b/gnustep-make/Instance/framework.make @@ -0,0 +1,622 @@ +# -*-makefile-*- +# Instance/framework.make +# +# Instance Makefile rules to build GNUstep-based frameworks. +# +# Copyright (C) 2000, 2001, 2002, 2003, 2004 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +ifeq ($(RULES_MAKE_LOADED),) +include $(GNUSTEP_MAKEFILES)/rules.make +endif + +# FIXME - missing .PHONY declaration + +# 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 "A") +# 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") +# +# 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 :-). +# + +# Warn about obsolete syntax +ifneq ($(CURRENT_VERSION_NAME),) + $(warning CURRENT_VERSION_NAME is deprecated because it doesnt allow multiple frameworks with different versions to be built from warning the same GNUmakefile! Please replace it with XXX_CURRENT_VERSION_NAME) +endif + +# 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 = A +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 + +# Set VERSION from xxx_VERSION +ifneq ($($(GNUSTEP_INSTANCE)_VERSION),) + VERSION = $($(GNUSTEP_INSTANCE)_VERSION) +endif + +ifeq ($(VERSION),) + VERSION = 0.0.1 +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) +FRAMEWORK_VERSION_DIR_NAME = $(FRAMEWORK_DIR_NAME)/Versions/$(CURRENT_VERSION_NAME) +FRAMEWORK_VERSION_DIR = $(GNUSTEP_BUILD_DIR)/$(FRAMEWORK_VERSION_DIR_NAME) + +# This is not doing much at the moment, but at least is defining +# HEADER_FILES, HEADER_FILES_DIR and HEADER_FILES_INSTALL_DIR in the +# standard way. NB: If HEADER_FILES is empty, HEADER_FILES_DIR and +# HEADER_FILES_INSTALL_DIR are going to be undefined! +include $(GNUSTEP_MAKEFILES)/Instance/Shared/headers.make + +# FIXME - do we really want to link the framework against all libs ? +# That easily makes problems when the framework is loaded as a bundle, +# doesn't it ? +ALL_FRAMEWORK_LIBS = \ + $(shell $(WHICH_LIB_SCRIPT) \ + $(ALL_LIB_DIRS) \ + $(FRAMEWORK_LIBS) \ + debug=$(debug) profile=$(profile) shared=$(shared) \ + libext=$(LIBEXT) shared_libext=$(SHARED_LIBEXT)) + +INTERNAL_LIBRARIES_DEPEND_UPON = \ + $(shell $(WHICH_LIB_SCRIPT) \ + $(ALL_LIB_DIRS) \ + $(LIBRARIES_DEPEND_UPON) \ + debug=$(debug) profile=$(profile) shared=$(shared) \ + libext=$(LIBEXT) shared_libext=$(SHARED_LIBEXT)) + +ifeq ($(FOUNDATION_LIB),gnu) + # On GNUstep, build our dummy class to store information which + # gnustep-base can find at run time + DUMMY_FRAMEWORK = NSFramework_$(GNUSTEP_INSTANCE) + DUMMY_FRAMEWORK_FILE = $(DERIVED_SOURCES_DIR)/$(DUMMY_FRAMEWORK).m + DUMMY_FRAMEWORK_OBJ_FILE = $(addprefix $(GNUSTEP_OBJ_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)) + +ifneq ($(BUILD_DLL),yes) + +FRAMEWORK_CURRENT_DIR_NAME := $(FRAMEWORK_DIR_NAME)/Versions/Current +FRAMEWORK_CURRENT_DIR := $(GNUSTEP_BUILD_DIR)/$(FRAMEWORK_CURRENT_DIR_NAME) +FRAMEWORK_LIBRARY_DIR_NAME := $(FRAMEWORK_VERSION_DIR_NAME)/$(GNUSTEP_TARGET_LDIR) +FRAMEWORK_LIBRARY_DIR := $(GNUSTEP_BUILD_DIR)/$(FRAMEWORK_LIBRARY_DIR_NAME) +FRAMEWORK_CURRENT_LIBRARY_DIR_NAME := $(FRAMEWORK_CURRENT_DIR_NAME)/$(GNUSTEP_TARGET_LDIR) +FRAMEWORK_CURRENT_LIBRARY_DIR := $(GNUSTEP_BUILD_DIR)/$(FRAMEWORK_CURRENT_LIBRARY_DIR_NAME) + +FRAMEWORK_LIBRARY_FILE = lib$(GNUSTEP_INSTANCE)$(SHARED_LIBEXT) +VERSION_FRAMEWORK_LIBRARY_FILE = $(FRAMEWORK_LIBRARY_FILE).$(VERSION) + +# 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 +SONAME_FRAMEWORK_FILE = $(FRAMEWORK_LIBRARY_FILE).$(INTERFACE_VERSION) + +FRAMEWORK_FILE_NAME := $(FRAMEWORK_LIBRARY_DIR_NAME)/$(VERSION_FRAMEWORK_LIBRARY_FILE) +FRAMEWORK_FILE := $(GNUSTEP_BUILD_DIR)/$(FRAMEWORK_FILE_NAME) + +else # BUILD_DLL + +FRAMEWORK_FILE_NAME = $(GNUSTEP_INSTANCE)$(FRAMEWORK_NAME_SUFFIX)$(DLL_LIBEXT) +FRAMEWORK_FILE = $(GNUSTEP_BUILD_DIR)/$(FRAMEWORK_FILE_NAME) +DLL_NAME = $(shell echo $(LIBRARY_FILE)|cut -b 4-) +DLL_EXP_LIB = $(GNUSTEP_INSTANCE)$(FRAMEWORK_NAME_SUFFIX)$(SHARED_LIBEXT) +DLL_EXP_DEF = $(GNUSTEP_INSTANCE)$(FRAMEWORK_NAME_SUFFIX).def + +ifeq ($(DLL_INSTALLATION_DIR),) + DLL_INSTALLATION_DIR = $(GNUSTEP_TOOLS)/$(GNUSTEP_TARGET_LDIR) +endif + +endif # BUILD_DLL + +ifeq ($(WITH_DLL),yes) + FRAMEWORK_OBJ_EXT = $(DLL_LIBEXT) +endif # WITH_DLL + +ifneq ($($(GNUSTEP_INSTANCE)_INSTALL_DIR),) + FRAMEWORK_INSTALL_DIR = $($(GNUSTEP_INSTANCE)_INSTALL_DIR) +endif + +ifeq ($(FRAMEWORK_INSTALL_DIR),) + FRAMEWORK_INSTALL_DIR = $(GNUSTEP_FRAMEWORKS) +endif + +# +# Emit a warning for old deprecated functionality +# +ifneq ($($(GNUSTEP_INSTANCE)_TOOLS),) + $(warning "Support for xxx_TOOLS has been removed from gnustep-make! Please rewrite your makefile code by compiling the tools separately, then add a xxx_COPY_INTO_DIR command for each of them to copy them into the framework. Ask for help on gnustep mailing lists if you're confused.") +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) +endif + + +GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH = $(FRAMEWORK_VERSION_DIR)/Resources +include $(GNUSTEP_MAKEFILES)/Instance/Shared/bundle.make + +internal-framework-all_:: $(GNUSTEP_OBJ_DIR) \ + build-framework + +internal-framework-build-headers:: build-framework-dirs \ + $(FRAMEWORK_HEADER_FILES) + + +ifeq ($(MAKE_CURRENT_VERSION),yes) +# A target to build/reset the Current symlink to point to the newly +# compiled framework. Only executed if MAKE_CURRENT_VERSION is yes. +UPDATE_CURRENT_SYMLINK_RULE = update-current-symlink +update-current-symlink:: $(FRAMEWORK_VERSION_DIR) + $(ECHO_NOTHING)cd $(FRAMEWORK_DIR)/Versions; \ + rm -f Current; \ + $(LN_S) $(CURRENT_VERSION_NAME) Current$(END_ECHO) + +else +UPDATE_CURRENT_SYMLINK_RULE = +endif + +# Please note that test -h must be used instead of test -L because on old +# Sun Solaris, test -h works but test -L does not. +build-framework-dirs:: $(DERIVED_SOURCES_DIR) \ + $(FRAMEWORK_LIBRARY_DIR) \ + $(FRAMEWORK_VERSION_DIR)/Headers \ + $(FRAMEWORK_VERSION_DIR)/Resources \ + $(FRAMEWORK_RESOURCE_DIRS) \ + $(UPDATE_CURRENT_SYMLINK_RULE) + $(ECHO_NOTHING)cd $(FRAMEWORK_DIR); \ + if [ ! -h "Resources" ]; then \ + rm -f Resources; \ + $(LN_S) Versions/Current/Resources Resources; \ + fi; \ + if [ ! -h "Headers" ]; then \ + rm -f Headers; \ + $(LN_S) Versions/Current/Headers Headers; \ + fi$(END_ECHO) +ifneq ($(HEADER_FILES),) + $(ECHO_NOTHING)cd $(DERIVED_SOURCES_DIR); \ + if [ ! -h "$(HEADER_FILES_INSTALL_DIR)" ]; then \ + rm -f ./$(HEADER_FILES_INSTALL_DIR); \ + $(LN_S) ../$(FRAMEWORK_DIR_NAME)/Headers \ + ./$(HEADER_FILES_INSTALL_DIR); \ + fi$(END_ECHO) +endif + +$(FRAMEWORK_LIBRARY_DIR): + $(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO) + +$(FRAMEWORK_VERSION_DIR)/Headers: + $(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO) + +$(DERIVED_SOURCES_DIR): + $(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO) + +# Need to share this code with the headers code ... but how. +$(FRAMEWORK_HEADER_FILES):: $(HEADER_FILES) +ifneq ($(HEADER_FILES),) + $(ECHO_NOTHING)for file in $(HEADER_FILES) __done; do \ + if [ $$file != __done ]; then \ + $(INSTALL_DATA) $(HEADER_FILES_DIR)/$$file \ + $(FRAMEWORK_VERSION_DIR)/Headers/$$file ; \ + fi; \ + done$(END_ECHO) +endif + +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) $(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); \ + if [ "$(findstring $(GNUSTEP_SYSTEM_ROOT), $(FRAMEWORK_INSTALL_DIR))" = $(GNUSTEP_SYSTEM_ROOT) ]; then \ + fw_env="@\"GNUSTEP_SYSTEM_ROOT\""; \ + elif [ "$(findstring $(GNUSTEP_LOCAL_ROOT), $(FRAMEWORK_INSTALL_DIR))" = $(GNUSTEP_LOCAL_ROOT) ]; then \ + fw_env="@\"GNUSTEP_LOCAL_ROOT\""; \ + elif [ "$(findstring $(GNUSTEP_USER_ROOT), $(FRAMEWORK_INSTALL_DIR))" = $(GNUSTEP_USER_ROOT) ]; then \ + fw_env="@\"GNUSTEP_USER_ROOT\""; \ + else \ + fw_env="nil"; \ + fi; \ + fw_path=`echo $(FRAMEWORK_INSTALL_DIR) | sed 's/^$(subst /,\/,$(GNUSTEP_FRAMEWORKS))//'`; \ + if [ "$$fw_path" = "$(FRAMEWORK_INSTALL_DIR)" ]; then \ + fw_path="nil"; \ + elif [ "$$fw_path" = "" ]; then \ + fw_path="nil"; \ + else \ + fw_path="@\"$$fw_path\""; \ + fi; \ + echo "#include <Foundation/NSString.h>" > $@; \ + echo "@interface $(DUMMY_FRAMEWORK)" >> $@; \ + echo "+ (NSString *)frameworkEnv;" >> $@; \ + echo "+ (NSString *)frameworkPath;" >> $@; \ + echo "+ (NSString *)frameworkVersion;" >> $@; \ + echo "+ (NSString **)frameworkClasses;" >> $@; \ + echo "@end" >> $@; \ + echo "@implementation $(DUMMY_FRAMEWORK)" >> $@; \ + echo "+ (NSString *)frameworkEnv { return $$fw_env; }" >> $@; \ + echo "+ (NSString *)frameworkPath { return $$fw_path; }" >> $@; \ + echo "+ (NSString *)frameworkVersion { return @\"$(CURRENT_VERSION_NAME)\"; }" >> $@; \ + echo "static NSString *allClasses[] = {$$classlist};" >> $@; \ + echo "+ (NSString **)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), apple) +# When building native frameworks on Apple, we need to create a +# top-level symlink xxx.framework/xxx ---> the framework shared +# library + +build-framework:: $(FRAMEWORK_FILE) \ + shared-instance-bundle-all \ + $(FRAMEWORK_VERSION_DIR)/Resources/Info.plist \ + $(GNUSTEP_BUILD_DIR)/$(GNUSTEP_INSTANCE).framework/$(GNUSTEP_INSTANCE) + +# Please note that the following keeps the top-level symlink pointing +# to the framework in Current. This is always correct, even if what +# 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_INSTANCE): +ifeq ($(MAKE_CURRENT_VERSION),yes) + $(ECHO_NOTHING)cd $(GNUSTEP_BUILD_DIR)/$(GNUSTEP_INSTANCE).framework; \ + rm -f $(GNUSTEP_INSTANCE); \ + $(LN_S) Versions/Current/$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_INSTANCE) $(GNUSTEP_INSTANCE)$(END_ECHO) +endif + +else + +build-framework:: $(FRAMEWORK_FILE) \ + shared-instance-bundle-all \ + $(FRAMEWORK_VERSION_DIR)/Resources/Info-gnustep.plist + +endif + + + + + +ifeq ($(WITH_DLL),yes) + +$(FRAMEWORK_FILE) : $(DUMMY_FRAMEWORK_OBJ_FILE) $(OBJ_FILES_TO_LINK) + $(ECHO_LINKING)$(DLLWRAP) --driver-name $(CC) \ + -o $(LDOUT)$(FRAMEWORK_FILE) \ + $(OBJ_FILES_TO_LINK) \ + $(ALL_LDFLAGS) \ + $(ALL_FRAMEWORK_LIBS)$(END_ECHO) + +else # without DLL + +$(FRAMEWORK_FILE) : $(DUMMY_FRAMEWORK_OBJ_FILE) $(OBJ_FILES_TO_LINK) + $(ECHO_LINKING) \ + $(LIB_LINK_CMD); \ + (cd $(LIB_LINK_OBJ_DIR); \ + rm -f $(GNUSTEP_INSTANCE); \ + $(LN_S) $(LIB_LINK_FILE) $(GNUSTEP_INSTANCE)) \ + $(END_ECHO) + +endif # WITH_DLL + +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))))) + +# MacOSX-S frameworks +$(FRAMEWORK_VERSION_DIR)/Resources/Info.plist: $(FRAMEWORK_VERSION_DIR)/Resources + $(ECHO_CREATING)(echo "{"; echo ' NOTE = "Automatically generated, do not edit!";'; \ + echo " NSExecutable = \"$(GNUSTEP_INSTANCE)${FRAMEWORK_OBJ_EXT}\";"; \ + echo " NSMainNibFile = \"$(MAIN_MODEL_FILE)\";"; \ + echo " NSPrincipalClass = \"$(PRINCIPAL_CLASS)\";"; \ + echo "}") >$@$(END_ECHO) + +# GNUstep frameworks +$(FRAMEWORK_VERSION_DIR)/Resources/Info-gnustep.plist: $(FRAMEWORK_VERSION_DIR)/Resources $(DUMMY_FRAMEWORK_FILE) + $(ECHO_CREATING)(echo "{"; echo ' NOTE = "Automatically generated, do not edit!";'; \ + echo " NSExecutable = \"$(GNUSTEP_INSTANCE)${FRAMEWORK_OBJ_EXT}\";"; \ + echo " NSMainNibFile = \"$(MAIN_MODEL_FILE)\";"; \ + echo " NSPrincipalClass = \"$(PRINCIPAL_CLASS)\";"; \ + echo " Classes = "; \ + cat $(DUMMY_FRAMEWORK_CLASS_LIST); \ + echo " ;"; \ + echo "}") >$@$(END_ECHO) + $(ECHO_NOTHING)if [ -r "$(GNUSTEP_INSTANCE)Info.plist" ]; then \ + plmerge $@ $(GNUSTEP_INSTANCE)Info.plist; \ + fi$(END_ECHO) + +ifneq ($(WITH_DLL),yes) + +ifeq ($(FOUNDATION_LIB),gnu) + +internal-framework-install_:: $(FRAMEWORK_INSTALL_DIR) \ + $(GNUSTEP_LIBRARIES)/$(GNUSTEP_TARGET_LDIR) \ + $(GNUSTEP_HEADERS) + $(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 [ "$(HEADER_FILES)" != "" ]; then \ + rm -f $(HEADER_FILES_INSTALL_DIR); \ + $(LN_S) `$(REL_PATH_SCRIPT) $(GNUSTEP_HEADERS) $(FRAMEWORK_INSTALL_DIR)/$(FRAMEWORK_DIR_NAME)/Headers` $(HEADER_FILES_INSTALL_DIR); \ + fi;$(END_ECHO) +ifneq ($(CHOWN_TO),) + $(ECHO_CHOWNING)cd $(GNUSTEP_HEADERS); \ + if [ "$(HEADER_FILES)" != "" ]; then \ + $(CHOWN) $(CHOWN_TO) $(HEADER_FILES_INSTALL_DIR); \ + fi$(END_ECHO) +endif + $(ECHO_NOTHING)cd $(GNUSTEP_LIBRARIES)/$(GNUSTEP_TARGET_LDIR); \ + rm -f $(FRAMEWORK_LIBRARY_FILE); \ + rm -f $(SONAME_FRAMEWORK_FILE); \ + rm -f $(VERSION_FRAMEWORK_LIBRARY_FILE); \ + $(LN_S) `$(REL_PATH_SCRIPT) $(GNUSTEP_LIBRARIES)/$(GNUSTEP_TARGET_LDIR) $(FRAMEWORK_INSTALL_DIR)/$(FRAMEWORK_CURRENT_LIBRARY_DIR_NAME)/$(FRAMEWORK_LIBRARY_FILE)` $(FRAMEWORK_LIBRARY_FILE); \ + if test -r "$(FRAMEWORK_INSTALL_DIR)/$(FRAMEWORK_CURRENT_LIBRARY_DIR_NAME)/$(SONAME_FRAMEWORK_FILE)"; then \ + $(LN_S) `$(REL_PATH_SCRIPT) $(GNUSTEP_LIBRARIES)/$(GNUSTEP_TARGET_LDIR) $(FRAMEWORK_INSTALL_DIR)/$(FRAMEWORK_CURRENT_LIBRARY_DIR_NAME)/$(SONAME_FRAMEWORK_FILE)` $(SONAME_FRAMEWORK_FILE); \ + fi; \ + $(LN_S) `$(REL_PATH_SCRIPT) $(GNUSTEP_LIBRARIES)/$(GNUSTEP_TARGET_LDIR) $(FRAMEWORK_INSTALL_DIR)/$(FRAMEWORK_CURRENT_LIBRARY_DIR_NAME)/$(VERSION_FRAMEWORK_LIBRARY_FILE)` $(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 [ "$(HEADER_FILES)" != "" ]; then \ + if test -d "$(HEADER_FILES_INSTALL_DIR)"; then \ + rm -Rf $(HEADER_FILES_INSTALL_DIR); \ + fi; \ + $(MKINSTALLDIRS) $(HEADER_FILES_INSTALL_DIR); \ + cd $(FRAMEWORK_INSTALL_DIR)/$(FRAMEWORK_VERSION_DIR_NAME)/Headers ; \ + $(TAR) cfX - $(GNUSTEP_MAKEFILES)/tar-exclude-list . | (cd $(GNUSTEP_HEADERS)/$(HEADER_FILES_INSTALL_DIR); \ + $(TAR) xf - ); \ + fi;$(END_ECHO) +ifneq ($(CHOWN_TO),) + $(ECHO_CHOWNING)cd $(GNUSTEP_HEADERS); \ + if [ "$(HEADER_FILES)" != "" ]; then \ + $(CHOWN) -R $(CHOWN_TO) $(HEADER_FILES_INSTALL_DIR); \ + fi$(END_ECHO) +endif + $(ECHO_NOTHING)cd $(DLL_INSTALLATION_DIR); \ + if test -r "$(FRAMEWORK_FILE_NAME)"; then \ + rm -f $(FRAMEWORK_FILE_NAME); \ + fi$(END_ECHO) + $(ECHO_NOTHING)$(INSTALL_PROGRAM) -m 0755 $(FRAMEWORK_FILE) \ + $(DLL_INSTALLATION_DIR)/$(FRAMEWORK_FILE_NAME)$(END_ECHO) + +endif + +$(DLL_INSTALLATION_DIR):: + $(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO) + +$(FRAMEWORK_DIR)/Resources:: + $(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO) + +$(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) + +# NB: We use 'rm -f' to remove the symlinks to insure +# that we do not remove customized real directories. +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; \ + if [ -n "$(HEADER_FILES)" ]; then \ + rm -f $(GNUSTEP_HEADERS)/$(HEADER_FILES_INSTALL_DIR) ; \ + fi; \ + rm -rf $(FRAMEWORK_INSTALL_DIR)/$(FRAMEWORK_DIR_NAME) ; \ + cd $(GNUSTEP_LIBRARIES)/$(GNUSTEP_TARGET_LDIR); \ + rm -f $(FRAMEWORK_LIBRARY_FILE); \ + rm -f $(SONAME_FRAMEWORK_FILE); \ + rm -f $(VERSION_FRAMEWORK_LIBRARY_FILE); \ + $(END_ECHO) + +# +# Cleaning targets +# +internal-framework-clean:: + $(ECHO_NOTHING)rm -rf $(GNUSTEP_OBJ_DIR) \ + $(PSWRAP_C_FILES) $(PSWRAP_H_FILES) \ + $(FRAMEWORK_DIR) $(DERIVED_SOURCES_DIR)$(END_ECHO) + +internal-framework-distclean:: + $(ECHO_NOTHING)cd $(GNUSTEP_BUILD_DIR); \ + rm -rf shared_obj static_obj shared_debug_obj \ + shared_profile_obj static_debug_obj static_profile_obj \ + shared_profile_debug_obj static_profile_debug_obj$(END_ECHO) + +include $(GNUSTEP_MAKEFILES)/Instance/Shared/strings.make diff --git a/gnustep-make/Instance/gswapp.make b/gnustep-make/Instance/gswapp.make new file mode 100644 index 00000000..7fcc7c5d --- /dev/null +++ b/gnustep-make/Instance/gswapp.make @@ -0,0 +1,194 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +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. + + +# 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 +ifeq ($(profile), yes) + GSWAPP_EXTENSION = profile +else + ifeq ($(debug), yes) + GSWAPP_EXTENSION = debug + else + GSWAPP_EXTENSION = gswa + endif +endif + +GNUSTEP_GSWAPPS = $(GNUSTEP_INSTALLATION_DIR)/GSWApps + +.PHONY: internal-gswapp-all_ \ + internal-gswapp-install_ \ + internal-gswapp-uninstall_ \ + internal-gswapp-copy_into_dir + +# +# Determine where to install. By default, install into GNUSTEP_GSWAPPS. +# +ifneq ($($(GNUSTEP_INSTANCE)_INSTALL_DIR),) + GSWAPP_INSTALL_DIR = $($(GNUSTEP_INSTANCE)_INSTALL_DIR) +endif + +ifeq ($(GSWAPP_INSTALL_DIR),) + GSWAPP_INSTALL_DIR = $(GNUSTEP_GSWAPPS) +endif + +# Libraries that go before the WO libraries +ALL_GSW_LIBS = \ + $(shell $(WHICH_LIB_SCRIPT) \ + $(ALL_LIB_DIRS) \ + $(ADDITIONAL_GSW_LIBS) $(AUXILIARY_GSW_LIBS) $(GSW_LIBS) \ + $(ADDITIONAL_TOOL_LIBS) $(AUXILIARY_TOOL_LIBS) \ + $(FND_LIBS) $(ADDITIONAL_OBJC_LIBS) $(AUXILIARY_OBJC_LIBS) \ + $(OBJC_LIBS) $(SYSTEM_LIBS) $(TARGET_SYSTEM_LIBS) \ + debug=$(debug) profile=$(profile) shared=$(shared) \ + libext=$(LIBEXT) shared_libext=$(SHARED_LIBEXT)) + +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_MAIN_PATH = $(GSWAPP_DIR_NAME) +GNUSTEP_SHARED_BUNDLE_INSTALL_DIR = $(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) + $(ECHO_LINKING)$(LD) $(ALL_LDFLAGS) -o $(LDOUT)$@ $(OBJ_FILES_TO_LINK)\ + $(ALL_GSW_LIBS)$(END_ECHO) +ifneq ($(FOUNDATION_LIB), apple) + $(ECHO_NOTHING)$(TRANSFORM_PATHS_SCRIPT) $(subst -L,,$(ALL_LIB_DIRS)) \ + >$(GSWAPP_DIR)/$(GNUSTEP_TARGET_LDIR)/library_paths.openapp$(END_ECHO) +endif + +# +# Compilation targets +# +ifeq ($(FOUNDATION_LIB), apple) +internal-gswapp-all_:: \ + $(GNUSTEP_OBJ_DIR) \ + $(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_DIR) \ + $(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): + $(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_INSTANCE)Info.plist" ]; then \ + cat $(GNUSTEP_INSTANCE)Info.plist; \ + 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 diff --git a/gnustep-make/Instance/gswbundle.make b/gnustep-make/Instance/gswbundle.make new file mode 100644 index 00000000..2474a54d --- /dev/null +++ b/gnustep-make/Instance/gswbundle.make @@ -0,0 +1,269 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +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. + +COMPONENTS = $($(GNUSTEP_INSTANCE)_COMPONENTS) +LANGUAGES = $($(GNUSTEP_INSTANCE)_LANGUAGES) +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_INSTALLATION_DIR)/Library/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) \ + $(ADDITIONAL_TOOL_LIBS) $(AUXILIARY_TOOL_LIBS) \ + $(FND_LIBS) $(ADDITIONAL_OBJC_LIBS) $(AUXILIARY_OBJC_LIBS) \ + $(OBJC_LIBS) $(SYSTEM_LIBS) $(TARGET_SYSTEM_LIBS) +#ALL_GSWBUNDLE_LIBS = +#ALL_GSWBUNDLE_LIBS = \ + $(shell $(WHICH_LIB_SCRIPT) $(ALL_LIB_DIRS) $(ALL_GSWBUNDLE_LIBS) \ + debug=$(debug) profile=$(profile) shared=$(shared) libext=$(LIBEXT) \ + shared_libext=$(SHARED_LIBEXT)) + +internal-gswbundle-all_:: $(GNUSTEP_OBJ_DIR) \ + 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)) + +ifeq ($(strip $(LANGUAGES)),) + LANGUAGES="English" +endif + + +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) + $(ECHO_LINKING)$(GSWBUNDLE_LD) $(GSWBUNDLE_LDFLAGS) \ + $(ALL_LDFLAGS) -o $(LDOUT)$(GSWBUNDLE_FILE) \ + $(OBJ_FILES_TO_LINK) \ + $(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 diff --git a/gnustep-make/Instance/java-tool.make b/gnustep-make/Instance/java-tool.make new file mode 100644 index 00000000..fb8013dc --- /dev/null +++ b/gnustep-make/Instance/java-tool.make @@ -0,0 +1,90 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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 tools get installed. 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 + +GNUSTEP_SHARED_JAVA_INSTALLATION_DIR = $(JAVA_TOOL_INSTALLATION_DIR)/Java +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) + # But then, we are good, and try guessing + 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:: diff --git a/gnustep-make/Instance/java.make b/gnustep-make/Instance/java.make new file mode 100644 index 00000000..6d632629 --- /dev/null +++ b/gnustep-make/Instance/java.make @@ -0,0 +1,96 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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-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-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 + diff --git a/gnustep-make/Instance/library.make b/gnustep-make/Instance/library.make new file mode 100644 index 00000000..b330df06 --- /dev/null +++ b/gnustep-make/Instance/library.make @@ -0,0 +1,339 @@ + # -*-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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +ifeq ($(RULES_MAKE_LOADED),) +include $(GNUSTEP_MAKEFILES)/rules.make +endif + +include $(GNUSTEP_MAKEFILES)/Instance/Shared/headers.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 DLL export file is in xxx_DLL_DEF +# +# Where xxx is the name of the library +# + +.PHONY: internal-library-all_ \ + internal-library-install_ \ + internal-library-uninstall_ \ + internal-install-lib \ + internal-install-dirs + +# 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) +else + LIBRARY_NAME_WITH_LIB = lib$(GNUSTEP_INSTANCE) +endif + +INTERNAL_LIBRARIES_DEPEND_UPON = \ + $(shell $(WHICH_LIB_SCRIPT) \ + $(ALL_LIB_DIRS) \ + $(LIBRARIES_DEPEND_UPON) \ + debug=$(debug) profile=$(profile) shared=$(shared) \ + libext=$(LIBEXT) shared_libext=$(SHARED_LIBEXT)) + +ifeq ($(shared), yes) + +ifneq ($(BUILD_DLL),yes) + +LIBRARY_FILE = $(LIBRARY_NAME_WITH_LIB)$(LIBRARY_NAME_SUFFIX)$(SHARED_LIBEXT) +LIBRARY_FILE_EXT = $(SHARED_LIBEXT) +VERSION_LIBRARY_FILE = $(LIBRARY_FILE).$(VERSION) + +# Allow the user GNUmakefile to define xxx_INTERFACE_VERSION to +# 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 +SONAME_LIBRARY_FILE = $(LIBRARY_FILE).$(INTERFACE_VERSION) + +else # BUILD_DLL + +LIBRARY_FILE = $(LIBRARY_NAME_WITH_LIB)$(LIBRARY_NAME_SUFFIX)$(DLL_LIBEXT) +LIBRARY_FILE_EXT = $(DLL_LIBEXT) +DLL_NAME = $(shell echo $(LIBRARY_FILE)|cut -b 4-) +DLL_EXP_LIB = $(LIBRARY_NAME_WITH_LIB)$(LIBRARY_NAME_SUFFIX)$(SHARED_LIBEXT) +DLL_EXP_DEF = $(LIBRARY_NAME_WITH_LIB)$(LIBRARY_NAME_SUFFIX).def + +ifeq ($(DLL_INSTALLATION_DIR),) + DLL_INSTALLATION_DIR = $(GNUSTEP_TOOLS)/$(GNUSTEP_TARGET_LDIR) +endif + +endif # BUILD_DLL + +else # shared + +LIBRARY_FILE = $(LIBRARY_NAME_WITH_LIB)$(LIBRARY_NAME_SUFFIX)$(LIBEXT) +LIBRARY_FILE_EXT = $(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) + +# +# Internal targets +# + +# +# Compilation targets +# + +ifeq ($(BUILD_DLL),yes) + +DLL_DEF = $($(GNUSTEP_INSTANCE)_DLL_DEF) +DLL_DEF_FILES = $(SUBPROJECT_DEF_FILES) $(DLL_DEF) + +ifneq ($(strip $(DLL_DEF_FILES)),) +DLL_DEF_INP = $(DERIVED_SOURCES_DIR)/$(LIBRARY_NAME_WITH_LIB).inp + +$(DLL_DEF_INP): $(DLL_DEF_FILES) + cat $(DLL_DEF_FILES) > $@ + +DLL_DEF_FLAG = --input-def $(DLL_DEF_INP) +endif + +# Pass -DBUILD_lib{library_name}_DLL=1 to the preprocessor. The +# library header files can use this preprocessor define to know that +# they are included during compilation of the library itself, and can +# then use __declspec(dllexport) to export symbols +CLEAN_library_NAME = $(shell echo $(LIBRARY_NAME_WITH_LIB)|tr '-' '_') +SHARED_CFLAGS += -DBUILD_$(CLEAN_library_NAME)_DLL=1 + +internal-library-all_:: \ + $(GNUSTEP_OBJ_DIR) \ + $(DERIVED_SOURCES_DIR) \ + $(DLL_DEF_INP) \ + $(DERIVED_SOURCES_DIR)/$(LIBRARY_NAME_WITH_LIB).def \ + $(GNUSTEP_OBJ_DIR)/$(DLL_NAME) \ + $(GNUSTEP_OBJ_DIR)/$(DLL_EXP_LIB) + +internal-library-clean:: + $(ECHO_NOTHING)rm -rf $(DERIVED_SOURCES_DIR)$(END_ECHO) + +$(DERIVED_SOURCES_DIR): + $(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO) + +$(DERIVED_SOURCES_DIR)/$(LIBRARY_NAME_WITH_LIB).def: $(OBJ_FILES_TO_LINK) $(DLL_DEF_INP) + $(ECHO_NOTHING)$(DLLTOOL) $(DLL_DEF_FLAG) --output-def $@ $(OBJ_FILES_TO_LINK)$(END_ECHO) + +$(GNUSTEP_OBJ_DIR)/$(DLL_EXP_LIB): $(DERIVED_SOURCES_DIR)/$(LIBRARY_NAME_WITH_LIB).def + $(ECHO_NOTHING)$(DLLTOOL) --dllname $(DLL_NAME) --def $< --output-lib $@$(END_ECHO) + +$(GNUSTEP_OBJ_DIR)/$(DLL_NAME): $(OBJ_FILES_TO_LINK) \ + $(DERIVED_SOURCES_DIR)/$(LIBRARY_NAME_WITH_LIB).def + $(ECHO_LINKING)$(DLLWRAP) --driver-name $(CC) \ + $(SHARED_LD_PREFLAGS) \ + --def $(DERIVED_SOURCES_DIR)/$(LIBRARY_NAME_WITH_LIB).def \ + -o $@ $(OBJ_FILES_TO_LINK) \ + $(ALL_LDFLAGS) \ + $(INTERNAL_LIBRARIES_DEPEND_UPON) $(TARGET_SYSTEM_LIBS) \ + $(SHARED_LD_POSTFLAGS)$(END_ECHO) + +else # BUILD_DLL + +internal-library-all_:: $(GNUSTEP_OBJ_DIR) \ + $(GNUSTEP_OBJ_DIR)/$(VERSION_LIBRARY_FILE) + +$(GNUSTEP_OBJ_DIR)/$(VERSION_LIBRARY_FILE): $(OBJ_FILES_TO_LINK) + $(ECHO_LINKING)$(LIB_LINK_CMD)$(END_ECHO) + +endif # BUILD_DLL + +# +# Install and uninstall targets +# +internal-library-install_:: internal-install-dirs \ + internal-install-lib \ + shared-instance-headers-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) + +ifeq ($(BUILD_DLL),yes) + +internal-install-lib:: + $(ECHO_INSTALLING)if [ -f $(GNUSTEP_OBJ_DIR)/$(DLL_NAME) ]; then \ + $(INSTALL_PROGRAM) $(GNUSTEP_OBJ_DIR)/$(DLL_NAME) \ + $(DLL_INSTALLATION_DIR) ; \ + fi; \ + if [ -f $(GNUSTEP_OBJ_DIR)/$(DLL_EXP_LIB) ]; then \ + $(INSTALL_PROGRAM) $(GNUSTEP_OBJ_DIR)/$(DLL_EXP_LIB) \ + $(FINAL_LIBRARY_INSTALL_DIR) ; \ + fi$(END_ECHO) + +else + +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) + +endif + +ifeq ($(BUILD_DLL),yes) + +internal-library-uninstall_:: shared-instance-headers-uninstall + $(ECHO_UNINSTALLING)rm -f $(DLL_INSTALLATION_DIR)/$(DLL_NAME) \ + $(FINAL_LIBRARY_INSTALL_DIR)/$(DLL_EXP_LIB)$(END_ECHO) + +else + +internal-library-uninstall_:: shared-instance-headers-uninstall + $(ECHO_UNINSTALLING)rm -f $(FINAL_LIBRARY_INSTALL_DIR)/$(VERSION_LIBRARY_FILE) \ + $(FINAL_LIBRARY_INSTALL_DIR)/$(LIBRARY_FILE) \ + $(FINAL_LIBRARY_INSTALL_DIR)/$(SONAME_LIBRARY_FILE)$(END_ECHO) +endif + +# +# Testing targets +# +internal-library-check:: + +include $(GNUSTEP_MAKEFILES)/Instance/Shared/strings.make diff --git a/gnustep-make/Instance/objc.make b/gnustep-make/Instance/objc.make new file mode 100644 index 00000000..f62cd661 --- /dev/null +++ b/gnustep-make/Instance/objc.make @@ -0,0 +1,75 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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_ + +# 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 = \ + $(shell $(WHICH_LIB_SCRIPT) \ + $(ALL_LIB_DIRS) \ + $(ADDITIONAL_OBJC_LIBS) $(AUXILIARY_OBJC_LIBS) $(OBJC_LIBS) \ + $(TARGET_SYSTEM_LIBS) \ + debug=$(debug) profile=$(profile) shared=$(shared) \ + libext=$(LIBEXT) shared_libext=$(SHARED_LIBEXT)) + +internal-objc_program-all_:: \ + $(GNUSTEP_OBJ_DIR) \ + $(GNUSTEP_OBJ_DIR)/$(GNUSTEP_INSTANCE)$(EXEEXT) + +$(GNUSTEP_OBJ_DIR)/$(GNUSTEP_INSTANCE)$(EXEEXT): $(OBJ_FILES_TO_LINK) + $(ECHO_LINKING)$(LD) $(ALL_LDFLAGS) -o $(LDOUT)$@ $(OBJ_FILES_TO_LINK)\ + $(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 diff --git a/gnustep-make/Instance/palette.make b/gnustep-make/Instance/palette.make new file mode 100644 index 00000000..a682b980 --- /dev/null +++ b/gnustep-make/Instance/palette.make @@ -0,0 +1,185 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +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 + +# On Solaris we don't need to specifies the libraries the palette needs. +# How about the rest of the systems? ALL_PALETTE_LIBS is temporary empty. +#ALL_PALETTE_LIBS = $(ADDITIONAL_GUI_LIBS) $(AUXILIARY_GUI_LIBS) $(BACKEND_LIBS) \ +# $(GUI_LIBS) $(ADDITIONAL_TOOL_LIBS) $(AUXILIARY_TOOL_LIBS) \ +# $(FND_LIBS) $(ADDITIONAL_OBJC_LIBS) $(AUXILIARY_OBJC_LIBS) $(OBJC_LIBS) \ +# $(SYSTEM_LIBS) $(TARGET_SYSTEM_LIBS) + +#ALL_PALETTE_LIBS := \ +# $(shell $(WHICH_LIB_SCRIPT) $(ALL_LIB_DIRS) $(ALL_PALETTE_LIBS) \ +# debug=$(debug) profile=$(profile) shared=$(shared) libext=$(LIBEXT) \ +# shared_libext=$(SHARED_LIBEXT)) +# On windows, this is unfortunately required. + +ifeq ($(WITH_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. +ifeq ($(FOUNDATION_LIB), apple) + LINK_PALETTE_AGAINST_ALL_LIBS = yes +endif + +ifeq ($(LINK_PALETTE_AGAINST_ALL_LIBS), yes) +PALETTE_LIBS += $(ADDITIONAL_GUI_LIBS) $(AUXILIARY_GUI_LIBS) $(BACKEND_LIBS) \ + $(GUI_LIBS) $(ADDITIONAL_TOOL_LIBS) $(AUXILIARY_TOOL_LIBS) \ + $(FND_LIBS) $(ADDITIONAL_OBJC_LIBS) $(AUXILIARY_OBJC_LIBS) $(OBJC_LIBS) \ + $(SYSTEM_LIBS) $(TARGET_SYSTEM_LIBS) +endif + +ALL_PALETTE_LIBS = \ + $(shell $(WHICH_LIB_SCRIPT) \ + $(ALL_LIB_DIRS) \ + $(PALETTE_LIBS) \ + debug=$(debug) profile=$(profile) shared=$(shared) \ + libext=$(LIBEXT) shared_libext=$(SHARED_LIBEXT)) + +ifeq ($(WITH_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_MAIN_PATH = $(PALETTE_DIR_NAME) +GNUSTEP_SHARED_BUNDLE_INSTALL_DIR = $(PALETTE_INSTALL_DIR) +include $(GNUSTEP_MAKEFILES)/Instance/Shared/bundle.make + +internal-palette-all_:: $(GNUSTEP_OBJ_DIR) \ + $(PALETTE_DIR)/Resources \ + $(PALETTE_DIR)/$(GNUSTEP_TARGET_LDIR) \ + $(PALETTE_FILE) \ + $(PALETTE_DIR)/Resources/Info-gnustep.plist \ + $(PALETTE_DIR)/Resources/palette.table \ + shared-instance-bundle-all + +$(PALETTE_DIR)/$(GNUSTEP_TARGET_LDIR): + $(ECHO_CREATING)$(MKDIRS) $(PALETTE_DIR)/$(GNUSTEP_TARGET_LDIR)$(END_ECHO) + +ifeq ($(WITH_DLL),yes) + +$(PALETTE_FILE) : $(OBJ_FILES_TO_LINK) + $(ECHO_LINKING)$(DLLWRAP) --driver-name $(CC) \ + -o $(LDOUT)$(PALETTE_FILE) \ + $(OBJ_FILES_TO_LINK) \ + $(ALL_LDFLAGS) \ + $(ALL_PALETTE_LIBS)$(END_ECHO) + +else # WITH_DLL + +$(PALETTE_FILE) : $(OBJ_FILES_TO_LINK) + $(ECHO_LINKING)$(BUNDLE_LD) $(BUNDLE_LDFLAGS) $(ALL_LDFLAGS) \ + -o $(LDOUT)$(PALETTE_FILE) \ + $(OBJ_FILES_TO_LINK) \ + $(ALL_PALETTE_LIBS)$(END_ECHO) + +endif # WITH_DLL + +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 + +$(PALETTE_DIR)/Resources/Info-gnustep.plist: $(PALETTE_DIR)/Resources + $(ECHO_CREATING)(echo "{"; echo ' NOTE = "Automatically generated, do not edit!";'; \ + echo " NSExecutable = \"$(GNUSTEP_INSTANCE)\";"; \ + if [ -r "$(GNUSTEP_INSTANCE)Info.plist" ]; then \ + cat $(GNUSTEP_INSTANCE)Info.plist; \ + fi; \ + echo "}") >$@$(END_ECHO) + +MAIN_MODEL_FILE = $(strip $(subst .gmodel,,$(subst .gorm,,$(subst .nib,,$($(GNUSTEP_INSTANCE)_MAIN_MODEL_FILE))))) + +$(PALETTE_DIR)/Resources/palette.table: $(PALETTE_DIR)/Resources + $(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 diff --git a/gnustep-make/Instance/resource-set.make b/gnustep-make/Instance/resource-set.make new file mode 100644 index 00000000..81d45d2c --- /dev/null +++ b/gnustep-make/Instance/resource-set.make @@ -0,0 +1,187 @@ +# -*-makefile-*- +# Instace/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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +ifeq ($(RULES_MAKE_LOADED),) +include $(GNUSTEP_MAKEFILES)/rules.make +endif + +# +# The name of the set of resources is in the RESOURCE_SET_NAME variable. +# The list of resource file are 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_RESOURCE_FILES_INSTALL_DIR +# The directory in which the resources are is in the +# xxx_RESOURCE_FILES_DIR (defaults to ./ if omitted) +# The list of LANGUAGES is in the xxx_LANGUAGES variable. +# The list of localized files to be read from yyy.lproj and copied +# into $(RESOURCE_FILES_INSTALL_DIR)/yyy.lproj for each language yyy +# is in the xxx_LOCALIZED_RESOURCE_FILES variable. +# + +.PHONY: internal-resource_set-install_ \ + internal-resource_set-uninstall_ + +# Determine installation dir +RESOURCE_FILES_INSTALL_DIR = $($(GNUSTEP_INSTANCE)_RESOURCE_FILES_INSTALL_DIR) +RESOURCE_FILES_FULL_INSTALL_DIR = $(GNUSTEP_INSTALLATION_DIR)/$(RESOURCE_FILES_INSTALL_DIR) + +# Rule to build the installation dir +$(RESOURCE_FILES_FULL_INSTALL_DIR): + $(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO) + + +# Determine the additional installation dirs to build +RESOURCE_DIRS = $($(GNUSTEP_INSTANCE)_RESOURCE_DIRS) + +ifneq ($(RESOURCE_DIRS),) +# Rule to build the additional installation dirs +$(addprefix $(RESOURCE_FILES_FULL_INSTALL_DIR)/,$(RESOURCE_DIRS)): + $(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO) +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) + + +# Determine the list of languages +override LANGUAGES = $($(GNUSTEP_INSTANCE)_LANGUAGES) +ifeq ($(LANGUAGES),) + override LANGUAGES = English +endif + + +# Determine the list of localized resource files +LOCALIZED_RESOURCE_FILES = $($(GNUSTEP_INSTANCE)_LOCALIZED_RESOURCE_FILES) + +# +# 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_FULL_INSTALL_DIR) \ + $(addprefix $(RESOURCE_FILES_FULL_INSTALL_DIR)/,$(RESOURCE_DIRS)) +ifneq ($(RESOURCE_FILES),) + $(ECHO_NOTHING)for file in $(RESOURCE_FILES) __done; do \ + if [ $$file != __done ]; then \ + $(INSTALL_DATA) $(RESOURCE_FILES_DIR)/$$file \ + $(RESOURCE_FILES_FULL_INSTALL_DIR)/$$file; \ + fi; \ + done$(END_ECHO) +endif +ifneq ($(LOCALIZED_RESOURCE_FILES),) + $(ECHO_NOTHING)for l in $(LANGUAGES); do \ + if [ -d $$l.lproj ]; then \ + $(MKINSTALLDIRS) $(RESOURCE_FILES_FULL_INSTALL_DIR)/$$l.lproj; \ + for f in $(LOCALIZED_RESOURCE_FILES); do \ + if [ -f $$l.lproj/$$f ]; then \ + $(INSTALL_DATA) $$l.lproj/$$f \ + $(RESOURCE_FILES_FULL_INSTALL_DIR)/$$l.lproj; \ + else \ + echo "Warning: $$l.lproj/$$f not found - ignoring"; \ + fi; \ + done; \ + else \ + echo "Warning: $$l.lproj not found - ignoring"; \ + fi; \ + done$(END_ECHO) +endif + +else # Following code turned on by setting GNUSTEP_DEVELOPER=YES in the shell + +.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_FULL_INSTALL_DIR)/% : $(RESOURCE_FILES_DIR)/% + $(ECHO_NOTHING)$(INSTALL_DATA) $< $@$(END_ECHO) + +# This rule depends on having installed all files +internal-resource_set-install_: \ + $(RESOURCE_FILES_FULL_INSTALL_DIR) \ + $(addprefix $(RESOURCE_FILES_FULL_INSTALL_DIR)/,$(RESOURCE_DIRS)) \ + $(addprefix $(RESOURCE_FILES_FULL_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_FULL_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_FULL_INSTALL_DIR)/,$(LANGUAGES))) + $(ECHO_NOTHING)for l in $(LANGUAGES); do \ + if [ -d $$l.lproj ]; then \ + for f in $(LOCALIZED_RESOURCE_FILES); do \ + if [ -f $$l.lproj/$$f ]; then \ + if [ $$l.lproj -nt $(RESOURCE_FILES_FULL_INSTALL_DIR)/$$l.lproj/$$f ]; then \ + $(INSTALL_DATA) $$l.lproj/$$f \ + $(RESOURCE_FILES_FULL_INSTALL_DIR)/$$l.lproj; \ + fi; \ + else \ + echo "Warning: $$l.lproj/$$f not found - ignoring"; \ + fi; \ + done; \ + else \ + echo "Warning: $$l.lproj not found - ignoring"; \ + fi; \ + done$(END_ECHO) + + +endif # LOCALIZED_RESOURCE_FILES + +endif + + +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_FULL_INSTALL_DIR)/$$language.lproj/$$file;\ + done; \ + rmdir $(RESOURCE_FILES_FULL_INSTALL_DIR)/$$language.lproj; \ + done$(END_ECHO) +endif +ifneq ($(RESOURCE_FILES),) + $(ECHO_NOTHING)for file in $(RESOURCE_FILES); do \ + rm -rf $(RESOURCE_FILES_FULL_INSTALL_DIR)/$$file ; \ + done$(END_ECHO) + -rmdir $(RESOURCE_FILES_FULL_INSTALL_DIR) +endif diff --git a/gnustep-make/Instance/rules.make b/gnustep-make/Instance/rules.make new file mode 100644 index 00000000..81779b2d --- /dev/null +++ b/gnustep-make/Instance/rules.make @@ -0,0 +1,269 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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: \ + before-$(GNUSTEP_INSTANCE)-all after-$(GNUSTEP_INSTANCE)-all \ + internal-$(GNUSTEP_TYPE)-all \ + 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:: before-$(GNUSTEP_INSTANCE)-all \ + internal-$(GNUSTEP_TYPE)-all_ \ + after-$(GNUSTEP_INSTANCE)-all +else +internal-$(GNUSTEP_TYPE)-all:: 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)-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 ADDITIONAL_INSTALL_DIRS variable (or xxx_INSTALL_DIRS) +# you can request additional installation directories to be created +# before the first installation target is executed. +ADDITIONAL_INSTALL_DIRS += $($(GNUSTEP_INSTANCE)_INSTALL_DIRS) + +$(ADDITIONAL_INSTALL_DIRS): + $(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO) + +internal-$(GNUSTEP_TYPE)-install:: $(ADDITIONAL_INSTALL_DIRS) \ + before-$(GNUSTEP_INSTANCE)-install \ + internal-$(GNUSTEP_TYPE)-install_ \ + after-$(GNUSTEP_INSTANCE)-install + +# It would be nice to remove ADDITIONAL_INSTALL_DIRS here, if empty. +internal-$(GNUSTEP_TYPE)-uninstall:: before-$(GNUSTEP_INSTANCE)-uninstall \ + internal-$(GNUSTEP_TYPE)-uninstall_ \ + after-$(GNUSTEP_INSTANCE)-uninstall + +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 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. +# + +# +# Please note the subtle difference: +# +# At `user' level (ie, in the user's GNUmakefile), +# the SUBPROJECTS variable is reserved for use with aggregate.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 + +ifneq ($($(GNUSTEP_INSTANCE)_SUBPROJECTS),) +SUBPROJECT_DEF_FILES = $(foreach d, $($(GNUSTEP_INSTANCE)_SUBPROJECTS), \ + $(addprefix $(GNUSTEP_BUILD_DIR)/$(d)/, subproject.def)) +endif + +OBJC_OBJS = $(patsubst %.m,%$(OEXT),$($(GNUSTEP_INSTANCE)_OBJC_FILES)) +OBJC_OBJ_FILES = $(addprefix $(GNUSTEP_OBJ_DIR)/,$(OBJC_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,%$(OEXT),$($(GNUSTEP_INSTANCE)_PSWRAP_FILES)) +PSWRAP_OBJ_FILES = $(addprefix $(GNUSTEP_OBJ_DIR)/,$(PSWRAP_OBJS)) + +C_OBJS = $(patsubst %.c,%$(OEXT),$($(GNUSTEP_INSTANCE)_C_FILES)) +C_OBJ_FILES = $(PSWRAP_OBJ_FILES) $(addprefix $(GNUSTEP_OBJ_DIR)/,$(C_OBJS)) + +# C++ files might end in .C, .cc, .cpp, .cxx, .cp so we replace multiple times +CC_OBJS = $(patsubst %.cc,%$(OEXT),\ + $(patsubst %.C,%$(OEXT),\ + $(patsubst %.cp,%$(OEXT),\ + $(patsubst %.cpp,%$(OEXT),\ + $(patsubst %.cxx,%$(OEXT),$($(GNUSTEP_INSTANCE)_CC_FILES)))))) +CC_OBJ_FILES = $(addprefix $(GNUSTEP_OBJ_DIR)/,$(CC_OBJS)) + +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) $(SUBPROJECT_OBJ_FILES) $(OBJ_FILES)) + +ifeq ($(AUTO_DEPENDENCIES),yes) + ifneq ($(strip $(OBJ_FILES_TO_LINK)),) + -include $(addsuffix .d, $(basename $(OBJ_FILES_TO_LINK))) + endif +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_LDFLAGS += $($(GNUSTEP_INSTANCE)_LDFLAGS) + +ADDITIONAL_CLASSPATH += $($(GNUSTEP_INSTANCE)_CLASSPATH) + +LIBRARIES_DEPEND_UPON += $($(GNUSTEP_INSTANCE)_LIBRARIES_DEPEND_UPON) + diff --git a/gnustep-make/Instance/service.make b/gnustep-make/Instance/service.make new file mode 100644 index 00000000..22ad9121 --- /dev/null +++ b/gnustep-make/Instance/service.make @@ -0,0 +1,121 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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 + +# Libraries that go before the GUI libraries +ALL_SERVICE_LIBS = \ + $(shell $(WHICH_LIB_SCRIPT) \ + $(ALL_LIB_DIRS) \ + $(ADDITIONAL_GUI_LIBS) $(AUXILIARY_GUI_LIBS) \ + $(GUI_LIBS) $(ADDITIONAL_TOOL_LIBS) $(AUXILIARY_TOOL_LIBS) \ + $(FND_LIBS) $(ADDITIONAL_OBJC_LIBS) $(AUXILIARY_OBJC_LIBS) \ + $(OBJC_LIBS) $(SYSTEM_LIBS) $(TARGET_SYSTEM_LIBS) \ + debug=$(debug) profile=$(profile) shared=$(shared) \ + libext=$(LIBEXT) shared_libext=$(SHARED_LIBEXT)) + +# 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_MAIN_PATH = $(SERVICE_DIR_NAME) +GNUSTEP_SHARED_BUNDLE_INSTALL_DIR = $(SERVICE_INSTALL_DIR) +include $(GNUSTEP_MAKEFILES)/Instance/Shared/bundle.make + +internal-service-all_:: $(GNUSTEP_OBJ_DIR) \ + $(SERVICE_DIR)/$(GNUSTEP_TARGET_LDIR) \ + $(SERVICE_FILE) \ + $(SERVICE_DIR)/Resources/Info-gnustep.plist \ + shared-instance-bundle-all + +$(SERVICE_FILE): $(OBJ_FILES_TO_LINK) + $(ECHO_LINKING)$(LD) $(ALL_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 + +$(SERVICE_DIR)/Resources/Info-gnustep.plist: \ + $(SERVICE_DIR)/Resources $(GNUSTEP_INSTANCE)Info.plist + $(ECHO_CREATING)(echo "{"; echo ' NOTE = "Automatically generated, do not edit!";'; \ + echo " NSExecutable = \"$(GNUSTEP_INSTANCE)\";"; \ + cat $(GNUSTEP_INSTANCE)Info.plist; \ + 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 diff --git a/gnustep-make/Instance/subproject.make b/gnustep-make/Instance/subproject.make new file mode 100644 index 00000000..22e0f9a0 --- /dev/null +++ b/gnustep-make/Instance/subproject.make @@ -0,0 +1,136 @@ +# -*-makefile-*- +# Instance/subproject.make +# +# Instance 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +ifeq ($(RULES_MAKE_LOADED),) +include $(GNUSTEP_MAKEFILES)/rules.make +endif + +.PHONY: internal-subproject-all_ \ + internal-subproject-install_ \ + internal-subproject-uninstall_ + +# +# Compilation targets +# +internal-subproject-all_:: $(GNUSTEP_OBJ_DIR) \ + $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) + +ifeq ($(BUILD_DLL),yes) + +DLL_DEF = $($(GNUSTEP_INSTANCE)_DLL_DEF) +DLL_DEF_FILES = $(SUBPROJECT_DEF_FILES) $(DLL_DEF) + +ifneq ($(strip $(DLL_DEF_FILES)),) +DLL_DEF_INP = $(GNUSTEP_BUILD_DIR)/$(GNUSTEP_INSTANCE).inp + +$(DLL_DEF_INP): $(DLL_DEF_FILES) + $(ECHO_CREATING)cat $(DLL_DEF_FILES) > $@$(END_ECHO) + +DLL_DEF_FLAG = --input-def $(DLL_DEF_INP) +endif + +internal-subproject-clean:: + $(ECHO_NOTHING)rm -rf $(DLL_DEF_INP)$(END_ECHO) + +internal-subproject-all_:: $(GNUSTEP_BUILD_DIR)/subproject.def + +$(GNUSTEP_BUILD_DIR)/subproject.def: $(OBJ_FILES_TO_LINK) $(DLL_DEF) \ + $(DLL_DEF_INP) + $(ECHO_NOTHING)$(DLLTOOL) $(DLL_DEF_FLAG) --output-def $@ $(OBJ_FILES_TO_LINK)$(END_ECHO) + +endif + +# We need to depend on SUBPROJECT_OBJ_FILES to account for sub-subprojects. +$(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT): $(OBJ_FILES_TO_LINK) + $(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 + +OWNING_PROJECT_HEADER_DIR = $(GNUSTEP_BUILD_DIR)/$(OWNING_PROJECT_HEADER_DIR_NAME) +HEADER_FILES = $($(GNUSTEP_INSTANCE)_HEADER_FILES) +OWNING_PROJECT_HEADER_FILES = $(patsubst %.h,$(OWNING_PROJECT_HEADER_DIR)/%.h,$(HEADER_FILES)) + +internal-subproject-build-headers:: $(OWNING_PROJECT_HEADER_FILES) + +# We need to build the OWNING_PROJECT_HEADER_DIR directory here +# because this rule could be executed before the top-level framework +# has built his dirs +$(OWNING_PROJECT_HEADER_FILES):: $(HEADER_FILES) $(OWNING_PROJECT_HEADER_DIR) +ifneq ($(HEADER_FILES),) + $(ECHO_NOTHING)for file in $(HEADER_FILES) __done; do \ + if [ $$file != __done ]; then \ + $(INSTALL_DATA) ./$$file $(OWNING_PROJECT_HEADER_DIR)/$$file ; \ + fi; \ + done$(END_ECHO) +endif # we got HEADER_FILES + +$(OWNING_PROJECT_HEADER_DIR): + $(ECHO_CREATING)$(MKDIRS) $@$(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 = 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 diff --git a/gnustep-make/Instance/test-application.make b/gnustep-make/Instance/test-application.make new file mode 100644 index 00000000..5e87e34a --- /dev/null +++ b/gnustep-make/Instance/test-application.make @@ -0,0 +1,29 @@ +# -*-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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +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_ + diff --git a/gnustep-make/Instance/test-library.make b/gnustep-make/Instance/test-library.make new file mode 100644 index 00000000..84b53f27 --- /dev/null +++ b/gnustep-make/Instance/test-library.make @@ -0,0 +1,143 @@ +# +# Instance/test-library.make +# +# Instance 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +ifeq ($(RULES_MAKE_LOADED),) +include $(GNUSTEP_MAKEFILES)/rules.make +endif + +# +# The three main components to perform a test in the framework +# a) code to be tested +# b) scripts which say what/how to test +# c) test driver +# +# Component A can be any (or all) of the possible build targets +# supported by the GNUstep Makefile Package: library, tool, +# application, or bundle. The code is assumed to be compiled +# elsewhere and just needs to be accessed to run the tests. +# +# Component B are written by the user. The GNUstep Makefile Package +# does not interpret these scripts; it require that you specify +# a list of directories which contain the scripts for the code to be +# tested, so that this information can be passed to dejagnu. +# +# Component C is dependent upon the type of code to be tested; generally +# an interactive program is its own test driver as it can communicate +# directly with dejagnu. Libraries, however, require a test driver which +# interactively accepts commands from dejagnu; the Objective-C Testing +# Framework is the default test driver. +# +# Test drivers for the various build targets; the names should be unique +# across all of the test drivers: +# +# TEST_LIBRARY_NAME +# +# xxx_OBJC_FILES, xxx_C_FILES, and xxx_PSWRAP_FILES holds the files +# to be compiled for the xxx test driver. +# +# xxx_SCRIPT_DIRS is a list of directories containing the test scripts +# which will be performed by dejagnu for the xxx test driver. +# +# xxx_SCRIPTS_DIRECTORY is the directory where the xxx_SCRIPT_DIRS +# are located for the xxx test driver. +# +# xxx_INCLUDE_DIRS are additional headers directories to be searched +# +# xxx_LIB_DIRS and xxx_LIBS are additional libraries directories and +# libraries to link against, respectively to link the xxx test driver. +# The same paths are passed to the dynamic linker. +# + +SCRIPTS_DIRECTORY = $($(GNUSTEP_INSTANCE)_SCRIPTS_DIRECTORY) +CHECK_SCRIPT_DIRS = $($(GNUSTEP_INSTANCE)_SCRIPT_DIRS) + +ifeq ($(SCRIPTS_DIRECTORY),) +SCRIPTS_DIRECTORY = . +endif + +ALL_TEST_LIBRARY_LIBS = \ + $(shell $(WHICH_LIB_SCRIPT) \ + $(ALL_LIB_DIRS) \ + $(ADDITIONAL_LIBRARY_LIBS) $(AUXILIARY_LIBS) \ + $(AUXILIARY_TOOL_LIBS) $(FND_LIBS) $(OBJC_LIBS) \ + $(TARGET_SYSTEM_LIBS) \ + debug=$(debug) profile=$(profile) shared=$(shared) \ + libext=$(LIBEXT) shared_libext=$(SHARED_LIBEXT)) + +internal-test_lib-all_:: $(GNUSTEP_OBJ_DIR) \ + $(GNUSTEP_OBJ_DIR)/$(GNUSTEP_INSTANCE) + +$(GNUSTEP_OBJ_DIR)/$(GNUSTEP_INSTANCE): $(OBJ_FILES_TO_LINK) + $(LD) $(ALL_LDFLAGS) -o $(LDOUT)$@ \ + $(OBJ_FILES_TO_LINK) \ + $(ALL_TEST_LIBRARY_LIBS) + +dejagnu_vars = "FOUNDATION_LIBRARY=$(FOUNDATION_LIB)" \ + "OBJC_RUNTIME=$(OBJC_RUNTIME)" + +internal-test_lib-check:: $(SCRIPTS_DIRECTORY)/config/unix.exp \ + really-testlib-check + +really-test_lib-check: + @(additional_library_paths="`echo $(ADDITIONAL_LIB_DIRS) | sed 's/-L//g'`"; \ + additional_library_paths="`$(GNUSTEP_MAKEFILES)/transform_paths.sh $$additional_library_paths`"; \ + . $(GNUSTEP_MAKEFILES)/ld_lib_path.sh; \ + for f in $(CHECK_SCRIPT_DIRS); do \ + if [ "$(SCRIPTS_DIRECTORY)" != "" ]; then \ + echo "cd $(SCRIPTS_DIRECTORY); runtest --tool $$f --srcdir . PROG=../$(GNUSTEP_OBJ_DIR)/$(GNUSTEP_INSTANCE) $(dejagnu_vars) $(ADDITIONAL_DEJAGNU_VARS)"; \ + (cd $(SCRIPTS_DIRECTORY); runtest --tool $$f --srcdir . PROG=../$(GNUSTEP_OBJ_DIR)/$(GNUSTEP_INSTANCE) $(dejagnu_vars) $(ADDITIONAL_DEJAGNU_VARS)); \ + else \ + runtest --tool $$f --srcdir . PROG=./$(GNUSTEP_INSTANCE) \ + $(dejagnu_vars) $(ADDITIONAL_DEJAGNU_VARS); \ + fi; \ + done) + +_FORCE:: + +$(SCRIPTS_DIRECTORY)/config/unix.exp: _FORCE + $(ECHO_CREATING)$(MKDIRS) $(SCRIPTS_DIRECTORY)/config$(END_ECHO) + @(echo "Creating the $@ file..."; \ + echo "## Do Not Edit ##" > $@; \ + (echo "# Contents generated automatically by Makefile"; \ + echo "#"; \ + echo ""; \ + echo "set OBJC_RUNTIME $(OBJC_RUNTIME)"; \ + echo "set FOUNDATION_LIBRARY $(FOUNDATION_LIB)"; \ + echo ""; \ + echo "if {[file isdirectory $(GNUSTEP_USER_ROOT)/Library/Libraries/ObjCTest]} {"; \ + echo " set OBJCTEST_DIR $(GNUSTEP_USER_ROOT)/Library/Libraries/ObjCTest"; \ + echo "} elseif {[file isdirectory $(GNUSTEP_LOCAL_ROOT)/Library/Libraries/ObjCTest]} {"; \ + echo " set OBJCTEST_DIR $(GNUSTEP_LOCAL_ROOT)/Library/Libraries/ObjCTest"; \ + echo "} elseif {[file isdirectory $(GNUSTEP_SYSTEM_ROOT)/Library/Libraries/ObjCTest]} {"; \ + echo " set OBJCTEST_DIR $(GNUSTEP_SYSTEM_ROOT)/Library/Libraries/ObjCTest"; \ + echo "}"; \ + echo "set objdir `pwd`"; \ + echo "source \"\$$OBJCTEST_DIR/common.exp\""; \ + echo ""; \ + echo "# Maintain your own code in local.exp"; \ + echo "source \"config/local.exp\"") >>$@) + +internal-test_lib-install_:: + +internal-test_lib-uninstall_:: + +include $(GNUSTEP_MAKEFILES)/Instance/Shared/strings.make diff --git a/gnustep-make/Instance/test-tool.make b/gnustep-make/Instance/test-tool.make new file mode 100644 index 00000000..ca0f75f5 --- /dev/null +++ b/gnustep-make/Instance/test-tool.make @@ -0,0 +1,29 @@ +# -*-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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +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_ + diff --git a/gnustep-make/Instance/tool.make b/gnustep-make/Instance/tool.make new file mode 100644 index 00000000..cbcfb4e0 --- /dev/null +++ b/gnustep-make/Instance/tool.make @@ -0,0 +1,130 @@ +# -*-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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# +# 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 + +# This is the directory where the tools get installed. If you don't specify a +# directory they will get installed in the GNUstep Local Root. +ifneq ($($(GNUSTEP_INSTANCE)_INSTALL_DIR),) + TOOLD_INSTALL_DIR = $($(GNUSTEP_INSTANCE)_INSTALL_DIR) +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 + +ALL_TOOL_LIBS = \ + $(shell $(WHICH_LIB_SCRIPT) \ + $(ALL_LIB_DIRS) \ + $(ADDITIONAL_TOOL_LIBS) $(AUXILIARY_TOOL_LIBS) $(FND_LIBS) \ + $(ADDITIONAL_OBJC_LIBS) $(AUXILIARY_OBJC_LIBS) $(OBJC_LIBS) \ + $(TARGET_SYSTEM_LIBS) \ + debug=$(debug) profile=$(profile) shared=$(shared) \ + libext=$(LIBEXT) shared_libext=$(SHARED_LIBEXT)) + +# +# Compilation targets +# +internal-tool-all_:: $(GNUSTEP_OBJ_DIR) \ + $(GNUSTEP_OBJ_DIR)/$(GNUSTEP_INSTANCE)$(EXEEXT) + +$(GNUSTEP_OBJ_DIR)/$(GNUSTEP_INSTANCE)$(EXEEXT): $(OBJ_FILES_TO_LINK) + $(ECHO_LINKING)$(LD) $(ALL_LDFLAGS) -o $(LDOUT)$@ \ + $(OBJ_FILES_TO_LINK) \ + $(ALL_TOOL_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 = Resources/$(GNUSTEP_INSTANCE) +GNUSTEP_SHARED_BUNDLE_MAIN_PATH = Resources/$(GNUSTEP_INSTANCE) +GNUSTEP_SHARED_BUNDLE_INSTALL_DIR = $(TOOL_INSTALL_DIR) +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) + +$(TOOL_INSTALL_DIR)/Resources: + $(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO) + +internal-tool-install_:: $(TOOL_INSTALL_DIR)/Resources \ + shared-instance-bundle-install + +internal-tool-uninstall:: shared-instance-bundle-uninstall + +endif + +include $(GNUSTEP_MAKEFILES)/Instance/Shared/strings.make diff --git a/gnustep-make/Master/README b/gnustep-make/Master/README new file mode 100644 index 00000000..7897e926 --- /dev/null +++ b/gnustep-make/Master/README @@ -0,0 +1,55 @@ +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. diff --git a/gnustep-make/Master/aggregate.make b/gnustep-make/Master/aggregate.make new file mode 100644 index 00000000..6851f6a4 --- /dev/null +++ b/gnustep-make/Master/aggregate.make @@ -0,0 +1,80 @@ +# +# aggregate.make +# +# Master Makefile rules to build a set of GNUstep-base subprojects. +# +# Copyright (C) 1997-2002 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +ifeq ($(RULES_MAKE_LOADED),) +include $(GNUSTEP_MAKEFILES)/rules.make +endif + +# +# The list of aggregate project directory names is in the makefile +# variable SUBPROJECTS. The name is unforunate, because it is confusingly +# similar to xxx_SUBPROJECTS, which is used for subprojects. +# +# SUBPROJECTS - which is implemented in this file - are just a list of +# directories; we step in each directory in turn, and run 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 SUBPROJECTS. +# +# xxx_SUBPROJECTS - which is *not* implemented in this file, I'm just +# explaining it here to make clear the difference - are again a list +# of directories, each of which should contain a *subproject* project +# type (as implemented by subproject.make), which builds stuff into a +# .o file, which is then automatically linked into the xxx instance by +# gnustep-make when the top-level xxx is built. For example, a +# library might be broken into many separate subprojects, each of +# which implementing a logically separated part of the library; the +# top-level GNUmakefile will then build the library, specifying +# xxx_SUBPROJECTS for the library to be those directories. +# gnustep-make will step in all dirs, compile the subprojects, and +# then finally automatically link the subprojects into the main +# library. +SUBPROJECTS := $(strip $(SUBPROJECTS)) + +ifneq ($(SUBPROJECTS),) +internal-all internal-install internal-uninstall internal-clean \ + internal-distclean internal-check internal-strings:: + @ operation=$(subst internal-,,$@); \ + abs_build_dir="$(ABS_GNUSTEP_BUILD_DIR)"; \ + for f in $(SUBPROJECTS); do \ + echo "Making $$operation in $$f..."; \ + mf=$(MAKEFILE_NAME); \ + if [ ! -f "$$f/$$mf" -a -f "$$f/Makefile" ]; then \ + mf=Makefile; \ + echo "WARNING: No $(MAKEFILE_NAME) found for aggregate project $$f; using 'Makefile'"; \ + fi; \ + if [ "$${abs_build_dir}" = "." ]; then \ + gsbuild="."; \ + else \ + gsbuild="$${abs_build_dir}/$$f"; \ + fi; \ + if $(MAKE) -C $$f -f $$mf --no-keep-going $$operation \ + GNUSTEP_BUILD_DIR="$$gsbuild"; then \ + :; else exit $$?; \ + fi; \ + done +endif + diff --git a/gnustep-make/Master/application.make b/gnustep-make/Master/application.make new file mode 100644 index 00000000..bc333591 --- /dev/null +++ b/gnustep-make/Master/application.make @@ -0,0 +1,82 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +ifeq ($(RULES_MAKE_LOADED),) +include $(GNUSTEP_MAKEFILES)/rules.make +endif + +APP_NAME := $(strip $(APP_NAME)) + +internal-all:: $(APP_NAME:=.all.app.variables) + +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_FLATTENED),) + (cd $(GNUSTEP_BUILD_DIR); \ + rm -rf $(GNUSTEP_OBJ_DIR_NAME) $(_PSWRAP_C_FILES) $(_PSWRAP_H_FILES) \ + $(_PLIST_INFO_FILES) *.$(APP_EXTENSION)/$(GNUSTEP_TARGET_LDIR)) +else + (cd $(GNUSTEP_BUILD_DIR); \ + rm -rf $(GNUSTEP_OBJ_DIR_NAME) $(_PSWRAP_C_FILES) $(_PSWRAP_H_FILES) \ + $(_PLIST_INFO_FILES) *.$(APP_EXTENSION)) +endif + +internal-distclean:: + (cd $(GNUSTEP_BUILD_DIR); \ + rm -rf shared_obj static_obj shared_debug_obj shared_profile_obj \ + static_debug_obj static_profile_obj shared_profile_debug_obj \ + static_profile_debug_obj *.app *.debug *.profile) + +# The following make trick extracts all tools 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): + @$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory $@.all.app.variables diff --git a/gnustep-make/Master/bundle.make b/gnustep-make/Master/bundle.make new file mode 100644 index 00000000..8c4f7d9f --- /dev/null +++ b/gnustep-make/Master/bundle.make @@ -0,0 +1,61 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +ifeq ($(RULES_MAKE_LOADED),) +include $(GNUSTEP_MAKEFILES)/rules.make +endif + +BUNDLE_NAME := $(strip $(BUNDLE_NAME)) + +internal-all:: $(BUNDLE_NAME:=.all.bundle.variables) + +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 $(GNUSTEP_OBJ_DIR_NAME) $(_PSWRAP_C_FILES) $(_PSWRAP_H_FILES) \ + $(addsuffix $(BUNDLE_EXTENSION),$(BUNDLE_NAME))) + +internal-distclean:: + (cd $(GNUSTEP_BUILD_DIR); \ + rm -rf shared_obj static_obj shared_debug_obj shared_profile_obj \ + static_debug_obj static_profile_obj shared_profile_debug_obj \ + static_profile_debug_obj) + +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): + @$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \ + $@.all.bundle.variables diff --git a/gnustep-make/Master/clibrary.make b/gnustep-make/Master/clibrary.make new file mode 100644 index 00000000..82fe119b --- /dev/null +++ b/gnustep-make/Master/clibrary.make @@ -0,0 +1,59 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +ifeq ($(RULES_MAKE_LOADED),) +include $(GNUSTEP_MAKEFILES)/rules.make +endif + +CLIBRARY_NAME := $(strip $(CLIBRARY_NAME)) + +internal-all:: $(CLIBRARY_NAME:=.all.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:: + (cd $(GNUSTEP_BUILD_DIR); \ + rm -rf $(GNUSTEP_OBJ_DIR_NAME) $(_PSWRAP_C_FILES) $(_PSWRAP_H_FILES)) + +internal-distclean:: + (cd $(GNUSTEP_BUILD_DIR); \ + rm -rf shared_obj static_obj shared_debug_obj shared_profile_obj \ + static_debug_obj static_profile_obj shared_profile_debug_obj \ + static_profile_debug_obj) + +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): + @$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \ + $@.all.clibrary.variables diff --git a/gnustep-make/Master/ctool.make b/gnustep-make/Master/ctool.make new file mode 100644 index 00000000..7dfbdc65 --- /dev/null +++ b/gnustep-make/Master/ctool.make @@ -0,0 +1,54 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +ifeq ($(RULES_MAKE_LOADED),) +include $(GNUSTEP_MAKEFILES)/rules.make +endif + +CTOOL_NAME := $(strip $(CTOOL_NAME)) + +internal-all:: $(CTOOL_NAME:=.all.ctool.variables) + +internal-install:: $(CTOOL_NAME:=.install.ctool.variables) + +internal-uninstall:: $(CTOOL_NAME:=.uninstall.ctool.variables) + +internal-clean:: + rm -rf $(GNUSTEP_OBJ_DIR) + +internal-distclean:: + (cd $(GNUSTEP_BUILD_DIR); \ + rm -rf shared_obj static_obj shared_debug_obj shared_profile_obj \ + static_debug_obj static_profile_obj shared_profile_debug_obj \ + static_profile_debug_obj) + +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): + @$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \ + $@.all.ctool.variables diff --git a/gnustep-make/Master/documentation.make b/gnustep-make/Master/documentation.make new file mode 100644 index 00000000..3aa5a6e8 --- /dev/null +++ b/gnustep-make/Master/documentation.make @@ -0,0 +1,48 @@ +# -*-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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +ifeq ($(RULES_MAKE_LOADED),) +include $(GNUSTEP_MAKEFILES)/rules.make +endif + +DOCUMENT_NAME := $(strip $(DOCUMENT_NAME)) +DOCUMENT_TEXT_NAME := $(strip $(DOCUMENT_TEXT_NAME)) + +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) + +#$(DOCUMENT_NAME): +# @$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \ +# $@.all.doc.variables + diff --git a/gnustep-make/Master/framework.make b/gnustep-make/Master/framework.make new file mode 100644 index 00000000..2e8f1b90 --- /dev/null +++ b/gnustep-make/Master/framework.make @@ -0,0 +1,47 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +ifeq ($(RULES_MAKE_LOADED),) +include $(GNUSTEP_MAKEFILES)/rules.make +endif + +FRAMEWORK_NAME := $(strip $(FRAMEWORK_NAME)) + +# A framework has a special task to do before-all, which is to build +# the public framework headers. +before-all:: $(FRAMEWORK_NAME:=.build-headers.framework.variables) + +internal-all:: $(FRAMEWORK_NAME:=.all.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): + @$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \ + $@.all.framework.variables diff --git a/gnustep-make/Master/gswapp.make b/gnustep-make/Master/gswapp.make new file mode 100644 index 00000000..f0782745 --- /dev/null +++ b/gnustep-make/Master/gswapp.make @@ -0,0 +1,74 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +ifeq ($(RULES_MAKE_LOADED),) +include $(GNUSTEP_MAKEFILES)/rules.make +endif + +# Determine the application directory extension +ifeq ($(profile), yes) + GSWAPP_EXTENSION=profile +else + ifeq ($(debug), yes) + GSWAPP_EXTENSION=debug + else + GSWAPP_EXTENSION=gswa + endif +endif + +GSWAPP_NAME := $(strip $(GSWAPP_NAME)) + +internal-all:: $(GSWAPP_NAME:=.all.gswapp.variables) + +internal-install:: $(GSWAPP_NAME:=.install.gswapp.variables) + +internal-uninstall:: $(GSWAPP_NAME:=.uninstall.gswapp.variables) + +internal-clean:: +ifeq ($(GNUSTEP_FLATTENED),) + (cd $(GNUSTEP_BUILD_DIR); \ + rm -rf $(GNUSTEP_OBJ_DIR_NAME) \ + *.$(GSWAPP_EXTENSION)/$(GNUSTEP_TARGET_LDIR)) +else + (cd $(GNUSTEP_BUILD_DIR); \ + rm -rf $(GNUSTEP_OBJ_DIR_NAME) *.$(GSWAPP_EXTENSION)) +endif + +internal-distclean:: + (cd $(GNUSTEP_BUILD_DIR); \ + rm -rf shared_obj static_obj shared_debug_obj shared_profile_obj \ + static_debug_obj static_profile_obj shared_profile_debug_obj \ + static_profile_debug_obj *.gswa *.debug *.profile) + +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): + @$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \ + $@.all.gswapp.variables diff --git a/gnustep-make/Master/gswbundle.make b/gnustep-make/Master/gswbundle.make new file mode 100644 index 00000000..bb2c33a2 --- /dev/null +++ b/gnustep-make/Master/gswbundle.make @@ -0,0 +1,61 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +ifeq ($(RULES_MAKE_LOADED),) +include $(GNUSTEP_MAKEFILES)/rules.make +endif + +ifeq ($(strip $(GSWBUNDLE_EXTENSION)),) +GSWBUNDLE_EXTENSION = .gswbundle +endif + +GSWBUNDLE_NAME := $(strip $(GSWBUNDLE_NAME)) + +internal-all:: $(GSWBUNDLE_NAME:=.all.gswbundle.variables) + +internal-install:: $(GSWBUNDLE_NAME:=.install.gswbundle.variables) + +internal-uninstall:: $(GSWBUNDLE_NAME:=.uninstall.gswbundle.variables) + +internal-clean:: + (cd $(GNUSTEP_BUILD_DIR); \ + rm -rf $(GNUSTEP_OBJ_DIR_NAME) \ + $(addsuffix $(GSWBUNDLE_EXTENSION),$(GSWBUNDLE_NAME))) + +internal-distclean:: + (CD $(GNUSTEP_BUILD_DIR); \ + rm -rf shared_obj static_obj shared_debug_obj shared_profile_obj \ + static_debug_obj static_profile_obj shared_profile_debug_obj \ + static_profile_debug_obj) + +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): + @$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \ + $@.all.gswbundle.variables diff --git a/gnustep-make/Master/java-tool.make b/gnustep-make/Master/java-tool.make new file mode 100644 index 00000000..4f36312a --- /dev/null +++ b/gnustep-make/Master/java-tool.make @@ -0,0 +1,54 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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 + +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): + @$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \ + $@.all.java_tool.variables diff --git a/gnustep-make/Master/java.make b/gnustep-make/Master/java.make new file mode 100644 index 00000000..08129bb6 --- /dev/null +++ b/gnustep-make/Master/java.make @@ -0,0 +1,46 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +ifeq ($(RULES_MAKE_LOADED),) +include $(GNUSTEP_MAKEFILES)/rules.make +endif + +JAVA_PACKAGE_NAME := $(strip $(JAVA_PACKAGE_NAME)) + +internal-all:: $(JAVA_PACKAGE_NAME:=.all.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): + @$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \ + $@.all.java-package.variables diff --git a/gnustep-make/Master/library.make b/gnustep-make/Master/library.make new file mode 100644 index 00000000..6dac2412 --- /dev/null +++ b/gnustep-make/Master/library.make @@ -0,0 +1,59 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +ifeq ($(RULES_MAKE_LOADED),) +include $(GNUSTEP_MAKEFILES)/rules.make +endif + +LIBRARY_NAME := $(strip $(LIBRARY_NAME)) + +internal-all:: $(LIBRARY_NAME:=.all.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:: + (cd $(GNUSTEP_BUILD_DIR); \ + rm -rf $(GNUSTEP_OBJ_DIR_NAME) $(_PSWRAP_C_FILES) $(_PSWRAP_H_FILES)) + +internal-distclean:: + (cd $(GNUSTEP_BUILD_DIR); \ + rm -rf shared_obj static_obj shared_debug_obj shared_profile_obj \ + static_debug_obj static_profile_obj shared_profile_debug_obj \ + static_profile_debug_obj) + +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): + @$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \ + $@.all.library.variables diff --git a/gnustep-make/Master/objc.make b/gnustep-make/Master/objc.make new file mode 100644 index 00000000..e81640ef --- /dev/null +++ b/gnustep-make/Master/objc.make @@ -0,0 +1,54 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +OBJC_PROGRAM_NAME := $(strip $(OBJC_PROGRAM_NAME)) + +ifeq ($(RULES_MAKE_LOADED),) +include $(GNUSTEP_MAKEFILES)/rules.make +endif + +internal-all:: $(OBJC_PROGRAM_NAME:=.all.objc-program.variables) + +internal-install:: $(OBJC_PROGRAM_NAME:=.install.objc-program.variables) + +internal-uninstall:: $(OBJC_PROGRAM_NAME:=.uninstall.objc-program.variables) + +internal-clean:: + rm -rf $(GNUSTEP_OBJ_DIR) + +internal-distclean:: + (cd $(GNUSTEP_BUILD_DIR); \ + rm -rf shared_obj static_obj shared_debug_obj shared_profile_obj \ + static_debug_obj static_profile_obj shared_profile_debug_obj \ + static_profile_debug_obj) + +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): + @$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \ + $@.all.objc-program.variables diff --git a/gnustep-make/Master/palette.make b/gnustep-make/Master/palette.make new file mode 100644 index 00000000..4cb4fd2e --- /dev/null +++ b/gnustep-make/Master/palette.make @@ -0,0 +1,66 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +ifeq ($(RULES_MAKE_LOADED),) +include $(GNUSTEP_MAKEFILES)/rules.make +endif + +PALETTE_NAME:=$(strip $(PALETTE_NAME)) + +internal-all:: $(PALETTE_NAME:=.all.palette.variables) + +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_FLATTENED),) + (cd $(GNUSTEP_BUILD_DIR); \ + rm -rf $(GNUSTEP_OBJ_DIR_NAME) $(_PSWRAP_C_FILES) $(_PSWRAP_H_FILES) \ + *.palette/$(GNUSTEP_TARGET_LDIR)) +else + (cd $(GNUSTEP_BUILD_DIR); \ + rm -rf $(GNUSTEP_OBJ_DIR_NAME) $(_PSWRAP_C_FILES) $(_PSWRAP_H_FILES) \ + *.palette) +endif + +internal-distclean:: + (cd $(GNUSTEP_BUILD_DIR); \ + rm -rf shared_obj static_obj shared_debug_obj shared_profile_obj \ + static_debug_obj static_profile_obj shared_profile_debug_obj \ + static_profile_debug_obj *.palette) + +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): + @$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \ + $@.all.palette.variables diff --git a/gnustep-make/Master/resource-set.make b/gnustep-make/Master/resource-set.make new file mode 100644 index 00000000..a64ce356 --- /dev/null +++ b/gnustep-make/Master/resource-set.make @@ -0,0 +1,39 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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:: + diff --git a/gnustep-make/Master/rpm.make b/gnustep-make/Master/rpm.make new file mode 100644 index 00000000..57721c63 --- /dev/null +++ b/gnustep-make/Master/rpm.make @@ -0,0 +1,366 @@ +# +# rpm.make +# +# Makefile rules to build a RPM spec files and RPM packages +# +# Copyright (C) 2001 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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>. +# +# +# You can build two kind of packages: +# - normal packages +# - debugging packages +# +# First we describe normal packages. +# +# 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_DIR - Installation dir (defaults to GNUSTEP_LOCAL_ROOT) +# +# If your package is relocatable (this is true by default - see below +# for how to make it non-relocatable) the user will be able to install +# the package elsewhere by using something like `rpm -Uvh --prefix +# /home/nicola/GNUstep your_package.rpm' when installing the package. +# + +# [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 +# Copyright: 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. The `Prefix:' entry is automatically included only +# if your package is relocatable (should be the default for all +# non-system packages. If you want your package to be non-relocatable +# (to be used only for system packages which *must* be installed in +# GNUSTEP_SYSTEM_ROOT), add the line +# +# RPM_DISABLE_RELOCATABLE=YES +# +# (FIXME improve variable name) to your GNUmakefile. This will not generate +# a `Prefix:' line in the spec file. +# +# +# 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 --prefix=/usr/GNUstep' +# (/usr/GNUstep being replaced by your GNUSTEP_SYSTEM_ROOT) 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. +# + +# +# Debugging packages. +# + +# +# A debugging package is called +# $(PACKAGE_NAME)-debug-$(PACKAGE_VERSION) rather than +# $(PACKAGE_NAME)-$(PACKAGE_VERSION). The source .tgz have the same +# name though. The source rpm package instead has a different name +# because it contains the .spec file, which is different between debug +# and non debug version. +# +# To build the spec for the debugging package, type `make debug=yes specfile'. +# This builds a specfile as for the non-debugging package, except: +# +# It uses $(PACKAGE_NAME)-debug.spec.in rather than +# ${PACKAGE_NAME).spec.in if found. (this allows you to customize +# package description, summary, release number, group for the +# debugging case). +# +# It will compile everything with debugging enabled when building the +# debugging package. +# +# It will manage the package having a different name (eg +# Gomoku-debug-1.1.1) than the .tgz (eg Gomoku-1.1.1.tgz). +# +# Unless `standalone=yes' (ie, unless you create the specfile using +# `make debug=yes standalone=yes specfile') it will perform the following +# additional tasks: +# +# * build and install the non-debugging software before the debugging one; +# * remove from the debugging package all files already included in the +# non-debugging one (this is why it needs to build the non-debugging +# software first); +# * add a dependency of the debugging package from the non-debugging one. +# +# <FIXME: Add comments about when is appropriate one and when the other one> + +# +# 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 INSTALL_ROOT_DIR=/var/tmp/package-build/ \ +# GNUSTEP_INSTALLATION_DIR=/var/tmp/package-build/usr/GNUstep/Local \ +# filelist=yes install +# +# we are being called inside the rpm installation stage, and we need +# to produce the file list from the installed files. + +ifeq ($(filelist),yes) + + # Build the file-list only at top level +# ifeq ($(MAKELEVEL),0) + + # Determine which file list to build + ifeq ($(debug),yes) + FILE_LIST = $(shell pwd)/file-list-debug + else + FILE_LIST = $(shell pwd)/file-list + endif + + # Remove the old file list before installing, and initialize the new one. + before-install:: + -rm -f $(FILE_LIST) + echo "%attr (-, root, root)" >> $(FILE_LIST) + + # install - done by other GNUmakefiles - NB: must install everything inside + # GNUSTEP_INSTALLATION_DIR, or prefix all installation dirs with + # $INSTALL_ROOT_DIR such as + # $(INSTALL_DATA) page.html $(INSTALL_ROOT_DIR)/usr/local/MySoftware/ + # instead of $(INSTALL_DATA) page.html /usr/local/MySoftware/ + + # Get the list of files inside GNUSTEP_INSTALL_BASE + internal-after-install:: + for file in `$(TAR) Pcf - $(INSTALL_ROOT_DIR) | $(TAR) t`; do \ + if [ -d "$$file" ]; then \ + echo "%dir $$file" > /dev/null; \ + else \ + echo "$$file" >> $(FILE_LIST); \ + fi; \ + done + sed -e "s|$(INSTALL_ROOT_DIR)||" $(FILE_LIST) > file-list.tmp + mv file-list.tmp $(FILE_LIST) + +# endif # MAKELEVEL + +endif # filelist == yes + + +# +# Manage debug vs non-debug +# +ifneq ($(debug), yes) + SPEC_FILE=$(PACKAGE_NAME).spec + SPEC_RULES_TEMPLATE=$(GNUSTEP_MAKEFILES)/spec-rules.template + SPEC_IN=$(PACKAGE_NAME).spec.in + SPEC_SCRIPT_IN=$(PACKAGE_NAME).script.spec.in + PACKAGE_EXTENSION="" +else + SPEC_FILE=$(PACKAGE_NAME)-debug.spec + ifeq ($(standalone),yes) + SPEC_RULES_TEMPLATE=$(GNUSTEP_MAKEFILES)/spec-debug-alone-rules.template + else + SPEC_RULES_TEMPLATE=$(GNUSTEP_MAKEFILES)/spec-debug-rules.template + endif + SPEC_IN=$(PACKAGE_NAME)-debug.spec.in + SPEC_SCRIPT_IN=$(PACKAGE_NAME)-debug.script.spec.in + PACKAGE_EXTENSION="-debug" +endif + +.PHONY: specfile rpm check-RPM_TOPDIR + +# +# The user will type `make specfile' to generate the specfile +# +specfile: $(SPEC_FILE) + +# +# Issue a warning if the $(PACKAGE_NAME)-debug.spec.in file is not found +# +$(PACKAGE_NAME)-debug.spec.in: + @echo "WARNING - $(PACKAGE_NAME)-debug.spec.in not found!" + @echo "You need to create it to build the debugging package." + @echo "If you already have a $(PACKAGE_NAME).spec.in, just take it as" + @echo "a start for the $(PACKAGE_NAME)-debug.spec.in - and make" + @echo "the little necessary changes in summary and description." + @echo "" + +# +# This is the real target - depends on having a correct .spec.in file +# +$(SPEC_FILE): $(SPEC_IN) + @echo "Generating the spec file..." + @-rm -f $@ + @echo "##" >> $@ + @echo "## Generated automatically by GNUstep make - do not edit!" >> $@ + @echo "## Edit the $(SPEC_IN) file instead" >> $@ + @echo "##" >> $@ + @echo " " >> $@ + @echo "## Code dynamically generated" >> $@ + @echo "%define gs_root $(GNUSTEP_SYSTEM_ROOT)" >> $@ + @echo "%define gs_install_dir $(GNUSTEP_INSTALLATION_DIR)" >> $@ + @echo "%define gs_name $(PACKAGE_NAME)" >> $@ + @echo "%define gs_version $(PACKAGE_VERSION)" >> $@ +ifeq ($(PACKAGE_NEEDS_CONFIGURE),YES) + @echo "%define gs_configure YES" >> $@ +else + @echo "%define gs_configure NO" >> $@ +endif + @echo " " >> $@ + @echo "Name: %{gs_name}$(PACKAGE_EXTENSION)" >> $@ + @echo "Version: %{gs_version}" >> $@ + @echo "BuildRoot: /var/tmp/%{gs_name}-buildroot" >> $@ +ifeq ($(RPM_DISABLE_RELOCATABLE),YES) + @echo "Prefix: %{gs_install_dir}" >> $@ +endif +ifeq ($(debug),yes) +ifneq ($(standalone),yes) + @echo "requires: %{gs_name} = %{gs_version}" >> $@ +endif +endif + @echo "" >> $@ + @echo "## Code from $(SPEC_IN)" >> $@ + @cat $(SPEC_IN) >> $@ + @echo "" >> $@ + @echo "## Fixed rules from $(SPEC_RULES_TEMPLATE)" >> $@ + @cat $(SPEC_RULES_TEMPLATE) >> $@ + @ if [ -f $(SPEC_SCRIPT_IN) ]; then \ + echo "" >> $@; \ + echo "## Script rules from $(SPEC_SCRIPT_IN)" >> $@; \ + cat $(SPEC_SCRIPT_IN) >> $@; \ + fi + +check-RPM_TOPDIR: + @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; + +# 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 "Generating the rpm..."; +ifneq ($(RELEASE_DIR),) + @cp $(RELEASE_DIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION).tar.gz \ + $(RPM_TOPDIR)/SOURCES/; +else + @cp ../$(PACKAGE_NAME)-$(PACKAGE_VERSION).tar.gz $(RPM_TOPDIR)/SOURCES/; +endif + @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) + +ifneq ($(PACKAGE_NAME),) +internal-distclean:: + rm -rf $(PACKAGE_NAME).spec $(PACKAGE_NAME)-debug.spec +endif diff --git a/gnustep-make/Master/rules.make b/gnustep-make/Master/rules.make new file mode 100644 index 00000000..97e036c1 --- /dev/null +++ b/gnustep-make/Master/rules.make @@ -0,0 +1,421 @@ +# -*-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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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 INTERNAL_tool_NAME=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 +endif + +# 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. +ifeq ($(MAKELEVEL),0) +install:: internal-check-install-permissions all \ + before-install internal-install after-install internal-after-install +else +install:: before-install internal-install after-install internal-after-install +endif + +uninstall:: before-uninstall internal-uninstall after-uninstall + +clean:: before-clean internal-clean after-clean + +ifeq ($(MAKELEVEL),0) +distclean:: clean before-distclean internal-distclean after-distclean +else +distclean:: before-distclean internal-distclean after-distclean +endif + +check:: before-check internal-check after-check + +strings:: before-strings internal-strings after-strings + +# +# Placeholders for internal targets +# + +before-all:: + +internal-all:: + +after-all:: + +# In case of problems, we print a message trying to educate the user +# about how to install elsewhere, except if the installation dir is +# GNUSTEP_SYSTEM_ROOT, in that case we don't want to suggest to +# install the software elsewhere, because it is likely to be system +# software like the gnustep-base library. NB: the check of +# GNUSTEP_INSTALLATION_DIR against GNUSTEP_SYSTEM_ROOT is not perfect +# as /usr/GNUstep/System/ might not match /usr/GNUstep/System (note +# the missing '/' at the end) but what we really want to catch is the +# GNUSTEP_INSTALLATION_DIR = $(GNUSTEP_SYSTEM_ROOT) command in the +# makefiles, and the check of course works with it. +internal-check-install-permissions: + @if [ -d "$(GNUSTEP_INSTALLATION_DIR)" \ + -a ! -w "$(GNUSTEP_INSTALLATION_DIR)" ]; then \ + echo "*ERROR*: the software is configured to install itself into $(GNUSTEP_INSTALLATION_DIR)"; \ + echo "but you do not have permissions to write in that directory:";\ + echo "Aborting installation."; \ + echo ""; \ + if [ "$(GNUSTEP_INSTALLATION_DIR)" != "$(GNUSTEP_SYSTEM_ROOT)" ]; then \ + echo "Suggestion: if you can't get permissions to install there, you can try";\ + echo "to install the software in a different directory by setting";\ + echo "GNUSTEP_INSTALLATION_DIR. For example, to install into";\ + echo "$(GNUSTEP_USER_ROOT), which is your own GNUstep directory, just type"; \ + echo ""; \ + echo "make install GNUSTEP_INSTALLATION_DIR=\"$(GNUSTEP_USER_ROOT)\""; \ + echo ""; \ + echo "You should always be able to install into $(GNUSTEP_USER_ROOT),";\ + echo "so this might be a good option. The other meaningful values for";\ + echo "GNUSTEP_INSTALLATION_DIR on your system are:";\ + echo "$(GNUSTEP_SYSTEM_ROOT) (the System directory)";\ + echo "$(GNUSTEP_LOCAL_ROOT) (the Local directory)";\ + echo "$(GNUSTEP_NETWORK_ROOT) (the Network directory)";\ + echo "but you might need special permissions to install in those directories.";\ + fi; \ + exit 1; \ + fi + +before-install:: + +internal-install:: + +after-install:: + +# The following for exclusive use of packaging code +internal-after-install:: + +before-uninstall:: + +internal-uninstall:: + +after-uninstall:: + +before-clean:: + +internal-clean:: + rm -rf $(GNUSTEP_BUILD_DIR)/*~ $(GNUSTEP_BUILD_DIR)/obj + +after-clean:: + +before-distclean:: + +internal-distclean:: + rm -f $(GNUSTEP_BUILD_DIR)/core + +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 \ + 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 + +# Prevent make from trying to remove stuff like +# libcool.library.all.subprojects thinking that it is a temporary file +.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. +# +# 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). + +# NB: INTERNAL_$${type}_NAME and TARGET are deprecated - use +# GNUSTEP_INSTANCE instead. + +# 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: + @ \ +instance=$(basename $(basename $*)); \ +operation=$(subst .,,$(suffix $(basename $*))); \ +type=$(subst -,_,$(subst .,,$(suffix $*))); \ +abs_build_dir="$(ABS_GNUSTEP_BUILD_DIR)"; \ +if [ "$($(basename $(basename $*))_SUBPROJECTS)" != "" ]; then \ + echo Making $$operation in subprojects of $$type $$instance...; \ + for f in $($(basename $(basename $*))_SUBPROJECTS) __done; do \ + if [ $$f != __done ]; then \ + mf=$(MAKEFILE_NAME); \ + if [ ! -f $$f/$$mf -a -f $$f/Makefile ]; then \ + mf=Makefile; \ + echo "WARNING: No $(MAKEFILE_NAME) found for subproject $$f; using 'Makefile'"; \ + fi; \ + if [ "$${abs_build_dir}" = "." ]; then \ + gsbuild="."; \ + else \ + gsbuild="$${abs_build_dir}/$$f"; \ + fi; \ + if [ "$(OWNING_PROJECT_HEADER_DIR_NAME)" = "" ]; then \ + if [ "$$type" = "framework" ]; then \ + framework_version="$($(basename $(basename $*))_CURRENT_VERSION_NAME)"; \ + if [ "$$framework_version" = "" ]; then framework_version="A"; fi; \ + owning_project_header_dir="../$${instance}.framework/Versions/$${framework_version}/Headers"; \ + else owning_project_header_dir=""; \ + fi; \ + else \ + owning_project_header_dir="../$(OWNING_PROJECT_HEADER_DIR_NAME)"; \ + fi; \ + if $(MAKE) -C $$f -f $$mf --no-keep-going $$operation \ + OWNING_PROJECT_HEADER_DIR_NAME="$${owning_project_header_dir}" \ + DERIVED_SOURCES="../$(DERIVED_SOURCES)" \ + GNUSTEP_BUILD_DIR="$$gsbuild" \ + ; then \ + :; \ + else exit $$?; \ + fi; \ + fi; \ + done; \ +fi; \ +echo Making $$operation for $$type $$instance...; \ +$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \ + internal-$${type}-$$operation \ + GNUSTEP_TYPE=$$type \ + GNUSTEP_INSTANCE=$$instance \ + GNUSTEP_OPERATION=$$operation \ + INTERNAL_$${type}_NAME=$$instance \ + TARGET=$$instance \ + GNUSTEP_BUILD_DIR="$${abs_build_dir}" + +# +# 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: + @ \ +instance=$(basename $(basename $*)); \ +operation=$(subst .,,$(suffix $(basename $*))); \ +type=$(subst -,_,$(subst .,,$(suffix $*))); \ +abs_build_dir="$(ABS_GNUSTEP_BUILD_DIR)"; \ +if [ "$($(basename $(basename $*))_SUBPROJECTS)" != "" ]; then \ + echo Making $$operation in subprojects of $$type $$instance...; \ + for f in $($(basename $(basename $*))_SUBPROJECTS) __done; do \ + if [ $$f != __done ]; then \ + mf=$(MAKEFILE_NAME); \ + if [ ! -f $$f/$$mf -a -f $$f/Makefile ]; then \ + mf=Makefile; \ + echo "WARNING: No $(MAKEFILE_NAME) found for subproject $$f; using 'Makefile'"; \ + fi; \ + if [ "$${abs_build_dir}" = "." ]; then \ + gsbuild="."; \ + else \ + gsbuild="$${abs_build_dir}/$$f"; \ + fi; \ + if [ "$(OWNING_PROJECT_HEADER_DIR_NAME)" = "" ]; then \ + if [ "$$type" = "framework" ]; then \ + framework_version="$($(basename $(basename $*))_CURRENT_VERSION_NAME)"; \ + if [ "$$framework_version" = "" ]; then framework_version="A"; fi; \ + owning_project_header_dir="../$${instance}.framework/Versions/$${framework_version}/Headers"; \ + else owning_project_header_dir=""; \ + fi; \ + else \ + owning_project_header_dir="../$(OWNING_PROJECT_HEADER_DIR_NAME)"; \ + fi; \ + if $(MAKE) -C $$f -f $$mf --no-keep-going $$operation \ + OWNING_PROJECT_HEADER_DIR_NAME="$${owning_project_header_dir}" \ + DERIVED_SOURCES="../$(DERIVED_SOURCES)" \ + GNUSTEP_BUILD_DIR="$$gsbuild" \ + ; then \ + :; \ + else exit $$?; \ + fi; \ + fi; \ + done; \ +fi + +# +# 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> diff --git a/gnustep-make/Master/service.make b/gnustep-make/Master/service.make new file mode 100644 index 00000000..ed558455 --- /dev/null +++ b/gnustep-make/Master/service.make @@ -0,0 +1,66 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +ifeq ($(RULES_MAKE_LOADED),) +include $(GNUSTEP_MAKEFILES)/rules.make +endif + +SERVICE_NAME := $(strip $(SERVICE_NAME)) + +internal-all:: $(SERVICE_NAME:=.all.service.variables) + +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_FLATTENED),) + (cd $(GNUSTEP_BUILD_DIR); \ + rm -rf $(GNUSTEP_OBJ_DIR_NAME) $(_PSWRAP_C_FILES) $(_PSWRAP_H_FILES) \ + *.service/$(GNUSTEP_TARGET_LDIR)) +else + (cd $(GNUSTEP_BUILD_DIR); \ + rm -rf $(GNUSTEP_OBJ_DIR_NAME) $(_PSWRAP_C_FILES) $(_PSWRAP_H_FILES) \ + *.service) +endif + +internal-distclean:: + (cd $(GNUSTEP_BUILD_DIR); \ + rm -rf shared_obj static_obj shared_debug_obj shared_profile_obj \ + static_debug_obj static_profile_obj shared_profile_debug_obj \ + static_profile_debug_obj *.service) + +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): + @$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \ + $@.all.service.variables diff --git a/gnustep-make/Master/source-distribution.make b/gnustep-make/Master/source-distribution.make new file mode 100644 index 00000000..6c35f625 --- /dev/null +++ b/gnustep-make/Master/source-distribution.make @@ -0,0 +1,233 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# +# Interesting variables to define in your GNUmakefile: +# +# PACKAGE_NAME = gnustep-base +# PACKAGE_VERSION = 1.0.0 +# +# 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. +# + +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 + +# 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 + +# +# 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 + +VERSION_NAME = $(PACKAGE_NAME)-$(PACKAGE_VERSION) + +ARCHIVE_FILE = $(VERSION_NAME).tar$(COMPRESSION_EXT) + +VERTAG = $(subst .,_,$(PACKAGE_VERSION)) + +.PHONY: dist cvs-tag cvs-dist cvs-snapshot internal-cvs-export + +# +# Build a .tar.gz with the whole directory tree +# +dist: distclean + @echo "Generating $(ARCHIVE_FILE) in the parent directory..."; \ + SNAPSHOT_DIR=`basename $$(pwd)`; \ + cd ..; \ + if [ "$$SNAPSHOT_DIR" != "$(VERSION_NAME)" ]; then \ + if [ -d "$(VERSION_NAME)" ]; then \ + echo "$(VERSION_NAME) already exists in parent directory (?):"; \ + echo "Saving old version in $(VERSION_NAME)~"; \ + mv $(VERSION_NAME) $(VERSION_NAME)~; \ + fi; \ + mv $$SNAPSHOT_DIR $(VERSION_NAME);\ + fi; \ + 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 \ + mv $(VERSION_NAME) $$SNAPSHOT_DIR; \ + fi; \ + if [ ! -f $(ARCHIVE_FILE) ]; then \ + echo "*Error* creating .tar$(COMPRESSION_EXT) archive"; \ + exit 1; \ + fi; +ifneq ($(RELEASE_DIR),) + @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) +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 "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; +ifneq ($(RELEASE_DIR),) + @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) +endif diff --git a/gnustep-make/Master/subproject.make b/gnustep-make/Master/subproject.make new file mode 100644 index 00000000..62292064 --- /dev/null +++ b/gnustep-make/Master/subproject.make @@ -0,0 +1,80 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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 + +.PHONY: build-headers +build-headers:: $(SUBPROJECT_NAME:=.build-headers.subproject.variables) + +internal-all:: $(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:: + (cd $(GNUSTEP_BUILD_DIR); \ + rm -rf $(GNUSTEP_OBJ_DIR_NAME) $(_PSWRAP_C_FILES) $(_PSWRAP_H_FILES)) + +internal-distclean:: + (cd $(GNUSTEP_BUILD_DIR); \ + rm -rf shared_obj static_obj shared_debug_obj shared_profile_obj \ + static_debug_obj static_profile_obj shared_profile_debug_obj \ + static_profile_debug_obj) + +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 + +# If the subproject has a resource bundle, destroy it on distclean +ifeq ($($(SUBPROJECT_NAME)_HAS_RESOURCE_BUNDLE), yes) +internal-distclean:: + rm -rf Resources +endif + +internal-strings:: $(SUBPROJECT_NAME:=.strings.subproject.variables) + +$(SUBPROJECT_NAME): + @$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \ + $@.all.subproject.variables diff --git a/gnustep-make/Master/test-application.make b/gnustep-make/Master/test-application.make new file mode 100644 index 00000000..048f8a33 --- /dev/null +++ b/gnustep-make/Master/test-application.make @@ -0,0 +1,68 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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! + +internal-all:: $(TEST_APP_NAME:=.all.test-app.variables) + +_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_FLATTENED),) + (cd $(GNUSTEP_BUILD_DIR); \ + rm -rf $(GNUSTEP_OBJ_DIR_NAME) $(_PSWRAP_C_FILES) $(_PSWRAP_H_FILES) \ + *.$(APP_EXTENSION)/$(GNUSTEP_TARGET_LDIR)) +else + (cd $(GNUSTEP_BUILD_DIR); \ + rm -rf $(GNUSTEP_OBJ_DIR_NAME) $(_PSWRAP_C_FILES) $(_PSWRAP_H_FILES) \ + *.$(APP_EXTENSION)) +endif + +internal-distclean:: + (cd $(GNUSTEP_BUILD_DIR); \ + rm -rf shared_obj static_obj shared_debug_obj shared_profile_obj \ + static_debug_obj static_profile_obj shared_profile_debug_obj \ + static_profile_debug_obj *.app *.debug *.profile) + +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):: + @$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \ + $@.all.test-app.variables + +internal-install:: + @ echo Skipping installation of test apps... + +internal-uninstall:: + @ echo Skipping uninstallation of test apps... diff --git a/gnustep-make/Master/test-library.make b/gnustep-make/Master/test-library.make new file mode 100644 index 00000000..a80c8ff4 --- /dev/null +++ b/gnustep-make/Master/test-library.make @@ -0,0 +1,61 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + +TEST_LIBRARY_NAME := $(strip $(TEST_LIBRARY_NAME)) + +ifeq ($(RULES_MAKE_LOADED),) +include $(GNUSTEP_MAKEFILES)/rules.make +endif + +internal-all:: $(TEST_LIBRARY_NAME:=.all.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:: + (cd $(GNUSTEP_BUILD_DIR); \ + rm -rf $(GNUSTEP_OBJ_DIR_NAME) $(_PSWRAP_C_FILES) $(_PSWRAP_H_FILES)) + +internal-distclean:: + (cd $(GNUSTEP_BUILD_DIR); \ + rm -rf shared_obj static_obj shared_debug_obj shared_profile_obj \ + static_debug_obj static_profile_obj shared_profile_debug_obj \ + static_profile_debug_obj) + +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):: + @$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \ + $@.all.test-lib.variables diff --git a/gnustep-make/Master/test-tool.make b/gnustep-make/Master/test-tool.make new file mode 100644 index 00000000..f3994207 --- /dev/null +++ b/gnustep-make/Master/test-tool.make @@ -0,0 +1,56 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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. + +internal-all:: $(TEST_TOOL_NAME:=.all.test-tool.variables) + +internal-clean:: + rm -rf $(GNUSTEP_OBJ_DIR) + +internal-distclean:: + (cd $(GNUSTEP_BUILD_DIR); \ + rm -rf shared_obj static_obj shared_debug_obj shared_profile_obj \ + static_debug_obj static_profile_obj shared_profile_debug_obj \ + static_profile_debug_obj) + +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):: + @$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \ + $@.all.test-tool.variables + +internal-install:: + @ echo Skipping installation of test tools... + +internal-uninstall:: + @ echo Skipping uninstallation of test tools... diff --git a/gnustep-make/Master/tool.make b/gnustep-make/Master/tool.make new file mode 100644 index 00000000..a9ea6d80 --- /dev/null +++ b/gnustep-make/Master/tool.make @@ -0,0 +1,64 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +TOOL_NAME := $(strip $(TOOL_NAME)) + +ifeq ($(RULES_MAKE_LOADED),) +include $(GNUSTEP_MAKEFILES)/rules.make +endif + +internal-all:: $(TOOL_NAME:=.all.tool.variables) + +internal-install:: $(TOOL_NAME:=.install.tool.variables) + +internal-uninstall:: $(TOOL_NAME:=.uninstall.tool.variables) + +internal-clean:: + rm -rf $(GNUSTEP_OBJ_DIR) + +internal-distclean:: + (cd $(GNUSTEP_BUILD_DIR); \ + rm -rf shared_obj static_obj shared_debug_obj shared_profile_obj \ + static_debug_obj static_profile_obj shared_profile_debug_obj \ + static_profile_debug_obj) + +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 + +# On distclean, we also want to efficiently wipe out the Resources/ +# directory if (and only if) there are tools for which +# xxx_HAS_RESOURCE_BUNDLE=yes +TOOLS_WITH_RESOURCE_BUNDLES = $(strip $(foreach tool,$(TOOL_NAME),$($(tool)_HAS_RESOURCE_BUNDLE:yes=$(tool)))) + +ifneq ($(TOOLS_WITH_RESOURCE_BUNDLES),) +internal-distclean:: + rm -rf Resources +endif + +internal-strings:: $(TOOL_NAME:=.strings.tool.variables) + +$(TOOL_NAME): + @$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory --no-keep-going \ + $@.all.tool.variables diff --git a/gnustep-make/NEWS b/gnustep-make/NEWS new file mode 100644 index 00000000..4adc2f0b --- /dev/null +++ b/gnustep-make/NEWS @@ -0,0 +1,320 @@ +NEWS +**** + +The currently released version is `1.10.0'. + +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. + +Changes in version `1.9.2' +========================== + + * Application and Bundles use the latest convention on Apple. + + * Improve/Simplify dependency checking when making docs + +Changes in version `1.9.1' +========================== + + * Remove `--disable-import' option + + * README.Darwin for darwin/MacOSX install + + * Framework version and naming clarified. + +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. + +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. + +Changes in version `1.7.4' +========================== + +Bug fixes. + +Changes in version `1.7.3' +========================== + + * Adds library combo to Headers directory if not flattened. + + * Add Markup file (Renaissance) support. + +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. + +Changes in version `1.7.1' +========================== + +Bug fixes. + +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. + +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. + +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. + +Changes in version `1.5.0' +========================== + + * Add NetBSD Elf support + +Changes in version `1.4.0' +========================== + + * Update Darwin/GNU gcc and Irix targets + +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. + +Changes in version `1.3.3' +========================== + + * Recognizes XXX_STANDARD_INSTALL=no to not do installation. + + * Updated instructions for MingW/MSYS installation. + +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. + +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 + +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. + +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 + +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. + +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 + +Changes in version `0.9.2' +========================== + + * HOWTO and faq files moved from core package to here + + * Configurable GNUSTEP_LOCAL_ROOT and GNUSTEP_NETWORK_ROOT + +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. + +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 + +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. + diff --git a/gnustep-make/README b/gnustep-make/README new file mode 100644 index 00000000..4d8037d9 --- /dev/null +++ b/gnustep-make/README @@ -0,0 +1,72 @@ +GNUstep makefile package +************************ + +Here is some introductory info to get you started: + +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. + +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. + +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. + + With GNUstep-Base, we strongly recommend the use of the ffcall +libraries, which provides stack frame handling for NSInvocation and +NSConnection. "Ffcall is under GNU GPL. As a special exception, if used +in GNUstep or in derivate works of GNUstep, the included parts of ffcall +are under GNU LGPL" (Text in quotes provided by the author of ffcall). + +History +======= + +The GNUstep makefile package was designed by Scott Christley +<scottc@net-community.com> and Ovidiu Predescu +<ovidiu@net-community.com>. + + 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. + +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>. + + diff --git a/gnustep-make/Version b/gnustep-make/Version new file mode 100644 index 00000000..b977a015 --- /dev/null +++ b/gnustep-make/Version @@ -0,0 +1,11 @@ +# 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=1 +GNUSTEP_MAKE_MINOR_VERSION=10 +GNUSTEP_MAKE_SUBMINOR_VERSION=0 +GNUSTEP_MAKE_VERSION=${GNUSTEP_MAKE_MAJOR_VERSION}.${GNUSTEP_MAKE_MINOR_VERSION}.${GNUSTEP_MAKE_SUBMINOR_VERSION} + + + diff --git a/gnustep-make/aggregate.make b/gnustep-make/aggregate.make new file mode 100644 index 00000000..76a71e44 --- /dev/null +++ b/gnustep-make/aggregate.make @@ -0,0 +1,31 @@ +# +# aggregate.make +# +# Makefile rules to build a set of GNUstep-base subprojects. +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# prevent multiple inclusions +ifeq ($(AGGREGATE_MAKE_LOADED),) +AGGREGATE_MAKE_LOADED=yes + +ifeq ($(GNUSTEP_INSTANCE),) +include $(GNUSTEP_MAKEFILES)/Master/aggregate.make +endif + +endif +# aggregate.make loaded diff --git a/gnustep-make/application.make b/gnustep-make/application.make new file mode 100644 index 00000000..a033dddc --- /dev/null +++ b/gnustep-make/application.make @@ -0,0 +1,30 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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 diff --git a/gnustep-make/bundle.make b/gnustep-make/bundle.make new file mode 100644 index 00000000..03ffc02a --- /dev/null +++ b/gnustep-make/bundle.make @@ -0,0 +1,30 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +ifeq ($(GNUSTEP_INSTANCE),) +include $(GNUSTEP_MAKEFILES)/Master/bundle.make +else + +ifeq ($(GNUSTEP_TYPE),bundle) +include $(GNUSTEP_MAKEFILES)/Instance/bundle.make +endif + +endif diff --git a/gnustep-make/clean_cpu.sh b/gnustep-make/clean_cpu.sh new file mode 100755 index 00000000..8256d3d8 --- /dev/null +++ b/gnustep-make/clean_cpu.sh @@ -0,0 +1,43 @@ +#!/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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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 diff --git a/gnustep-make/clean_os.sh b/gnustep-make/clean_os.sh new file mode 100755 index 00000000..a43dbfc0 --- /dev/null +++ b/gnustep-make/clean_os.sh @@ -0,0 +1,56 @@ +#!/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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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 NetBSD ELF targets + netbsdelf* | netbsd1.6* | netbsd2*) + echo netbsdelf + exit 0 + ;; + # Remove version number for Darwin + darwin7*) + echo darwin7 + exit 0 + ;; + darwin6*) + echo darwin6 + exit 0 + ;; + darwin5*) + echo darwin5 + exit 0 + ;; + *) + echo $1 + exit 0 + ;; +esac diff --git a/gnustep-make/clean_vendor.sh b/gnustep-make/clean_vendor.sh new file mode 100755 index 00000000..af5e4151 --- /dev/null +++ b/gnustep-make/clean_vendor.sh @@ -0,0 +1,24 @@ +#!/bin/sh +# +# clean_vendor.sh +# +# Clean up the target vendor 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# Nothing to clean right now +echo $1 diff --git a/gnustep-make/clibrary.make b/gnustep-make/clibrary.make new file mode 100644 index 00000000..682b876c --- /dev/null +++ b/gnustep-make/clibrary.make @@ -0,0 +1,30 @@ +# +# clibrary.make +# +# Makefile rules to build GNUstep-based clibraries. +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +ifeq ($(GNUSTEP_INSTANCE),) +include $(GNUSTEP_MAKEFILES)/Master/clibrary.make +else + +ifeq ($(GNUSTEP_TYPE),clibrary) +include $(GNUSTEP_MAKEFILES)/Instance/clibrary.make +endif + +endif diff --git a/gnustep-make/common.make b/gnustep-make/common.make new file mode 100644 index 00000000..bebff12a --- /dev/null +++ b/gnustep-make/common.make @@ -0,0 +1,587 @@ +# -*-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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +ifeq ($(COMMON_MAKE_LOADED),) +COMMON_MAKE_LOADED = yes + +SHELL = /bin/sh + +# GNUSTEP_BASE_INSTALL by default is `' - this is correct + +# 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 + +# +# 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 +ifeq ($(GNUSTEP_FLATTENED),) + WHICH_LIB_SCRIPT \ + = $(GNUSTEP_MAKEFILES)/$(GNUSTEP_HOST_CPU)/$(GNUSTEP_HOST_OS)/which_lib +else + WHICH_LIB_SCRIPT = $(GNUSTEP_MAKEFILES)/which_lib +endif +LD_LIB_PATH_SCRIPT = $(GNUSTEP_MAKEFILES)/ld_lib_path.sh +TRANSFORM_PATHS_SCRIPT = $(GNUSTEP_MAKEFILES)/transform_paths.sh +REL_PATH_SCRIPT = $(GNUSTEP_MAKEFILES)/relative_path.sh + +# Take the makefiles from the system root +ifeq ($(GNUSTEP_MAKEFILES),) + GNUSTEP_MAKEFILES = $(GNUSTEP_SYSTEM_ROOT)/Library/Makefiles +endif + +# +# Determine the compilation host and target +# +include $(GNUSTEP_MAKEFILES)/names.make + +ifeq ($(GNUSTEP_FLATTENED),) + 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 +# +include $(GNUSTEP_MAKEFILES)/$(GNUSTEP_TARGET_DIR)/config.make + +# +# Sanity checks - only performed at the first make invocation +# +ifeq ($(MAKELEVEL),0) + +# Sanity check on GNUSTEP_*_ROOT. We want them all to be non-empty. +GNUSTEP_ERROR = + +ifeq ($(GNUSTEP_USER_ROOT),) + GNUSTEP_ERROR=GNUSTEP_USER_ROOT +endif +ifeq ($(GNUSTEP_LOCAL_ROOT),) + GNUSTEP_ERROR=GNUSTEP_LOCAL_ROOT +endif +ifeq ($(GNUSTEP_NETWORK_ROOT),) + GNUSTEP_ERROR=GNUSTEP_NETWORK_ROOT +endif +ifeq ($(GNUSTEP_SYSTEM_ROOT),) + GNUSTEP_ERROR=GNUSTEP_SYSTEM_ROOT +endif + +ifneq ($(GNUSTEP_ERROR),) + $(warning ERROR: Your $(GNUSTEP_ERROR) environment variable is empty !) + $(error Please try again after running ". $(GNUSTEP_MAKEFILES)/GNUstep.sh") +endif + +# Sanity check on $PATH - NB: if PATH is wrong, we can't do certain things +# because we can't run the tools (not even using opentool as 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) + +# NB - we can't trust PATH here because it's what we are trying to +# check ... but hopefully if we (common.make) have been found, we +# can trust that at least $(GNUSTEP_MAKEFILES) is set up correctly :-) + +# We want to check that this path is in the PATH +SYS_TOOLS_PATH = $(GNUSTEP_SYSTEM_ROOT)/Tools + +# But on cygwin we might need to first fix it up ... +ifeq ($(findstring cygwin, $(GNUSTEP_HOST_OS)), cygwin) + ifeq ($(shell echo "$(SYS_TOOLS_PATH)" | sed 's/^\([a-zA-Z]:.*\)//'),) + SYS_TOOLS_PATH := $(shell $(GNUSTEP_MAKEFILES)/fixpath.sh -u $(SYS_TOOLS_PATH)) + endif +endif + +# Under mingw paths are so confused this warning is not worthwhile +ifneq ($(findstring mingw, $(GNUSTEP_HOST_OS)), mingw) + ifeq ($(findstring $(SYS_TOOLS_PATH),$(PATH)),) + $(warning WARNING: Your PATH may not be set up correctly !) + $(warning Please try again after running ". $(GNUSTEP_MAKEFILES)/GNUstep.sh") + endif +endif + +endif # code used when FOUNDATION_LIB != apple + +endif # End of sanity checks run only at makelevel 0 + +# +# Get standard messages +# +include $(GNUSTEP_MAKEFILES)/messages.make + +# +# Get flags/config options for core libraries +# + +# First, work out precisely library combos etc +include $(GNUSTEP_MAKEFILES)/library-combo.make +# 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 + +# +# GNUSTEP_INSTALLATION_DIR is the directory where all the things go. If you +# don't specify it defaults to GNUSTEP_LOCAL_ROOT. +# +ifeq ($(GNUSTEP_INSTALLATION_DIR),) + GNUSTEP_INSTALLATION_DIR = $(GNUSTEP_LOCAL_ROOT) +endif + +# Make it public and available to all submakes invocations +export GNUSTEP_INSTALLATION_DIR + +# +# Variables specifying the installation directory paths +# +GNUSTEP_APPS = $(GNUSTEP_INSTALLATION_DIR)/Applications +GNUSTEP_TOOLS = $(GNUSTEP_INSTALLATION_DIR)/Tools +GNUSTEP_LIBRARY = $(GNUSTEP_INSTALLATION_DIR)/Library +GNUSTEP_SERVICES = $(GNUSTEP_LIBRARY)/Services +ifeq ($(GNUSTEP_FLATTENED),yes) + GNUSTEP_HEADERS = $(GNUSTEP_INSTALLATION_DIR)/Library/Headers +else + GNUSTEP_HEADERS = $(GNUSTEP_INSTALLATION_DIR)/Library/Headers/$(LIBRARY_COMBO) +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_DOCUMENTATION = $(GNUSTEP_LIBRARY)/Documentation +GNUSTEP_DOCUMENTATION_MAN = $(GNUSTEP_DOCUMENTATION)/man +GNUSTEP_DOCUMENTATION_INFO = $(GNUSTEP_DOCUMENTATION)/info + +# 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_FLATTENED),) + +# The following variables have to be evaluated after setting dir to +# something, such as GNUSTEP_USER_ROOT. When you evaluate them in +# that situation, they will generate paths according to the following +# definition. Later, we'll systematically replace dir with +# GNUSTEP_USER_ROOT, the GNUSTEP_LOCAL_ROOT, then +# GNUSTEP_NETWORK_ROOT, then GNUSTEP_SYSTEM_ROOT. +GS_HEADER_PATH = \ + $(dir)/Library/Headers/$(LIBRARY_COMBO)/$(GNUSTEP_TARGET_DIR) \ + $(dir)/Library/Headers/$(LIBRARY_COMBO) + +GS_LIBRARY_PATH = \ + $(dir)/Library/Libraries/$(GNUSTEP_TARGET_LDIR) \ + $(dir)/Library/Libraries/$(GNUSTEP_TARGET_DIR) + +else + +# In the flattened case, the paths to generate are considerably simpler. + +GS_HEADER_PATH = $(dir)/Library/Headers +GS_LIBRARY_PATH = $(dir)/Library/Libraries + +endif + +ifeq ($(FOUNDATION_LIB), apple) +GS_FRAMEWORK_PATH = $(dir)/Library/Frameworks +else +GS_FRAMEWORK_PATH = +endif + +# First, we add paths based on GNUSTEP_USER_ROOT. + +# Please note that the following causes GS_HEADER_PATH to be evaluated +# with the variable dir equal $(GNUSTEP_USER_ROOT), which gives the +# effect we wanted. +GNUSTEP_HEADERS_DIRS = $(foreach dir,$(GNUSTEP_USER_ROOT),$(GS_HEADER_PATH)) +GNUSTEP_LIBRARIES_DIRS = $(foreach dir,$(GNUSTEP_USER_ROOT),$(GS_LIBRARY_PATH)) +GNUSTEP_FRAMEWORKS_DIRS = $(foreach dir,$(GNUSTEP_USER_ROOT),$(GS_FRAMEWORK_PATH)) + +# Second, if GNUSTEP_LOCAL_ROOT is different from GNUSTEP_USER_ROOT +# (which has already been added), we add the paths based on +# GNUSTEP_LOCAL_ROOT too. +ifneq ($(GNUSTEP_LOCAL_ROOT), $(GNUSTEP_USER_ROOT)) +GNUSTEP_HEADERS_DIRS += $(foreach dir,$(GNUSTEP_LOCAL_ROOT),$(GS_HEADER_PATH)) +GNUSTEP_LIBRARIES_DIRS += $(foreach dir,$(GNUSTEP_LOCAL_ROOT),$(GS_LIBRARY_PATH)) +GNUSTEP_FRAMEWORKS_DIRS += $(foreach dir,$(GNUSTEP_LOCAL_ROOT),$(GS_FRAMEWORK_PATH)) +endif + +# Third, if GNUSTEP_NETWORK_ROOT is different from GNUSTEP_USER_ROOT and +# GNUSTEP_LOCAL_ROOT (which have already been added), we add the paths +# based on GNUSTEP_NETWORK_ROOT too. +ifneq ($(GNUSTEP_NETWORK_ROOT), $(GNUSTEP_USER_ROOT)) +ifneq ($(GNUSTEP_NETWORK_ROOT), $(GNUSTEP_LOCAL_ROOT)) +GNUSTEP_HEADERS_DIRS += $(foreach dir,$(GNUSTEP_NETWORK_ROOT),$(GS_HEADER_PATH)) +GNUSTEP_LIBRARIES_DIRS += $(foreach dir,$(GNUSTEP_NETWORK_ROOT),$(GS_LIBRARY_PATH)) +GNUSTEP_FRAMEWORKS_DIRS += $(foreach dir,$(GNUSTEP_NETWORK_ROOT),$(GS_FRAMEWORK_PATH)) +endif +endif + +# Last, if GNUSTEP_SYSTEM_ROOT is different from GNUSTEP_USER_ROOT, +# GNUSTEP_LOCAL_ROOT and GNUSTEP_NETWORK_ROOT (which have already been +# added), we add the pathe paths based on GNUSTEP_SYSTEM_ROOT too. +ifneq ($(GNUSTEP_SYSTEM_ROOT), $(GNUSTEP_USER_ROOT)) +ifneq ($(GNUSTEP_SYSTEM_ROOT), $(GNUSTEP_LOCAL_ROOT)) +ifneq ($(GNUSTEP_SYSTEM_ROOT), $(GNUSTEP_NETWORK_ROOT)) +GNUSTEP_HEADERS_DIRS += $(foreach dir,$(GNUSTEP_SYSTEM_ROOT),$(GS_HEADER_PATH)) +GNUSTEP_LIBRARIES_DIRS += $(foreach dir,$(GNUSTEP_SYSTEM_ROOT),$(GS_LIBRARY_PATH)) +GNUSTEP_FRAMEWORKS_DIRS += $(foreach dir,$(GNUSTEP_SYSTEM_ROOT),$(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 ($(OBJC_RUNTIME_LIB), gnugc) + OBJC_RUNTIME = GNU +endif + +# If all of the following really needed ? If the system is not +# flattened, multiple Foundation libraries are not permitted anyway, +# so libFoundation could just put his headers in Foundation/. If +# library combos are used, all headers are in a library-combo +# directory, so libFoundation could still put his headers in +# Foundation/ and no conflict should arise. As for the +# GNUSTEP_TARGET_DIR, maybe we should key all of our headers in a +# GNUSTEP_TARGET_LDIR directory (rather than just a LIBRARY_COMBO +# directory). But does it really matter in practice anyway ? +ifeq ($(GNUSTEP_FLATTENED),yes) +GNUSTEP_HEADERS_FND_DIRS = \ + $(GNUSTEP_USER_ROOT)/Library/Headers/libFoundation \ + $(GNUSTEP_LOCAL_ROOT)/Library/Headers/libFoundation \ + $(GNUSTEP_NETWORK_ROOT)/Library/Headers/libFoundation \ + $(GNUSTEP_SYSTEM_ROOT)/Library/Headers/libFoundation \ + $(GNUSTEP_USER_ROOT)/Library/Headers/libFoundation/$(GNUSTEP_TARGET_DIR)/$(OBJC_RUNTIME) \ + $(GNUSTEP_LOCAL_ROOT)/Library/Headers/libFoundation/$(GNUSTEP_TARGET_DIR)/$(OBJC_RUNTIME) \ + $(GNUSTEP_NETWORK_ROOT)/Library/Headers/libFoundation/$(GNUSTEP_TARGET_DIR)/$(OBJC_RUNTIME) \ + $(GNUSTEP_SYSTEM_ROOT)/Library/Headers/libFoundation/$(GNUSTEP_TARGET_DIR)/$(OBJC_RUNTIME) +else +GNUSTEP_HEADERS_FND_DIRS = \ + $(GNUSTEP_USER_ROOT)/Library/Headers/$(LIBRARY_COMBO)/libFoundation \ + $(GNUSTEP_LOCAL_ROOT)/Library/Headers/$(LIBRARY_COMBO)/libFoundation \ + $(GNUSTEP_NETWORK_ROOT)/Library/Headers/$(LIBRARY_COMBO)/libFoundation \ + $(GNUSTEP_SYSTEM_ROOT)/Library/Headers/$(LIBRARY_COMBO)/libFoundation \ + $(GNUSTEP_USER_ROOT)/Library/Headers/$(LIBRARY_COMBO)/libFoundation/$(GNUSTEP_TARGET_DIR)/$(OBJC_RUNTIME) \ + $(GNUSTEP_LOCAL_ROOT)/Library/Headers/$(LIBRARY_COMBO)/libFoundation/$(GNUSTEP_TARGET_DIR)/$(OBJC_RUNTIME) \ + $(GNUSTEP_NETWORK_ROOT)/Library/Headers/$(LIBRARY_COMBO)/libFoundation/$(GNUSTEP_TARGET_DIR)/$(OBJC_RUNTIME) \ + $(GNUSTEP_SYSTEM_ROOT)/Library/Headers/$(LIBRARY_COMBO)/libFoundation/$(GNUSTEP_TARGET_DIR)/$(OBJC_RUNTIME) +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. +OBJCFLAGS = -fno-strict-aliasing +CFLAGS = +OBJ_DIR_PREFIX = + +# If the compiler supports native ObjC exceptions and the user wants us to +# use them, turn them on! +ifeq ($(USE_OBJC_EXCEPTIONS), yes) + OBJCFLAGS += -fobjc-exceptions +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) + OBJ_DIR_PREFIX += shared_ + 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) + OBJ_DIR_PREFIX += static_ + AFTER_INSTALL_LIBRARY_CMD = $(AFTER_INSTALL_STATIC_LIB_CMD) + LIBRARY_NAME_SUFFIX := s$(LIBRARY_NAME_SUFFIX) +endif + +ifeq ($(profile), yes) + ADDITIONAL_FLAGS += -pg + ifeq ($(LD), $(CC)) + INTERNAL_LDFLAGS += -pg + endif + OBJ_DIR_PREFIX += profile_ + LIBRARY_NAME_SUFFIX := p$(LIBRARY_NAME_SUFFIX) +endif + +ifeq ($(debug), yes) + OPTFLAG := $(filter-out -O%, $(OPTFLAG)) + ADDITIONAL_FLAGS += -g -Wall -DDEBUG -fno-omit-frame-pointer + INTERNAL_JAVACFLAGS += -g -deprecation + OBJ_DIR_PREFIX += debug_ + LIBRARY_NAME_SUFFIX := d$(LIBRARY_NAME_SUFFIX) +else + INTERNAL_JAVACFLAGS += -O +endif + +OBJ_DIR_PREFIX += obj + +ifeq ($(warn), no) + ADDITIONAL_FLAGS += -UGSWARN +else + ADDITIONAL_FLAGS += -DGSWARN +endif + +ifeq ($(diagnose), no) + ADDITIONAL_FLAGS += -UGSDIAGNOSE +else + ADDITIONAL_FLAGS += -DGSDIAGNOSE +endif + +ifneq ($(LIBRARY_NAME_SUFFIX),) + LIBRARY_NAME_SUFFIX := _$(LIBRARY_NAME_SUFFIX) +endif + +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) + +# trick needed to replace a space with nothing +empty:= +space:= $(empty) $(empty) +GNUSTEP_OBJ_PREFIX = $(subst $(space),,$(OBJ_DIR_PREFIX)) + +# +# Support building of Multiple Architecture Binaries (MAB). The object files +# directory will be something like shared_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_FLATTENED),) + GNUSTEP_OBJ_DIR_NAME = $(GNUSTEP_OBJ_PREFIX)/$(ARCH_OBJ_DIR)/$(LIBRARY_COMBO) +else + GNUSTEP_OBJ_DIR_NAME = $(GNUSTEP_OBJ_PREFIX) +endif + +GNUSTEP_OBJ_DIR = $(GNUSTEP_BUILD_DIR)/$(GNUSTEP_OBJ_DIR_NAME) + +# +# 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 + 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 + +# +# 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 +ifeq ($(profile), yes) + APP_EXTENSION = profile +else + ifeq ($(debug), yes) + APP_EXTENSION = debug + else + APP_EXTENSION = app + endif +endif + + + +# 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 + +endif # COMMON_MAKE_LOADED diff --git a/gnustep-make/config.guess b/gnustep-make/config.guess new file mode 100755 index 00000000..182c2a1a --- /dev/null +++ b/gnustep-make/config.guess @@ -0,0 +1,1326 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002 Free Software Foundation, Inc. + +timestamp='2002-02-12' + +# 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 2 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# 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. + +# Originally written by Per Bothner <per@bothner.com>. +# Please send patches to <config-patches@gnu.org>. Submit a context +# diff and a properly formatted ChangeLog entry. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# The plan is that this can be called by configure scripts if you +# don't specify an explicit build system type. + +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 (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +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 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # 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 + + +dummy=dummy-$$ +trap 'rm -f $dummy.c $dummy.o $dummy.rel $dummy; exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +set_cc_for_build='case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int dummy(){}" > $dummy.c ; + for c in cc gcc c89 ; do + ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1 ; + if test $? = 0 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + rm -f $dummy.c $dummy.o $dummy.rel ; + 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' + +# 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 + +# 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 tupples: *-*-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". + UNAME_MACHINE_ARCH=`(uname -p) 2>/dev/null` || \ + UNAME_MACHINE_ARCH=unknown + case "${UNAME_MACHINE_ARCH}" in + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-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*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep __ELF__ >/dev/null + 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 + # The OS release + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit 0 ;; + amiga:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + arc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + hp300:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mac68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + macppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme88k:OpenBSD:*:*) + echo m88k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvmeppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + pmax:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sgi:OpenBSD:*:*) + echo mipseb-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sun3:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + wgrisc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + *:OpenBSD:*:*) + echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + alpha:OSF1:*:*) + if test $UNAME_RELEASE = "V4.0"; then + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + fi + # 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. + cat <<EOF >$dummy.s + .data +\$Lformat: + .byte 37,100,45,37,120,10,0 # "%d-%x\n" + + .text + .globl main + .align 4 + .ent main +main: + .frame \$30,16,\$26,0 + ldgp \$29,0(\$27) + .prologue 1 + .long 0x47e03d80 # implver \$0 + lda \$2,-1 + .long 0x47e20c21 # amask \$2,\$1 + lda \$16,\$Lformat + mov \$0,\$17 + not \$1,\$18 + jsr \$26,printf + ldgp \$29,0(\$26) + mov 0,\$16 + jsr \$26,exit + .end main +EOF + eval $set_cc_for_build + $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null + if test "$?" = 0 ; then + case `./$dummy` in + 0-0) + UNAME_MACHINE="alpha" + ;; + 1-0) + UNAME_MACHINE="alphaev5" + ;; + 1-1) + UNAME_MACHINE="alphaev56" + ;; + 1-101) + UNAME_MACHINE="alphapca56" + ;; + 2-303) + UNAME_MACHINE="alphaev6" + ;; + 2-307) + UNAME_MACHINE="alphaev67" + ;; + 2-1307) + UNAME_MACHINE="alphaev68" + ;; + esac + fi + rm -f $dummy.s $dummy + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit 0 ;; + 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 0 ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit 0 ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit 0;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit 0 ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit 0 ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit 0 ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit 0;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit 0;; + 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 0 ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit 0 ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + i86pc:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + 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 0 ;; + 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 0 ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit 0 ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(head -1 /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 0 ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit 0 ;; + # 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 0 ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit 0 ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit 0 ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit 0 ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit 0 ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit 0 ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit 0 ;; + 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 $dummy.c -o $dummy \ + && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ + && rm -f $dummy.c $dummy && exit 0 + rm -f $dummy.c $dummy + echo mips-mips-riscos${UNAME_RELEASE} + exit 0 ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit 0 ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit 0 ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit 0 ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit 0 ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit 0 ;; + 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 0 ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit 0 ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit 0 ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit 0 ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit 0 ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit 0 ;; + ????????: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 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit 0 ;; + 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 0 ;; + *: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 + $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 + rm -f $dummy.c $dummy + echo rs6000-ibm-aix3.2.5 + 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 0 ;; + *:AIX:*:[45]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | 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/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit 0 ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit 0 ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit 0 ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit 0 ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit 0 ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit 0 ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit 0 ;; + 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 $dummy.c -o $dummy 2>/dev/null) && HP_ARCH=`./$dummy` + if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi + rm -f $dummy.c $dummy + fi ;; + esac + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit 0 ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit 0 ;; + 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 $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 + rm -f $dummy.c $dummy + echo unknown-hitachi-hiuxwe2 + exit 0 ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit 0 ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit 0 ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit 0 ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit 0 ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit 0 ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit 0 ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit 0 ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit 0 ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit 0 ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit 0 ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit 0 ;; + CRAY*X-MP:*:*:*) + echo xmp-cray-unicos + exit 0 ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + 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 0 ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*T3D:*:*:*) + echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY-2:*:*:*) + echo cray2-cray-unicos + exit 0 ;; + 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 0 ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit 0 ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:FreeBSD:*:*) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit 0 ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit 0 ;; + i*:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit 0 ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit 0 ;; + x86:Interix*:3*) + echo i386-pc-interix3 + exit 0 ;; + 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 i386-pc-interix + exit 0 ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit 0 ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit 0 ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + *:GNU:*:*) + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit 0 ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit 0 ;; + arm*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux + exit 0 ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + mips:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips + #undef mipsel + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mipsel + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + rm -f $dummy.c + test x"${CPU}" != x && echo "${CPU}-pc-linux-gnu" && exit 0 + ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit 0 ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit 0 ;; + 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 ld.so.1 >/dev/null + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit 0 ;; + 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-gnu ;; + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac + exit 0 ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit 0 ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit 0 ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu + exit 0 ;; + i*86:Linux:*:*) + # The BFD linker knows what the default object file format is, so + # first see if it will tell us. cd to the root directory to prevent + # problems with other programs or directories called `ld' in the path. + # Set LC_ALL=C to ensure ld outputs messages in English. + ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ + | sed -ne '/supported targets:/!d + s/[ ][ ]*/ /g + s/.*supported targets: *// + s/ .*// + p'` + case "$ld_supported_targets" in + elf32-i386) + TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" + ;; + a.out-i386-linux) + echo "${UNAME_MACHINE}-pc-linux-gnuaout" + exit 0 ;; + coff-i386) + echo "${UNAME_MACHINE}-pc-linux-gnucoff" + exit 0 ;; + "") + # Either a pre-BFD a.out linker (linux-gnuoldld) or + # one that does not give us useful --help. + echo "${UNAME_MACHINE}-pc-linux-gnuoldld" + exit 0 ;; + esac + # Determine whether the default compiler is a.out or elf + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include <features.h> + #ifdef __ELF__ + # ifdef __GLIBC__ + # if __GLIBC__ >= 2 + LIBC=gnu + # else + LIBC=gnulibc1 + # endif + # else + LIBC=gnulibc1 + # endif + #else + #ifdef __INTEL_COMPILER + LIBC=gnu + #else + LIBC=gnuaout + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + rm -f $dummy.c + test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0 + test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 + ;; + 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 0 ;; + 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 0 ;; + 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 0 ;; + i*86:*:5:[78]*) + 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 0 ;; + 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|egrep Release|sed -e 's/.*= //')` + (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|egrep '^Machine.*Pent ?II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit 0 ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit 0 ;; + 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 i386. + echo i386-pc-msdosdjgpp + exit 0 ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit 0 ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit 0 ;; + 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 0 ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit 0 ;; + M68*:*:R3V[567]*:*) + test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; + 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*: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 0 + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4 && exit 0 ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit 0 ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit 0 ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + *: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 0 ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says <Richard.M.Bartel@ccMail.Census.GOV> + echo i586-unisys-sysv4 + exit 0 ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes <hewes@openmarket.com>. + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit 0 ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit 0 ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit 0 ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit 0 ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit 0 ;; + 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 0 ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit 0 ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit 0 ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit 0 ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit 0 ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit 0 ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Darwin:*:*) + echo `uname -p`-apple-darwin${UNAME_RELEASE} + exit 0 ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + if test "${UNAME_MACHINE}" = "x86pc"; then + UNAME_MACHINE=pc + echo i386-${UNAME_MACHINE}-nto-qnx + else + echo `uname -p`-${UNAME_MACHINE}-nto-qnx + fi + exit 0 ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit 0 ;; + NSR-[GKLNPTVW]:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit 0 ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit 0 ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit 0 ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit 0 ;; + *: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 0 ;; + 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 0 ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit 0 ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit 0 ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit 0 ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit 0 ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit 0 ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit 0 ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit 0 ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit 0 ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +eval $set_cc_for_build +cat >$dummy.c <<EOF +#ifdef _SEQUENT_ +# include <sys/types.h> +# include <sys/utsname.h> +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include <sys/param.h> + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +# if !defined (ultrix) +# include <sys/param.h> +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm -f $dummy.c $dummy && exit 0 +rm -f $dummy.c $dummy + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit 0 ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + c34*) + echo c34-convex-bsd + exit 0 ;; + c38*) + echo c38-convex-bsd + exit 0 ;; + c4*) + echo c4-convex-bsd + exit 0 ;; + esac +fi + +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 + + ftp://ftp.gnu.org/pub/gnu/config/ + +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: diff --git a/gnustep-make/config.h.in b/gnustep-make/config.h.in new file mode 100644 index 00000000..97360140 --- /dev/null +++ b/gnustep-make/config.h.in @@ -0,0 +1,97 @@ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'. + */ +#undef HAVE_DIRENT_H + +/* Define to 1 if you have the <dir.h> header file. */ +#undef HAVE_DIR_H + +/* Define to 1 if you have the <fcntl.h> header file. */ +#undef HAVE_FCNTL_H + +/* Define to 1 if you have the `geteuid' function. */ +#undef HAVE_GETEUID + +/* Define to 1 if you have the `getlogin' function. */ +#undef HAVE_GETLOGIN + +/* Define to 1 if you have the `getpwnam' function. */ +#undef HAVE_GETPWNAM + +/* Define to 1 if you have the `getpwuid' function. */ +#undef HAVE_GETPWUID + +/* Define to 1 if you have the <inttypes.h> header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have the <limits.h> header file. */ +#undef HAVE_LIMITS_H + +/* Define to 1 if you have the <memory.h> header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */ +#undef HAVE_NDIR_H + +/* Define to 1 if you have the <pwd.h> header file. */ +#undef HAVE_PWD_H + +/* Define to 1 if you have the <stdint.h> header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the <stdlib.h> header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the `strchr' function. */ +#undef HAVE_STRCHR + +/* Define to 1 if you have the <strings.h> header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the <string.h> header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'. + */ +#undef HAVE_SYS_DIR_H + +/* Define to 1 if you have the <sys/file.h> header file. */ +#undef HAVE_SYS_FILE_H + +/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'. + */ +#undef HAVE_SYS_NDIR_H + +/* Define to 1 if you have the <sys/param.h> header file. */ +#undef HAVE_SYS_PARAM_H + +/* Define to 1 if you have the <sys/stat.h> header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the <sys/types.h> header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the <unistd.h> header file. */ +#undef HAVE_UNISTD_H + +/* Define to 1 if you have the <utime.h> header file. */ +#undef HAVE_UTIME_H + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS diff --git a/gnustep-make/config.make.in b/gnustep-make/config.make.in new file mode 100644 index 00000000..e77c1de5 --- /dev/null +++ b/gnustep-make/config.make.in @@ -0,0 +1,132 @@ +# +# config.make.in +# +# All of the settings required by the makefile package +# that are determined by configure. +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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@ + +# +# Binary and compile tools +# +CC = @CC@ +OPTFLAG = @CFLAGS@ +OBJCFLAGS= @OBJCFLAGS@ +CPPFLAGS = @CPPFLAGS@ +CPP = @CPP@ + +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 +endif + +ifeq (@target_os@,mingw32) + HAS_LN_S = 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@ +MKDIRS = $(GNUSTEP_MAKEFILES)/mkinstalldirs + +# Darwin specific flags +CC_CPPPRECOMP = @cc_cppprecomp@ +CC_BUNDLE = @cc_bundle@ + +# The default library combination +default_library_combo = @ac_cv_library_combo@ + +# 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 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@ diff --git a/gnustep-make/config.site b/gnustep-make/config.site new file mode 100644 index 00000000..86099045 --- /dev/null +++ b/gnustep-make/config.site @@ -0,0 +1,110 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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 [ -z "$GNUSTEP_FLATTENED" ]; 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 [ -z "$GNUSTEP_FLATTENED" ]; 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 [ -z "$GNUSTEP_FLATTENED" ]; 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 [ -z "$GNUSTEP_FLATTENED" ]; 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 + diff --git a/gnustep-make/config.sub b/gnustep-make/config.sub new file mode 100755 index 00000000..d1f7cb9f --- /dev/null +++ b/gnustep-make/config.sub @@ -0,0 +1,1451 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002 Free Software Foundation, Inc. + +timestamp='2002-02-12' + +# This file is (in principle) common to ALL GNU software. +# The presence of a machine in this file suggests that SOME GNU software +# can handle that machine. It does not imply ALL GNU software can. +# +# 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 2 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. + +# 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. + +# Please send patches to <config-patches@gnu.org>. Submit a context +# diff and a properly formatted ChangeLog entry. +# +# 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. + +# 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 + $0 [OPTION] 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 (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +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 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # 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 0;; + + * ) + 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* | storm-chaos* | os2-emx* | windows32-*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + 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) + os= + basic_machine=$1 + ;; + -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 + ;; + -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/'` + ;; + -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*) + 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 \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ + | c4x | clipper \ + | d10v | d30v | dsp16xx \ + | fr30 \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | m32r | m68000 | m68k | m88k | mcore \ + | mips16 | mips64 | mips64el | mips64orion | mips64orionel \ + | mips64vr4100 | mips64vr4100el | mips64vr4300 \ + | mips64vr4300el | mips64vr5000 | mips64vr5000el \ + | mipsbe | mipseb | mipsel | mipsle | mipstx39 | mipstx39el \ + | mipsisa32 \ + | mn10200 | mn10300 \ + | ns16k | ns32k \ + | openrisc | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | sh | sh[34] | sh[34]eb | shbe | shle | sh64 \ + | sparc | sparc64 | sparclet | sparclite | sparcv9 | sparcv9b \ + | strongarm \ + | tahoe | thumb | tic80 | tron \ + | v850 | v850e \ + | we32k \ + | x86 | xscale | xstormy16 | xtensa \ + | z8k) + basic_machine=$basic_machine-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12) + # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + + # 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-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armv*-* \ + | avr-* \ + | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c54x-* \ + | clipper-* | cray2-* | cydra-* \ + | d10v-* | d30v-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fr30-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | m32r-* \ + | m68000-* | m680[01234]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | mcore-* \ + | mips-* | mips16-* | mips64-* | mips64el-* | mips64orion-* \ + | mips64orionel-* | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* | mipsbe-* | mipseb-* \ + | mipsle-* | mipsel-* | mipstx39-* | mipstx39el-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ + | romp-* | rs6000-* \ + | sh-* | sh[34]-* | sh[34]eb-* | shbe-* | shle-* | sh64-* \ + | sparc-* | sparc64-* | sparc86x-* | sparclite-* \ + | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ + | t3e-* | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xmp-* | xps100-* | xscale-* | xstormy16-* \ + | xtensa-* \ + | ymp-* \ + | z8k-*) + ;; + # 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 + ;; + 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 + ;; + 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 + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + 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 | ymp) + basic_machine=ymp-cray + os=-unicos + ;; + cray2) + basic_machine=cray2-cray + os=-unicos + ;; + [cjt]90) + basic_machine=${basic_machine}-cray + os=-unicos + ;; + crds | unos) + basic_machine=m68k-crds + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + 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 + ;; + 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'm not sure what "Sysv32" means. Should this be sysv3.2? + 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 + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mipsel*-linux*) + basic_machine=mipsel-unknown + os=-linux-gnu + ;; + mips*-linux*) + basic_machine=mips-unknown + os=-linux-gnu + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + mmix*) + basic_machine=mmix-knuth + os=-mmixware + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + 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 + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + or32 | or32-*) + basic_machine=or32-unknown + os=-coff + ;; + 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 + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon) + basic_machine=i686-pc + ;; + pentiumii | pentium2) + basic_machine=i686-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-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc) basic_machine=powerpc-unknown + ;; + ppc-*) 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 + ;; + 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 + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + 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 + ;; + 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=t3e-cray + os=-unicos + ;; + tic54x | c54x*) + basic_machine=tic54x-unknown + os=-coff + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + 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 + ;; + windows32) + basic_machine=i386-pc + os=-windows32-msvcrt + ;; + xmp) + basic_machine=xmp-cray + os=-unicos + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + z8k-*-coff) + basic_machine=z8k-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 + ;; + mips) + if [ x$os = x-linux-gnu ]; then + basic_machine=mips-unknown + else + basic_machine=mips-mips + fi + ;; + romp) + basic_machine=romp-ibm + ;; + 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 + ;; + sh3 | sh4 | sh3eb | sh4eb) + basic_machine=sh-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparc | sparcv9 | sparcv9b) + 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 + ;; + c4x*) + basic_machine=c4x-none + os=-coff + ;; + *-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. + -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* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ + | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto*) + os=-nto-qnx + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -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 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -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 + ;; + -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 + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + # 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 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + m68*-cisco) + os=-aout + ;; + 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 + ;; + *-ibm) + os=-aix + ;; + *-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 + ;; + -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 + ;; + -ptx*) + vendor=sequent + ;; + -vxsim* | -vxworks*) + 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 0 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/gnustep-make/config_thread.m b/gnustep-make/config_thread.m new file mode 100644 index 00000000..fbab98b0 --- /dev/null +++ b/gnustep-make/config_thread.m @@ -0,0 +1,19 @@ +/* Test whether Objective-C runtime was compiled with thread support */ + +#ifndef NeXT_RUNTIME +/* Dummy NXConstantString impl for so libobjc that doesn't include it */ +#include <objc/NXConstStr.h> +@implementation NXConstantString +@end +#endif + +#include <objc/thr.h> +#include <objc/Object.h> + +int +main() +{ + id o = [Object new]; + + return (objc_thread_detach (@selector(hash), o, nil) == NULL) ? -1 : 0; +} diff --git a/gnustep-make/configure b/gnustep-make/configure new file mode 100755 index 00000000..c0989ad2 --- /dev/null +++ b/gnustep-make/configure @@ -0,0 +1,6260 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.59. +# +# Copyright (C) 2003 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 Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; 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 + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# 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 + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + 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 + + ;; + 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 + { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # 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 sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# 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'" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +exec 6>&1 + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_config_libobj_dir=. +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Maximum number of lines to put in a shell here document. +# This variable seems obsolete. It should probably be removed, and +# only ac_max_sed_lines should be used. +: ${ac_max_here_lines=38} + +# Identity of this package. +PACKAGE_NAME= +PACKAGE_TARNAME= +PACKAGE_VERSION= +PACKAGE_STRING= +PACKAGE_BUGREPORT= + +ac_unique_file="application.make" +ac_default_prefix=`if test "x$GNUSTEP_SYSTEM_ROOT" = "x"; then + if test -d C: ; then + echo C:/GNUstep; + else + echo /usr/GNUstep ; + fi +else + echo "$GNUSTEP_SYSTEM_ROOT" ; +fi` +# Factoring default headers for most tests. +ac_includes_default="\ +#include <stdio.h> +#if HAVE_SYS_TYPES_H +# include <sys/types.h> +#endif +#if HAVE_SYS_STAT_H +# include <sys/stat.h> +#endif +#if STDC_HEADERS +# include <stdlib.h> +# include <stddef.h> +#else +# if HAVE_STDLIB_H +# include <stdlib.h> +# endif +#endif +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include <memory.h> +# endif +# include <string.h> +#endif +#if HAVE_STRINGS_H +# include <strings.h> +#endif +#if HAVE_INTTYPES_H +# include <inttypes.h> +#else +# if HAVE_STDINT_H +# include <stdint.h> +# endif +#endif +#if HAVE_UNISTD_H +# include <unistd.h> +#endif" + +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os ac_cv_library_combo cc_cppprecomp cc_bundle CYGWIN RANLIB AR DLLTOOL ac_ct_RANLIB INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S TAR CHOWN GNUSTEP_ROOT root_prefix MAKEFILES_SUFFIX HOST_INSTALL GNUSTEP_LOCAL_ROOT GNUSTEP_NETWORK_ROOT GNUSTEP_USER_ROOT GNUSTEP_FLATTENED GNUSTEP_MULTI_PLATFORM BACKEND_BUNDLE EGREP objc_threaded ac_cv_objc_threaded USE_OBJC_EXCEPTIONS AUTO_DEPENDENCIES INCLUDES LIB_DIR OBJCFLAGS GNUSTEP_STRIP_MAKEFILES GNUSTEP_MOVE_OBSOLETE GNUSTEP_MAKE_VERSION GNUSTEP_MAKE_MAJOR_VERSION GNUSTEP_MAKE_MINOR_VERSION GNUSTEP_MAKE_SUBMINOR_VERSION clean_target_os clean_target_cpu clean_target_vendor LIBOBJS LTLIBOBJS' +ac_subst_files='' + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# 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. +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +ac_prev= +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 + + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_option in + + -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 | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + eval "enable_$ac_feature=no" ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "enable_$ac_feature='$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 ;; + + -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 ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + 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 ;; + + -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_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package| sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "with_$ac_package='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/-/_/g'` + eval "with_$ac_package=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 ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + 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'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute paths. +for ac_var in exec_prefix prefix +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* | NONE | '' ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# Be sure to have absolute paths. +for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ + localstatedir libdir includedir oldincludedir infodir mandir +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +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 + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + 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 + + +# 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 its parent. + ac_confdir=`(dirname "$0") 2>/dev/null || +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$0" | + 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 + if test "$ac_srcdir_defaulted" = yes; then + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 + { (exit 1); exit 1; }; } + else + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } + fi +fi +(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || + { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 + { (exit 1); exit 1; }; } +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +ac_env_build_alias_set=${build_alias+set} +ac_env_build_alias_value=$build_alias +ac_cv_env_build_alias_set=${build_alias+set} +ac_cv_env_build_alias_value=$build_alias +ac_env_host_alias_set=${host_alias+set} +ac_env_host_alias_value=$host_alias +ac_cv_env_host_alias_set=${host_alias+set} +ac_cv_env_host_alias_value=$host_alias +ac_env_target_alias_set=${target_alias+set} +ac_env_target_alias_value=$target_alias +ac_cv_env_target_alias_set=${target_alias+set} +ac_cv_env_target_alias_value=$target_alias +ac_env_CC_set=${CC+set} +ac_env_CC_value=$CC +ac_cv_env_CC_set=${CC+set} +ac_cv_env_CC_value=$CC +ac_env_CFLAGS_set=${CFLAGS+set} +ac_env_CFLAGS_value=$CFLAGS +ac_cv_env_CFLAGS_set=${CFLAGS+set} +ac_cv_env_CFLAGS_value=$CFLAGS +ac_env_LDFLAGS_set=${LDFLAGS+set} +ac_env_LDFLAGS_value=$LDFLAGS +ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +ac_cv_env_LDFLAGS_value=$LDFLAGS +ac_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_env_CPPFLAGS_value=$CPPFLAGS +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_cv_env_CPPFLAGS_value=$CPPFLAGS +ac_env_CPP_set=${CPP+set} +ac_env_CPP_value=$CPP +ac_cv_env_CPP_set=${CPP+set} +ac_cv_env_CPP_value=$CPP + +# +# 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 \`..'] + +_ACEOF + + cat <<_ACEOF +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] + --datadir=DIR read-only architecture-independent data [PREFIX/share] + --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] + --infodir=DIR info documentation [PREFIX/info] + --mandir=DIR man documentation [PREFIX/man] +_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-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] +--disable-flattened Disable flattened directory structure +--enable-multi-platform Use run time multi-platform support + +--disable-backend-bundle Compile gui backend as a library + --enable-native-objc-exceptions + use native objective-c exceptions +--enable-strip-makefiles Enable stripping makefiles after installation +--disable-move-obsolete Disable moving obsolete dir structure + +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 combination + +--with-tar Set the name of the tar program to use +--without-system-root Don't use separate system root directory +--with-local-root + Set the GNUSTEP_LOCAL_ROOT directory. Use this option if you want +to have the GNUSTEP_LOCAL_ROOT directory in a non-standard place. Example: +--with-local-root=/usr/local/GNUstep/Local + +--with-network-root + Set the GNUSTEP_NETWORK_ROOT directory. Use this option if you want +to have the GNUSTEP_NETWORK_ROOT directory. Example: +--with-network-root=/usr/local/GNUstep/Network + +--with-user-root + Set the GNUSTEP_USER_ROOT directory for all users. '~' is allowed + at the beginning to mean the user's home directory. Use this + option if you want to have the GNUSTEP_USER_ROOT directory in a non + default place for all users. + Example: --with-user-root='~/gnustep' + +--with-thread-lib Specify alternate thread library + +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> + CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have + headers in a nonstandard directory <include dir> + CPP C preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +_ACEOF +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + ac_popdir=`pwd` + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d $ac_dir || continue + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + cd $ac_dir + # Check for guested configure; otherwise get Cygnus style 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 + elif test -f $ac_srcdir/configure.ac || + test -f $ac_srcdir/configure.in; then + echo + $ac_configure --help + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi + cd $ac_popdir + done +fi + +test -n "$ac_init_help" && exit 0 +if $ac_init_version; then + cat <<\_ACEOF + +Copyright (C) 2003 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 0 +fi +exec 5>config.log +cat >&5 <<_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.59. Invocation command line was + + $ $0 $@ + +_ACEOF +{ +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` +hostinfo = `(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=. + echo "PATH: $as_dir" +done + +} >&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_sep= +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=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 2) + ac_configure_args1="$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 + ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" + # Get rid of the leading space. + ac_sep=" " + ;; + esac + done +done +$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } +$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export 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: Be sure not to use single quotes in there, as some shells, +# such as our DU 5.0 friend, will then `close' the trap. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +{ + (set) 2>&1 | + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in + *ac_space=\ *) + sed -n \ + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + ;; + *) + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------- ## +## Output files. ## +## ------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + sed "/^$/d" confdefs.h | sort + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core && + rm -rf conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status + ' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo >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 + + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + 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. + if test -f "$cache_file"; then + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . $cache_file;; + *) . ./$cache_file;; + esac + fi +else + { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +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 `(set) 2>&1 | + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; 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,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +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 + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=$ac_var=`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. + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +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_config_headers="$ac_config_headers config.h" + + +#-------------------------------------------------------------------- +# Setup the library combination +#-------------------------------------------------------------------- +targetArgument=${target} +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_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" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +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 + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl + 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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CC" && break +done + + CC=$ac_ct_CC +fi + +fi + + +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +echo "$as_me: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5 + (eval $ac_compiler --version </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5 + (eval $ac_compiler -v </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5 + (eval $ac_compiler -V </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out 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. +echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 + (eval $ac_link_default) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Find the output, starting from the most likely. This scheme is +# not robust to junk in `.', hence go to wildcards (a.*) only as a last +# resort. + +# Be careful to initialize this variable, since it used to be cached. +# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. +ac_cv_exeext= +# b.out is created by i960 compilers. +for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) + ;; + conftest.$ac_ext ) + # This is the source file. + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + # FIXME: I believe we export ac_cv_exeext for Libtool, + # but it would be cool to find out if it's true. Does anybody + # maintain Libtool? --akim. + export ac_cv_exeext + break;; + * ) + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: C compiler cannot create executables +See \`config.log' for more details." >&5 +echo "$as_me: error: C compiler cannot create executables +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; } +fi + +ac_exeext=$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6 + +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 +# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +# If not cross compiling, check that we can run a simple program. +if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { echo "$as_me:$LINENO: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +rm -f a.out a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6 + +echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; 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 | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6 + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 +if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6 +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +CFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_cc_g=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$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 +echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_stdc=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <stdarg.h> +#include <stdio.h> +#include <sys/types.h> +#include <sys/stat.h> +/* 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 -std1 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 -std1. */ +int osf4_cc_array ['\x00' == 0 ? 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 +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_stdc=$ac_arg +break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext +done +rm -f conftest.$ac_ext conftest.$ac_objext +CC=$ac_save_CC + +fi + +case "x$ac_cv_prog_cc_stdc" in + x|xno) + echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6 ;; + *) + echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 + CC="$CC $ac_cv_prog_cc_stdc" ;; +esac + +# Some people use a C++ compiler to compile C. Since we use `exit', +# in C++ we need to declare it. In case someone uses the same compiler +# for both compiling C and C++ we need to have the C++ compiler decide +# the declaration of exit, since it's the most demanding environment. +cat >conftest.$ac_ext <<_ACEOF +#ifndef __cplusplus + choke me +#endif +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + for ac_declaration in \ + '' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +#include <stdlib.h> +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +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 +echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <ac_nonexistent.h> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f 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 +echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$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 >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <ac_nonexistent.h> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +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_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 + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 +echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} + { (exit 1); exit 1; }; } +fi +ac_config_guess="$SHELL $ac_aux_dir/config.guess" +ac_config_sub="$SHELL $ac_aux_dir/config.sub" +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. + +# Make sure we can run config.sub. +$ac_config_sub sun4 >/dev/null 2>&1 || + { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 +echo "$as_me: error: cannot run $ac_config_sub" >&2;} + { (exit 1); exit 1; }; } + +echo "$as_me:$LINENO: checking build system type" >&5 +echo $ECHO_N "checking build system type... $ECHO_C" >&6 +if test "${ac_cv_build+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_build_alias=$build_alias +test -z "$ac_cv_build_alias" && + ac_cv_build_alias=`$ac_config_guess` +test -z "$ac_cv_build_alias" && + { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 +echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +echo "${ECHO_T}$ac_cv_build" >&6 +build=$ac_cv_build +build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +echo "$as_me:$LINENO: checking host system type" >&5 +echo $ECHO_N "checking host system type... $ECHO_C" >&6 +if test "${ac_cv_host+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_host_alias=$host_alias +test -z "$ac_cv_host_alias" && + ac_cv_host_alias=$ac_cv_build_alias +ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +echo "${ECHO_T}$ac_cv_host" >&6 +host=$ac_cv_host +host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +echo "$as_me:$LINENO: checking target system type" >&5 +echo $ECHO_N "checking target system type... $ECHO_C" >&6 +if test "${ac_cv_target+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_target_alias=$target_alias +test "x$ac_cv_target_alias" = "x" && + ac_cv_target_alias=$ac_cv_host_alias +ac_cv_target=`$ac_config_sub $ac_cv_target_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_target_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_target" >&5 +echo "${ECHO_T}$ac_cv_target" >&6 +target=$ac_cv_target +target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +# 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}- + +echo "$as_me:$LINENO: checking for library combo" >&5 +echo $ECHO_N "checking for library combo... $ECHO_C" >&6 + +# Check whether --with-library-combo or --without-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" = ""; 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 ;; + nx) ac_cv_library_combo=nx-nx-nx ;; +esac + + +echo "$as_me:$LINENO: result: $ac_cv_library_combo" >&5 +echo "${ECHO_T}$ac_cv_library_combo" >&6 + +OBJC_RUNTIME_LIB=`echo $ac_cv_library_combo | awk -F- '{print $1}'` + +#-------------------------------------------------------------------- +# Check if we are using Apple cc +#-------------------------------------------------------------------- +cc_cppprecomp=0 +cc_byndle=0 +echo "$as_me:$LINENO: checking for apple compiler flags" >&5 +echo $ECHO_N "checking for apple compiler flags... $ECHO_C" >&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 +echo "$as_me:$LINENO: result: $cc_bundle" >&5 +echo "${ECHO_T}$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* ) CYGWIN=yes;; + *mingw32* ) MINGW32=yes;; + * ) MINGW32=no + CYGWIN=no;; +esac + + + + +if test "$MINGW32" = yes; then + echo "hosted on mingw32 .." + export INSTALL=install + export SHELL=sh + export CC=${CC:-gcc} + export AR=${AR:-ar} + export RANLIB=${RANLIB:-ranlib} + export DLLTOOL=${DLLTOOL:-dlltool} +elif test "$CYGWIN" = yes; then + echo "hosted on cygwin .." + export CC=${CC:-gcc} + 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" + # Extract the first word of ""${targetArgument}-gcc"", so it can be a program name with args. +set dummy "${targetArgument}-gcc"; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC=" "${targetArgument}-gcc"" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_CC" && ac_cv_prog_CC="gcc" +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + # Extract the first word of ""${targetArgument}-ranlib"", so it can be a program name with args. +set dummy "${targetArgument}-ranlib"; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB=" "${targetArgument}-ranlib"" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB="ranlib" +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + echo "$as_me:$LINENO: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR=" "${targetArgument}-ar"" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_AR" && ac_cv_prog_AR="ar" +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + echo "$as_me:$LINENO: result: $AR" >&5 +echo "${ECHO_T}$AR" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_DLLTOOL+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DLLTOOL=" "${targetArgument}-dlltool"" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_DLLTOOL" && ac_cv_prog_DLLTOOL="dlltool" +fi +fi +DLLTOOL=$ac_cv_prog_DLLTOOL +if test -n "$DLLTOOL"; then + echo "$as_me:$LINENO: result: $DLLTOOL" >&5 +echo "${ECHO_T}$DLLTOOL" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +else + # Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="ar" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + echo "$as_me:$LINENO: result: $AR" >&5 +echo "${ECHO_T}$AR" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + # Extract the first word of "dlltool", so it can be a program name with args. +set dummy dlltool; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_DLLTOOL+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DLLTOOL="dlltool" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +DLLTOOL=$ac_cv_prog_DLLTOOL +if test -n "$DLLTOOL"; then + echo "$as_me:$LINENO: result: $DLLTOOL" >&5 +echo "${ECHO_T}$DLLTOOL" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + echo "$as_me:$LINENO: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + RANLIB=$ac_ct_RANLIB +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. +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_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 + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done + + +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. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL=$ac_install_sh + fi +fi +echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$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' + +echo "$as_me:$LINENO: checking whether ln -s works" >&5 +echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me:$LINENO: result: no, using $LN_S" >&5 +echo "${ECHO_T}no, using $LN_S" >&6 +fi + + +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_TAR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_TAR="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +TAR=$ac_cv_prog_TAR +if test -n "$TAR"; then + echo "$as_me:$LINENO: result: $TAR" >&5 +echo "${ECHO_T}$TAR" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$TAR" && break +done +test -n "$TAR" || TAR="tar" + + +# Check whether --with-tar or --without-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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CHOWN+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CHOWN="chown" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_CHOWN" && ac_cv_prog_CHOWN="none" +fi +fi +CHOWN=$ac_cv_prog_CHOWN +if test -n "$CHOWN"; then + echo "$as_me:$LINENO: result: $CHOWN" >&5 +echo "${ECHO_T}$CHOWN" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +if test "$MINGW32" = no; then + if test "$CHOWN" = "none"; then + { { echo "$as_me:$LINENO: error: \"Could not find chown.\"" >&5 +echo "$as_me: error: \"Could not find chown.\"" >&2;} + { (exit 1); exit 1; }; }; + fi +fi + +#------------------------------------------------------------------- +# GNUstep specific options follow +#------------------------------------------------------------------- + +#-------------------------------------------------------------------- +# The GNUstep root directory. +# The user should have the GNUSTEP_SYSTEM_ROOT environment variable +# defined, but if not then we have a global default. +# Also test for the C: directory, which means we're on Windows +#-------------------------------------------------------------------- +echo "$as_me:$LINENO: checking for GNUSTEP_SYSTEM_ROOT to use" >&5 +echo $ECHO_N "checking for GNUSTEP_SYSTEM_ROOT to use... $ECHO_C" >&6 + +if test "x$prefix" = "xNONE"; then + prefix="$ac_default_prefix" ; +fi + +# Check whether --with-system-root or --without-system-root was given. +if test "${with_system_root+set}" = set; then + withval="$with_system_root" + ac_cv_system_root="$withval" +else + ac_cv_system_root=yes +fi; + +GNUSTEP_ROOT="$prefix" +root_prefix='${prefix}' +if test $ac_cv_system_root = yes; then + if test "x`basename $prefix`" = xSystem; then + GNUSTEP_ROOT=`dirname $prefix` + else + if test "x$prefix" = "x/"; then + prefix=/System + else + prefix="$prefix/System" + fi + fi + root_prefix='${prefix}/..' +fi + + +echo "$as_me:$LINENO: result: $prefix" >&5 +echo "${ECHO_T}$prefix" >&6 + +# Makefiles directory location is in a bit of flux now. To keep the +# Makefiles dir in the previous location, reset this variable to +# 'Makefiles' and regenerate configure. Note this doesn't change all +# occurances. +MAKEFILES_SUFFIX=Library/Makefiles + + +# 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="$prefix/$MAKEFILES_SUFFIX/$INSTALL" +else + HOST_INSTALL="$INSTALL" +fi + +#-------------------------------------------------------------------- +# Process --with-defaults-root, --with-user-root, +# --with-local-root and --with-network-root +#-------------------------------------------------------------------- +echo "$as_me:$LINENO: checking for GNUSTEP_LOCAL_ROOT to use" >&5 +echo $ECHO_N "checking for GNUSTEP_LOCAL_ROOT to use... $ECHO_C" >&6 + +# Check whether --with-local-root or --without-local-root was given. +if test "${with_local_root+set}" = set; then + withval="$with_local_root" + GNUSTEP_LOCAL_ROOT="$withval" +else + GNUSTEP_LOCAL_ROOT="$GNUSTEP_ROOT/Local" + +fi; +echo "$as_me:$LINENO: result: $GNUSTEP_LOCAL_ROOT" >&5 +echo "${ECHO_T}$GNUSTEP_LOCAL_ROOT" >&6 + +echo "$as_me:$LINENO: checking for GNUSTEP_NETWORK_ROOT to use" >&5 +echo $ECHO_N "checking for GNUSTEP_NETWORK_ROOT to use... $ECHO_C" >&6 + +# Check whether --with-network-root or --without-network-root was given. +if test "${with_network_root+set}" = set; then + withval="$with_network_root" + GNUSTEP_NETWORK_ROOT="$withval" +else + # By default we disable network root, by setting GNUSTEP_NETWORK_ROOT +# to be the same as GNUSTEP_LOCAL_ROOT. GNUSTEP_NETWORK_ROOT is very +# rarely used, and most users prefer simpler systems with shorter +# paths and shorter command lines. To turn on GNUSTEP_NETWORK_ROOT +# again, you can use the --with-network-root=xxx option; pass +# something like --with-network-root=/usr/GNUstep/Network on the +# configure command line. +GNUSTEP_NETWORK_ROOT="$GNUSTEP_LOCAL_ROOT" + +fi; +echo "$as_me:$LINENO: result: $GNUSTEP_NETWORK_ROOT" >&5 +echo "${ECHO_T}$GNUSTEP_NETWORK_ROOT" >&6 + + + + +echo "$as_me:$LINENO: checking for GNUSTEP_USER_ROOT to use" >&5 +echo $ECHO_N "checking for GNUSTEP_USER_ROOT to use... $ECHO_C" >&6 + +# Check whether --with-user-root or --without-user-root was given. +if test "${with_user_root+set}" = set; then + withval="$with_user_root" + GNUSTEP_USER_ROOT="$withval" +else + # The default is to have user roots in ~/GNUstep +GNUSTEP_USER_ROOT="~/GNUstep" + +fi; +echo "$as_me:$LINENO: result: $GNUSTEP_USER_ROOT" >&5 +echo "${ECHO_T}$GNUSTEP_USER_ROOT" >&6 + + +#-------------------------------------------------------------------- +# Is the system flattened? +#-------------------------------------------------------------------- +echo "$as_me:$LINENO: checking for flattened directory structure" >&5 +echo $ECHO_N "checking for flattened directory structure... $ECHO_C" >&6 +# Check whether --enable-flattened or --disable-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=; +else + GNUSTEP_FLATTENED=yes; +fi + + +if test "$GNUSTEP_FLATTENED" = "yes"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; +fi + + +#-------------------------------------------------------------------- +# 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 or --disable-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 or --disable-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 + + +#-------------------------------------------------------------------- +# Miscellaneous flags and setup +#-------------------------------------------------------------------- +# Strip '-g' off of CFLAGS, since debug=yes adds that anyway +CFLAGS=`echo $CFLAGS | sed -e 's/-g //'` + +# Set location of GNUstep dirs for later use +if test "$GNUSTEP_FLATTENED" = yes; then + GNUSTEP_LDIR="$prefix/Library/Libraries" + GNUSTEP_HDIR="$prefix/Library/Headers" +else + 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" + GNUSTEP_LDIR="$prefix/Library/Libraries/$obj_dir" + GNUSTEP_HDIR="$prefix/Library/Headers/${ac_cv_library_combo}" +fi + +# Check to see if the libobjc library is in our GNUSTEP_SYSTEM_ROOT. +# If so, there are probably other libraries that we want there also, so +# leave the proper includes in CPPFLAGS and LDFLAGS +echo "$as_me:$LINENO: checking for custom shared objc library" >&5 +echo $ECHO_N "checking for custom shared objc library... $ECHO_C" >&6 +if test "${gs_cv_objc_libdir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + gs_cv_objc_libdir=NONE +if test -f "$GNUSTEP_HDIR/objc/objc.h"; then + if test -f "$GNUSTEP_LDIR/libobjc.a" -o -f "$GNUSTEP_LDIR/libobjc.so"; then + gs_cv_objc_libdir="$GNUSTEP_LDIR" + else + gs_cv_objc_libdir=NONE + 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 + +echo "$as_me:$LINENO: result: $gs_cv_objc_libdir" >&5 +echo "${ECHO_T}$gs_cv_objc_libdir" >&6 + +# The following are needed to compile the test programs +if test "$gs_cv_objc_libdir" = "$GNUSTEP_LDIR"; then + if test "$GNUSTEP_FLATTENED" = yes; then + OBJC_CPPFLAGS="$CPPFLAGS $INCLUDES -I$prefix/Library/Headers" + else + OBJC_CPPFLAGS="$CPPFLAGS $INCLUDES -I$prefix/Library/Headers/${ac_cv_library_combo}" + fi + OBJC_LDFLAGS="$LDFLAGS $LIB_DIR -L$gs_cv_objc_libdir" +fi + +# And the following to execute them +LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$gs_cv_objc_libdir" +export LD_LIBRARY_PATH + +#-------------------------------------------------------------------- +# Miscellaneous headers (only used for compiling which_lib.c and user_home.c) +#-------------------------------------------------------------------- + + + + + + +ac_header_dirent=no +for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do + as_ac_Header=`echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_hdr that defines DIR" >&5 +echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <sys/types.h> +#include <$ac_hdr> + +int +main () +{ +if ((DIR *) 0) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_Header=no" +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_hdr" | $as_tr_cpp` 1 +_ACEOF + +ac_header_dirent=$ac_hdr; break +fi + +done +# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. +if test $ac_header_dirent = dirent.h; then + echo "$as_me:$LINENO: checking for library containing opendir" >&5 +echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6 +if test "${ac_cv_search_opendir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_func_search_save_LIBS=$LIBS +ac_cv_search_opendir=no +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char opendir (); +int +main () +{ +opendir (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_opendir="none required" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test "$ac_cv_search_opendir" = no; then + for ac_lib in dir; do + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char opendir (); +int +main () +{ +opendir (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_opendir="-l$ac_lib" +break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + done +fi +LIBS=$ac_func_search_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 +echo "${ECHO_T}$ac_cv_search_opendir" >&6 +if test "$ac_cv_search_opendir" != no; then + test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS" + +fi + +else + echo "$as_me:$LINENO: checking for library containing opendir" >&5 +echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6 +if test "${ac_cv_search_opendir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_func_search_save_LIBS=$LIBS +ac_cv_search_opendir=no +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char opendir (); +int +main () +{ +opendir (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_opendir="none required" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test "$ac_cv_search_opendir" = no; then + for ac_lib in x; do + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char opendir (); +int +main () +{ +opendir (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_opendir="-l$ac_lib" +break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + done +fi +LIBS=$ac_func_search_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 +echo "${ECHO_T}$ac_cv_search_opendir" >&6 +if test "$ac_cv_search_opendir" != no; then + test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS" + +fi + +fi + + +echo "$as_me:$LINENO: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6 +if test "${ac_cv_prog_egrep+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' + fi +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 +echo "${ECHO_T}$ac_cv_prog_egrep" >&6 + EGREP=$ac_cv_prog_egrep + + +echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <stdlib.h> +#include <stdarg.h> +#include <string.h> +#include <float.h> + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_header_stdc=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <string.h> + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <stdlib.h> + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <ctype.h> +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + exit(2); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6 +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STDC_HEADERS 1 +_ACEOF + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. + + + + + + + + + +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_Header=no" +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + + + + + + + + + + + +for ac_header in sys/param.h sys/file.h dir.h string.h stdlib.h sys/types.h fcntl.h limits.h utime.h sys/stat.h pwd.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------------ ## +## Report this to the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + + + +for ac_func in getpwnam getpwuid geteuid getlogin strchr +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. + For example, HP-UX 11i <limits.h> declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + <limits.h> exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + +#undef $ac_func + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +#-------------------------------------------------------------------- +# Check if libobjc was compiled with thread support. +#-------------------------------------------------------------------- +OBJC_THREAD= + +# Check whether --with-thread-lib or --without-thread-lib was given. +if test "${with_thread_lib+set}" = set; then + withval="$with_thread_lib" + OBJC_THREAD=$withval +else + OBJC_THREAD= + +fi; + + +echo "$as_me:$LINENO: checking whether objc has thread support" >&5 +echo $ECHO_N "checking whether objc has thread support... $ECHO_C" >&6 +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" +fi +if test "$OBJC_RUNTIME_LIB" = "nx"; then + CFLAGS="$CFLAGS -DNeXT_RUNTIME" +fi +if test "$OBJC_RUNTIME_LIB" = "apple"; then + CFLAGS="$CFLAGS -DNeXT_RUNTIME" +fi +if test "$OBJC_THREAD" != ""; then + LIBS="-lobjc $LIBS $OBJC_THREAD" + if test "$cross_compiling" = yes; then + objc_threaded="" +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include "config_thread.m" +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + objc_threaded="$OBJC_THREAD" +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +objc_threaded="" +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +elif test "$host_os" = linux-gnu; then + LIBS="-lobjc -lpthread" + if test "$cross_compiling" = yes; then + objc_threaded="-lpthread" +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include "config_thread.m" +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + objc_threaded="-lpthread" +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +objc_threaded="" +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +elif test "`echo $host_os|sed 's/[0-9].*//'|sed s/elf//`" = freebsd; then + LIBS="-pthread -lobjc" + if test "$cross_compiling" = yes; then + objc_threaded="-pthread" +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include "config_thread.m" +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + objc_threaded="-pthread" +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +objc_threaded="" +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + if test x"$objc_threaded" = x""; then + LIBS="-lpthread -lobjc" + if test "$cross_compiling" = yes; then + objc_threaded="-lpthread" +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include "config_thread.m" +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + objc_threaded="-lpthread" +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +objc_threaded="" +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + fi + if test x"$objc_threaded" = x""; then + LIBS="-lobjc -lpcthread" + if test "$cross_compiling" = yes; then + objc_threaded="-lpcthread" +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include "config_thread.m" +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + objc_threaded="-lpcthread" +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +objc_threaded="" +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + fi +elif test "$MINGW32" = yes; then + # Mingw doesn't need anything extra for threads + LIBS="-lobjc $LIBS" + if test "$cross_compiling" = yes; then + objc_threaded="works" +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include "config_thread.m" +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + objc_threaded="works" +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +objc_threaded="" +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +else + LIBS="-lobjc $LIBS" + if test "$cross_compiling" = yes; then + objc_threaded="" +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include "config_thread.m" +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + objc_threaded="works" +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +objc_threaded="" +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + if test x"$objc_threaded" = x""; then + LIBS="-lobjc $saved_LIBS -lpthread " + if test "$cross_compiling" = yes; then + objc_threaded="" +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include "config_thread.m" +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + objc_threaded="-lpthread" +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +objc_threaded="" +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + fi + if test x"$objc_threaded" = x""; then + # Solaris, OpenBSD/sparc + LIBS="-lobjc $saved_LIBS -lpthread -lposix4" + if test "$cross_compiling" = yes; then + objc_threaded="" +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include "config_thread.m" +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + objc_threaded="-lpthread -lposix4" +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +objc_threaded="" +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + fi + if test x"$objc_threaded" = x""; then + LIBS="-lobjc $saved_LIBS -lthread " + if test "$cross_compiling" = yes; then + objc_threaded="" +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include "config_thread.m" +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + objc_threaded="-lthread" +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +objc_threaded="" +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + fi +fi +if test x"$objc_threaded" = x""; then + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +else + if test x"$objc_threaded" = x"works"; then + objc_threaded="" + fi + echo "$as_me:$LINENO: result: yes: $objc_threaded" >&5 +echo "${ECHO_T}yes: $objc_threaded" >&6 +fi +ac_cv_objc_threaded="$objc_threaded" + + + +# 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 or --disable-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=no +fi; + +echo "$as_me:$LINENO: checking whether we should use native ObjC exceptions" >&5 +echo $ECHO_N "checking whether we should use native ObjC exceptions... $ECHO_C" >&6 +if test x"$USE_OBJC_EXCEPTIONS" = x"yes"; then + # What we want to do: set USE_OBJC_EXCEPTIONS to yes if we can compile + # something with @try/@catch/@finally in it. + if test ! ${GCC} = "yes" ; then + USE_OBJC_EXCEPTIONS=no + echo "$as_me:$LINENO: result: no: compiler isn't gcc" >&5 +echo "${ECHO_T}no: compiler isn't gcc" >&6 + else + CFLAGS="$CFLAGS -fobjc-exceptions" + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF + +#include <stdlib.h> +#include <objc/Object.h> + +int main(int argc, char **argv) +{ + Object *o=nil; + @try + { + o=[Object new]; + @throw o; + } + @catch (id foo) + { + if (o!=foo) + return 1; + } + return 0; +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + USE_OBJC_EXCEPTIONS=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +USE_OBJC_EXCEPTIONS=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + echo "$as_me:$LINENO: result: $USE_OBJC_EXCEPTIONS" >&5 +echo "${ECHO_T}$USE_OBJC_EXCEPTIONS" >&6 + fi + if test x$USE_OBJC_EXCEPTIONS = xno; then + { echo "$as_me:$LINENO: Native objective-c exceptions were requested, but the compiler" >&5 +echo "$as_me: Native objective-c exceptions were requested, but the compiler" >&6;} + { echo "$as_me:$LINENO: doesn't support them." >&5 +echo "$as_me: doesn't support them." >&6;} + { { echo "$as_me:$LINENO: error: compiler doesn't support native objective-c exceptions" >&5 +echo "$as_me: error: compiler doesn't support native objective-c exceptions" >&2;} + { (exit 1); exit 1; }; } + fi +else + echo "$as_me:$LINENO: result: not requested by user" >&5 +echo "${ECHO_T}not requested by user" >&6 +fi + + + +# Restore LIBS and CFLAGS - we are going to compile C code in the next +# test. +LIBS="$saved_LIBS" +CFLAGS="$saved_CFLAGS" + +#-------------------------------------------------------------------- +# Check if compiler supports -MMD -MP to generate %.d files ... +#-------------------------------------------------------------------- + +echo "$as_me:$LINENO: checking if the compiler supports autodependencies" >&5 +echo $ECHO_N "checking if the compiler supports autodependencies... $ECHO_C" >&6 + +# What we want to do: set AUTO_DEPENDENCIES to yes if gcc => 3.x + +if test ! ${GCC} = "yes" ; then + AUTO_DEPENDENCIES="" + echo "$as_me:$LINENO: result: no: it's not gcc" >&5 +echo "${ECHO_T}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 beginning of line and following non numeric chars + # \([0-9][0-9]*\) matches 1 or more numeric chars (this is the 2^nd + # subpattern) + # \([^0-9].*\) matches a non numeric char followed by anything + # /\2/ replace the whole lot with the 2^nd subpattern + gs_cv_gcc_major_version=`${CC} -dumpversion | sed "s/\([^0-9]*\)\([0-9][0-9]*\)\([^0-9].*\)/\2/"`; + + if test "${gs_cv_gcc_major_version}" -ge "3" ; then + AUTO_DEPENDENCIES=yes + echo "$as_me:$LINENO: result: yes: gcc major version is ${gs_cv_gcc_major_version}" >&5 +echo "${ECHO_T}yes: gcc major version is ${gs_cv_gcc_major_version}" >&6 + else + AUTO_DEPENDENCIES="" + echo "$as_me:$LINENO: result: no: gcc major version is ${gs_cv_gcc_major_version}" >&5 +echo "${ECHO_T}no: gcc major version is ${gs_cv_gcc_major_version}" >&6 + fi +fi + + + + + + +#-------------------------------------------------------------------- +# 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. +echo "$as_me:$LINENO: checking if we should strip makefiles after installation" >&5 +echo $ECHO_N "checking if we should strip makefiles after installation... $ECHO_C" >&6 +# Check whether --enable-strip-makefiles or --disable-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; + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; +else + GNUSTEP_STRIP_MAKEFILES=; + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; +fi + + + +#-------------------------------------------------------------------- +# Disable updating the obsolete directory structure +#-------------------------------------------------------------------- +gs_move_obsolete=yes +# Check whether --enable-move-obsolete or --disable-move-obsolete was given. +if test "${enable_move_obsolete+set}" = set; then + enableval="$enable_move_obsolete" + gs_move_obsolete=$enableval +else + gs_move_obsolete=yes +fi; + +if test "$gs_move_obsolete" = "yes"; then + GNUSTEP_MOVE_OBSOLETE=move_obsolete; +else + GNUSTEP_MOVE_OBSOLETE= + { echo "$as_me:$LINENO: Old GNUstep directories will not be moved" >&5 +echo "$as_me: Old GNUstep directories will not be moved" >&6;} +fi + + +#-------------------------------------------------------------------- +# Record the version +#-------------------------------------------------------------------- +echo "$as_me:$LINENO: checking for the version of gnustep-make we are compiling" >&5 +echo $ECHO_N "checking for the version of gnustep-make we are compiling... $ECHO_C" >&6 +. "$srcdir/Version" +echo "$as_me:$LINENO: result: $GNUSTEP_MAKE_VERSION" >&5 +echo "${ECHO_T}$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` + + + + + +#-------------------------------------------------------------------- +# Produce the output files +#-------------------------------------------------------------------- + ac_config_files="$ac_config_files config.make openapp debugapp opentool executable.template GNUmakefile GNUstep.sh GNUstep.csh fixpath.sh gnustep-make.spec GNUsteprc" + + 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, don't put newlines in cache variables' values. +# 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. +{ + (set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *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 \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} | + sed ' + t clear + : clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + : end' >>confcache +if diff $cache_file confcache >/dev/null 2>&1; then :; else + if test -w $cache_file; then + test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" + cat confcache >$cache_file + else + echo "not updating unwritable cache $cache_file" + 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}' + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ 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[ ]*=/{ +s/:*\$(srcdir):*/:/; +s/:*\${srcdir}:*/:/; +s/:*@srcdir@:*/:/; +s/^\([^=]*=[ ]*\):*/\1/; +s/:*$//; +s/^[^=]*=[ ]*$//; +}' +fi + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_i=`echo "$ac_i" | + sed 's/\$U\././;s/\.o$//;s/\.obj$//'` + # 2. Add them. + ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + + +: ${CONFIG_STATUS=./config.status} +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF +#! $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} +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; 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 + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# 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 + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + 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 + + ;; + 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 + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} + { (exit 1); exit 1; }; } + + # 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 sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# 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'" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + +exec 6>&1 + +# Open the log real soon, to keep \$[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. Logging --version etc. is OK. +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX +} >&5 +cat >&5 <<_CSEOF + +This file was extended by $as_me, which was +generated by GNU Autoconf 2.59. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +_CSEOF +echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +echo >&5 +_ACEOF + +# Files that config.status was made for. +if test -n "$ac_config_files"; then + echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_headers"; then + echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_links"; then + echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_commands"; then + echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +fi + +cat >>$CONFIG_STATUS <<\_ACEOF + +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet 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 + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to <bug-autoconf@gnu.org>." +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +ac_cs_version="\\ +config.status +configured by $0, generated by GNU Autoconf 2.59, + with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" + +Copyright (C) 2003 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." +srcdir=$srcdir +INSTALL="$INSTALL" +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +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=$1 + ac_optarg=$2 + ac_shift=shift + ;; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_option=$1 + ac_need_defaults=false;; + esac + + case $ac_option in + # Handling of the options. +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:$LINENO: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" ;; + + 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 +if \$ac_cs_recheck; then + echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion +fi + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +# +# INIT-COMMANDS section. +# + + + +_ACEOF + + + +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "config.make" ) CONFIG_FILES="$CONFIG_FILES config.make" ;; + "openapp" ) CONFIG_FILES="$CONFIG_FILES openapp" ;; + "debugapp" ) CONFIG_FILES="$CONFIG_FILES debugapp" ;; + "opentool" ) CONFIG_FILES="$CONFIG_FILES opentool" ;; + "executable.template" ) CONFIG_FILES="$CONFIG_FILES executable.template" ;; + "GNUmakefile" ) CONFIG_FILES="$CONFIG_FILES GNUmakefile" ;; + "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" ;; + "GNUsteprc" ) CONFIG_FILES="$CONFIG_FILES GNUsteprc" ;; + "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; + "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + 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_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + 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 to put it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./confstat$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF + +# +# CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "\$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; + s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +s,@SHELL@,$SHELL,;t t +s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +s,@exec_prefix@,$exec_prefix,;t t +s,@prefix@,$prefix,;t t +s,@program_transform_name@,$program_transform_name,;t t +s,@bindir@,$bindir,;t t +s,@sbindir@,$sbindir,;t t +s,@libexecdir@,$libexecdir,;t t +s,@datadir@,$datadir,;t t +s,@sysconfdir@,$sysconfdir,;t t +s,@sharedstatedir@,$sharedstatedir,;t t +s,@localstatedir@,$localstatedir,;t t +s,@libdir@,$libdir,;t t +s,@includedir@,$includedir,;t t +s,@oldincludedir@,$oldincludedir,;t t +s,@infodir@,$infodir,;t t +s,@mandir@,$mandir,;t t +s,@build_alias@,$build_alias,;t t +s,@host_alias@,$host_alias,;t t +s,@target_alias@,$target_alias,;t t +s,@DEFS@,$DEFS,;t t +s,@ECHO_C@,$ECHO_C,;t t +s,@ECHO_N@,$ECHO_N,;t t +s,@ECHO_T@,$ECHO_T,;t t +s,@LIBS@,$LIBS,;t t +s,@CC@,$CC,;t t +s,@CFLAGS@,$CFLAGS,;t t +s,@LDFLAGS@,$LDFLAGS,;t t +s,@CPPFLAGS@,$CPPFLAGS,;t t +s,@ac_ct_CC@,$ac_ct_CC,;t t +s,@EXEEXT@,$EXEEXT,;t t +s,@OBJEXT@,$OBJEXT,;t t +s,@CPP@,$CPP,;t t +s,@build@,$build,;t t +s,@build_cpu@,$build_cpu,;t t +s,@build_vendor@,$build_vendor,;t t +s,@build_os@,$build_os,;t t +s,@host@,$host,;t t +s,@host_cpu@,$host_cpu,;t t +s,@host_vendor@,$host_vendor,;t t +s,@host_os@,$host_os,;t t +s,@target@,$target,;t t +s,@target_cpu@,$target_cpu,;t t +s,@target_vendor@,$target_vendor,;t t +s,@target_os@,$target_os,;t t +s,@ac_cv_library_combo@,$ac_cv_library_combo,;t t +s,@cc_cppprecomp@,$cc_cppprecomp,;t t +s,@cc_bundle@,$cc_bundle,;t t +s,@CYGWIN@,$CYGWIN,;t t +s,@RANLIB@,$RANLIB,;t t +s,@AR@,$AR,;t t +s,@DLLTOOL@,$DLLTOOL,;t t +s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t +s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +s,@INSTALL_DATA@,$INSTALL_DATA,;t t +s,@LN_S@,$LN_S,;t t +s,@TAR@,$TAR,;t t +s,@CHOWN@,$CHOWN,;t t +s,@GNUSTEP_ROOT@,$GNUSTEP_ROOT,;t t +s,@root_prefix@,$root_prefix,;t t +s,@MAKEFILES_SUFFIX@,$MAKEFILES_SUFFIX,;t t +s,@HOST_INSTALL@,$HOST_INSTALL,;t t +s,@GNUSTEP_LOCAL_ROOT@,$GNUSTEP_LOCAL_ROOT,;t t +s,@GNUSTEP_NETWORK_ROOT@,$GNUSTEP_NETWORK_ROOT,;t t +s,@GNUSTEP_USER_ROOT@,$GNUSTEP_USER_ROOT,;t t +s,@GNUSTEP_FLATTENED@,$GNUSTEP_FLATTENED,;t t +s,@GNUSTEP_MULTI_PLATFORM@,$GNUSTEP_MULTI_PLATFORM,;t t +s,@BACKEND_BUNDLE@,$BACKEND_BUNDLE,;t t +s,@EGREP@,$EGREP,;t t +s,@objc_threaded@,$objc_threaded,;t t +s,@ac_cv_objc_threaded@,$ac_cv_objc_threaded,;t t +s,@USE_OBJC_EXCEPTIONS@,$USE_OBJC_EXCEPTIONS,;t t +s,@AUTO_DEPENDENCIES@,$AUTO_DEPENDENCIES,;t t +s,@INCLUDES@,$INCLUDES,;t t +s,@LIB_DIR@,$LIB_DIR,;t t +s,@OBJCFLAGS@,$OBJCFLAGS,;t t +s,@GNUSTEP_STRIP_MAKEFILES@,$GNUSTEP_STRIP_MAKEFILES,;t t +s,@GNUSTEP_MOVE_OBSOLETE@,$GNUSTEP_MOVE_OBSOLETE,;t t +s,@GNUSTEP_MAKE_VERSION@,$GNUSTEP_MAKE_VERSION,;t t +s,@GNUSTEP_MAKE_MAJOR_VERSION@,$GNUSTEP_MAKE_MAJOR_VERSION,;t t +s,@GNUSTEP_MAKE_MINOR_VERSION@,$GNUSTEP_MAKE_MINOR_VERSION,;t t +s,@GNUSTEP_MAKE_SUBMINOR_VERSION@,$GNUSTEP_MAKE_SUBMINOR_VERSION,;t t +s,@clean_target_os@,$clean_target_os,;t t +s,@clean_target_cpu@,$clean_target_cpu,;t t +s,@clean_target_vendor@,$clean_target_vendor,;t t +s,@LIBOBJS@,$LIBOBJS,;t t +s,@LTLIBOBJS@,$LTLIBOBJS,;t t +CEOF + +_ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. + ac_max_sed_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # Line after last line for current file. + ac_more_lines=: + ac_sed_cmds= + while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + # These are the two extra sed commands mentioned above. + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_lines` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat + fi +fi # test -n "$CONFIG_FILES" + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_builddir$INSTALL ;; + esac + + if test x"$ac_file" != x-; then + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi + # 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. */ + if test x"$ac_file" = x-; then + configure_input= + else + configure_input="$ac_file. " + fi + configure_input=$configure_input"Generated from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + sed "$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s,@configure_input@,$configure_input,;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,@top_builddir@,$ac_top_builddir,;t t +s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +s,@INSTALL@,$ac_INSTALL,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + mv $tmp/out $ac_file + else + cat $tmp/out + rm -f $tmp/out + fi + +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_HEADER section. +# + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='[ ].*$,\1#\2' +ac_dC=' ' +ac_dD=',;t' +# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='$,\1#\2define\3' +ac_uC=' ' +ac_uD=',;t' + +for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + # Do quote $f, to prevent DOS paths from being IFS'd. + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + # Remove the trailing spaces. + sed 's/[ ]*$//' $ac_file_inputs >$tmp/in + +_ACEOF + +# Transform confdefs.h into two sed scripts, `conftest.defines' and +# `conftest.undefs', that substitutes the proper values into +# config.h.in to produce config.h. The first handles `#define' +# templates, and the second `#undef' templates. +# And first: Protect against being on the right side of a sed subst in +# config.status. Protect against being in an unquoted here document +# in config.status. +rm -f conftest.defines conftest.undefs +# Using a here document instead of a string reduces the quoting nightmare. +# Putting comments in sed scripts is not portable. +# +# `end' is used to avoid that the second main sed command (meant for +# 0-ary CPP macros) applies to n-ary macro definitions. +# See the Autoconf documentation for `clear'. +cat >confdef2sed.sed <<\_ACEOF +s/[\\&,]/\\&/g +s,[\\$`],\\&,g +t clear +: clear +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp +t end +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp +: end +_ACEOF +# If some macros were called several times there might be several times +# the same #defines, which is useless. Nevertheless, we may not want to +# sort them, since we want the *last* AC-DEFINE to be honored. +uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines +sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs +rm -f confdef2sed.sed + +# This sed command replaces #undef with comments. This is necessary, for +# example, in the case of _POSIX_SOURCE, which is predefined and required +# on some systems where configure will not decide to define it. +cat >>conftest.undefs <<\_ACEOF +s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, +_ACEOF + +# Break up conftest.defines because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS +echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS +echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS +echo ' :' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.defines >/dev/null +do + # Write a limited-size here document to $tmp/defines.sed. + echo ' cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS + # Speed up: don't consider the non `#define' lines. + echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/defines.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail + rm -f conftest.defines + mv conftest.tail conftest.defines +done +rm -f conftest.defines +echo ' fi # grep' >>$CONFIG_STATUS +echo >>$CONFIG_STATUS + +# Break up conftest.undefs because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #undef templates' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.undefs >/dev/null +do + # Write a limited-size here document to $tmp/undefs.sed. + echo ' cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS + # Speed up: don't consider the non `#undef' + echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/undefs.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail + rm -f conftest.undefs + mv conftest.tail conftest.undefs +done +rm -f conftest.undefs + +cat >>$CONFIG_STATUS <<\_ACEOF + # 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. */ + if test x"$ac_file" = x-; then + echo "/* Generated by configure. */" >$tmp/config.h + else + echo "/* $ac_file. Generated by configure. */" >$tmp/config.h + fi + cat $tmp/in >>$tmp/config.h + rm -f $tmp/in + if test x"$ac_file" != x-; then + if diff $ac_file $tmp/config.h >/dev/null 2>&1; then + { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 +echo "$as_me: $ac_file is unchanged" >&6;} + else + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + rm -f $ac_file + mv $tmp/config.h $ac_file + fi + else + cat $tmp/config.h + rm -f $tmp/config.h + fi +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_COMMANDS section. +# +for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue + ac_dest=`echo "$ac_file" | sed 's,:.*,,'` + ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_dir=`(dirname "$ac_dest") 2>/dev/null || +$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_dest" : 'X\(//\)[^/]' \| \ + X"$ac_dest" : 'X\(//\)$' \| \ + X"$ac_dest" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_dest" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + + { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 +echo "$as_me: executing $ac_dest commands" >&6;} + case $ac_dest in + default ) chmod a+x openapp debugapp opentool fixpath.sh executable.template ;; + esac +done +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF + +{ (exit 0); exit 0; } +_ACEOF +chmod +x $CONFIG_STATUS +ac_clean_files=$ac_clean_files_save + + +# 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 || { (exit 1); exit 1; } +fi + diff --git a/gnustep-make/configure.ac b/gnustep-make/configure.ac new file mode 100644 index 00000000..27aedbeb --- /dev/null +++ b/gnustep-make/configure.ac @@ -0,0 +1,679 @@ +# +# configure.ac +# +# Copyright (C) 1997-2004 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +AC_INIT +AC_PREREQ(2.57) +AC_CONFIG_SRCDIR([application.make]) +AC_CONFIG_HEADER(config.h) + +#-------------------------------------------------------------------- +# Setup the library combination +#-------------------------------------------------------------------- +targetArgument=${target} +AC_PROG_CC +AC_PROG_CPP +AC_CANONICAL_TARGET([]) + +AC_MSG_CHECKING(for library combo) +AC_ARG_WITH(library-combo,[ +--with-library-combo Define the default library combination +], +ac_cv_library_combo=$withval, +ac_cv_library_combo=$ac_cv_library_combo +) + +if test "$ac_cv_library_combo" = ""; 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 ;; + 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}'` + +#-------------------------------------------------------------------- +# 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* ) CYGWIN=yes;; + *mingw32* ) MINGW32=yes;; + * ) MINGW32=no + CYGWIN=no;; +esac +AC_SUBST(CYGWIN) + +AC_EXEEXT +AC_OBJEXT +if test "$MINGW32" = yes; then + echo "hosted on mingw32 .." + export INSTALL=install + export SHELL=sh + export CC=${CC:-gcc} + export AR=${AR:-ar} + export RANLIB=${RANLIB:-ranlib} + export DLLTOOL=${DLLTOOL:-dlltool} +elif test "$CYGWIN" = yes; then + echo "hosted on cygwin .." + export CC=${CC:-gcc} + 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" + AC_CHECK_PROG(CC, "${targetArgument}-gcc", dnl + "${targetArgument}-gcc", gcc) + 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 + AC_CHECK_PROG(AR, ar, ar) + AC_CHECK_PROG(DLLTOOL, dlltool, dlltool) + AC_PROG_RANLIB +fi + +AC_PROG_INSTALL +AC_PROG_LN_S([]) + +AC_CHECK_PROGS(TAR, gnutar gtar, tar) +AC_ARG_WITH(tar, +[--with-tar Set the name of the tar program to use], + TAR="$withval",) + +AC_CHECK_PROG(CHOWN, chown, chown, none) +if test "$MINGW32" = no; then + if test "$CHOWN" = "none"; then + AC_MSG_ERROR("Could not find chown."); + fi +fi + +#------------------------------------------------------------------- +# GNUstep specific options follow +#------------------------------------------------------------------- + +#-------------------------------------------------------------------- +# The GNUstep root directory. +# The user should have the GNUSTEP_SYSTEM_ROOT environment variable +# defined, but if not then we have a global default. +# Also test for the C: directory, which means we're on Windows +#-------------------------------------------------------------------- +AC_MSG_CHECKING(for GNUSTEP_SYSTEM_ROOT to use) +AC_PREFIX_DEFAULT(`if test "x$GNUSTEP_SYSTEM_ROOT" = "x"; then + if test -d C: ; then + echo C:/GNUstep; + else + echo /usr/GNUstep ; + fi +else + echo "$GNUSTEP_SYSTEM_ROOT" ; +fi`) +if test "x$prefix" = "xNONE"; then + prefix="$ac_default_prefix" ; +fi +AC_ARG_WITH(system-root, +[--without-system-root Don't use separate system root directory], + ac_cv_system_root="$withval", + ac_cv_system_root=yes) + +GNUSTEP_ROOT="$prefix" +root_prefix='${prefix}' +if test $ac_cv_system_root = yes; then + if test "x`basename $prefix`" = xSystem; then + GNUSTEP_ROOT=`dirname $prefix` + else + if test "x$prefix" = "x/"; then + prefix=/System + else + prefix="$prefix/System" + fi + fi + root_prefix='${prefix}/..' +fi +AC_SUBST(GNUSTEP_ROOT) +AC_SUBST(root_prefix) +AC_MSG_RESULT($prefix) + +# Makefiles directory location is in a bit of flux now. To keep the +# Makefiles dir in the previous location, reset this variable to +# 'Makefiles' and regenerate configure. Note this doesn't change all +# occurances. +MAKEFILES_SUFFIX=Library/Makefiles +AC_SUBST(MAKEFILES_SUFFIX) + +# 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="$prefix/$MAKEFILES_SUFFIX/$INSTALL" +else + HOST_INSTALL="$INSTALL" +fi + +#-------------------------------------------------------------------- +# Process --with-defaults-root, --with-user-root, +# --with-local-root and --with-network-root +#-------------------------------------------------------------------- +AC_MSG_CHECKING(for GNUSTEP_LOCAL_ROOT to use) +AC_ARG_WITH(local-root, +[--with-local-root + Set the GNUSTEP_LOCAL_ROOT directory. Use this option if you want +to have the GNUSTEP_LOCAL_ROOT directory in a non-standard place. Example: +--with-local-root=/usr/local/GNUstep/Local +], +GNUSTEP_LOCAL_ROOT="$withval", +GNUSTEP_LOCAL_ROOT="$GNUSTEP_ROOT/Local" +) +AC_MSG_RESULT($GNUSTEP_LOCAL_ROOT) + +AC_MSG_CHECKING(for GNUSTEP_NETWORK_ROOT to use) +AC_ARG_WITH(network-root, +[--with-network-root + Set the GNUSTEP_NETWORK_ROOT directory. Use this option if you want +to have the GNUSTEP_NETWORK_ROOT directory. Example: +--with-network-root=/usr/local/GNUstep/Network +], +GNUSTEP_NETWORK_ROOT="$withval", +# By default we disable network root, by setting GNUSTEP_NETWORK_ROOT +# to be the same as GNUSTEP_LOCAL_ROOT. GNUSTEP_NETWORK_ROOT is very +# rarely used, and most users prefer simpler systems with shorter +# paths and shorter command lines. To turn on GNUSTEP_NETWORK_ROOT +# again, you can use the --with-network-root=xxx option; pass +# something like --with-network-root=/usr/GNUstep/Network on the +# configure command line. +GNUSTEP_NETWORK_ROOT="$GNUSTEP_LOCAL_ROOT" +) +AC_MSG_RESULT($GNUSTEP_NETWORK_ROOT) + +AC_SUBST(GNUSTEP_LOCAL_ROOT) +AC_SUBST(GNUSTEP_NETWORK_ROOT) + +AC_MSG_CHECKING(for GNUSTEP_USER_ROOT to use) +AC_ARG_WITH(user-root, +[--with-user-root + Set the GNUSTEP_USER_ROOT directory for all users. '~' is allowed + at the beginning to mean the user's home directory. Use this + option if you want to have the GNUSTEP_USER_ROOT directory in a non + default place for all users. + Example: --with-user-root='~/gnustep' +], +GNUSTEP_USER_ROOT="$withval", +# The default is to have user roots in ~/GNUstep +GNUSTEP_USER_ROOT="~/GNUstep" +) +AC_MSG_RESULT($GNUSTEP_USER_ROOT) +AC_SUBST(GNUSTEP_USER_ROOT) + +#-------------------------------------------------------------------- +# Is the system flattened? +#-------------------------------------------------------------------- +AC_MSG_CHECKING(for flattened directory structure) +AC_ARG_ENABLE(flattened, +[--disable-flattened Disable flattened directory structure], + ac_cv_flattened=$enableval, + ac_cv_flattened="undefined") + +if test "$ac_cv_flattened" = "no"; then + GNUSTEP_FLATTENED=; +else + GNUSTEP_FLATTENED=yes; +fi +AC_SUBST(GNUSTEP_FLATTENED) + +if test "$GNUSTEP_FLATTENED" = "yes"; then + AC_MSG_RESULT(yes); +else + AC_MSG_RESULT(no); +fi + + +#-------------------------------------------------------------------- +# 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 Use run time multi-platform support], + 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], + 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) + +#-------------------------------------------------------------------- +# Miscellaneous flags and setup +#-------------------------------------------------------------------- +# Strip '-g' off of CFLAGS, since debug=yes adds that anyway +CFLAGS=`echo $CFLAGS | sed -e 's/-g //'` + +# Set location of GNUstep dirs for later use +if test "$GNUSTEP_FLATTENED" = yes; then + GNUSTEP_LDIR="$prefix/Library/Libraries" + GNUSTEP_HDIR="$prefix/Library/Headers" +else + 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" + GNUSTEP_LDIR="$prefix/Library/Libraries/$obj_dir" + GNUSTEP_HDIR="$prefix/Library/Headers/${ac_cv_library_combo}" +fi + +# Check to see if the libobjc library is in our GNUSTEP_SYSTEM_ROOT. +# 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 +if test -f "$GNUSTEP_HDIR/objc/objc.h"; then + if test -f "$GNUSTEP_LDIR/libobjc.a" -o -f "$GNUSTEP_LDIR/libobjc.so"; then + gs_cv_objc_libdir="$GNUSTEP_LDIR" + else + gs_cv_objc_libdir=NONE + 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) + +# The following are needed to compile the test programs +if test "$gs_cv_objc_libdir" = "$GNUSTEP_LDIR"; then + if test "$GNUSTEP_FLATTENED" = yes; then + OBJC_CPPFLAGS="$CPPFLAGS $INCLUDES -I$prefix/Library/Headers" + else + OBJC_CPPFLAGS="$CPPFLAGS $INCLUDES -I$prefix/Library/Headers/${ac_cv_library_combo}" + fi + OBJC_LDFLAGS="$LDFLAGS $LIB_DIR -L$gs_cv_objc_libdir" +fi + +# And the following to execute them +LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$gs_cv_objc_libdir" +export LD_LIBRARY_PATH + +#-------------------------------------------------------------------- +# Miscellaneous headers (only used for compiling which_lib.c and user_home.c) +#-------------------------------------------------------------------- +AC_HEADER_DIRENT +AC_CHECK_HEADERS(sys/param.h sys/file.h dir.h string.h stdlib.h sys/types.h dnl + fcntl.h limits.h utime.h sys/stat.h pwd.h unistd.h) +AC_CHECK_FUNCS(getpwnam getpwuid geteuid getlogin strchr) + +#-------------------------------------------------------------------- +# Check if libobjc was compiled with thread support. +#-------------------------------------------------------------------- +OBJC_THREAD= +AC_ARG_WITH(thread-lib, +[--with-thread-lib Specify alternate thread library], +OBJC_THREAD=$withval, +OBJC_THREAD= +) + + +AC_MSG_CHECKING(whether objc has thread support) +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" +fi +if test "$OBJC_RUNTIME_LIB" = "nx"; then + CFLAGS="$CFLAGS -DNeXT_RUNTIME" +fi +if test "$OBJC_RUNTIME_LIB" = "apple"; then + CFLAGS="$CFLAGS -DNeXT_RUNTIME" +fi +if test "$OBJC_THREAD" != ""; then + LIBS="-lobjc $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="-lobjc -lpthread" + AC_TRY_RUN([#include "config_thread.m"], objc_threaded="-lpthread", + objc_threaded="", objc_threaded="-lpthread") +elif test "`echo $host_os|sed 's/[[0-9]].*//'|sed s/elf//`" = freebsd; then + LIBS="-pthread -lobjc" + AC_TRY_RUN([#include "config_thread.m"], objc_threaded="-pthread", + objc_threaded="", objc_threaded="-pthread") + if test x"$objc_threaded" = x""; then + LIBS="-lpthread -lobjc" + AC_TRY_RUN([#include "config_thread.m"], objc_threaded="-lpthread", + objc_threaded="", objc_threaded="-lpthread") + fi + if test x"$objc_threaded" = x""; then + LIBS="-lobjc -lpcthread" + AC_TRY_RUN([#include "config_thread.m"], objc_threaded="-lpcthread", + objc_threaded="", objc_threaded="-lpcthread") + fi +elif test "$MINGW32" = yes; then + # Mingw doesn't need anything extra for threads + LIBS="-lobjc $LIBS" + AC_TRY_RUN([#include "config_thread.m"], + objc_threaded="works", + objc_threaded="", objc_threaded="works") +else + LIBS="-lobjc $LIBS" + AC_TRY_RUN([#include "config_thread.m"], + objc_threaded="works", + objc_threaded="", objc_threaded="") + if test x"$objc_threaded" = x""; then + LIBS="-lobjc $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="-lobjc $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="-lobjc $saved_LIBS -lthread " + AC_TRY_RUN([#include "config_thread.m"], + objc_threaded="-lthread", + objc_threaded="", objc_threaded="") + 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) + +# 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, + AC_HELP_STRING([--enable-native-objc-exceptions], + [use native objective-c exceptions]), + USE_OBJC_EXCEPTIONS=$enableval, + USE_OBJC_EXCEPTIONS=no) + +AC_MSG_CHECKING(whether we should use native ObjC exceptions) +if test x"$USE_OBJC_EXCEPTIONS" = x"yes"; then + # What we want to do: set USE_OBJC_EXCEPTIONS to yes if we can compile + # something with @try/@catch/@finally in it. + if test ! ${GCC} = "yes" ; then + USE_OBJC_EXCEPTIONS=no + AC_MSG_RESULT(no: compiler isn't gcc) + else + CFLAGS="$CFLAGS -fobjc-exceptions" + AC_RUN_IFELSE([[ +#include <stdlib.h> +#include <objc/Object.h> + +int main(int argc, char **argv) +{ + Object *o=nil; + @try + { + o=[Object new]; + @throw o; + } + @catch (id foo) + { + if (o!=foo) + return 1; + } + return 0; +} + ]], USE_OBJC_EXCEPTIONS=yes, USE_OBJC_EXCEPTIONS=no) + AC_MSG_RESULT($USE_OBJC_EXCEPTIONS) + fi + if test x$USE_OBJC_EXCEPTIONS = xno; then + AC_MSG_NOTICE([Native objective-c exceptions were requested, but the compiler]) + AC_MSG_NOTICE([doesn't support them.]) + AC_MSG_ERROR([compiler doesn't support native objective-c exceptions]) + fi +else + AC_MSG_RESULT(not requested by user) +fi + +AC_SUBST(USE_OBJC_EXCEPTIONS) + +# Restore LIBS and CFLAGS - we are going to compile C code in the next +# test. +LIBS="$saved_LIBS" +CFLAGS="$saved_CFLAGS" + +#-------------------------------------------------------------------- +# 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 + +if test ! ${GCC} = "yes" ; then + AUTO_DEPENDENCIES="" + 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 beginning of line and following non numeric chars + # \([0-9][0-9]*\) matches 1 or more numeric chars (this is the 2^nd + # subpattern) + # \([^0-9].*\) matches a non numeric char followed by anything + # /\2/ replace the whole lot with the 2^nd subpattern + gs_cv_gcc_major_version=`${CC} -dumpversion | sed "s/\([[^0-9]]*\)\([[0-9]][[0-9]]*\)\([[^0-9]].*\)/\2/"`; + + if test "${gs_cv_gcc_major_version}" -ge "3" ; then + AUTO_DEPENDENCIES=yes + AC_MSG_RESULT(yes: gcc major version is ${gs_cv_gcc_major_version}) + else + AUTO_DEPENDENCIES="" + AC_MSG_RESULT(no: gcc major version is ${gs_cv_gcc_major_version}) + fi +fi + +AC_SUBST(AUTO_DEPENDENCIES) +AC_SUBST(INCLUDES) +AC_SUBST(LIB_DIR) +AC_SUBST(OBJCFLAGS) + +#-------------------------------------------------------------------- +# 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 makefiles after installation], + 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) + + +#-------------------------------------------------------------------- +# Disable updating the obsolete directory structure +#-------------------------------------------------------------------- +gs_move_obsolete=yes +AC_ARG_ENABLE(move-obsolete, +[--disable-move-obsolete Disable moving obsolete dir structure], + gs_move_obsolete=$enableval, + gs_move_obsolete=yes) + +if test "$gs_move_obsolete" = "yes"; then + GNUSTEP_MOVE_OBSOLETE=move_obsolete; +else + GNUSTEP_MOVE_OBSOLETE= + AC_MSG_NOTICE(Old GNUstep directories will not be moved) +fi +AC_SUBST(GNUSTEP_MOVE_OBSOLETE) + +#-------------------------------------------------------------------- +# 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) + +#-------------------------------------------------------------------- +# Produce the output files +#-------------------------------------------------------------------- +AC_CONFIG_FILES([config.make openapp debugapp opentool +executable.template GNUmakefile GNUstep.sh GNUstep.csh fixpath.sh +gnustep-make.spec GNUsteprc]) +AC_CONFIG_COMMANDS([default], + [[chmod a+x openapp debugapp opentool fixpath.sh executable.template]], + [[]]) +AC_OUTPUT diff --git a/gnustep-make/cpu.sh b/gnustep-make/cpu.sh new file mode 100755 index 00000000..24fd04d8 --- /dev/null +++ b/gnustep-make/cpu.sh @@ -0,0 +1,23 @@ +#! /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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +echo $1 | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/' diff --git a/gnustep-make/create_domain_dir_tree.sh b/gnustep-make/create_domain_dir_tree.sh new file mode 100755 index 00000000..758e3031 --- /dev/null +++ b/gnustep-make/create_domain_dir_tree.sh @@ -0,0 +1,72 @@ +#!/bin/sh +# create_domain_dir_tree.sh +# +# Copyright (C) 2002 Free Software Foundation, Inc. +# +# Author: Nicola Pero <n.pero@mi.flashnet.it> +# Date: October 2002 +# +# 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# Take a single argument - a directory name -, and create the GNUstep +# domain directory structure inside the directory. + +# It is automatically called with argument ${GNUSTEP_SYSTEM_ROOT} when +# gnustep-make is installed; you can call it with argument +# ${GNUSTEP_LOCAL_ROOT} or ${GNUSTEP_NETWORK_ROOT} (or your own +# GNUstep user dir) if you need to create manually a GNUstep domain +# directory tree in there. + +if [ -z "$*" ]; then + echo "No arguments specified" >&2 + exit 0 +fi + +# The original code +# mydir=`dirname "$0"` + +# But it seems that on OpenStep, dirname is not available, so we use +# the following trick. The sed expression replaces /[^/]*$ (which +# means '/' followed by a sequence of zero or more non-'/' characters, +# followed by end-of-line) with nothing (that is, it deletes it), and +# what remains is the dirname. +mydir=`echo "$0" | sed -e "s#/[^/]*\\\$##"` + +basepath="$1" + +${mydir}/mkinstalldirs "$basepath" \ + "$basepath"/Applications \ + "$basepath"/Tools/${GNUSTEP_TARGET_LDIR} \ + "$basepath"/Tools/Resources \ + "$basepath"/Tools/Java \ + "$basepath"/Library/ApplicationSupport \ + "$basepath"/Library/Bundles \ + "$basepath"/Library/ColorPickers \ + "$basepath"/Library/Colors \ + "$basepath"/Library/DocTemplates \ + "$basepath"/Library/Documentation/Developer \ + "$basepath"/Library/Documentation/User \ + "$basepath"/Library/Documentation/info \ + "$basepath"/Library/Documentation/man \ + "$basepath"/Library/Fonts \ + "$basepath"/Library/Frameworks \ + "$basepath"/Library/Headers/${MAYBE_LIBRARY_COMBO}/${GNUSTEP_TARGET_DIR} \ + "$basepath"/Library/Images \ + "$basepath"/Library/KeyBindings \ + "$basepath"/Library/Libraries/${GNUSTEP_TARGET_LDIR} \ + "$basepath"/Library/Libraries/Resources \ + "$basepath"/Library/Libraries/Java \ + "$basepath"/Library/PostScript \ + "$basepath"/Library/Services \ + "$basepath"/Library/Sounds + diff --git a/gnustep-make/ctool.make b/gnustep-make/ctool.make new file mode 100644 index 00000000..da577c4f --- /dev/null +++ b/gnustep-make/ctool.make @@ -0,0 +1,30 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +ifeq ($(GNUSTEP_INSTANCE),) +include $(GNUSTEP_MAKEFILES)/Master/ctool.make +else + +ifeq ($(GNUSTEP_TYPE),ctool) +include $(GNUSTEP_MAKEFILES)/Instance/ctool.make +endif + +endif diff --git a/gnustep-make/debugapp.in b/gnustep-make/debugapp.in new file mode 100644 index 00000000..9b777560 --- /dev/null +++ b/gnustep-make/debugapp.in @@ -0,0 +1,231 @@ +#!/bin/sh +# +# @configure_input@ +# +# Copyright (C) 1997 Free Software Foundation, Inc. +# +# Author: Ovidiu Predescu <ovidiu@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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# Execute gdb for 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. + +if [ -z "$1" ]; then + echo usage: `basename "$0"` [--library-combo=...] [--gdb=...] application [arguments...] + echo `basename "$0"` --help for help + exit 1 +fi + +if [ -z "$EXEEXT" ]; then + EXEEXT=@EXEEXT@ +fi +if [ -z "$LIBRARY_COMBO" ]; then + LIBRARY_COMBO=@ac_cv_library_combo@ +fi +if [ -z "$GDB" ]; then + GDB=gdb +fi + +# Read command line arguments now +while [ x"$1" != x ]; do + case "$1" in + --help) + echo usage: `basename "$0"` [--library-combo=...] [--gbd=...] application [arguments...] + echo + echo [--library-combo=...] specifies a GNUstep backend to use. + echo It overrides the default LIBRARY_COMBO environment variable. + echo --library-combo=gnu for GNUstep + echo --library-combo=nx for NeXT OPENSTEP + echo --library-combo=apple for Apple OSX + echo + echo [--gdb=...] specifies the debugger to use. + echo It overrides the default GDB environment variable. If the --gdb=... + echo flag is not used, and the GDB variable is not set, then the program + echo called \"gdb\" is invoked. + echo + echo application is the complete or relative name of the application + echo program with the .app or .debug extension, like Edit.debug. + echo + echo [arguments...] are the arguments to the application. + exit 0 + ;; + + --library-combo=*) + LIBRARY_COMBO=`echo "$1" | sed 's/--library-combo=//'` + shift;; + + --gdb=*) + GDB=`echo "$1" | sed 's/--gdb=//'` + shift;; + + *) + app="$1"; + shift;; + 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 +elif [ "$LIBRARY_COMBO" = apple ]; then + LIBRARY_COMBO=apple-apple-apple +fi + +# Remove leading slashes at the end of the application name +app="`echo \"$app\" | sed 's%/*$%%'`" + +case "$app" in + /*) # An absolute path. + full_appname="$app";; + */*) # A relative path + full_appname="`(cd \"$app\"; pwd)`";; + *) # A path that should be searched into the GNUstep paths + if [ -n "$GNUSTEP_PATHLIST" ]; then + SPATH="$GNUSTEP_PATHLIST" + else + SPATH="$PATH" + fi + SPATH=".:$SPATH" + IFS=: + for dir in $SPATH; do + if [ -d "$dir/Applications/$app" ]; then + full_appname="`(cd \"$dir/Applications/$app\"; pwd)`" + break; + fi + if [ -d "$dir/$app" ]; then + full_appname="`(cd \"$dir/$app\"; pwd)`" + break; + fi + done;; +esac + +# Search for a core file in the current directory. +corearg= +corefiles="core*" +for corefile in $corefiles; do + if [ -f "$corefile" ]; then + echo -e "Core image ($corefile) has been found in working directory. Use it (y/n)? "; + # Need an argument here for Solaris + read REPLY; + if [ $REPLY = y ]; then + echo -e "Using it."; + corearg="--core=$corefile"; + break; + else + echo -e "Ignoring it."; + fi + fi +done +unset corefile +unset corefiles + +if [ -z "$full_appname" ]; then + echo "Can't find the required application: $app!" + exit 1 +fi + +if [ -z "$GNUSTEP_FLATTENED" ]; then + # + # Determine the host information + # + if [ -z "$GNUSTEP_HOST" ]; then + GNUSTEP_HOST=`$GNUSTEP_SYSTEM_ROOT/@MAKEFILES_SUFFIX@/config.guess` + GNUSTEP_HOST=`$GNUSTEP_SYSTEM_ROOT/@MAKEFILES_SUFFIX@/config.sub $GNUSTEP_HOST` + export GNUSTEP_HOST + fi + if [ -z "$GNUSTEP_HOST_CPU" ]; then + GNUSTEP_HOST_CPU=`$GNUSTEP_SYSTEM_ROOT/@MAKEFILES_SUFFIX@/cpu.sh $GNUSTEP_HOST` + GNUSTEP_HOST_CPU=`$GNUSTEP_SYSTEM_ROOT/@MAKEFILES_SUFFIX@/clean_cpu.sh $GNUSTEP_HOST_CPU` + export GNUSTEP_HOST_CPU + fi + if [ -z "$GNUSTEP_HOST_VENDOR" ]; then + GNUSTEP_HOST_VENDOR=`$GNUSTEP_SYSTEM_ROOT/@MAKEFILES_SUFFIX@/vendor.sh $GNUSTEP_HOST` + GNUSTEP_HOST_VENDOR=`$GNUSTEP_SYSTEM_ROOT/@MAKEFILES_SUFFIX@/clean_vendor.sh $GNUSTEP_HOST_VENDOR` + export GNUSTEP_HOST_VENDOR + fi + if [ -z "$GNUSTEP_HOST_OS" ]; then + GNUSTEP_HOST_OS=`$GNUSTEP_SYSTEM_ROOT/@MAKEFILES_SUFFIX@/os.sh $GNUSTEP_HOST` + GNUSTEP_HOST_OS=`$GNUSTEP_SYSTEM_ROOT/@MAKEFILES_SUFFIX@/clean_os.sh $GNUSTEP_HOST_OS` + export GNUSTEP_HOST_OS + fi + + if [ "$LIBRARY_COMBO" = nx-nx-nx -a "$GNUSTEP_HOST_OS" = nextstep4 ]; then + if [ -f "$full_appname/library_paths.openapp" ]; then + additional_library_paths="`cat \"$full_appname/library_paths.openapp\"`" + fi + fi +else + if [ -f "$full_appname/library_paths.openapp" ]; then + additional_library_paths="`cat \"$full_appname/library_paths.openapp\"`" + fi +fi + +appname="`echo \"$app\" | sed 's/\.[a-z]*$//'`" +appname="`basename \"$appname\"`" +appname="$appname$EXEEXT" +. "$GNUSTEP_SYSTEM_ROOT/@MAKEFILES_SUFFIX@/ld_lib_path.sh" + + +if [ "$LIBRARY_COMBO" = "apple-apple-apple" ]; then + if [ ! -f "$full_appname/Contents/MacOS/$appname" ]; then + echo "$full_appname application does not have a binary for this kind of machine and operating system." + exit 1 + fi + + if [ -z "$corearg" ]; then + "$GDB" "$full_appname/Contents/MacOS/$appname" + else + "$GDB" "$full_appname/Contents/MacOS/$appname" "$corearg" + fi + +else + # Determine if the application has a binary for this operating system + if [ -z "$GNUSTEP_FLATTENED" -a ! -d "$full_appname/$GNUSTEP_HOST_CPU/$GNUSTEP_HOST_OS" ]; then + echo "$full_appname application does not have a binary for this kind of machine and operating system." + exit 1 + fi + + if [ -z "$GNUSTEP_FLATTENED" -a ! -d "$full_appname/$GNUSTEP_HOST_CPU/$GNUSTEP_HOST_OS/$LIBRARY_COMBO" ]; then + echo "$full_appname application does not have a binary for this combination of libraries: $LIBRARY_COMBO." + exit 1 + fi + + if [ -z "$GNUSTEP_FLATTENED" ]; then + file_appname="$full_appname/$GNUSTEP_HOST_CPU/$GNUSTEP_HOST_OS/$LIBRARY_COMBO/$appname" + else + file_appname="$full_appname/$appname" + fi + + # Old versions of gdb don't support --args, so we only use it if + # 'gdb --help' lists it. + args= + if (gdb --help | grep -e '\-\-args' > /dev/null); then + args="--args" + fi + + if [ -z "$corearg" ]; then + + # Arguments passed to debugapp are passed over to the + # application, in the same way as it happens for openapp. + "$GDB" $args "$file_appname" "$@" + else + "$GDB" "$file_appname" "$corearg" + fi +fi diff --git a/gnustep-make/documentation.make b/gnustep-make/documentation.make new file mode 100644 index 00000000..b2fb7eea --- /dev/null +++ b/gnustep-make/documentation.make @@ -0,0 +1,36 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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 diff --git a/gnustep-make/executable.template.in b/gnustep-make/executable.template.in new file mode 100755 index 00000000..68303f1e --- /dev/null +++ b/gnustep-make/executable.template.in @@ -0,0 +1,249 @@ +#!/bin/sh +# +# @configure_input@ +# +# Copyright (C) 1999-2002 Free Software Foundation, Inc. +# +# Author: Adam Fedor <fedor@gnu.org> +# Date: May 1999 +# +# Author: Nicola Pero <n.pero@mi.flashnet.it> +# Date: 2001, 2002 +# +# 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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. + +#-------------------------------------------------------------------------- +# Main body +#-------------------------------------------------------------------------- +if [ -z "$EXEEXT" ]; then + EXEEXT=@EXEEXT@ +fi +if [ -z "$LIBRARY_COMBO" ]; then + LIBRARY_COMBO=@ac_cv_library_combo@ +fi + +# Process arguments +app="$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_root="$GNUSTEP_SYSTEM_ROOT" + . "$tmp_root/@MAKEFILES_SUFFIX@/GNUstep-reset.sh" + LIBRARY_COMBO=`echo "$1" | sed 's/--library-combo=//'` + . "$tmp_root/@MAKEFILES_SUFFIX@/GNUstep.sh" + 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 + +# Find path to ourself +dir="`dirname \"$app\"`" + +case "$app" in + /*) # An absolute path. + full_appname="$dir";; + */*) # A relative path + full_appname="`(cd \"$dir\"; pwd)`";; + *) # A path that needs to be searched + if [ -n "$GNUSTEP_PATHLIST" ]; then + SPATH="$GNUSTEP_PATHLIST" + else + SPATH="$PATH" + fi + SPATH=".:$SPATH" + IFS=: + for path_dir in $SPATH; do + if [ -d "$path_dir/$dir" ]; then + full_appname="`(cd \"$path_dir/$dir\"; pwd)`" + break; + fi + if [ -d "$path_dir/Applications/$dir" ]; then + full_appname="`(cd \"$path_dir/Applications/$dir\"; pwd)`" + break; + fi + done;; +esac + +if [ -z "$full_appname" ]; then + echo "Can't find absolute path for $app! Please specify full path when" + echo "invoking executable" + exit 1 +fi + +# +# get base app name +# +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 \"$app\"`" +fi + +appname="$appname$EXEEXT" + +if [ $show_available_platforms = 1 ]; then + cd "$full_appname" + #available_platforms + exit 0 +fi + +# +# Determine the host information +# +if [ -z "$GNUSTEP_HOST" ]; then + GNUSTEP_HOST=`(cd /tmp; $GNUSTEP_SYSTEM_ROOT/@MAKEFILES_SUFFIX@/config.guess)` + GNUSTEP_HOST=`(cd /tmp; $GNUSTEP_SYSTEM_ROOT/@MAKEFILES_SUFFIX@/config.sub $GNUSTEP_HOST)` + export GNUSTEP_HOST +fi +if [ -z "$GNUSTEP_HOST_CPU" ]; then + GNUSTEP_HOST_CPU=`$GNUSTEP_SYSTEM_ROOT/@MAKEFILES_SUFFIX@/cpu.sh $GNUSTEP_HOST` + GNUSTEP_HOST_CPU=`$GNUSTEP_SYSTEM_ROOT/@MAKEFILES_SUFFIX@/clean_cpu.sh $GNUSTEP_HOST_CPU` + export GNUSTEP_HOST_CPU +fi +if [ -z "$GNUSTEP_HOST_VENDOR" ]; then + GNUSTEP_HOST_VENDOR=`$GNUSTEP_SYSTEM_ROOT/@MAKEFILES_SUFFIX@/vendor.sh $GNUSTEP_HOST` + GNUSTEP_HOST_VENDOR=`$GNUSTEP_SYSTEM_ROOT/@MAKEFILES_SUFFIX@/clean_vendor.sh $GNUSTEP_HOST_VENDOR` + export GNUSTEP_HOST_VENDOR +fi +if [ -z "$GNUSTEP_HOST_OS" ]; then + GNUSTEP_HOST_OS=`$GNUSTEP_SYSTEM_ROOT/@MAKEFILES_SUFFIX@/os.sh $GNUSTEP_HOST` + GNUSTEP_HOST_OS=`$GNUSTEP_SYSTEM_ROOT/@MAKEFILES_SUFFIX@/clean_os.sh $GNUSTEP_HOST_OS` + export GNUSTEP_HOST_OS +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_root="$GNUSTEP_SYSTEM_ROOT" + . "$tmp_root/@MAKEFILES_SUFFIX@/GNUstep-reset.sh" + LIBRARY_COMBO="$lib_combo" + . "$tmp_root/@MAKEFILES_SUFFIX@/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 + +if [ "$LIBRARY_COMBO" = nx-nx-nx -a "$GNUSTEP_HOST_OS" = nextstep4 ]; then + if [ -f "$full_appname/library_paths.openapp" ]; then + additional_library_paths="`cat $full_appname/library_paths.openapp`" + fi +else + if [ -f "$full_appname/$GNUSTEP_HOST_CPU/$GNUSTEP_HOST_OS/$LIBRARY_COMBO/library_paths.openapp" ]; then + additional_library_paths="`cat \"$full_appname/$GNUSTEP_HOST_CPU/$GNUSTEP_HOST_OS/$LIBRARY_COMBO/library_paths.openapp\"`" + fi +fi + +# Load up LD_LIBRARY_PATH +. "$GNUSTEP_SYSTEM_ROOT/@MAKEFILES_SUFFIX@/ld_lib_path.sh" + +exec "$full_appname/$relative_path" "$@" + diff --git a/gnustep-make/fixpath.sh.in b/gnustep-make/fixpath.sh.in new file mode 100755 index 00000000..c164e01b --- /dev/null +++ b/gnustep-make/fixpath.sh.in @@ -0,0 +1,92 @@ +#! /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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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 + + diff --git a/gnustep-make/framework.make b/gnustep-make/framework.make new file mode 100644 index 00000000..b6fce4a5 --- /dev/null +++ b/gnustep-make/framework.make @@ -0,0 +1,30 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +ifeq ($(GNUSTEP_INSTANCE),) +include $(GNUSTEP_MAKEFILES)/Master/framework.make +else + +ifeq ($(GNUSTEP_TYPE),framework) +include $(GNUSTEP_MAKEFILES)/Instance/framework.make +endif + +endif diff --git a/gnustep-make/gnustep-make.spec.in b/gnustep-make/gnustep-make.spec.in new file mode 100644 index 00000000..36ac39e7 --- /dev/null +++ b/gnustep-make/gnustep-make.spec.in @@ -0,0 +1,122 @@ +# +# This file is to be manually edited +# +# 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 +Copyright: 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}. + +%prep +%setup -n %{gs_name}-%{gs_version} + +%build +CFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=%{gs_prefix} --with-library-combo=%{gs_libcombo} +make + +%install +make install special_prefix=${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/@MAKEFILES_SUFFIX@/GNUstep.sh" >> mygnustep.sh + +#echo "#!/bin/csh" > mygnustep.csh +#echo "source %{gs_prefix}/System/@MAKEFILES_SUFFIX@/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} + +# 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 + +# +# FIXME - do we want to add dirs to the library path or not +# + +#%post +#if [ $1 = 1]; then +#%ifos Linux +# if [ -z "$GNUSTEP_SYSTEM_ROOT" ]; then +# . %{gs_root}/@MAKEFILES_SUFFIX@/GNUstep.sh +# fi +# grep -q '%{gs_prefix}/System/Library/Libraries/$GNUSTEP_HOST_CPU/$GNUSTEP_HOST_OS/%{gs_libcombo}' /etc/ld.so.conf || echo "%{gs_prefix}/System/Library/Libraries/$GNUSTEP_HOST_CPU/$GNUSTEP_HOST_OS/%{gs_libcombo}" >> /etc/ld.so.conf +#%endif +#fi + +#%postun +#if [ $1 = 0 ]; then +#%ifos Linux +# if [ -z "$GNUSTEP_SYSTEM_ROOT" ]; then +# . %{gs_root}/@MAKEFILES_SUFFIX@/GNUstep.sh +# fi +# mv -f /etc/ld.so.conf /etc/ld.so.conf.orig +# grep -v "^%{gs_prefix}/System/Library/Libraries/$GNUSTEP_HOST_CPU/$GNUSTEP_HOST_OS/%{gs_libcombo}" /etc/ld.so.conf.orig > /etc/ld.so.conf +# rm -f /etc/ld.so.conf.orig +#%endif +#fi + + +%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 + diff --git a/gnustep-make/gswapp.make b/gnustep-make/gswapp.make new file mode 100644 index 00000000..aeab6aa3 --- /dev/null +++ b/gnustep-make/gswapp.make @@ -0,0 +1,30 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +ifeq ($(GNUSTEP_INSTANCE),) +include $(GNUSTEP_MAKEFILES)/Master/gswapp.make +else + +ifeq ($(GNUSTEP_TYPE),gswapp) +include $(GNUSTEP_MAKEFILES)/Instance/gswapp.make +endif + +endif diff --git a/gnustep-make/gswbundle.make b/gnustep-make/gswbundle.make new file mode 100644 index 00000000..267fb2fc --- /dev/null +++ b/gnustep-make/gswbundle.make @@ -0,0 +1,30 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +ifeq ($(GNUSTEP_INSTANCE),) +include $(GNUSTEP_MAKEFILES)/Master/gswbundle.make +else + +ifeq ($(GNUSTEP_TYPE),gswbundle) +include $(GNUSTEP_MAKEFILES)/Instance/gswbundle.make +endif + +endif diff --git a/gnustep-make/install-sh b/gnustep-make/install-sh new file mode 100755 index 00000000..240d8f46 --- /dev/null +++ b/gnustep-make/install-sh @@ -0,0 +1,119 @@ +#!/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 diff --git a/gnustep-make/java-executable.template b/gnustep-make/java-executable.template new file mode 100644 index 00000000..1bf1bffc --- /dev/null +++ b/gnustep-make/java-executable.template @@ -0,0 +1,115 @@ +#!/bin/sh +# +# Copyright (C) 2001 Free Software Foundation, Inc. +# +# Author: Nicola Pero <nicola@brainstorm.co.uk> +# 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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. +# +java_obj_file=JAVA_OBJ_FILE + +# +# Check that the java class exists +# +full_java_obj_file=${tool_dir}/Java/${java_obj_file}.class + +if [ ! -f "$full_java_obj_file" ]; then + echo "$tool: Installation problem: Can't find java class $java_obj_file !" + exit 1 +fi + +# +# Determine the host information if needed +# +if [ -z "$GNUSTEP_HOST" ]; then + GNUSTEP_HOST=`(cd /tmp; $GNUSTEP_SYSTEM_ROOT/Library/Makefiles/config.guess)` + GNUSTEP_HOST=`(cd /tmp; $GNUSTEP_SYSTEM_ROOT/Library/Makefiles/config.sub $GNUSTEP_HOST)` + export GNUSTEP_HOST +fi +if [ -z "$GNUSTEP_HOST_CPU" ]; then + GNUSTEP_HOST_CPU=`$GNUSTEP_SYSTEM_ROOT/Library/Makefiles/cpu.sh $GNUSTEP_HOST` + GNUSTEP_HOST_CPU=`$GNUSTEP_SYSTEM_ROOT/Library/Makefiles/clean_cpu.sh $GNUSTEP_HOST_CPU` + export GNUSTEP_HOST_CPU +fi +if [ -z "$GNUSTEP_HOST_VENDOR" ]; then + GNUSTEP_HOST_VENDOR=`$GNUSTEP_SYSTEM_ROOT/Library/Makefiles/vendor.sh $GNUSTEP_HOST` + GNUSTEP_HOST_VENDOR=`$GNUSTEP_SYSTEM_ROOT/Library/Makefiles/clean_vendor.sh $GNUSTEP_HOST_VENDOR` + export GNUSTEP_HOST_VENDOR +fi +if [ -z "$GNUSTEP_HOST_OS" ]; then + GNUSTEP_HOST_OS=`$GNUSTEP_SYSTEM_ROOT/Library/Makefiles/os.sh $GNUSTEP_HOST` + GNUSTEP_HOST_OS=`$GNUSTEP_SYSTEM_ROOT/Library/Makefiles/clean_os.sh $GNUSTEP_HOST_OS` + export GNUSTEP_HOST_OS +fi + +# +# Load up LD_LIBRARY_PATH +# +. $GNUSTEP_SYSTEM_ROOT/Library/Makefiles/ld_lib_path.sh + +# +# Load up CLASSPATH +# +gnustep_class_path="$GNUSTEP_USER_ROOT/Library/Libraries/Java:$GNUSTEP_LOCAL_ROOT/Library/Libraries/Java:$GNUSTEP_NETWORK_ROOT/Library/Libraries/Java:$GNUSTEP_SYSTEM_ROOT/Library/Libraries/Java" + +if [ -z "$CLASSPATH" ]; then + CLASSPATH="$gnustep_class_path" +else + if ( echo ${CLASSPATH} | grep -v "${gnustep_class_path}" >/dev/null ); then + CLASSPATH="$CLASSPATH:$gnustep_class_path" + fi +fi + +if ( echo ${CLASSPATH} | grep -v "\./" >/dev/null ); then + CLASSPATH="$CLASSPATH:./" +fi + +export CLASSPATH + +# +# 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 +# +cd ${tool_dir}/Java +exec $java_vm $java_obj_file "$@" + diff --git a/gnustep-make/java-tool.make b/gnustep-make/java-tool.make new file mode 100644 index 00000000..a28d9e03 --- /dev/null +++ b/gnustep-make/java-tool.make @@ -0,0 +1,29 @@ +# +# java-tool.make +# +# Makefile rules to build Java 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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 diff --git a/gnustep-make/java.make b/gnustep-make/java.make new file mode 100644 index 00000000..ba951569 --- /dev/null +++ b/gnustep-make/java.make @@ -0,0 +1,29 @@ +# +# java.make +# +# Makefile rules to build GNUstep-based javas. +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +ifeq ($(GNUSTEP_INSTANCE),) +include $(GNUSTEP_MAKEFILES)/Master/java.make +else +ifeq ($(GNUSTEP_TYPE),java_package) +include $(GNUSTEP_MAKEFILES)/Instance/java.make +endif + +endif diff --git a/gnustep-make/jni.make b/gnustep-make/jni.make new file mode 100644 index 00000000..3a108844 --- /dev/null +++ b/gnustep-make/jni.make @@ -0,0 +1,64 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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 +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 diff --git a/gnustep-make/ld_lib_path.csh b/gnustep-make/ld_lib_path.csh new file mode 100755 index 00000000..21870752 --- /dev/null +++ b/gnustep-make/ld_lib_path.csh @@ -0,0 +1,187 @@ +#!/bin/csh +# +# ld_lib_path.csh +# +# Set up the LD_LIBRARY_PATH (or similar env variable for your system) +# +# Copyright (C) 1998 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# + +# The first (and only) parameter to this script is the canonical +# operating system name. + +if ( "$GNUSTEP_FLATTENED" == "" ) then + set last_path_part="Library/Libraries/${GNUSTEP_HOST_CPU}/${GNUSTEP_HOST_OS}/${LIBRARY_COMBO}" + set tool_path_part="Library/Libraries/${GNUSTEP_HOST_CPU}/${GNUSTEP_HOST_OS}" +else + set last_path_part="Library/Libraries" + set tool_path_part="Library/Libraries" +endif + +set host_os=${GNUSTEP_HOST_OS} + +if ( "${host_os}" == "" ) then + set host_os=${1} +endif + +set lib_paths="${GNUSTEP_USER_ROOT}/${last_path_part}:${GNUSTEP_USER_ROOT}/${tool_path_part}:${GNUSTEP_LOCAL_ROOT}/${last_path_part}:${GNUSTEP_LOCAL_ROOT}/${tool_path_part}:${GNUSTEP_NETWORK_ROOT}/${last_path_part}:${GNUSTEP_NETWORK_ROOT}/${tool_path_part}:${GNUSTEP_SYSTEM_ROOT}/${last_path_part}:${GNUSTEP_SYSTEM_ROOT}/${tool_path_part}" + +set last_path_part="Library/Frameworks" + +set fw_paths="${GNUSTEP_USER_ROOT}/${last_path_part}:${GNUSTEP_LOCAL_ROOT}/${last_path_part}:${GNUSTEP_NETWORK_ROOT}/${last_path_part}:${GNUSTEP_SYSTEM_ROOT}/${last_path_part}" + +switch ( "${host_os}" ) + + case *nextstep4* : + if ( $?DYLD_LIBRARY_PATH == 0 ) then + setenv DYLD_LIBRARY_PATH "${lib_paths}" + else if ( { (echo "${DYLD_LIBRARY_PATH}" | fgrep -v "${lib_paths}" >/dev/null) } ) then + setenv DYLD_LIBRARY_PATH "${lib_paths}:${DYLD_LIBRARY_PATH}" + endif + if ( $?additional_lib_paths == 1) then + foreach dir (${additional_lib_paths}) + set additional="${additional}${dir}:" + end + endif + + if ( "${?additional}" == "1" ) then + if ( { (echo "${DYLD_LIBRARY_PATH}" | fgrep -v "${additional}" >/dev/null) } ) then + setenv DYLD_LIBRARY_PATH="${additional}${DYLD_LIBRARY_PATH}" + endif + endif + breaksw + + case *darwin* : + if ( $?DYLD_LIBRARY_PATH == 0 ) then + setenv DYLD_LIBRARY_PATH "${lib_paths}" + else if ( { (echo "${DYLD_LIBRARY_PATH}" | fgrep -v "${lib_paths}" >/dev/null) } ) then + setenv DYLD_LIBRARY_PATH "${lib_paths}:${DYLD_LIBRARY_PATH}" + endif + if ( $?additional_lib_paths == 1) then + foreach dir (${additional_lib_paths}) + set additional="${additional}${dir}:" + end + endif + + if ( "${?additional}" == "1" ) then + if ( { (echo "${DYLD_LIBRARY_PATH}" | fgrep -v "${additional}" >/dev/null) } ) then + setenv DYLD_LIBRARY_PATH="${additional}${DYLD_LIBRARY_PATH}" + endif + endif + +# The code below has been temporarily removed, because... +# With GNUstep -make on any platform, when you compile a +# framework, it is supported by creating a link like +# Librairies/libMyFramework.dylib -> +# Frameworks/MyFramework.framework/Versions/Current/libMyFramework.dylib, to +# mitigate the fact that FSF GCC supports to link frameworks with the -frameworks +# flag only on Darwin . +# Well concerning library GNUstep -make on Darwin, the problem lies in the fact +# the Darwin linker seems to be unable to link the library when you pass the +# flag -lMyFramework to compile an application which depends on it, strangely it +# links the framework directly. You can see that with otool -L +# Whatever/MyApplication.app/MyApplication which will output +# MyFramework.framework/MyFramework and not libMyFramework.dylib . +# So because a framework is linked when it is present even when you want to +# link the equivalent library, the application will not find the framework when +# you launch it with DYLD_FRAMEWORK_PATH empty. To correct that, we must +# set DYLD_FRAMEWORK_PATH in any cases until the Darwin linker behaves correctly. +# +#ย  ย  if ( ( "${LIBRARY_COMBO}" == "apple-apple-apple" ) \ย  +#ย  ย  ย  ย  ย || ( "${LIBRARY_COMBO}" == "apple") ) then + + unset additional + + if ( $?DYLD_FRAMEWORK_PATH == 0 ) then + setenv DYLD_FRAMEWORK_PATH "${fw_paths}" + else if ( { (echo "${DYLD_FRAMEWORK_PATH}" | fgrep -v "${fw_paths}" >/dev/null) } ) then + setenv DYLD_FRAMEWORK_PATH "${fw_paths}:${DYLD_FRAMEWORK_PATH}" + endif + if ( $?additional_framework_paths == 1) then + foreach dir (${additional_framework_paths}) + set additional="${additional}${dir}:" + end + endif + + if ( "${?additional}" == "1" ) then + if ( { (echo "${DYLD_FRAMEWORK_PATH}" | fgrep -v "${additional}" >/dev/null) } ) then + setenv DYLD_FRAMEWORK_PATH="${additional}${DYLD_FRAMEWORK_PATH}" + endif + endif + breaksw + + case *hpux* : + if ( $?SHLIB_PATH == 0 ) then + setenv SHLIB_PATH "${lib_paths}" + else if ( { (echo "${SHLIB_PATH}" | fgrep -v "${lib_paths}" >/dev/null) } ) then + setenv SHLIB_PATH "${lib_paths}:${SHLIB_PATH}" + endif + if ( $?additional_lib_paths == 1) then + foreach dir (${additional_lib_paths}) + set additional="${additional}${dir}:" + end + endif + + if ( "${?additional}" == "1" ) then + if ( { (echo "${SHLIB_PATH}" | fgrep -v "${additional}" >/dev/null) } ) then + setenv SHLIB_PATH="${additional}${SHLIB_PATH}" + endif + endif + + if ( $?LD_LIBRARY_PATH == 0 ) then + setenv LD_LIBRARY_PATH "${lib_paths}" + else if ( { (echo "${LD_LIBRARY_PATH}" | fgrep -v "${lib_paths}" >/dev/null) } ) then + setenv LD_LIBRARY_PATH "${lib_paths}:${LD_LIBRARY_PATH}" + endif + + if ( $?additional_lib_paths == 1) then + foreach dir (${additional_lib_paths}) + set additional="${additional}${dir}:" + end + endif + + if ( "${?additional}" == "1" ) then + if ( { (echo "${LD_LIBRARY_PATH}" | fgrep -v "${additional}" >/dev/null) } ) then + setenv LD_LIBRARY_PATH="${additional}${LD_LIBRARY_PATH}" + endif + endif + breaksw + + case * : + if ( $?LD_LIBRARY_PATH == 0 ) then + setenv LD_LIBRARY_PATH "${lib_paths}" + else if ( { (echo "${LD_LIBRARY_PATH}" | fgrep -v "${lib_paths}" >/dev/null) } ) then + setenv LD_LIBRARY_PATH "${lib_paths}:${LD_LIBRARY_PATH}" + endif + if ( $?additional_lib_paths == 1) then + foreach dir (${additional_lib_paths}) + set additional="${additional}${dir}:" + end + endif + + if ( "${?additional}" == "1" ) then + if ( { (echo "${LD_LIBRARY_PATH}" | fgrep -v "${additional}" >/dev/null) } ) then + setenv LD_LIBRARY_PATH="${additional}${LD_LIBRARY_PATH}" + endif + endif + breaksw + +endsw + +unset tool_path_part last_path_part host_os additional dir lib_paths fw_paths + diff --git a/gnustep-make/ld_lib_path.sh b/gnustep-make/ld_lib_path.sh new file mode 100755 index 00000000..1b9b626a --- /dev/null +++ b/gnustep-make/ld_lib_path.sh @@ -0,0 +1,199 @@ +#! /bin/sh +# +# ld_lib_path.sh +# +# Set up the LD_LIBRARY_PATH (or similar env variable for your system) +# +# Copyright (C) 1997-2002 Free Software Foundation, Inc. +# +# Author: Scott Christley <scottc@net-community.com> +# Author: Ovidiu Predescu <ovidiu@net-community.com> +# Rewrite: Richard Frith-Macdonald <richard@brainstorm.co.uk> +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# + +# This file is sourced. This means extra care is needed when changing +# it. Please read the comments on GNUstep.sh.in before touching it. + +# The first (and only) parameter to this script is the canonical +# operating system name. + +host_os=$GNUSTEP_HOST_OS + +if [ -z "$host_os" ]; then + host_os=$1 +fi + + +old_IFS="$IFS" +IFS=: +lib_paths= +fw_paths= +for dir in $GNUSTEP_PATHLIST; do + + # prepare the path_fragment for libraries and this dir + if [ -z "$GNUSTEP_FLATTENED" ]; then + path_fragment="$dir/Library/Libraries/$GNUSTEP_HOST_CPU/$GNUSTEP_HOST_OS/$LIBRARY_COMBO:$dir/Library/Libraries/$GNUSTEP_HOST_CPU/$GNUSTEP_HOST_OS" + else + path_fragment="$dir/Library/Libraries" + fi + + # Append the path_fragment to lib_paths + if [ -z "$lib_paths" ]; then + lib_paths="$path_fragment" + else + lib_paths="$lib_paths:$path_fragment" + fi + + # prepare the path_fragment for frameworks and this dir + path_fragment="$dir/Library/Frameworks" + + # Append the path_fragment to fw_paths + if [ -z "$fw_paths" ]; then + fw_paths="$path_fragment" + else + fw_paths="$fw_paths:$path_fragment" + fi + + unset path_fragment + +done +IFS="$old_IFS" +unset old_IFS +unset dir + + +if [ -n "$additional_library_paths" ]; then + old_IFS="$IFS" + IFS=" +" + additional="" + for dir in $additional_library_paths; do + additional="${additional}${dir}:" + done + unset dir + + lib_paths="${additional}${lib_paths}" + + unset additional + IFS="$old_IFS" + unset old_IFS +fi + +if [ -n "$additional_framework_paths" ]; then + old_IFS="$IFS" + IFS=" +" + additional="" + for dir in $additional_framework_paths; do + additional="${additional}${dir}:" + done + unset dir + + fw_paths="${additional}${fw_paths}" + + unset additional + IFS="$old_IFS" + unset old_IFS +fi + +case "$host_os" in + + *nextstep4*) + if [ -z "$DYLD_LIBRARY_PATH" ]; then + DYLD_LIBRARY_PATH="$lib_paths" + else + if ( echo ${DYLD_LIBRARY_PATH}|fgrep -v "${lib_paths}" >/dev/null ); then + DYLD_LIBRARY_PATH="$lib_paths:$DYLD_LIBRARY_PATH" + fi + fi + export DYLD_LIBRARY_PATH + ;; + + *darwin*) + if [ -z "$DYLD_LIBRARY_PATH" ]; then + DYLD_LIBRARY_PATH="$lib_paths" + else + if ( echo ${DYLD_LIBRARY_PATH}|fgrep -v "${lib_paths}" >/dev/null ); then + DYLD_LIBRARY_PATH="$lib_paths:$DYLD_LIBRARY_PATH" + fi + fi + export DYLD_LIBRARY_PATH + +# The code below has been temporarily removed, because... +# With GNUstep -make on any platform, when you compile a +# framework, it is supported by creating a link like +# Librairies/libMyFramework.dylib -> +# Frameworks/MyFramework.framework/Versions/Current/libMyFramework.dylib, to +# mitigate the fact that FSF GCC supports to link frameworks with the -frameworks +# flag only on Darwin . +# Well concerning library GNUstep -make on Darwin, the problem lies in the fact +# the Darwin linker seems to be unable to link the library when you pass the +# flag -lMyFramework to compile an application which depends on it, strangely it +# links the framework directly. You can see that with otool -L +# Whatever/MyApplication.app/MyApplication which will output +# MyFramework.framework/MyFramework and not libMyFramework.dylib . +# So because a framework is linked when it is present even when you want to +# link the equivalent library, the application will not find the framework when +# you launch it with DYLD_FRAMEWORK_PATH empty. To correct that, we must +# set DYLD_FRAMEWORK_PATH in any cases until the Darwin linker behaves correctly. +# +# if [ "$LIBRARY_COMBO" = "apple-apple-apple" -o \ +#ย  ย  ย  "$LIBRARY_COMBO" = "apple" ]; then + + if [ -z "$DYLD_FRAMEWORK_PATH" ]; then + DYLD_FRAMEWORK_PATH="$fw_paths" + else + if ( echo ${DYLD_FRAMEWORK_PATH}| + fgrep -v "${fw_paths}" >/dev/null ); then + DYLD_FRAMEWORK_PATH="$fw_paths:$DYLD_FRAMEWORK_PATH" + fi + fi + export DYLD_FRAMEWORK_PATH;; + + *hpux*) + if [ -z "$SHLIB_PATH" ]; then + SHLIB_PATH="$lib_paths" + else + if ( echo ${SHLIB_PATH}|fgrep -v "${lib_paths}" >/dev/null ); then + SHLIB_PATH="$lib_paths:$SHLIB_PATH" + fi + fi + export SHLIB_PATH; + if [ -z "$LD_LIBRARY_PATH" ]; then + LD_LIBRARY_PATH="$lib_paths" + else + if ( echo ${LD_LIBRARY_PATH}| grep -v "${lib_paths}" >/dev/null ); then + LD_LIBRARY_PATH="$lib_paths:$LD_LIBRARY_PATH" + fi + fi + export LD_LIBRARY_PATH;; + + *) + if [ -z "$LD_LIBRARY_PATH" ]; then + LD_LIBRARY_PATH="$lib_paths" + else + if ( echo ${LD_LIBRARY_PATH}| grep -v "${lib_paths}" >/dev/null ); then + LD_LIBRARY_PATH="$lib_paths:$LD_LIBRARY_PATH" + fi + fi + export LD_LIBRARY_PATH;; + +esac + +unset host_os +unset lib_paths +unset fw_paths + diff --git a/gnustep-make/library-combo.make b/gnustep-make/library-combo.make new file mode 100644 index 00000000..4459b698 --- /dev/null +++ b/gnustep-make/library-combo.make @@ -0,0 +1,217 @@ +# -*-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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# Get library_combo from LIBRARY_COMBO or default_library_combo (or +# from the command line if the user defined it on the command line by +# 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), 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. + +# gc=yes is just another way of saying you want OBJC_RUNTIME_LIB = gnugc +# to be used! +ifeq ($(gc), yes) + OBJC_RUNTIME_LIB = gnugc +endif + +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) + +OBJC_LDFLAGS = +OBJC_LIBS = +# +# Set the appropriate ObjC runtime library and other information +# +ifeq ($(OBJC_RUNTIME_LIB), gnu) + OBJC_LDFLAGS = + OBJC_LIB_DIR = + OBJC_LIBS = -lobjc + RUNTIME_FLAG = -fgnu-runtime + RUNTIME_DEFINE = -DGNU_RUNTIME=1 +endif + +ifeq ($(OBJC_RUNTIME_LIB), gnugc) + OBJC_LDFLAGS = + OBJC_LIB_DIR = + OBJC_LIBS = -lobjc_gc -lgc + RUNTIME_FLAG = -fgnu-runtime + RUNTIME_DEFINE = -DGNU_RUNTIME=1 -DOBJC_WITH_GC=1 + ifeq ($(debug),yes) + RUNTIME_DEFINE += -DGC_DEBUG + endif +endif + +ifeq ($(OBJC_RUNTIME_LIB), nx) + RUNTIME_FLAG = -fnext-runtime + RUNTIME_DEFINE = -DNeXT_RUNTIME=1 + ifeq ($(FOUNDATION_LIB), gnu) + OBJC_LIBS = -lobjc + 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 + ifeq ($(FOUNDATION_LIB), gnu) + OBJC_LIBS = -lobjc + endif +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 + + # If gc=yes was passed and libFoundation was compiled with Boehm's + # GC support, use the appropriate libraries + + 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 = diff --git a/gnustep-make/library.make b/gnustep-make/library.make new file mode 100644 index 00000000..b193731c --- /dev/null +++ b/gnustep-make/library.make @@ -0,0 +1,30 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +ifeq ($(GNUSTEP_INSTANCE),) +include $(GNUSTEP_MAKEFILES)/Master/library.make +else + +ifeq ($(GNUSTEP_TYPE),library) +include $(GNUSTEP_MAKEFILES)/Instance/library.make +endif + +endif diff --git a/gnustep-make/messages.make b/gnustep-make/messages.make new file mode 100644 index 00000000..9bc09e79 --- /dev/null +++ b/gnustep-make/messages.make @@ -0,0 +1,125 @@ +# +# messages.make +# +# Prepare messages +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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.") + +# Eventual translation of the ALWAYS_ECHO_XXX messages should be done +# here ... + +ifneq ($(messages),yes) + + # General messages + ECHO_PREPROCESSING = @(echo " Preprocessing file $< ..."; + ECHO_COMPILING = @(echo " Compiling file $< ..."; + 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/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..."; + + # Instance/Shared/strings.make + ECHO_MAKING_STRINGS = @(echo " Making/updating strings files..."; + + # Instance/Documentation/autogsdoc.make + ECHO_AUTOGSDOC = @(echo " Generating reference 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_COMPILING = + ECHO_LINKING = + ECHO_JAVAHING = + ECHO_INSTALLING = + ECHO_UNINSTALLING = + ECHO_COPYING_INTO_DIR = + ECHO_CREATING = + ECHO_NOTHING = + 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_MAKING_STRINGS = + ECHO_AUTOGSDOC = + + END_ECHO = + +endif + diff --git a/gnustep-make/mkinstalldirs b/gnustep-make/mkinstalldirs new file mode 100755 index 00000000..0eb69f89 --- /dev/null +++ b/gnustep-make/mkinstalldirs @@ -0,0 +1,50 @@ +#!/bin/sh +# Make directory hierarchy. +# Written by Noah Friedman <friedman@prep.ai.mit.edu> +# 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 diff --git a/gnustep-make/move_obsolete_paths.sh b/gnustep-make/move_obsolete_paths.sh new file mode 100755 index 00000000..2c2af93b --- /dev/null +++ b/gnustep-make/move_obsolete_paths.sh @@ -0,0 +1,190 @@ +#!/bin/sh +# move_obsolete_paths.sh +# +# Copyright (C) 2003 Free Software Foundation, Inc. +# +# Author: Adam Fedor <fedor@doc.com> +# Date: April 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# Move old paths from previous filesystem heirarchy to new location + +if [ -z "$*" ]; then + exit 0 +fi + +for dir in $@; do + # + # Move from root to root/Library + # + subpath=Makefiles + if [ -d $dir/$subpath ]; then + echo -n " $dir/$subpath: " + if [ -d $dir/Library/$subpath ]; then + echo Cannot move. Already exists in new location + else + mv $dir/$subpath $dir/Library/$subpath + echo done + fi + fi + + subpath=Libraries + if [ -d $dir/$subpath ]; then + echo -n " $dir/$subpath: " + if [ -d $dir/Library/$subpath ]; then + echo Cannot move. Already exists in new location + else + mv $dir/$subpath $dir/Library/$subpath + echo done + fi + fi + + subpath=Headers + if [ -d $dir/$subpath ]; then + echo -n " $dir/$subpath: " + if [ -d $dir/Library/$subpath ]; then + echo Cannot move. Already exists in new location + else + mv $dir/$subpath $dir/Library/$subpath + echo done + fi + fi + + subpath=Documentation + if [ -d $dir/$subpath ]; then + echo -n " $dir/$subpath: " + if [ -d $dir/Library/$subpath ]; then + echo Cannot move. Already exists in new location + else + mv $dir/$subpath $dir/Library/$subpath + echo done + fi + fi + + subpath=Services + if [ -d $dir/$subpath ]; then + echo -n " $dir/$subpath: " + if [ -d $dir/Library/$subpath ]; then + echo Cannot move. Already exists in new location + else + mv $dir/$subpath $dir/Library/$subpath + echo done + fi + fi + + # + # Move from root/Library/Libraries/Resources to root/Library + # + resourcedir=$dir/Libraries/Resources + subpath=DocTemplates + if [ -d $resourcedir/$subpath ]; then + echo -n " $resourcedir/$subpath: " + if [ -d $dir/Library/$subpath ]; then + echo Cannot move. Already exists in new location + else + mv $resourcedir/$subpath $dir/Library/$subpath + echo done + fi + fi + + subpath=DTDs + if [ -d $resourcedir/$subpath ]; then + echo -n " $resourcedir/$subpath: " + if [ -d $dir/Library/$subpath ]; then + echo Cannot move. Already exists in new location + else + mv $resourcedir/$subpath $dir/Library/$subpath + echo done + fi + fi + + subpath=Images + if [ -d $resourcedir/$subpath ]; then + echo -n " $resourcedir/$subpath: " + if [ -d $dir/Library/$subpath ]; then + echo Cannot move. Already exists in new location + else + mv $resourcedir/$subpath $dir/Library/$subpath + echo done + fi + fi + + subpath=KeyBindings + if [ -d $resourcedir/$subpath ]; then + echo -n " $resourcedir/$subpath: " + if [ -d $dir/Library/$subpath ]; then + echo Cannot move. Already exists in new location + else + mv $resourcedir/$subpath $dir/Library/$subpath + echo done + fi + fi + + # + # Remove these - will get reinstalled with gnustep-base + # + subpath=English.lproj + if [ -d $resourcedir/$subpath ]; then + rm -rf $resourcedir/$subpath + echo Removed $resourcedir/$subpath + fi + subpath=French.lproj + if [ -d $resourcedir/$subpath ]; then + rm -rf $resourcedir/$subpath + echo Removed $resourcedir/$subpath + fi + subpath=German.lproj + if [ -d $resourcedir/$subpath ]; then + rm -rf $resourcedir/$subpath + echo Removed $resourcedir/$subpath + fi + subpath=Italian.lproj + if [ -d $resourcedir/$subpath ]; then + rm -rf $resourcedir/$subpath + echo Removed $resourcedir/$subpath + fi + subpath=Languages + if [ -d $resourcedir/$subpath ]; then + rm -rf $resourcedir/$subpath + echo Removed $resourcedir/$subpath + fi + subpath=NSCharacterSets + if [ -d $resourcedir/$subpath ]; then + rm -rf $resourcedir/$subpath + echo Removed $resourcedir/$subpath + fi + subpath=NSTimeZones + if [ -d $resourcedir/$subpath ]; then + rm -rf $resourcedir/$subpath + echo Removed $resourcedir/$subpath + fi + + # + # Remove these - will get reinstalled with gnustep-gui + # + subpath=PrinterTypes + if [ -d $resourcedir/$subpath ]; then + rm -rf $resourcedir/$subpath + echo Removed $resourcedir/$subpath + fi + + # + # Remove these - obsolete + # + #if [ -d $dir/Developer ]; then + # rm -rf $dir/Developer + # echo Removed $dir/Developer + #fi + +done diff --git a/gnustep-make/names.make b/gnustep-make/names.make new file mode 100644 index 00000000..9eb351a9 --- /dev/null +++ b/gnustep-make/names.make @@ -0,0 +1,70 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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 diff --git a/gnustep-make/native-library.make b/gnustep-make/native-library.make new file mode 100644 index 00000000..06deb38d --- /dev/null +++ b/gnustep-make/native-library.make @@ -0,0 +1,46 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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 diff --git a/gnustep-make/objc.make b/gnustep-make/objc.make new file mode 100644 index 00000000..835c1e67 --- /dev/null +++ b/gnustep-make/objc.make @@ -0,0 +1,30 @@ +# +# objc.make +# +# Makefile rules to build ObjC (but not GNUstep) 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +ifeq ($(GNUSTEP_INSTANCE),) +include $(GNUSTEP_MAKEFILES)/Master/objc.make +else + +ifeq ($(GNUSTEP_TYPE),objc_program) +include $(GNUSTEP_MAKEFILES)/Instance/objc.make +endif + +endif diff --git a/gnustep-make/openapp.in b/gnustep-make/openapp.in new file mode 100755 index 00000000..aa68403f --- /dev/null +++ b/gnustep-make/openapp.in @@ -0,0 +1,186 @@ +#!/bin/sh +# +# @configure_input@ +# +# Copyright (C) 1997 Free Software Foundation, Inc. +# +# Author: Ovidiu Predescu <ovidiu@net-community.com> +# Date: October 1997 +# Author: Nicola Pero <n.pero@mi.flashnet.it> +# Date: 2002 +# +# 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# 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. + +if [ -z "$1" ]; then + echo usage: openapp [--find] application [arguments...] + echo openapp --help for more help + exit 1 +fi + +if [ -z "$GNUSTEP_FLATTENED" ]; then + GNUSTEP_FLATTENED=@GNUSTEP_FLATTENED@ +fi + +only_find= + +# TODO: implement a --library-combo parameter +case "$1" in + --help) + echo usage: openapp [--find] 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 as first argument, openapp prints out + echo the full path of the application executable which would be + echo executed, without actually executing it as it would normally do. + echo + exit 0 + ;; + --find) + only_find=yes; + if [ -z "$2" ]; then + echo Missing application name. Please try openapp --help for more help. + exit 1 + fi + app="$2"; shift; shift;; + *) + app="$1"; shift;; +esac + +# Remove leading slashes at the end of the application name +app="`echo \"$app\" | sed 's%/*$%%'`" + +# Now build the list of directory names we look for. If the user has +# given us a full application directory name (for example, Gorm.app) +# then we only search for the given directory name; if instead the +# user has given us the application name without the suffix (for +# example, 'Gorm') we want to search for Gorm.app, then for +# Gorm.debug, then for Gorm.profile (in that order). +# If the appname is known, save it to avoid running a grep later to get it. +case "$app" in + *.app) app_list="$app"; appname="";; + *.debug) app_list="$app"; appname="";; + *.profile) app_list="$app"; appname="";; + *) app_list="$app.app:$app.debug:$app.profile"; appname="$app"; +esac + +old_IFS="$IFS" +IFS=: +case "$app" in + /*) # An absolute path. + for appdir in $app_list; do + #echo "$appdir" + if [ -d "$appdir" ]; then + full_appname="$appdir" + break + fi + done;; + */*) # A relative path + for appdir in $app_list; do + #echo "$appdir" + if [ -d "$appdir" ]; then + full_appname="`(cd \"$appdir\"; pwd)`" + break + fi + done;; + *) # A path that should be searched into the GNUstep paths + if [ -n "$GNUSTEP_PATHLIST" ]; then + SPATH="$GNUSTEP_PATHLIST" + else + SPATH="$PATH" + fi + SPATH=".:$SPATH" + + for dir in $SPATH; do + for appdir in $app_list; do + # First, search in $dir/Applications/any_path_here/$appdir + #echo "$dir/Applications/"'*'"/$appdir" + for d in $dir/Applications/*/$appdir ; do + # If nothing is found, * expands to '*'. Check that it's + # not the case, and that we have a real match. + if [ "$d" != "$dir/Applications/"'*'"/$appdir" ]; then + #echo " $d" + if [ -d "$d" ]; then + full_appname="`(cd \"$d\"; pwd)`" + break 3 + fi + fi + done + # Now, in $dir/Applications/$appdir + #echo "$dir/Applications/$appdir" + if [ -d "$dir/Applications/$appdir" ]; then + full_appname="`(cd \"$dir/Applications/$appdir\"; pwd)`" + break 2 + fi + # Finally, in $dir/$appdir + #echo "$dir/$appdir" + if [ -d "$dir/$appdir" ]; then + full_appname="`(cd \"$dir/$appdir\"; pwd)`" + break 2 + fi + done + done;; +esac +IFS="$old_IFS" +unset app_list +unset appdir + +if [ -z "$full_appname" ]; then + echo "Can't find the required application: $app!" + exit 1 +fi + +#echo "found: $full_appname" + +# get base app name +if [ -z "$appname" ]; then + appname="`echo \"$app\" | sed 's/\.[a-z]*$//'`" +fi +appname="`basename \"$appname\"`" + +if [ -n "$GNUSTEP_FLATTENED" ]; then + + if [ -z "$EXEEXT" ]; then + EXEEXT=@EXEEXT@ + fi + + if [ -n "$EXEEXT" ]; then + appname="$appname$EXEEXT" + fi + +fi + +case "$LIBRARY_COMBO" in + apple-*) app_executable="$full_appname/Contents/MacOS/$appname";; + *) app_executable="$full_appname/$appname";; +esac + +if [ ! -f "$app_executable" ]; then + echo "Could not find $app_executable executable/script" + exit 1 +fi + +if [ -n "$only_find" ]; then + echo "$app_executable" + exit 0 +fi + +exec "$app_executable" "$@" diff --git a/gnustep-make/opentool.in b/gnustep-make/opentool.in new file mode 100644 index 00000000..5b7f9d33 --- /dev/null +++ b/gnustep-make/opentool.in @@ -0,0 +1,166 @@ +#! /bin/sh +# +# @configure_input@ +# +# Copyright (C) 1997, 1999 Free Software Foundation, Inc. +# +# Author: Scott Predescu <ovidiu@net-community.com> +# Author: Ovidiu Predescu <ovidiu@net-community.com> +# Date: February 1999 +# +# 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# Try to execute the GNUstep tool passed as argument. The tool is +# searched through the GNUstep directories if a complete or relative path name +# is not specified. The arguments passed after the tool name are passed +# unmodified to the tool. + +if [ -z "$GNUSTEP_PATHLIST" ]; then + echo "The GNUSTEP_PATHLIST environment variable is missing." + echo "Did you forget to set up your environment using GNUstep.sh ?" + exit 1 +fi + +if [ -z "$1" ]; then + echo usage: `basename "$0"` [--library-combo=...] tool [arguments...] + echo `basename "$0"` --help for help + exit 1 +fi + +if [ -z "$EXEEXT" ]; then + EXEEXT=@EXEEXT@ +fi + +# traps the parameters +while true +do + case "$1" in + --library-combo=*) + tmp_root="$GNUSTEP_SYSTEM_ROOT" + . "$tmp_root/@MAKEFILES_SUFFIX@/GNUstep-reset.sh" + LIBRARY_COMBO=`echo "$1" | sed 's/--library-combo=//'` + . "$tmp_root/@MAKEFILES_SUFFIX@/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 GNUSTEP_PATHLIST, which means we + # search in the order in: + # GNUSTEP_USER_ROOT + # GNUSTEP_LOCAL_ROOT + # GNUSTEP_NETWORK_ROOT + # GNUSTEP_SYSTEM_ROOT + # + # 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. + # + if [ -n "$GNUSTEP_PATHLIST" ]; then + SPATH="$GNUSTEP_PATHLIST" + IFS=: + for dir in $SPATH; do + tmpdir="$dir/Tools" + if [ -z "$GNUSTEP_FLATTENED" ]; then + tmpgnudir="$dir/Tools/$GNUSTEP_HOST_CPU/$GNUSTEP_HOST_OS" + tmplibdir="$tmpgnudir/$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 "$tmpdir/$tool"; + if [ -x "$tmpdir/$tool" ]; then + # echo "Found: $tmpdir/$tool"; + full_toolname="$tmpdir/$tool" + break; + fi + done + unset tmpdir + unset tmpgnudir + unset tmplibdir + IFS=" " + fi + fi + ;; +esac + +if [ -z "$full_toolname" ]; then + echo "Can't find the required tool: $tool!" + exit 1 +fi + +IFS=" " +exec "$full_toolname" "$@" diff --git a/gnustep-make/os.sh b/gnustep-make/os.sh new file mode 100755 index 00000000..7f68e7fa --- /dev/null +++ b/gnustep-make/os.sh @@ -0,0 +1,23 @@ +#! /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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +echo $1 | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/' diff --git a/gnustep-make/palette.make b/gnustep-make/palette.make new file mode 100644 index 00000000..5bf6086a --- /dev/null +++ b/gnustep-make/palette.make @@ -0,0 +1,30 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +ifeq ($(GNUSTEP_INSTANCE),) +include $(GNUSTEP_MAKEFILES)/Master/palette.make +else + +ifeq ($(GNUSTEP_TYPE),palette) +include $(GNUSTEP_MAKEFILES)/Instance/palette.make +endif + +endif diff --git a/gnustep-make/relative_path.sh b/gnustep-make/relative_path.sh new file mode 100755 index 00000000..2268a9fc --- /dev/null +++ b/gnustep-make/relative_path.sh @@ -0,0 +1,163 @@ +#!/bin/sh +# relative_path.sh +# +# Copyright (C) 2002 Free Software Foundation, Inc. +# +# Author: Nicola Pero <n.pero@mi.flashnet.it> +# 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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. +# +# <NB: the paths must be absolute.> +# +# for example, +# +# $GNUSTEP_MAKEFILES/relative_path.sh /usr/GNUstep/Local /usr/GNUstep/System +# +# 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/` 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. +# + + +if [ "$#" != 2 ]; then + exit 1 +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="" + +# First 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 [ -z "$result" ]; then + result=".." + else + result="$result/.." + fi + fi +done +IFS="$tmp_IFS" + +# Then, append b +if [ -n "$result" ]; then + result="$result$b" +else + result="$b" +fi + +echo "$result" diff --git a/gnustep-make/resource-set.make b/gnustep-make/resource-set.make new file mode 100644 index 00000000..9a1ffa00 --- /dev/null +++ b/gnustep-make/resource-set.make @@ -0,0 +1,30 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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 diff --git a/gnustep-make/rules.make b/gnustep-make/rules.make new file mode 100644 index 00000000..332e369c --- /dev/null +++ b/gnustep-make/rules.make @@ -0,0 +1,510 @@ +# -*-makefile-*- +# rules.make +# +# All of the common makefile rules. +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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 + +# +# 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 +# +# 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)) +else + ADDITIONAL_OBJC_LIBS += $(foreach lib,$(ADDITIONAL_NATIVE_LIBS),-l$(lib)) +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) + +ALL_OBJCFLAGS = $(INTERNAL_OBJCFLAGS) $(ADDITIONAL_OBJCFLAGS) \ + $(AUXILIARY_OBJCFLAGS) $(ADDITIONAL_INCLUDE_DIRS) \ + $(AUXILIARY_INCLUDE_DIRS) \ + $(DERIVED_SOURCES_HEADERS_FLAG) \ + -I. $(SYSTEM_INCLUDES) \ + $(GNUSTEP_HEADERS_FLAGS) \ + $(GNUSTEP_FRAMEWORKS_FLAGS) + +ALL_CFLAGS = $(INTERNAL_CFLAGS) $(ADDITIONAL_CFLAGS) \ + $(AUXILIARY_CFLAGS) $(ADDITIONAL_INCLUDE_DIRS) \ + $(AUXILIARY_INCLUDE_DIRS) \ + $(DERIVED_SOURCES_HEADERS_FLAG) \ + -I. $(SYSTEM_INCLUDES) \ + $(GNUSTEP_HEADERS_FLAGS) \ + $(GNUSTEP_FRAMEWORKS_FLAGS) + +# if you need, you can define ADDITIONAL_CCFLAGS to add C++ specific flags +ALL_CCFLAGS = $(ADDITIONAL_CCFLAGS) $(AUXILIARY_CCFLAGS) + +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) + +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. +ifeq ($(WITH_DLL),yes) +ALL_CPPFLAGS += -DGNUSTEP_WITH_DLL +endif + +# General rules +VPATH = . + +# Disable all built-in suffixes for performance. +.SUFFIXES: + +# Then define our own. +.SUFFIXES: .m .c .psw .java .h .cpp .cxx .C .cc .cp + +.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.% + +# +# 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_DIR)/%${OEXT} : %.c + $(ECHO_COMPILING)$(CC) $< -c \ + $(filter-out $($<_FILE_FILTER_OUT_FLAGS),$(ALL_CPPFLAGS) \ + $(ALL_CFLAGS)) \ + $($<_FILE_FLAGS) -o $@$(END_ECHO) + +$(GNUSTEP_OBJ_DIR)/%${OEXT} : %.m + $(ECHO_COMPILING)$(CC) $< -c \ + $(filter-out $($<_FILE_FILTER_OUT_FLAGS),$(ALL_CPPFLAGS) \ + $(ALL_OBJCFLAGS)) \ + $($<_FILE_FLAGS) -o $@$(END_ECHO) + +$(GNUSTEP_OBJ_DIR)/%${OEXT} : %.C + $(ECHO_COMPILING)$(CC) $< -c \ + $(filter-out $($<_FILE_FILTER_OUT_FLAGS),$(ALL_CPPFLAGS) \ + $(ALL_CFLAGS) \ + $(ALL_CCFLAGS)) \ + $($<_FILE_FLAGS) -o $@$(END_ECHO) + +$(GNUSTEP_OBJ_DIR)/%${OEXT} : %.cc + $(ECHO_COMPILING)$(CC) $< -c \ + $(filter-out $($<_FILE_FILTER_OUT_FLAGS),$(ALL_CPPFLAGS) \ + $(ALL_CFLAGS) \ + $(ALL_CCFLAGS)) \ + $($<_FILE_FLAGS) -o $@$(END_ECHO) + +$(GNUSTEP_OBJ_DIR)/%${OEXT} : %.cpp + $(ECHO_COMPILING)$(CC) $< -c \ + $(filter-out $($<_FILE_FILTER_OUT_FLAGS),$(ALL_CPPFLAGS) \ + $(ALL_CFLAGS) \ + $(ALL_CCFLAGS)) \ + $($<_FILE_FLAGS) -o $@$(END_ECHO) + +$(GNUSTEP_OBJ_DIR)/%${OEXT} : %.cxx + $(ECHO_COMPILING)$(CC) $< -c \ + $(filter-out $($<_FILE_FILTER_OUT_FLAGS),$(ALL_CPPFLAGS) \ + $(ALL_CFLAGS) \ + $(ALL_CCFLAGS)) \ + $($<_FILE_FLAGS) -o $@$(END_ECHO) + +$(GNUSTEP_OBJ_DIR)/%${OEXT} : %.cp + $(ECHO_COMPILING)$(CC) $< -c \ + $(filter-out $($<_FILE_FILTER_OUT_FLAGS),$(ALL_CPPFLAGS) \ + $(ALL_CFLAGS) \ + $(ALL_CCFLAGS)) \ + $($<_FILE_FLAGS) -o $@$(END_ECHO) + +%.class : %.java + $(ECHO_COMPILING)$(JAVAC) \ + $(filter-out $($<_FILE_FILTER_OUT_FLAGS),$(ALL_JAVACFLAGS)) \ + $($<_FILE_FLAGS) $<$(END_ECHO) + +# 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 '/^#pragma/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)/$(GNUSTEP_TARGET_DIR)/config.make: ; + +$(GNUSTEP_MAKEFILES)/Additional/*.make: ; + +$(GNUSTEP_MAKEFILES)/Master/*.make: ; + +$(GNUSTEP_MAKEFILES)/Instance/*.make: ; + +$(GNUSTEP_MAKEFILES)/Instance/Shared/*.make: ; + +$(GNUSTEP_MAKEFILES)/Instance/Documentation/*.make: ; + +# The rule to create the GNUSTEP_BUILD_DIR if any. +ifneq ($(GNUSTEP_BUILD_DIR),.) +$(GNUSTEP_BUILD_DIR): + $(ECHO_CREATING)$(MKDIRS) $(GNUSTEP_BUILD_DIR)$(END_ECHO) +endif + +# The rule to create the objects file directory. +$(GNUSTEP_OBJ_DIR): + $(ECHO_NOTHING)cd $(GNUSTEP_BUILD_DIR); \ + $(MKDIRS) ./$(GNUSTEP_OBJ_DIR_NAME); \ + rm -f obj; \ + $(LN_S) ./$(GNUSTEP_OBJ_DIR_NAME) obj$(END_ECHO) + +endif +# rules.make loaded diff --git a/gnustep-make/service.make b/gnustep-make/service.make new file mode 100644 index 00000000..0db1471f --- /dev/null +++ b/gnustep-make/service.make @@ -0,0 +1,30 @@ +# +# service.make +# +# Makefile rules to build GNUstep services. +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +ifeq ($(GNUSTEP_INSTANCE),) +include $(GNUSTEP_MAKEFILES)/Master/service.make +else + +ifeq ($(GNUSTEP_TYPE),service) +include $(GNUSTEP_MAKEFILES)/Instance/service.make +endif + +endif diff --git a/gnustep-make/setlocaltz.sh b/gnustep-make/setlocaltz.sh new file mode 100755 index 00000000..0f70f1af --- /dev/null +++ b/gnustep-make/setlocaltz.sh @@ -0,0 +1,42 @@ +#! /bin/sh +# +# setlocaltz.sh +# +# Determine local timezone, ask user for input, save timzone +# in GNUstep timezone file (or defaults database) +# +# Copyright (C) 1999 Free Software Foundation, Inc. +# +# Author: Scott Christley <scottc@net-community.com> +# +# Date: February 1999 +# +# 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +echo " " +echo "Enter the name of your timezone file" +echo "press ^D on its own line when you are done" +TZNAME=`cat` +echo " " + +GNUSTEP_TIMEZONE=$GNUSTEP_SYSTEM_ROOT/Library/Libraries/Resources/gnustep-base/NSTimeZones +if [ -f $GNUSTEP_TIMEZONE/zones/$TZNAME ]; then + echo Setting timezone to $TZNAME + defaults write NSGlobalDomain "Local Time Zone" $TZNAME + echo defaults database says local time zone is: + defaults read NSGlobalDomain "Local Time Zone" +else + echo ERROR: Cannot find timezone file: $TZNAME + echo in $GNUSTEP_TIMEZONE/zones + exit 1 +fi diff --git a/gnustep-make/spec-debug-alone-rules.template b/gnustep-make/spec-debug-alone-rules.template new file mode 100644 index 00000000..a43a0799 --- /dev/null +++ b/gnustep-make/spec-debug-alone-rules.template @@ -0,0 +1,41 @@ +# +# Setup sources +# +%prep +%setup -n %{gs_name}-%{gs_version} + +# +# Build commands +# +%build +if [ -z "$GNUSTEP_SYSTEM_ROOT" ]; then + . %{gs_root}/Library/Makefiles/GNUstep.sh +fi +if [ "%{gs_configure}" = "YES" ]; then + CFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=%{gs_root} +fi +make debug=yes + +# +# Install commands (generate file list too) +# +%install +if [ -z "$GNUSTEP_SYSTEM_ROOT" ]; then + . %{gs_root}/Library/Makefiles/GNUstep.sh +fi + +make debug=yes \ + INSTALL_ROOT_DIR=$RPM_BUILD_ROOT \ + GNUSTEP_INSTALLATION_DIR=$RPM_BUILD_ROOT%{gs_install_dir} \ + filelist=yes install + +# +# Clean commands +# +%clean +rm -rf $RPM_BUILD_ROOT + +# +# File list (generated by install) +# +%files -f file-list-debug diff --git a/gnustep-make/spec-debug-rules.template b/gnustep-make/spec-debug-rules.template new file mode 100644 index 00000000..1abfe4fa --- /dev/null +++ b/gnustep-make/spec-debug-rules.template @@ -0,0 +1,66 @@ +# +# Setup sources +# +%prep +%setup -n %{gs_name}-%{gs_version} + +# +# Build commands +# +%build +if [ -z "$GNUSTEP_SYSTEM_ROOT" ]; then + . %{gs_root}/Library/Makefiles/GNUstep.sh +fi +if [ "%{gs_configure}" = "YES" ]; then + CFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=%{gs_root} +fi +make debug=no +make debug=yes + +# +# Install commands (generate file list too) +# +%install +if [ -z "$GNUSTEP_SYSTEM_ROOT" ]; then + . %{gs_root}/Library/Makefiles/GNUstep.sh +fi +# build the non debugging file list +mkdir tmp-rpm-build-%{gs_name} +make debug=no \ + INSTALL_ROOT_DIR=`pwd`/tmp-rpm-build-%{gs_name} \ + GNUSTEP_INSTALLATION_DIR=`pwd`/tmp-rpm-build-%{gs_name}/%{gs_install_dir} \ + filelist=yes install +rm -rf tmp-rpm-build-%{gs_name} + +# build the debugging file list +make debug=yes \ + INSTALL_ROOT_DIR=$RPM_BUILD_ROOT \ + GNUSTEP_INSTALLATION_DIR=$RPM_BUILD_ROOT%{gs_install_dir} \ + filelist=yes install + +# Now filter the debugging file list against the non debugging one +# +# We use `grep': +# `-f file-list' gets the lines to match from file-list +# `-x' gets only matches which match whole lines +# `-v' inverts the matching, so lines which do not match are outputted +# +mv file-list-debug file-list.tmp +for file in `cat file-list`; do + grep -v -x $file file-list.tmp >> file-list-debug.tmp + mv file-list-debug.tmp file-list.tmp +done + +rm -f file-list-debug.tmp +mv file-list.tmp file-list-debug + +# +# Clean commands +# +%clean +rm -rf $RPM_BUILD_ROOT + +# +# File list (generated by install) +# +%files -f file-list-debug diff --git a/gnustep-make/spec-rules.template b/gnustep-make/spec-rules.template new file mode 100644 index 00000000..c79c7fe0 --- /dev/null +++ b/gnustep-make/spec-rules.template @@ -0,0 +1,40 @@ +# +# Setup sources +# +%prep +%setup -n %{gs_name}-%{gs_version} + +# +# Build commands +# +%build +if [ -z "$GNUSTEP_SYSTEM_ROOT" ]; then + . %{gs_root}/Library/Makefiles/GNUstep.sh +fi +if [ "%{gs_configure}" = "YES" ]; then + CFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=%{gs_root} +fi +make + +# +# Install commands (generate file list too) +# +%install +if [ -z "$GNUSTEP_SYSTEM_ROOT" ]; then + . %{gs_root}/Library/Makefiles/GNUstep.sh +fi + +make INSTALL_ROOT_DIR=$RPM_BUILD_ROOT \ + GNUSTEP_INSTALLATION_DIR=$RPM_BUILD_ROOT%{gs_install_dir} \ + filelist=yes install + +# +# Clean commands +# +%clean +rm -rf $RPM_BUILD_ROOT + +# +# File list (generated by install) +# +%files -f file-list diff --git a/gnustep-make/strip_makefiles.sh b/gnustep-make/strip_makefiles.sh new file mode 100755 index 00000000..2cbbbd22 --- /dev/null +++ b/gnustep-make/strip_makefiles.sh @@ -0,0 +1,43 @@ +#!/bin/sh +# strip_makefiles.sh +# +# Copyright (C) 2003 Free Software Foundation, Inc. +# +# Author: Nicola Pero <n.pero@mi.flashnet.it> +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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 + diff --git a/gnustep-make/subproject.make b/gnustep-make/subproject.make new file mode 100644 index 00000000..2d52332e --- /dev/null +++ b/gnustep-make/subproject.make @@ -0,0 +1,31 @@ +# +# 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 <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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +ifeq ($(GNUSTEP_INSTANCE),) +include $(GNUSTEP_MAKEFILES)/Master/subproject.make +else + +ifeq ($(GNUSTEP_TYPE),subproject) +include $(GNUSTEP_MAKEFILES)/Instance/subproject.make +endif + +endif diff --git a/gnustep-make/tar-exclude-list b/gnustep-make/tar-exclude-list new file mode 100644 index 00000000..39e87fdd --- /dev/null +++ b/gnustep-make/tar-exclude-list @@ -0,0 +1,2 @@ +CVS +.svn \ No newline at end of file diff --git a/gnustep-make/target.make b/gnustep-make/target.make new file mode 100644 index 00000000..c46b5af0 --- /dev/null +++ b/gnustep-make/target.make @@ -0,0 +1,1017 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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 +ifneq ("$(objc_threaded)","") + INTERNAL_CFLAGS = -D_REENTRANT + INTERNAL_OBJCFLAGS = -D_REENTRANT + 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 +endif +ifeq ($(findstring cygwin, $(GNUSTEP_TARGET_OS)), cygwin) + TARGET_SYSTEM_LIBS := $(CONFIG_SYSTEM_LIBS) -lm -I. +endif +ifeq ($(findstring solaris, $(GNUSTEP_TARGET_OS)), solaris) + TARGET_SYSTEM_LIBS := $(CONFIG_SYSTEM_LIBS) -lsocket -lnsl -lm +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 $(CC)) 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. +# 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. +# +# 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-z_. 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-z_.]* [^U]/ {s/^__objc_class_name_\([A-Za-z_.]*\) [^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 = +SHARED_LIBEXT = +AFTER_INSTALL_SHARED_LIB_CMD = \ + (cd $(LIB_LINK_INSTALL_DIR); \ + rm -f $(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 + +#################################################### +# +# 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 + +TARGET_LIB_DIR = \ + Library/Libraries/$(GNUSTEP_TARGET_LDIR) + +ifneq ($(OBJC_COMPILER), NeXT) +SHARED_LIB_LINK_CMD = \ + $(CC) $(SHARED_LD_PREFLAGS) \ + -dynamiclib $(ARCH_FLAGS) -dynamic \ + -compatibility_version 1 -current_version 1 \ + -install_name $(GNUSTEP_SYSTEM_ROOT)/$(TARGET_LIB_DIR)/$(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 -f $(LIB_LINK_FILE); \ + $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE)) +else # OBJC_COMPILER=NeXT +SHARED_LIB_LINK_CMD = \ + $(CC) $(SHARED_LD_PREFLAGS) \ + -dynamiclib $(ARCH_FLAGS) -dynamic \ + -compatibility_version 1 -current_version 1 \ + -read_only_relocs warning -undefined warning \ + -install_name $(GNUSTEP_SYSTEM_ROOT)/$(TARGET_LIB_DIR)/$(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 -f $(LIB_LINK_FILE); \ + $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE)) +endif # OBJC_COMPILER + +OBJ_MERGE_CMD = \ + $(CC) -nostdlib -r -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 = $(CC) +BUNDLE_LDFLAGS += -bundle -undefined suppress $(ARCH_FLAGS) +endif +# +# end MacOSX-Server 1.0 +# +#################################################### + +#################################################### +# +# MacOSX 10.[12], darwin[567] +# +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 + + +ifeq ($(CC_BUNDLE), no) +# GNU compiler +SHARED_LD_PREFLAGS += -noall_load -read_only_relocs warning \ + -flat_namespace -undefined warning +# Useful flag: -Wl,-single_module. This flag only +# works starting with 10.3. libs w/ffcall don't link on darwin/ix86 without it. +ifeq ($(findstring darwin7, $(GNUSTEP_TARGET_OS)), darwin7) + SHARED_LD_PREFLAGS += -single_module +endif +SHARED_LIB_LINK_CMD = \ + /usr/bin/libtool \ + $(SHARED_LD_PREFLAGS) \ + $(ARCH_FLAGS) -dynamic \ + $(DYLIB_COMPATIBILITY_VERSION) \ + $(DYLIB_CURRENT_VERSION) \ + -install_name $(LIB_LINK_INSTALL_NAME) \ + $(ALL_LDFLAGS) -o $@ \ + $(DYLIB_DEF_FRAMEWORKS) \ + $^ $(INTERNAL_LIBRARIES_DEPEND_UPON) $(LIBRARIES_FOUNDATION_DEPEND_UPON) \ + $(SHARED_LD_POSTFLAGS); \ + (cd $(LIB_LINK_OBJ_DIR); \ + rm -f $(LIB_LINK_FILE); \ + if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\ + rm -f $(LIB_LINK_SONAME_FILE);\ + $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_SONAME_FILE); \ + fi; \ + $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE)) + +BUNDLE_LD = /usr/bin/ld +BUNDLE_LDFLAGS += -bundle -flat_namespace -undefined suppress /usr/lib/bundle1.o + +else +# Apple Compiler + +#DYLIB_EXTRA_FLAGS = -read_only_relocs warning -undefined warning -fno-common +DYLIB_EXTRA_FLAGS = -flat_namespace -undefined warning +# Useful optimization flag: -Wl,-single_module. This flag only +# works starting with 10.3. +ifeq ($(findstring darwin7, $(GNUSTEP_TARGET_OS)), darwin7) + DYLIB_EXTRA_FLAGS += -Wl,-single_module +endif + +SHARED_LIB_LINK_CMD = \ + $(CC) $(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 -f $(LIB_LINK_FILE); \ + if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\ + rm -f $(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 = $(CC) +BUNDLE_LDFLAGS += -bundle -undefined error $(ARCH_FLAGS) + +endif # CC_TYPE + +AFTER_INSTALL_SHARED_LIB_CMD = \ + (cd $(LIB_LINK_INSTALL_DIR); \ + rm -f $(LIB_LINK_FILE); \ + if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\ + rm -f $(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 = \ + $(CC) -nostdlib -r -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) + +AFTER_INSTALL_STATIC_LIB_CMD = \ + (cd $(LIB_LINK_INSTALL_DIR); \ + $(RANLIB) $(LIB_LINK_VERSION_FILE)) + +SHARED_CFLAGS += -fno-common + +endif +# +# end MacOSX 10.2, darwin6 +# +#################################################### + +#################################################### +# +# 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 + +TARGET_LIB_DIR = \ + Library/Libraries/$(GNUSTEP_TARGET_LDIR) + +ifneq ($(OBJC_COMPILER), NeXT) +SHARED_LIB_LINK_CMD = \ + /bin/libtool $(SHARED_LD_PREFLAGS) \ + -dynamic -read_only_relocs suppress $(ARCH_FLAGS) \ + -install_name $(GNUSTEP_SYSTEM_ROOT)/$(TARGET_LIB_DIR)/$(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 -f $(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_SYSTEM_ROOT)/$(TARGET_LIB_DIR)/$(LIB_LINK_FILE) \ + $(ALL_LDFLAGS) $@ \ + -framework System \ + $(INTERNAL_LIBRARIES_DEPEND_UPON) \ + $(LIBRARIES_FOUNDATION_DEPEND_UPON) $^ \ + $(SHARED_LD_POSTFLAGS); \ + (cd $(LIB_LINK_OBJ_DIR); rm -f $(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 + +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 + +TARGET_LIB_DIR = \ + Library/Libraries/$(GNUSTEP_TARGET_LDIR) + +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 -f $(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 -f $(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 + +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 = \ + $(CC) $(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 -f $(LIB_LINK_FILE); \ + if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\ + rm -f $(LIB_LINK_SONAME_FILE);\ + $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_SONAME_FILE); \ + fi; \ + $(LN_S) $(LIB_LINK_SONAME_FILE) $(LIB_LINK_FILE); \ + ) +AFTER_INSTALL_SHARED_LIB_CMD = \ + (cd $(LIB_LINK_INSTALL_DIR); \ + rm -f $(LIB_LINK_FILE); \ + if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\ + rm -f $(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 = \ + $(CC) -nostdlib -r $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ; + +SHARED_CFLAGS += -fPIC +SHARED_LIBEXT = .so + +HAVE_BUNDLES = yes +BUNDLE_LD = $(CC) +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 = \ + $(CC) -shared -Wl,-soname,$(LIB_LINK_VERSION_FILE) \ + $(ALL_LDFLAGS) -o $(LIB_LINK_OBJ_DIR)/$(LIB_LINK_VERSION_FILE) $^ /usr/lib/c++rt0.o;\ + (cd $(LIB_LINK_OBJ_DIR); \ + rm -f $(LIB_LINK_FILE); \ + $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE)) + +SHARED_CFLAGS += -fPIC +SHARED_LIBEXT = .so + +HAVE_BUNDLES = yes +BUNDLE_LD = $(CC) +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 = \ + $(CC) -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 -f $(LIB_LINK_FILE); \ + if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\ + rm -f $(LIB_LINK_SONAME_FILE);\ + $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_SONAME_FILE); \ + fi; \ + $(LN_S) $(LIB_LINK_SONAME_FILE) $(LIB_LINK_FILE)) +AFTER_INSTALL_SHARED_LIB_CMD = \ + (cd $(LIB_LINK_INSTALL_DIR); \ + rm -f $(LIB_LINK_FILE); \ + if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\ + rm -f $(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 = \ + $(CC) -nostdlib -r $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ; + +SHARED_CFLAGS += -fPIC +SHARED_LIBEXT = .so + +HAVE_BUNDLES = yes +BUNDLE_LD = $(CC) +BUNDLE_LDFLAGS += -shared +ADDITIONAL_LDFLAGS += -rdynamic +STATIC_LDFLAGS += -static +endif +endif +# +# end FreeBSD +# +#################################################### + +#################################################### +# +# NetBSD +# +ifeq ($(findstring netbsd, $(GNUSTEP_TARGET_OS)), netbsd) +# This is disabled temporarily, because I don't know exactly how +# to link shared libs. Everything seems to link correctly now but +# constructor functions in the shared lib failed to get called +# when the lib is loaded in. I don't know why. ASF. +HAVE_SHARED_LIBS = no +SHARED_LD = ld +SHARED_LIB_LINK_CMD = \ + $(SHARED_LD) -x -Bshareable -Bforcearchive \ + $(ALL_LDFLAGS) -o $(LIB_LINK_OBJ_DIR)/$(LIB_LINK_VERSION_FILE) $^ /usr/lib/c++rt0.o;\ + (cd $(LIB_LINK_OBJ_DIR); \ + rm -f $(LIB_LINK_FILE); \ + $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE)) + +SHARED_CFLAGS += -shared -fpic +SHARED_LIBEXT = .so + +HAVE_BUNDLES = yes +BUNDLE_LD = $(CC) +BUNDLE_LDFLAGS += -shared -fpic +#ADDITIONAL_LDFLAGS += -rdynamic +STATIC_LDFLAGS += -static +endif +# +# end NetBSD +# +#################################################### + +#################################################### +# +# NetBSD ELF +# +ifeq ($(findstring netbsdelf, $(GNUSTEP_TARGET_OS)), netbsdelf) +HAVE_SHARED_LIBS = yes +SHARED_LD_POSTFLAGS = -Wl,-R/usr/pkg/lib -L/usr/pkg/lib +SHARED_LIB_LINK_CMD = \ + $(CC) -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 -f $(LIB_LINK_FILE); \ + $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE)) +OBJ_MERGE_CMD = \ + $(CC) -nostdlib -r $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ; + +SHARED_CFLAGS += -fPIC +SHARED_LIBEXT = .so + +HAVE_BUNDLES = yes +BUNDLE_LD = $(CC) +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 +# +#################################################### + +#################################################### +# +# OpenBSD 3.x (though set for 3.3) +# +ifeq ($(findstring openbsd, $(GNUSTEP_TARGET_OS)), openbsd) +# This is disabled temporarily, because I don't know exactly how +# to link shared libs. Everything seems to link correctly now but +# constructor functions in the shared lib failed to get called +# when the lib is loaded in. I don't know why. ASF. +HAVE_SHARED_LIBS = yes +SHARED_LIB_LINK_CMD = \ + $(CC) -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 -f $(LIB_LINK_FILE); \ + if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\ + rm -f $(LIB_LINK_SONAME_FILE);\ + $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_SONAME_FILE); \ + fi; \ + $(LN_S) $(LIB_LINK_SONAME_FILE) $(LIB_LINK_FILE)) +AFTER_INSTALL_SHARED_LIB_CMD = \ + (cd $(LIB_LINK_INSTALL_DIR); \ + rm -f $(LIB_LINK_FILE); \ + if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\ + rm -f $(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 = \ + $(CC) -nostdlib -r $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ; + +SHARED_CFLAGS += -fPIC +SHARED_LIBEXT = .so + +HAVE_BUNDLES = yes +BUNDLE_LD = $(CC) +BUNDLE_LDFLAGS += -shared -fPIC +#ADDITIONAL_LDFLAGS += -rdynamic +STATIC_LDFLAGS += -static +endif +# +# end OpenBSD 3.x +# +#################################################### + +#################################################### +# +# OSF +# +ifeq ($(findstring osf, $(GNUSTEP_TARGET_OS)), osf) +HAVE_SHARED_LIBS = yes +SHARED_LIB_LINK_CMD = \ + $(CC) -shared -Wl,-soname,$(LIB_LINK_VERSION_FILE) \ + $(ALL_LDFLAGS) -o $(LIB_LINK_OBJ_DIR)/$(LIB_LINK_VERSION_FILE) $^ ;\ + (cd $(LIB_LINK_OBJ_DIR); \ + rm -f $(LIB_LINK_FILE); \ + $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE)) +OBJ_MERGE_CMD = \ + $(CC) -nostdlib -r $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ; + +SHARED_CFLAGS += -fPIC +SHARED_LIBEXT = .so + +HAVE_BUNDLES = yes +BUNDLE_LD = $(CC) +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 = \ + $(CC) $(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 -f $(LIB_LINK_FILE); \ + if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\ + rm -f $(LIB_LINK_SONAME_FILE);\ + $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_SONAME_FILE); \ + fi; \ + $(LN_S) $(LIB_LINK_SONAME_FILE) $(LIB_LINK_FILE); \ + ) +AFTER_INSTALL_SHARED_LIB_CMD = \ + (cd $(LIB_LINK_INSTALL_DIR); \ + rm -f $(LIB_LINK_FILE); \ + if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\ + rm -f $(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 = \ + /usr/bin/ld -r $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ; + +ADDITIONAL_LDFLAGS += +STATIC_LDFLAGS += + +HAVE_BUNDLES = yes +BUNDLE_LD = $(CC) +BUNDLE_LDFLAGS += -shared +endif + +# end IRIX +# +#################################################### + +#################################################### +# +# Mingw32 +# +ifeq ($(findstring mingw32, $(GNUSTEP_TARGET_OS)), mingw32) +shared = yes +HAVE_SHARED_LIBS = yes +BUILD_DLL = yes +WITH_DLL = yes +SHARED_LIBEXT = .a +DLL_LIBEXT = .dll +DLLTOOL = dlltool +DLLWRAP = dllwrap +#SHARED_CFLAGS += + +OBJ_MERGE_CMD = \ + $(CC) -nostdlib -r $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ; + +HAVE_BUNDLES = yes +BUNDLE_LD = $(CC) +BUNDLE_LDFLAGS += -nodefaultlibs -Xlinker -r +endif + +# end Mingw32 +# +#################################################### + +#################################################### +# +# Cygwin +# +ifeq ($(findstring cygwin, $(GNUSTEP_TARGET_OS)), cygwin) +shared = yes +HAVE_SHARED_LIBS = yes +BUILD_DLL = yes +WITH_DLL = yes +SHARED_LIBEXT = .a +DLL_LIBEXT = .dll +DLLTOOL = dlltool +DLLWRAP = dllwrap +#SHARED_CFLAGS += + +OBJ_MERGE_CMD = \ + $(CC) -nostdlib -r $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ; + +HAVE_BUNDLES = yes +BUNDLE_LD = $(CC) +BUNDLE_LDFLAGS += -nodefaultlibs -Xlinker -r +endif + +# end Cygwin +# +#################################################### + + +#################################################### +# +# Solaris +# +ifeq ($(findstring solaris, $(GNUSTEP_TARGET_OS)), solaris) +HAVE_SHARED_LIBS = yes +SHARED_LIB_LINK_CMD = \ + $(CC) $(SHARED_LD_PREFLAGS) -G -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 -f $(LIB_LINK_FILE); \ + if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\ + rm -f $(LIB_LINK_SONAME_FILE);\ + $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_SONAME_FILE); \ + fi; \ + $(LN_S) $(LIB_LINK_SONAME_FILE) $(LIB_LINK_FILE); \ + ) +AFTER_INSTALL_SHARED_LIB_CMD = \ + (cd $(LIB_LINK_INSTALL_DIR); \ + rm -f $(LIB_LINK_FILE); \ + if [ "$(LIB_LINK_SONAME_FILE)" != "$(LIB_LINK_VERSION_FILE)" ]; then\ + rm -f $(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 = \ + $(CC) -nostdlib -r $(ALL_LDFLAGS) -o $(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT) $^ ; + +SHARED_CFLAGS += -fpic -fPIC +SHARED_LIBEXT = .so + +HAVE_BUNDLES = yes +BUNDLE_LD = $(CC) +BUNDLE_LDFLAGS = -shared -mimpure-text +#BUNDLE_LDFLAGS = -nodefaultlibs -Xlinker -r +endif + +# end Solaris +# +#################################################### + + +#################################################### +# +# Unixware +# +ifeq ($(findstring sysv4.2, $(GNUSTEP_TARGET_OS)), sysv4.2) +HAVE_SHARED_LIBS = yes +SHARED_LIB_LINK_CMD = \ + $(CC) $(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 -f $(LIB_LINK_FILE); \ + $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE)) + +SHARED_CFLAGS += -fpic -fPIC +SHARED_LIBEXT = .so + +HAVE_BUNDLES = yes +BUNDLE_LD = $(CC) +#BUNDLE_LDFLAGS += -shared -mimpure-text +BUNDLE_LDFLAGS += -nodefaultlibs -Xlinker -r +endif + +# end Unixware +# +#################################################### + + +#################################################### +# +# HP-UX +# +ifeq ($(findstring hpux, $(GNUSTEP_TARGET_OS)), hpux) +HAVE_SHARED_LIBS = yes +SHARED_LIB_LINK_CMD = \ + (cd $(LIB_LINK_OBJ_DIR); \ + $(CC) $(SHARED_LD_PREFLAGS) \ + -v $(SHARED_CFLAGS) -shared \ + $(ALL_LDFLAGS) -o $(LIB_LINK_VERSION_FILE) `ls -1 *\.o */*\.o` \ + $(SHARED_LD_POSTFLAGS) ;\ + rm -f $(LIB_LINK_FILE); \ + $(LN_S) $(LIB_LINK_VERSION_FILE) $(LIB_LINK_FILE)) + +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 = $(CC) +BUNDLE_LDFLAGS += -nodefaultlibs -Xlinker -r +ADDITIONAL_LDFLAGS += -Xlinker +s +STATIC_LDFLAGS += -static +endif + +# end HP-UX +# +#################################################### diff --git a/gnustep-make/test-application.make b/gnustep-make/test-application.make new file mode 100644 index 00000000..f980eb4a --- /dev/null +++ b/gnustep-make/test-application.make @@ -0,0 +1,30 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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 diff --git a/gnustep-make/test-library.make b/gnustep-make/test-library.make new file mode 100644 index 00000000..c1fd9642 --- /dev/null +++ b/gnustep-make/test-library.make @@ -0,0 +1,30 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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 diff --git a/gnustep-make/test-tool.make b/gnustep-make/test-tool.make new file mode 100644 index 00000000..7e6d3e14 --- /dev/null +++ b/gnustep-make/test-tool.make @@ -0,0 +1,30 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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 diff --git a/gnustep-make/tool.make b/gnustep-make/tool.make new file mode 100644 index 00000000..e6d83ae3 --- /dev/null +++ b/gnustep-make/tool.make @@ -0,0 +1,30 @@ +# +# 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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +ifeq ($(GNUSTEP_INSTANCE),) +include $(GNUSTEP_MAKEFILES)/Master/tool.make +else + +ifeq ($(GNUSTEP_TYPE),tool) +include $(GNUSTEP_MAKEFILES)/Instance/tool.make +endif + +endif diff --git a/gnustep-make/transform_paths.sh b/gnustep-make/transform_paths.sh new file mode 100755 index 00000000..66875ec7 --- /dev/null +++ b/gnustep-make/transform_paths.sh @@ -0,0 +1,39 @@ +#!/bin/sh +# transform_paths.sh +# +# Copyright (C) 1997 Free Software Foundation, Inc. +# +# Author: Ovidiu Predescu <ovidiu@net-community.com> +# Date: October 1997 +# Rewritten: Nicola Pero <n.pero@mi.flashnet.it> +# Date: March 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# Takes a list of paths possibly containing relative paths and outputs a +# list containing only absolute paths based upon the current directory. + +if [ -z "$*" ]; then + exit 0 +fi + +curdir="`pwd`" + +for dir in $@; do + if [ -d "$curdir/$dir" ]; then + echo "$curdir/$dir" + else + echo "$dir" + fi +done diff --git a/gnustep-make/user_home.c b/gnustep-make/user_home.c new file mode 100644 index 00000000..623210d5 --- /dev/null +++ b/gnustep-make/user_home.c @@ -0,0 +1,455 @@ +/* + user_home.c + Copyright (C) 2002 Free Software Foundation, Inc. + + Author: Richard Frith-Macdonald <richard@brainstorm.co.uk> + Date: February 2002 + + 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.LIB. + If not, write to the Free Software Foundation, + 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#include "config.h" + +#ifdef __MINGW32__ +#ifndef __MINGW__ +#define __MINGW__ +#endif +#ifndef __WIN32__ +#define __WIN32__ +#endif +#endif + +#include <stdio.h> +#include <ctype.h> + +#if defined(__MINGW__) +# include <windows.h> +#endif + +#if HAVE_SYS_TYPES_H +# include <sys/types.h> +#endif + +#if HAVE_STDLIB_H +# include <stdlib.h> +#endif + +#if HAVE_UNISTD_H +# include <unistd.h> +#endif + +#if HAVE_STRING_H +# include <string.h> +#endif + +#if HAVE_PWD_H +# include <pwd.h> +#endif + +#define lowlevelstringify(X) #X +#define stringify(X) lowlevelstringify(X) + +#define SEP "/" + +/* + * This tool is intended to produce a definitive form of the + * user specific root directories for a GNUstep user. It must + * remain consistent with the code in the GNUstep base library + * which provides path information for all GNUstep applications. + * + * + * How to run this tool ... + * + * 1. With no arguments ... the tool should print the home directory of + * the current user to stdout. + * + * 2. With a 'user' argument ... the tool should print the + * GNUSTEP_USER_ROOT directory to stdout. + * + * 3. With a 'defaults' argument ... the tool should print the + * GNUSTEP_DEFAULTS_ROOT directory to stdout. + * + * Any other arguments will be ignored. + * On success the tool will terminate with an exit status of zero + * On failure, the tool will terminate with an exit status of one + * and will print an error message to stderr. + */ + +/* NOTE FOR DEVELOPERS. + * If you change the behavior of this method you must also change + * NSUser.m in the base library package to match. + */ +int main (int argc, char** argv) +{ + char buf0[1024]; + char path[2048]; + char home[2048]; + char *loginName = 0; + enum { NONE, DEFS, USER } type = NONE; +#if defined(__MINGW__) + char buf1[1024]; + int len0; + int len1; +#else + struct passwd *pw; +#endif + + if (argc > 1) + { + if (strcmp(argv[1], "defaults") == 0) + { + type = DEFS; + } + else if (strcmp(argv[1], "user") == 0) + { + type = USER; + } + } + + if (loginName == 0) + { +#if defined(__WIN32__) + /* The GetUserName function returns the current user name */ + DWORD n = 1024; + + len0 = GetEnvironmentVariable("LOGNAME", buf0, 1024); + if (len0 > 0 && len0 < 1024) + { + loginName = buf0; + loginName[len0] = '\0'; + } + else if (GetUserName(buf0, &n)) + { + loginName = buf0; + } +#else +#if HAVE_GETPWUID +#if HAVE_GETEUID + int uid = geteuid(); +#else + int uid = getuid(); +#endif /* HAVE_GETEUID */ + struct passwd *pwent = getpwuid (uid); + loginName = pwent->pw_name; +#endif /* HAVE_GETPWUID */ +#endif + if (loginName == 0) + { + fprintf(stderr, "Unable to determine current user name.\n"); + return 1; + } + } + +#if !defined(__MINGW__) + pw = getpwnam (loginName); + if (pw == 0) + { + fprintf(stderr, "Unable to locate home directory for '%s'\n", loginName); + return 1; + } + strncpy(home, pw->pw_dir, sizeof(home)); +#else + home[0] = '\0'; + /* + * The environment variable HOMEPATH holds the home directory + * for the user on Windows NT; Win95 has no concept of home. + * For OPENSTEP compatibility (and because USERPROFILE is usually + * unusable because it contains spaces), we use HOMEPATH in + * preference to USERPROFILE. + */ + len0 = GetEnvironmentVariable("HOMEPATH", buf0, 1024); + if (len0 > 0 && len0 < 1024) + { + buf0[len0] = '\0'; + /* + * Only use HOMEDRIVE is HOMEPATH does not already contain drive. + */ + if (len0 < 2 || buf0[1] != ':') + { + len1 = GetEnvironmentVariable("HOMEDRIVE", buf1, 128); + if (len1 > 0 && len1 < 128) + { + buf1[len1] = '\0'; + sprintf(home, "%s%s", buf1, buf0); + } + else + { + sprintf(home, "C:%s", buf0); + } + } + } + else + { + /* The environment variable USERPROFILE may hold the home directory + for the user on modern versions of windoze. */ + len0 = GetEnvironmentVariable("USERPROFILE", buf0, 1024); + if (len0 > 0 && len0 < 1024) + { + buf0[len0] = '\0'; + strcpy(home, buf0); + } + } + if (home[0] != '\0') + { + int i; + + for (i = 0; i < strlen(home); i++) + { + if (isspace((unsigned int)home[i])) + { + /* + * GNU make doesn't handle spaces in paths. + * Broken, wrong and totally unfixable. + */ + fprintf(stderr, "Make cannot handle spaces in paths so the " \ + "home directory '%s' may cause problems!\n", home); + break; + } + } + } +#endif + + if (type == NONE) + { + strcpy(path, home); + } + else + { + FILE *fptr; + char *user = ""; + char *defs = ""; + int forceD = 0; + int forceU = 0; + +#if defined (__MINGW32__) + len0 = GetEnvironmentVariable("GNUSTEP_SYSTEM_ROOT", buf0, sizeof(buf0)); + if (len0 > 0) + { + strcpy(path, buf0); + } +#else + { + const char *gnustep_system_root = (const char*)getenv("GNUSTEP_SYSTEM_ROOT"); + + if (gnustep_system_root != 0) + { + strcpy(path, gnustep_system_root); + } + else + { + /* On my machine the strcpy was segfaulting when + * gnustep_system_root == 0. */ + path[0] = '\0'; + } + } +#endif + strcat(path, SEP); + strcat(path, ".GNUsteprc"); + fptr = fopen(path, "r"); + if (fptr != 0) + { + while (fgets(buf0, sizeof(buf0), fptr) != 0) + { + char *pos = strchr(buf0, '='); + char *key = buf0; + char *val; + + if (pos != 0) + { + val = pos; + *val++ = '\0'; + while (isspace((int)*key)) + key++; + while (strlen(key) > 0 && isspace((int)key[strlen(key)-1])) + key[strlen(key)-1] = '\0'; + while (isspace(*val)) + val++; + while (strlen(val) > 0 && isspace((int)val[strlen(val)-1])) + val[strlen(val)-1] = '\0'; + } + else + { + while (isspace((int)*key)) + key++; + while (strlen(key) > 0 && isspace((int)key[strlen(key)-1])) + key[strlen(key)-1] = '\0'; + val = ""; + } + + if (strcmp(key, "GNUSTEP_USER_ROOT") == 0) + { + if (*val == '~') + { + user = malloc(strlen(val) + strlen(home)); + strcpy(user, home); + strcat(user, &val[1]); + } + else + { + user = malloc(strlen(val) + 1); + strcpy(user, val); + } + } + else if (strcmp(key, "GNUSTEP_DEFAULTS_ROOT") == 0) + { + if (*val == '~') + { + defs = malloc(strlen(val) + strlen(home)); + strcpy(defs, home); + strcat(defs, &val[1]); + } + else + { + defs = malloc(strlen(val) + 1); + strcpy(defs, val); + } + } + else if (strcmp(key, "FORCE_USER_ROOT") == 0) + { + forceU = 1; + } + else if (strcmp(key, "FORCE_DEFAULTS_ROOT") == 0) + { + forceD = 1; + } + } + fclose(fptr); + } + + if (*user == '\0' || forceU == 0 || *defs == '\0' || forceD == 0) + { + strcpy(path, home); + strcat(path, SEP); + strcat(path, ".GNUsteprc"); + fptr = fopen(path, "r"); + if (fptr != 0) + { + while (fgets(buf0, sizeof(buf0), fptr) != 0) + { + char *pos = strchr(buf0, '='); + + if (pos != 0) + { + char *key = buf0; + char *val = pos; + + *val++ = '\0'; + while (isspace((int)*key)) + key++; + while (strlen(key) > 0 + && isspace((int)key[strlen(key)-1])) + key[strlen(key)-1] = '\0'; + while (isspace((int)*val)) + val++; + while (strlen(val) > 0 + && isspace((int)val[strlen(val)-1])) + val[strlen(val)-1] = '\0'; + + if (strcmp(key, "GNUSTEP_USER_ROOT") == 0) + { + if (*user == '\0' || forceU == 0) + { + if (*val == '~') + { + user = malloc(strlen(val) + strlen(home)); + strcpy(user, home); + strcat(user, &val[1]); + } + else + { + user = malloc(strlen(val) + 1); + strcpy(user, val); + } + } + } + else if (strcmp(key, "GNUSTEP_DEFAULTS_ROOT") == 0) + { + if (*defs == '\0' || forceD == 0) + { + if (*val == '~') + { + defs = malloc(strlen(val) + strlen(home)); + strcpy(defs, home); + strcat(defs, &val[1]); + } + else + { + defs = malloc(strlen(val) + 1); + strcpy(defs, val); + } + } + } + } + } + fclose(fptr); + } + } + + if (type == DEFS) + { + strcpy(path, defs); + if (*path == '\0') + { + strcpy(path, user); + } + } + else + { + strcpy(path, user); + } + + if (*path == '\0') + { + strcpy(path, home); + strcat(path, SEP); + strcat(path, "GNUstep"); + } + } +#if defined(__MINGW__) + /* + * We always want to use unix style paths. + */ + if (strlen(path) > 1 && path[1] == ':') + { + char *ptr = path; + + while (*ptr != '\0') + { + if (*ptr == '\\') + { + *ptr = '/'; + } + if (*ptr == '/' && ptr > path && ptr[-1] == '/') + { + memmove(ptr, &ptr[1], strlen(ptr)+1); + } + else + { + ptr++; + } + } + if (path[2] == '/' || path[2] == '\0') + { + path[1] = path[0]; + } + else + { + memmove(&path[1], path, strlen(path)+1); + path[2] = '/'; + } + path[0] = '/'; + } +#endif + printf("%s", path); + return 0; +} + diff --git a/gnustep-make/vendor.sh b/gnustep-make/vendor.sh new file mode 100755 index 00000000..f3e6d347 --- /dev/null +++ b/gnustep-make/vendor.sh @@ -0,0 +1,23 @@ +#! /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 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.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +echo $1 | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/' diff --git a/gnustep-make/which_lib.c b/gnustep-make/which_lib.c new file mode 100644 index 00000000..cf02287c --- /dev/null +++ b/gnustep-make/which_lib.c @@ -0,0 +1,895 @@ +/* + which_lib.c + Copyright (C) 1997, 2001, 2002 Free Software Foundation, Inc. + + Author: Nicola Pero <nicola@brainstorm.co.uk> + Date: January 2002 + + Based on the original which_lib.c by Ovidiu Predescu, + Author: Ovidiu Predescu <ovidiu@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 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.LIB. + If not, write to the Free Software Foundation, + 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +/* + + Command line arguments are: + + * a list of library search paths in the GCC notation, as in + -L/usr/lib/opt/hack/ + -L/usr/GNUstep/Local/Library/Libraries/ix86/linux-gnu/gnu-gnu-gnu + -L/usr/GNUstep/System/Library/Libraries/ix86/linux-gnu/gnu-gnu-gnu + (order is important, paths are searched in the order they are listed); + + * a list of libraries in the GCC notation, as in + -lgnustep-base -lgnustep-gui -lobjc + + * flags specifying whether a debug, profile, static/shared library is + to be preferred, as in + debug=no profile=yes shared=yes + + The tool outputs the same list of library search paths and the list + of libraries it received in input, with an important modification: + each library name is modified to match the available version of the + library (by appending nothing for a normal library, _d for a debug + version of the library, _p for a profile one, _s for a static one, + and the various combinations, _dp, _ds, _ps, _dps) -- giving + preference to libraries matching the specified debug, profile, + shared library flags. For example, if a debug=yes profile=no + shared=yes is specified, and libgnustep-base_d.so is in the library + search path, which_lib will replace -lgnustep-base with + -lgnustep-base_d in the output. + + Here is exactly how the search is performed: + + The tool first searches into the list of directories for a library + exactly matching the name and the type required. If found, it's + used. + + If none is found, the library looks for an approximate match, as + detailed in the following list. Each search in the following list + is performed on the list of directories, and uses the shared flags + as specified. + + If (debug=yes and profile=yes), the tool looks for a debug=yes + profile=no, then a debug=no profile=yes. + + If (debug=yes and profile=no), the tool looks for a debug=no + profile=no. + + If (debug=no and profile=yes), the tool looks for a debug=no + profile=no. + + If (debug=no and profile=no), the tool looks for a debug=yes + profile=no. + + If none is still found and shared=yes, the tool looks for any + available shared library with that name (regardless of wheter it's + debug/profile/nothing). + + If none is still found, the tool looks for any available static + library with that name (regardless of any debug/profile/shared + flag). + + If still not found, the tool outputs the unmodified library name (as + in -lgnustep-base) ... perhaps the library is somewhere else in the + linker path ... otherwise that will normally result in a linker + error later on. + +*/ + +#include "config.h" + +#include <stdio.h> + +#if HAVE_SYS_TYPES_H +# include <sys/types.h> +#endif + +#if HAVE_STDLIB_H +# include <stdlib.h> +#endif + +#if HAVE_STRING_H +# include <string.h> +#endif + +#if HAVE_SYS_STAT_H +# include <sys/stat.h> +#endif + +#include <fcntl.h> + +#if HAVE_DIRENT_H +# include <dirent.h> +#else +# define dirent direct +# if HAVE_SYS_NDIR_H +# include <sys/ndir.h> +# endif +# if HAVE_SYS_DIR_H +# include <sys/dir.h> +# endif +# if HAVE_NDIR_H +# include <ndir.h> +# endif +#endif + + +/* determine filesystem max path length */ + +# include <limits.h> /* for PATH_MAX */ + +#ifdef _POSIX_VERSION +# include <utime.h> +#else +# if HAVE_SYS_PARAM_H +# include <sys/param.h> /* for MAXPATHLEN */ +# endif +#endif + +#ifndef PATH_MAX +# ifdef _POSIX_VERSION +# define PATH_MAX _POSIX_PATH_MAX +# else +# ifdef MAXPATHLEN +# define PATH_MAX MAXPATHLEN +# else +# define PATH_MAX 1024 +# endif +# endif +#endif + +#if HAVE_SYS_FILE_H +#include <sys/file.h> +#endif + +/* Extension used for shared and non-shared libraries. */ +char* libext = ".a"; +char* shared_libext = ".so"; + +/* If set to 1, all code will print out information about what it + does. */ +int show_all = 0; + +/* Strips off carriage returns, newlines and spaces at the end of the + string. (this removes some \r\n issues on Windows) */ +static void stripstr (unsigned char *s) +{ + unsigned len; + + if (s == NULL) + { + return; + } + + len = strlen (s); + + while (len > 0) + { + len--; + if (s[len] < 33) + { + s[len] = '\0'; + } + } +} + +/* Normalize the directory, and checks that it exists on disk and is a + directory. Return the normalized path, or NULL if the path does + not exist on disk, or is not a valid directory. */ +static char *normalize_and_check_dir (char *path) +{ + int length = strlen (path); + char *normalized_path = NULL; + struct stat statbuf; + +#ifdef __MINGW32__ + if (path[0] == '/' && path[1] == '/') + { + /* Convert //server/ to a format Windows functions understand. */ + char *s; + + /* Convert //server/path/to/ --> server/path/to/ */ + normalized_path = malloc (length * sizeof (char)); + strcpy (normalized_path, &(path[2])); + + /* Convert server/path/to/ --> server:/path/to/ */ + s = strchr (normalized_path, '/'); + if (s) + { + /* The index of the '/' after 'server' in the original path. */ + int index = 2 + (s - normalized_path); + + *s = ':'; + strcpy (s + 1, &(path[index])); + } + } + else +#endif + { + normalized_path = malloc ((length + 1) * sizeof (char)); + strcpy (normalized_path, path); + } + + /* Now check that the path exists and is a directory. */ + if (stat (normalized_path, &statbuf) < 0) + /* Error occured or dir doesn't exist */ + { + if (show_all) + { + fprintf (stderr, "Library path '%s' doesn't exist - ignored\n", + normalized_path); + } + free (normalized_path); + return NULL; + } + else if ((statbuf.st_mode & S_IFMT) != S_IFDIR) + /* Not a directory */ + { + if (show_all) + { + fprintf (stderr, "Library path '%s' isn't a directory - ignored\n", + normalized_path); + } + free (normalized_path); + return NULL; + } + + stripstr (normalized_path); + return normalized_path; +} + +/* Search for a library with library_name, suffix suffix and + extension ext. + + library_name must not contain the suffix, so library_name should + be something like 'gnustep-base'. + + suffix is the wanted suffix (valid suffixes are "", _d, _p, _s, + _ds, _dp, _ps, _dps). Must not be NULL. + + ext is the wanted extension (normally, either .so or .a). Must + not be NULL. + + Return 0 if it doesn't find anything matching. + + Return 1 if a library with the appropriate suffix/extension/type + matches in 'path' and print to stdout the name of the library. */ + +static int search_for_lib_with_suffix_and_ext (const char *library_name, + char **library_paths, + int paths_no, + char *suffix, + char *ext) +{ + /* Iterate over the library_paths, looking for the library. */ + int i; + + for (i = 0; i < paths_no; i++) + { + char full_filename[PATH_MAX + 1]; + struct stat statbuf; + + strcpy (full_filename, library_paths[i]); + strcat (full_filename, "/lib"); + strcat (full_filename, library_name); + strcat (full_filename, suffix); + strcat (full_filename, ext); + + if (show_all) + { + fprintf (stderr, " %s\n", full_filename); + } + + if (stat (full_filename, &statbuf) < 0) + /* Error - likely that file doesn't exist. */ + { + continue; + } + + if ((statbuf.st_mode & S_IFMT) == S_IFREG) + /* Found it! */ + { + if (show_all) + { + fprintf (stderr, " Found!\n"); + } + printf (" -l%s", library_name); + if (*suffix) + { + printf ("%s", suffix); + } + return 1; + } + } + + return 0; +} + +/* Search for a library with library_name, extension ext and any + valid suffix. + + The same comments as for 'search_for_lib_with_suffix_and_ext' apply, + except that any valid suffix is accepted (valid suffixes are: "", + _d, _p, _s, _ds, _dp, _ps, _dps). +*/ + +static int search_for_lib_with_ext (const char *library_name, + int library_name_len, + char **library_paths, + int paths_no, + char *ext) +{ + /* Iterate over the library_paths, looking for the library. */ + int i; + + for (i = 0; i < paths_no; i++) + { + DIR* dir; + struct dirent* dirbuf; + int found = 0; + + if (show_all) + { + fprintf (stderr, " %s/lib%s??%s\n", library_paths[i], + library_name, ext); + } + + dir = opendir (library_paths[i]); + + if (dir == NULL) + { + /* For some reasons, we can't read that path. Perhaps + someone removed the directory while we were running :-) */ + continue; + } + + while ((dirbuf = readdir (dir))) + { + /* Skip if it doesn't begin with 'lib'. This implicitly + skips "." and ".." in case they are returned. */ + if (dirbuf->d_name[0] != 'l') + { + continue; + } + if (dirbuf->d_name[1] != 'i') + { + continue; + } + if (dirbuf->d_name[2] != 'b') + { + continue; + } + + /* Skip if it does not match the library name. */ + if (strncmp (dirbuf->d_name + 3, library_name, library_name_len)) + { + continue; + } + else + { + int filelen, extlen; + + filelen = strlen (dirbuf->d_name); + extlen = strlen (ext); + + if (filelen - extlen <= 0) + { + /* Quite worrying this case. */ + continue; + } + + if (show_all) + { + fprintf (stderr, " Considering %s\n", dirbuf->d_name); + } + + /* First check if the extension matches */ + if (strcmp (dirbuf->d_name + filelen - extlen, ext)) + { + /* No luck, skip this file */ + continue; + } + + /* The extension matches. Check the last remaining bit + - that the remaining string we have not checked is + one of the allowed suffixes. The allowed suffixes + are: "", _d, _p, _s, _dp, _ds, _ps, _dps. */ + { + char f_suffix[5]; + int j; + int suffix_len = filelen - (3 /* 'lib' */ + + + library_name_len + /* library_name */ + + + extlen /* .so/.a */); + + switch (suffix_len) + { + /* In the following cases, 'break' means found, + 'continue' means not found. */ + case 0: + { + /* nothing - it's Ok. */ + break; + } + case 1: + { + continue; + } + case 2: + { + /* Must be one of _d, _p, _s */ + char c; + + if (dirbuf->d_name[3 + library_name_len] != '_') + { + continue; + } + + c = dirbuf->d_name[3 + library_name_len + 1]; + if (c != 'd' || c != 'p' || c != 's') + { + continue; + } + break; + } + case 3: + { + /* Must be one of _dp, _ds, _ps */ + char c, d; + + if (dirbuf->d_name[3 + library_name_len] != '_') + { + continue; + } + + c = dirbuf->d_name[3 + library_name_len + 1]; + d = dirbuf->d_name[3 + library_name_len + 2]; + if ((c == 'd' && (d == 'p' || d == 's')) + || (c == 'p' && d == 's')) + { + break; + } + continue; + } + case 4: + { + if (dirbuf->d_name[3 + library_name_len] != '_') + { + continue; + } + if (dirbuf->d_name[3 + library_name_len] != 'd') + { + continue; + } + if (dirbuf->d_name[3 + library_name_len] != 'p') + { + continue; + } + if (dirbuf->d_name[3 + library_name_len] != 's') + { + continue; + } + break; + } + default: + { + continue; + } + } + + /* If we're here, it's because it was found! */ + if (show_all) + { + fprintf (stderr, " Found!\n"); + } + + for (j = 0; j < suffix_len; j++) + { + f_suffix[j] = dirbuf->d_name[library_name_len + 3 + j]; + } + f_suffix[j] = '\0'; + printf (" -l%s%s", library_name, f_suffix); + found = 1; + break; + } + } + } + closedir (dir); + if (found) + { + return 1; + } + } + + return 0; +} + +/* Search for the library everywhere, and returns the library name. */ +static void output_library_name (const char *library_name, + char** library_paths, int paths_no, + int debug, int profile, int shared, + char *libname_suffix) +{ + char *extension = shared ? shared_libext : libext; + int library_name_len = strlen (library_name); + + if (show_all) + { + fprintf (stderr, "\n>>Library %s:\n", library_name); + } + + /* We first perform the search of a matching library in all dirs. */ + if (show_all) + { + fprintf (stderr, "Scanning all paths for an exact match\n"); + } + + if (search_for_lib_with_suffix_and_ext (library_name, + library_paths, paths_no, + libname_suffix, + extension)) + { + return; + } + + + /* The library was not found. Try various approximations first, + slightly messing the original debug/profile requests, but still + honouring the shared=yes|no requirement. */ + if (show_all) + { + fprintf (stderr, "Scanning all paths for an approximate match\n"); + } + + /* _dp case: try _d, then _p */ + if (debug && profile) + { + if (search_for_lib_with_suffix_and_ext (library_name, + library_paths, paths_no, + shared ? "_d" : "_ds", + extension)) + { + return; + } + + if (search_for_lib_with_suffix_and_ext (library_name, + library_paths, paths_no, + shared ? "_p" : "_ps", + extension)) + { + return; + } + } + + /* _d or _p: try nothing. */ + if ((debug && !profile) || (!debug && profile)) + { + if (search_for_lib_with_suffix_and_ext (library_name, + library_paths, paths_no, + shared ? "" : "_s", + extension)) + { + return; + } + } + + /* nothing: try _d. */ + if (!debug && !profile) + { + if (search_for_lib_with_suffix_and_ext (library_name, + library_paths, paths_no, + shared ? "_d" : "_ds", + extension)) + { + return; + } + } + + /* The library was still not found. Try to get whatever library we + have there. */ + + /* If a shared library is needed try to find a shared one first. + Any shared library is all right. */ + if (shared) + { + if (show_all) + { + fprintf (stderr, + "Scanning all paths for any shared lib with that name\n"); + } + if (search_for_lib_with_ext (library_name, library_name_len, + library_paths, paths_no, shared_libext)) + { + return; + } + } + + /* Last hope - return a static library with name 'library_name'. + Any static library is all right. */ + if (show_all) + { + fprintf (stderr, + "Scanning all paths for any static lib with that name\n"); + } + if (search_for_lib_with_ext (library_name, library_name_len, + library_paths, paths_no, libext)) + { + return; + } + + /* We couldn't locate the library. Output the library name we were + given, without any modification. Possibly it's somewhere else on + the linker path, otherwise (more likely) a linker error will + occur. Nothing we can do about it. */ + if (show_all) + { + fprintf (stderr, "Library not found, using unmodified library name\n"); + } + printf (" -l%s", library_name); + return; +} + +int main (int argc, char** argv) +{ + int i; + + /* Type of libraries we prefer. */ + int debug = 0; + int profile = 0; + int shared = 1; + + /* Suffix of the libraries we prefer - something like "" or "_d" or + "_dp" or "_ps" */ + char libname_suffix[5]; + + /* Array of strings that are the library paths passed on the command + line. If we are on Windows, we convert library paths to a format + that Windows functions understand before we save the paths in + library_paths, so that you could pass them to Windows functions + accessing the filesystem. We also check that the paths actually + exist on disk, and are directories, before putting them in the + array. */ + int paths_no = 0; + char** library_paths = NULL; + + /* The list of libraries */ + int libraries_no = 0; + char** all_libraries = NULL; + + /* Other flags which are printed to the output as they are. */ + int other_flags_no = 0; + char** other_flags = NULL; + + + +#ifdef __WIN32__ + setmode(1, O_BINARY); + setmode(2, O_BINARY); +#endif + + if (argc == 1) + { + printf ("usage: %s [-Lpath ...] -llibrary shared=yes|no debug=yes|no " + "profile=yes|no libext=string shared_libext=string " + "[show_all=yes]\n", argv[0]); + exit (1); + } + + for (i = 1; i < argc; i++) + { + /* First switch basing on the first letter of each argument, + then compare. */ + switch (argv[i][0]) + { + case '-': + { + if (argv[i][1] == 'l') + { + if (all_libraries) + { + all_libraries = realloc (all_libraries, + (libraries_no + 1) + * sizeof (char*)); + } + else + { + all_libraries = malloc ((libraries_no + 1) + * sizeof (char*)); + } + all_libraries[libraries_no] = malloc (strlen (argv[i]) - 1); + strcpy (all_libraries[libraries_no], argv[i] + 2); + stripstr (all_libraries[libraries_no]); + libraries_no++; + continue; + } + else if (argv[i][1] == 'L') + { + char *lib_path = normalize_and_check_dir (argv[i] + 2); + + /* Always print out the library search path flag, + regardless. */ + printf (" %s", argv[i]); + + if (lib_path != NULL) + { + if (library_paths) + { + library_paths = realloc (library_paths, + (paths_no + 1) + * sizeof (char*)); + } + else + { + library_paths = malloc ((paths_no + 1) + * sizeof(char*)); + } + library_paths[paths_no] = lib_path; + paths_no++; + } + continue; + } + break; + } + case 'd': + { + if (!strncmp (argv[i], "debug=", 6)) + { + debug = !strncmp (argv[i] + 6, "yes", 3); + continue; + } + break; + } + case 'l': + { + if (!strncmp (argv[i], "libext=", 7)) + { + libext = malloc (strlen (argv[i] + 7) + 1); + strcpy (libext, argv[i] + 7); + continue; + } + break; + } + case 'p': + { + if (!strncmp (argv[i], "profile=", 8)) + { + profile = !strncmp (argv[i] + 8, "yes", 3); + continue; + } + break; + } + case 's': + { + if (!strncmp (argv[i], "shared=", 7)) + { + shared = !strncmp (argv[i] + 7, "yes", 3); + continue; + } + else if (!strncmp (argv[i], "shared_libext=", 14)) + { + shared_libext = malloc (strlen (argv[i] + 14) + 1); + strcpy (shared_libext, argv[i] + 14); + continue; + } + else if (!strncmp (argv[i], "show_all=", 9)) + { + show_all = !strncmp (argv[i] + 9, "yes", 3); + continue; + } + break; + } + default: + break; + } + + /* The flag is something different; keep it in the `other_flags' */ + if (other_flags) + { + other_flags = realloc (other_flags, + (other_flags_no + 1) * sizeof (char*)); + } + else + { + other_flags = malloc ((other_flags_no + 1) * sizeof (char*)); + } + other_flags[other_flags_no] = malloc (strlen (argv[i]) + 1); + strcpy (other_flags[other_flags_no], argv[i]); + other_flags_no++; + } + + /* Determine the exact libname_suffix of the libraries we are + looking for. */ + libname_suffix[0] = '_'; + libname_suffix[1] = '\0'; + libname_suffix[2] = '\0'; + libname_suffix[3] = '\0'; + libname_suffix[4] = '\0'; + + i = 1; + + if (debug) + { + libname_suffix[i] = 'd'; + i++; + } + + if (profile) + { + libname_suffix[i] = 'p'; + i++; + } + + if (!shared) + { + libname_suffix[i] = 's'; + i++; + } + + if (i == 1) + { + libname_suffix[0] = '\0'; + } + + + if (show_all) + { + fprintf (stderr, ">>Input:\n"); + fprintf (stderr, "shared = %d\n", shared); + fprintf (stderr, "debug = %d\n", debug); + fprintf (stderr, "profile = %d\n", profile); + fprintf (stderr, "libname_suffix = %s\n", libname_suffix); + fprintf (stderr, "libext = %s\n", libext); + fprintf (stderr, "shared_libext = %s\n", shared_libext); + + fprintf (stderr, "library names:\n"); + for (i = 0; i < libraries_no; i++) + { + fprintf (stderr, " %s\n", all_libraries[i]); + } + + fprintf (stderr, "library paths:\n"); + for (i = 0; i < paths_no; i++) + { + fprintf (stderr, " %s\n", library_paths[i]); + } + + fprintf (stderr, "other flags:\n"); + for (i = 0; i < other_flags_no; i++) + { + fprintf (stderr, " %s\n", other_flags[i]); + } + } + + /* Now output the libraries. */ + for (i = 0; i < libraries_no; i++) + { + /* Search for the library, and print (using -l%s) the library + name to standard output. */ + output_library_name (all_libraries[i], library_paths, + paths_no, debug, profile, shared, libname_suffix); + } + + /* Output the other flags */ + for (i = 0; i < other_flags_no; i++) + { + printf (" %s", other_flags[i]); + } + + printf (" "); + + return 0; +}