mirror of
https://github.com/gnustep/tools-make.git
synced 2025-04-22 22:00:49 +00:00
Stable branch 2_0_0
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/tools/make/branches/stable@25025 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
commit
708e17e48a
180 changed files with 12 additions and 50726 deletions
10
ChangeLog
10
ChangeLog
|
@ -1,3 +1,13 @@
|
|||
2007-04-13 Adam Fedor <fedor@gnu.org>
|
||||
|
||||
* Version 2.0.0 (Updated)
|
||||
* Version: Revert reversion number
|
||||
* RELEASENOTES: Add to top dir
|
||||
|
||||
2007-04-12 Adam Fedor <fedor@gnu.org>
|
||||
|
||||
* Version: Bump version to 2.1.0
|
||||
|
||||
2007-04-12 Adam Fedor <fedor@gnu.org>
|
||||
|
||||
* Version 2.0.0
|
||||
|
|
|
@ -77,7 +77,7 @@ DOCUMENT_NAME = gnustep-howto faq filesystem internals machines make userfaq
|
|||
# The text documents to be generated
|
||||
DOCUMENT_TEXT_NAME = FAQ INSTALL README NEWS RELEASENOTES GNUstep-HOWTO ANNOUNCE
|
||||
|
||||
TOP_DOC_FILES = FAQ INSTALL README NEWS GNUstep-HOWTO ANNOUNCE
|
||||
TOP_DOC_FILES = FAQ INSTALL README NEWS RELEASENOTES GNUstep-HOWTO ANNOUNCE
|
||||
README_FILES = README.Darwin README.MinGWOnCygwin README.Cygwin \
|
||||
README.MinGW
|
||||
|
||||
|
@ -131,7 +131,7 @@ NEWS_DOC_INSTALL_DIR = Developer/Make/ReleaseNotes/$(GNUSTEP_MAKE_VERSION)
|
|||
|
||||
RELEASENOTES_TEXI_FILES = version.texi
|
||||
RELEASENOTES_TEXT_MAIN = releasenotes.texi
|
||||
RELEASENOTES_DOC_INSTALL_DIR = Developer/Make/ReleaseNotes/$(GNUSTEP_MAKE_VERSION)
|
||||
RELEASENOTES_DOC_INSTALL_DIR = Developer/Make/ReleaseNotes
|
||||
|
||||
README_TEXI_FILES = version.texi
|
||||
README_TEXT_MAIN = readme.texi
|
||||
|
|
|
@ -1,16 +0,0 @@
|
|||
config.log
|
||||
config.make
|
||||
config-noarch.make
|
||||
config.cache
|
||||
GNUmakefile
|
||||
GNUstep.sh
|
||||
GNUstep.csh
|
||||
config.h
|
||||
config.status
|
||||
openapp
|
||||
debugapp
|
||||
executable.template
|
||||
opentool
|
||||
gnustep-make.spec
|
||||
fixpath.sh
|
||||
GNUstep.conf
|
|
@ -1,79 +0,0 @@
|
|||
1 Announcement
|
||||
**************
|
||||
|
||||
The GNUstep Makefile Package version 2.0.0 is now available.
|
||||
|
||||
1.1 What is the GNUstep makefile package?
|
||||
=========================================
|
||||
|
||||
The makefile package is a simple, powerful and extensible way to write
|
||||
makefiles for a GNUstep-based project. It allows the user to write a
|
||||
project without having to deal with the complex issues associated with
|
||||
configuration, building, installation, and packaging. It also allows
|
||||
the user to easily create cross-compiled binaries.
|
||||
|
||||
1.2 Changes in version `2.0.0'
|
||||
==============================
|
||||
|
||||
The Makefile package has had a major makover which befits a major
|
||||
version update. The most user-visible change of this is customized
|
||||
filesystem support. GNUstep can now be configured and installed using
|
||||
any of many typical filesystem layouts, including FHS, Mac, and the
|
||||
traditional GNUstep layout.
|
||||
|
||||
Due to this change a number of variable names have been changed or
|
||||
deprecated. If you are a developer maintaining makefiles, you should
|
||||
check your makefiles for these variables. Most notibly, variabels such
|
||||
as `GNUSTEP_SYSTEM_ROOT' no longer make any sense, as various
|
||||
directories that were previously in a traditional GNUstep system root
|
||||
directory exist accross multiple directories in disparate places in
|
||||
other filesystem layouts.
|
||||
|
||||
If you are a user or developer that is just installing GNUstep, read
|
||||
the `GNUstep-HOWTO' and `INSTALL' documents to find out new information
|
||||
about configuring and installing make.
|
||||
|
||||
If you are a developer, read the files `filesystem' and `make' for
|
||||
information on new and changed variables. Read the `releasenotes' file
|
||||
for specific changes in this release and updates you will need to make
|
||||
to work with this version of make.
|
||||
|
||||
Various changes include:
|
||||
* New configure option `--with-layout' to choose different
|
||||
filesystem layouts.
|
||||
|
||||
* All applications use the `.app' extension even when compiled with
|
||||
debugging or profiling.
|
||||
|
||||
* Precompiled header support added using
|
||||
xxx_OBJC_PRECOMPILED_HEADERS.
|
||||
|
||||
* gnustep-config is a program which prints out information on the
|
||||
GNUstep filesystem and variables (Similar to programs like
|
||||
pkg-config).
|
||||
|
||||
* Applications can be started now just using their name (by
|
||||
installing a wrapper in the tools directory).
|
||||
|
||||
* Versioning of Microsoft Windows DLLs implemented.
|
||||
|
||||
* Use of `GNUSTEP_SYSTEM_ROOT' and similar variables deprecated. Use
|
||||
instead `GNUSTEP_INSTALLATION_DOMAIN' and `SYSTEM' or `LOCAL'
|
||||
|
||||
* Implement use of GNU standard `DESTDIR' variable.
|
||||
|
||||
* Object files are now placed in the `obj' directory.
|
||||
|
||||
* Static and profile libraries have the same name as normal
|
||||
libraries.
|
||||
|
||||
1.3 Obtaining gnustep-make
|
||||
==========================
|
||||
|
||||
You can get the gstep-make-2.0.0.tar.gz distribution file at
|
||||
`ftp://ftp.gnustep.org/pub/gnustep/core'
|
||||
|
||||
Please log bug reports on the GNUstep project page
|
||||
`http://savannah.gnu.org/bugs/?group=gnustep' or send bug reports to
|
||||
<bug-gnustep@gnu.org>.
|
||||
|
340
trunk/COPYING
340
trunk/COPYING
|
@ -1,340 +0,0 @@
|
|||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
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.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) 19yy <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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.
|
||||
|
||||
<signature of Ty Coon>, 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.
|
4307
trunk/ChangeLog
4307
trunk/ChangeLog
File diff suppressed because it is too large
Load diff
7067
trunk/ChangeLog.1
7067
trunk/ChangeLog.1
File diff suppressed because it is too large
Load diff
|
@ -1,22 +0,0 @@
|
|||
GNUmakefile
|
||||
version.texi
|
||||
*.log
|
||||
*.dvi
|
||||
*.ps
|
||||
*.html
|
||||
*.info
|
||||
*.aux
|
||||
*.toc
|
||||
*.cp
|
||||
*.fn
|
||||
*.vr
|
||||
*.tp
|
||||
*.ky
|
||||
*.pg
|
||||
*.vrs
|
||||
*.gz
|
||||
INSTALL
|
||||
README
|
||||
NEWS
|
||||
GNUstep-HOWTO
|
||||
internals
|
|
@ -1,47 +0,0 @@
|
|||
|
||||
# Workaround for a bug in latex2html which does not seem to
|
||||
# manage the \tableofcontents command correctly
|
||||
&ignore_commands( <<_IGNORED_CMDS_);
|
||||
tableofcontents
|
||||
_IGNORED_CMDS_
|
||||
|
||||
$ASCII_MODE = 1;
|
||||
|
||||
$BODYTEXT = "BGCOLOR=\"\#FFFFFF\" text=\"\#000000\" link=\"\#0000FF\" vlink=\"\#4444FF\" alink=\"\#3388FF\"";
|
||||
|
||||
$SHOW_SECTION_NUMBERS = 1;
|
||||
|
||||
$MAX_SPLIT_DEPTH = 4;
|
||||
|
||||
$INFO = "
|
||||
<P>
|
||||
Copyright (C) 2000, 2001 Free Software Foundation, Inc.
|
||||
<P>
|
||||
Permission is granted to make and distribute verbatim copies of this
|
||||
manual provided the copyright notice and this permission notice are
|
||||
preserved on all copies.
|
||||
<P>
|
||||
Permission is granted to copy and distribute modified versions of this
|
||||
manual under the conditions for verbatim copying, provided that the
|
||||
entire resulting derived work is distributed under the terms of a
|
||||
permission notice identical to this one.
|
||||
<P>
|
||||
Permission is granted to copy and distribute translations of this
|
||||
manual into another language, under the above conditions for modified
|
||||
versions.
|
||||
";
|
||||
|
||||
|
||||
sub top_navigation_panel {
|
||||
($NEXT_TITLE ? "<B> Next: $NEXT_TITLE </B>\n" : undef) .
|
||||
($UP_TITLE ? "<B>Up: $UP_TITLE </B>\n" : undef) .
|
||||
($PREVIOUS_TITLE ? "<B> Previous: $PREVIOUS_TITLE </B>\n" : undef) .
|
||||
"<BR> <P>\n"
|
||||
}
|
||||
|
||||
sub bot_navigation_panel {
|
||||
"<HR>".
|
||||
($NEXT_TITLE ? "<B> Next: $NEXT_TITLE </B>\n" : undef) .
|
||||
($UP_TITLE ? "<B>Up: $UP_TITLE </B>\n" : undef) .
|
||||
($PREVIOUS_TITLE ? "<B> Previous: $PREVIOUS_TITLE </B>\n" : undef)
|
||||
}
|
|
@ -1,486 +0,0 @@
|
|||
[Important: this is mostly a historical document.]
|
||||
|
||||
A makefile package for the GNUstep environment
|
||||
==============================================
|
||||
|
||||
This document presents a makefile package for the GNUstep
|
||||
environment. It describes what are the goals the GNUstep environment
|
||||
should achieve and then presents some solutions.
|
||||
|
||||
Goals
|
||||
=====
|
||||
|
||||
There are several issues we tried to solve while designing a directory
|
||||
structure and the configuration/make procedures required to build a
|
||||
package.
|
||||
|
||||
We tried to define a directory structure for keeping all the GNUstep
|
||||
related files. This structure makes the things more consistent and the
|
||||
configuration and compile process of various GNUstep packages more
|
||||
easier.
|
||||
|
||||
An important issue is to let to a package the ability to deal with
|
||||
various libraries and configurations available now:
|
||||
|
||||
* different Objective-C runtimes. In the Objective-C world there are
|
||||
currently two major runtimes: the NeXT runtime and the GNU
|
||||
runtime. They are different in several respects and a program or
|
||||
library that works at the runtime level should be aware of them.
|
||||
|
||||
* different Foundation libraries. There are several Foundation libraries
|
||||
an OpenStep application can be written on top of: NeXT Foundation
|
||||
library which runs on NeXTStep/OPENSTEP systems, PDO (Portable
|
||||
Distributed Objects) which runs on a variety of Unix systems,
|
||||
gnustep-base and libFoundation.
|
||||
|
||||
* different graphical interfaces. Until now two libraries provide or
|
||||
try to provide OpenStep compliant systems: the AppKit from NeXT and
|
||||
the GNUstep graphical libraries.
|
||||
|
||||
The makefile package should be a simplistic, powerful and extensible
|
||||
way to write makefiles for a GNUstep project. It should allow the user
|
||||
to easily specify a library combination he/she wants to use when
|
||||
compiling a project. Also it should allow the user to easily create
|
||||
cross-compiled binaries.
|
||||
|
||||
Library combinations
|
||||
====================
|
||||
|
||||
If an application wants to work with all the possible combinations it
|
||||
will have to provide different binaries for each combination because
|
||||
it's not possible to have an application compiled for NeXT PDO that
|
||||
runs with gnustep-base or vice-versa. To summarize, an application can
|
||||
be compiled for these combinations:
|
||||
|
||||
Objective-C runtime: NeXT, GNU
|
||||
Foundation library: NeXT, PDO, gnustep-base, libFoundation
|
||||
GUI library: NeXT, gnustep-gui
|
||||
|
||||
Objective-C runtime: nx (for NeXT), gnu (for GNU)
|
||||
Foundation library: nx (for NeXT), pdo (for PDO), gnu (for gnustep-base),
|
||||
fd (for libFoundation)
|
||||
GUI library: nx (for NeXT), gnu (for gnustep-gui)
|
||||
|
||||
We'll denote the fact that an application was compiled for a certain
|
||||
combination of the above values by using the abbreviations of the
|
||||
different subsystems and placing dashes between them. For example
|
||||
an application compiled for NeXT Foundation using NeXT AppKit will
|
||||
have the compile attribute nx-nx-nx. An application compiled for
|
||||
PDO with the gnustep-gui library under Unix will be denoted by
|
||||
nx-pdo-gnu and another one compiled for gnustep-base using
|
||||
gnustep-gui under Unix will be denoted by gnu-gnu-gnu. Here is a
|
||||
list of some of the possible combinations:
|
||||
|
||||
ObjC runtime Foundation GUI
|
||||
------------ ---------- ---
|
||||
nx nx nx
|
||||
nx pdo nx
|
||||
nx pdo gnu
|
||||
gnu gnu gnu
|
||||
gnu gnu gnu
|
||||
nx fd gnu
|
||||
gnu fd gnu
|
||||
|
||||
Note that one can choose his/her own packages to build; it is not
|
||||
required to have all the packages installed on the system. Not having
|
||||
all of them installed limits only the ability to build and distribute
|
||||
binaries for those missing combinations.
|
||||
|
||||
Directory structure
|
||||
===================
|
||||
|
||||
There are several directories used in a GNUstep environment. The
|
||||
directories are relative to a top directory whose name is given by the
|
||||
variable GNUSTEP_SYSTEM_ROOT ($GNUSTEP_SYSTEM_ROOT in a shell or
|
||||
$(GNUSTEP_SYSTEM_ROOT) in a makefile). Below is the hierarchy of
|
||||
GNUstep directories:
|
||||
|
||||
$(GNUSTEP_SYSTEM_ROOT)/
|
||||
Headers/
|
||||
Libraries/
|
||||
Applications/
|
||||
Tools/
|
||||
|
||||
The Headers/ and Libraries/ directories, as their names suggest, keep
|
||||
the header files and the libraries required by a GNUstep project to
|
||||
compile and link. The libraries can be both shared or static,
|
||||
depending on the target system.
|
||||
|
||||
The Applications/ directory is used by GNUstep graphical applications,
|
||||
those applications which have a graphical interface with the user. The
|
||||
Tools/ directory holds command line tools based on GNUstep libraries.
|
||||
|
||||
The header files are grouped like this in the Headers/ directory:
|
||||
|
||||
Headers/
|
||||
gnustep/
|
||||
base/
|
||||
Foundation -> base
|
||||
gui/
|
||||
AppKit -> gui
|
||||
libFoundation/
|
||||
Foundation/
|
||||
|
||||
The Libraries/ directory can hold libraries for several machines and
|
||||
several combinations of packages:
|
||||
|
||||
Libraries/
|
||||
i386/
|
||||
linux-gnu/
|
||||
gnu-gnu-gnu/
|
||||
libgnustep-base.so
|
||||
libgnustep-gui.so
|
||||
gnu-fd-gnu/
|
||||
libFoundation.so
|
||||
libgnustep-gui.so
|
||||
sparc/
|
||||
solaris-2.5.1/
|
||||
nx-pdo-gnu/
|
||||
libgnustep-gui.so
|
||||
|
||||
Please note that the Libraries/ directory contains only the libraries
|
||||
that come with GNUstep, the PDO library for example is not inside
|
||||
Libraries/. The compiler has to know where that library can be found,
|
||||
although the makefile package is responsible for passing all the
|
||||
necessary flags during compiling and linking.
|
||||
|
||||
The libraries directory also contains resource files which belong to
|
||||
the GNUstep libraries, such as images and printer description
|
||||
files. Since the images can look different for different backends,
|
||||
each backend has its own images in a different directory based upon
|
||||
the interface look and feel:
|
||||
|
||||
Libraries/
|
||||
Resources/
|
||||
Images/
|
||||
NeXT/
|
||||
Win32/
|
||||
PrinterTypes/
|
||||
Fonts/
|
||||
gnustep/
|
||||
NSCharacterSets/
|
||||
libFoundation/
|
||||
CharacterSets/
|
||||
Defaults/
|
||||
TimeZoneInfo/
|
||||
|
||||
The resources that are specific to each Foundation libraries are kept
|
||||
in a subdirectory like above, except for NeXT Foundation and PDO which
|
||||
keep their resources in their own places.
|
||||
|
||||
The Applications/ directory contains GNUstep graphical
|
||||
applications. Each application is kept in an app wrapper which
|
||||
contains all the binaries and all the resource files the application
|
||||
needs. The binaries organization resembles the one from libraries:
|
||||
|
||||
Applications/
|
||||
InterfaceModeller.app/
|
||||
InterfaceModeller (for OPENSTEP systems compatibility)
|
||||
i386/
|
||||
linux-gnu/
|
||||
gnu-gnu-gnu/
|
||||
InterfaceModeller
|
||||
sparc/
|
||||
solaris-2.5.1/
|
||||
nx-pdo-gnu/
|
||||
InterfaceModeller
|
||||
|
||||
The Tools/ directory contains command line tools. Each tool
|
||||
executable is placed in a subdirectory corresponding to the CPU and
|
||||
operating system.
|
||||
|
||||
Tools/
|
||||
i386/
|
||||
linux-gnu/
|
||||
autoconf
|
||||
gcc
|
||||
dgs
|
||||
sparc/
|
||||
solaris-2.5.1/
|
||||
autoconf
|
||||
gcc
|
||||
|
||||
|
||||
The makefile package
|
||||
====================
|
||||
|
||||
The GNUstep environment needs a makefile package whose purpose is to
|
||||
simplify writing a GNUstep project. This package should help
|
||||
developers easily write makefiles for compiling their projects.
|
||||
|
||||
Theoretically an OpenStep application should only use OpenStep API, it
|
||||
should not rely at all on system specific header files. This is the
|
||||
most portable way to write an OpenStep application. For this kind of
|
||||
applications configuring is not necessary since no system specific
|
||||
header files or libraries need to be checked. The idea is to try
|
||||
eliminate the configuring process because of the problems it has in
|
||||
the presence of cross-compiling. Not relying on system files in a
|
||||
GNUstep project means that you don't need to check for them, so the
|
||||
project can simply be compiled by just typing `make'.
|
||||
|
||||
This is the best scenario for a GNUstep package. If configuring is
|
||||
still needed the makefile package should support it without major
|
||||
changes.
|
||||
|
||||
We identified until now the following types of projects:
|
||||
|
||||
- application: for projects whose result are graphical GNUstep applications
|
||||
- tool: for command line programs which use GNUstep libraries
|
||||
- library: for creating libraries (both static and shared)
|
||||
- bundle: for creating a dynamically loaded bundle
|
||||
- aggregate: for projects that contain several other subprojects like
|
||||
libraries, bundles and so on
|
||||
|
||||
Another possible type of project could be "pallete", for adding
|
||||
functionality to the GNUstep InterfaceModeller application. Other
|
||||
project types can be added as well, the makefile package does not
|
||||
limit this in any way.
|
||||
|
||||
A project consists from a collection of source code files and resource
|
||||
files. If a project has several subdirectories, those subdirectories
|
||||
are subprojects of the main project. A subproject type is not
|
||||
restricted in any way by the type of the project it's contained
|
||||
into. The only restriction is that you can not create multiple project
|
||||
types from the files in the same directory.
|
||||
|
||||
For a project that does not need any additional configuring before
|
||||
compiling the only thing required to build the project should be
|
||||
typing
|
||||
|
||||
$ make
|
||||
|
||||
in the command line :-).
|
||||
|
||||
Where the object files go
|
||||
=========================
|
||||
|
||||
The object files will go in a separate directory identified by the
|
||||
name of the target system and of the development environment used
|
||||
(ObjC runtime, Foundation library and GUI libraries). This way one can
|
||||
use the same source tree for building the project for multiple
|
||||
targets.
|
||||
|
||||
How to choose the library combination
|
||||
=====================================
|
||||
|
||||
The makefile package will allow the user to choose between different
|
||||
library combinations. To specify a combination you want to compile for
|
||||
just type:
|
||||
|
||||
$ make library_combo="library combination"
|
||||
|
||||
For instance if you want to choose to compile using the NeXT's PDO
|
||||
Foundation and use the GNUstep GUI library on a Unix machine you can
|
||||
do like this:
|
||||
|
||||
$ make library_combo=nx-pdo-gnu
|
||||
|
||||
|
||||
Projects that require running configure before compiling
|
||||
========================================================
|
||||
|
||||
There are two issues with this kind of projects. 'configure' is used
|
||||
to determine the existence of particular header files and/or of some
|
||||
specific functionality in the system header files. This thing is
|
||||
usually done by creating a config.h file which contains a couple of
|
||||
defines like HAVE_... which say if the checked functionality is
|
||||
present or not.
|
||||
|
||||
Another usage of configure is to determine some specific libraries to
|
||||
link against to and/or some specific tools. A typical GNUstep program
|
||||
is not required to check for additional libraries because this step is
|
||||
done by the time the makefile package is installed. If the project
|
||||
still needs to check for additional libraries and/or tools, the
|
||||
recommended way is to output a config.mak file which is included by
|
||||
the main makefile, instead of using Makefile.in files which are
|
||||
modified by configure. The reason for not doing this is to avoid
|
||||
having the Makefiles contain target dependencies like above, this way
|
||||
keeping only one makefile instead of several for each target machine.
|
||||
|
||||
The makefile package will be written for GNU make because it provides
|
||||
some very powerful features that save time both in writing the package
|
||||
but also at runtime, when you compile a project.
|
||||
|
||||
How to build a package for different architectures
|
||||
==================================================
|
||||
|
||||
In order to build a project for multiple architectures you'll need the
|
||||
development environment for the target machine installed on your
|
||||
machine. This includes a cross-compiler together with all the
|
||||
additional tools like the assembler and linker, the target header
|
||||
files and all the libraries you need.
|
||||
|
||||
The GNUstep makefile package should be able to compile and link an
|
||||
application for another machine just by typing
|
||||
|
||||
$ make target="target machine"
|
||||
|
||||
where "target machine" is the canonical system name as reported by
|
||||
config.guess.
|
||||
|
||||
Building different types of a project
|
||||
=====================================
|
||||
|
||||
During development you usually need to switch between a debug version and a
|
||||
profile one without having to recompile all of the sources. The makefile
|
||||
package allows you to do this by letting you define three boolean make
|
||||
variables. The values of these variables can be either "yes" or "no".
|
||||
|
||||
* debug
|
||||
|
||||
If the value is yes then it is assumed that the target is to be built with
|
||||
debugging info. By default the optimization is turned on but you can control
|
||||
this behavior via the OPTFLAGS make variable. The default is no.
|
||||
|
||||
* shared
|
||||
|
||||
It makes sense to specify this only for library targets. This variable says
|
||||
if the target needs to be built as a shared library. On systems that support
|
||||
shared libraries this is the default; the user has to explicitly specify
|
||||
shared=no in the command line.
|
||||
|
||||
* profile
|
||||
|
||||
When this variable is yes, a profile version of the target is built. The
|
||||
default is no.
|
||||
|
||||
For example if you want to build a shared library with debug information
|
||||
enabled but no profile information, the command line would be:
|
||||
|
||||
$ make shared=yes debug=yes profile=no
|
||||
|
||||
The last argument is not necessary because the default is to build a version
|
||||
without profile information.
|
||||
|
||||
The object files will be output into the shared_debug_obj directory. If the
|
||||
profile is turned on the output directory would be shared_profile_debug_obj.
|
||||
|
||||
Of course you also have to specify the library combo if it's different than the
|
||||
default.
|
||||
|
||||
Naming conventions of the libraries
|
||||
===================================
|
||||
|
||||
Sometimes you need to have different versions of a library compiled with
|
||||
different options. Suppose you want to compile a library with profiling
|
||||
information enabled so that you can profile your code. But you don't want to
|
||||
overwrite your existing installed library so that only some of the applications
|
||||
will work with the profile library, the rest will still use the normal library.
|
||||
|
||||
The makefile package supports such a schema by having different names for
|
||||
different types of the same library. This works by appending an underscore
|
||||
after the name of the library followed by a letter which indicates the type of
|
||||
the library:
|
||||
|
||||
's' for a static library
|
||||
'p' for a profile library
|
||||
'd' for a debug library
|
||||
|
||||
So for example if you have the library 'example' compiled with debug
|
||||
information as a shared library it would be named libexample_d.so. If the same
|
||||
library is compiled as a static library its name would be named
|
||||
libexample_sd.a. The reason why the 's' letter for the static library appears
|
||||
in name of the library is for systems where the extensions of libraries don't
|
||||
matter.
|
||||
|
||||
It is possible to compile a library with whatever combination of flags you
|
||||
want. The letters are appended in the order specified above, so if you compile
|
||||
the library as a static library, with profile and debug information enabled,
|
||||
the library name will have the _spd suffix appended.
|
||||
|
||||
How a library is chosen
|
||||
=======================
|
||||
|
||||
What happens if you compile an application with profile enabled and you don't
|
||||
have a library compiled with profile info into it, but you do have a normal
|
||||
library installed? It would be great if the normal library is chosen instead.
|
||||
This is a problem because the library that should be chosen has a different
|
||||
name than the profile library.
|
||||
|
||||
We do support this schema by requiring the libraries to be specified using the
|
||||
short name, without any suffix appended to it. The `example' library in our
|
||||
case should be passed to the linker using -lexample, and not using -lexample_p.
|
||||
Based upon the shared, profile and debug variables, the makefile package will
|
||||
identify which are the libraries that exist on the system and it will come with
|
||||
the correct names when linking.
|
||||
|
||||
The search order of libraries depending on what type of library is required is
|
||||
as follows. First of all an exact match is searched; if one is found it is
|
||||
returned. If either debug or profile are required, a library that matches at
|
||||
least one of these attributes is returned. For example if there is a
|
||||
profile+debug version of a library but only debug is required this library will
|
||||
match. If a static version is required but no static versions of the library
|
||||
exist, then no library is chosen; in this case the system simply prints out the
|
||||
name of the library, assuming a static library is somewhere else in the
|
||||
libraries search path of the linker.
|
||||
|
||||
Building applications
|
||||
=====================
|
||||
|
||||
In the makefile's package terminology an application is a program linked
|
||||
against the GUI libraries.
|
||||
|
||||
An application is built as usualy, by compiling all of the sources and then
|
||||
linking the object files into the binary. The only difference between
|
||||
an application and any other project results is that the first is created into
|
||||
its own directory, instead of being a simple file. This directory is called
|
||||
the application wrapper and it contains the binaries for various architectures
|
||||
and resources needed by the application.
|
||||
|
||||
The name of the application wrapper is taken to be the name of the application
|
||||
with the following extensions:
|
||||
|
||||
.profile - if the application has been built with profile enabled
|
||||
.debug - if the application has been built with debug enabled
|
||||
.app - if the application has been built without debug or profile enabled
|
||||
|
||||
If both debug and profile are enabled, the application extension will simply
|
||||
have the .profile extension. This is different from libraries were both options
|
||||
are reflected into the library's name.
|
||||
|
||||
The structure of makefiles
|
||||
==========================
|
||||
|
||||
The makefile package should be built so that a user project will only
|
||||
have to define what are the Objective-C files he/she uses, what are
|
||||
the C files, the header files and so on. All the rules that know how
|
||||
to build a library, an application or whatever type of project are
|
||||
defined in the internal files of the makefile package.
|
||||
|
||||
This organization has several advantages. The main advantage is that
|
||||
we keep the makefiles in a GNUstep project small, only the makefile
|
||||
variable definitions. The other advantage is that all the build
|
||||
knowledge is centralized in a single place, the makefile
|
||||
package. Right now each GNUstep package tries to solve all of the
|
||||
issues related to the package building and nothing is reusable.
|
||||
|
||||
The way the main makefile of a project should be written requires the
|
||||
user to specify the files needed by the make process and what kind of
|
||||
project needs to be built. This is defined by including a certain
|
||||
makefile package file. For example if the package to be built is an
|
||||
application then a possible Makefile can look like this:
|
||||
|
||||
APP_NAME = test1 test2
|
||||
test1_OBJC_FILES = test1.m
|
||||
test2_OBJC_FILES = test2.m test21.m
|
||||
|
||||
-include Makefile.preamble
|
||||
include application.make
|
||||
-include Makefile.postamble
|
||||
|
||||
|
||||
The main makefile will be generated automatically in the future by the
|
||||
ProjectCenter. This presents problems if the user wants to add his/her
|
||||
own makefiles targets or additional rules. Two additional files are
|
||||
provided: Makefile.preamble and Makefile.postamble. The first file is
|
||||
included before the makefile for the specific project type and is
|
||||
intended for redefining the standard variables or for adding to
|
||||
them. The second one is intended for adding additional rules or
|
||||
targets.
|
||||
|
||||
The makefile package is installed under $(GNUSTEP_SYSTEM_ROOT)/Library/Makefiles.
|
||||
|
||||
|
||||
Ovidiu Predescu
|
||||
|
||||
Last updated: April, 2001
|
|
@ -1,211 +0,0 @@
|
|||
#
|
||||
# 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, the run make again passing
|
||||
# GNUSTEP_MAKEFILES set to point to the new makefile installation
|
||||
|
||||
# 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 regenerate: ./tmp-installation/System/Library/Makefiles
|
||||
@echo "** Running 'make $@' using the local/temporary gnustep-make installation **"
|
||||
$(MAKE) $@ GNUSTEP_MAKEFILES="$(CURRENT_DIR)/tmp-installation/System/Library/Makefiles"
|
||||
|
||||
CURRENT_DIR = $(shell pwd)
|
||||
|
||||
# This creates a local temporary installation of GNUstep-make
|
||||
./tmp-installation/System/Library/Makefiles:
|
||||
@echo "** No gnustep-make installation found, attempting to create a local/temporary one. **"
|
||||
(mkdir tmp-build; \
|
||||
cd tmp-build; \
|
||||
../../configure --prefix="$(CURRENT_DIR)/tmp-installation" \
|
||||
--with-config-file="$(CURRENT_DIR)/tmp-installation/GNUstep.conf"; \
|
||||
make; \
|
||||
make install)
|
||||
|
||||
distclean:
|
||||
-(if [ -f ./tmp-installation/System/Library/Makefiles/common.make ]; then \
|
||||
$(MAKE) $@ GNUSTEP_MAKEFILES="$(CURRENT_DIR)/tmp-installation/System/Library/Makefiles"; \
|
||||
fi)
|
||||
rm -Rf tmp-installation tmp-build
|
||||
|
||||
else
|
||||
|
||||
# We have a gnustep-make installation to use. The following is a
|
||||
# normal gnustep-make GNUmakefile for documentation.
|
||||
|
||||
# We normally install into System
|
||||
GNUSTEP_INSTALLATION_DOMAIN = SYSTEM
|
||||
|
||||
include $(GNUSTEP_MAKEFILES)/common.make
|
||||
|
||||
# The documents to be generated
|
||||
|
||||
# FIXME: We should prefix everything with 'gnustep' because we
|
||||
# generate info files that we then put into the standard info
|
||||
# directories, and we don't want those to conflict with info files
|
||||
# from other packages! For example, 'info make' should return GNU
|
||||
# make documentation, while 'info gnustep-make' should return
|
||||
# GNUstep-make documentation. At the moment they would have the same
|
||||
# name instead, giving rise to unpleasant consequences! For example
|
||||
# in a default installation, 'info make' would return gnustep-make
|
||||
# documentation (instead of GNU make one) because the INFOPATH is used
|
||||
# before built-in paths!
|
||||
DOCUMENT_NAME = gnustep-howto faq filesystem internals machines make userfaq
|
||||
|
||||
# The text documents to be generated
|
||||
DOCUMENT_TEXT_NAME = FAQ INSTALL README NEWS RELEASENOTES GNUstep-HOWTO ANNOUNCE
|
||||
|
||||
TOP_DOC_FILES = FAQ INSTALL README NEWS RELEASENOTES GNUstep-HOWTO ANNOUNCE
|
||||
README_FILES = README.Darwin README.MinGWOnCygwin README.Cygwin \
|
||||
README.MinGW
|
||||
|
||||
|
||||
GNUstep-HOWTO_TEXI_FILES = version.texi
|
||||
GNUstep-HOWTO_TEXT_MAIN = gnustep-howto.texi
|
||||
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)
|
||||
|
||||
RELEASENOTES_TEXI_FILES = version.texi
|
||||
RELEASENOTES_TEXT_MAIN = releasenotes.texi
|
||||
RELEASENOTES_DOC_INSTALL_DIR = Developer/Make/ReleaseNotes
|
||||
|
||||
README_TEXI_FILES = version.texi
|
||||
README_TEXT_MAIN = readme.texi
|
||||
README_DOC_INSTALL_DIR = Developer/Make/ReleaseNotes/$(GNUSTEP_MAKE_VERSION)
|
||||
|
||||
ANNOUNCE_TEXI_FILES = version.texi
|
||||
ANNOUNCE_TEXT_MAIN = announce.texi
|
||||
ANNOUNCE_DOC_INSTALL_DIR = Developer/Make/ReleaseNotes/$(GNUSTEP_MAKE_VERSION)
|
||||
|
||||
# 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_DOC)/Developer/Make/Manual $(GNUSTEP_DOC)/User/GNUstep
|
||||
$(INSTALL_DATA) DESIGN $(GNUSTEP_DOC)/Developer/Make/Manual
|
||||
for file in $(README_FILES); do \
|
||||
$(INSTALL_DATA) $$file $(GNUSTEP_DOC)/User/GNUstep/$$file; \
|
||||
done;
|
||||
if [ ! -f $(GNUSTEP_DOC_MAN) ]; then \
|
||||
$(MKDIRS) $(GNUSTEP_DOC_MAN); \
|
||||
fi; \
|
||||
if [ ! -f $(GNUSTEP_DOC_MAN)/man1 ]; then \
|
||||
$(MKDIRS) $(GNUSTEP_DOC_MAN)/man1; \
|
||||
fi; \
|
||||
for file in $(MAN1_PAGES) __done; do \
|
||||
if [ $$file != __done ]; then \
|
||||
$(INSTALL_DATA) $$file $(GNUSTEP_DOC_MAN)/man1/$$file; \
|
||||
which gzip && rm -f $(GNUSTEP_DOC_MAN)/man1/$$file.gz \
|
||||
&& gzip -9 $(GNUSTEP_DOC_MAN)/man1/$$file; \
|
||||
fi; \
|
||||
done;
|
||||
if [ ! -f $(GNUSTEP_DOC_MAN)/man7 ]; then \
|
||||
$(MKDIRS) $(GNUSTEP_DOC_MAN)/man7; \
|
||||
fi; \
|
||||
for file in $(MAN7_PAGES) __done; do \
|
||||
if [ $$file != __done ]; then \
|
||||
$(INSTALL_DATA) $$file $(GNUSTEP_DOC_MAN)/man7/$$file; \
|
||||
which gzip && rm -f $(GNUSTEP_DOC_MAN)/man7/$$file.gz \
|
||||
&& gzip -9 $(GNUSTEP_DOC_MAN)/man7/$$file; \
|
||||
fi; \
|
||||
done;
|
||||
|
||||
# Uninstall manually man pages
|
||||
after-uninstall::
|
||||
rm -f $(GNUSTEP_DOC)/Developer/Make/Manual/DESIGN
|
||||
for file in $(MAN1_PAGES) __done; do \
|
||||
if [ $$file != __done ]; then \
|
||||
rm -f $(GNUSTEP_DOC_MAN)/man1/$$file; \
|
||||
fi; \
|
||||
done;
|
||||
for file in $(MAN7_PAGES) __done; do \
|
||||
if [ $$file != __done ]; then \
|
||||
rm -f $(GNUSTEP_DOC_MAN)/man7/$$file; \
|
||||
fi; \
|
||||
done;
|
||||
|
||||
after-distclean::
|
||||
rm -f version.texi
|
||||
endif
|
|
@ -1,147 +0,0 @@
|
|||
.\"GNUstep(7) man page
|
||||
.\"put together by Martin Brecher <martin@gnustep.de>
|
||||
.\"
|
||||
.\"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
|
||||
<http://www.gnustep.org/information/gethelp.html>. 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 <http://www.gnustep.org/> -
|
||||
GNUstep Wiki (lots of useful information) <http://wiki.gnustep.org/> -
|
||||
GNUstep Project Page <http://savannah.gnu.org/projects/gnustep/> -
|
||||
GNUstep Community Page <http://www.gnustep.net/> -
|
||||
GNUstep Documentation Library <http://gnustep.made-it.com/> -
|
||||
GNUstep Build Guide <http://gnustep.made-it.com/BuildGuide/>
|
||||
.PP
|
||||
Collaboration World <http://www.collaboration-world.com/> -
|
||||
GNUstep.de <http://www.gnustep.de/> -
|
||||
GNUstep.it <http://www.gnustep.it/> -
|
||||
GNUstep.us <http://www.gnustep.us/> -
|
||||
GWorkspace Website <http://www.gnustep.it/enrico/gworkspace/>
|
||||
.PP
|
||||
.B Mailinglists:
|
||||
.PP
|
||||
<http://www.gnu.org/software/gnustep/information/gethelp.html> -
|
||||
Archives can be found at <http://mail.gnu.org/archive/html/>
|
||||
.P
|
||||
.SH AUTHORS
|
||||
GNUstep is developed and maintained by a large number of people. Please
|
||||
see <http://www.gnustep.org/developers/whoiswho.html> 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 <martin@mb-itconsulting.com>.
|
|
@ -1,191 +0,0 @@
|
|||
Date: 17-Sep-2002 (tested under windows-xp)
|
||||
Author: Ildar Mulyukov <ildar@users.sourceforge.net>
|
||||
Update: 23-Oct-2004 (tested under windows-2000)
|
||||
Author: Adam Fedor <fedor@gnu.org>
|
||||
|
||||
|
||||
PURPOSE
|
||||
-------
|
||||
|
||||
This document may be treated as just an appendix to GNUstep-HOWTO. You
|
||||
can find GNUstep-HOWTO link here:
|
||||
http://gnustep.org/experience/documentation.html
|
||||
|
||||
This document is intended to provide a step by step instruction on how
|
||||
to get the GNUstep base library into a usable state on a recent windows
|
||||
operating system (XP, 2000, and probably NT) within Cygwin environment.
|
||||
|
||||
Cygwin is unix-like environment working on top of Win32 (Windows, Windows
|
||||
NT/2k/XP). You can find complete information about it on the website
|
||||
http://cygwin.org
|
||||
|
||||
For the moment GNUstep can be built with GUI support. (Native Win32
|
||||
GUI, not X11) The gui library is only partially ported to run under
|
||||
Win32 API so be warned.
|
||||
|
||||
Several people have reported that GNUstep installation on Cygwin works
|
||||
fine, but as always, a slightly different Window's setup can cause
|
||||
unforseen problems. You should be relatively confident at working with
|
||||
Cygwin before attempting to install GNUstep.
|
||||
|
||||
ADDITIONAL COMMENTS
|
||||
-------------------
|
||||
|
||||
Note: These comments are just my experience. You don't need these to build
|
||||
GNUstep. If you don't understand something don't worry.
|
||||
|
||||
Cygwin project is now in a very advanced stage. It's ready to be used by
|
||||
end-users and in commercial purposes and very convenient for programmers.
|
||||
|
||||
Cygwin provides "General UNIX" environment and APIs. In fact
|
||||
GNUstep-base is compiled using Unix alternatives of classes (like
|
||||
NSConcreteUnixTask). But it has several particularities that must been
|
||||
taken into consideration. There is a very good documentation on Cygwin
|
||||
website on these questions. See e.g.
|
||||
http://cygwin.com/cygwin-ug-net/cygwin-ug-net.html I would like to
|
||||
mention two of them:
|
||||
|
||||
1. Filesystem is case-insensitive. Now it's (luckily) supports
|
||||
soft-links. But case-insensitivity hinders quite a lot.
|
||||
|
||||
2. Dynamic libraries mechanism is not so good. (Windows DLL). It does
|
||||
not support several features (and this makes so hard to port some
|
||||
software e.g. licq) And it has those ugly __declspec(dllexport) /
|
||||
__declspec(dllimport) . But (Cygwin hackers are just cool!) in later
|
||||
releases of binutils ld is capable to link wrongly declared exports!
|
||||
This eliminates a lot of problems when dealing with DLLs (including
|
||||
objc.dll and gnustep-*.dll)
|
||||
|
||||
PRELIMINARIES
|
||||
-------------
|
||||
|
||||
Before you start, you need Cygwin in some programming-oriented
|
||||
configuration (full configuration is OK but it's VERY big
|
||||
now). Installation instructions are on Cygwin site.
|
||||
|
||||
Cygwin already contains every package needed for GNUstep. The default
|
||||
installation, however, does not include every package needed. See the
|
||||
GNUstep-HOWTO lists all the packages you might need. A probably incomplete
|
||||
list is given below:
|
||||
|
||||
For base (non-GUI):
|
||||
gcc-objc
|
||||
libxml2
|
||||
libxslt
|
||||
|
||||
For GUI:
|
||||
X11 installation
|
||||
libtiff
|
||||
libtiff-devel
|
||||
libjpg
|
||||
libpng
|
||||
|
||||
|
||||
Obtaining GNUstep
|
||||
-----------------
|
||||
|
||||
The main GNUstep project pages tell you how to get hold of this. You
|
||||
can get the latest release of the following libraries.
|
||||
|
||||
You need these packages:
|
||||
|
||||
GNUstep-make
|
||||
ffcall
|
||||
GNUstep-objc
|
||||
GNUstep-base
|
||||
|
||||
GNUstep-gui
|
||||
GNUstep-back
|
||||
|
||||
|
||||
Building and installing libraries
|
||||
---------------------------------
|
||||
|
||||
FFCALL: Unpack, configure, make, make install. See GNUstep-HOWTO for details.
|
||||
Note again: you can make package. See APPENDIX A
|
||||
|
||||
|
||||
Building and installing gnustep-make
|
||||
------------------------------------
|
||||
|
||||
As ususal. e.g.
|
||||
|
||||
./configure
|
||||
make
|
||||
make install
|
||||
|
||||
|
||||
Building and installing libobjc
|
||||
-------------------------------
|
||||
|
||||
You need to install gnustep-objc as it properly exports symbols for
|
||||
DLLs and it's DLL.
|
||||
|
||||
Unpack gnustep-objc, and type:
|
||||
|
||||
make install
|
||||
|
||||
Note: do not use configure.
|
||||
|
||||
|
||||
Building and installing GNUstep-base
|
||||
------------------------------------
|
||||
|
||||
Unpack gnustep-base, and type:
|
||||
|
||||
make install
|
||||
|
||||
This should automatically run the configure script for you, build the
|
||||
base library and some tools, and install the whole lot.
|
||||
|
||||
|
||||
Building and installing GNUstep-gui
|
||||
-----------------------------------
|
||||
|
||||
Unpack to gnustep-gui, and type:
|
||||
|
||||
make install
|
||||
|
||||
|
||||
Building and installing GNUstep-back
|
||||
------------------------------------
|
||||
|
||||
In the back directory, type
|
||||
|
||||
make install
|
||||
|
||||
|
||||
|
||||
Troubleshooting
|
||||
---------------
|
||||
|
||||
APPENDIX A
|
||||
----------
|
||||
|
||||
This is mkpkg.sh script for making packages from sources.
|
||||
|
||||
#!/bin/bash
|
||||
# make a cygwin package
|
||||
# launch this script in the building dir
|
||||
|
||||
TMPDIR=/tmp/__TMP_$RANDOM
|
||||
FLIST=$TMPDIR/files.list
|
||||
|
||||
rm -rf $TMPDIR
|
||||
mkdir $TMPDIR
|
||||
|
||||
touch /usr/time.stamp
|
||||
make install
|
||||
|
||||
pushd .
|
||||
cd /
|
||||
find usr ! -type d -newer /usr/time.stamp > $FLIST
|
||||
rm /usr/time.stamp
|
||||
|
||||
# Don't forget to rename it to real package name
|
||||
tar cjf $TMPDIR/package.tar.bz2 `cat $FLIST`
|
||||
popd
|
||||
|
||||
unset TMPDIR FLIST
|
||||
|
||||
--- *** CUT *** ---
|
|
@ -1,510 +0,0 @@
|
|||
Date : 15-Jan-2004
|
||||
Last update: 20061231 (tested under Mac OS X 10.4 / Darwin 8)
|
||||
Authors: Adam Fedor <fedor@gnu.org>
|
||||
Quentin Mathé <qmathe@club-internet.fr>
|
||||
Lars S.-Helldorf <lars.sonchocky-helldorf@hamburg.de>
|
||||
|
||||
PURPOSE
|
||||
-------
|
||||
|
||||
This document is intended to provide a step by step instruction on how to get
|
||||
the GNUstep installed on Mac OS X and Darwin.
|
||||
|
||||
COMMONLY USED SYMBOLS
|
||||
---------------------
|
||||
|
||||
<> denotes a variable depending on your preferences. To be replaced with the
|
||||
actual values from your system. For instance, if you installed GCC in /opt/local
|
||||
|
||||
./configure CC=<gcc install dir>/bin/gcc
|
||||
|
||||
will become:
|
||||
|
||||
./configure CC=/opt/local/bin/gcc
|
||||
|
||||
[] denotes an optional parameter. For instance:
|
||||
|
||||
./configure [--enable-graphics=art]
|
||||
|
||||
can be either:
|
||||
|
||||
./configure
|
||||
|
||||
or:
|
||||
|
||||
./configure --enable-graphics=art
|
||||
|
||||
PRELIMINAIRES
|
||||
-------------
|
||||
|
||||
For all targets, get the following software. I'd recommend installing Fink (and
|
||||
FinkCommander on Mac OS X) to get all this software. If you use Fink, you
|
||||
probably need to add the two lines below to your .bashrc or .profile (or similar
|
||||
startup) file:
|
||||
|
||||
test -r /sw/bin/init.sh && . /sw/bin/init.sh
|
||||
export DYLD_LIBRARY_PATH=/sw/lib:$DYLD_LIBRARY_PATH
|
||||
|
||||
Remember you usually need root access to install software. That means when you
|
||||
see an instruction like 'make install', you usually need to use sudo
|
||||
('sudo make install') or be logged in as root (not recommended).
|
||||
|
||||
libxml2 (Optional, highly recommended, already in
|
||||
Mac OS X 10.3 / Darwin 7 and later)
|
||||
libxslt (Optional)
|
||||
libtiff (Required)
|
||||
libjpeg (Optional, highly recommended - don't get from fink!)
|
||||
libpng (Optional, highly recommended)
|
||||
|
||||
libffi (Required, 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 and later)
|
||||
|
||||
libart2 (Required for art backend)
|
||||
freetype2 (Required for art backend)
|
||||
|
||||
dlcompat (Required, already in Mac OS X 10.3 or later)
|
||||
|
||||
Obtaining GNUstep
|
||||
-----------------
|
||||
|
||||
The main GNUstep project pages tell you how to get hold of this. You can get the
|
||||
latest release of the following libraries.
|
||||
You need these gnustep packages:
|
||||
|
||||
GNUstep-make
|
||||
GNUstep-base
|
||||
GNUstep-gui
|
||||
GNUstep-back
|
||||
|
||||
Targets
|
||||
-------
|
||||
|
||||
For GNUstep, there are several combinations of Objective-C runtime, Foundation
|
||||
library and Application Kit library possible, called library combos. The usual
|
||||
notation is:
|
||||
|
||||
objcruntime-foundation-applicationkit
|
||||
|
||||
Theoretically possible are:
|
||||
|
||||
gnu-gnu-gnu # gnu-objc runtime with gnustep-base and gnustep-gui.
|
||||
# Most widely tested.
|
||||
apple-gnu-gnu # apple-objc runtime with gnustep libraries. Does
|
||||
# currently not work.
|
||||
apple-apple-gnu # Apple Foundation with gnustep-gui on the top. Only of
|
||||
# academic interest.
|
||||
apple-apple-apple # Cocoa with GNUstep additions. For porting GNUstep apps
|
||||
# to Cocoa.
|
||||
|
||||
All gnu-*-apple library combos are purely theoretical and only available to the
|
||||
folks inside Apple since no mortal person ever saw the Cocoa source code. ;-)
|
||||
You can use either the Apple compiler or compile your own FSF compiler. This
|
||||
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.
|
||||
|
||||
GNUstep on Darwin PowerPC
|
||||
-------------------------
|
||||
|
||||
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 but not necessary
|
||||
# on OpenDarwin 7.2.1
|
||||
|
||||
and then configure GCC with:
|
||||
|
||||
mkdir build # Create a sibling to the
|
||||
# toplevel source dir
|
||||
cd build
|
||||
<dir>/gcc-X.X.X/configure \ # Don't try to build c++
|
||||
--enable-languages=c,objc
|
||||
|
||||
make bootstrap
|
||||
make install
|
||||
cd /usr/local/lib
|
||||
ln -s libobjc.a libobjc.dylib # So the linker sees us
|
||||
|
||||
(Replace X.X.X with the actual distribution you have).
|
||||
|
||||
GCC on Darwin doesn't appear to support threads.
|
||||
|
||||
Darwin PowerPC:
|
||||
|
||||
Configure and build as follows (tested using gcc-3.3.2 on Mac OS X 10.2 and
|
||||
10.3):
|
||||
|
||||
mkdir build
|
||||
cd build
|
||||
<dir>/gcc-x.x.x/configure \ # The first option
|
||||
[--prefix=<gcc install dir>] \ # permits to change the
|
||||
[--enable-languages=c,objc] # fact GCC installs by
|
||||
# default in /usr/local
|
||||
# The second option
|
||||
# permits to speed the
|
||||
# GCC compilation in the
|
||||
# case you will not use
|
||||
# languages other than c
|
||||
# and objc
|
||||
|
||||
make bootstrap
|
||||
make install
|
||||
cd <gcc install dir>/lib
|
||||
ln -s libobjc.a libobjc.dylib # So the linker sees us
|
||||
# Note when using gcc 4 or greater, make sure this is libobjc-gnu.dylib
|
||||
|
||||
Setting up the GNUstep make environment
|
||||
---------------------------------------
|
||||
|
||||
In the GNUstep-make (core/make) package, do with bourne shell like bash
|
||||
(Mac OS X 10.3):
|
||||
|
||||
echo 'export CC=<gcc install dir>/bin/gcc' >> ~/.profile
|
||||
|
||||
with c shell like tcsh (Mac OS X 10.2):
|
||||
|
||||
echo 'setenv CC <gcc install dir>/bin/gcc' >> ~/.tcshrc
|
||||
|
||||
else use [CC=<gcc install dir>/bin/gcc] option when running configure.
|
||||
|
||||
then:
|
||||
|
||||
./configure --with-library-combo=gnu-gnu-gnu \
|
||||
[--prefix=<GNUstep install dir>] [CC=<gcc install dir>/bin/gcc]
|
||||
|
||||
(apple-apple-apple is the default if you don't specify gnu-gnu-gnu). If you want
|
||||
to be able to compile for different targets/platforms together. Do this:
|
||||
|
||||
./configure --with-library-combo=gnu-gnu-gnu --disable-flattened \
|
||||
--enable-multi-platform [--prefix=<GNUstep install dir>] \
|
||||
[CC=<gcc install dir>/bin/gcc]
|
||||
|
||||
Now:
|
||||
|
||||
make
|
||||
make install
|
||||
|
||||
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.x (even if you are not
|
||||
compiling the compiler) and:
|
||||
|
||||
mkdir libffi-build
|
||||
cd libffi-build
|
||||
<gcc-3.4.x install dir>/libffi/configure [CC=<gcc install dir>/bin/gcc]
|
||||
make
|
||||
make install
|
||||
|
||||
Note: some 3.4.x versions doesn't have a working libffi on Mac OS X / Darwin.
|
||||
Use PyObjC libffi from http://pyobjc.sourceforge.net, in the case libffi
|
||||
install doesn't work with the 3.4.x version.
|
||||
(This libffi issue needs to be tested with the various GCC 3.4.x versions)
|
||||
|
||||
mkdir libffi-build
|
||||
cd libffi-build
|
||||
<pyobjc dir>/libffi-src/configure [CC=<gcc install dir>/bin/gcc]
|
||||
make
|
||||
make install
|
||||
|
||||
Warning ! Don't install libffi in <gcc install dir>, let it just install in
|
||||
/usr/local
|
||||
|
||||
Building and installing ffcall (on Darwin x86 only !!!)
|
||||
------------------------------
|
||||
|
||||
./configure --prefix=$GNUSTEP_SYSTEM_ROOT \
|
||||
--libdir=$GNUSTEP_SYSTEM_ROOT/Library/Libraries \
|
||||
--includedir=$GNUSTEP_SYSTEM_ROOT/Library/Headers
|
||||
|
||||
Now you can now build and install it simply by typing:
|
||||
|
||||
make
|
||||
make install
|
||||
|
||||
Source GNUstep.sh
|
||||
-----------------
|
||||
|
||||
If you are using bourne shell like bash, type:
|
||||
|
||||
. <GNUstep install dir>/System/Makefiles/GNUstep.sh
|
||||
|
||||
If you are using c shell like tcsh, type:
|
||||
|
||||
source <GNUstep install dir>/System/Makefiles/GNUstep.csh
|
||||
|
||||
Building and installing GNUstep-base
|
||||
------------------------------------
|
||||
|
||||
Go to GNUstep-base (or from CVS into the core/base directory).
|
||||
|
||||
If you are using the FSF GCC (with the Apple GCC which only works currently
|
||||
with the apple-apple-apple library combo, you don't need to run the configure
|
||||
yourself unless you need special options), type:
|
||||
|
||||
./configure [--with-xml-prefix=/usr] [--disable-xmltest] [--disable-do] \
|
||||
[LDFLAGS=-L/sw/lib] [CPPFLAGS=-I/sw/include] [CC=<gcc install dir>/bin/gcc]
|
||||
|
||||
To know which options you need to use with your environment:
|
||||
|
||||
--disable-xmltest is needed with the latest Mac OS X 10.3 / Darwin 7
|
||||
versions xml2-config tool and libxml2 headers reports differents versions,
|
||||
because of this versions conflict the GNUstep xmltest fails.
|
||||
|
||||
--with-xml-prefix=/usr is needed with Mac OS X 10.3 / Darwin 7 when you
|
||||
want to build the base library with xslt support and you have installed
|
||||
libxslt with Fink (because Fink installs lixml2 without the headers when
|
||||
you install lixslt, and by default the base library tries to link Fink
|
||||
libxml2 first, then the configuration fails because configure looks for
|
||||
the libxml2 headers).
|
||||
|
||||
--disable-do is needed when you decide to not build libffi or ffcall.
|
||||
|
||||
LDFLAGS=-L/sw/lib is needed when you installed libxslt with Fink and you
|
||||
want to compile the base library with libxslt support.
|
||||
|
||||
CPPFLAGS=-I/sw/include is needed when you installed libxslt with Fink and
|
||||
you want to compile the base library with libxslt support.
|
||||
|
||||
|
||||
followed when you are using the Apple GCC by:
|
||||
|
||||
make install
|
||||
|
||||
Note: this should automatically run the configure script for you (in the case
|
||||
you haven't done it).
|
||||
|
||||
otherwise (with the FSF 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).
|
||||
|
||||
If you are using the Apple GCC (doesn't work currently) or the FSF GCC type:
|
||||
|
||||
./configure [CC=<gcc install dir>/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=<jpeg libdir> --with-jpeg-include=<jpeg include dir> to have
|
||||
the libjpeg detected.
|
||||
|
||||
Example:
|
||||
|
||||
./configure --with-jpeg-library=/usr/local/lib
|
||||
--with-jpeg-include=/usr/local/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=<gcc install dir>/bin/gcc]
|
||||
make
|
||||
make install
|
||||
|
||||
In the case, you choose to use the art backend, you will need to have the
|
||||
freetype2 and libart2 libraries installed, first be sure to have libart2 in your
|
||||
path, for example, with Fink installation type:
|
||||
|
||||
export DYLD_LIBRARY_PATH=/sw/lib:$DYLD_LIBRARY_PATH
|
||||
|
||||
NOTE: I found also that even though the X11SDK.pkg package has freetype2,
|
||||
it is missing a crucial include file and also has some undefined symbols. I
|
||||
had to install the freetype2-dev package from fink and add this to my path
|
||||
so that it could be found:
|
||||
PATH=/sw/lib/freetype/bin:$PATH
|
||||
make sure in config.make that -L/sw/lib/freetype2/lib is included before -L/usr/X11R6/lib (Adam Fedor <fedor@gnu.org>) Mac OS X 10.4 doesn't have this problem.
|
||||
|
||||
Then you should be able to configure back and install it:
|
||||
|
||||
./configure --enable-graphics=art [CC='<gcc install dir>/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). The backend architecture which GNUstep-gui is built upon, has
|
||||
been written to be used within X Windows, then you need to start up an X Server
|
||||
(like Apple X11) to run the GNUstep-gui applications.
|
||||
|
||||
Warning ! With the art backend, before to launch applications based on
|
||||
GNUstep-gui, in the shell, don't forget to edit the defaults (no need it to redo
|
||||
it later):
|
||||
|
||||
defaults write NSGlobalDomain XWindowBufferUseXShm NO
|
||||
|
||||
because Apple X11 doesn't support well shared memory for buffering (which
|
||||
libart2 uses by default).
|
||||
|
||||
POTENTIAL ERRORS WHEN RUNNING MAKE ESPECIALLY WITH BACK AND GUI
|
||||
---------------------------------------------------------------
|
||||
|
||||
If you get errors like below, just do:
|
||||
|
||||
make clean
|
||||
make
|
||||
|
||||
The second or the third time, the errors should disappear. It's probably due to
|
||||
some potential issues between FSF GCC and the libtool/ld Mac OS X / Darwin
|
||||
versions.
|
||||
|
||||
Linking subproject x11 ...
|
||||
/usr/bin/ld: shared_obj/xdnd.o bad magic number (not a Mach-O file)
|
||||
collect2: ld returned 1 exit status
|
||||
make[3]: *** [shared_obj/subproject.o] Error 1
|
||||
make[2]: *** [x11.all.subproject.variables] Error 2
|
||||
make[1]: *** [libgnustep-back.all.bundle.variables] Error 2
|
||||
make: *** [internal-all] Error 2
|
||||
|
||||
More informations on the art backend
|
||||
------------------------------------
|
||||
|
||||
To have a working art backend... You will also need to download and install
|
||||
fonts, as it uses a specific font format. Use for example the file
|
||||
http://w1.423.telia.com/~u42308495/alex/backart/ArtResources-0.1.2.tar.bz2 and
|
||||
put the .nfont directories somewhere in $(GNUSTEP_SYSTEM_ROOT)/Library/Fonts
|
||||
|
||||
Other fonts are available on http://www.knuddel.org/Downloads/Fonts/
|
||||
|
||||
Window Maker
|
||||
------------
|
||||
|
||||
Window Maker is the traditional window manager for GNUstep.
|
||||
|
||||
In the case, you choose to use it, don't forget to execute wmaker.inst else
|
||||
Window Maker will crash with signal 10.
|
||||
|
||||
Example with Fink, do:
|
||||
|
||||
/sw/bin/wmaker.inst
|
||||
|
||||
GNUstep daemons
|
||||
---------------
|
||||
|
||||
Refer to GNUstep-HOWTO to know how to launch GNUstep daemons.
|
||||
|
||||
Note: If you try to start GNUstep daemons by hand with 'sudo opentool dameon',
|
||||
it won't work, because when you become root on Mac OS X / Darwin with sudo or
|
||||
su, the DYLD_LIBRARY_PATH environment variable of your user isn't used, then to
|
||||
start them in the shell, do:
|
||||
|
||||
sudo opentool gdomap # gdomap doesn't rely on
|
||||
# the GNUstep libraries
|
||||
# or other special
|
||||
# librairies.
|
||||
su root
|
||||
|
||||
then with bourne shell like bash (Mac OS X 10.3):
|
||||
|
||||
. $GNUSTEP_SYSTEM_ROOT/Library/Makesfiles/GNUstep.sh
|
||||
|
||||
or with c shell like tcsh (Mac OS X 10.2):
|
||||
|
||||
source $GNUSTEP_SYSTEM_ROOT/Library/Makesfiles/GNUstep.csh
|
||||
|
||||
and just do:
|
||||
|
||||
opentool gdnc
|
||||
opentool gpbs
|
||||
|
||||
GNUstep applications
|
||||
--------------------
|
||||
|
||||
Now you can install GNUstep applications like Gorm, ProjectCenter etc.
|
||||
Remember the fact that when you do 'sudo make install', the $DYLD_LIBRARY_PATH
|
||||
variable of your user is not used by root. In that case, GNUstep-make could
|
||||
complain for the undefined library path, the solution is identical to the one we
|
||||
used to launch the GNUstep daemons above:
|
||||
|
||||
su root
|
||||
|
||||
then with bourne shell like bash (Mac OS X 10.3):
|
||||
|
||||
. $GNUSTEP_SYSTEM_ROOT/Library/MakeFiles/GNUstep.sh
|
||||
|
||||
or with c shell like tcsh (Mac OS X 10.2):
|
||||
|
||||
. $GNUSTEP_SYSTEM_ROOT/Library/MakeFiles/GNUstep.sh
|
||||
|
||||
and just do:
|
||||
|
||||
make install
|
||||
|
||||
Note: upon launching applications like Project Center which links a framework,
|
||||
you will probably get an error message about the library
|
||||
<Framework name>.framework/<Framework name> which cannot be found, to fix that,
|
||||
just create a symbolic link to the actual library file, which is installed
|
||||
deeper in the hierarchy:
|
||||
|
||||
cd $GNUSTEP_SYSTEM_ROOT/Library/Frameworks/<Framework name>.framework
|
||||
sudo ln -s Versions/<Current version>/lib<Framework name>.dylib <Framework name>
|
||||
|
||||
Example with the ProjectCenter framework (0.4.0 version):
|
||||
|
||||
cd $GNUSTEP_SYSTEM_ROOT/Library/Frameworks/ProjectCenter.framework
|
||||
sudo ln -s Versions/0.4.0/libProjectCenter.dylib.0.4.0 ProjectCenter
|
||||
|
||||
---
|
||||
|
||||
That's all.
|
|
@ -1,557 +0,0 @@
|
|||
Date: 28-Feb-2007 (tested under Windows XP)
|
||||
Author: Nicola Pero <nicola.pero@meta-innovation.com>
|
||||
after Richard Frith-Macdonald <rfm@gnu.org> and others
|
||||
|
||||
|
||||
PURPOSE
|
||||
-------
|
||||
|
||||
This document is intended to provide a step by step instruction on how
|
||||
to use GNUstep on recent Windows operating systems (XP, 2000, and
|
||||
probably NT).
|
||||
|
||||
It will get as far as explaining how to build a GNUstep application
|
||||
and create a standalone version that can be shipped standalone to
|
||||
Windows end users.
|
||||
|
||||
The recommended way to get GNUstep working on Windows is to use MinGW
|
||||
and MSYS to get a Unix-like environment where you can easily build
|
||||
your GNUstep software (this is what is described in this file).
|
||||
|
||||
Software built in the MinGW/MSYS environment is native Windows
|
||||
software that you can then run without having to rely on the environment
|
||||
you used to build.
|
||||
|
||||
So, this document is divided in two parts.
|
||||
|
||||
In the first part ("STEP BY STEP INSTALLATION INSTRUCTIONS"), we will
|
||||
describe how to get MSYS/MinGW up and running, and how to build
|
||||
GNUstep software in this environment.
|
||||
|
||||
In the second part ("HOW TO SHIP YOUR GNUSTEP APPLICATION TO WINDOWS
|
||||
USERS"), we'll show an example of how to package (and use) the .exes,
|
||||
.dlls and resources (that you can build using the environment
|
||||
described in the first part) as Windows standalone binaries.
|
||||
|
||||
|
||||
INTRODUCTION TO MINGW
|
||||
---------------------
|
||||
|
||||
MinGW is a collection of header files and import libraries that allow
|
||||
one to use GCC and produce native Windows32 programs that do not rely
|
||||
on any 3rd-party DLLs. 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 gui library is only partially ported to run under MinGW. The look
|
||||
and behavior may not be consistent. Contributions are welcome.
|
||||
|
||||
|
||||
PRELIMINARIES
|
||||
-------------
|
||||
|
||||
One way to vastly simplify installing GNUstep, is to use the Windows-based
|
||||
GNUstep installer. Get it from
|
||||
|
||||
http://www.gnustep.org/resources/sources.html#windows
|
||||
|
||||
If you have already installed this, you can skip to the end and just
|
||||
start compiling and packaging applications! Although you may want to
|
||||
read the rest of the instructions for other helpful information.
|
||||
|
||||
|
||||
|
||||
A. STEP BY STEP INSTALLATION INSTRUCTIONS
|
||||
-----------------------------------------
|
||||
|
||||
1. Install MinGW
|
||||
================
|
||||
|
||||
Download MinGW-5.1.3 from
|
||||
http://sourceforge.net/projects/mingw Install it into
|
||||
|
||||
C:/xxx/msys/1.0/mingw
|
||||
|
||||
(where /xxx/ is the top-level path you want to use, I use Nicola/GNUstep so
|
||||
I install it into C:/Nicola/GNUstep/msys/1.0/mingw) (earlier versions of
|
||||
MinGW might not work)
|
||||
|
||||
PS: Download MinGW-5.1.3.exe, then start it up. Select 'Current' as
|
||||
the package version ot install. Then select 'MinGW Base Tools',
|
||||
'Objective-C Compiler' and 'MinGW Make' as packages to install. Set
|
||||
the installation path to C:\xxx\msys\1.0\mingw.
|
||||
|
||||
|
||||
2. Install msys
|
||||
===============
|
||||
|
||||
Download MSYS-1.0.10 following the links in
|
||||
http://www.mingw.org/download.shtml. Install it into C:/xxx/msys/1.0
|
||||
|
||||
The postinstall script should ask you for the mingw location, then
|
||||
detect it and be happy that it's there and all is setup properly.
|
||||
|
||||
|
||||
3. Install msys developer toolkit
|
||||
=================================
|
||||
|
||||
Download msysDTK-1.0.1 from the same site. Install it into
|
||||
C:/xxx/msys/1.0
|
||||
|
||||
|
||||
Now your MSYS/MinGW system should be setup! There should be an icon
|
||||
on your desktop called 'MSYS'. Double-clicking on it will launch a
|
||||
Unix-like shell. Go around and make sure you know how to use it. Log
|
||||
into it and work in it.
|
||||
|
||||
|
||||
4. Additional Windows steps
|
||||
===========================
|
||||
|
||||
You may need to edit /mingw/include/winsock2.h to change the size of the
|
||||
sa_data field in the sockaddr structure from 14 to 22 ... this is because
|
||||
some versions of Windows have changed the layout of this structure.
|
||||
This modification may be needed to be able to correctly determine the
|
||||
network interface details for your machine.
|
||||
|
||||
It's a good idea to remove the libobjc.a and libobjc.la and
|
||||
include/objc headers that come with gcc (gcc -v for location) so that
|
||||
they are not accidentally found instead of the libobjc DLL that you
|
||||
will compile below. This is what I did to remove them:
|
||||
|
||||
rm -Rf /mingw/lib/gcc/mingw32/3.4.2/include/objc
|
||||
rm -Rf /mingw/lib/libobjc.a
|
||||
rm -Rf /mingw/lib/libobjc.la
|
||||
|
||||
Now you can open a window containg a shell by choosing MSYS from the
|
||||
start menu.
|
||||
|
||||
From this window we can now start building things.
|
||||
|
||||
|
||||
5. Additional Useful Tools [Optional]
|
||||
=====================================
|
||||
|
||||
If you want to install GNUstep from Subversion, you need a Subversion
|
||||
client. I used
|
||||
http://subversion.tigris.org/files/documents/15/35379/svn-1.4.2-setup.exe
|
||||
and then installed subversion in a random directory. Then you can run
|
||||
svn.exe from the MS-DOS console (or the MSYS one).
|
||||
|
||||
If you need Emacs, get a Windows version from
|
||||
ftp://ftp.gnu.org/gnu/emacs/windows/emacs-21.3-bin-i386.tar.gz. To
|
||||
install it, simply unpack it in your home directory, you can now
|
||||
execute the binary in 'bin'.
|
||||
|
||||
|
||||
6. Obtaining GNUstep
|
||||
====================
|
||||
|
||||
The main GNUstep project pages tell you how to get hold of this. You
|
||||
can get the latest release of the libraries. However, since MinGW
|
||||
support is currently evolving, we recommend that you get the latest
|
||||
snapshot or code from SVN.
|
||||
|
||||
svn co http://svn.gna.org/svn/gnustep/modules/core
|
||||
|
||||
|
||||
7. Installing gnustep-make
|
||||
==========================
|
||||
|
||||
go in core/make and do
|
||||
|
||||
./configure --with-layout=fhs
|
||||
make
|
||||
make install
|
||||
|
||||
The reason we recommend using the 'fhs' layout is that if do this, you
|
||||
don't need to do anything to set up your environment. You could use
|
||||
the standard 'gnustep' layout instead, in which case you need to
|
||||
source GNUstep.sh to run stuff.
|
||||
|
||||
|
||||
8. setup your GNUstep environment
|
||||
=================================
|
||||
|
||||
Nothing to do here since we're using the fhs native layout.
|
||||
But if at some point something doesn't work for you, try using
|
||||
|
||||
export GNUSTEP_MAKEFILES=/usr/local/share/GNUstep/Makefiles
|
||||
|
||||
|
||||
9. Installing gnustep-objc
|
||||
==========================
|
||||
|
||||
Download gnustep-libobjc (you can find it at
|
||||
http://www.gnustep.org/resources/downloads.php, or use subversion:
|
||||
svn co http://svn.gna.org/svn/gnustep/modules/dev-libs/libobjc),
|
||||
and compile it:
|
||||
|
||||
make
|
||||
make install
|
||||
|
||||
|
||||
10. Reinstalling gnustep-make
|
||||
=============================
|
||||
|
||||
Go in core/make and reconfigure/recompile again so that gnustep-objc
|
||||
is detected:
|
||||
|
||||
make distclean
|
||||
./configure --with-layout=fhs
|
||||
make
|
||||
make install
|
||||
|
||||
gnustep-make should have detected your custom libobjc.
|
||||
|
||||
|
||||
11. Installing ffcall
|
||||
=====================
|
||||
|
||||
Download ffcall from the GNUstep website, and type:
|
||||
|
||||
./configure
|
||||
make
|
||||
make install
|
||||
|
||||
(if you get a popup about contest.exe failing, just ignore it)
|
||||
|
||||
|
||||
12. Installing additional packages
|
||||
==================================
|
||||
|
||||
Download the following packages:
|
||||
|
||||
libintl-0.14.4.bin.zip
|
||||
libintl-0.14.4.lib.zip
|
||||
|
||||
libiconv-1.9.2-bin.zip
|
||||
libiconv-1.9.2-lib.zip
|
||||
|
||||
zlib-1.2.3-bin.zip
|
||||
zlib-1.2.3-lib.zip
|
||||
|
||||
from http://gnuwin32.sourceforge.net, and install them. To
|
||||
install them, simply unzip them into /C/xxx/msys/1.0/mingw.
|
||||
|
||||
|
||||
13. XML support
|
||||
===============
|
||||
|
||||
You need to get the source code for libxml2 and build it yourself ...
|
||||
|
||||
Now download the libxml2 source from http://www.xmlsoft.org I used
|
||||
libxml2-2.6.27.tar.gz
|
||||
|
||||
Unpack the source, change into the directory and do the usual routine --
|
||||
|
||||
./configure
|
||||
make
|
||||
make install
|
||||
|
||||
You should now have libxml2 installed on your system.
|
||||
|
||||
IMPORTANT: Do *not* install libxslt. It has been reported that
|
||||
libxslt is currently built in the wrong way and will prevent anything
|
||||
from linking correctly if you try to use it.
|
||||
|
||||
|
||||
14. Installing gnustep-base
|
||||
===========================
|
||||
|
||||
Go in gnustep-base, and type
|
||||
|
||||
./configure
|
||||
make
|
||||
make install
|
||||
|
||||
At this point, you should be able to compile and run any non-gui tool
|
||||
and library (to check this try, for example, 'defaults read'). The
|
||||
next steps are only required for gui applications.
|
||||
|
||||
|
||||
15. Installing gui additional packages
|
||||
======================================
|
||||
|
||||
For the gui, download and install the following packages:
|
||||
|
||||
jpeg-6b-4-bin.zip
|
||||
jpeg-6b-4-dep.zip
|
||||
jpeg-6b-4-lib.zip
|
||||
|
||||
tiff-3.8.2-1-bin.zip
|
||||
tiff-3.8.2-1-dep.zip
|
||||
tiff-3.8.2-1-lib.zip
|
||||
|
||||
libpng-1.2.8-bin.zip
|
||||
libpng-1.2.8-lib.zip
|
||||
|
||||
The process is always the same: download the zip file from the
|
||||
gnuwin32 website, then unzip them into /C/xxx/msys/1.0/mingw.
|
||||
|
||||
|
||||
16. Installing gnustep-gui
|
||||
==========================
|
||||
|
||||
Go in the gui, and type:
|
||||
|
||||
./configure
|
||||
make
|
||||
make install
|
||||
|
||||
|
||||
17. Installing gnustep-back
|
||||
===========================
|
||||
|
||||
Go in back, and type:
|
||||
|
||||
./configure
|
||||
make
|
||||
make install
|
||||
|
||||
|
||||
18. Testing your gui installation
|
||||
=================================
|
||||
|
||||
Go in a simple gui application (examples/gui a very good starting
|
||||
point), compile and run it. :-)
|
||||
|
||||
Additionally, you might want to compile and run Gorm or other GNUstep
|
||||
applications. Gorm (and hopefully other GNUstep applications too)
|
||||
should compile and run out of the box.
|
||||
|
||||
Troubleshooting
|
||||
---------------
|
||||
|
||||
Issues with updating:
|
||||
Before attempting to update your GNUstep installation, be sure to stop/kill
|
||||
all running GNUstep programs or services (i.e. gdomap, gdnc, gpbs) since
|
||||
Windows cannot overwrite files that are currently in use.
|
||||
|
||||
Where we specify specific versions of packages to be used, we have tested
|
||||
with those versions ... later or earlier versions may work, but may well not.
|
||||
Generally earlier versions should be assumed not to work.
|
||||
|
||||
|
||||
|
||||
B. HOW TO SHIP YOUR GNUSTEP APPLICATION TO WINDOWS USERS
|
||||
--------------------------------------------------------
|
||||
|
||||
You probably want to ship your Windows application as a standalone
|
||||
.zip file that Windows users can easily download and use.
|
||||
|
||||
We will explain what to do with an example: that of packaging
|
||||
Gomoku.app. We will first build the application (creating
|
||||
Gomoku.app), then we'll add to to it all the GNUstep DLLs and
|
||||
resources that are needed to run the application, and we'll end up
|
||||
with a single directory, Gomoku.app, that contains a program
|
||||
(Gomoku.exe) and a bunch of DLLs and various other resources required
|
||||
to run the program.
|
||||
|
||||
The end user just needs to get this directory (from a .zip or .tgz
|
||||
file, for example) and can double-click on Gomoku.exe to start the
|
||||
program (no GNUstep installation required).
|
||||
|
||||
|
||||
1. Build the application
|
||||
========================
|
||||
|
||||
Build your application (Gomoku.app in this example) in your
|
||||
MinGW/GNUstep environment. Generally, this means getting the source
|
||||
code and typing 'make' in it. If you're trying to follow the
|
||||
Gomoku.app example, the source code is here:
|
||||
|
||||
http://www.gnustep.it/nicola/Applications/Gomoku/index.html
|
||||
|
||||
Once you have built it, make sure you can run your application from
|
||||
within mingw by using 'openapp', as in 'openapp ./Gomoku.app'.
|
||||
|
||||
2. Copy your application somewhere
|
||||
==================================
|
||||
|
||||
Now take your built application and copy it somewhere -- we'll be
|
||||
working on it! Eg, I just copy it in my home directory.
|
||||
|
||||
cp -R /home/Nico/Gomoku-1.2.8/Gomoku.app /home/Nico/
|
||||
|
||||
|
||||
3. Copy DLLs into your application
|
||||
==================================
|
||||
|
||||
Now search for MinGW/GNUstep DLL files in /bin and /local/bin, and
|
||||
copy them all into Gomoku.app:
|
||||
|
||||
cp $(find /bin -name *.dll) /home/Nico/Gomoku.app/
|
||||
cp $(find /local/bin -name *.dll) /home/Nico/Gomoku.app/
|
||||
|
||||
|
||||
4. Copy your GNUstep Library folder
|
||||
===================================
|
||||
|
||||
Now copy all of the GNUstep resources into the application --
|
||||
|
||||
mkdir -p /home/Nicola/Gomoku.app/GNUstep/
|
||||
cp -R /usr/local/lib/GNUstep/* /home/Nico/Gomoku.app/GNUstep/
|
||||
|
||||
I put them all into Gomoku.app/GNUstep/, which means that later on
|
||||
I'll set up the GNUstep.conf file to map GNUSTEP_*_LIBRARY to that
|
||||
directory.
|
||||
|
||||
|
||||
5. Copy key GNUstep binary programs
|
||||
===================================
|
||||
|
||||
mkdir -p /home/Nicola/Gomoku.app/GNUstep/Tools/
|
||||
cp /local/bin/gpbs.exe /home/Nicola/Gomoku.app/GNUstep/Tools
|
||||
cp /local/bin/gdnc.exe /home/Nicola/Gomoku.app/GNUstep/Tools
|
||||
cp /local/bin/gdomap.exe /home/Nicola/Gomoku.app/GNUstep/Tools
|
||||
cp /local/bin/make_services.exe /home/Nicola/Gomoku.app/GNUstep/Tools
|
||||
|
||||
I put them all into Gomoku.app/GNUStep/Tools, which means that later
|
||||
on I'll set up the GNUstep.conf file to map GNUSTEP_*_TOOLS to that
|
||||
directory.
|
||||
|
||||
|
||||
6. Add a GNUstep.conf
|
||||
=====================
|
||||
|
||||
You need to add a Gomoku.app/GNUstep.conf file to tell gnustep-base
|
||||
where to find things inside Gomoku.app -- here is the one I use (which
|
||||
matches the locations where I copied things in the previous steps) --
|
||||
|
||||
GNUSTEP_USER_CONFIG_FILE=.GNUstep.conf
|
||||
GNUSTEP_USER_DIR=GNUstep
|
||||
GNUSTEP_USER_DEFAULTS_DIR=GNUstep/Defaults
|
||||
|
||||
GNUSTEP_SYSTEM_APPS=./GNUstep/Apps
|
||||
GNUSTEP_SYSTEM_ADMIN_APPS=./GNUstep/Apps
|
||||
GNUSTEP_SYSTEM_TOOLS=./GNUstep/Tools
|
||||
GNUSTEP_SYSTEM_ADMIN_TOOLS=./GNUstep/Tools
|
||||
GNUSTEP_SYSTEM_LIBRARY=./GNUstep
|
||||
GNUSTEP_SYSTEM_HEADERS=./GNUstep/Headers
|
||||
GNUSTEP_SYSTEM_LIBRARIES=./GNUstep/Libraries
|
||||
GNUSTEP_SYSTEM_DOC=./GNUstep/Documentation
|
||||
GNUSTEP_SYSTEM_DOC_MAN=./GNUstep/Documentation/man
|
||||
GNUSTEP_SYSTEM_DOC_INFO=./GNUstep/Documentation/info
|
||||
|
||||
GNUSTEP_NETWORK_APPS=./GNUstep/Apps
|
||||
GNUSTEP_NETWORK_ADMIN_APPS=./GNUstep/Apps
|
||||
GNUSTEP_NETWORK_TOOLS=./GNUstep/Tools
|
||||
GNUSTEP_NETWORK_ADMIN_TOOLS=./GNUstep/Tools
|
||||
GNUSTEP_NETWORK_LIBRARY=./GNUstep
|
||||
GNUSTEP_NETWORK_HEADERS=./GNUstep/Headers
|
||||
GNUSTEP_NETWORK_LIBRARIES=./GNUstep/Libraries
|
||||
GNUSTEP_NETWORK_DOC=./GNUstep/Documentation
|
||||
GNUSTEP_NETWORK_DOC_MAN=./GNUstep/Documentation/man
|
||||
GNUSTEP_NETWORK_DOC_INFO=./GNUstep/Documentation/info
|
||||
|
||||
GNUSTEP_LOCAL_APPS=./GNUstep/Apps
|
||||
GNUSTEP_LOCAL_ADMIN_APPS=./GNUstep/Apps
|
||||
GNUSTEP_LOCAL_TOOLS=./GNUstep/Tools
|
||||
GNUSTEP_LOCAL_ADMIN_TOOLS=./GNUstep/Tools
|
||||
GNUSTEP_LOCAL_LIBRARY=./GNUstep
|
||||
GNUSTEP_LOCAL_HEADERS=./GNUstep/Headers
|
||||
GNUSTEP_LOCAL_LIBRARIES=./GNUstep/Libraries
|
||||
GNUSTEP_LOCAL_DOC=./GNUstep/Documentation
|
||||
GNUSTEP_LOCAL_DOC_MAN=./GNUstep/Documentation/man
|
||||
GNUSTEP_LOCAL_DOC_INFO=./GNUstep/Documentation/info
|
||||
|
||||
So, just copy and paste this code into a GNUstep.conf file that you
|
||||
put into /home/Nico/Gomoku.app/GNUstep.conf.
|
||||
|
||||
|
||||
7. Now the application should be working
|
||||
========================================
|
||||
|
||||
At this stage, everything should be working "standalone".
|
||||
|
||||
By that we mean that if you give your Gomoku.app/ to a Windows user
|
||||
(with no GNUstep installed on their machine), they should be able to
|
||||
run it by just double-clicking on the Gomoku executable inside of the
|
||||
Gomoku.app/ directory! :-)
|
||||
|
||||
Try it out and make sure that it works.
|
||||
|
||||
|
||||
8. Cleanup
|
||||
==========
|
||||
|
||||
If you look at your Gomoku.app/ directory, you will see that it is
|
||||
really big. We mass-copied stuff from the GNUstep/MinGW directories;
|
||||
but generally, you want to make sure you remove anything that you
|
||||
don't strictly need. So go in there and remove anything that you
|
||||
don't need.
|
||||
|
||||
First thing, you should remove the MSYS libraries, which we never use --
|
||||
|
||||
rm Gomoku.app/msys-1.0.dll
|
||||
rm Gomoku.app/msysltdl-3.dll
|
||||
rm Gomoku.app/libW11.dll
|
||||
rm Gomoku.app/libperl.dll
|
||||
rm Gomoku.app/librle3.dll
|
||||
|
||||
Then, remove any additional library that your application doesn't use;
|
||||
for example, I removed --
|
||||
|
||||
rm Gomoku.app/Renaissance.dll
|
||||
rm Gomoku.app/ProjectCenter.dll
|
||||
|
||||
Finally, remove Apps and other stuff that you might have copied from
|
||||
the general GNUstep installation --
|
||||
|
||||
rm -Rf Gomoku.app/GNUstep/Apps
|
||||
rm -Rf Gomoku.app/GNUstep/Frameworks/ProjectCenter.framework
|
||||
|
||||
Generally, you may want to build the whole stuff making sure you only
|
||||
include what you strictly need.
|
||||
|
||||
|
||||
9. Stripping
|
||||
============
|
||||
|
||||
The resulting directory might still be pretty big. If you are trying
|
||||
to distribute it over the internet, your users will probably
|
||||
appreciate if you stripped it, removing symbols. Just run 'strip'
|
||||
on all the .exe and .dll files in your application.
|
||||
|
||||
strip $(find /home/Nico/Gomoku.app/ -name '*.exe')
|
||||
strip $(find /home/Nico/Gomoku.app/ -name '*.dll')
|
||||
|
||||
That will reduce the size a lot. If you're not distributing it over
|
||||
the internet, you might be happy leaving the symbols in though.
|
||||
|
||||
|
||||
10. Checking Licenses
|
||||
====================
|
||||
|
||||
Finally, before deployment, you need to realize that you are shipping
|
||||
a lot of GNUstep (and non-GNUstep) software with your application.
|
||||
|
||||
This is fine, just make sure you are aware of the licenses, and that
|
||||
you comply with them (by explaining to people where to easily get the
|
||||
source code of the GNUstep software, for example [this comment is not
|
||||
legal advice -- please check the licenses yourself to make sure you
|
||||
are compliant]). (FIXME: Maybe someone should provide the appropriate
|
||||
ready-to-use notices that ought to be included ?)
|
||||
|
||||
|
||||
PACKAGING/WINDOWS TODOS
|
||||
-----------------------
|
||||
|
||||
The gdnc, gpbs processes are somehow a bit of a pain. They are
|
||||
automatically started when you start your application, but they are
|
||||
not automatically stopped when you quit it. This might have bad
|
||||
consequences, eg, if you are using your application from a USB flash
|
||||
disk, Windows doesn't let you unplug the USB disk while gdnc/gpbs are
|
||||
running, because they are running from the disk!
|
||||
|
||||
Also, it's not clear what happens if you have two or three such
|
||||
GNUstep apps downloaded from the web and you try to run them at the
|
||||
same time. What about gdomap etc ?
|
|
@ -1,205 +0,0 @@
|
|||
|
||||
|
||||
Cross Compiling GNUstep for MinGW from Cygwin
|
||||
=============================================
|
||||
|
||||
If you wish to build on a native MinGW system (recommended),
|
||||
please read README.MinGW instead.
|
||||
|
||||
MinGW is a collection of header files and import libraries that allow
|
||||
one to use GCC and produce native Windows32 programs that do not rely
|
||||
on any 3rd-party DLLs. GNUstep has only partially been ported to MinGW
|
||||
so expect some problems when trying to compile. Also, there are still
|
||||
subtle problems with running GNU tools on Windows, so any problems you
|
||||
may encounter may just as easly have to do with the compilation tools
|
||||
you are using as with GNUstep.
|
||||
|
||||
The base library is not completely ported to run on MinGW yet, but most
|
||||
stuff works, including networking/distributed objects.
|
||||
Probably background file handle operations (other than networking) and
|
||||
advanced parts of NSTask code do not currently work.
|
||||
|
||||
Note for compiling with shared libraries (DLLs), it's a good idea to
|
||||
remove the libobjc.a that comes with gcc (gcc -v for location) so that
|
||||
it isn't accidentally found instead of the libobjc DLL that you will
|
||||
compile below. Also note that, despite the statement in the GNUstep-HOWTO,
|
||||
even if you have 3.x, you still need to install gnustep-objc as it properly
|
||||
exports symbols for DLLs.
|
||||
|
||||
Note also that the //c construct for specifying paths with drives has
|
||||
been depreciated. You'll need to use /cygwin/path or C: style paths now.
|
||||
|
||||
MinGW on Cygwin
|
||||
---------------
|
||||
|
||||
Not recommended. This is a cross compilation solution. Using native
|
||||
mingw/msys is simpler and less error prone.
|
||||
|
||||
Uses the Cygwin tools to help out with the configuration and compilation of
|
||||
the libraries. It's always good to get the very latest version of
|
||||
Cygwin and MinGW. These instructions were performed
|
||||
with Cygwin DLL 1.3.9-1 and MingW gcc 2.95.3-6. If you have more
|
||||
experience with MinGW than me, please help improve these instructions!
|
||||
|
||||
I assume you have installed Cygwin and MinGW, and dowloaded and
|
||||
unpacked the GNUstep packages:
|
||||
|
||||
ffcall
|
||||
gnustep-make
|
||||
gnustep-objc
|
||||
gnustep-base
|
||||
|
||||
See the GNUstep-HOWTO file for more information on where to get
|
||||
various files. You need to build and install each package separately,
|
||||
as described below.
|
||||
|
||||
1. First, start up a Cygwin BASH shell and make sure the MinGW tools
|
||||
are in your path:
|
||||
|
||||
export PATH=/c/mingw/bin:$PATH
|
||||
|
||||
(Put in whatever path you have for the mingw tools).
|
||||
|
||||
NB. Using MinGW-1.1 the header file winsock2.h needed to be slightly
|
||||
updated for 2000 or XP. The size of the sa_data field in struct sockaddr
|
||||
had to be increased from 14 to 22. If you don't do this before building
|
||||
the gnustep base library, the gdomap tool will not correctly determine the
|
||||
internet addresses of your machine.
|
||||
|
||||
2. Configure and compile gnustep-make.
|
||||
The default location for GNUstep on Windows systems in C:/GNUstep.
|
||||
To use another location you can use the --prefix argument to configure.
|
||||
First, go to the 'gnustep-make' package and configure:
|
||||
|
||||
cd gnustep-make
|
||||
./configure --target=i386-mingw32
|
||||
|
||||
2a. The configure script may not have recognised that you are running in
|
||||
a cygwin environment ... so you may need to edit 'fixpath.sh' to set the
|
||||
CYGWIN variable to 'yes' before you build and install the make package.
|
||||
|
||||
3. Now build the gnustep-make package. Occationally, the make that comes
|
||||
with MinGW doesn't like the way GNUstep makefiles are setup (or perhaps
|
||||
it's that MingW make doesn't work with bash), so you can try
|
||||
using Cygwin's make instead (/usr/bin/make instead of just make).
|
||||
|
||||
make target=i386-mingw32
|
||||
make target=i386-mingw32 install
|
||||
|
||||
4. Now source the GNUstep.sh file so the rest of the packages will
|
||||
compile correctly:
|
||||
|
||||
. C:/GNUstep/System/Library/Makefiles/GNUstep.sh
|
||||
|
||||
Also put this command in your shell startup script. Be sure to adjust
|
||||
this path to match your real GNUstep root directory if you changed it
|
||||
when configuring gnustep-make.
|
||||
|
||||
NOTE for WIN98 users: You should also define the environment variables
|
||||
HOMEDRIVE and HOMEPATH, since these aren't defined normally.
|
||||
|
||||
5. Compile and install the ffcall package (Version 1.8b). It's
|
||||
simply a C library so it requires no special tools other than the compiler.
|
||||
|
||||
LD=ld RANLIB=touch ./configure --target=i386-mingw32 \
|
||||
--prefix=`$GNUSTEP_MAKEFILES/fixpath.sh -u $GNUSTEP_SYSTEM_ROOT`
|
||||
|
||||
which installs the libraries in the GNUstep directory structure (There is
|
||||
a script in ffcall-1.8d and higher that automatically configures ffcall
|
||||
and installs, called compile-mingw). Then
|
||||
|
||||
make # NOTE: Might need to be 'make LN_S=cp'
|
||||
make install
|
||||
|
||||
6. Now you can compile the Objective-C runtime DLL, gnustep-objc (unless
|
||||
you already have one installed):
|
||||
|
||||
cd gnustep-objc
|
||||
make target=i386-mingw32 shared=yes
|
||||
make target=i386-mingw32 shared=yes install
|
||||
|
||||
Make sure to remove libobjc.a that comes with gcc, otherwise it will find that
|
||||
one instead of the one we want. The libobjc library that comes with gcc-3.x
|
||||
MAY work if you add some extra lines to the .def file, but I won't go into
|
||||
that here. It's good just to use gnustep-objc.
|
||||
|
||||
7. Now we can configure and build the gnustep-base library.
|
||||
|
||||
cd gnustep-base
|
||||
./configure --target=i386-mingw32
|
||||
make target=i386-mingw32 shared=yes
|
||||
make target=i386-mingw32 shared=yes install
|
||||
|
||||
If you get tired of typing "target=i386-mingw32" all the time, then before
|
||||
you exec the GNUstep.sh script, just set the GNUSTEP_HOST:
|
||||
|
||||
export GNUSTEP_HOST=i586-pc-mingw32
|
||||
. $GNUSTEP_SYSTEM_ROOT/Library/Makefiles/GNUstep.sh
|
||||
|
||||
Problems?
|
||||
---------
|
||||
|
||||
[1] It's really important that all the libraries you link with GNUstep be
|
||||
shared libraries. Even static libraries based on C (e.g. libtiff) will
|
||||
prevent Objective-C modules from being loaded in Objective-C libraries.
|
||||
|
||||
[2] On Windows XP, at least, there are sometimes spaces in the path to the
|
||||
user directory. The make program cannot deal with this.
|
||||
Probably the best solution is to add a .GNUsteprc file in your home
|
||||
directory with a line of the form -
|
||||
GNUSTEP_USER_ROOT=/home/myname
|
||||
setting your personal GNUstep root directory to be '/home/myname' ...
|
||||
some path which does not contain spaces.
|
||||
|
||||
[3] Some users report needing to make gnustep libs like this (perhaps
|
||||
when using Cygwin's gcc only):
|
||||
|
||||
export CC="gcc"
|
||||
export CFLAGS="-mno-cygwin"
|
||||
export CPPFLAGS="-mno-cygwin"
|
||||
find . -name "*.lnk" -print -exec rm {} \;
|
||||
make target=i386-mingw32 shared=yes LN_S="ln -s" \
|
||||
SHARED_LD_PREFLAGS="--driver-flags=\"-mno-cygwin -mdll -Wl,--enable-stdcall-fixup\" --target=i386-mingw32 --export-all-symbols"
|
||||
|
||||
[4] Compiling iconv (1.8):
|
||||
|
||||
(the part with the most problems - maybe you download it precompiled
|
||||
but if you want to compile it - here is the guide) Make sure you are
|
||||
compiling from a mapped drive (eg. d:) not from an UNC Path!!!!
|
||||
|
||||
./configure --target=i386-mingw32 --host=i386-mingw32 (ignore warnings here)
|
||||
edit libtool and libcharset/libtool so that the CC variable reads
|
||||
"gcc -mno-cygwin -mdll"
|
||||
make
|
||||
(After a while make breaks with an error in linking)
|
||||
find . -name "*.lnk" -print -exec rm {} \;
|
||||
make
|
||||
(make breaks now in the src folder, but the DLL is already buildt,
|
||||
that is what we need)
|
||||
cp include/iconv.h $GNUSTEP_SYSTEM_ROOT/Headers
|
||||
cp lib/.libs/libiconv-2.dll $GNUSTEP_SYSTEM_ROOT/Tools/libiconv-2.dll
|
||||
cp lib/.libs/libiconv.dll.a $GNUSTEP_SYSTEM_ROOT/Libraries/libiconv.a
|
||||
|
||||
Good Sites for Pre-Compiled Binaries
|
||||
------------------------------------
|
||||
|
||||
Many libraries, etc from:
|
||||
|
||||
<http://sourceforge.net/project/showfiles.php?group_id=7382>
|
||||
<http://penguin.at0.net/~fredo/files/old/> (for libxml2, more?)
|
||||
<http://sourceforge.net/project/showfiles.php?group_id=23617> (libtiff)
|
||||
|
||||
MingW guile from
|
||||
|
||||
<http://www.textsure.net/~ela/devel.html>.
|
||||
|
||||
also need guile from
|
||||
|
||||
<http://sourceforge.net/project/showfiles.php?group_id=7382>
|
||||
|
||||
for guile-config file.
|
||||
|
||||
Author
|
||||
------
|
||||
|
||||
Adam Fedor <fedor@gnu.org>
|
|
@ -1,26 +0,0 @@
|
|||
@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}.
|
|
@ -1,2 +0,0 @@
|
|||
@bye
|
||||
\bye
|
|
@ -1,622 +0,0 @@
|
|||
\input texinfo @c -*-texinfo-*-
|
||||
@c A FAQ for GNUstep
|
||||
|
||||
@node Top, Compatibility, (dir), (dir)
|
||||
@chapter GNUstep Frequently Asked Questions with Answers
|
||||
|
||||
Last updated @today{}.
|
||||
Please send corrections to @email{gnustep-maintainer@@gnu.org}. Also look
|
||||
at the user FAQ for more user oriented questions.
|
||||
|
||||
@menu
|
||||
* Compatibility::
|
||||
* Compiling and Developing::
|
||||
* GNU Objective C Compiler and Runtime::
|
||||
* GNUstep Base Library::
|
||||
* GNUstep GUI Library::
|
||||
* GNUstep DisplayGhostScript Server::
|
||||
@end menu
|
||||
|
||||
@c ****************************************************************
|
||||
@c Compiling
|
||||
@node Compatibility, Compiling and Developing, Top, Top
|
||||
@section Compatibility
|
||||
|
||||
@menu
|
||||
* Is it easy to port OPENSTEP programs to GNUstep?::
|
||||
* How about porting between Cocoa and GNUstep?::
|
||||
* Tools for porting::
|
||||
* Can I transfer archived data from GNUstep to Cocoa?::
|
||||
* Does distributed objects work between GNUstep and Cocoa?::
|
||||
* Is there an Interface Builder for GNUstep?::
|
||||
* Can I use my original NIB files?::
|
||||
* Can one use the hybrid "Objective-C++"::
|
||||
* Is there a plan to support Java/YellowBox Bindings?::
|
||||
* What if I compile GNUstep under OPENSTEP/MacOS X?::
|
||||
* Is the Objective C API for GTK related?::
|
||||
* How about implementing parts of the Application Kit with GTK?::
|
||||
@end menu
|
||||
|
||||
@node Is it easy to port OPENSTEP programs to GNUstep?, How about porting between Cocoa and GNUstep?, Compatibility, Compatibility
|
||||
@subsection Is it easy to port OPENSTEP programs to GNUstep?
|
||||
|
||||
It is probably easy for simple programs. There are some portability
|
||||
tools to make this easier, or rewrite
|
||||
the Makefiles yourself. You will also have to translate the NIB files
|
||||
(if there are any) to GNUstep model files using the nib2gmodel program
|
||||
(from @url{ftp://ftp.gnustep.org/pub/gnustep/dev-apps}).
|
||||
|
||||
@node How about porting between Cocoa and GNUstep?, Tools for porting, Is it easy to port OPENSTEP programs to GNUstep?, Compatibility
|
||||
@subsection How about porting between Cocoa and GNUstep?
|
||||
|
||||
It's easier from GNUstep to Cocoa than Cocoa to GNUstep. Cocoa is
|
||||
constantly changing, much faster than GNUstep could hope to keep
|
||||
up. They have added extensions and new classes that aren't available in
|
||||
GNUstep yet. Plus there are some other issues. If you start with
|
||||
Cocoa:
|
||||
|
||||
@itemize @bullet
|
||||
@item Use #ifndef GNUSTEP for Apple only code.
|
||||
@item Do not use CoreFoundation
|
||||
@item Do not use Objective-C++ (except with gcc 4.1 or later)
|
||||
@item Do not use Quicktime or other proprietary extension
|
||||
@item GNUstep should be able to read Cocoa nib files automatically, so there
|
||||
is no need to port these, although you might want to have GNUstep specific
|
||||
versions of them anyway.
|
||||
@end itemize
|
||||
|
||||
See also @url{http://mediawiki.gnustep.org/index.php/Writing_portable_code}
|
||||
for more information.
|
||||
|
||||
@node Tools for porting, Can I transfer archived data from GNUstep to Cocoa?, How about porting between Cocoa and GNUstep?, Compatibility
|
||||
@subsection Tools for porting
|
||||
|
||||
While the programming interface should be almost transparent between
|
||||
systems (expect for the unimplemented parts, of course), there are a
|
||||
variety of other files and tools that are necessary for porting
|
||||
programs.
|
||||
|
||||
@table @samp
|
||||
@item ni2gmodel
|
||||
This program coverts nib files from any system, such as OPENSTEP to
|
||||
a gmodel format file. Gmodel can be read directly by GNUstep or you can
|
||||
convert this to a more GNUstep-native gorm format (using the Gorm interface
|
||||
modeller). Note this is not necessary for Cocoa nibs - GNUstep can read these
|
||||
directly.
|
||||
|
||||
@item Renaissance
|
||||
GNUstep Renaissance allows you to describe your user
|
||||
interfaces (that is, the windows in your application, and the buttons,
|
||||
boxes, textfields, etc in the windows) in simple and intuitive XML
|
||||
files, using an open, standard format describing the logic of the
|
||||
interface. It has a number of advantages over the proprietary nib format:
|
||||
portability, open standard, easy localization, themeability, and
|
||||
intelligent autolayout.
|
||||
|
||||
@item Gorm
|
||||
The equivalent of the Interface Builder in GNUstep. It might be easier to
|
||||
just recreate the interface using Gorm rather than dealing with
|
||||
translations.
|
||||
|
||||
@item OpenStep2GNUConverter and nfmake
|
||||
Two programs that allow you to convert PB files to GNUstep makefiles or
|
||||
compile a program on GNUstep directly from PB files. They probably work
|
||||
only for OPENSTEP systems and are a little out-of-date.
|
||||
|
||||
@item StepTalk
|
||||
A portable scripting environment that lets your do scripting in almost
|
||||
any language you like.
|
||||
|
||||
@end table
|
||||
|
||||
@node Can I transfer archived data from GNUstep to Cocoa?, Does distributed objects work between GNUstep and Cocoa?, Tools for porting, Compatibility
|
||||
@subsection Can I transfer archived data from GNUstep to Cocoa?
|
||||
|
||||
Apple's archiving format is proprietary and not documented, so this
|
||||
poses a problem for anyone wanting to implement compatibility with it.
|
||||
However, even if we reverse engineered the format, there are enough
|
||||
differences between the class and ivar layouts to make this sort of
|
||||
compatibility difficult. Not to mention the fact that we would
|
||||
constantly have to keep up with the changes Apple made.
|
||||
|
||||
The new keyed archiving using XML file formats is much more portable,
|
||||
and GNUstep is trying to maintain compatibility with Apple with this
|
||||
type of archiving.
|
||||
|
||||
@node Does distributed objects work between GNUstep and Cocoa?, Is there an Interface Builder for GNUstep?, Can I transfer archived data from GNUstep to Cocoa?, Compatibility
|
||||
@subsection Does distributed objects work between GNUstep and Cocoa?
|
||||
|
||||
See the answer to the previous question (on archive compatibility) for
|
||||
why this won't work either.
|
||||
|
||||
@node Is there an Interface Builder for GNUstep?, Can I use my original NIB files?, Does distributed objects work between GNUstep and Cocoa?, Compatibility
|
||||
@subsection Is there an Interface Builder for GNUstep?
|
||||
|
||||
There is an Interface Builder for GNUstep called Gorm. A lot of work
|
||||
has been put into it and it works very well. You can download it from
|
||||
the ftp site or via http. The Project Manager ProjectCenter is also
|
||||
available.
|
||||
|
||||
@node Can I use my original NIB files?, Can one use the hybrid "Objective-C++", Is there an Interface Builder for GNUstep?, Compatibility
|
||||
@subsection Can I use my original NIB files?
|
||||
|
||||
No - NeXT/Apple never documented their nib format, so GNUstep supports
|
||||
both the 'gmodel' format (which stores information as text
|
||||
(property-lists) and can therefore be edited 'by hand') and binary
|
||||
archive format (which can be edited by Gorm). There IS a conversion
|
||||
tool called nib2gmodel that can be compiled under OPENSTEP to convert
|
||||
nib files to GNUstep gmodel files.
|
||||
|
||||
Newer nib files use XML format keyed archiving and may possibly be
|
||||
transportable, although differences in class and ivar layout may still
|
||||
make this difficult.
|
||||
|
||||
@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++". Soon to br released gcc 4.1 will have this support, but
|
||||
it is still unclear how robust it will be.
|
||||
|
||||
@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 can, however, use a GNUstep program with an X11 server
|
||||
running on MacOSX.
|
||||
|
||||
@node Is the Objective C API for GTK related?, How about implementing parts of the Application Kit with GTK?, What if I compile GNUstep under OPENSTEP/MacOS X?, Compatibility
|
||||
@subsection Is the Objective C API for GTK related?
|
||||
|
||||
No. GNUstep applications provide their GUI via the OpenStep
|
||||
API, which provides fully object-oriented access to GUI manipulation.
|
||||
|
||||
The object-oriented nature of the libraries and language make it much easier
|
||||
for new users to create their own subclasses rather than simply using the
|
||||
supplied widgets as in other frameworks.
|
||||
|
||||
@node How about implementing parts of the Application Kit with GTK?, , Is the Objective C API for GTK related?, Compatibility
|
||||
@subsection How about implementing parts of the Application Kit with GTK?
|
||||
|
||||
Yes and No - The GNUstep architecture provides a single,
|
||||
platform-independent, API for handling all aspects of GUI interaction
|
||||
(implemented in the gstep-gui library), with a backend architecture
|
||||
that permits you to have different display models (display postscript,
|
||||
X-windows, win32, berlin ...) while letting you use the same code
|
||||
for printing as for displaying. Use of GTK in the frontend gui
|
||||
library would remove some of those advantages without adding any.
|
||||
|
||||
That being said, a backend library could be implemented using gtk
|
||||
if anyone wanted to do so. Since the frontend library handles most
|
||||
of the work involved in implementing the OpenStep API, the backend
|
||||
is a relatively thin layer and the advantages of GTK over direct
|
||||
xlib or win32 calls is likely to be minimal. If/when GTK is ported
|
||||
to more systems, a backend written using it could be a valuable
|
||||
asset - volunteers are, as always, welcome.
|
||||
|
||||
|
||||
@c ****************************************************************
|
||||
@c Compiling
|
||||
@node Compiling and Developing, GNU Objective C Compiler and Runtime, Compatibility, Top
|
||||
@section Compiling and Developing
|
||||
|
||||
@menu
|
||||
* How can I get started programming?::
|
||||
* How can I help with GNUstep?::
|
||||
* Helping develop GNUstep::
|
||||
* Helping document GNUstep::
|
||||
* How do I assign my contribution?::
|
||||
* How do I update the task list?::
|
||||
* How do I start writing tests?::
|
||||
* How do I start writing applications?::
|
||||
* How can I help with the GNUstep website?::
|
||||
* Why doesn't GDB support Objective-C?::
|
||||
@end menu
|
||||
|
||||
@node How can I get started programming?, How can I help with GNUstep?, Compiling and Developing, Compiling and Developing
|
||||
@subsection How can I get started programming?
|
||||
|
||||
Good question. Read the tutorials at the GNUstep web site. Also look at
|
||||
Apple's documentation (pointers in the Resources section on the GNUstep web
|
||||
site.)
|
||||
|
||||
@node How can I help with GNUstep?, Helping develop GNUstep, How can I get started programming?, Compiling and Developing
|
||||
@subsection How can I help with GNUstep?
|
||||
|
||||
@enumerate
|
||||
@item Write/debug library code
|
||||
@item Write documentation
|
||||
@item Update the task list and library headers
|
||||
@item Write applications
|
||||
@end enumerate
|
||||
|
||||
Let people know what you are doing. Break your project up into
|
||||
the smallest units you can. Feed back frequent updates to the
|
||||
maintainers. Ask questions in the discussion mailing list.
|
||||
|
||||
Do remember that any changes beyond a few lines of code (or
|
||||
documentation) require a disclaimer or copyright assignment to the
|
||||
Free Software Foundation before they can be incorporated into the
|
||||
project. Get in touch with the GNUstep maintainer about this.
|
||||
|
||||
Don't start with large-scale reorganization of anything - instead,
|
||||
get a general idea in mind of what you want to do, and proceed as
|
||||
much as possible with incremental changes that don't break anything
|
||||
- that way you can make those incremental changes available to the
|
||||
rest of the community at frequent intervals.
|
||||
|
||||
Don't be afraid to give up - there is no shame in finding out that
|
||||
you have take on too large/complex a project. It's much better to
|
||||
'resign' and take on a smaller job than to just stop without telling
|
||||
anyone.
|
||||
|
||||
Please document the code you add or change (using autogsdoc comments
|
||||
that begin with a slash and two asterices). But PLEASE, do not copy from
|
||||
the Apple documentation or any other copyrighted documentation.
|
||||
|
||||
|
||||
@node Helping develop GNUstep, Helping document GNUstep, How can I help with GNUstep?, Compiling and Developing
|
||||
@subsection Helping develop GNUstep
|
||||
|
||||
There is plenty of unimplemented stuff in the gui library and
|
||||
backend libraries that volunteers can work on - just browse through
|
||||
the code and see if it conforms to the documentation.
|
||||
|
||||
Specific tasks are noted in the developers section on the GNUstep
|
||||
website.
|
||||
|
||||
Once you have coded something, you could always write a testcase
|
||||
and documentation for it :-)
|
||||
|
||||
@node Helping document GNUstep, How do I assign my contribution?, Helping develop GNUstep, Compiling and Developing
|
||||
@subsection Helping document GNUstep
|
||||
|
||||
All class documentation is written directly in the source code itself
|
||||
and translated using the autogsdoc program. See the source code and
|
||||
documentation for autogsdoc for information on documenting the classes.
|
||||
|
||||
Newcomers could write documentation for individual classes by
|
||||
comparing the OpenStep specification, the MacOS-X documentation,
|
||||
and the GNUstep source. Documentation should clearly note where
|
||||
individual methods are specific to OpenStep, MacOS-X or are GNustep
|
||||
extensions.
|
||||
|
||||
More experienced people could write documentation on general
|
||||
programming topics, and tutorials for new users.
|
||||
|
||||
Anyone willing to write documentation, either tutorials for using
|
||||
GNUstep, or reference documentation for individual classes, should
|
||||
either write it in gsdoc or as plain ascii text for someone else to
|
||||
format into gsdoc.
|
||||
|
||||
GNUstep documentation should have copyright assigned to the Free
|
||||
Software Foundation.
|
||||
|
||||
@node How do I assign my contribution?, How do I update the task list?, Helping document GNUstep, Compiling and Developing
|
||||
@subsection How do I assign my contribution?
|
||||
|
||||
Everyone who contributes more than 20 lines of code or so needs to
|
||||
sign a copyright assignment so that the FSF can have legal control of
|
||||
the copyright. This makes it easier to defend against any copyright
|
||||
infringement suits. Contact the GNUstep maintainer for instructions
|
||||
on how to do this or download and fill out the form
|
||||
@url{http://www.gnustep.org/resources/request-assign.future}
|
||||
(instructions are included).
|
||||
|
||||
|
||||
@node How do I update the task list?, How do I start writing tests?, How do I assign my contribution?, Compiling and Developing
|
||||
@subsection How do I update the task list?
|
||||
|
||||
The task list (@url{http://savannah.gnu.org/pm/?group_id=99}) is
|
||||
supposed to tell people what jobs are waiting to be done. Feel free to
|
||||
add to it or update the tasks that are there (you need to create a login
|
||||
for yourself first).
|
||||
|
||||
One job of major importance that pretty much anyone can do is to
|
||||
look for jobs to add to the task list. In the case of methods from
|
||||
the OpenStep specification or the MacOS-X documentation not being
|
||||
present in the GNUstep libraries, it is also helpful to add the
|
||||
method prototypes to the library header files.
|
||||
|
||||
Send any changes or additions to @email{bug-gnustep@@gnu.org}.
|
||||
|
||||
A beginner can look through the MacOS-X documentation, the OpenStep
|
||||
specification and the GNUstep source and contribute task items.
|
||||
|
||||
If a class or method is in MacOS-X and OpenStep but is not in
|
||||
GNUstep - it's a high priority TODO and should at least be added
|
||||
to the GNUstep headers and a dummy version added to the source with
|
||||
a FIXME comment.
|
||||
|
||||
If a class or method is in MacOS-X but not OpenStep or GNUstep -
|
||||
it's a low priority TODO. It should be added to the GNUstep headers
|
||||
bracketed in @code{#ifndef STRICT_OPENSTEP}
|
||||
|
||||
If a class or method is in OpenStep but not in MacOS-X or GNUstep
|
||||
- it's a low priority TODO. It should be added to the GNUstep
|
||||
headers bracketed in @code{#ifndef STRICT_MACOS_X}
|
||||
|
||||
There are a couple of people working on this already, so it's a
|
||||
good idea to get in touch with Adam or Richard to coordinate efforts.
|
||||
|
||||
@node How do I start writing tests?, How do I start writing applications?, How do I update the task list?, Compiling and Developing
|
||||
@subsection How do I start writing tests?
|
||||
|
||||
You can write testcases - where the libraries fail tests, you
|
||||
could either fix the problem, or add it to the task list.
|
||||
|
||||
To write testcases, you need to use svn to install the latest
|
||||
GNUstep sourcecode you can find. Then checkout the
|
||||
'gnustep/tools/testsuite' module from svn.
|
||||
|
||||
@node How do I start writing applications?, How can I help with the GNUstep website?, How do I start writing tests?, Compiling and Developing
|
||||
@subsection How do I start writing applications?
|
||||
|
||||
You can either look at the links on the GNUstep website for
|
||||
applications that have been started, and email their owners to
|
||||
volunteer to help, or you can start your own project.
|
||||
|
||||
@node How can I help with the GNUstep website?, Why doesn't GDB support Objective-C?, How do I start writing applications?, Compiling and Developing
|
||||
@subsection How can I help with the GNUstep website?
|
||||
|
||||
Talk to Adam Fedor @email{fedor@@gnu.org}, the maintainer.
|
||||
|
||||
The GNUstep website is kept as a CVS module, but the largest portions
|
||||
of it (the FAQ and the Documentation) are actually
|
||||
generated from files in the individual GNUstep packages.
|
||||
Many highly changeable portions are kept on the Wiki, so anyone can change
|
||||
these (first you need to get write access, though).
|
||||
|
||||
If you want to update the FAQ or documentation - grab
|
||||
the latest snapshot of the GNUstep core you can find, update it
|
||||
from the svn repository, and work with the contents of the appropriate
|
||||
documentation directory.
|
||||
|
||||
If you want to work on other parts of the website, you can grab a copy
|
||||
of the website via anonymous CVS. See
|
||||
@url{http://savannah.gnu.org/cvs/?group_id=99} for instructions on how
|
||||
to do that.
|
||||
|
||||
The main task with the website is to figure out which bits are
|
||||
out-of-date (or wrong) and update/mark-as-outdated as required.
|
||||
|
||||
@node Why doesn't GDB support Objective-C?, , How can I help with the GNUstep website?, Compiling and Developing
|
||||
@subsection Why doesn't GDB support Objective-C?
|
||||
|
||||
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?::
|
||||
@end menu
|
||||
|
||||
@node What is the Objective C Runtime?, , GNU Objective C Compiler and Runtime, GNU Objective C Compiler and Runtime
|
||||
@subsection What is the Objective C Runtime?
|
||||
|
||||
The Objective C Runtime Library provides C functions and data structures
|
||||
required to execute an Objective C program.
|
||||
|
||||
The GNU Objective C Runtime Library offers everything NeXT's runtime
|
||||
does, including Categories, Protocols, @samp{+poseAs:}, thread-safety,
|
||||
class initialization on demand, delayed loading of classes, and
|
||||
initialization of static instances (such as @@""-style string objects).
|
||||
|
||||
It also has several differences over NeXT's implementation:
|
||||
|
||||
@itemize @bullet
|
||||
|
||||
@item GNU's runtime provides ``selector-types'' along with each
|
||||
selector; NeXT's does not. A selector-type is a string that describes
|
||||
the C variable types for the method's return and argument values. Among
|
||||
other uses, selector-types is extremely helpful for fast distributed
|
||||
objects implementations, (see GNUstep Base Library Section, below).
|
||||
|
||||
@item Many of the GNU functions have different names than their
|
||||
corresponding NeXT functions; the GNU names conform to the GNU coding
|
||||
standards. The GNUstep base library contains a compatibility header that
|
||||
works with both runtimes. You should use functions there or use OpenStep
|
||||
Foundation methods/functions instead of the basic
|
||||
runtime functions so that you code can run with either system.
|
||||
|
||||
Apple has recently added new functionality to their runtime, including
|
||||
built-in exception handling, etc. Hopefully these will be ported to the
|
||||
GNU runtime in the future.
|
||||
|
||||
@end itemize
|
||||
|
||||
@c ------------- GNU Compiler and Objective C Runtime Library -------
|
||||
|
||||
@node GNUstep Base Library, GNUstep GUI Library, GNU Objective C Compiler and Runtime, Top
|
||||
@section GNUstep Base Library
|
||||
|
||||
@menu
|
||||
* What is the GNUstep Base Library?::
|
||||
* What is base's current state of development?::
|
||||
* What are the features of GNU Distributed Objects?::
|
||||
@end menu
|
||||
|
||||
@node What is the GNUstep Base Library?, What is base's current state of development?, GNUstep Base Library, GNUstep Base Library
|
||||
@subsection What is the GNUstep Base Library?
|
||||
|
||||
The GNUstep Base Library is a library of general-purpose, non-graphical
|
||||
Objective C objects. For example, it includes classes for strings,
|
||||
object collections, byte streams, typed coders, invocations,
|
||||
notifications, notification dispatchers, moments in time, network ports,
|
||||
remote object messaging support (distributed objects), 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 Apple's; be warned, however, that they are not compatible with each
|
||||
other. They have different class hierarchies, different instance
|
||||
variables, different method names, different implementation strategies
|
||||
and different network message formats. You cannot communicate with a
|
||||
Apple NSConnection using a GNU NSConnection.
|
||||
|
||||
Here are some differences between GNU distributed objects and Apple's
|
||||
distributed objects: Apple NSDistantObject asks it's remote
|
||||
target for the method encoding types and caches the results; GNU
|
||||
NSDistantObject gets the types directly from the local GNU "typed selector"
|
||||
mechanism if the information is known locally and only queries the remote
|
||||
target or caching encoding types when using a method that is not known to
|
||||
the local process. The NSProxy for the remote root object always has name
|
||||
and, once set, you cannot change the root object of a NSConnection; the GNU
|
||||
Proxy for the remote root object has a target address value just like
|
||||
all other Proxy's, and you can change the root object as many times as
|
||||
you like. ].
|
||||
|
||||
@c --------------------------GNUstep Base Library----------------------
|
||||
|
||||
@node GNUstep GUI Library, GNUstep DisplayGhostScript Server, GNUstep Base Library, Top
|
||||
@section GNUstep GUI Library
|
||||
|
||||
@menu
|
||||
* What is the GUI Library?::
|
||||
* Explain the organization of the front- and back-ends::
|
||||
* What is the current state of development of the front-end?::
|
||||
* What is the current state of development of the back-ends?::
|
||||
@end menu
|
||||
|
||||
@node What is the GUI Library?, Explain the organization of the front- and back-ends, GNUstep GUI Library, GNUstep GUI Library
|
||||
@subsection What is the GUI Library?
|
||||
|
||||
The GNUstep GUI Library is a library of objects useful for writing
|
||||
graphical applications. For example, it includes classes for drawing
|
||||
and manipulating graphics objects on the screen: windows, menus,
|
||||
buttons, sliders, text fields, and events. There are also many
|
||||
peripheral classes that offer operating-system-independent interfaces to
|
||||
images, cursors, colors, fonts, pasteboards, printing. There are also
|
||||
workspace support classes such as data links, open/save panels,
|
||||
context-dependent help, spell checking.
|
||||
|
||||
It provides functionality that aims to implement the @samp{AppKit}
|
||||
portion of the OpenStep standard. However the implementation has
|
||||
been written to take advantage of GNUstep enhancements wherever possible.
|
||||
|
||||
|
||||
@node Explain the organization of the front- and back-ends, What is the current state of development of the front-end?, What is the GUI Library?, GNUstep GUI Library
|
||||
@subsection Explain the organization of the front- and back-ends
|
||||
|
||||
The GNUstep GUI Library is divided into a front- and back-end. The
|
||||
front-end contains the majority of implementation, but leaves out the
|
||||
low-level drawing and event code. A back-end can override whatever
|
||||
methods necessary in order to implement low-level drawing event
|
||||
receiving. Different back-ends will make GNUstep available on various
|
||||
platforms. The default GNU back-end will run on top of X Windows.
|
||||
Other back-ends could allow GNUstep to run on OpenGL and WIN32
|
||||
graphics/event platforms. Much work will be saved by this clean
|
||||
separation between front- and back-end, because it allows different
|
||||
platforms to share the large amount of front-end code.
|
||||
|
||||
@node What is the current state of development of the front-end?, What is the current state of development of the back-ends?, Explain the organization of the front- and back-ends, GNUstep GUI Library
|
||||
@subsection What is the current state of development of the front-end?
|
||||
|
||||
Many of the classes are well implemented, if not thoroughly tested.
|
||||
See the GNUstep web sites and read status information contained in the
|
||||
distribution for the most up-to-date information.
|
||||
|
||||
@node What is the current state of development of the back-ends?, , What is the current state of development of the front-end?, GNUstep GUI Library
|
||||
@subsection What is the current state of development of the back-ends?
|
||||
|
||||
There are several backends currently available:
|
||||
|
||||
@table @samp
|
||||
@item xlib
|
||||
This backend runs on X11 and uses standard xlib
|
||||
calls for implementing drawing. It works well, but is limited in many
|
||||
areas due to the limitations of xlib drawing.
|
||||
@item art
|
||||
This is a very good backend that draws using the libart package and
|
||||
freetype with near PostScript quality and functionality. It is currently
|
||||
the standard backend (as long as the required libraries are installed).
|
||||
@item w32
|
||||
This backend works on Windows and uses basic Windows drawing
|
||||
@item cairo
|
||||
An up-and-coming backend. It still relies on unpublished functions in
|
||||
the cairo library so using it is not for the beginner.
|
||||
@end table
|
||||
|
||||
@c ------------------------- GNUstep GUI Library -----------------------
|
||||
|
||||
@node GNUstep DisplayGhostScript Server, , GNUstep GUI Library, Top
|
||||
@section GNUstep DisplayGhostScript Server
|
||||
|
||||
@menu
|
||||
* What is the Display Ghostscript Server?::
|
||||
* What is DGSs current state of development?::
|
||||
* What is the relationship between the Display Ghostscript Server and X Windows?::
|
||||
@end menu
|
||||
|
||||
@node What is the Display Ghostscript Server?, What is DGSs current state of development?, GNUstep DisplayGhostScript Server, GNUstep DisplayGhostScript Server
|
||||
@subsection What is the Display Ghostscript Server?
|
||||
|
||||
It is a free implementation of a Display PostScript server based on the
|
||||
GNU Ghostscript program developed by Aladdin Enterprises and now owned by artofcode LLC.
|
||||
|
||||
At one point, GNUstep was using this for display purposes. However the
|
||||
development of DGS has stopped as it is too difficult to maintain and
|
||||
no one wanted to work on it. Now we are using other means of drawing.
|
||||
|
||||
@node What is DGSs current state of development?, What is the relationship between the Display Ghostscript Server and X Windows?, What is the Display Ghostscript Server?, GNUstep DisplayGhostScript Server
|
||||
@subsection What is its current state of development?
|
||||
|
||||
GNU contracted with Aladdin Enterprises to add some key features to GNU
|
||||
Ghostscript so it could be used as a DPS server. This work has mostly
|
||||
been done, although Aladdin did not completely finish the work that they
|
||||
were contracted for. (Because the work took longer than specified and
|
||||
was not completed, Aladdin agreed to waive approximately $10,000 in
|
||||
promised fees for the work that was actually done and delivered.) DGS
|
||||
works fairly well with a single context. Alpha channel and compositing
|
||||
doesn't work.
|
||||
|
||||
@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
|
|
@ -1,904 +0,0 @@
|
|||
\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: Nicola Pero, Tim Harrison, Martin Brecher, Adam Fedor,
|
||||
Richard Frith-Macdonald
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.1 or
|
||||
any later version published by the Free Software Foundation.
|
||||
|
||||
@end titlepage
|
||||
|
||||
@node Top, The System Domain, (dir), (dir)
|
||||
@top GNUstep Filesystem Hierarchy
|
||||
|
||||
@menu
|
||||
* The System Domain::
|
||||
* The Local Domain::
|
||||
* The Network Domain::
|
||||
* The Users Domain::
|
||||
* Structure of a Domain::
|
||||
* Configuration::
|
||||
@end menu
|
||||
|
||||
On GNUstep, there are four separate places where files related to
|
||||
GNUstep are installed: these places are called "domains". These four
|
||||
domains are the System domain, the Network domain, the Local domain,
|
||||
and the User domain. Each of these domains serve a special purpose.
|
||||
|
||||
You can install various things in each domain; for example
|
||||
applications, tools or libraries. Each domain should allow you to
|
||||
install the different types of resources or compiled software.
|
||||
|
||||
Starting with gnustep-make version 2.0, each GNUstep installation can
|
||||
specify how these domains should be organized and mapped to
|
||||
directories on the filesystem. A way to map GNUstep domains to
|
||||
filesystem directories is called a ``filesystem layout''. A
|
||||
filesystem layout will specify in which directory System Tools are to
|
||||
be installed, for example. The description of various filesystem
|
||||
layouts (and instructions on how to create your own) can be found in
|
||||
the @file{FilesystemLayouts} directory inside gnustep-make.
|
||||
|
||||
Applications, libraries, bundles and other resources are normally
|
||||
looked up in domains following a fixed order: User first, then Local,
|
||||
then Network, then System.
|
||||
|
||||
In this document we give a general overview of the GNUstep domains and
|
||||
of the interesting locations in a domain. We also describe the
|
||||
default GNUstep filesystem layout.
|
||||
|
||||
The default GNUstep filesystem layout is a good way to discuss
|
||||
domains, because it is very simple: in the default GNUstep filesystem
|
||||
layout, every domain is mapped to a single directory on disk. For
|
||||
example, the System domain could be mapped to the
|
||||
@file{/usr/GNUstep/System} directory, and everything that is installed
|
||||
into the System domain is then installed into some subdirectory of
|
||||
@file{/usr/GNUstep/System}. Before gnustep-make version 2.0, this was
|
||||
the only filesystem layout available.
|
||||
|
||||
Please keep in mind that (starting from gnustep-make version 2.0) this
|
||||
is not the case for a general filesystem layout; for example a typical
|
||||
FHS (Unix) layout might be installing System Tools in @file{/usr/bin}
|
||||
and System Admin Tools in @file{/sbin}.
|
||||
|
||||
@node The System Domain, The Local Domain, Top, Top
|
||||
@section The System Domain
|
||||
|
||||
The System domain contains all files which were included in the
|
||||
default GNUstep installation or distribution. These files are
|
||||
normally managed by the distribution/packaging system used to install
|
||||
GNUstep; thus, making modifications to these files is highly
|
||||
discouraged. In addition, only the system administrator ('root' on
|
||||
most UNIX systems) should have permissions to write to that domain.
|
||||
|
||||
Normally you can expect to find gnustep-make and the basic GNUstep
|
||||
libraries (Foundation and AppKit) in this domain, and also essential
|
||||
system applications (the Workspace Manager, the Editor, applications
|
||||
related to system administrative tasks), developer applications
|
||||
(Project Center and Gorm, as well as header files), essential
|
||||
extensions (bundles for XML, SSL, RTF, etc), as well as all software
|
||||
installed by the manufacturer of your distribution.
|
||||
|
||||
In the default GNUstep filesystem layout, the entire System domain is
|
||||
found in the @file{System} folder of the GNUstep installation.
|
||||
|
||||
|
||||
@node The Local Domain, The Network Domain, The System Domain, Top
|
||||
@section The Local Domain
|
||||
|
||||
The Local domain is meant as the location for installing software
|
||||
which was not included with your GNUstep distribution and which you or
|
||||
your local sysadmin compile and/or install manually. These may
|
||||
include third party applications, custom extension libraries and their
|
||||
related header files, etc. Every software (except for gnustep-make,
|
||||
gnustep-base, gnustep-gui and gnustep-back which for historical
|
||||
reasons by default install into the System domain) should install by
|
||||
default into the Local domain, so that if you download a source
|
||||
tarball of the software and you install it, it installs by default in
|
||||
the right place for this operation (the Local domain). Distributions
|
||||
should override this default manually when they package the software
|
||||
they want to distribute as part of their distribution, so that in that
|
||||
case the software is installed in the System domain.
|
||||
|
||||
In the default GNUstep filesystem layout the entire Local domain is
|
||||
installed as the @file{Local} folder of your GNUstep installation.
|
||||
|
||||
@node The Network Domain, The Users Domain, The Local Domain, Top
|
||||
@section The Network Domain
|
||||
|
||||
The @file{Network} domain is optional and is usually coalesced with
|
||||
the @file{Local} domain by default; this is particularly appropriate
|
||||
for use on stand alone systems such as your home workstation.
|
||||
However, the Network domain can be of great use in networked,
|
||||
corporate environments. Its main purpose is to hold files exported
|
||||
from a central server in your network or from other workstations.
|
||||
Most times, remote directories containing applictations or general
|
||||
data used by several workstations in the network are mounted using the
|
||||
Network File System (NFS). Such usage gives administrators the
|
||||
possibility of providing application or resources to a vast number of
|
||||
workstations while only having to manage the software in one place.
|
||||
This is especially useful when workstations are used by several users
|
||||
with different tasks and requirements. If you want to take advantage
|
||||
of the Network domain, you need to use a filesystem layout with
|
||||
a separate Network domain.
|
||||
|
||||
In the default GNUstep filesystem layout the Network domain is the
|
||||
same as the Local domain; if you want to use the Network domain there
|
||||
is a separate GNUstep filesystem layout variant with a separate
|
||||
Network domain, in which case the entire Network domain is installed
|
||||
as the @file{Network} folder of your GNUstep installation.
|
||||
|
||||
|
||||
@node The Users Domain, Structure of a Domain, The Network Domain, Top
|
||||
@section The Users Domain
|
||||
|
||||
The main purpose of the Users domain is to hold GNUstep related files
|
||||
which shall not be available to other users on the system but only to
|
||||
the user owning them. This includes the GNUstep defaults database
|
||||
(which holds system settings, application preferences and customized
|
||||
resources) as well as temporary data related to services and file type
|
||||
associations for programs. It also holds user installed applications
|
||||
and tools (each user has the ability to install their own version of
|
||||
an application or tool).
|
||||
|
||||
In the default GNUstep filesystem layout (and in most other layouts
|
||||
too) the User domain is completely contained in a subdirectory of the
|
||||
user's home directory called @file{GNUstep}.
|
||||
|
||||
@node Structure of a Domain, Configuration, The Users Domain, Top
|
||||
@section Structure of a Domain
|
||||
|
||||
In this section we examine the interesting locations in a domain. We
|
||||
will enumerate the locations, and discuss what should be installed in
|
||||
each location, and how they are mapped to directories on disk in the
|
||||
GNUstep filesystem layout and in a general filesystem layout.
|
||||
|
||||
@menu
|
||||
* The GNUstep Filesystem Layout::
|
||||
* Accessing Domain Locations::
|
||||
* Applications::
|
||||
* Admin Applications::
|
||||
* Web Applications::
|
||||
* Tools::
|
||||
* Admin Tools::
|
||||
* Library::
|
||||
* Headers::
|
||||
* Libraries::
|
||||
* Documentation::
|
||||
* Documentation (Info)::
|
||||
* Documentation (Man Pages)::
|
||||
* Folders inside Library::
|
||||
@end menu
|
||||
|
||||
@node The GNUstep Filesystem Layout, Accessing Domain Locations, Structure of a Domain, Structure of a Domain
|
||||
@subsection The GNUstep Filesystem Layout
|
||||
|
||||
We quickly present the GNUstep filesystem layout for a domain first
|
||||
because it is an essential reference for all discussions on the
|
||||
structure of a domain.
|
||||
|
||||
The GNUstep filesystem layout is the simplest layout, in which every
|
||||
domain is a directory on disk, and all locations in the domain are
|
||||
subdirectories of the domain.
|
||||
|
||||
In that case, a domain has the following structure on disk:
|
||||
@example
|
||||
Domain/
|
||||
Applications/
|
||||
Applications/Admin/
|
||||
Defaults/ (User domain only)
|
||||
Library/
|
||||
Library/ApplicationSupport/
|
||||
Library/ApplicationSupport/Palettes
|
||||
Library/Bundles/
|
||||
Library/Documentation/
|
||||
Library/Documentation/info/
|
||||
Library/Documentation/man/
|
||||
Library/Frameworks/
|
||||
Library/Headers/
|
||||
Library/Libraries/
|
||||
Library/Libraries/Java/
|
||||
Library/Libraries/Resources/
|
||||
Library/Makefiles/ (System domain only)
|
||||
Library/Services/
|
||||
Library/Tools/Resources/
|
||||
Library/WebApplications/
|
||||
Tools/
|
||||
Tools/Admin/
|
||||
@end example
|
||||
|
||||
The terminology for locations is derived from this filesystem layout,
|
||||
and it can be useful to use this directory structure as a reference
|
||||
point for all discussions. For example, every domain must have a
|
||||
'Library' location.
|
||||
|
||||
@node Accessing Domain Locations, Applications, The GNUstep Filesystem Layout, Structure of a Domain
|
||||
@subsection Accessing Domain Locations
|
||||
|
||||
In order to install and run software that uses some resources, you
|
||||
need to be able to install the resources in the appropriate location,
|
||||
and your software needs to be able to locate these resources when it's
|
||||
running.
|
||||
|
||||
Since domain locations can be mapped to arbitrary locations on disk,
|
||||
you must use the appropriate gnustep-make and gnustep-base facilities
|
||||
to install things in the right place and to find things at runtime.
|
||||
|
||||
GNUstep-make creates makefile variables for all the domain locations.
|
||||
If you need to perform some custom installation for your software, you
|
||||
must use these variables to make sure your installation will work with
|
||||
all filesystem layouts. For example, the @file{Applications} location
|
||||
for the domain where the software will be installed is available as
|
||||
the @code{GNUSTEP_APPS} variable. You can also access the locations
|
||||
for specific domains by using the variables
|
||||
@code{GNUSTEP_SYSTEM_APPS}, @code{GNUSTEP_NETWORK_APPS},
|
||||
@code{GNUSTEP_LOCAL_APPS} and @code{GNUSTEP_USER_APPS}.
|
||||
|
||||
GNUstep-base provides you with the
|
||||
@code{NSSearchPathForDirectoriesInDomains()} function that allows you
|
||||
to retrieve the domain locations at runtime. You must lookup
|
||||
resources only via this function. For example, the
|
||||
@file{Applications} location can be found by using the
|
||||
@code{NSApplicationDirectory} directory key, so you can use it in your
|
||||
software to iterate over all the @file{Applications} directories in
|
||||
the various domains searching for an application.
|
||||
|
||||
In general, all interesting domain locations have a set of variables
|
||||
defined in gnustep-make (such as @code{GNUSTEP_APPS},
|
||||
@code{GNUSTEP_SYSTEM_APPS}, @code{GNUSTEP_NETWORK_APPS},
|
||||
@code{GNUSTEP_LOCAL_APPS} and @code{GNUSTEP_USER_APPS}) and a
|
||||
corresponding directory key in gnustep-base (such as
|
||||
@code{NSApplicationDirectory}).
|
||||
|
||||
When examining the various domain locations, we will explicitly
|
||||
mention the gnustep-make variables and the gnustep-base directory keys
|
||||
that can be used to access them.
|
||||
|
||||
|
||||
@node Applications, Admin Applications , Accessing Domain Locations, Structure of a Domain
|
||||
@subsection Applications
|
||||
|
||||
The @file{Applications} location contains applications. Applications
|
||||
are programs that typically have a GUI interface and contain
|
||||
associated resource files, such as images, localization files and
|
||||
other program elements.
|
||||
|
||||
Important applications which are part of GNUstep and which are often
|
||||
distributed as part of a core GNUstep distribution include:
|
||||
@example
|
||||
Gorm.app
|
||||
ProjectCenter.app
|
||||
GWorkspace.app
|
||||
Preferences.app
|
||||
@end example
|
||||
|
||||
In GNUmakefiles, the @file{Applications} location is available via the
|
||||
@code{GNUSTEP_APPS} variable, which is the Applications location for
|
||||
the domain in which the software will be installed. You can also
|
||||
reference the locations in the various domains directly by using the
|
||||
variables @code{GNUSTEP_SYSTEM_APPS}, @code{GNUSTEP_NETWORK_APPS},
|
||||
@code{GNUSTEP_LOCAL_APPS} and @code{GNUSTEP_USER_APPS}.
|
||||
|
||||
In gnustep-base, the @file{Applications} locations are available by
|
||||
using the @code{NSApplicationDirectory} directory key for
|
||||
@code{NSSearchPathForDirectoriesInDomains()}.
|
||||
|
||||
|
||||
@node Admin Applications, Web Applications, Applications, Structure of a Domain
|
||||
@subsection Admin Applications
|
||||
|
||||
The @file{Admin Applications} location contains applications that are
|
||||
only useful to the system administrator. A normal user wouldn't have
|
||||
enough privileges to use these applications in a useful way.
|
||||
|
||||
In GNUmakefiles, the @file{Admin Applications} location is available
|
||||
via the @code{GNUSTEP_ADMIN_APPS} variable, which is the Admin
|
||||
Applications location for the domain in which the software will be
|
||||
installed. You can also reference the locations in the various
|
||||
domains directly by using the variables
|
||||
@code{GNUSTEP_SYSTEM_ADMIN_APPS}, @code{GNUSTEP_NETWORK_ADMIN_APPS},
|
||||
@code{GNUSTEP_LOCAL_ADMIN_APPS} and @code{GNUSTEP_USER_ADMIN_APPS}.
|
||||
|
||||
In gnustep-base, the @file{Admin Applications} locations are available
|
||||
by using the @code{NSAdminApplicationDirectory} directory key for
|
||||
@code{NSSearchPathForDirectoriesInDomains()}.
|
||||
|
||||
|
||||
@node Web Applications, Tools, Admin Applications, Structure of a Domain
|
||||
@subsection Web Applications
|
||||
|
||||
The @file{Web Applications} location contains web applications that
|
||||
were created using GSWeb or SOPE. These are programs contained with
|
||||
their resources in small wrappers very similar to standard
|
||||
applications.
|
||||
|
||||
In GNUmakefiles, the @file{Web Applications} location is available via
|
||||
the @code{GNUSTEP_WEB_APPS} variable, which is the Web Applications
|
||||
location for the domain in which the software will be installed. You
|
||||
can also reference the locations in the various domains directly by
|
||||
using the variables @code{GNUSTEP_SYSTEM_WEB_APPS},
|
||||
@code{GNUSTEP_NETWORK_WEB_APPS}, @code{GNUSTEP_LOCAL_WEB_APPS} and
|
||||
@code{GNUSTEP_USER_WEB_APPS}.
|
||||
|
||||
In gnustep-base, the @file{Web Applications} locations are available
|
||||
by using the @code{GSWebApplicationDirectory} directory key for
|
||||
@code{NSSearchPathForDirectoriesInDomains()}.
|
||||
|
||||
|
||||
@node Tools, Admin Tools, Web Applications, Structure of a Domain
|
||||
@subsection Tools
|
||||
|
||||
The @file{Tools} location contains tools and executable scripts. Tools
|
||||
are programs which generally have a command-line interface. Most are
|
||||
not meant to be used by the average user.
|
||||
|
||||
Important tools which are part of GNUstep and which are often
|
||||
distributed as part of a core GNUstep distribution include:
|
||||
@example
|
||||
openapp
|
||||
defaults
|
||||
gdomap
|
||||
gdnc
|
||||
gpbs
|
||||
@end example
|
||||
|
||||
In GNUmakefiles, the @file{Tools} location is available via the
|
||||
@code{GNUSTEP_TOOLS} variable, which is the location for the domain in
|
||||
which the software will be installed. You can also reference the
|
||||
locations in the various domains directly by using the variables
|
||||
@code{GNUSTEP_SYSTEM_TOOLS}, @code{GNUSTEP_NETWORK_TOOLS},
|
||||
@code{GNUSTEP_LOCAL_TOOLS} and @code{GNUSTEP_USER_TOOLS}.
|
||||
|
||||
In gnustep-base, the @file{Tools} locations are available by using the
|
||||
@code{GSToolsDirectory} directory key for
|
||||
@code{NSSearchPathForDirectoriesInDomains()}.
|
||||
|
||||
|
||||
@node Admin Tools, Library, Tools, Structure of a Domain
|
||||
@subsection Admin Tools
|
||||
|
||||
The @file{Admin Tools} location contains tools and executable scripts
|
||||
that are only useful to the system administrator. A normal user
|
||||
wouldn't have enough privileges to use these applications in a useful
|
||||
way.
|
||||
|
||||
In GNUmakefiles, the @file{Admin Tools} location is available via the
|
||||
@code{GNUSTEP_ADMIN_TOOLS} variable, which is the location for the
|
||||
domain in which the software will be installed. You can also
|
||||
reference the locations in the various domains directly by using the
|
||||
variables @code{GNUSTEP_SYSTEM_ADMIN_TOOLS},
|
||||
@code{GNUSTEP_NETWORK_ADMIN_TOOLS}, @code{GNUSTEP_LOCAL_ADMIN_TOOLS}
|
||||
and @code{GNUSTEP_USER_ADMIN_TOOLS}.
|
||||
|
||||
In gnustep-base, the @file{Admin Tools} locations are available by
|
||||
using the @code{GSAdminToolsDirectory} directory key for
|
||||
@code{NSSearchPathForDirectoriesInDomains()}.
|
||||
|
||||
|
||||
@node Library, Headers, Admin Tools, Structure of a Domain
|
||||
@subsection Library
|
||||
|
||||
The @file{Library} location contains most of the resources that are
|
||||
located and loaded at runtime. These resources are organized in
|
||||
folders (directories) inside @file{Library}; the most important
|
||||
@file{Library} folders will be described later on.
|
||||
|
||||
Like all systems inspired by OpenStep, resources are mostly organized
|
||||
in bundles and small wrappers that contain both machine-dependent
|
||||
files (such as executables or loadable object files) and general
|
||||
machine-independent resources (such as images or text files). For
|
||||
this reason, the @file{Library} location will contain both
|
||||
machine-dependent and machine-independent files.
|
||||
|
||||
The structure of the folders within Library is the same in all
|
||||
filesystem layouts, with a few exceptions: in the GNUstep filesystem
|
||||
layout, the @code{Libraries}, @code{Headers}, @code{Documentation} and
|
||||
@code{WebApplications} folders are all inside @code{Library}, but this
|
||||
is not necessarily true for other filesystem layouts.
|
||||
|
||||
Vice versa, it's common on other filesystem layouts (eg, FHS) to put
|
||||
@code{Applications} and @code{Admin Applications} as folders inside
|
||||
@code{Library}.
|
||||
|
||||
In GNUmakefiles, the @file{Library} location is available via the
|
||||
@code{GNUSTEP_LIBRARY} variable, which is the location for the
|
||||
domain in which the software will be installed. You can also
|
||||
reference the locations in the various domains directly by using the
|
||||
variables @code{GNUSTEP_SYSTEM_LIBRARY},
|
||||
@code{GNUSTEP_NETWORK_LIBRARY}, @code{GNUSTEP_LOCAL_LIBRARY} and
|
||||
@code{GNUSTEP_USER_LIBRARY}.
|
||||
|
||||
In gnustep-base, the @file{Library} locations are available by
|
||||
using the @code{NSLibraryDirectory} directory key for
|
||||
@code{NSSearchPathForDirectoriesInDomains()}.
|
||||
|
||||
|
||||
@node Headers, Libraries, Library, Structure of a Domain
|
||||
@subsection Headers
|
||||
|
||||
The @code{Headers} location contains header files associated with a
|
||||
library located in @code{Libraries}.
|
||||
|
||||
In GNUmakefiles, the @file{Headers} location is available via the
|
||||
@code{GNUSTEP_HEADERS} variable, which is the location for the
|
||||
domain in which the software will be installed. You can also
|
||||
reference the locations in the various domains directly by using the
|
||||
variables @code{GNUSTEP_SYSTEM_HEADERS},
|
||||
@code{GNUSTEP_NETWORK_HEADERS}, @code{GNUSTEP_LOCAL_HEADERS} and
|
||||
@code{GNUSTEP_USER_HEADERS}.
|
||||
|
||||
In gnustep-base, the @file{Headers} location is not currently
|
||||
available.
|
||||
|
||||
|
||||
@node Libraries, Documentation, Headers, Structure of a Domain
|
||||
@subsection Libraries
|
||||
|
||||
The @code{Libraries} location contains libraries (shared/static object
|
||||
files that are linked into programs). (NOTE: In the GNUstep
|
||||
filesystem layout, the Libraries directory being in Library may sound
|
||||
somewhat redundant, however, it could be read as "a Library of shared
|
||||
libraries").
|
||||
|
||||
In the GNUstep filesystem layout, the @code{Library/Libraries} folder
|
||||
contains two other folders: @code{Resources} and @code{Java}. It's
|
||||
important to notice that when the @code{Libraries} location is moved
|
||||
elsewhere, these folders are not moved; they will still be in
|
||||
@code{Library/Libraries/Resources} and @code{Library/Libraries/Java}.
|
||||
|
||||
In GNUmakefiles, the @file{Libraries} location is available via the
|
||||
@code{GNUSTEP_LIBRARIES} variable, which is the location for the
|
||||
domain in which the software will be installed. You can also
|
||||
reference the locations in the various domains directly by using the
|
||||
variables @code{GNUSTEP_SYSTEM_LIBRARIES},
|
||||
@code{GNUSTEP_NETWORK_LIBRARIES}, @code{GNUSTEP_LOCAL_LIBRARIES} and
|
||||
@code{GNUSTEP_USER_LIBRARIES}.
|
||||
|
||||
In gnustep-base, the @file{Libraries} locations are available by using
|
||||
the @code{GSLibrariesDirectory} directory key for
|
||||
@code{NSSearchPathForDirectoriesInDomains()}.
|
||||
|
||||
|
||||
@node Documentation, Documentation (Info), Libraries, Structure of a Domain
|
||||
@subsection Documentation
|
||||
|
||||
The @code{Documentation} location contains documentation for
|
||||
libraries, applications, etc.
|
||||
|
||||
In GNUmakefiles, the @file{Documentation} location is available via
|
||||
the @code{GNUSTEP_DOC} variable, which is the location for the
|
||||
domain in which the software will be installed. You can also
|
||||
reference the locations in the various domains directly by using the
|
||||
variables @code{GNUSTEP_SYSTEM_DOC}, @code{GNUSTEP_NETWORK_DOC},
|
||||
@code{GNUSTEP_LOCAL_DOC} and @code{GNUSTEP_USER_DOC}.
|
||||
|
||||
In gnustep-base, the @file{Documentation} locations are available by
|
||||
using the @code{NSDocumentationDirectory} directory key for
|
||||
@code{NSSearchPathForDirectoriesInDomains()}.
|
||||
|
||||
|
||||
@node Documentation (Info), Documentation (Man Pages), Documentation, Structure of a Domain
|
||||
@subsection Documentation (Info)
|
||||
|
||||
The @code{Documentation (Info)} location contains documentation in
|
||||
info format.
|
||||
|
||||
In GNUmakefiles, the @file{Documentation (Info)} location is available
|
||||
via the @code{GNUSTEP_DOC_INFO} variable, which is the location for
|
||||
the domain in which the software will be installed. You can also
|
||||
reference the locations in the various domains directly by using the
|
||||
variables @code{GNUSTEP_SYSTEM_DOC_INFO},
|
||||
@code{GNUSTEP_NETWORK_DOC_INFO}, @code{GNUSTEP_LOCAL_DOC_INFO} and
|
||||
@code{GNUSTEP_USER_DOC_INFO}.
|
||||
|
||||
In gnustep-base, the @file{Documentation (Info)} locations are not
|
||||
currently available.
|
||||
|
||||
|
||||
@node Documentation (Man Pages), Folders inside Library, Documentation (Info), Structure of a Domain
|
||||
@subsection Documentation (Man Pages)
|
||||
|
||||
|
||||
The @code{Documentation (Man Pages)} location contains Unix man pages.
|
||||
|
||||
In GNUmakefiles, the @file{Documentation (Man Pages)} location is
|
||||
available via the @code{GNUSTEP_DOC_MAN} variable, which is the
|
||||
location for the domain in which the software will be installed. You
|
||||
can also reference the locations in the various domains directly by
|
||||
using the variables @code{GNUSTEP_SYSTEM_DOC_MAN},
|
||||
@code{GNUSTEP_NETWORK_DOC_MAN}, @code{GNUSTEP_LOCAL_DOC_MAN} and
|
||||
@code{GNUSTEP_USER_DOC_MAN}.
|
||||
|
||||
In gnustep-base, the @file{Documentation (Man)} locations are not
|
||||
currently available.
|
||||
|
||||
|
||||
@node Folders inside Library, , Documentation (Man Pages), Structure of a Domain
|
||||
@subsection Folders inside Library
|
||||
|
||||
In this section we discuss the standard folders that are available
|
||||
inside the @code{Library} location. To find any of these folders,
|
||||
just find the location of @code{Library} and then append the folder
|
||||
name (for example, in a GNUmakefile you can access the 'ColorPickers'
|
||||
folder of the installation domain as
|
||||
@code{$GNUSTEP_LIBRARY/ColorPickers}).
|
||||
|
||||
Some of the folders can also be accessed using direct variables, such
|
||||
as @code{GNUSTEP_BUNDLES}. You should prefer using these direct
|
||||
variables if you can because they are more future-proof (in case some
|
||||
of the folders become independent from @code{Library} in the future).
|
||||
All such cases should be documented here.
|
||||
|
||||
@menu
|
||||
* ApplicationSupport::
|
||||
* Bundles::
|
||||
* ColorPickers::
|
||||
* Colors::
|
||||
* DTDs::
|
||||
* DocTemplates::
|
||||
* Fonts::
|
||||
* Frameworks::
|
||||
* Images::
|
||||
* Libraries/Java::
|
||||
* Libraries/Resources::
|
||||
* KeyBindings::
|
||||
* PostScript::
|
||||
* Services::
|
||||
* Sounds::
|
||||
* Tools/Resources::
|
||||
@end menu
|
||||
|
||||
@node ApplicationSupport, Bundles, Folders inside Library, Folders inside Library
|
||||
@subsubsection ApplicationSupport
|
||||
|
||||
This directory contains bundles and other resources that are provided
|
||||
for an application, but that are not specifically distributed with
|
||||
that application. For instance, these may be third-party resources for
|
||||
an application.
|
||||
|
||||
For example, modules for the Preferences application may be stored
|
||||
here, in a @file{Preferences} subdirectory. In particular, Palettes
|
||||
for Gorm are stored in @file{ApplicationSupport/Palettes}.
|
||||
|
||||
In GNUmakefiles, this location is available via the
|
||||
@code{GNUSTEP_APPLICATION_SUPPORT} variable, which is the location for
|
||||
the domain in which the software will be installed. You can also
|
||||
reference the locations in the various domains directly by using the
|
||||
variables @code{GNUSTEP_SYSTEM_APPLICATION_SUPPORT},
|
||||
@code{GNUSTEP_NETWORK_APPLICATION_SUPPORT},
|
||||
@code{GNUSTEP_LOCAL_APPLICATION_SUPPORT} and
|
||||
@code{GNUSTEP_USER_APPLICATION_SUPPORT}.
|
||||
|
||||
In gnustep-base, the @code{ApplicationSupport} locations are available
|
||||
by using the @code{NSApplicationSupportDirectory} directory key for
|
||||
@code{NSSearchPathForDirectoriesInDomains()}.
|
||||
|
||||
@node Bundles, ColorPickers, ApplicationSupport, Folders inside Library
|
||||
@subsubsection Bundles
|
||||
|
||||
This directory contains bundles. Bundles are collections of executable
|
||||
code and associated resources that may be loaded at runtime by an
|
||||
application or tool. Note: this directory is depreciated. Use
|
||||
ApplicationSupport to install bundles that can be used by an
|
||||
application.
|
||||
|
||||
In GNUmakefiles, this location is available via the
|
||||
@code{GNUSTEP_BUNDLES} variable, which is the location for the domain
|
||||
in which the software will be installed. You can also reference the
|
||||
locations in the various domains directly by using the variables
|
||||
@code{GNUSTEP_SYSTEM_BUNDLES}, @code{GNUSTEP_NETWORK_BUNDLES},
|
||||
@code{GNUSTEP_LOCAL_BUNDLES} and @code{GNUSTEP_USER_BUNDLES}.
|
||||
|
||||
In gnustep-base, you can access the @code{Bundles} location as a
|
||||
folder inside the @code{Library} location.
|
||||
|
||||
|
||||
@node ColorPickers, Colors, Bundles, Folders inside Library
|
||||
@subsubsection ColorPickers
|
||||
|
||||
This directory contains bundles that are used by the color picking
|
||||
system. They may include code that implements picking colors from a
|
||||
color wheel, a custom defined list of colors, etc.
|
||||
|
||||
This folder is accessed as the @code{ColorPickers} folder inside
|
||||
@code{Library}.
|
||||
|
||||
@node Colors, DTDs, ColorPickers, Folders inside Library
|
||||
@subsubsection Colors
|
||||
|
||||
This directory contains files that define specific color mappings for
|
||||
use within libraries or applications that require color definitions.
|
||||
|
||||
This folder is accessed as the @code{Colors} folder inside
|
||||
@code{Library}.
|
||||
|
||||
@node DTDs, DocTemplates, Colors, Folders inside Library
|
||||
@subsubsection DTDs
|
||||
|
||||
This directory contains any Document Type Definitions
|
||||
required for document parsing.
|
||||
|
||||
This folder is accessed as the @code{DTDs} folder inside
|
||||
@code{Library}.
|
||||
|
||||
@node DocTemplates, Fonts, DTDs, Folders inside Library
|
||||
@subsubsection DocTemplates
|
||||
|
||||
This directory contains text templates for automatic documentation, as
|
||||
generated by autodoc. Any additional documentation template types
|
||||
must be placed in this directory, as a central location for
|
||||
documentation template types. Any templates installed within this
|
||||
directory must have an extension indicating what type of documentation
|
||||
system it is referenced by (ie. .gsdoc for the GNUstep implementation
|
||||
of autodoc).
|
||||
|
||||
This folder is accessed as the @code{DocTemplates} folder inside
|
||||
@code{Library}.
|
||||
|
||||
@node Fonts, Frameworks, DocTemplates, Folders inside Library
|
||||
@subsubsection Fonts
|
||||
|
||||
This directory contains fonts and files for organizing font information.
|
||||
|
||||
This folder is accessed as the @code{Fonts} folder inside
|
||||
@code{Library}.
|
||||
|
||||
@node Frameworks, Images, Fonts, Folders inside Library
|
||||
@subsubsection Frameworks
|
||||
|
||||
This directory contains frameworks. Frameworks are a type of bundle,
|
||||
which include, within their directory structure, a shared library
|
||||
providing a specific functionality (or group of related
|
||||
functionalities), and all resources required by that shared library.
|
||||
|
||||
All frameworks must have the extension @file{framework}, to indicate
|
||||
their usage.
|
||||
|
||||
Use of frameworks is generally discouraged, as it is difficult to
|
||||
support them in a clean way on multiple platforms. Bundles are a
|
||||
better method of organizing shared collections of resources and code.
|
||||
|
||||
In GNUmakefiles, this location is available via the
|
||||
@code{GNUSTEP_FRAMEWORKS} variable, which is the location for the
|
||||
domain in which the software will be installed. You can also
|
||||
reference the locations in the various domains directly by using the
|
||||
variables @code{GNUSTEP_SYSTEM_FRAMEWORKS},
|
||||
@code{GNUSTEP_NETWORK_FRAMEWORKS}, @code{GNUSTEP_LOCAL_FRAMEWORKS} and
|
||||
@code{GNUSTEP_USER_FRAMEWORKS}.
|
||||
|
||||
In gnustep-base, the @code{Frameworks} locations are available by
|
||||
using the @code{GSFrameworksDirectory} directory key for
|
||||
@code{NSSearchPathForDirectoriesInDomains()}.
|
||||
|
||||
@node Images, Libraries/Java, Frameworks, Folders inside Library
|
||||
@subsubsection Images
|
||||
|
||||
@node Libraries/Java, Libraries/Resources, Images, Folders inside Library
|
||||
@subsubsection Libraries/Java
|
||||
|
||||
This directory contains Java classes. If you are using Java with
|
||||
GNUstep, you probably want to make sure these directories are in your
|
||||
CLASSPATH.
|
||||
|
||||
In GNUmakefiles, this location is available via the
|
||||
@code{GNUSTEP_JAVA} variable, which is the location for the domain in
|
||||
which the software will be installed. You can also reference the
|
||||
locations in the various domains directly by using the variables
|
||||
@code{GNUSTEP_SYSTEM_JAVA}, @code{GNUSTEP_NETWORK_JAVA},
|
||||
@code{GNUSTEP_LOCAL_JAVA} and @code{GNUSTEP_USER_JAVA}.
|
||||
|
||||
In gnustep-base, you can access the @code{Libraries/Java} location as
|
||||
the @code{Libraries/Java} folder inside the @code{Library} location.
|
||||
|
||||
@node Libraries/Resources, KeyBindings, Libraries/Java, Folders inside Library
|
||||
@subsubsection Libraries/Resources
|
||||
|
||||
This directory contains resources used by shared libraries. In
|
||||
GNUstep a shared library can have an associated resource bundle (a
|
||||
bundle only composed of resources, with no object file), which is then
|
||||
installed into this directory.
|
||||
|
||||
For example, @code{gnustep-base} will get its resource bundle
|
||||
installed into
|
||||
@code{GNUSTEP_SYSTEM_LIBRARY/Libraries/Resources/gnustep-base}.
|
||||
|
||||
In GNUmakefiles, this location is available via the
|
||||
@code{GNUSTEP_RESOURCES} variable, which is the location for the
|
||||
domain in which the software will be installed. You can also
|
||||
reference the locations in the various domains directly by using the
|
||||
variables @code{GNUSTEP_SYSTEM_RESOURCES},
|
||||
@code{GNUSTEP_NETWORK_RESOURCES}, @code{GNUSTEP_LOCAL_RESOURCES} and
|
||||
@code{GNUSTEP_USER_RESOURCES}.
|
||||
|
||||
In gnustep-base, you can access the resource bundle associated with a
|
||||
library by using the @code{[NSBundle +bundleForLibrary:]} method (it
|
||||
is a GNUstep extension).
|
||||
|
||||
@node KeyBindings, PostScript, Libraries/Resources, Folders inside Library
|
||||
@subsubsection KeyBindings
|
||||
|
||||
@node PostScript, Services, KeyBindings, Folders inside Library
|
||||
@subsubsection PostScript
|
||||
|
||||
This directory contains directories for specific PostScript document
|
||||
types and definitions, allowing applications written using the GNUstep
|
||||
development environment to display PostScript documents, or
|
||||
communicate with printers using PostScript.
|
||||
|
||||
This folder is accessed as the @code{PostScript} folder inside
|
||||
@code{Library}.
|
||||
|
||||
@node Services, Sounds, PostScript, Folders inside Library
|
||||
@subsubsection Services
|
||||
|
||||
This directory contains bundles that are specifically built to provide
|
||||
functionality between different programs (for example, spell checking,
|
||||
creation of a note from text within an email application). Services
|
||||
that are installed on the system must an extension of ".service".
|
||||
|
||||
In GNUmakefiles, this location is available via the
|
||||
@code{GNUSTEP_SERVICES} variable, which is the location for the domain
|
||||
in which the software will be installed. You can also reference the
|
||||
locations in the various domains directly by using the variables
|
||||
@code{GNUSTEP_SYSTEM_SERVICES}, @code{GNUSTEP_NETWORK_SERVICES},
|
||||
@code{GNUSTEP_LOCAL_SERVICES} and @code{GNUSTEP_USER_SERVICES}.
|
||||
|
||||
In gnustep-base, you can access the @code{Services} location as a
|
||||
folder inside the @code{Library} location.
|
||||
|
||||
@node Sounds, Tools/Resources, Services, Folders inside Library
|
||||
@subsubsection Sounds
|
||||
|
||||
This directory contains sound files.
|
||||
|
||||
@node Tools/Resources, , Sounds, Folders inside Library
|
||||
@subsubsection Tools/Resources
|
||||
|
||||
This directory contains resources used by tools. In GNUstep a tool
|
||||
can have an associated resource bundle (a bundle only composed of
|
||||
resources, with no object file), which is then installed into this
|
||||
directory.
|
||||
|
||||
For example, a tool called @code{myTool} will get its resource bundle
|
||||
installed into
|
||||
@code{GNUSTEP_SYSTEM_LIBRARY/Tools/Resources/myTool}.
|
||||
|
||||
In GNUmakefiles, this location is available as the
|
||||
@file{Tools/Resources} folder inside the @code{Library} location.
|
||||
|
||||
In gnustep-base, you can access the resource bundle associated with
|
||||
your tool by using the @code{[NSBundle +mainBundle]} method (this
|
||||
semantic is a GNUstep extension).
|
||||
|
||||
@c TODO: Mention special directories, for example location of user defaults
|
||||
@c TODO: Mention special directories, for example location of makefiles
|
||||
|
||||
|
||||
@node Configuration, , Structure of a Domain, Top
|
||||
@section Configuration
|
||||
|
||||
GNUstep supports arbitrary filesystem layouts to map the locations in
|
||||
the various domains to directories on the filesystem.
|
||||
|
||||
When you run gnustep-make's ./configure program you can use the
|
||||
--with-layout=xxx flag to select the filesystem layout that you prefer
|
||||
(choosing between the ones in the FilesystemLayouts directory, or
|
||||
creating your own in there!).
|
||||
|
||||
For most users, this is all they need to know.
|
||||
|
||||
In this section we'll go more into the details of how the filesystem
|
||||
layout system internally works; this is only useful if you need to do
|
||||
something advanced with it, typically because you have multiple
|
||||
GNUstep installations or you are trying to do some custom packaging of
|
||||
GNUstep.
|
||||
|
||||
The filesystem layout is determined by the GNUstep configuration file
|
||||
(or if that is not present, by default values built into the GNUstep
|
||||
make and base packages when they were configured and built).
|
||||
|
||||
The location of the GNUstep configuration file is built in to the make and
|
||||
base packages when they are configured using the --with-config-file option
|
||||
to the configure script. The path specified must be an absolute one for
|
||||
the make package, but may also be a path relative to the location of the
|
||||
base library itsself (as dynamically linked into applications) for the
|
||||
base package.
|
||||
|
||||
However, the location of the configuration file may also be specified
|
||||
using the GNUSTEP_CONFIG_FILE environment variable, overriding the value
|
||||
built in to the package, at any time when using the make package to build
|
||||
or install software. Support for the environment variable may also
|
||||
be enabled for the make package when its configure script is run.
|
||||
|
||||
The GNUSTEP_CONFIG_FILE environment variable is particularly useful if
|
||||
you have multiple installations and need to easily switch between
|
||||
them.
|
||||
|
||||
@menu
|
||||
* File Format::
|
||||
* Windows (MINGW)::
|
||||
@end menu
|
||||
|
||||
@node File Format, Windows (MINGW), Configuration, Configuration
|
||||
@subsection File Format
|
||||
|
||||
By default, the configuration file is called GNUstep.conf and exists
|
||||
in /etc/GNUstep on a Unix-like system. This file is in a format
|
||||
suitable for being 'sourced' by the standard unix (Bourne) shell,
|
||||
consisting of lines of the form key=value, comments (everything on a
|
||||
line from the first hash (#) onwards), or blank lines.
|
||||
|
||||
This is very convenient on unix-like systems, but needs care for windows users.
|
||||
If a value contains whitespace or backslash characters (or the hash which
|
||||
would start a comment) it needs to be quoted by enclosing the whole value
|
||||
in single or double quotes. An alternative for values containing backslashes
|
||||
(the norm for a windows path) is to double up each backslash in an unquoted
|
||||
value.
|
||||
|
||||
The valid values for the keys in the GNUstep configuration file are
|
||||
documented in the GNUstep.conf file itself. Please check the
|
||||
GNUstep.conf.in file in your gnustep-make distribution for an
|
||||
up-to-date list of all the variables that you can change with
|
||||
explanations of what they do.
|
||||
|
||||
@node Windows (MINGW), , File Format, Configuration
|
||||
@subsection Windows (MINGW)
|
||||
|
||||
On ms-windows, for software development, you are likely to want to have an
|
||||
extra configuration file. This is because of the limitations of the
|
||||
make program (used to build and install software).
|
||||
|
||||
Basically the issue is that the make package doesn't really like the
|
||||
colons and backslashes in windows paths (using them is error prone)
|
||||
and can't tolerate whitespace in file names. So you want to do all
|
||||
the building in a unix-style environment using only unix-style paths.
|
||||
|
||||
On MSYS/MinGW this is done naturally by using the standard unix-style
|
||||
/etc/GNUstep/GNUstep.conf config file, where the location is inside
|
||||
the MSYS unix-style emulation system. This is what is normally done
|
||||
by gnustep-make, so there is nothing special you need to do here.
|
||||
|
||||
On the other hand, the base library (and all applications since they are
|
||||
built using it) wants to work with native windows paths so that applications
|
||||
behave naturally as far as the end users are concerned, and therefore needs a
|
||||
configuration file containing windows-style paths rather than unix-like
|
||||
ones.
|
||||
|
||||
So, you need a different config file to be used by gnustep-base at
|
||||
runtime. And this is enabled by default -- in fact gnustep-base will
|
||||
use ./GNUstep.conf as config file on MinGW, where the location is
|
||||
relative to the location of the gnustep-base.dll.
|
||||
|
||||
In other words, gnustep-make will use C:/xxx/etc/GNUstep/GNUstep.conf
|
||||
(where 'xxx' is the MSYS installation path), while gnustep-base will
|
||||
use a GNUstep.conf file in the same directory as the gnustep-base.dll.
|
||||
|
||||
This ./GNUstep.conf file normally does not even exist; gnustep-base's
|
||||
./configure will hardcode into gnustep-base.dll relative paths to all
|
||||
resources (relative from the installation location of
|
||||
gnustep-base.dll). If you modify the filesystem layout or relocate
|
||||
gnustep-base.dll, you should add a GNUstep.conf file with
|
||||
gnustep-base.dll that contains the relative locations of the
|
||||
directories (relative to the location of gnustep-base.dll).
|
||||
|
||||
It is recommended that this ./GNUstep.conf always contains relative
|
||||
paths to make relocation easier.
|
||||
|
||||
@bye
|
||||
\bye
|
|
@ -1,498 +0,0 @@
|
|||
\input texinfo @c -*-texinfo-*-
|
||||
@c GNUstep installation instructions
|
||||
@c %**start of header
|
||||
@setfilename gnustep-howto.info
|
||||
@settitle GNUstep HOWTO
|
||||
@c %**end of header
|
||||
@set HOWTO
|
||||
@setcontentsaftertitlepage
|
||||
@smallbook
|
||||
|
||||
@titlepage
|
||||
@title GNUstep HOWTO
|
||||
@subtitle Installing the GNUstep developement system
|
||||
|
||||
@vskip 0pt plus 1filll
|
||||
@emph{This document explains how to build the different components of
|
||||
the GNUstep core libraries.}
|
||||
|
||||
Last Update: @today{}
|
||||
|
||||
@page
|
||||
@vskip 0pt plus 1filll
|
||||
Copyright @copyright{} 1996 - 2007 Free Software Foundation, Inc.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.1 or
|
||||
any later version published by the Free Software Foundation.
|
||||
|
||||
@end titlepage
|
||||
|
||||
@ifinfo
|
||||
@format
|
||||
GNUstep HOWTO
|
||||
*************
|
||||
|
||||
Last Update: @today{}
|
||||
|
||||
This document explains how to build the different components of the
|
||||
GNUstep core libraries and GNUstep Launchpad.
|
||||
|
||||
Copyright (C) 1996 - 2007 Free Software Foundation, Inc.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Public License, Version 1.0 or
|
||||
any later version published by the Free Software Foundation.
|
||||
@end format
|
||||
|
||||
@end ifinfo
|
||||
|
||||
@include version.texi
|
||||
|
||||
@node Top, Introduction, (dir), (dir)
|
||||
|
||||
@menu
|
||||
* Introduction::
|
||||
* Preliminaries::
|
||||
* Compiling and Installing::
|
||||
* Additional Installation::
|
||||
* Tools and Applications::
|
||||
* Machine Specific::
|
||||
* Source via SVN::
|
||||
@end menu
|
||||
|
||||
@node Introduction, Preliminaries, Top, Top
|
||||
@chapter Introduction
|
||||
|
||||
This document explains how to build the GNUstep core libraries. The
|
||||
core libraries, along with associated tools and other files provide
|
||||
everything necessary for a working GNUstep system.
|
||||
|
||||
In order to easily compile and debug GNUstep projects, you will need the
|
||||
GNU Objective-C compiler @samp{GCC} as well as various other GNU packages.
|
||||
|
||||
You will need at least 80Mb of hard disk space (150Mb prefered) in order
|
||||
to compile the GNUstep core libraries.
|
||||
|
||||
@node Preliminaries, Compiling and Installing, Introduction, Top
|
||||
@chapter Summary
|
||||
|
||||
In order to compile the libraries, you need to compile and install
|
||||
the following packages first (if you don't already have them):
|
||||
|
||||
@itemize @bullet
|
||||
@item gcc (Version 2.95 or greater, 3.0.4 or greater recommended)
|
||||
@item GNU make (Version 3.75 or greater)
|
||||
@item gdb (Version 6.0 or greater recommended), if you plan to do any debugging
|
||||
@end itemize
|
||||
|
||||
You may also need to install some of the following libraries and
|
||||
packages described below. Most of these packages are optional, but some
|
||||
are required.
|
||||
|
||||
@table @samp
|
||||
@item ffcall libraries (HIGHLY RECOMMENDED)
|
||||
This is a library that provides stack-frame handling for NSInvocation
|
||||
and NSConnection. This library is highly recommended. The previous
|
||||
builtin method for stack frame handling is no longer supported and may
|
||||
be removed in the future. ffcall is under GNU GPL. As a special
|
||||
exception, if used in GNUstep or in derivate works of GNUstep, the
|
||||
included parts of ffcall are under GNU LGPL.
|
||||
|
||||
@item libffi library (ALTERNATIVE RECOMMENDATION)
|
||||
This is a library that provides stack frame handling for NSInvocation
|
||||
and NSConnection similar to ffcall.
|
||||
Use this instead of ffcall. You don't need both.
|
||||
|
||||
@item libxml2 (RECOMMENDED)
|
||||
The libxml library (Version 2) is used to translate some of the
|
||||
documentation for GNUstep and to provide suport for MacOS-X compatible
|
||||
XML-based property-lists. It is not required, but you have to explicitly
|
||||
disable use of XML when compiling GNUstep base if you do not have it.
|
||||
|
||||
@item libxslt (OPTIONAL)
|
||||
Stylesheet support for use with XML.
|
||||
|
||||
@item openssl (OPTIONAL)
|
||||
The openssl library is used to provide support for https connections by
|
||||
the NSURL and HSURLHandle classes. This functionality is
|
||||
compiled as a separate bundle since the OpenSSL license is not
|
||||
compatible with GPL, and in the hopes that if someone writes an openssl
|
||||
replacement, it can quickly be used by creating another bundle.
|
||||
|
||||
@item libiconv (OPTIONAL)
|
||||
Note: Do not install this library unless you are sure you need it.
|
||||
You probably don't need it except perhaps on MinGW.
|
||||
Unicode support functions (iconv) come with glibc version 2.1 or greater. If
|
||||
you don't have glibc (try iconv --version), you can get the separate
|
||||
libiconv library from
|
||||
@url{http://clisp.cons.org/~haible/packages-libiconv.html}. However,
|
||||
neither one is required to use GNUstep.
|
||||
|
||||
@item The TIFF library (libtiff) (Version 3.4beta36 or greater) (REQUIRED)
|
||||
The GUI library uses this to handle loading and saving TIFF images.
|
||||
|
||||
@item The JPEG library (libjpeg) (RECOMMENDED)
|
||||
The GUI library uses this to handle loading JPEG images.
|
||||
|
||||
@item The PNG library (libpng) (RECOMMENDED)
|
||||
The GUI library uses this to handle loading PNG images.
|
||||
|
||||
@item gif or ungif (OPTIONAL)
|
||||
The GUI library uses either one of these libraries to load GIF images.
|
||||
|
||||
@item aspell (OPTIONAL)
|
||||
The GUI library uses this to handle spell checking.
|
||||
|
||||
@item cups (OPTIONAL)
|
||||
The GUI library uses this to handle interface to the CUPS print servers.
|
||||
|
||||
@item audiofile (OPTIONAL)
|
||||
The GUI library uses this for playing sound files.
|
||||
|
||||
@item portaudio (OPTIONAL)
|
||||
The GUI library uses this for the sound server. Use v19, which has
|
||||
several API changes since the previous version. v19 hasn't actually been
|
||||
formally released, but several distributions (SuSE, etc) use it anyway.
|
||||
|
||||
@item freetype2 (RECOMMENDED, REQUIRED for art backend)
|
||||
This is used for font information. Freetype2 cache API is in flux.
|
||||
GNUstep tries to account for
|
||||
this, but if you get errors about undefined FTC_ symbols, you might be
|
||||
using an unsupported version of freetype.
|
||||
|
||||
@item libart_lgpl2 (REQUIRED for art backend only)
|
||||
Drawing library for the art backend.
|
||||
|
||||
@item WindowMaker (Version >= 0.62) (OPTIONAL)
|
||||
GNUstep and WindowMaker work together to provide a consistant interface.
|
||||
Although it is not required, GNUstep will work much better if you use it
|
||||
with the WindowMaker window manager.
|
||||
Get WindowMaker from @url{http://www.windowmaker.info}.
|
||||
|
||||
@item gnustep-objc package (REQUIRED BUT ONLY for gcc version < 3.0 or MINGW/Cygwin)
|
||||
Note: Do not install this library unless you are sure you need it.
|
||||
You probably don't need it except on MinGW and Cygwin (regardless of the
|
||||
gcc version you have).
|
||||
This is a special version of the Objective-C runtime that is compiled
|
||||
as a shared library.
|
||||
It is available at @url{ftp://ftp.gnustep.org/pub/gnustep/libs} which
|
||||
compiles using the GNUstep Makefile package (so you don't have to get the
|
||||
entire gcc dist). Make sure to set the THREADING variable in the GNUmakefile.
|
||||
It's possible to compile the library static (make shared=no) and
|
||||
just copy to the place where the gcc libobjc library is (type gcc -v to
|
||||
get this location). Note you have to install gnustep-make (below) before
|
||||
installing this library.
|
||||
|
||||
@item GDB (OPTIONAL)
|
||||
GDB can be obtained from @url{ftp://ftp.gnu.org/gnu/gdb}. As of release
|
||||
6.0, gdb has special support for debugging Objective-C programs.
|
||||
|
||||
@item TeX (OPTIONAL)
|
||||
You need a TeX implementation, like tetex, to compile some of the
|
||||
documentation (although most of that is available on the web).
|
||||
@end table
|
||||
|
||||
@node Compiling and Installing, Additional Installation, Preliminaries, Top
|
||||
@chapter Compiling and Installing the packages
|
||||
|
||||
Get the following individual packages:
|
||||
|
||||
@itemize @bullet
|
||||
@item gnustep-make
|
||||
@item gnustep-base
|
||||
@item gnustep-gui
|
||||
@item gnustep-back
|
||||
@end itemize
|
||||
|
||||
See @url{http://www.gnustep.org} for information on where to get these
|
||||
packages.
|
||||
|
||||
Make sure you install (if necessary) all the previously mentioned
|
||||
libraries first before configuring and building GNUstep.
|
||||
|
||||
You should install these packages as root (read special note for the
|
||||
gnustep-base library, below, if you cannot do this).
|
||||
|
||||
For installation on specific systems, read the machine specific
|
||||
instructions at the end of this document or appropriate README files in
|
||||
the gnustep-make Documentation directory (such as README.MingW for Windows).
|
||||
|
||||
@menu
|
||||
* Core Package::
|
||||
@end menu
|
||||
|
||||
@node Core Package, , Compiling and Installing, Compiling and Installing
|
||||
@section Installing the Core Libraries
|
||||
|
||||
The GNUstep packages uses the Autoconf mechanism for configuration; it
|
||||
checks some host capabilities which are used by all GNUstep software.
|
||||
The first package you will compile is gnustep-make. To configure
|
||||
gnustep-make just type:
|
||||
|
||||
@example
|
||||
./configure
|
||||
@end example
|
||||
|
||||
The GNUstep makefile package can be configured to use different types
|
||||
of filesystem layouts. By default, GNUstep is installed with a
|
||||
GNUstep filesystem layout into /usr/GNUstep. That is a good,
|
||||
recommended default if you don't have an opinion on which filesystem
|
||||
layout to use.
|
||||
|
||||
But you can also install it somewhere else by using the prefix
|
||||
parameter; the following command makes /usr/local/GNUstep the root
|
||||
directory:
|
||||
|
||||
@example
|
||||
./configure --prefix=/usr/local/GNUstep
|
||||
@end example
|
||||
|
||||
You can also install GNUstep using an FHS layout (or some other filesystem layout
|
||||
of your choice) by using the with-layout parameter; the following command
|
||||
configures GNUstep to use the standard FHS (unix) filesystem layout:
|
||||
|
||||
@example
|
||||
./configure --with-layout=fhs
|
||||
@end example
|
||||
|
||||
In this document we will always present examples that assume that you
|
||||
are using the default GNUstep filesystem layout in /usr/GNUstep. If
|
||||
you are using a different layout, you will need to make the obvious
|
||||
changes.
|
||||
|
||||
@menu
|
||||
* Alternate Library Setup::
|
||||
* Individual Packages::
|
||||
@end menu
|
||||
|
||||
@node Alternate Library Setup, Individual Packages, Core Package, Core Package
|
||||
@subsection Alternate Library Setup
|
||||
|
||||
Read the installation instructions in the Makefile package (make) for more
|
||||
installation options. Make sure you use the same
|
||||
configuration options when configuring each GNUstep library.
|
||||
|
||||
@node Individual Packages, , Alternate Library Setup, Core Package
|
||||
@subsection Building the Package
|
||||
|
||||
To build the individual packages, use this familiar set of commands for
|
||||
each pacakge (add any additional options you decide upon):
|
||||
|
||||
@example
|
||||
./configure
|
||||
make
|
||||
make install
|
||||
@end example
|
||||
|
||||
Start with the Makefile Package (gnustep-make). After installing
|
||||
gnustep-make you need to execute GNUstep's shell configuration script,
|
||||
as follows:
|
||||
|
||||
@example
|
||||
. /usr/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
|
||||
|
||||
You need to make sure your environment is properly setup in order to
|
||||
compile and run GNUstep software. The steps to setup your environment
|
||||
differ slightly depending on your filesystem layout.
|
||||
|
||||
There is a way of setting up your environment that always works:
|
||||
sourcing the @file{GNUstep.sh} shell script before using GNUstep. The
|
||||
shell script @file{GNUstep.sh} is located in the Makefile package; you
|
||||
may want to add it to your shell startup file (such as
|
||||
@file{.profile}). For instance, if you installed GNUstep with the
|
||||
default GNUstep filesystem layout in @file{/usr/GNUstep}, then adding
|
||||
|
||||
@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 you installed GNUstep somewhere else, you need to
|
||||
replace @file{/usr/GNUstep/System/Library/Makefiles} with the path to
|
||||
your @file{GNUstep.sh} script). The script defines environment
|
||||
variables that are needed to find GNUstep files and executables.
|
||||
|
||||
Users of csh need to use the @file{GNUstep.csh} script. Read the make
|
||||
package @file{README} for more info. Some systems, like GNU/Linux have
|
||||
an @file{/etc/profile.d} directory where scripts can be executed
|
||||
automatically. If you want to set up GNUstep for every user on your
|
||||
system, you can try copying/linking the @file{GNUstep.sh} there. For
|
||||
csh or tcsh, try
|
||||
|
||||
@example
|
||||
source /usr/GNUstep/System/Library/Makefiles/GNUstep.csh
|
||||
@end example
|
||||
|
||||
Finally, in most filesystem configuration it's also possible to
|
||||
manually set up your environment by setting PATH, the linker library
|
||||
paths and the @code{GNUSTEP_MAKEFILES} variable (instead of using
|
||||
@file{GNUstep.sh}). For example, on GNU/Linux (with a default GNUstep
|
||||
installation), instead of sourcing @file{GNUstep.sh} you could manually
|
||||
add the Tools directories to your PATH:
|
||||
|
||||
@example
|
||||
PATH="/usr/GNUstep/System/Tools:/usr/GNUstep/Local/Tools:$PATH"
|
||||
@end example
|
||||
|
||||
manually add @file{/usr/GNUstep/System/Library/Libraries} and
|
||||
@file{/usr/GNUstep/Local/Library/Libraries} to your
|
||||
@file{/etc/ld.so.conf} file (don't forget to run @code{ldconfig} every
|
||||
time you install a library), and set the environment variable
|
||||
@code{GNUSTEP_MAKEFILES} when you want to compile something:
|
||||
|
||||
@example
|
||||
GNUSTEP_MAKEFILES=/usr/GNUstep/System/Library/Makefiles
|
||||
@end example
|
||||
|
||||
@node GNUstep Home, Time Zone, Environment Setup, Additional Installation
|
||||
@section GNUstep Home
|
||||
|
||||
Your home GNUstep directory should be created automatically the first
|
||||
time you use a GNUstep tool or application. This is where user
|
||||
defaults are kept as well as other user configuration files. User
|
||||
installed apps, libraries, etc are also here (if the default user
|
||||
directory is used). By default this is the directory @file{GNUstep}
|
||||
under your home directory, but you can change this (see the
|
||||
gnustep-make installation documentation).
|
||||
|
||||
@node Time Zone, GNUstep deamons, GNUstep Home, Additional Installation
|
||||
@section Time Zone
|
||||
|
||||
In most cases, GNUstep should be able to determine your time zone, if
|
||||
you have already set it up correctly when setting up your
|
||||
computer. However, in some cases this might fail or the correct
|
||||
information may not be available. You can set it manually using the
|
||||
GNUstep defaults utility to set @kbd{Local Time Zone} to your local time
|
||||
zone. Type something like @kbd{defaults write NSGlobalDomain "Local
|
||||
Time Zone" GB}. Where @kbd{GB} is a time zone abbreviation.
|
||||
|
||||
See
|
||||
@file{/usr/GNUstep/System/Library/Libraries/gnustep-base/Versions/1.14/Resources/NSTimeZones/zones/}
|
||||
(or equivalent on your system depending on your filesystem layout) for
|
||||
typical time zones.
|
||||
|
||||
@node GNUstep deamons, , Time Zone, Additional Installation
|
||||
@section GNUstep deamons
|
||||
|
||||
Set up your system to execute some GNUstep deamons. This is optional
|
||||
because if you don't do this, they will be started automatically when
|
||||
you run your first GNUstep app:
|
||||
|
||||
@itemize @bullet
|
||||
@item gdomap - Put this in a system startup file, like @file{/etc/rc.local} or @file{/etc/rc.d/rc.local} (customize for your system)
|
||||
@example
|
||||
if [ -f /usr/GNUstep/System/Tools/gdomap ]; then
|
||||
/usr/GNUstep/System/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.
|
||||
@item make_services - Not a deamon, but a tool that needs to be run everytime
|
||||
you install a new Application or service. This is NOT run automatically.
|
||||
@end itemize
|
||||
|
||||
@example
|
||||
if [ `gdomap -L GDNCServer | grep -c Unable` == 1 ]; then
|
||||
echo "Starting GNUstep services..."
|
||||
gdnc
|
||||
gpbs
|
||||
fi
|
||||
make_services
|
||||
@end example
|
||||
|
||||
|
||||
@node Tools and Applications, Machine Specific, Additional Installation, Top
|
||||
@chapter Test Tools and Applications
|
||||
|
||||
Example applications are located in the gstep-examples package. To
|
||||
build these, just uncompress and untar this package, cd to the
|
||||
appropriate directory, and type make. You will need to install the
|
||||
GNUstep core libraries first before doing this.
|
||||
|
||||
To run the examples. Use the openapp utility that is part of the
|
||||
GNUstep makefile package (and stored in
|
||||
@file{/usr/GNUstep/System/Tools}). Usage is:
|
||||
|
||||
@example
|
||||
openapp application_name [additional arguments to app]
|
||||
@end example
|
||||
|
||||
Good Luck!
|
||||
|
||||
@node Machine Specific, Source via SVN, Tools and Applications, Top
|
||||
@chapter Machine Specific Instructions
|
||||
|
||||
@include machines.texi
|
||||
|
||||
|
||||
@node Source via SVN, , Machine Specific, Top
|
||||
@chapter Getting Libraries via SVN
|
||||
|
||||
If you didn't get one of the snapshots, or if you want to be sure to
|
||||
stay on the bleading edge, then you should get the libraries via SVN. Go
|
||||
to @url{http://www.gnustep.org/resources/sources.html} for information on how
|
||||
to get the sourcecode.
|
||||
|
||||
If you haven't already done so, change to the directory, where you
|
||||
want the source to reside. To checkout all of the GNUstep repository,
|
||||
type
|
||||
@example
|
||||
svn co http://svn.gna.org/svn/gnustep/modules
|
||||
@end example
|
||||
|
||||
To check out only the @file{core}, which contains all the GNUstep core
|
||||
libraries:
|
||||
@example
|
||||
svn co http://svn.gna.org/svn/gnustep/modules/core
|
||||
@end example
|
||||
|
||||
After you have checked out the source you can compile it as
|
||||
usual. To update the source, go into the directory of the source tree
|
||||
you want to update, for example, go into 'base', and type:
|
||||
|
||||
@example
|
||||
svn update
|
||||
@end example
|
||||
|
||||
You don't have to re-checkout after you have the source, just update!
|
||||
|
||||
@bye
|
||||
\bye
|
|
@ -1,23 +0,0 @@
|
|||
if (defined($ENV{'GNUSTEP_WEB_ROOT'})) {
|
||||
open(TMPL,"<$ENV{'GNUSTEP_WEB_ROOT'}/secondary.html.template");
|
||||
$tmpl=join("",<TMPL>);
|
||||
close(TMPL);
|
||||
($T2H_EXTRA_HEAD,$T2H_AFTER_BODY_OPEN,$T2H_PRE_BODY_CLOSE_BAD) =
|
||||
($tmpl=~/<\/title>(.*)<\/head>.*<body>(.*<div id="main">).*(<\/div><\/div>.*)<\/body>/sm);
|
||||
}
|
||||
else {
|
||||
# this is added inside <HEAD></HEAD> after <TITLE> 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;
|
|
@ -1,382 +0,0 @@
|
|||
|
||||
@node Top, Introduction, (dir), (dir)
|
||||
@chapter GNUstep makefile package installation
|
||||
|
||||
@menu
|
||||
* Introduction::
|
||||
* Configuration::
|
||||
* Installation::
|
||||
* Setup::
|
||||
@end menu
|
||||
|
||||
@node Introduction, Configuration, Top, Top
|
||||
@section Introduction
|
||||
|
||||
If you are installing this package as part of the GNUstep core
|
||||
libraries, read the file GNUstep-HOWTO for more complete instructions
|
||||
on how to install the entire GNUstep package (including this package).
|
||||
GNUstep-HOWTO comes with this distribution.
|
||||
|
||||
This should be the first GNUstep package you install. Before
|
||||
installing this package, install ffcall or libffi and any other
|
||||
libraries that GNUstep may need (see the GNUstep-HOWTO). Read and
|
||||
follow the instructions on setting up the GNUstep environement below.
|
||||
Then install gnustep-base.
|
||||
|
||||
Make sure you've read the machine-specific instructions for your
|
||||
particular operating system and CPU. These instructions come with the
|
||||
GNUstep-HOWTO and are also located at the GNUstep web site at
|
||||
@url{http://www.gnustep.org}.
|
||||
|
||||
Quick installation instructions:
|
||||
|
||||
@example
|
||||
./configure
|
||||
make
|
||||
make install
|
||||
@end example
|
||||
|
||||
This will use the default GNUstep filesystem layout (in other words,
|
||||
all of GNUstep will end up installed into /usr/GNUstep). If you are on a
|
||||
Unix system, another popular option is
|
||||
|
||||
@example
|
||||
./configure --with-layout=fhs
|
||||
make
|
||||
make install
|
||||
@end example
|
||||
|
||||
which will use the FHS (in other words, all of GNUstep will end up
|
||||
installed into /usr/local).
|
||||
|
||||
To make and install the documentation:
|
||||
|
||||
@example
|
||||
cd Documentation
|
||||
make
|
||||
make install
|
||||
@end example
|
||||
|
||||
@node Configuration, Installation, Introduction, Top
|
||||
@section Configuration
|
||||
|
||||
The GNUstep packages uses the Autoconf mechanism for configuration; it
|
||||
checks some host capabilties which are used by all GNUstep software.
|
||||
To configure just type:
|
||||
|
||||
@example
|
||||
./configure
|
||||
@end example
|
||||
|
||||
The GNUstep makefile package needs to know which filesystem layout to
|
||||
use when installing; this determines the way that various directories
|
||||
in the GNUstep domains (SYSTEM, NETWORK, LOCAL, USER) are mapped to
|
||||
local directories on disk. In the FilesystemLayouts/README file you
|
||||
can find detailed information on filesystem layouts.
|
||||
|
||||
To specify a filesystem layout, use the --with-layout=xxx option. The
|
||||
default is
|
||||
|
||||
@example
|
||||
./configure --with-layout=gnustep
|
||||
@end example
|
||||
|
||||
which installs GNUstep in /usr/GNUstep using the GNUstep layout (that
|
||||
is, /usr/GNUstep/System, /usr/GNUstep/Local, ~/GNUstep). Another
|
||||
popular option is '--with-layout=fhs' which installs gnustep-make into
|
||||
FHS directories based on /usr/local. Check the FilesystemLayouts for
|
||||
more options.
|
||||
|
||||
If you want to install the same layout but in a different location
|
||||
(for example, /opt/gnustep), you can use --prefix=xxx,
|
||||
|
||||
@example
|
||||
./configure --prefix=/opt/gnustep
|
||||
@end example
|
||||
|
||||
If you're confused and want to see exactly what directories will be
|
||||
used for a certain choice of ./configure flags, have a look at the
|
||||
GNUstep.conf file that is generated by ./configure. It will list the
|
||||
full paths to all the relevant GNUstep directories that would be used
|
||||
if you install the software with that configuration.
|
||||
|
||||
To see more options you can use with configure, type
|
||||
|
||||
@example
|
||||
./configure --help
|
||||
@end example
|
||||
|
||||
Look particularly at the end of the list that configure gives, as these
|
||||
options are specific to GNUstep. Some of these are described below.
|
||||
|
||||
With the GNUstep packages you can use various switches, such as shared
|
||||
and debug, to control compilation. for example, ``make shared=no
|
||||
debug=yes'' compiles using static libraries with debugging
|
||||
information. (Make sure you use the same switches for every package you
|
||||
compile, and also when you install).
|
||||
|
||||
@menu
|
||||
* Backend Bundles::
|
||||
* Alternate Libraries::
|
||||
* Alternate Thread Library::
|
||||
* Flat Structure::
|
||||
* Cross-Compiling::
|
||||
@end menu
|
||||
|
||||
@node Backend Bundles, Alternate Libraries, Configuration, Configuration
|
||||
@subsection Backend Bundles
|
||||
|
||||
By default, the gnustep-make package specifies that GUI backends are built
|
||||
as a bundle and loaded in at runtime. This allows one to switch backends
|
||||
by simply redefining a user default. If you do not want this behavior (for
|
||||
instance, if bundles do not work on your platform), it can be disabled using
|
||||
|
||||
@example
|
||||
--disable-backend-bundle
|
||||
@end example
|
||||
|
||||
in the arguments to configure.
|
||||
|
||||
@node Alternate Libraries, Alternate Thread Library, Backend Bundles, Configuration
|
||||
@subsection Alternate Library Setup
|
||||
|
||||
You can specify compilation of alternate libraries by using the
|
||||
with-library-combo option.
|
||||
|
||||
@example
|
||||
./configure --with-library-combo=apple-gnu-gnu
|
||||
@end example
|
||||
|
||||
to compile with Apple's runtime on Darwin, for example. See the DESIGN
|
||||
document for more examples of the variety of library combos.
|
||||
|
||||
@node Alternate Thread Library, Flat Structure, Alternate Libraries, Configuration
|
||||
@subsection Alternate Thread Library
|
||||
|
||||
You can specify compilation of an alternate thread library from the one that
|
||||
is normally used (or if GNUstep does not know what your normal library is)
|
||||
with the with-thread-lib option.
|
||||
|
||||
@example
|
||||
./configure --with-thread-lib="-L/usr/local/lib -lgthread -lglib"
|
||||
@end example
|
||||
|
||||
to use libgthread as your threading library. Note that the Objective-C
|
||||
runtime (libobjc) must have a compatible threading backend in order to
|
||||
use this threading library and you must set the appropriate threading backend
|
||||
by hand in the GNUmakefile if you are using gnustep-objc. If you also need
|
||||
to set compiler flags, use the CPPFLAGS variable when calling configure:
|
||||
|
||||
@example
|
||||
CPPFLAGS="-I/usr/local/include" ./configure --with-thread-lib="-L/usr/local/lib -lgthread -lglib"
|
||||
@end example
|
||||
|
||||
@node Flat Structure, Cross-Compiling, Alternate Thread Library, Configuration
|
||||
@subsection Configuring for a non-flattened structure
|
||||
|
||||
GNUstep is normally configured to support a single target/combo. If you are
|
||||
interested in supporting more than one target and/or combo, it's possible to
|
||||
configure GNUstep to use a non-'flattened' directory structure.
|
||||
You do this by supplying the @code{--disable-flattened} argument to configure.
|
||||
You might also want to supply the @code{--enable-multi-platform} option.
|
||||
|
||||
In a flattened structure, files are stored at the top-level rather than
|
||||
in a @code{$(GNUSTEP_CPU)/$(GNUSTEP_OS)/$(LIBRARY_COMBO)} subdirectory.
|
||||
|
||||
@node Cross-Compiling, , Flat Structure, Configuration
|
||||
@subsection Configuring for a cross-compile target
|
||||
|
||||
By default when you run configure, it assumes that you want to create
|
||||
executables for the same host that you are compiling on; however, the
|
||||
GNUstep makefile package has been designed to support cross-compiling
|
||||
just as easily as normal compiling. In order to add a cross-compile
|
||||
target to the GNUstep makefile package, you must rerun configure for
|
||||
that target and reinstall the makefile package. By rerunning
|
||||
configure, the appropriate target settings are determined, and
|
||||
reinstalling the makefile package installs the appropriate files for
|
||||
that target. The target parameter is used to specify the target
|
||||
platform for cross-compiling:
|
||||
|
||||
@example
|
||||
./configure --target=i386-mingw32
|
||||
make install
|
||||
@end example
|
||||
|
||||
GNUstep normally is configured to work with only one target. To work
|
||||
with multiple targets, you'll need to add @code{--disable-flattened}
|
||||
and @code{--enable-multi-platform} to the configure flags. Files for
|
||||
the different targets will not be overwritten when you configure and install
|
||||
the make package several times.
|
||||
|
||||
@example
|
||||
./configure --disable-flattened --enable-multi-platform --target=i386-mingw32
|
||||
make install
|
||||
./configure --disable-flattened --enable-multi-platform --target=sparc-solaris2.5
|
||||
make install
|
||||
./configure --disable-flattened --enable-multi-platform --target=alpha-linux-gnu
|
||||
make install
|
||||
@end example
|
||||
|
||||
@node Installation, Setup, Configuration, Top
|
||||
@section Installation
|
||||
|
||||
After you configure the GNUstep makefile package, you can go straight
|
||||
into installation (there is nothing to compile):
|
||||
|
||||
@example
|
||||
make install
|
||||
@end example
|
||||
|
||||
After you have installed the GNUstep makefile package, there might
|
||||
still be some minor administration to be performed, depending on your
|
||||
configuration.
|
||||
|
||||
@node Setup, UserDomainSetup, Installation, Top
|
||||
@section Setting up the GNUstep environment
|
||||
|
||||
GNUstep-make will install all programs and libraries in the
|
||||
directories specified by the filesystem layout that you choose.
|
||||
|
||||
In here we explain how to set up your environment so that the
|
||||
operating system can find the programs and libraries in these
|
||||
directories.
|
||||
|
||||
The procedure depends on the type of layout (flattened or
|
||||
non-flattened), and on the amount of advanced options that you want to
|
||||
use.
|
||||
|
||||
@menu
|
||||
* Flattened::
|
||||
* Non-Flattened::
|
||||
* UserDomainSetup::
|
||||
* MultipleInstallations::
|
||||
@end menu
|
||||
|
||||
@node Flattened, Non-Flattened, Setup, Setup
|
||||
@subsection Flattened (default) Setup
|
||||
|
||||
In a flattened setup (the default unless you use the
|
||||
--disable-flattened configure argument), you can use a simple setup
|
||||
where you just need to make sure that the few program and library
|
||||
directories are found by the shell/linker.
|
||||
|
||||
Check the description of your filesystem in FilesystemLayouts to find
|
||||
precise simplified instructions for your layout.
|
||||
|
||||
In general, you need to your GNUSTEP_SYSTEM_TOOLS,
|
||||
GNUSTEP_NETWORK_TOOLS and GNUSTEP_LOCAL_TOOLS to your PATH, and add
|
||||
your GNUSTEP_SYSTEM_LIBRARIES, GNUSTEP_NETWORK_LIBRARIES and
|
||||
GNUSTEP_LOCAL_LIBRARIES to your linker paths (which is /etc/ld.so.conf
|
||||
on GNU/Linux).
|
||||
|
||||
To build software, you also need to set GNUSTEP_MAKEFILES. (PS: This requirement
|
||||
is likely to go away soon)
|
||||
|
||||
@node Non-Flattened, , Flattened, Setup
|
||||
@subsection Non-Flattend (fat binary) Setup
|
||||
|
||||
(Advanced configuration)
|
||||
|
||||
If the setup is non-flattened (ie, fat binary support is enabled)
|
||||
programs and libraries will be installed in appropriate subdirectories
|
||||
so that binaries for different machines/library-combos can coexist.
|
||||
This is the case only if you configure gnustep-make with the option
|
||||
--disable-flattened.
|
||||
|
||||
In this case, the recommended solution for setting up the GNUstep
|
||||
environment is to source the GNUstep.sh file.
|
||||
|
||||
@example
|
||||
. /usr/GNUstep/System/Library/Makefiles/GNUstep.sh
|
||||
@end example
|
||||
|
||||
(change the path to be the path to your GNUstep.sh file on disk.
|
||||
Common cases include /usr/GNUstep/System/Library/Libraries/Makefiles
|
||||
and /usr/local/share/GNUstep/Makefiles)
|
||||
|
||||
You can run this command in your shell every time, or you may want to
|
||||
add the command to your shell startup scripts - either the ones for
|
||||
your own user (for example, @file{.bash_profile} for Bash) or the ones
|
||||
for the whole system (for example, @file{/etc/profile} on GNU/Linux).
|
||||
|
||||
Please note that you need to execute this command both to build
|
||||
software using gnustep-make and to run software installed by
|
||||
gnustep-make.
|
||||
|
||||
@node UserDomainSetup, MultipleInstallations, Setup, Setup
|
||||
@section Setting up your GNUstep User domain
|
||||
|
||||
(Advanced configuration)
|
||||
|
||||
The USER domain is generally expected to be in your home directory;
|
||||
you can use the USER domain to install programs or libraries in your
|
||||
home directory without affecting other users.
|
||||
|
||||
If you want to access programs or libraries installed in your USER
|
||||
domain, then you really need to source GNUstep.sh in all cases (both
|
||||
flattened and non-flattened), as explained in the Non-Flattened
|
||||
section.
|
||||
|
||||
If you want to change the filesystem layout of your USER domain
|
||||
(without reinstalling gnustep-make or affecting other people's USER
|
||||
domains), you can do so at runtime by creating a file called
|
||||
~/.GNUstep.conf (this might have a different name if your filesystem
|
||||
layout specifies otherwise).
|
||||
|
||||
In that file, you can set all the GNUSTEP_USER_* variables set in
|
||||
GNUstep.conf. Check your GNUstep.conf for a full description. Here
|
||||
is an example in which all the GNUstep domain is moved into
|
||||
~/Test/GNUstep instead of ~/GNUstep:
|
||||
|
||||
@example
|
||||
GNUSTEP_USER_DIR=Test/GNUstep
|
||||
@end example
|
||||
|
||||
@node MultipleInstallations, , UserDomainSetup, Setup
|
||||
@section Having multiple gnustep-makes installed at the same time
|
||||
|
||||
(Advanced configuration)
|
||||
|
||||
You can install gnustep-make multiple times in different directories
|
||||
by using a different config file for each. But if you do, then you
|
||||
must make sure that you can easily switch the operating system paths
|
||||
from one installation to the other. An easy way to do this is to
|
||||
configure your GNUstep by using GNUstep.sh as explained in the
|
||||
non-flattened instructions.
|
||||
|
||||
Your default gnustep-make installation is the one described in the
|
||||
default GNUstep.conf file for the system; on GNU/Linux this is
|
||||
@file{/etc/GNUstep/GNUstep.conf}. You can create a second one that
|
||||
uses a different config file; for example:
|
||||
|
||||
@example
|
||||
./configure --prefix=/opt/mytest --with-config-file=/etc/GNUstep-mytest.conf
|
||||
@end example
|
||||
|
||||
When you install, this second instance of gnustep-make will reside in
|
||||
@file{/opt/mytest}, and have @file{/etc/GNUstep-mytest.conf} as config
|
||||
file.
|
||||
|
||||
To use this second installation instead of the first one, you only
|
||||
need to set the GNUSTEP_CONFIG_FILE variable to point to the next
|
||||
config file and source GNUstep.sh:
|
||||
|
||||
@example
|
||||
export GNUSTEP_CONFIG_FILE=/etc/GNUstep-mytest.conf
|
||||
. /opt/mytest/System/Library/Makefies/GNUstep.sh
|
||||
@end example
|
||||
|
||||
To stop using a GNUstep installation, reset your GNUstep environment
|
||||
with the GNUstep-reset.sh script and destroy the variable
|
||||
GNUSTEP_CONFIG_FILE --
|
||||
|
||||
@example
|
||||
. /opt/mytest/System/Library/Makefies/GNUstep-reset.sh
|
||||
unset GNUSTEP_CONFIG_FILE
|
||||
@end example
|
||||
|
||||
After this, you are ready to start using a new one (by setting a new
|
||||
GNUSTEP_CONFIG_FILE and then sourcing the GNUstep.sh of the new one).
|
||||
|
||||
@bye
|
||||
|
|
@ -1,198 +0,0 @@
|
|||
\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}
|
|
@ -1,875 +0,0 @@
|
|||
\input texinfo @c -*-texinfo-*-
|
||||
@setfilename machines.info
|
||||
@settitle Platform Compatibility
|
||||
|
||||
@ifclear HOWTO
|
||||
@c Machine Specific, Compilers, , (DIR)
|
||||
@node Machine Specific, Compilers, , (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.
|
||||
|
||||
If you have compiled GNUstep on a specific machine, please send information
|
||||
about what you needed and any special instructions needed to
|
||||
GNUstep @email{bug-gnustep@@gnu.org}.
|
||||
|
||||
@menu
|
||||
* Compilers::
|
||||
* CentOS/i386::
|
||||
* Darwin/ix86::
|
||||
* Darwin/PowerPC::
|
||||
* Debian/Alpha::
|
||||
* Debian/i386::
|
||||
* Debian/em64t::
|
||||
* Debian/PowerPC::
|
||||
* Debian/SPARC::
|
||||
* FedoraCore/i386::
|
||||
* FreeBSD 5.x::
|
||||
* FreeBSD 4.x::
|
||||
* FreeBSD 3.x::
|
||||
* FreeBSD 2.x::
|
||||
* Gentoo/i686::
|
||||
* Gentoo/PPC::
|
||||
* Gentoo/amd64::
|
||||
* Gentoo/alpha::
|
||||
* Gentoo/sparc::
|
||||
* Irix 6.5/MIPS::
|
||||
* MacOSX/PowerPC::
|
||||
* MkLinux/PowerPC::
|
||||
* NetBSD/i386::
|
||||
* NetBSD/Sparc64::
|
||||
* Netwinder::
|
||||
* OpenBSD 3.x::
|
||||
* OSF/Alpha::
|
||||
* RedHat/i386::
|
||||
* Slackware/Intel::
|
||||
* Slackware/Sparc::
|
||||
* Solaris 2.5.1/Sparc::
|
||||
* Solaris/Sparc::
|
||||
* Solaris 2.7/Intel::
|
||||
* Suse 6.x/Intel::
|
||||
* Suse/Intel::
|
||||
* Suse 7.x/PPC::
|
||||
* Unixware-2.1.3/Intel::
|
||||
* Windows with CYGWIN::
|
||||
* Windows with MinGW::
|
||||
* Yellowdog/PowerPC::
|
||||
@end menu
|
||||
|
||||
@c -----------------------------------------
|
||||
@node Compilers, CentOS/i386, Machine Specific, Machine Specific
|
||||
@section Compilers
|
||||
|
||||
A recommended compiler is listed for each machine, if known. You should try
|
||||
to use the recommended compiler for compiling GNUstep, as GNUstep is quite
|
||||
complex and tends provoke a lot of errors in some compilers. Even versions
|
||||
newer than the listed compiler may not work, so don't just get the latest
|
||||
version of a compiler expecting it to be better than previous versions.
|
||||
|
||||
Compiler notes: If a recommended compiler is not listed, take note of the
|
||||
following information before choosing the compiler you use.
|
||||
@table @var
|
||||
@item egcs or gcc < 2.95
|
||||
Most likely will not work and is not supported.
|
||||
@item gcc 2.95.x
|
||||
Support for this compiler is deprecated as of Aug 2006. Mostly likely
|
||||
it will work in the near future and bug fixes will be accepted, but any
|
||||
bugs are considered non-critical.
|
||||
@item gcc 2.96
|
||||
Not an official gcc release. Some versions (Redhat, Mandrake) have problems
|
||||
that prevent GNUstep from being compiled correctly and cause
|
||||
mysterious errors. Not supported.
|
||||
@item gcc 3.0.x
|
||||
A fairly good compiler.
|
||||
@item gcc 3.1
|
||||
Several bugs where introduced in the version. It's probably better to
|
||||
avoid this one, although it might work fine.
|
||||
@item gcc 3.2.x
|
||||
Pretty good.
|
||||
@item gcc 3.3.x
|
||||
Recommended. Fixes some bugs relating to protocols as well as other
|
||||
improvements.
|
||||
@item gcc 3.4.x
|
||||
Recommended. The #import directive is no longer deprecated as of this
|
||||
version of the compiler.
|
||||
@item gcc 4.0
|
||||
Probably OK. Did start triggering compiler errors on parts of base, but
|
||||
there has been a workaround in base for that. Does not work on MacOSX.
|
||||
@item gcc 4.0.1
|
||||
Probably OK. This version should work on MacOSX.
|
||||
@item gcc 4.1.x
|
||||
4.1.0 and 4.1.1 don't work if you use precompiled headers.
|
||||
@end table
|
||||
|
||||
If your having mysterious trouble with a machine, try compiling GNUstep
|
||||
without optimization. Particularly in the newer GCC compilers,
|
||||
optimization can break some code. The easiest way to do this is when
|
||||
configuring, @kbd{CFLAGS="" ./configure}. Or when building,
|
||||
@kbd{make OPTFLAG=""}.
|
||||
|
||||
Also if you manually upgraded gcc and/or make, we recommend reading the
|
||||
documentation at @url{http://www.LinuxFromScratch.org} for tips on compiling
|
||||
and installing gcc and make. If you had GNUstep previously installed, make sure
|
||||
you completely remove all of it, including installed init scripts.
|
||||
|
||||
Support Notes:
|
||||
@table @var
|
||||
@item Supported
|
||||
Regularly used and tested by developers
|
||||
@item Release
|
||||
Tested before a release
|
||||
@item Unsupported
|
||||
Not regularly used or tested
|
||||
@item Unstable
|
||||
Has problems either building or running GNUstep or requires special
|
||||
setp procedures to run correctly.
|
||||
@end table
|
||||
|
||||
@c -----------------------------------------
|
||||
@node CentOS/i386, Darwin/ix86, Compilers, Machine Specific
|
||||
@section CentOS/ix86 (@emph{Supported})
|
||||
|
||||
This RedHat variant is well-tested and well-supported (tested at least
|
||||
up to CentOS release 4.4). For more information, please check the
|
||||
section on RedHat/i386 below.
|
||||
|
||||
@c -----------------------------------------
|
||||
@node Darwin/ix86, Darwin/PowerPC, CentOS/i386, Machine Specific
|
||||
@section Darwin/ix86 (@emph{Unsupported})
|
||||
|
||||
Currently tested on Darwin 7.x
|
||||
|
||||
@table @var
|
||||
@item Recommended compiler
|
||||
gcc 3.3.2 or greater 3.3.* versions.
|
||||
Older versions will not compile on Darwin and 3.4.* versions don't
|
||||
support GNU runtime compilation on Darwin currently (The GCC bug report
|
||||
is http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11572).
|
||||
|
||||
Default compiler (Apple GCC) has unknown problems.
|
||||
Download the FSF GCC compiler and configure it with
|
||||
-enable-threads=posix. You don't need binutils or anything else.
|
||||
Use the GNU runtime. Make sure to add
|
||||
@example
|
||||
export CC=/usr/local/bin/gcc (use the correct path to FSF gcc)
|
||||
@end example
|
||||
so that the correct compiler is found
|
||||
|
||||
@item Extra libs needed
|
||||
|
||||
Use ffcall because libffi hasn't been ported to Darwin x86.
|
||||
|
||||
@item Special Instructions
|
||||
|
||||
Read the @url{README.Darwin} file in the gnustep-make/Documentation
|
||||
directory for complete instructions.
|
||||
|
||||
@end table
|
||||
|
||||
@c -----------------------------------------
|
||||
@node Darwin/PowerPC, Debian/Alpha, Darwin/ix86, Machine Specific
|
||||
@section Darwin/PowerPC (@emph{Supported})
|
||||
|
||||
This section is for building the complete GNUstep system.
|
||||
This system will not interact at all with Mac OS X/Cocoa. It uses different
|
||||
complilers, different display systems, etc. For building GNUstep extensions
|
||||
to be used with Mac OS X (for instance, if you want to build something based
|
||||
on GNUstep, such as GSWeb or GNUMail), see the MacOSX/PowerPC section.
|
||||
|
||||
Currently tested on Darwin 6.x, 7.x, 8.x
|
||||
|
||||
@table @var
|
||||
@item Recommended compiler
|
||||
gcc 4.x, gcc 3.3.2 or greater 3.3.* versions.
|
||||
Older versions will not compile on Darwin and 3.4.* versions don't
|
||||
support GNU runtime compilation on Darwin currently (The GCC bug report
|
||||
is http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11572).
|
||||
|
||||
Default compiler (Apple GCC) has problems, mostly because it tries
|
||||
to link in Apple libraries that conflict with GNUstep.
|
||||
Get the FSF gcc-4 compiler using fink or
|
||||
download the FSF GCC compiler and configure it with
|
||||
-enable-threads=posix. You don't need binutils or anything else.
|
||||
Use the GNU runtime. Make sure to add
|
||||
@example
|
||||
export CC=gcc-4 (or use the correct path to FSF gcc)
|
||||
@end example
|
||||
so that the correct compiler is found
|
||||
|
||||
@item Extra libs needed
|
||||
Use libffi (not ffcall). This should be enabled by default in gnustep-base
|
||||
so you don't have to type --enable-libffi. For 6.x, you need the dlcompat
|
||||
library (from @url{www.opendarwin.org}) to load bundles (not needed for 7.x
|
||||
or later). libjpeg that comes with fink conflicts with the Apple libraries
|
||||
and screw up other apps on Mac OSX (like X11).
|
||||
|
||||
@item Special Instructions
|
||||
|
||||
Read the @url{README.Darwin} file in the gnustep-make/Documentation
|
||||
directory for complete instructions. If you compiled FSF gcc by hand,
|
||||
make sure to rename to GNU libobjc library to libobjc-gnu.dylib
|
||||
|
||||
@end table
|
||||
|
||||
See also the MacOSX/PowerPC section
|
||||
|
||||
@c -----------------------------------------
|
||||
@node Debian/Alpha, Debian/i386, Darwin/PowerPC, Machine Specific
|
||||
@section Debian/Alpha (@emph{Unsupported})
|
||||
|
||||
@c -----------------------------------------
|
||||
@node Debian/i386, Debian/em64t, Debian/Alpha, Machine Specific
|
||||
@section Debian/i386 (@emph{Supported})
|
||||
|
||||
Tested on sid.
|
||||
|
||||
@c -----------------------------------------
|
||||
@node Debian/em64t, Debian/PowerPC, Debian/i386, Machine Specific
|
||||
@section Debian/em64t (@emph{Supported})
|
||||
|
||||
Tested on 'unstable'.
|
||||
|
||||
@c -----------------------------------------
|
||||
@node Debian/PowerPC, Debian/SPARC, Debian/em64t, Machine Specific
|
||||
@section Debian/PowerPC (@emph{Supported})
|
||||
|
||||
Tested on sid.
|
||||
|
||||
@c -----------------------------------------
|
||||
@node Debian/SPARC, FedoraCore/i386, Debian/PowerPC, Machine Specific
|
||||
@section Debian/SPARC (@emph{Release})
|
||||
|
||||
Tested on sid.
|
||||
|
||||
@c -----------------------------------------
|
||||
@node FedoraCore/i386, FreeBSD 5.x, Debian/SPARC, Machine Specific
|
||||
@section FedoraCore/ix86 (@emph{Supported})
|
||||
|
||||
This RedHat variant is well-tested and well-supported (tested at least
|
||||
up to Fedora Core release 6). For more information, please check the
|
||||
section on RedHat/i386 below.
|
||||
|
||||
@c -----------------------------------------
|
||||
@node FreeBSD 5.x, FreeBSD 4.x, FedoraCore/i386, Machine Specific
|
||||
@section FreeBSD 5.x (@emph{Supported})
|
||||
|
||||
Tested on 5.0, 5.1, 5.3
|
||||
@table @var
|
||||
@item Special Instructions
|
||||
Can install via /usr/ports/devel/gnustep, but not all required dependancies
|
||||
are installed. See the GNUstep-HOWTO for list of libraries.
|
||||
|
||||
For 5.3, there is a bug in libkvm that requires that /proc be mounted. Use
|
||||
'mount_procfs proc /proc' or see the procfs man page.
|
||||
@end table
|
||||
|
||||
@c -----------------------------------------
|
||||
@node FreeBSD 4.x, FreeBSD 3.x, FreeBSD 5.x, Machine Specific
|
||||
@section FreeBSD 4.x (@emph{Unsupported})
|
||||
|
||||
@table @var
|
||||
@item Special Instructions
|
||||
For gcc 3.0.4, make WANT_THREADS_SUPPORT=YES
|
||||
|
||||
For libxml2 2.4.24, make WITHOUT_PYTHON=YES
|
||||
|
||||
@end table
|
||||
|
||||
@c -----------------------------------------
|
||||
@node FreeBSD 3.x, FreeBSD 2.x, FreeBSD 4.x, Machine Specific
|
||||
@section FreeBSD 3.x (@emph{Obsolete})
|
||||
|
||||
Compiles "out of the box" on FreeBSD 3.4.
|
||||
|
||||
@table @var
|
||||
@item Special Instructions
|
||||
You need to use gmake not make to compile the GNUstep packages. A special
|
||||
port of gdb can be used with the Objective-C patches from
|
||||
@url{ftp://ftp.pcnet.com/users/eischen/FreeBSD/gdb-4.17-port.tar.gz}
|
||||
|
||||
The best compiler for GNUstep is the latest release of the GNU Compiler
|
||||
Collection (GCC). You can find it at @url{http://egcs.cygnus.com/}.
|
||||
|
||||
If you want to use the native POSIX threads support from @file{libc_r} pass
|
||||
@code{--enable-threads=posix} to configure. This is the recommended option as
|
||||
this is the FreeBSD threads package that gives the best results --with others
|
||||
you may be unable to run some examples like @file{diningPhilosophers}.
|
||||
|
||||
The whole compilation process can fail if you have another threads library
|
||||
installed so watch out for installed packages like @file{pth} and such.
|
||||
Besides the support for libc_r, GNUstep will also look for @file{pth} and
|
||||
@file{pcthreads}, so if you have installed them and they aren't detected
|
||||
prepare to write a nice bug report.
|
||||
|
||||
This can be done more much easily by using the port version. Just @code{cd}
|
||||
to @file{/usr/ports/lang/egcs} and do a @code{"make WANT_THREADS=yes install"}.
|
||||
Easy.
|
||||
|
||||
If configure cannot find tiff.h or the tiff library and you have it installed
|
||||
in a non-standard place (even @file{/usr/local}), you may need to pass these
|
||||
flags to configure: @code{CFLAGS="-I/usr/local/include"} and
|
||||
@code{LDFLAGS="-L/usr/local/lib"}.
|
||||
|
||||
@end table
|
||||
|
||||
@c -----------------------------------------
|
||||
@node FreeBSD 2.x, Gentoo/i686, FreeBSD 3.x, Machine Specific
|
||||
@section FreeBSD 2.x (@emph{Obsolete,Unstable})
|
||||
|
||||
@table @var
|
||||
@item Special Instructions
|
||||
Only static libraries work on this system.
|
||||
Use /stand/sysinstall to install these packages if you have not
|
||||
already done so:
|
||||
|
||||
@format
|
||||
gmake (GNU make)
|
||||
gcc 2.8.x
|
||||
@end format
|
||||
|
||||
Seems to compile ok, but some tests crash. Possibly due to a
|
||||
performace 'hack' in base. Might be a good idea to upgrade to FreeBSD 3.x.
|
||||
You need to use gmake not make to compile the GNUstep packages.
|
||||
|
||||
@end table
|
||||
|
||||
@c -----------------------------------------
|
||||
@node Gentoo/i686, Gentoo/PPC, FreeBSD 2.x, Machine Specific
|
||||
@section Gentoo/i686 (@emph{Supported})
|
||||
|
||||
@table @var
|
||||
@item Special Instructions
|
||||
libffi sometimes causes odd problems. Try to use ffcall.
|
||||
@end table
|
||||
|
||||
@c -----------------------------------------
|
||||
@node Gentoo/PPC, Gentoo/amd64, Gentoo/i686, Machine Specific
|
||||
@section Gentoo/PPC (@emph{Supported})
|
||||
|
||||
@c -----------------------------------------
|
||||
@node Gentoo/amd64, Gentoo/alpha, Gentoo/PPC, Machine Specific
|
||||
@section Gentoo/amd64 (@emph{Unsupported})
|
||||
|
||||
32-bit mode only?
|
||||
|
||||
@c -----------------------------------------
|
||||
@node Gentoo/alpha, Gentoo/sparc, Gentoo/amd64, Machine Specific
|
||||
@section Gentoo/alpha (@emph{Unsupported})
|
||||
|
||||
@c -----------------------------------------
|
||||
@node Gentoo/sparc, Irix 6.5/MIPS, Gentoo/alpha, Machine Specific
|
||||
@section Gentoo/sparc (@emph{Unsupported})
|
||||
|
||||
@c -----------------------------------------
|
||||
@node Irix 6.5/MIPS, MacOSX/PowerPC, Gentoo/sparc, Machine Specific
|
||||
@section Irix 6.5/MIPS (@emph{Unsupported})
|
||||
|
||||
@table @var
|
||||
@item Recommended compiler
|
||||
gcc 3.2.1
|
||||
|
||||
To use threads, it's necessary to bootstrap a compiler yourself:
|
||||
configure with --enable-threads=posix, that will work as long as you
|
||||
link EVERY objective C executable with -lpthread, no matter what
|
||||
warnings the irix linker produces!
|
||||
|
||||
@item Extra libs needed
|
||||
Unknown
|
||||
|
||||
@item Special Instructions
|
||||
If you cannot link the library because of the very low default limit
|
||||
(20480) for the command line length, then you should either use systune
|
||||
ncargs to increase the value (maximum is 262144) or link the library by
|
||||
hand.
|
||||
No libffi-support: Use ffcall
|
||||
|
||||
|
||||
@end table
|
||||
|
||||
@c -----------------------------------------
|
||||
@node MacOSX/PowerPC, MkLinux/PowerPC, Irix 6.5/MIPS, Machine Specific
|
||||
@section MacOSX/PowerPC (@emph{Release})
|
||||
|
||||
This section is for building the GNUstep extensions only.
|
||||
Use this if, for instance, if you want to build something based
|
||||
on GNUstep, such as GSWeb or GNUMail. If you want to build the complete
|
||||
GNUstep system independant of Mac OS X, see the Darwin/PowerPC section.
|
||||
|
||||
Currently tested on MacOSX 10.1.5, 10.2, 10.3
|
||||
|
||||
@table @var
|
||||
@item Recommended compiler
|
||||
Default. For 10.1.5, you need to add -no-cpp-precomp to CFLAGS
|
||||
(For instance, ./configure CFLAGS="-no-cpp-precomp" ...)
|
||||
|
||||
@item Extra libs needed
|
||||
None.
|
||||
|
||||
@item Special Instructions
|
||||
Warning ! To know how to install a complete GNUstep system on Mac OS X,
|
||||
read the Darwin/PowerPC section.
|
||||
By default, on Mac OS X, only the GNUstep extensions are built. Read the @url{README.Darwin} file in the gnustep-make/Documentation directory for
|
||||
complete instructions.
|
||||
|
||||
To build the GNUstep extensions only is useful, when you want to build
|
||||
on Mac OS X, GNUstep related projects like gdl2, etc linked to Cocoa.
|
||||
Xcode project files exist, but they may not be up-to-date. Make sure
|
||||
/usr/sbin is in your path:
|
||||
|
||||
@example
|
||||
PATH=$PATH:/usr/sbin
|
||||
@end example
|
||||
|
||||
Then type:
|
||||
|
||||
@example
|
||||
cd make
|
||||
./configure --with-library-combo=apple-apple-apple
|
||||
make install
|
||||
. /usr/GNUstep/System/Library/Makefiles/GNUstep.sh
|
||||
cd ../base
|
||||
./configure --with-xml-prefix=/usr --disable-xmltest
|
||||
make debug=yes install
|
||||
@end example
|
||||
|
||||
On Mac OS X 10.1.5, there is no libxml. Either install libxml2
|
||||
or configure base with --disable-xml.
|
||||
@end table
|
||||
|
||||
See also the Darwin/PowerPC section.
|
||||
|
||||
@c -----------------------------------------
|
||||
@node MkLinux/PowerPC, NetBSD/i386, MacOSX/PowerPC, Machine Specific
|
||||
@section MkLinux/PowerPC (@emph{Unsupported})
|
||||
|
||||
Tested with R2 RC2 (2004/03/04).
|
||||
|
||||
@c -----------------------------------------
|
||||
@node NetBSD/i386, NetBSD/Sparc64, MkLinux/PowerPC, Machine Specific
|
||||
@section NetBSD/i386 (@emph{Release})
|
||||
|
||||
Tested on NetBSD 2.0.2 (2005/04/15)
|
||||
|
||||
@table @var
|
||||
@item Recommended compiler
|
||||
Standard
|
||||
|
||||
@item Extra libs needed
|
||||
libiconv(?), libffi
|
||||
|
||||
@item Special Instructions
|
||||
Use NetBSD packages to install needed libraries. libffi either comes
|
||||
automatically with gcc or can be installed separately and works fine
|
||||
(over ffcall).
|
||||
|
||||
@end table
|
||||
|
||||
@c -----------------------------------------
|
||||
@node NetBSD/Sparc64, Netwinder, NetBSD/i386, Machine Specific
|
||||
@section NetBSD/Sparc64 (@emph{Unstable})
|
||||
|
||||
Tested on NetBSD 2.0.2 (2005/04/15)
|
||||
|
||||
@table @var
|
||||
@item Recommended compiler
|
||||
Standard
|
||||
|
||||
@item Extra libs needed
|
||||
libiconv(?), libffi
|
||||
|
||||
@item Special Instructions
|
||||
Use NetBSD packages to install needed libraries. libffi either comes
|
||||
automatically with gcc or can be installed separately and is prefered
|
||||
over ffcall which does not work on Sparc64 machines.
|
||||
|
||||
@end table
|
||||
|
||||
gdomap crashes. Perhaps other things do not work as well.
|
||||
|
||||
@c -----------------------------------------
|
||||
@node Netwinder, OpenBSD 3.x, NetBSD/Sparc64, Machine Specific
|
||||
@section Netwinder (@emph{Unstable})
|
||||
|
||||
@table @var
|
||||
@item Recommended compiler
|
||||
Build #12 of the system.
|
||||
|
||||
@item Extra libs needed
|
||||
Unknown
|
||||
|
||||
@item Special Instructions
|
||||
See @url{http://www.netwinder.org/~patrix}
|
||||
@end table
|
||||
|
||||
@c -----------------------------------------
|
||||
@node OpenBSD 3.x, OSF/Alpha, Netwinder, Machine Specific
|
||||
@section OpenBSD 3.9 (@emph{Unsupported})
|
||||
|
||||
Information for version 3.9 (2006/08/13)
|
||||
|
||||
Ports at
|
||||
@url{http://mail.rochester.edu/~asveikau/gnustep-openbsd/}
|
||||
|
||||
@c -----------------------------------------
|
||||
@node OSF/Alpha, RedHat/i386, OpenBSD 3.x, Machine Specific
|
||||
@section OSF/Alpha (@emph{Needs Testing, Unstable})
|
||||
@c Contact: suzukis@file.phys.tohoku.ac.jp
|
||||
|
||||
Information is for Version 3.2C
|
||||
|
||||
@table @var
|
||||
@item Recommended compiler
|
||||
Unknown
|
||||
|
||||
@item Extra libs needed
|
||||
Unknown
|
||||
|
||||
@item Special Instructions
|
||||
Can only compile with static libraries. Compiler may fail when
|
||||
linking executables (e.g. gdnc). Standard ranlib and ar programs are
|
||||
to feable to create libraries. Should use GNU binutils versions. Linker
|
||||
sometimes fails to find symbols, in which case you may need to link with
|
||||
a library twice. For instance, add an extra -lgnustep-gui in
|
||||
ADDTIONAL_TOOL_LIBS in the GNUmakefile(.preamble).
|
||||
|
||||
@end table
|
||||
|
||||
@c -----------------------------------------
|
||||
@node RedHat/i386, Slackware/Intel, OSF/Alpha, Machine Specific
|
||||
@section RedHat/i386 (@emph{Supported})
|
||||
|
||||
RedHat and variants/clones such as Fedora Core and CentOS are all very
|
||||
well supported and are regularly tested with all GNUstep releases.
|
||||
|
||||
@table @var
|
||||
@item Recommended compiler
|
||||
The default compiler works very well.
|
||||
|
||||
@item Extra libs needed
|
||||
All extra libs needed are easily available from standard packages; the
|
||||
only tricky one is ffcall. If you don't find an RPM for that one,
|
||||
download it directly from the GNUstep web site
|
||||
(http://www.gnustep.org).
|
||||
|
||||
@item Special Instructions
|
||||
None.
|
||||
|
||||
@end table
|
||||
|
||||
@c -----------------------------------------
|
||||
@node Slackware/Intel, Slackware/Sparc, RedHat/i386, Machine Specific
|
||||
@section Slackware/Intel (@emph{Unsupported})
|
||||
|
||||
@c -----------------------------------------
|
||||
@node Slackware/Sparc, Solaris 2.5.1/Sparc, Slackware/Intel, Machine Specific
|
||||
@section Slackware/Sparc (Splack) (@emph{Unsupported})
|
||||
|
||||
Tested with Spalck 8.0 (2005/03/01)
|
||||
|
||||
@table @var
|
||||
@item Recommended compiler
|
||||
gcc 3.2, no extra options.
|
||||
|
||||
@item Extra libs needed
|
||||
Unknown.
|
||||
|
||||
@item Special Instructions
|
||||
Tested on an ultra sparc server, kernel 2.4.27, XF86-4.0.3
|
||||
|
||||
@end table
|
||||
|
||||
@c -----------------------------------------
|
||||
@node Solaris 2.5.1/Sparc, Solaris/Sparc, Slackware/Sparc, Machine Specific
|
||||
@section Solaris 2.5.1/Sparc (@emph{Obsolete})
|
||||
|
||||
This configuration is no longer being tested, but it may still work.
|
||||
|
||||
@table @var
|
||||
@item Recommended compiler
|
||||
Unknown
|
||||
|
||||
@item Extra libs needed
|
||||
tiff, Don't use the one in /usr/openwin
|
||||
|
||||
@item Special Instructions
|
||||
See the Solaris 2.6 section for more instructions.
|
||||
@end table
|
||||
|
||||
@c -----------------------------------------
|
||||
@node Solaris/Sparc, Solaris 2.7/Intel, Solaris 2.5.1/Sparc, Machine Specific
|
||||
@section Solaris 2.[678]/Sparc (@emph{Supported})
|
||||
|
||||
Tested on Solaris version 6, 7, 8 and 9
|
||||
|
||||
@table @var
|
||||
@item Recommended compiler
|
||||
gcc 3.2.1 or greater
|
||||
gcc 3.04. Not 3.1 - does not compile parts of GNUstep.
|
||||
|
||||
@item Extra libs needed
|
||||
tiff, Don't use the one in /usr/openwin
|
||||
|
||||
@item Special Instructions
|
||||
|
||||
Using a POSIX shell (zsh or bash, which should come with Solaris) is
|
||||
highly recommended. In fact, some functions, such as compiling frameworks,
|
||||
will not work without it.
|
||||
|
||||
@end table
|
||||
|
||||
Some people have reported problems when using binutils assembler and linker.
|
||||
Using the native Solaris assmebler and linker should work fine.
|
||||
|
||||
Older Instructions:
|
||||
If you are using threads, make sure the Objective-C runtime (libobjc that comes
|
||||
with gcc) is compiled with threads enabled (This is true by default) AND that
|
||||
it is compiled with the _REENTRANT flag defined (This does not seem to be
|
||||
true by default). Or use the gnustep-objc package. Also make sure THREADS is
|
||||
set to 'posix' not 'solaris'.
|
||||
|
||||
@c -----------------------------------------
|
||||
@node Solaris 2.7/Intel, Suse 6.x/Intel, Solaris/Sparc, Machine Specific
|
||||
@section Solaris 2.7/Intel (@emph{Unsupported})
|
||||
@c Contact?: Sebastian Niesen <sniesen@niesen.net>
|
||||
|
||||
@table @var
|
||||
@item Recommended compiler
|
||||
Unknown.
|
||||
|
||||
@item Extra libs needed
|
||||
Unknown
|
||||
|
||||
@item Special Instructions
|
||||
Make sure there are no -g compiler flags (i.e. compiling with debug=yes
|
||||
might be a problem). Unsure of correct bundle flags - You might need
|
||||
to use the alternate flags listed in target.make, line 989. Also,
|
||||
configuring gnustep-make with @option{--disable-backend-bundle} might be
|
||||
necessary if you can't get bundles to work.
|
||||
You will probable get a lot of text relocation
|
||||
warnings, which probably can be ignored. See the other Solaris
|
||||
instructions above for more information.
|
||||
|
||||
@end table
|
||||
|
||||
@c -----------------------------------------
|
||||
@node Suse 6.x/Intel, Suse/Intel, Solaris 2.7/Intel, Machine Specific
|
||||
@section Suse 6.x/Intel (@emph{Obsolete})
|
||||
|
||||
GNUstep has been tested on version 6.2-6.4 of Suse
|
||||
|
||||
@table @var
|
||||
@item Recommended compiler
|
||||
Standard
|
||||
|
||||
@item Extra libs needed
|
||||
None
|
||||
|
||||
@item Special Instructions
|
||||
It seems that there is a problem with the default kernel build
|
||||
distributed with Suse which means that the socket binding used by
|
||||
gdnc doesn't work. If you recompile the kernel then it starts working.
|
||||
|
||||
@end table
|
||||
|
||||
@c -----------------------------------------
|
||||
@node Suse/Intel, Suse 7.x/PPC, Suse 6.x/Intel, Machine Specific
|
||||
@section Suse/Intel (@emph{Supported})
|
||||
|
||||
GNUstep has been tested on version 7.0, 8.0, 8.1, 8.2, 9.0, 9.1, 9.3, and
|
||||
10.1 of Suse
|
||||
|
||||
@table @var
|
||||
@item Recommended compiler
|
||||
The default compiler that comes with Susu is fine. Also
|
||||
gcc2.95.x, gcc3.0.x, 3.1 and 3.2 work, but 2.95 is faster.
|
||||
Compile with --threads-enabled (non-standard).
|
||||
|
||||
@item Extra libs needed
|
||||
None
|
||||
|
||||
@item Special Instructions
|
||||
Suse 10.1 does not work with the x11 backend.
|
||||
|
||||
@end table
|
||||
|
||||
@c -----------------------------------------
|
||||
@node Suse 7.x/PPC, Unixware-2.1.3/Intel, Suse/Intel, Machine Specific
|
||||
@section Suse 7.x/PPC (@emph{Unsupported})
|
||||
|
||||
GNUstep has been tested on version 7.0 of Suse/PPC
|
||||
|
||||
@table @var
|
||||
@item Recommended compiler
|
||||
Standard. gcc2.95.x, gcc3.0.x and gc3.1 work, but 2.95 is faster.
|
||||
Compile with --threads-enabled (non-standard).
|
||||
|
||||
@item Extra libs needed
|
||||
None
|
||||
|
||||
@item Special Instructions
|
||||
|
||||
@end table
|
||||
|
||||
@c -----------------------------------------
|
||||
@node Unixware-2.1.3/Intel, Windows with CYGWIN, Suse 7.x/PPC, Machine Specific
|
||||
@section Unixware-2.1.3/Intel (@emph{Unsupported})
|
||||
@c Contact?: Richard Frith-Macdonald <richard@brainstorm.co.uk>
|
||||
|
||||
@table @var
|
||||
@item Recommended compiler
|
||||
Unknown
|
||||
|
||||
@item Extra libs needed
|
||||
Unknown
|
||||
|
||||
@end table
|
||||
|
||||
Special Instructions for GNUstep installation on Unixware 2.1 systems
|
||||
|
||||
@table @asis
|
||||
|
||||
@item 1
|
||||
Tune the kernel to increase the argument space so that we can pass long
|
||||
command-line argument strings to processes (which the makefiles do)
|
||||
(/etc/conf/bin/idtune ARG_MAX 102400)
|
||||
|
||||
@item 2
|
||||
Install raft of the latest GNU software
|
||||
|
||||
@format
|
||||
gzip (you need this to unpack other stuff)
|
||||
make (to build everything)
|
||||
m4 (for autoconf etc)
|
||||
autoconf (if you need to change anything)
|
||||
bison
|
||||
flex
|
||||
binutils (required by gcc if you want to debug)
|
||||
gcc-2.8.1
|
||||
(configure --with-gnu-as --with-gnu-ld --with-stabs)
|
||||
NB. gcc-2.8.1 needs a fix to __do_global_dtors_aux()
|
||||
in crtstuff.c on Unixware 2.1.3
|
||||
(and possibly other unixware versions)
|
||||
The fix is already in recent versions of egcs.
|
||||
|
||||
@end format
|
||||
|
||||
@example
|
||||
==================================
|
||||
static void
|
||||
__do_global_dtors_aux ()
|
||||
@{
|
||||
static func_ptr *p = __DTOR_LIST__ + 1;
|
||||
static int completed = 0;
|
||||
|
||||
if (completed)
|
||||
return;
|
||||
|
||||
while (*p)
|
||||
@{
|
||||
p++;
|
||||
(*(p-1)) ();
|
||||
@}
|
||||
|
||||
#ifdef EH_FRAME_SECTION_ASM_OP
|
||||
__deregister_frame_info (__EH_FRAME_BEGIN__);
|
||||
#endif
|
||||
completed = 1;
|
||||
@}
|
||||
======================================
|
||||
@end example
|
||||
|
||||
@item 3
|
||||
Having got gcc working - it's probably a good idea to rebuild
|
||||
all your GNU software using it!
|
||||
|
||||
@item 4
|
||||
Build gstep as normal.
|
||||
|
||||
@item 5
|
||||
The SIOCGIFCONF ioctl sometimes doesn't work on unixware after applying
|
||||
some of the OS patches.
|
||||
|
||||
So I have added a '-a' flag to gdomap to give it the name of a file
|
||||
containing IP address and netmask information for the network interfaces
|
||||
on the system.
|
||||
|
||||
You need to set up a file (I suggest '/etc/gdomap_addresses') containing
|
||||
the information for your machine and modify your system startup files in
|
||||
/etc/rc?.d to run gdomap, telling it to use that file.
|
||||
|
||||
eg. If your machine has an IP address of '193.111.111.2' and is on a
|
||||
class-C network, your /etc/gdomap_addresses file would contain the line
|
||||
|
||||
@example
|
||||
193.111.111.2 255.255.255.0
|
||||
@end example
|
||||
|
||||
and your startup file would contain the lines
|
||||
|
||||
@example
|
||||
. /usr/local/GNUstep/Library/Makefiles/GNUstep.sh
|
||||
gdomap -a /etc/gdomap_addresses
|
||||
@end example
|
||||
|
||||
@end table
|
||||
|
||||
If you don't set gdomap up correctly, Distributed Objects will not
|
||||
work.
|
||||
|
||||
@c -----------------------------------------
|
||||
@node Windows with CYGWIN, Windows with MinGW, Unixware-2.1.3/Intel, Machine Specific
|
||||
@section Windows with CYGWIN (@emph{Unsupported})
|
||||
|
||||
@table @var
|
||||
@item Recommended compiler
|
||||
gcc 3.3.1 or later (with libobjc and libjava (if using libffi))
|
||||
|
||||
@item Extra libs needed
|
||||
Objective-C library DLL (@url{ftp://ftp.gnustep.org/pub/gnustep/windows/cygwin})
|
||||
for shared libs. It's a good idea to remove the libobjc.a that comes with gcc
|
||||
(gcc -v for location) so that it isn't accidentally found.
|
||||
For ffcall, you should get version 1.8b or above (the earlier ones don't
|
||||
compile). There are still some problems with structure passing, but that is
|
||||
generally not supported on any architecture. libffi also works.
|
||||
|
||||
@item Special Instructions
|
||||
|
||||
Make sure you have good shared libraries for everthing. Sometimes a bad
|
||||
shared library (like libtiff) will cause odd and untraceable problems.
|
||||
See @url{README.Cygwin} for information on compiling.
|
||||
|
||||
@end table
|
||||
|
||||
@c -----------------------------------------
|
||||
@node Windows with MinGW, Yellowdog/PowerPC, Windows with CYGWIN, Machine Specific
|
||||
@section Windows with MinGW (@emph{Supported})
|
||||
|
||||
@table @var
|
||||
@item Recommended compiler
|
||||
See below.
|
||||
|
||||
@item Extra libs needed
|
||||
See below.
|
||||
|
||||
@item Special Instructions
|
||||
See the @url{README.MinGW} file located in the gnustep-make Documentation
|
||||
directory for instructions. Windows NT/2000/XP only. Win98 machines and
|
||||
earlier are very buggy and are not supported.
|
||||
Native GUI backend is alpha version.
|
||||
@end table
|
||||
|
||||
@c -----------------------------------------
|
||||
@node Yellowdog/PowerPC, , Windows with MinGW, Machine Specific
|
||||
@section Yellowdog/PowerPC (@emph{Unsupported})
|
||||
|
||||
@ifclear HOWTO
|
||||
@include end.texi
|
||||
@end ifclear
|
File diff suppressed because it is too large
Load diff
|
@ -1,418 +0,0 @@
|
|||
@c -*-texinfo-*-
|
||||
@ifclear ANNOUNCE-ONLY
|
||||
@chapter NEWS
|
||||
|
||||
@ifset TEXT-ONLY
|
||||
@include version.texi
|
||||
@end ifset
|
||||
|
||||
The currently released version is @samp{@value{GNUSTEP-MAKE-VERSION}}.
|
||||
@end ifclear
|
||||
|
||||
@section Changes in version @samp{2.0.0}
|
||||
|
||||
The Makefile package has had a major makover which befits a major
|
||||
version update. The most user-visible change of this is customized
|
||||
filesystem support. GNUstep can now be configured and installed using
|
||||
any of many typical filesystem layouts, including FHS, Mac, and the
|
||||
traditional GNUstep layout.
|
||||
|
||||
Due to this change a number of variable names have been changed or
|
||||
deprecated. If you are a developer maintaining makefiles, you should
|
||||
check your makefiles for these variables. Most notibly, variables such
|
||||
as @samp{GNUSTEP_SYSTEM_ROOT} no longer make any sense, as various
|
||||
directories that were previously in a traditional GNUstep system root
|
||||
directory exist accross multiple directories in disparate places in
|
||||
other filesystem layouts.
|
||||
|
||||
If you are a user or developer that is just installing GNUstep, read
|
||||
the @file{GNUstep-HOWTO} and @file{INSTALL} documents to find out new
|
||||
information about configuring and installing make.
|
||||
|
||||
If you are a developer, read the files @file{filesystem} and
|
||||
@file{make} for information on new and changed variables. Read the
|
||||
@file{RELEASENOTES} file for specific changes in this release and updates
|
||||
you will need to make with this version of make.
|
||||
|
||||
Various changes include (See @file{RELEASENOTES} for more information):
|
||||
@itemize @bullet
|
||||
|
||||
@item New configure option @samp{--with-layout} to choose different
|
||||
filesystem layouts.
|
||||
@item All applications use the @samp{.app} extension even when compiled with
|
||||
debugging or profiling.
|
||||
@item Precompiled header support added using xxx_OBJC_PRECOMPILED_HEADERS.
|
||||
@item gnustep-config is a program which prints out information on the
|
||||
GNUstep filesystem and variables (Similar to programs like pkg-config).
|
||||
@item Better inline messages/help, including printing the version
|
||||
of gnustep-make that is being used
|
||||
@item Applications can be started now just using their name (by
|
||||
installing a wrapper in the tools directory).
|
||||
@item Versioning of Microsoft Windows DLLs implemented.
|
||||
@item Use of @samp{GNUSTEP_SYSTEM_ROOT} and similar variables
|
||||
deprecated.
|
||||
@item Implement use of GNU standard @samp{DESTDIR} variable.
|
||||
@item Object files are now placed in the @file{obj} directory.
|
||||
@item Static and profile libraries have the same name as normal libraries.
|
||||
@item Support for Admin Tools and Admin Apps directories
|
||||
@item RPM support rewritten
|
||||
@item Microsoft Windows support updated and extended
|
||||
@item Easy consistent way to link non-installed frameworks by using
|
||||
-Lpath_to_framework/xxx.framework/$GNUSTEP_TARGET_LDIR
|
||||
@item Versioning of library resources
|
||||
@item Fixed rebuilding .plist and .palette files
|
||||
@end itemize
|
||||
|
||||
@ifclear ANNOUNCE-ONLY
|
||||
|
||||
@section Changes in version @samp{1.13.0}
|
||||
|
||||
Debug libraries now have the same name as normal libraries (i.e. no "_d"
|
||||
suffix). This reduces the possiblity of multiple libraries being loaded
|
||||
into the same executable.
|
||||
|
||||
Added dragonfly OS to make targets.
|
||||
|
||||
Spaces and backslashes are no longer allowed in paths used by the make
|
||||
package (e.g. with Windows OS). The libraries can still use native paths.
|
||||
|
||||
@section Changes in version @samp{1.12.0}
|
||||
|
||||
Minor fixes.
|
||||
|
||||
@section Changes in version @samp{1.11.2}
|
||||
|
||||
The @file{GNUstep.conf} file is now viewed as the essential
|
||||
determination of the install location for GNUstep libraries, tools and
|
||||
other files. During configuration, this file is read, if it exists, to
|
||||
determine this information. This can still be overriden with
|
||||
environment and command line options, however. See the filesystem
|
||||
documentation in the GNUstep Make Documentation directory for more
|
||||
information.
|
||||
|
||||
You no longer need to source GNUstep.sh in order to compile GNUstep
|
||||
programs. All that is needed is the definition of
|
||||
GNUSTEP_MAKEFILES. You should also have the GNUstep system tools
|
||||
directory in your path.
|
||||
|
||||
All netbsd systems are assumed to use ELF libraries. Support for the old
|
||||
static libs version of netbsd was removed.
|
||||
|
||||
Serveral new options were added to configure to change the location of
|
||||
basic dir locations and basic configuration files. Also, the help was
|
||||
greatly improved. Note that --prefix=/usr/GNUstep/System no longer
|
||||
works. Please use --prefix=/usr/GNUstep or
|
||||
--with-system-root=/usr/GNUstep/System.
|
||||
|
||||
A few more fixes for cygwin are included as well as Windows resource rules.
|
||||
|
||||
Support for ObjC++ has been added. You should list the ObjC++ .mm
|
||||
files in the xxx_OBJCC_FILES variable, and put extra ObjC++ flags in
|
||||
xxx_OBJCCFLAGS or ADDITIONAL_OBJCCFLAGS.
|
||||
|
||||
@section Changes in version @samp{1.11.1}
|
||||
|
||||
Part of the previous change was reversed. Now libobjc is still linked
|
||||
with individual applications (as well as the base library), since some
|
||||
operating systems require this to resolve external symbols. However,
|
||||
there is no need to recompile all applications again.
|
||||
|
||||
Compilation of GNUstep on cygwin was revampled and fixed due to a lot of
|
||||
work by Tom MacSween.
|
||||
|
||||
@section Changes in version @samp{1.11.0}
|
||||
|
||||
NOTE: The libobjc library is now linked in with the base library and NOT with
|
||||
individual applications or tools (except on MingW). This requires that
|
||||
you do a complete rebuild of all libraries, tools and apps when switching
|
||||
to this new version.
|
||||
|
||||
@itemize @bullet
|
||||
|
||||
@item New rules for building and using DLLs were implemented. Now gcc
|
||||
and other tricks are used to properly export symbols, so no .def file
|
||||
should be needed.
|
||||
|
||||
@item The GNUsteprc file in $GNUSTEP_SYSTEM_ROOT is deprecated. See the
|
||||
new GNUstep.conf file (which is not installed by default).
|
||||
|
||||
@item Psuedo-framwork support was implemented on MingW. This essentially
|
||||
involves copying the framework to several places so it can be used without
|
||||
links, which Windows does not really support. There's no other
|
||||
clean way to do it.
|
||||
|
||||
@item Support for xxx_WINDRES_FILES on MinGW was implemented.
|
||||
|
||||
@end itemize
|
||||
|
||||
@section Changes in version @samp{1.10.0}
|
||||
|
||||
@itemize @bullet
|
||||
@item a GNUsteprc file is now automatically created and installed in
|
||||
$GNUSTEP_SYSTEM_ROOT, which sets the system-wide default for the user
|
||||
root directory (default=~/GNUstep, which can be overriden with the
|
||||
@code{--with-user-root} argument to configure, or by modifying GNUsteprc
|
||||
after configuration.)
|
||||
@item make_services is not run by GNUstep.sh anymore. You must run this
|
||||
manually now (see the gnustep-gui documentation).
|
||||
@item Palettes use a plist instead of a strings format file now for the
|
||||
palette.table file.
|
||||
@item You can use the @code{--enable-native-objc-exceptions} argument to
|
||||
configure to enable use of built in objc exceptions with compilers that
|
||||
support it.
|
||||
@end itemize
|
||||
|
||||
@section Changes in version @samp{1.9.2}
|
||||
|
||||
@itemize @bullet
|
||||
@item Application and Bundles use the latest convention on Apple.
|
||||
@item Improve/Simplify dependency checking when making docs
|
||||
@end itemize
|
||||
|
||||
@section Changes in version @samp{1.9.1}
|
||||
|
||||
@itemize @bullet
|
||||
@item Remove @code{--disable-import} option
|
||||
@item README.Darwin for darwin/MacOSX install
|
||||
@item Framework version and naming clarified.
|
||||
@end itemize
|
||||
|
||||
@section Changes in version @samp{1.9.0}
|
||||
|
||||
@itemize @bullet
|
||||
@item Support for building in a separate build dir.
|
||||
@item Add @code{--enable-strip-makefiles} option to configure
|
||||
@item List of classes in a framework gets written to the plist file.
|
||||
@end itemize
|
||||
|
||||
@section Changes in version @samp{1.8.0}
|
||||
|
||||
Read the NEWS file for a complete list of changes since the last stable
|
||||
release. The major difference from 1.6.0 is that the locations of certain
|
||||
directories have changed. Generally this will not cause a problem unless
|
||||
your GNUstep directory is shared by multiple machines running this and
|
||||
earlier (1.6.x) versions of the software.
|
||||
|
||||
@section Changes in version @samp{1.7.4}
|
||||
|
||||
Bug fixes.
|
||||
|
||||
@section Changes in version @samp{1.7.3}
|
||||
|
||||
@itemize @bullet
|
||||
@item Adds library combo to Headers directory if not flattened.
|
||||
@item Add Markup file (Renaissance) support.
|
||||
@end itemize
|
||||
|
||||
@section Changes in version @samp{1.7.2}
|
||||
|
||||
--enable-flattened (Flat directory structure) is on by default.
|
||||
|
||||
@itemize @bullet
|
||||
@item On WIN32 use HOMEPATH in preference to USERPROFILE
|
||||
@item netbsd and openbsd compile fixes.
|
||||
@end itemize
|
||||
|
||||
@section Changes in version @samp{1.7.1}
|
||||
|
||||
Bug fixes.
|
||||
|
||||
@section Changes in version @samp{1.7.0}
|
||||
|
||||
This version contains a major change in the location of certain
|
||||
directories and installed files as detailed in the @file{filesystem.texi}
|
||||
document. When installing this version for the first time, all old
|
||||
directories and files in those directories will be moved to the new
|
||||
locations automatically. However, you should update all GNUstep versions
|
||||
on any machine you have them installed on in order to avoid any
|
||||
incompatibilities.
|
||||
|
||||
Other changes:
|
||||
|
||||
@itemize @bullet
|
||||
@item Support for preprocessed Info.plists.
|
||||
@end itemize
|
||||
|
||||
@section Changes in version @samp{1.6.0}
|
||||
|
||||
Make now configures by default for only one system. To compile and run
|
||||
GNUstep for multiple platforms from the same directory, use the
|
||||
configure argument --enable-multi-platform.
|
||||
|
||||
@itemize @bullet
|
||||
@item Auto-build def file for DLLs
|
||||
@item Work natively on MacOSX systems. Now use apple-apple-apple
|
||||
instead of nx-nx-nx on OSX systems.
|
||||
@item More efficient checks for re-making a project.
|
||||
@end itemize
|
||||
|
||||
@section Changes in version @samp{1.5.1}
|
||||
|
||||
@itemize @bullet
|
||||
@item Framework support rewritten, also supports multiple names.
|
||||
@item API change: Replace frameowork's xxx_TOOLS by xxx_COPY_INTO_DIR.
|
||||
@item Unified link commands between libraries and frameworks (LIB_LINK_*).
|
||||
@item New 'make strings' target for localization support.
|
||||
@item Speed improvements.
|
||||
@item Doesn't try to build OSX bundle on GNUstep and vice versa.
|
||||
@item API change: Tools/Subproj can have resources.
|
||||
@item API change: TOOL_INSTALL_DIR.
|
||||
@end itemize
|
||||
|
||||
@section Changes in version @samp{1.5.0}
|
||||
|
||||
@itemize @bullet
|
||||
@item Add NetBSD Elf support
|
||||
@end itemize
|
||||
|
||||
@section Changes in version @samp{1.4.0}
|
||||
|
||||
@itemize @bullet
|
||||
@item Update Darwin/GNU gcc and Irix targets
|
||||
@end itemize
|
||||
|
||||
@section Changes in version @samp{1.3.4}
|
||||
|
||||
This is a first prerelease version for 1.4.
|
||||
|
||||
@itemize @bullet
|
||||
@item Use gnugc-gnu-gnu library combo for garbage collecting version.
|
||||
@item Add support for --library-combo in opentool
|
||||
@item Change GNUSTEP_PATHPREFIX_LIST to GNUSTEP_PATHLIST
|
||||
@item Add verbosity levels. Use make messages=yes for full messages.
|
||||
@end itemize
|
||||
|
||||
@section Changes in version @samp{1.3.3}
|
||||
|
||||
@itemize @bullet
|
||||
@item Recognizes XXX_STANDARD_INSTALL=no to not do installation.
|
||||
@item Updated instructions for MingW/MSYS installation.
|
||||
@end itemize
|
||||
|
||||
@section Changes in version @samp{1.3.2}
|
||||
|
||||
@itemize @bullet
|
||||
@item Instructions for building on Windows with MSYS
|
||||
@item Resolve library dependencies better on Windows
|
||||
@item Fix frameworks in RPMs and DEBs
|
||||
@item Continued reorganization.
|
||||
@end itemize
|
||||
|
||||
@section Changes in version @samp{1.3.0}
|
||||
|
||||
The package has gone through an extensive reorganization to break up
|
||||
each sub-make into two separate components. This allows for much
|
||||
simplified code and lots of code sharing between components. As a side
|
||||
effect, it also increased the speed of the code by at least a factor of
|
||||
2.
|
||||
|
||||
@itemize @bullet
|
||||
@item Force shared=yes for cygwin and mingw
|
||||
@item Bundles copy resources from subprojects.
|
||||
@item Better resource management. Resources handled accross all project types.
|
||||
@item Simplified and fixed user root location between make and base libraries.
|
||||
@item Changed Apps directory to Applications
|
||||
@item Fixes for MacOSX, MingW
|
||||
@end itemize
|
||||
|
||||
@section Changes in version @samp{1.2.1}
|
||||
|
||||
@itemize @bullet
|
||||
@item the source distribution code has been rewritten to be more general
|
||||
and extended. Packages built using gnustep-make now automatically
|
||||
have handy targets building tarballs from sources or from CVS imports.
|
||||
@item implemented support for auto-dependencies, which means that any object
|
||||
file automatically depends on all the header files which were used to
|
||||
build it. Only works with newer compilers.
|
||||
@item implemented INSTALL_AS_USER and INSTALL_AS_GROUP.
|
||||
@item implemented a strip=yes option.
|
||||
@item various bug fixes and minor improvements.
|
||||
@end itemize
|
||||
|
||||
@section Changes in version @samp{1.2.0}
|
||||
|
||||
@itemize @bullet
|
||||
@item The core rules and internals of gnustep-make have been fundamentally
|
||||
redesigned and rewritten. notably, gnustep-make now works using only
|
||||
a single recursive sub-make invocation rather than two, which makes
|
||||
it consistently faster and simpler in all circumstances.
|
||||
@item The clean rules have been heavily optimized - they no longer use
|
||||
recursive sub-make invocations at all and so they are really fast.
|
||||
@item Many improvements to java support. Optimized management of nested classes
|
||||
@item Better conformance to make conventions.
|
||||
@item File specific compilation flags
|
||||
@item Fixed darwin support
|
||||
@item Support for C++ files.
|
||||
@item Made use of library installation dir consistent with other installation.
|
||||
@item Much improved Windows path support
|
||||
@end itemize
|
||||
|
||||
@section Changes in version @samp{1.0.1}
|
||||
|
||||
@itemize @bullet
|
||||
@item Support for Java tools.
|
||||
@item Build GUI backend as a bundle (default).
|
||||
@item Remove backend part of LIBRARY_COMBO.
|
||||
@item Fixes to run on FreeBSD, Solaris.
|
||||
@end itemize
|
||||
|
||||
@section Changes in version @samp{1.0.0}
|
||||
|
||||
@itemize @bullet
|
||||
@item Optimizations that in many cases more than double the speed.
|
||||
@item Added preliminary darwin support.
|
||||
@item rpm packeing improvements.
|
||||
@item Better checking for mingw and cygwin
|
||||
@end itemize
|
||||
|
||||
@section Changes in version @samp{0.9.2}
|
||||
|
||||
@itemize @bullet
|
||||
@item HOWTO and faq files moved from core package to here
|
||||
@item Configurable GNUSTEP_LOCAL_ROOT and GNUSTEP_NETWORK_ROOT
|
||||
@end itemize
|
||||
|
||||
@section Changes in version @samp{0.9.1}
|
||||
|
||||
Make has been reoganized so that it only relies on libraries and other things
|
||||
that are necessary for the Makefile package itself. Any libraries wanting to
|
||||
add extra package information can do so by installing a make stub in the
|
||||
@file{Additional} directory. This greatly simplifies compilation and packaging.
|
||||
|
||||
@itemize @bullet
|
||||
@item Javadoc support added.
|
||||
@item debian directory added for dpkg
|
||||
@item RPM support rewritten from scratch.
|
||||
@end itemize
|
||||
|
||||
@section Changes in version @samp{0.9.0}
|
||||
|
||||
ffcall library is highly recommended for use with the GNUstep base
|
||||
library. You need to have installed it prior to configuring the Makefile
|
||||
package. See the INSTALL file.
|
||||
|
||||
@itemize @bullet
|
||||
@item Support for automatically generating RPM spec files.
|
||||
@item Build suitable files for MacOS bundles
|
||||
@item Add option for flattened directory structure.
|
||||
@item LaText documentation support.
|
||||
@item Added support for Frameworks
|
||||
@end itemize
|
||||
|
||||
@section Noteworthy changes in version @samp{0.6.6}
|
||||
|
||||
The GNUstep system libraries are now installed in a separate system root
|
||||
directory (default /usr/GNUstep/System) rather than the GNUstep
|
||||
root directory (default /usr/GNUstep). You can revert to the old behavior
|
||||
using a configure option @samp{--without-system-root}. We also recommend
|
||||
removing any previous GNUstep versions before installing the new one in order
|
||||
to avoid problems with the system finding the correct binary and/or library.
|
||||
|
||||
@itemize @bullet
|
||||
@item Support for Windows compilation (cygwin and mingw) and DLL creation
|
||||
and usage.
|
||||
@item Java support rewritten and extended.
|
||||
@end itemize
|
||||
|
||||
@end ifclear
|
||||
@c end ifclear ANNOUNCE-ONLY
|
|
@ -1,106 +0,0 @@
|
|||
.\"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>.
|
|
@ -1,66 +0,0 @@
|
|||
@chapter GNUstep makefile package
|
||||
|
||||
Here is some introductory info to get you started:
|
||||
|
||||
@section What is the GNUstep makefile package?
|
||||
|
||||
The makefile package is a simple, powerful and extensible way to
|
||||
write makefiles for a GNUstep-based project. It allows the user to
|
||||
write a project without having to deal with the complex issues
|
||||
associated with configuration, building, installation, and packaging.
|
||||
It also allows the user to easily create cross-compiled binaries.
|
||||
|
||||
@section Information
|
||||
|
||||
The file @samp{NEWS} has this packages feature history.
|
||||
|
||||
The files @samp{INSTALL} or @samp{GNUstep-HOWTO}
|
||||
give instructions for installing the packages. Also see the @file{machines}
|
||||
documentation and various machine specific READMEs in the Documentation
|
||||
directory.
|
||||
|
||||
Files in the @samp{Documentation} directory have information on the
|
||||
design of the Makefile system and how to write your own makefiles that
|
||||
work with it.
|
||||
|
||||
@section License
|
||||
|
||||
The GNUstep libraries are covered under the GNU Lesser Public License.
|
||||
This means you can use these libraries in any program (even non-free
|
||||
programs). If you distribute the libraries along with your program,
|
||||
you must make the improvements you have made
|
||||
to the libraries freely available. You should read the COPYING.LIB file
|
||||
for more information.
|
||||
|
||||
GNUstep tools, test programs, and other files are covered under the GNU
|
||||
General Public License. The GNU GPL is a free software license, which
|
||||
requires that all the released improved versions be free software as
|
||||
well. You should read the COPYING file for more information.
|
||||
|
||||
The GNUstep make package is licensed under the GNU GPL.
|
||||
|
||||
@section History
|
||||
|
||||
The GNUstep makefile package was designed by Scott Christley
|
||||
and Ovidiu Predescu.
|
||||
|
||||
Flags for building shared libraries and bundles on several systems were
|
||||
originally identified by Mircea Oancea @email{mircea@@pathcom.com}.
|
||||
|
||||
Richard Frith-Macdonald @email{richard@@brainstorm.co.uk} also
|
||||
contributed with ideas.
|
||||
|
||||
Nicola Pero @email{nicola@@brainstorm.co.uk} rewrote much of the rule
|
||||
procedures to increase the speed of the package by over a factor of 7.
|
||||
He also rewrote much of the rest of the system to make it simpler and
|
||||
more effective.
|
||||
|
||||
@section How can you help?
|
||||
|
||||
@itemize @bullet
|
||||
|
||||
@item
|
||||
Give us feedback! Tell us what you like; tell us what you think
|
||||
could be better. Send bug reports to @email{bug-gnustep@@gnu.org}.
|
||||
|
||||
@end itemize
|
|
@ -1,138 +0,0 @@
|
|||
@chapter GNUstep Make Release Notes
|
||||
|
||||
The release notes include descriptions of API changes, behavior
|
||||
changes and other information that might help developers and users
|
||||
migrate to using a newer version of the make system.
|
||||
|
||||
@section Version 2.0.0
|
||||
|
||||
Version 2.0.0 is a new major release of gnustep-make which includes a
|
||||
number of major changes compared to previous 1.x releases. Most of
|
||||
the changes are backwards compatible in the sense that old
|
||||
GNUmakefiles will work with gnustep-make version 1 or 2 when used in
|
||||
the same conditions (traditional GNUstep filesystem layout). But
|
||||
GNUmakefiles might need updating to work with the new filesystem
|
||||
layout configurations that are allowed by gnustep-make version 2.
|
||||
|
||||
@table @samp
|
||||
|
||||
@item GNUSTEP_INSTALLATION_DIR
|
||||
This variable is deprecated in gnustep-make version 2; you should
|
||||
never use it. gnustep-make version 2 supports installation domains
|
||||
that are mapped to filesystem locations in arbitrary ways; for this
|
||||
reason, specifying a GNUSTEP_INSTALLATION_DIR no longer makes sense.
|
||||
If you need to relocate the whole installation (for example,
|
||||
installing into /tmp to prepare a binary package) you should use
|
||||
DESTDIR, as in 'make install DESTDIR=/tmp'. To choose an installation
|
||||
domain, you should use GNUSTEP_INSTALLATION_DOMAIN, as in 'make
|
||||
install GNUSTEP_INSTALLATION_DOMAIN=LOCAL'. It's particularly
|
||||
important that you remove any reference to GNUSTEP_INSTALLATION_DIR
|
||||
inside your own GNUmakefiles.
|
||||
|
||||
If your GNUmakefiles contains references to GNUSTEP_INSTALLATION_DIR
|
||||
(or similar), you should remove them by replacing them with references
|
||||
to the actual logical directory into which you want to install. For
|
||||
example, if your GNUmakefile is trying to install something into
|
||||
GNUSTEP_INSTALLATION_DIR/Library/Libraries, you need to replace it
|
||||
with GNUSTEP_LIBRARIES. This is important for non-GNUstep filesystem
|
||||
layouts (where, eg, GNUSTEP_LIBRARIES should be set to /usr/lib or
|
||||
/usr/local/lib or /home/nicola/GNUstep/Library/Libraries depending on
|
||||
the installation domain); in that case, gnustep-make will manage
|
||||
GNUSTEP_LIBRARIES for you. Please check the file @file{filesystem}
|
||||
for more information on the available variables.
|
||||
|
||||
@item GNUSTEP_xxx_ROOT
|
||||
The variables GNUSTEP_SYSTEM_ROOT, GNUSTEP_LOCAL_ROOT,
|
||||
GNUSTEP_NETWORK_ROOT, GNUSTEP_USER_ROOT and GNUSTEP_ROOT are
|
||||
deprecated in gnustep-make version 2 and you should never use them.
|
||||
gnustep-make version 2 supports installation domains that are mapped
|
||||
to filesystem locations in arbitrary ways; for this reason, a variable
|
||||
like GNUSTEP_SYSTEM_ROOT has no longer any use.
|
||||
|
||||
If your GNUmakefiles contains references to GNUSTEP_SYSTEM_ROOT (or
|
||||
similar), you should remove them by replacing them with references to
|
||||
the actual logical directory into which you want to install. For
|
||||
example, if your GNUmakefile is trying to install something into
|
||||
GNUSTEP_SYSTEM_ROOT/Library/Libraries, you need to replace it with
|
||||
GNUSTEP_SYSTEM_LIBRARIES. Please check the file @file{filesystem} for
|
||||
more information on the available variables.
|
||||
|
||||
@item gnustep-make ./configure and install options
|
||||
The options to configure (and make install), particularly the ones to
|
||||
determine the filesystem layout, have been radically changed in
|
||||
gnustep-make version 2. If you have a building or packaging script
|
||||
for gnustep-make, you need to make sure you replace your old
|
||||
./configure options with the new ones. In particular, the
|
||||
--with-system-root, --with-local-root and --with-network-root
|
||||
configure options have been replaced by the more powerful
|
||||
--with-layout configure option. Also, configure no longer imports an
|
||||
existing configuration file so you need to make sure that you pass all
|
||||
the options every time. 'make install special_prefix=xxx' has been
|
||||
replaced by 'make install DESTDIR=xxx'.
|
||||
|
||||
@item make debug=yes is now the default
|
||||
The default used to be 'make debug=no'; this has now been changed to
|
||||
be 'make debug=yes'. To get the traditional behaviour, please use
|
||||
'make debug=no'.
|
||||
|
||||
@item RPM support rewritten
|
||||
The RPM support has been rewritten so if you're using gnustep-make
|
||||
to automatically generate RPM packages for your software, you may
|
||||
want to review the process. In particular, there is no longer
|
||||
a distinction between debug and non-debug packages.
|
||||
|
||||
@item xxx_PREPROCESS_INFO_PLIST
|
||||
This variable is now obsolete and can be removed; gnustep-make version 2
|
||||
can automatically detect plists that need preprocessing.
|
||||
|
||||
@item Framework default version
|
||||
The default framework resource version changed from 'A' to
|
||||
INTERFACE_VERSION (which is set, by default, to '0.0').
|
||||
|
||||
@item Microsoft Windows updates
|
||||
If you are using Microsoft Windows, you probably want to check
|
||||
the new installation instructions and reinstall everything.
|
||||
|
||||
@item Java tools location changed
|
||||
Java tools are now installed into GNUSTEP_JAVA rather than
|
||||
in a subdirectory of GNUSTEP_TOOLS.
|
||||
|
||||
@item resource-set.make install directory
|
||||
The variable xxx_RESOURCE_FILES_INSTALL_DIR for resource-set.make has
|
||||
been deprecated in favour of xxx_INSTALL_DIR. For backwards
|
||||
compatibility, you may want to set them both:
|
||||
|
||||
xxx_INSTALL_DIR = $(GNUSTEP_LIBRARY)/Libraries/Resources/xxx
|
||||
|
||||
xxx_RESOURCE_FILES_INSTALL_DIR = /Library/Libraries/Resources/xxx
|
||||
|
||||
@item INSTALL_ROOT_DIR
|
||||
All instances of INSTALL_ROOT_DIR in user's makefiles should be
|
||||
replaced with DESTDIR.
|
||||
|
||||
@item GNUSTEP_FLATTENED
|
||||
All checks for GNUSTEP_FLATTENED should be updated to check the new
|
||||
variable GNUSTEP_IS_FLATTENED instead, and to compare it explicitly to
|
||||
'yes' and 'no', and assume that '' means 'yes'.
|
||||
|
||||
@item ./shared_obj
|
||||
The ./shared_obj, ./shared_debug_obj directories and similar are no longer
|
||||
created. You can use ./obj instead.
|
||||
|
||||
@item library names
|
||||
All libraries now have the same name.
|
||||
|
||||
@item application names
|
||||
All applications now have the same name.
|
||||
|
||||
@end table
|
||||
|
||||
@ifinfo
|
||||
Copyright @copyright{} 2007 Free Software Foundation
|
||||
|
||||
Copying and distribution of this file, with or without modification,
|
||||
are permitted in any medium without royalty provided the copyright
|
||||
notice and this notice are preserved.
|
||||
@end ifinfo
|
||||
|
||||
|
|
@ -1,487 +0,0 @@
|
|||
\input texinfo @c -*-texinfo-*-
|
||||
@c A FAQ for GNUstep Users
|
||||
|
||||
@node Top, GNUstep General Information, (dir), (dir)
|
||||
@chapter GNUstep Frequently Asked Questions for Users
|
||||
|
||||
Last updated @today{}.
|
||||
Please send corrections to @email{gnustep-maintainer@@gnu.org}. Also look
|
||||
at the (developer) FAQ for more developer oriented questions.
|
||||
|
||||
@menu
|
||||
* GNUstep General Information::
|
||||
* Compiling and Installing::
|
||||
* Compatibility and Layout::
|
||||
* Troubleshooting::
|
||||
@end menu
|
||||
|
||||
@node GNUstep General Information, Compiling and Installing, Top, Top
|
||||
@section GNUstep General Information
|
||||
|
||||
@menu
|
||||
* What is GNUstep?::
|
||||
* What is the OpenStep standard?::
|
||||
* What platforms does GNUstep run on?::
|
||||
* Does GNUstep run on Windows?::
|
||||
* What is GNUstep's position towards KDE and the GNOME project?::
|
||||
* How can I get GNUstep?::
|
||||
* How do you run GNUstep?::
|
||||
* Is there a web site?::
|
||||
* When is GNUstep intended to be available?::
|
||||
* What is usable?::
|
||||
@end menu
|
||||
|
||||
@node What is GNUstep?, What is the OpenStep standard?, GNUstep General Information, GNUstep General Information
|
||||
@subsection What is GNUstep?
|
||||
|
||||
GNUstep is the Free Software Foundation's effort to implement NeXT
|
||||
Software, Inc.'s (now Apple Computer, Inc.) OpenStep Standard. Also we
|
||||
are building developer and user applications based on this standard which
|
||||
may someday be used to form a complete desktop experience.
|
||||
|
||||
@node What is the OpenStep standard?, What platforms does GNUstep run on?, What is GNUstep?, GNUstep General Information
|
||||
@subsection What is the OpenStep standard?
|
||||
|
||||
OpenStep is an Application Programming Interface (API) for creating
|
||||
applications using the Objective-C language. It was published by NeXT
|
||||
Computer, Inc. in 1994.
|
||||
|
||||
OpenStep consists of three parts: the @samp{Foundation Kit}, a library
|
||||
of non-graphical objects; the @samp{Application Kit}, a library of
|
||||
objects useful in creating graphical applications; and the @samp{Display
|
||||
PostScript System} (DPS), an interface for drawing to the screen using
|
||||
the PostScript graphics language. DPS support is not being persued at
|
||||
this time however.
|
||||
|
||||
You can obtain a copy of the OpenStep standard from the GNUstep web site
|
||||
@url{http://www.gnustep.org} or it's mirror sites.
|
||||
|
||||
@node What platforms does GNUstep run on?, Does GNUstep run on Windows?, What is the OpenStep standard?, GNUstep General Information
|
||||
@subsection What platforms does GNUstep run on?
|
||||
|
||||
See the list of supported platforms at
|
||||
@url{machines_toc.html} for
|
||||
information on what machines GNUstep builds on and what the status of
|
||||
the ports is. Probably a few days porting to any other UNIX system where
|
||||
current gcc compilers and gdb debugger work.
|
||||
|
||||
@node Does GNUstep run on Windows?, What is GNUstep's position towards KDE and the GNOME project?, What platforms does GNUstep run on?, GNUstep General Information
|
||||
@subsection Does GNUstep run on Windows?
|
||||
|
||||
The primary targets for GNUstep are free UNIX system-based platforms such
|
||||
as GNU/Linux and FreeBSD.
|
||||
|
||||
That being said, the base library should run on Windows NT, 98, 2000, and XP
|
||||
with the Cygwin UNIX system-emulation environment from Cygnus
|
||||
(@url{http://www.cygwin.com/}), or the MinGW environment
|
||||
(@url{http://www.mingw.org}).
|
||||
|
||||
The GUI library uses the win32 backend library to work under
|
||||
Windows. The backend library is a thin layer that converts the
|
||||
GNUstep methods to handle drawing of GUI elements to calls to the
|
||||
Windows API. This project is currently in beta.
|
||||
|
||||
@node What is GNUstep's position towards KDE and the GNOME project?, How can I get GNUstep?, Does GNUstep run on Windows?, GNUstep General Information
|
||||
@subsection What is GNUstep's position towards KDE and the GNOME project?
|
||||
|
||||
You can use GNUstep with GNOME and/or KDE. GNUstep displays
|
||||
on top of X11. You can still do programming in C (since Objective-C
|
||||
is just a super-set of C), and when GCC gets around to it,
|
||||
you'll be able to mix C++ and Objective-C code in the same file.
|
||||
|
||||
GNUstep, is much more than a window manager or desktop environment.
|
||||
It frees you to develop cross-platform applications without the
|
||||
work of developing an OS independent framework from scratch. It
|
||||
gives you lots of basic functionality, from font panels to Unicode
|
||||
strings to distributed objects.
|
||||
|
||||
@node How can I get GNUstep?, How do you run GNUstep?, What is GNUstep's position towards KDE and the GNOME project?, GNUstep General Information
|
||||
@subsection How can I get GNUstep?
|
||||
|
||||
Many distributions include packaged versions of GNUstep (Debian,
|
||||
etc). To compile from sratch, download the GNUstep Startup package or
|
||||
get the HOWTO from @url{gnustep-howto_toc.html}. Get the latest releases
|
||||
from @url{ftp://ftp.gnustep.org/pub/gnustep/core}.
|
||||
|
||||
@node How do you run GNUstep?, Is there a web site?, How can I get GNUstep?, GNUstep General Information
|
||||
@subsection How do you run GNUstep?
|
||||
|
||||
You are presumably under the misapprehension that GNUstep is
|
||||
some sort of program or window manager.
|
||||
|
||||
It isn't.
|
||||
|
||||
GNUstep is a whole load of things --- primarily a set of libraries
|
||||
for developing software.
|
||||
|
||||
At present, it's those libraries, plus various command-line based
|
||||
support tools and service providing daemons, plus various GUI
|
||||
development tools, a GUI desktop/workspace application, etc.
|
||||
|
||||
At no stage will you ever 'run' GNUstep --- you will run applications
|
||||
and tools and will make use of it's services. At some point
|
||||
you may well find packages distributed as 'GNUstep' systems in the
|
||||
way that you get 'GNU/Linux' systems packaged today. Look at
|
||||
Simply GNUstep @url{http://simplygnustep.sourceforge.net/} for instance.
|
||||
|
||||
If you want to see a sample GUI application running you need to build
|
||||
GNUstep and look at the example applications in the gnustep-examples
|
||||
package. Build 'Finger' or 'Ink' and start it with 'openapp Finger.app'
|
||||
or 'openapp Ink.app'
|
||||
|
||||
To look best, use WindowMaker (the currently preferred GNUstep
|
||||
window manager) as your window manager.
|
||||
|
||||
@node Is there a web site?, When is GNUstep intended to be available?, How do you run GNUstep?, GNUstep General Information
|
||||
@subsection Is there a web site?
|
||||
|
||||
See @url{http://www.gnustep.org/}.
|
||||
|
||||
@node When is GNUstep intended to be available?, What is usable?, Is there a web site?, GNUstep General Information
|
||||
@subsection When is GNUstep intended to be available?
|
||||
|
||||
It's usable now. Major releases are made about every six months. However, if
|
||||
you are a serious developer, it's probably best to use the latest
|
||||
snapshots.
|
||||
|
||||
@node What is usable?, , When is GNUstep intended to be available?, GNUstep General Information
|
||||
@subsection What is usable?
|
||||
|
||||
Most of GNUstep is quite usable and there are many complex applications
|
||||
that work well. However, GNUstep does not completely track the latest
|
||||
changes that Apple makes to their interface and there are still some
|
||||
parts that need some work).
|
||||
|
||||
What does this mean for users? Many applications will run quite well.
|
||||
Applications that require very complex text handling and some unusual
|
||||
features and/or some of the latest additions to Cocoa may not work as
|
||||
well.
|
||||
|
||||
@c ****************************************************************
|
||||
@node Compiling and Installing, Compatibility and Layout, GNUstep General Information, Top
|
||||
@section Compiling and Installing
|
||||
|
||||
@menu
|
||||
* How do I compile GNUstep on my machine? ::
|
||||
* Are there any precompiled packages available?::
|
||||
* What are these type and size warnings?::
|
||||
* What are these import warnings?::
|
||||
@end menu
|
||||
|
||||
@node How do I compile GNUstep on my machine? , Are there any precompiled packages available?, Compiling and Installing, Compiling and Installing
|
||||
@subsection How do I compile GNUstep on my machine?
|
||||
|
||||
Read the file @file{GNUstep-HOWTO}, which comes with the GNUstep
|
||||
distribution (gnustep-make), and also is available separately on the
|
||||
GNUstep web site.
|
||||
|
||||
@node Are there any precompiled packages available?, What are these type and size warnings?, How do I compile GNUstep on my machine? , Compiling and Installing
|
||||
@subsection Are there any precompiled packages available?
|
||||
|
||||
Check @url{http://www.gnustep.org/resources/sources.html} for links to
|
||||
RPMs, Debian packages, and BSD ports. There's also Windows installers, Mac OS X
|
||||
binaries and others.
|
||||
|
||||
@node What are these type and size warnings?, What are these import warnings?, Are there any precompiled packages available?, Compiling and Installing
|
||||
@subsection What are these type and size warnings?
|
||||
|
||||
These warnings:
|
||||
@example
|
||||
/usr/bin/ld: warning: type and size of dynamic symbol
|
||||
`__objc_class_name_NSConstantString' are not defined
|
||||
@end example
|
||||
|
||||
are a common occurence and are due to a mismatch between gcc and
|
||||
ld. They don't do any harm so they can be safely ignored. They have been
|
||||
fixed in GCC version 3.1.
|
||||
|
||||
@node What are these import warnings?, , What are these type and size warnings?, Compiling and Installing
|
||||
@subsection What are these import warnings?
|
||||
|
||||
Do you get this obnoxious warning whenever you compile an application, tool,
|
||||
or Objective-C program:
|
||||
|
||||
@example
|
||||
warning: using `#import' is not recommended
|
||||
[...]
|
||||
@end example
|
||||
|
||||
Up until gcc 3.4, the #import directive was not implemented correctly.
|
||||
As a result, the GCC compiler automatically emitted a warning whenever
|
||||
#import was used. As of gcc 3.4, this problem has been fixed, so
|
||||
presumably, this warning is no longer emitted when code is compiled. If
|
||||
you are using an early compiler, you can supress these warnings by adding
|
||||
@code{-Wno-import} to your include (cpp) flags.
|
||||
|
||||
@c ****************************************************************
|
||||
@node Compatibility and Layout, Troubleshooting, Compiling and Installing, Top
|
||||
@section Compatibility and Layout
|
||||
|
||||
@menu
|
||||
* Can I run NeXT OPENSTEP or Mac OS X programs on GNUstep?::
|
||||
* Is GNUstep following changes to OpenStep and Mac OS X?::
|
||||
* Do we have to have the NEXTSTEP look and feel?::
|
||||
* What's up with the directory structure?::
|
||||
* Why not use framework bundles?::
|
||||
@end menu
|
||||
|
||||
@node Can I run NeXT OPENSTEP or Mac OS X programs on GNUstep?, Is GNUstep following changes to OpenStep and Mac OS X?, Compatibility and Layout, Compatibility and Layout
|
||||
@subsection Can I run NeXT OPENSTEP or Mac OS X programs on GNUstep?
|
||||
|
||||
You can't run these programs on GNUstep, but if you have the source
|
||||
code for the programs, you should be able to port them to GNUstep and
|
||||
compile them. Whether or not you will be able to run them depends on how
|
||||
complete GNUstep is at the time.
|
||||
|
||||
@node Is GNUstep following changes to OpenStep and Mac OS X?, Do we have to have the NEXTSTEP look and feel?, Can I run NeXT OPENSTEP or Mac OS X programs on GNUstep?, Compatibility and Layout
|
||||
@subsection Is GNUstep following changes to OpenStep and Mac OS X?
|
||||
|
||||
Yes, gnustep-base already contains the documented changes in the
|
||||
Foundation library. GNUstep aims to be compatible with both the
|
||||
OpenStep specification and with Mac OS X. It should be easy to write
|
||||
an application that compiles cleanly under both GNUstep and Cocoa.
|
||||
|
||||
@node Do we have to have the NEXTSTEP look and feel?, What's up with the directory structure?, Is GNUstep following changes to OpenStep and Mac OS X?, Compatibility and Layout
|
||||
@subsection Do we have to have the NEXTSTEP look and feel?
|
||||
|
||||
GNUstep is aiming for something like the NEXTSTEP 3.3 look and feel.
|
||||
Although we don't want to force anyone into this, a lot of the power and
|
||||
ease of use comes from this feel. The look of GNUstep is something
|
||||
different --- buttons and other widgets can look different but still act
|
||||
the same way. We hope to implement themes which will allow
|
||||
this.
|
||||
|
||||
@node What's up with the directory structure?, Why not use framework bundles?, Do we have to have the NEXTSTEP look and feel?, Compatibility and Layout
|
||||
@subsection What's up with the directory structure?
|
||||
|
||||
First of all, GNUstep uses a slightly different directory structure than
|
||||
NEXTSTEP or Mac OS X. Part of this is historical, part is because we can't do
|
||||
things the same way (see @pxref{Why not use framework bundles?}). Although
|
||||
currently the structure is very similar to the one used in Mac OS X.
|
||||
|
||||
@node Why not use framework bundles?, , What's up with the directory structure?, Compatibility and Layout
|
||||
@subsection Why not use framework bundles?
|
||||
|
||||
Framework bundles are much more difficult to port and to use, and are very
|
||||
unnatural on a UNIX system; extremely unnatural on Windows. In a
|
||||
framework bundle, the shared dynamic library is inside a framework wrapper
|
||||
directory. Because of this, the dynamic linker can't find it.
|
||||
|
||||
We have frameworks, so how do we work around that? Well, we build dynamic
|
||||
links from a directory inside the dynamic linker path into the framework,
|
||||
which work, but then you can't move the framework anywhere else on
|
||||
the system, otherwise you break the link, and nothing will find the
|
||||
framework any longer!
|
||||
|
||||
On systems without dynamic links, like Windows, we can't even do this!
|
||||
We have to copy the library from the framework into the dynamic linker
|
||||
path, but that is simply a shared library then! Absolutely @emph{no}
|
||||
difference. You put the dynamic library in a system directory in the
|
||||
dynamic linker path, and associate with that library a resource directory.
|
||||
|
||||
OpenStep for Windows did that, and still called them frameworks.
|
||||
So we can do the same, and call our libraries frameworks.
|
||||
|
||||
In a shared library, the shared dynamic library is in a directory which is
|
||||
in the path to the dynamic linker. the dynamic linker can find it very
|
||||
easily. this is how all shared and static libraries work on UNIX systems,
|
||||
Windows systems and possibly most system at all.
|
||||
|
||||
Moreover, the OpenStep API requires us to provide some stuff for
|
||||
frameworks, like creating and registering automatically a framework
|
||||
object each time a framework is used (linked at runtime, or linked into
|
||||
the app), and attaching to it the list of classes inside the framework -
|
||||
which are not particularly trivial to implement --- they depend on playing
|
||||
with the linker and the object file format --- and might produce troubles
|
||||
when porting. And we never use these facilities.
|
||||
|
||||
For Apple Mac OS X sure it's easier. They can modify
|
||||
the system linker, compiler, the system dynamical linker. They
|
||||
always know on which platform they are working (their own), etc. They can
|
||||
modify the system to support frameworks natively. Easy that way.
|
||||
|
||||
But GNUstep is meant to run on many different platforms, platforms which
|
||||
we don't control (Windows, Sun Solaris, Darwin, GNU/Linux, UNIX system
|
||||
variants) and which have different linkers and do not support frameworks
|
||||
natively. On some systems it's difficult to just load a bundle or
|
||||
compile a shared library!
|
||||
|
||||
So building the core libraries as 'libraries' means that it's much
|
||||
easier to port them, and it's much more difficult to break them.
|
||||
|
||||
Sure, frameworks have a bundle of resources associated with it --- but we
|
||||
can very easily associate a bundle of resource with a shared library, no
|
||||
reason why not. We are doing it.
|
||||
|
||||
So please note that GNUstep libraries are meant to be much similar to
|
||||
Mac OS X frameworks. They are composed of a shared library and
|
||||
associated with a bundle of resources. There is a difference in
|
||||
terminology, in where the resources are installed, and possibly a slight
|
||||
difference in the NSBundle API to get to the resource bundle (anyway,
|
||||
it's a one line difference between Mac OS X and GNUstep, so it looks like
|
||||
very easy to #ifdef).
|
||||
|
||||
In other words, GNUstep libraries are meant to basically do the same as
|
||||
frameworks do on Mac OS X, but to be portable to very different platforms (such
|
||||
as Windows).
|
||||
|
||||
|
||||
@c ****************************************************************
|
||||
@node Troubleshooting, , Compatibility and Layout, Top
|
||||
@section Troubleshooting
|
||||
|
||||
@menu
|
||||
* Problems compiling (loading shared libs)::
|
||||
* Problems compiling (GNUstep Internal Error)::
|
||||
* Problems with Alt key::
|
||||
* Problems with gcc3::
|
||||
* Problems with fonts::
|
||||
* No characters displayed::
|
||||
* No Makefile::
|
||||
@end menu
|
||||
|
||||
@node Problems compiling (loading shared libs), Problems compiling (GNUstep Internal Error), Troubleshooting, Troubleshooting
|
||||
@subsection Problems compiling (loading shared libs)
|
||||
|
||||
If you get something like
|
||||
|
||||
@example
|
||||
plmerge: error while loading shared libraries:
|
||||
libgnustep-base.so.1: cannot open shared object file: No such file or directory
|
||||
@end example
|
||||
|
||||
or this:
|
||||
|
||||
@example
|
||||
Making all for service example...
|
||||
make[2]: *** [example.service/Resources/Info-gnustep.plist] Error 1
|
||||
make[1]: *** [example.all.service.variables] Error 2
|
||||
make[1]: Leaving directory `/home/multix/gnustep-gui-0.8.6/Tools'
|
||||
make: *** [internal-all] Error 2
|
||||
@end example
|
||||
|
||||
This means your GNU make is being overly protective. When you try to
|
||||
become root (e.g. to install something), certain environment variables
|
||||
like LD_LIBRARY_PATH are unset in order to reduce the possibility of
|
||||
a security breach. If you are becoming root to install
|
||||
something, you need to exec the GNUstep.sh file as root, just as you
|
||||
do when you login. Although for simplicity, you can also try this:
|
||||
|
||||
@example
|
||||
make LD_LIBRARY_PATH=$LD_LIBRARY_PATH
|
||||
@end example
|
||||
|
||||
You could also be having problems with gcc. gcc 2.96 does not work
|
||||
(Mandrake 8.1, perhaps others). Use a different compiler, like gcc 3.x.
|
||||
|
||||
@node Problems compiling (GNUstep Internal Error), Problems 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.
|
||||
|
||||
There could also be a mismatch between the base and gui library versions.
|
||||
Make sure you have the latest release of each library installed.
|
||||
|
||||
@node Problems with Alt key, Problems with gcc3, Problems compiling (GNUstep Internal Error), Troubleshooting
|
||||
@subsection Problems with Alt key
|
||||
|
||||
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 characters displayed, 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 characters displayed, No Makefile, Problems with fonts, Troubleshooting
|
||||
@subsection No characters displayed.
|
||||
|
||||
When using the xlib backend, no characters are displayed in any GNUstep
|
||||
applications.
|
||||
|
||||
The xlib backend has font anti-aliasing turned on by default. It's possible
|
||||
that GNUstep can't find any fonts on your system that can be properly anti-
|
||||
aliased. Try
|
||||
|
||||
@example
|
||||
defaults write NSGlobalDomain GSFontAntiAlias NO
|
||||
@end example
|
||||
|
||||
to turn off font anti-aliasing.
|
||||
|
||||
@node No Makefile, , No characters displayed, Troubleshooting
|
||||
@subsection No Makefile
|
||||
|
||||
I tried to compile something and I get:
|
||||
|
||||
@example
|
||||
GNUmakefile:27: /Makefiles/common.make: No such file or directory
|
||||
GNUmakefile:39: /Makefiles/aggregate.make: No such file or directory
|
||||
gmake: *** No rule to make target `/Makefiles/aggregate.make'. Stop.
|
||||
@end example
|
||||
|
||||
Make sure you have installed the gnustep-make package and also type:
|
||||
|
||||
@example
|
||||
source /usr/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
|
541
trunk/FAQ
541
trunk/FAQ
|
@ -1,541 +0,0 @@
|
|||
1 GNUstep Frequently Asked Questions with Answers
|
||||
*************************************************
|
||||
|
||||
Last updated 11 April 2007. Please send corrections to
|
||||
<gnustep-maintainer@gnu.org>. Also look at the user FAQ for more user
|
||||
oriented questions.
|
||||
|
||||
1.1 Compatibility
|
||||
=================
|
||||
|
||||
1.1.1 Is it easy to port OPENSTEP programs to GNUstep?
|
||||
------------------------------------------------------
|
||||
|
||||
It is probably easy for simple programs. There are some portability
|
||||
tools to make this easier, or rewrite the Makefiles yourself. You will
|
||||
also have to translate the NIB files (if there are any) to GNUstep
|
||||
model files using the nib2gmodel program (from
|
||||
`ftp://ftp.gnustep.org/pub/gnustep/dev-apps').
|
||||
|
||||
1.1.2 How about porting between Cocoa and GNUstep?
|
||||
--------------------------------------------------
|
||||
|
||||
It's easier from GNUstep to Cocoa than Cocoa to GNUstep. Cocoa is
|
||||
constantly changing, much faster than GNUstep could hope to keep up.
|
||||
They have added extensions and new classes that aren't available in
|
||||
GNUstep yet. Plus there are some other issues. If you start with Cocoa:
|
||||
|
||||
* Use #ifndef GNUSTEP for Apple only code.
|
||||
|
||||
* Do not use CoreFoundation
|
||||
|
||||
* Do not use Objective-C++ (except with gcc 4.1 or later)
|
||||
|
||||
* Do not use Quicktime or other proprietary extension
|
||||
|
||||
* GNUstep should be able to read Cocoa nib files automatically, so
|
||||
there is no need to port these, although you might want to have
|
||||
GNUstep specific versions of them anyway.
|
||||
|
||||
See also
|
||||
`http://mediawiki.gnustep.org/index.php/Writing_portable_code' for more
|
||||
information.
|
||||
|
||||
1.1.3 Tools for porting
|
||||
-----------------------
|
||||
|
||||
While the programming interface should be almost transparent between
|
||||
systems (expect for the unimplemented parts, of course), there are a
|
||||
variety of other files and tools that are necessary for porting
|
||||
programs.
|
||||
|
||||
`ni2gmodel'
|
||||
This program coverts nib files from any system, such as OPENSTEP to
|
||||
a gmodel format file. Gmodel can be read directly by GNUstep or
|
||||
you can convert this to a more GNUstep-native gorm format (using
|
||||
the Gorm interface modeller). Note this is not necessary for Cocoa
|
||||
nibs - GNUstep can read these directly.
|
||||
|
||||
`Renaissance'
|
||||
GNUstep Renaissance allows you to describe your user interfaces
|
||||
(that is, the windows in your application, and the buttons, boxes,
|
||||
textfields, etc in the windows) in simple and intuitive XML files,
|
||||
using an open, standard format describing the logic of the
|
||||
interface. It has a number of advantages over the proprietary nib
|
||||
format: portability, open standard, easy localization,
|
||||
themeability, and intelligent autolayout.
|
||||
|
||||
`Gorm'
|
||||
The equivalent of the Interface Builder in GNUstep. It might be
|
||||
easier to just recreate the interface using Gorm rather than
|
||||
dealing with translations.
|
||||
|
||||
`OpenStep2GNUConverter and nfmake'
|
||||
Two programs that allow you to convert PB files to GNUstep
|
||||
makefiles or compile a program on GNUstep directly from PB files.
|
||||
They probably work only for OPENSTEP systems and are a little
|
||||
out-of-date.
|
||||
|
||||
`StepTalk'
|
||||
A portable scripting environment that lets your do scripting in
|
||||
almost any language you like.
|
||||
|
||||
|
||||
1.1.4 Can I transfer archived data from GNUstep to Cocoa?
|
||||
---------------------------------------------------------
|
||||
|
||||
Apple's archiving format is proprietary and not documented, so this
|
||||
poses a problem for anyone wanting to implement compatibility with it.
|
||||
However, even if we reverse engineered the format, there are enough
|
||||
differences between the class and ivar layouts to make this sort of
|
||||
compatibility difficult. Not to mention the fact that we would
|
||||
constantly have to keep up with the changes Apple made.
|
||||
|
||||
The new keyed archiving using XML file formats is much more portable,
|
||||
and GNUstep is trying to maintain compatibility with Apple with this
|
||||
type of archiving.
|
||||
|
||||
1.1.5 Does distributed objects work between GNUstep and Cocoa?
|
||||
--------------------------------------------------------------
|
||||
|
||||
See the answer to the previous question (on archive compatibility) for
|
||||
why this won't work either.
|
||||
|
||||
1.1.6 Is there an Interface Builder for GNUstep?
|
||||
------------------------------------------------
|
||||
|
||||
There is an Interface Builder for GNUstep called Gorm. A lot of work
|
||||
has been put into it and it works very well. You can download it from
|
||||
the ftp site or via http. The Project Manager ProjectCenter is also
|
||||
available.
|
||||
|
||||
1.1.7 Can I use my original NIB files?
|
||||
--------------------------------------
|
||||
|
||||
No - NeXT/Apple never documented their nib format, so GNUstep supports
|
||||
both the 'gmodel' format (which stores information as text
|
||||
(property-lists) and can therefore be edited 'by hand') and binary
|
||||
archive format (which can be edited by Gorm). There IS a conversion
|
||||
tool called nib2gmodel that can be compiled under OPENSTEP to convert
|
||||
nib files to GNUstep gmodel files.
|
||||
|
||||
Newer nib files use XML format keyed archiving and may possibly be
|
||||
transportable, although differences in class and ivar layout may still
|
||||
make this difficult.
|
||||
|
||||
1.1.8 Can one use the hybrid "Objective-C++"
|
||||
--------------------------------------------
|
||||
|
||||
No. at present the GNU compiler (gcc) does not support "Objective-C++".
|
||||
Soon to br released gcc 4.1 will have this support, but it is still
|
||||
unclear how robust it will be.
|
||||
|
||||
1.1.9 Is there a plan to support the Java/YellowBox Bindings?
|
||||
-------------------------------------------------------------
|
||||
|
||||
Yes. The GNustep Java library/bridge called JIGS is available now. JIGS
|
||||
is a free (LGPL) Java Interface for GNUstep; it can automatically wrap
|
||||
Objective-C libraries based on GNUstep, making them accessible directly
|
||||
to the Java programmer as if they were Java libraries. As a side effect,
|
||||
it is also possible to use the whole engine in the reverse way: JIGS
|
||||
provides a high level API to allow Objective-C programmers to start java
|
||||
virtual machines inside GNUstep Objective-C code and access java objects
|
||||
in the java virtual machine transparently, as if they were objective-C
|
||||
objects.
|
||||
|
||||
1.1.10 What if I compile GNUstep under OPENSTEP/MacOS X?
|
||||
--------------------------------------------------------
|
||||
|
||||
GNUstep uses 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 can, however, use a GNUstep program with an X11 server running
|
||||
on MacOSX.
|
||||
|
||||
1.1.11 Is the Objective C API for GTK related?
|
||||
----------------------------------------------
|
||||
|
||||
No. GNUstep applications provide their GUI via the OpenStep API, which
|
||||
provides fully object-oriented access to GUI manipulation.
|
||||
|
||||
The object-oriented nature of the libraries and language make it
|
||||
much easier for new users to create their own subclasses rather than
|
||||
simply using the supplied widgets as in other frameworks.
|
||||
|
||||
1.1.12 How about implementing parts of the Application Kit with GTK?
|
||||
--------------------------------------------------------------------
|
||||
|
||||
Yes and No - The GNUstep architecture provides a single,
|
||||
platform-independent, API for handling all aspects of GUI interaction
|
||||
(implemented in the gstep-gui library), with a backend architecture
|
||||
that permits you to have different display models (display postscript,
|
||||
X-windows, win32, berlin ...) while letting you use the same code for
|
||||
printing as for displaying. Use of GTK in the frontend gui library
|
||||
would remove some of those advantages without adding any.
|
||||
|
||||
That being said, a backend library could be implemented using gtk if
|
||||
anyone wanted to do so. Since the frontend library handles most of the
|
||||
work involved in implementing the OpenStep API, the backend is a
|
||||
relatively thin layer and the advantages of GTK over direct xlib or
|
||||
win32 calls is likely to be minimal. If/when GTK is ported to more
|
||||
systems, a backend written using it could be a valuable asset -
|
||||
volunteers are, as always, welcome.
|
||||
|
||||
1.2 Compiling and Developing
|
||||
============================
|
||||
|
||||
1.2.1 How can I get started programming?
|
||||
----------------------------------------
|
||||
|
||||
Good question. Read the tutorials at the GNUstep web site. Also look at
|
||||
Apple's documentation (pointers in the Resources section on the GNUstep
|
||||
web site.)
|
||||
|
||||
1.2.2 How can I help with GNUstep?
|
||||
----------------------------------
|
||||
|
||||
1. Write/debug library code
|
||||
|
||||
2. Write documentation
|
||||
|
||||
3. Update the task list and library headers
|
||||
|
||||
4. Write applications
|
||||
|
||||
Let people know what you are doing. Break your project up into the
|
||||
smallest units you can. Feed back frequent updates to the maintainers.
|
||||
Ask questions in the discussion mailing list.
|
||||
|
||||
Do remember that any changes beyond a few lines of code (or
|
||||
documentation) require a disclaimer or copyright assignment to the Free
|
||||
Software Foundation before they can be incorporated into the project.
|
||||
Get in touch with the GNUstep maintainer about this.
|
||||
|
||||
Don't start with large-scale reorganization of anything - instead,
|
||||
get a general idea in mind of what you want to do, and proceed as much
|
||||
as possible with incremental changes that don't break anything - that
|
||||
way you can make those incremental changes available to the rest of the
|
||||
community at frequent intervals.
|
||||
|
||||
Don't be afraid to give up - there is no shame in finding out that
|
||||
you have take on too large/complex a project. It's much better to
|
||||
'resign' and take on a smaller job than to just stop without telling
|
||||
anyone.
|
||||
|
||||
Please document the code you add or change (using autogsdoc comments
|
||||
that begin with a slash and two asterices). But PLEASE, do not copy from
|
||||
the Apple documentation or any other copyrighted documentation.
|
||||
|
||||
1.2.3 Helping develop GNUstep
|
||||
-----------------------------
|
||||
|
||||
There is plenty of unimplemented stuff in the gui library and backend
|
||||
libraries that volunteers can work on - just browse through the code
|
||||
and see if it conforms to the documentation.
|
||||
|
||||
Specific tasks are noted in the developers section on the GNUstep
|
||||
website.
|
||||
|
||||
Once you have coded something, you could always write a testcase and
|
||||
documentation for it :-)
|
||||
|
||||
1.2.4 Helping document GNUstep
|
||||
------------------------------
|
||||
|
||||
All class documentation is written directly in the source code itself
|
||||
and translated using the autogsdoc program. See the source code and
|
||||
documentation for autogsdoc for information on documenting the classes.
|
||||
|
||||
Newcomers could write documentation for individual classes by
|
||||
comparing the OpenStep specification, the MacOS-X documentation, and
|
||||
the GNUstep source. Documentation should clearly note where individual
|
||||
methods are specific to OpenStep, MacOS-X or are GNustep extensions.
|
||||
|
||||
More experienced people could write documentation on general
|
||||
programming topics, and tutorials for new users.
|
||||
|
||||
Anyone willing to write documentation, either tutorials for using
|
||||
GNUstep, or reference documentation for individual classes, should
|
||||
either write it in gsdoc or as plain ascii text for someone else to
|
||||
format into gsdoc.
|
||||
|
||||
GNUstep documentation should have copyright assigned to the Free
|
||||
Software Foundation.
|
||||
|
||||
1.2.5 How do I assign my contribution?
|
||||
--------------------------------------
|
||||
|
||||
Everyone who contributes more than 20 lines of code or so needs to sign
|
||||
a copyright assignment so that the FSF can have legal control of the
|
||||
copyright. This makes it easier to defend against any copyright
|
||||
infringement suits. Contact the GNUstep maintainer for instructions on
|
||||
how to do this or download and fill out the form
|
||||
`http://www.gnustep.org/resources/request-assign.future' (instructions
|
||||
are included).
|
||||
|
||||
1.2.6 How do I update the task list?
|
||||
------------------------------------
|
||||
|
||||
The task list (`http://savannah.gnu.org/pm/?group_id=99') is supposed
|
||||
to tell people what jobs are waiting to be done. Feel free to add to it
|
||||
or update the tasks that are there (you need to create a login for
|
||||
yourself first).
|
||||
|
||||
One job of major importance that pretty much anyone can do is to
|
||||
look for jobs to add to the task list. In the case of methods from the
|
||||
OpenStep specification or the MacOS-X documentation not being present
|
||||
in the GNUstep libraries, it is also helpful to add the method
|
||||
prototypes to the library header files.
|
||||
|
||||
Send any changes or additions to <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.
|
||||
|
||||
1.2.7 How do I start writing tests?
|
||||
-----------------------------------
|
||||
|
||||
You can write testcases - where the libraries fail tests, you could
|
||||
either fix the problem, or add it to the task list.
|
||||
|
||||
To write testcases, you need to use svn to install the latest
|
||||
GNUstep sourcecode you can find. Then checkout the
|
||||
'gnustep/tools/testsuite' module from svn.
|
||||
|
||||
1.2.8 How do I start writing applications?
|
||||
------------------------------------------
|
||||
|
||||
You can either look at the links on the GNUstep website for
|
||||
applications that have been started, and email their owners to
|
||||
volunteer to help, or you can start your own project.
|
||||
|
||||
1.2.9 How can I help with the GNUstep website?
|
||||
----------------------------------------------
|
||||
|
||||
Talk to Adam Fedor <fedor@gnu.org>, the maintainer.
|
||||
|
||||
The GNUstep website is kept as a CVS module, but the largest portions
|
||||
of it (the FAQ and the Documentation) are actually generated from files
|
||||
in the individual GNUstep packages. Many highly changeable portions
|
||||
are kept on the Wiki, so anyone can change these (first you need to get
|
||||
write access, though).
|
||||
|
||||
If you want to update the FAQ or documentation - grab the latest
|
||||
snapshot of the GNUstep core you can find, update it from the svn
|
||||
repository, and work with the contents of the appropriate documentation
|
||||
directory.
|
||||
|
||||
If you want to work on other parts of the website, you can grab a
|
||||
copy of the website via anonymous CVS. See
|
||||
`http://savannah.gnu.org/cvs/?group_id=99' for instructions on how to
|
||||
do that.
|
||||
|
||||
The main task with the website is to figure out which bits are
|
||||
out-of-date (or wrong) and update/mark-as-outdated as required.
|
||||
|
||||
1.2.10 Why doesn't GDB support Objective-C?
|
||||
-------------------------------------------
|
||||
|
||||
Um, it does. As of GDB 6.0, gdb supports debugging of Objective-C code.
|
||||
|
||||
1.3 GNU Objective C Compiler and Runtime
|
||||
========================================
|
||||
|
||||
1.3.1 What is the Objective C Runtime?
|
||||
--------------------------------------
|
||||
|
||||
The Objective C Runtime Library provides C functions and data structures
|
||||
required to execute an Objective C program.
|
||||
|
||||
The GNU Objective C Runtime Library offers everything NeXT's runtime
|
||||
does, including Categories, Protocols, `+poseAs:', thread-safety, class
|
||||
initialization on demand, delayed loading of classes, and
|
||||
initialization of static instances (such as @""-style string objects).
|
||||
|
||||
It also has several differences over NeXT's implementation:
|
||||
|
||||
* GNU's runtime provides "selector-types" along with each selector;
|
||||
NeXT's does not. A selector-type is a string that describes the C
|
||||
variable types for the method's return and argument values. Among
|
||||
other uses, selector-types is extremely helpful for fast
|
||||
distributed objects implementations, (see GNUstep Base Library
|
||||
Section, below).
|
||||
|
||||
* Many of the GNU functions have different names than their
|
||||
corresponding NeXT functions; the GNU names conform to the GNU
|
||||
coding standards. The GNUstep base library contains a
|
||||
compatibility header that works with both runtimes. You should use
|
||||
functions there or use OpenStep Foundation methods/functions
|
||||
instead of the basic runtime functions so that you code can run
|
||||
with either system.
|
||||
|
||||
Apple has recently added new functionality to their runtime,
|
||||
including built-in exception handling, etc. Hopefully these will
|
||||
be ported to the GNU runtime in the future.
|
||||
|
||||
|
||||
1.4 GNUstep Base Library
|
||||
========================
|
||||
|
||||
1.4.1 What is the GNUstep Base Library?
|
||||
---------------------------------------
|
||||
|
||||
The GNUstep Base Library is a library of general-purpose, non-graphical
|
||||
Objective C objects. For example, it includes classes for strings,
|
||||
object collections, byte streams, typed coders, invocations,
|
||||
notifications, notification dispatchers, moments in time, network ports,
|
||||
remote object messaging support (distributed objects), event loops, and
|
||||
random number generators.
|
||||
|
||||
It provides functionality that aims to implement the non-graphical
|
||||
portion of the OpenStep standard (the Foundation library).
|
||||
|
||||
1.4.2 What is its current state of development?
|
||||
-----------------------------------------------
|
||||
|
||||
GNUstep base is currently stable and, to the best of our knowledge,
|
||||
implements all of the OpenStep functionality (except for a few classes
|
||||
that we feel are not useful). It also implements most all of the new
|
||||
Cocoa classes. However we do some things, like scripting, differently,
|
||||
so we don't implement all the Cocoa classes.
|
||||
|
||||
1.4.3 What are the features of GNU Distributed Objects?
|
||||
-------------------------------------------------------
|
||||
|
||||
GNU Distributed Objects has many of the features of other distributed
|
||||
objects implementations, but, since it is free software, it can be
|
||||
ported to platforms for which other distributed objects implementations
|
||||
are not available.
|
||||
|
||||
[ NOTE: The GNU distributed object facilities have the same
|
||||
ease-of-use as Apple's; be warned, however, that they are not
|
||||
compatible with each other. They have different class hierarchies,
|
||||
different instance variables, different method names, different
|
||||
implementation strategies and different network message formats. You
|
||||
cannot communicate with a Apple NSConnection using a GNU NSConnection.
|
||||
|
||||
Here are some differences between GNU distributed objects and Apple's
|
||||
distributed objects: Apple NSDistantObject asks it's remote target for
|
||||
the method encoding types and caches the results; GNU NSDistantObject
|
||||
gets the types directly from the local GNU "typed selector" mechanism
|
||||
if the information is known locally and only queries the remote target
|
||||
or caching encoding types when using a method that is not known to the
|
||||
local process. The NSProxy for the remote root object always has name
|
||||
and, once set, you cannot change the root object of a NSConnection; the
|
||||
GNU Proxy for the remote root object has a target address value just
|
||||
like all other Proxy's, and you can change the root object as many
|
||||
times as you like. ].
|
||||
|
||||
1.5 GNUstep GUI Library
|
||||
=======================
|
||||
|
||||
1.5.1 What is the GUI Library?
|
||||
------------------------------
|
||||
|
||||
The GNUstep GUI Library is a library of objects useful for writing
|
||||
graphical applications. For example, it includes classes for drawing
|
||||
and manipulating graphics objects on the screen: windows, menus,
|
||||
buttons, sliders, text fields, and events. There are also many
|
||||
peripheral classes that offer operating-system-independent interfaces to
|
||||
images, cursors, colors, fonts, pasteboards, printing. There are also
|
||||
workspace support classes such as data links, open/save panels,
|
||||
context-dependent help, spell checking.
|
||||
|
||||
It provides functionality that aims to implement the `AppKit'
|
||||
portion of the OpenStep standard. However the implementation has been
|
||||
written to take advantage of GNUstep enhancements wherever possible.
|
||||
|
||||
1.5.2 Explain the organization of the front- and back-ends
|
||||
----------------------------------------------------------
|
||||
|
||||
The GNUstep GUI Library is divided into a front- and back-end. The
|
||||
front-end contains the majority of implementation, but leaves out the
|
||||
low-level drawing and event code. A back-end can override whatever
|
||||
methods necessary in order to implement low-level drawing event
|
||||
receiving. Different back-ends will make GNUstep available on various
|
||||
platforms. The default GNU back-end will run on top of X Windows.
|
||||
Other back-ends could allow GNUstep to run on OpenGL and WIN32
|
||||
graphics/event platforms. Much work will be saved by this clean
|
||||
separation between front- and back-end, because it allows different
|
||||
platforms to share the large amount of front-end code.
|
||||
|
||||
1.5.3 What is the current state of development of the front-end?
|
||||
----------------------------------------------------------------
|
||||
|
||||
Many of the classes are well implemented, if not thoroughly tested.
|
||||
See the GNUstep web sites and read status information contained in the
|
||||
distribution for the most up-to-date information.
|
||||
|
||||
1.5.4 What is the current state of development of the back-ends?
|
||||
----------------------------------------------------------------
|
||||
|
||||
There are several backends currently available:
|
||||
|
||||
`xlib'
|
||||
This backend runs on X11 and uses standard xlib calls for
|
||||
implementing drawing. It works well, but is limited in many areas
|
||||
due to the limitations of xlib drawing.
|
||||
|
||||
`art'
|
||||
This is a very good backend that draws using the libart package and
|
||||
freetype with near PostScript quality and functionality. It is
|
||||
currently the standard backend (as long as the required libraries
|
||||
are installed).
|
||||
|
||||
`w32'
|
||||
This backend works on Windows and uses basic Windows drawing
|
||||
|
||||
`cairo'
|
||||
An up-and-coming backend. It still relies on unpublished functions
|
||||
in the cairo library so using it is not for the beginner.
|
||||
|
||||
1.6 GNUstep DisplayGhostScript Server
|
||||
=====================================
|
||||
|
||||
1.6.1 What is the Display Ghostscript Server?
|
||||
---------------------------------------------
|
||||
|
||||
It is a free implementation of a Display PostScript server based on the
|
||||
GNU Ghostscript program developed by Aladdin Enterprises and now owned
|
||||
by artofcode LLC.
|
||||
|
||||
At one point, GNUstep was using this for display purposes. However
|
||||
the development of DGS has stopped as it is too difficult to maintain
|
||||
and no one wanted to work on it. Now we are using other means of
|
||||
drawing.
|
||||
|
||||
1.6.2 What is its current state of development?
|
||||
-----------------------------------------------
|
||||
|
||||
GNU contracted with Aladdin Enterprises to add some key features to GNU
|
||||
Ghostscript so it could be used as a DPS server. This work has mostly
|
||||
been done, although Aladdin did not completely finish the work that they
|
||||
were contracted for. (Because the work took longer than specified and
|
||||
was not completed, Aladdin agreed to waive approximately $10,000 in
|
||||
promised fees for the work that was actually done and delivered.) DGS
|
||||
works fairly well with a single context. Alpha channel and compositing
|
||||
doesn't work.
|
||||
|
||||
1.6.3 What is the relationship between the Display Ghostscript Server and X Windows?
|
||||
------------------------------------------------------------------------------------
|
||||
|
||||
Display Ghostscript runs on top of X Windows.
|
||||
|
|
@ -1,54 +0,0 @@
|
|||
|
||||
*** What is the FilesystemLayouts directory ***
|
||||
|
||||
This directory contains filesystem layouts that you can use when you
|
||||
configure your gnustep-make.
|
||||
|
||||
A filesystem layout describes how the GNUstep installation domains
|
||||
(System, Network, Local, User) map to directories on disk.
|
||||
|
||||
Every file in this directory is a filesystem layout that you can use
|
||||
in gnustep-make's ./configure (technical note: the files are shell
|
||||
files that are directly included by ./configure and that should set the
|
||||
specified variables). For example:
|
||||
|
||||
./configure --with-layout=fhs
|
||||
|
||||
./configure --with-layout=fhs-system
|
||||
|
||||
By default, the GNUstep layout is used.
|
||||
|
||||
If you want to use your own custom layout, just start with one of the
|
||||
existing layouts, copy it into a new file, and edit it. :-)
|
||||
|
||||
|
||||
|
||||
*** Popular Fileystem Layouts ***
|
||||
|
||||
Here is a list of popular filesystem layout --
|
||||
|
||||
* gnustep: default GNUstep filesystem layout; it installs everything
|
||||
into /usr/GNUstep/System, /usr/GNUstep/Local. It's a very friendly
|
||||
layout, similar to the ones found on NeXTstep, OpenStep and Apple Mac
|
||||
OS X. It's a layout that can work nicely with fat binaries, but may
|
||||
not blend very well with the native environment because everything is
|
||||
installed in special, GNUstep-only, directories, so you may need to
|
||||
source a special script (GNUstep.sh) before being able to use the
|
||||
layout. Recommended for the advanced GNUstep users and the
|
||||
NeXTstep/Apple fans.
|
||||
|
||||
* fhs: standard FHS Unix layout for locally compiled software; it
|
||||
installs everything into /usr/local. Blends very well with native
|
||||
GNU/Linux systems (and other Unix systems with similar directory
|
||||
structure). Recommended if you're compiling from sources on Unix and
|
||||
want good integration with your native system.
|
||||
|
||||
* fhs-system: standard FHS layout for software to be shipped as part
|
||||
of distributions/systems; it installs system stuff into /usr, and is
|
||||
ready to support local stuff to be installed into /usr/local. Blends
|
||||
wonderfully with native GNU/Linux systems (and other Unix systems with
|
||||
similar directory structure) as you're installing everything straight
|
||||
into the standard system locations. Recommended if you're building
|
||||
packages for a Unix system.
|
||||
|
||||
|
|
@ -1,82 +0,0 @@
|
|||
#
|
||||
# FHS (Filesystem Hierarchy Standard) filesystem layout
|
||||
#
|
||||
# This is the standard FHS Unix filesystem layout to use when
|
||||
# installing everything into /usr/local. Use this on GNU/Linux (or
|
||||
# any Unix with a similar filesystem layout) if you want GNUstep to
|
||||
# blend in your GNU/Linux environment and you are compiling all of
|
||||
# your GNUstep system from source.
|
||||
#
|
||||
# Basically, it's a standard FHS Unix filesystem with all domains mapped
|
||||
# into the same /usr/local directory.
|
||||
|
||||
# Make sure you have /usr/local/bin in your PATH, and /usr/local/lib
|
||||
# in your /etc/ld.so.conf (or equivalent for your Unix), and don't
|
||||
# forget to run ldconfig after installing a library! To use
|
||||
# gnustep-make in this environment, use 'export
|
||||
# GNUSTEP_MAKEFILES=/usr/local/share/GNUstep/Makefiles'
|
||||
|
||||
# By default, we install into /usr/local, but this can be overridden
|
||||
# by using ./configure --prefix=xxx when configuring.
|
||||
GNUSTEP_DEFAULT_PREFIX=/usr/local
|
||||
|
||||
# These are only used by gnustep-base to implement the NSUserDirectory
|
||||
# API. We never install anything in them. They will be used as they
|
||||
# are without $prefix.
|
||||
GNUSTEP_SYSTEM_USERS_DIR=/home
|
||||
GNUSTEP_NETWORK_USERS_DIR=/home
|
||||
GNUSTEP_LOCAL_USERS_DIR=/home
|
||||
|
||||
# NB: $prefix will be added to all the MAKEFILES/SYSTEM/NETWORK/LOCAL
|
||||
# paths.
|
||||
GNUSTEP_MAKEFILES=/share/GNUstep/Makefiles
|
||||
|
||||
GNUSTEP_SYSTEM_APPS=/lib/GNUstep/Applications
|
||||
GNUSTEP_SYSTEM_ADMIN_APPS=/lib/GNUstep/Applications
|
||||
GNUSTEP_SYSTEM_WEB_APPS=/lib/GNUstep/WebApplications
|
||||
GNUSTEP_SYSTEM_TOOLS=/bin
|
||||
GNUSTEP_SYSTEM_ADMIN_TOOLS=/sbin
|
||||
GNUSTEP_SYSTEM_LIBRARY=/lib/GNUstep
|
||||
GNUSTEP_SYSTEM_HEADERS=/include
|
||||
GNUSTEP_SYSTEM_LIBRARIES=/lib
|
||||
GNUSTEP_SYSTEM_DOC=/share/GNUstep/Documentation
|
||||
GNUSTEP_SYSTEM_DOC_MAN=/man
|
||||
GNUSTEP_SYSTEM_DOC_INFO=/info
|
||||
|
||||
GNUSTEP_NETWORK_APPS=/lib/GNUstep/Applications
|
||||
GNUSTEP_NETWORK_ADMIN_APPS=/lib/GNUstep/Applications
|
||||
GNUSTEP_NETWORK_WEB_APPS=/lib/GNUstep/WebApplications
|
||||
GNUSTEP_NETWORK_TOOLS=/bin
|
||||
GNUSTEP_NETWORK_ADMIN_TOOLS=/sbin
|
||||
GNUSTEP_NETWORK_LIBRARY=/lib/GNUstep
|
||||
GNUSTEP_NETWORK_HEADERS=/include
|
||||
GNUSTEP_NETWORK_LIBRARIES=/lib
|
||||
GNUSTEP_NETWORK_DOC=/share/GNUstep/Documentation
|
||||
GNUSTEP_NETWORK_DOC_MAN=/man
|
||||
GNUSTEP_NETWORK_DOC_INFO=/info
|
||||
|
||||
GNUSTEP_LOCAL_APPS=/lib/GNUstep/Applications
|
||||
GNUSTEP_LOCAL_ADMIN_APPS=/lib/GNUstep/Applications
|
||||
GNUSTEP_LOCAL_WEB_APPS=/lib/GNUstep/WebApplications
|
||||
GNUSTEP_LOCAL_TOOLS=/bin
|
||||
GNUSTEP_LOCAL_ADMIN_TOOLS=/sbin
|
||||
GNUSTEP_LOCAL_LIBRARY=/lib/GNUstep
|
||||
GNUSTEP_LOCAL_HEADERS=/include
|
||||
GNUSTEP_LOCAL_LIBRARIES=/lib
|
||||
GNUSTEP_LOCAL_DOC=/share/GNUstep/Documentation
|
||||
GNUSTEP_LOCAL_DOC_MAN=/man
|
||||
GNUSTEP_LOCAL_DOC_INFO=/info
|
||||
|
||||
GNUSTEP_USER_DIR_APPS=GNUstep/Applications
|
||||
GNUSTEP_USER_DIR_ADMIN_APPS=GNUstep/Applications/Admin
|
||||
GNUSTEP_USER_DIR_WEB_APPS=GNUstep/WebApplications
|
||||
GNUSTEP_USER_DIR_TOOLS=GNUstep/Tools
|
||||
GNUSTEP_USER_DIR_ADMIN_TOOLS=GNUstep/Tools/Admin
|
||||
GNUSTEP_USER_DIR_LIBRARY=GNUstep/Library
|
||||
GNUSTEP_USER_DIR_HEADERS=GNUstep/Library/Headers
|
||||
GNUSTEP_USER_DIR_LIBRARIES=GNUstep/Library/Libraries
|
||||
GNUSTEP_USER_DIR_DOC=GNUstep/Documentation
|
||||
GNUSTEP_USER_DIR_DOC_MAN=GNUstep/Documentation/man
|
||||
GNUSTEP_USER_DIR_DOC_INFO=GNUstep/Documentation/info
|
||||
GNUSTEP_USER_CONFIG_FILE=.GNUstep.conf
|
||||
GNUSTEP_USER_DEFAULTS_DIR=GNUstep/Defaults
|
|
@ -1,87 +0,0 @@
|
|||
#
|
||||
# FHS (Filesystem Hierarchy Standard) filesystem layout for system installations
|
||||
#
|
||||
# This is the standard FHS Unix filesystem layout to use when
|
||||
# installing into /usr. Use this if you want GNUstep to blend into
|
||||
# your GNU/Linux filesystem (or any other Unix with a similar
|
||||
# filesystem) and you are compiling gnustep-make so that it can be
|
||||
# shipped as part of a distribution/basic system installation.
|
||||
#
|
||||
# We put SYSTEM into /usr, and LOCAL into /usr/local. This allows you
|
||||
# to make a distinction between stuff that you ship as part of your
|
||||
# system/distribution, and the local stuff installed by the local
|
||||
# sysadmin. Make sure you compile/install all packages that you want
|
||||
# to go into /usr (ie, be part of the system/distribution) using
|
||||
# 'make install GNUSTEP_INSTALLATION_DOMAIN=SYSTEM'
|
||||
#
|
||||
# To get system packages to work in this layout, you need /usr/bin in
|
||||
# your PATH, and /usr/lib in your /etc/ld.so.conf (or equivalent for
|
||||
# your Unix). Don't forget to run ldconfig after installing a
|
||||
# library!
|
||||
#
|
||||
# Your users will need to also add /usr/local/bin to PATH and
|
||||
# /usr/local/lib to /etc/ld.so.conf (or equivalent for your Unix) if
|
||||
# they want to use the LOCAL domain. To use gnustep-make in this
|
||||
# environment, use 'export
|
||||
# GNUSTEP_MAKEFILES=/usr/share/GNUstep/Makefiles'
|
||||
|
||||
# By default, we install into /usr, but this can be overridden
|
||||
# by using ./configure --prefix=xxx when configuring.
|
||||
GNUSTEP_DEFAULT_PREFIX=/usr
|
||||
|
||||
# These are only used by gnustep-base to implement the NSUserDirectory
|
||||
# API. We never install anything in them. They will be used as they
|
||||
# are without $prefix.
|
||||
GNUSTEP_SYSTEM_USERS_DIR=/home
|
||||
GNUSTEP_NETWORK_USERS_DIR=/home
|
||||
GNUSTEP_LOCAL_USERS_DIR=/home
|
||||
|
||||
# NB: $prefix will be added to all the MAKEFILES/SYSTEM/NETWORK/LOCAL
|
||||
# paths.
|
||||
GNUSTEP_MAKEFILES=/share/GNUstep/Makefiles
|
||||
|
||||
GNUSTEP_SYSTEM_APPS=/lib/GNUstep/Apps
|
||||
GNUSTEP_SYSTEM_ADMIN_APPS=/lib/GNUstep/Apps
|
||||
GNUSTEP_SYSTEM_TOOLS=/bin
|
||||
GNUSTEP_SYSTEM_ADMIN_TOOLS=/sbin
|
||||
GNUSTEP_SYSTEM_LIBRARY=/lib/GNUstep
|
||||
GNUSTEP_SYSTEM_HEADERS=/include
|
||||
GNUSTEP_SYSTEM_LIBRARIES=/lib
|
||||
GNUSTEP_SYSTEM_DOC=/share/GNUstep/Documentation
|
||||
GNUSTEP_SYSTEM_DOC_MAN=/man
|
||||
GNUSTEP_SYSTEM_DOC_INFO=/info
|
||||
|
||||
GNUSTEP_NETWORK_APPS=/local/lib/GNUstep/Apps
|
||||
GNUSTEP_NETWORK_ADMIN_APPS=/local/lib/GNUstep/Apps
|
||||
GNUSTEP_NETWORK_TOOLS=/local/bin
|
||||
GNUSTEP_NETWORK_ADMIN_TOOLS=/local/sbin
|
||||
GNUSTEP_NETWORK_LIBRARY=/local/lib/GNUstep
|
||||
GNUSTEP_NETWORK_HEADERS=/local/include
|
||||
GNUSTEP_NETWORK_LIBRARIES=/local/lib
|
||||
GNUSTEP_NETWORK_DOC=/local/share/GNUstep/Documentation
|
||||
GNUSTEP_NETWORK_DOC_MAN=/local/man
|
||||
GNUSTEP_NETWORK_DOC_INFO=/local/info
|
||||
|
||||
GNUSTEP_LOCAL_APPS=/local/lib/GNUstep/Apps
|
||||
GNUSTEP_LOCAL_ADMIN_APPS=/local/lib/GNUstep/Apps
|
||||
GNUSTEP_LOCAL_TOOLS=/local/bin
|
||||
GNUSTEP_LOCAL_ADMIN_TOOLS=/local/sbin
|
||||
GNUSTEP_LOCAL_LIBRARY=/local/lib/GNUstep
|
||||
GNUSTEP_LOCAL_HEADERS=/local/include
|
||||
GNUSTEP_LOCAL_LIBRARIES=/local/lib
|
||||
GNUSTEP_LOCAL_DOC=/local/share/GNUstep/Documentation
|
||||
GNUSTEP_LOCAL_DOC_MAN=/local/man
|
||||
GNUSTEP_LOCAL_DOC_INFO=/local/info
|
||||
|
||||
GNUSTEP_USER_DIR_APPS=GNUstep/Applications
|
||||
GNUSTEP_USER_DIR_ADMIN_APPS=GNUstep/Applications/Admin
|
||||
GNUSTEP_USER_DIR_TOOLS=GNUstep/Tools
|
||||
GNUSTEP_USER_DIR_ADMIN_TOOLS=GNUstep/Tools/Admin
|
||||
GNUSTEP_USER_DIR_LIBRARY=GNUstep/Library
|
||||
GNUSTEP_USER_DIR_HEADERS=GNUstep/Library/Headers
|
||||
GNUSTEP_USER_DIR_LIBRARIES=GNUstep/Library/Libraries
|
||||
GNUSTEP_USER_DIR_DOC=GNUstep/Documentation
|
||||
GNUSTEP_USER_DIR_DOC_MAN=GNUstep/Documentation/man
|
||||
GNUSTEP_USER_DIR_DOC_INFO=GNUstep/Documentation/info
|
||||
GNUSTEP_USER_CONFIG_FILE=.GNUstep.conf
|
||||
GNUSTEP_USER_DEFAULTS_DIR=GNUstep/Defaults
|
|
@ -1,92 +0,0 @@
|
|||
#
|
||||
# GNUstep filesystem layout
|
||||
#
|
||||
# This is the standard GNUstep filesystem layout. It's a layout very
|
||||
# similar to the ones found on NeXTstep, OpenStep and Apple Mac OS X.
|
||||
#
|
||||
# This is also a layout well suited to use fat binaries: binaries
|
||||
# for multiple cpu/os/*step libraries in the same installation. The
|
||||
# 'fat binary' support is called 'non-flattened' in GNUstep parlance,
|
||||
# and is disabled by default. You can activate it by with ./configure
|
||||
# --disable-flattened. It's cool, but your directory structure
|
||||
# becomes more complex to account for all the types of binaries and
|
||||
# systems. It's recommended that you source GNUstep.sh if you're
|
||||
# using the non-flattened layout (the command is:
|
||||
# '. $GNUSTEP_MAKEFILES/GNUstep.sh', and notice the '.' and the space
|
||||
# after it).
|
||||
#
|
||||
# If the layout is flattened, it's still a good idea to source
|
||||
# GNUstep.sh if it's not too much trouble for you, else you can
|
||||
# manually add /usr/GNUstep/System/Tools and /usr/GNUstep/Local/Tools
|
||||
# to your PATH, /usr/GNUstep/System/Library/Libraries and
|
||||
# /usr/GNUstep/Local/Library/Libraries to your LD_LIBRARY_PATH (or
|
||||
# /etc/ld.so.conf + ldconfig).
|
||||
#
|
||||
# To use gnustep-make in this environment, source GNUstep.sh or use
|
||||
# 'export GNUSTEP_MAKEFILES=/usr/GNUstep/System/Library/Makefiles'.
|
||||
|
||||
# By default, we install into /usr/GNUstep, but this can be overridden
|
||||
# by using ./configure --prefix=xxx when configuring.
|
||||
GNUSTEP_DEFAULT_PREFIX=/usr/GNUstep
|
||||
|
||||
# These are only used by gnustep-base to implement the NSUserDirectory
|
||||
# API. We never install anything in them. They will be used as they
|
||||
# are without $prefix.
|
||||
GNUSTEP_SYSTEM_USERS_DIR=/home
|
||||
GNUSTEP_NETWORK_USERS_DIR=/home
|
||||
GNUSTEP_LOCAL_USERS_DIR=/home
|
||||
|
||||
# NB: $prefix will be added to all the MAKEFILES/SYSTEM/NETWORK/LOCAL
|
||||
# paths.
|
||||
GNUSTEP_MAKEFILES=/System/Library/Makefiles
|
||||
|
||||
GNUSTEP_SYSTEM_APPS=/System/Applications
|
||||
GNUSTEP_SYSTEM_ADMIN_APPS=/System/Applications/Admin
|
||||
GNUSTEP_SYSTEM_WEB_APPS=/System/Library/WebApplications
|
||||
GNUSTEP_SYSTEM_TOOLS=/System/Tools
|
||||
GNUSTEP_SYSTEM_ADMIN_TOOLS=/System/Tools/Admin
|
||||
GNUSTEP_SYSTEM_LIBRARY=/System/Library
|
||||
GNUSTEP_SYSTEM_HEADERS=/System/Library/Headers
|
||||
GNUSTEP_SYSTEM_LIBRARIES=/System/Library/Libraries
|
||||
GNUSTEP_SYSTEM_DOC=/System/Library/Documentation
|
||||
GNUSTEP_SYSTEM_DOC_MAN=/System/Library/Documentation/man
|
||||
GNUSTEP_SYSTEM_DOC_INFO=/System/Library/Documentation/info
|
||||
|
||||
GNUSTEP_NETWORK_APPS=/Local/Applications
|
||||
GNUSTEP_NETWORK_ADMIN_APPS=/Local/Applications/Admin
|
||||
GNUSTEP_NETWORK_WEB_APPS=/Local/Library/WebApplications
|
||||
GNUSTEP_NETWORK_TOOLS=/Local/Tools
|
||||
GNUSTEP_NETWORK_ADMIN_TOOLS=/Local/Tools/Admin
|
||||
GNUSTEP_NETWORK_LIBRARY=/Local/Library
|
||||
GNUSTEP_NETWORK_HEADERS=/Local/Library/Headers
|
||||
GNUSTEP_NETWORK_LIBRARIES=/Local/Library/Libraries
|
||||
GNUSTEP_NETWORK_DOC=/Local/Library/Documentation
|
||||
GNUSTEP_NETWORK_DOC_MAN=/Local/Library/Documentation/man
|
||||
GNUSTEP_NETWORK_DOC_INFO=/Local/Library/Documentation/info
|
||||
|
||||
GNUSTEP_LOCAL_APPS=/Local/Applications
|
||||
GNUSTEP_LOCAL_ADMIN_APPS=/Local/Applications/Admin
|
||||
GNUSTEP_LOCAL_WEB_APPS=/Local/Library/WebApplications
|
||||
GNUSTEP_LOCAL_TOOLS=/Local/Tools
|
||||
GNUSTEP_LOCAL_ADMIN_TOOLS=/Local/Tools/Admin
|
||||
GNUSTEP_LOCAL_LIBRARY=/Local/Library
|
||||
GNUSTEP_LOCAL_HEADERS=/Local/Library/Headers
|
||||
GNUSTEP_LOCAL_LIBRARIES=/Local/Library/Libraries
|
||||
GNUSTEP_LOCAL_DOC=/Local/Library/Documentation
|
||||
GNUSTEP_LOCAL_DOC_MAN=/Local/Library/Documentation/man
|
||||
GNUSTEP_LOCAL_DOC_INFO=/Local/Library/Documentation/info
|
||||
|
||||
GNUSTEP_USER_DIR_APPS=GNUstep/Applications
|
||||
GNUSTEP_USER_DIR_ADMIN_APPS=GNUstep/Applications/Admin
|
||||
GNUSTEP_USER_DIR_WEB_APPS=GNUstep/Library/WebApplications
|
||||
GNUSTEP_USER_DIR_TOOLS=GNUstep/Tools
|
||||
GNUSTEP_USER_DIR_ADMIN_TOOLS=GNUstep/Tools/Admin
|
||||
GNUSTEP_USER_DIR_LIBRARY=GNUstep/Library
|
||||
GNUSTEP_USER_DIR_HEADERS=GNUstep/Library/Headers
|
||||
GNUSTEP_USER_DIR_LIBRARIES=GNUstep/Library/Libraries
|
||||
GNUSTEP_USER_DIR_DOC=GNUstep/Documentation
|
||||
GNUSTEP_USER_DIR_DOC_MAN=GNUstep/Documentation/man
|
||||
GNUSTEP_USER_DIR_DOC_INFO=GNUstep/Documentation/info
|
||||
GNUSTEP_USER_CONFIG_FILE=.GNUstep.conf
|
||||
GNUSTEP_USER_DEFAULTS_DIR=GNUstep/Defaults
|
||||
|
|
@ -1,86 +0,0 @@
|
|||
#
|
||||
# GNUstep filesystem layout
|
||||
#
|
||||
# This is the standard GNUstep filesystem layout with the difference
|
||||
# that the 'Network' domain is enabled.
|
||||
#
|
||||
# If you want to share parts of your GNUstep installation over an
|
||||
# internal network of machines, then you may want to use this layout.
|
||||
#
|
||||
# In all other cases, you most likely don't need this layout.
|
||||
#
|
||||
# Having the 'Network' domain is useful if you have some GNUstep stuff
|
||||
# that you plan to share on many machines in your internal network.
|
||||
# In that case, you should mount the directory as the 'Network' domain
|
||||
# on all the machines in your network. If the machines have different
|
||||
# CPUs/OSes installed on them, you may also want to disable the
|
||||
# flattened filesystem structure, and enable multi-platform support.
|
||||
#
|
||||
# Please check the 'gnustep' layout documentation for more info.
|
||||
#
|
||||
|
||||
# By default, we install into /usr/GNUstep, but this can be overridden
|
||||
# by using ./configure --prefix=xxx when configuring.
|
||||
GNUSTEP_DEFAULT_PREFIX=/usr/GNUstep
|
||||
|
||||
# These are only used by gnustep-base to implement the NSUserDirectory
|
||||
# API. We never install anything in them. They will be used as they
|
||||
# are without $prefix.
|
||||
GNUSTEP_SYSTEM_USERS_DIR=/home
|
||||
GNUSTEP_NETWORK_USERS_DIR=/home
|
||||
GNUSTEP_LOCAL_USERS_DIR=/home
|
||||
|
||||
# NB: $prefix will be added to all the MAKEFILES/SYSTEM/NETWORK/LOCAL
|
||||
# paths.
|
||||
GNUSTEP_MAKEFILES=/System/Library/Makefiles
|
||||
|
||||
GNUSTEP_SYSTEM_APPS=/System/Applications
|
||||
GNUSTEP_SYSTEM_ADMIN_APPS=/System/Applications/Admin
|
||||
GNUSTEP_SYSTEM_WEB_APPS=/System/Library/WebApplications
|
||||
GNUSTEP_SYSTEM_TOOLS=/System/Tools
|
||||
GNUSTEP_SYSTEM_ADMIN_TOOLS=/System/Tools/Admin
|
||||
GNUSTEP_SYSTEM_LIBRARY=/System/Library
|
||||
GNUSTEP_SYSTEM_HEADERS=/System/Library/Headers
|
||||
GNUSTEP_SYSTEM_LIBRARIES=/System/Library/Libraries
|
||||
GNUSTEP_SYSTEM_DOC=/System/Library/Documentation
|
||||
GNUSTEP_SYSTEM_DOC_MAN=/System/Library/Documentation/man
|
||||
GNUSTEP_SYSTEM_DOC_INFO=/System/Library/Documentation/info
|
||||
|
||||
GNUSTEP_NETWORK_APPS=/Network/Applications
|
||||
GNUSTEP_NETWORK_ADMIN_APPS=/Network/Applications/Admin
|
||||
GNUSTEP_NETWORK_WEB_APPS=/Network/Library/WebApplications
|
||||
GNUSTEP_NETWORK_TOOLS=/Network/Tools
|
||||
GNUSTEP_NETWORK_ADMIN_TOOLS=/Network/Tools/Admin
|
||||
GNUSTEP_NETWORK_LIBRARY=/Network/Library
|
||||
GNUSTEP_NETWORK_HEADERS=/Network/Library/Headers
|
||||
GNUSTEP_NETWORK_LIBRARIES=/Network/Library/Libraries
|
||||
GNUSTEP_NETWORK_DOC=/Network/Library/Documentation
|
||||
GNUSTEP_NETWORK_DOC_MAN=/Network/Library/Documentation/man
|
||||
GNUSTEP_NETWORK_DOC_INFO=/Network/Library/Documentation/info
|
||||
|
||||
GNUSTEP_LOCAL_APPS=/Local/Applications
|
||||
GNUSTEP_LOCAL_ADMIN_APPS=/Local/Applications/Admin
|
||||
GNUSTEP_LOCAL_WEB_APPS=/Local/Library/WebApplications
|
||||
GNUSTEP_LOCAL_TOOLS=/Local/Tools
|
||||
GNUSTEP_LOCAL_ADMIN_TOOLS=/Local/Tools/Admin
|
||||
GNUSTEP_LOCAL_LIBRARY=/Local/Library
|
||||
GNUSTEP_LOCAL_HEADERS=/Local/Library/Headers
|
||||
GNUSTEP_LOCAL_LIBRARIES=/Local/Library/Libraries
|
||||
GNUSTEP_LOCAL_DOC=/Local/Library/Documentation
|
||||
GNUSTEP_LOCAL_DOC_MAN=/Local/Library/Documentation/man
|
||||
GNUSTEP_LOCAL_DOC_INFO=/Local/Library/Documentation/info
|
||||
|
||||
GNUSTEP_USER_DIR_APPS=GNUstep/Applications
|
||||
GNUSTEP_USER_DIR_ADMIN_APPS=GNUstep/Applications/Admin
|
||||
GNUSTEP_USER_DIR_WEB_APPS=GNUstep/Library/WebApplications
|
||||
GNUSTEP_USER_DIR_TOOLS=GNUstep/Tools
|
||||
GNUSTEP_USER_DIR_ADMIN_TOOLS=GNUstep/Tools/Admin
|
||||
GNUSTEP_USER_DIR_LIBRARY=GNUstep/Library
|
||||
GNUSTEP_USER_DIR_HEADERS=GNUstep/Library/Headers
|
||||
GNUSTEP_USER_DIR_LIBRARIES=GNUstep/Library/Libraries
|
||||
GNUSTEP_USER_DIR_DOC=GNUstep/Documentation
|
||||
GNUSTEP_USER_DIR_DOC_MAN=GNUstep/Documentation/man
|
||||
GNUSTEP_USER_DIR_DOC_INFO=GNUstep/Documentation/info
|
||||
GNUSTEP_USER_CONFIG_FILE=.GNUstep.conf
|
||||
GNUSTEP_USER_DEFAULTS_DIR=GNUstep/Defaults
|
||||
|
|
@ -1,75 +0,0 @@
|
|||
#
|
||||
# Mac-like filesystem layout
|
||||
#
|
||||
|
||||
# This is similar to the layout found on Apple Mac OS X. It mimicks
|
||||
# most of the layout, but doesn't go all the way since GNUstep doesn't
|
||||
# have GNUSTEP_DEVELOPER_xyz for example.
|
||||
#
|
||||
# To use gnustep-make in this environment, source GNUstep.sh or use
|
||||
# 'export GNUSTEP_MAKEFILES=/System/Library/Makefiles'.
|
||||
|
||||
# By default, we install into /, but this can be overridden by using
|
||||
# ./configure --prefix=xxx when configuring.
|
||||
GNUSTEP_DEFAULT_PREFIX=/
|
||||
|
||||
# These are only used by gnustep-base to implement the NSUserDirectory
|
||||
# API. We never install anything in them. They will be used as they
|
||||
# are without $prefix.
|
||||
GNUSTEP_SYSTEM_USERS_DIR=
|
||||
GNUSTEP_NETWORK_USERS_DIR=/Network/Users
|
||||
GNUSTEP_LOCAL_USERS_DIR=/Users
|
||||
|
||||
# NB: $prefix will be added to all the MAKEFILES/SYSTEM/NETWORK/LOCAL
|
||||
# paths.
|
||||
GNUSTEP_MAKEFILES=/System/Library/Makefiles
|
||||
|
||||
GNUSTEP_SYSTEM_APPS=/Applications
|
||||
GNUSTEP_SYSTEM_ADMIN_APPS=/Applications/Utilities
|
||||
GNUSTEP_SYSTEM_WEB_APPS=/System/Library/WebApplications
|
||||
GNUSTEP_SYSTEM_TOOLS=/usr/local/bin
|
||||
GNUSTEP_SYSTEM_ADMIN_TOOLS=/usr/local/sbin
|
||||
GNUSTEP_SYSTEM_LIBRARY=/System/Library
|
||||
GNUSTEP_SYSTEM_HEADERS=/System/Library/Headers
|
||||
GNUSTEP_SYSTEM_LIBRARIES=/System/Library/Libraries
|
||||
GNUSTEP_SYSTEM_DOC=/Library/Documentation
|
||||
GNUSTEP_SYSTEM_DOC_MAN=/Library/Documentation/man
|
||||
GNUSTEP_SYSTEM_DOC_INFO=/Library/Documentation/info
|
||||
|
||||
GNUSTEP_NETWORK_APPS=/Applications
|
||||
GNUSTEP_NETWORK_ADMIN_APPS=/Applications/Utilities
|
||||
GNUSTEP_NETWORK_WEB_APPS=/Library/WebApplications
|
||||
GNUSTEP_NETWORK_TOOLS=/usr/local/bin
|
||||
GNUSTEP_NETWORK_ADMIN_TOOLS=/usr/local/sbin
|
||||
GNUSTEP_NETWORK_LIBRARY=/Library
|
||||
GNUSTEP_NETWORK_HEADERS=/Library/Headers
|
||||
GNUSTEP_NETWORK_LIBRARIES=/Library/Libraries
|
||||
GNUSTEP_NETWORK_DOC=/Library/Documentation
|
||||
GNUSTEP_NETWORK_DOC_MAN=/Library/Documentation/man
|
||||
GNUSTEP_NETWORK_DOC_INFO=/Library/Documentation/info
|
||||
|
||||
GNUSTEP_LOCAL_APPS=/Applications
|
||||
GNUSTEP_LOCAL_ADMIN_APPS=/Applications/Utilities
|
||||
GNUSTEP_LOCAL_WEB_APPS=/Library/WebApplications
|
||||
GNUSTEP_LOCAL_TOOLS=/usr/local/bin
|
||||
GNUSTEP_LOCAL_ADMIN_TOOLS=/usr/local/sbin
|
||||
GNUSTEP_LOCAL_LIBRARY=/Library
|
||||
GNUSTEP_LOCAL_HEADERS=/Library/Headers
|
||||
GNUSTEP_LOCAL_LIBRARIES=/Library/Libraries
|
||||
GNUSTEP_LOCAL_DOC=/Library/Documentation
|
||||
GNUSTEP_LOCAL_DOC_MAN=/Library/Documentation/man
|
||||
GNUSTEP_LOCAL_DOC_INFO=/Library/Documentation/info
|
||||
|
||||
GNUSTEP_USER_DIR_APPS=Applications
|
||||
GNUSTEP_USER_DIR_ADMIN_APPS=Applications/Utilities
|
||||
GNUSTEP_USER_DIR_WEB_APPS=Library/WebApplications
|
||||
GNUSTEP_USER_DIR_TOOLS=bin
|
||||
GNUSTEP_USER_DIR_ADMIN_TOOLS=sbin
|
||||
GNUSTEP_USER_DIR_LIBRARY=Library
|
||||
GNUSTEP_USER_DIR_HEADERS=Library/Headers
|
||||
GNUSTEP_USER_DIR_LIBRARIES=Library/Libraries
|
||||
GNUSTEP_USER_DIR_DOC=Documentation
|
||||
GNUSTEP_USER_DIR_DOC_MAN=Documentation/man
|
||||
GNUSTEP_USER_DIR_DOC_INFO=Documentation/info
|
||||
GNUSTEP_USER_CONFIG_FILE=Library/.GNUstep.conf
|
||||
GNUSTEP_USER_DEFAULTS_DIR=Library/Defaults
|
|
@ -1,71 +0,0 @@
|
|||
#
|
||||
# next filesystem layout
|
||||
#
|
||||
# Inspired by the filesystem layout on NeXTSTEP 3.x / OPENSTEP 4.x and
|
||||
# Rhapsody. This is mostly a historical layout, but potentially
|
||||
# interesting for NeXTSTEP / OPENSTEP fans.
|
||||
#
|
||||
# override this prefix by using ./configure --prefix=xxx when
|
||||
# configuring.
|
||||
GNUSTEP_DEFAULT_PREFIX=/
|
||||
|
||||
# These are only used by gnustep-base to implement the NSUserDirectory
|
||||
# API. We never install anything in them. They will be used as they
|
||||
# are without $prefix.
|
||||
GNUSTEP_SYSTEM_USERS_DIR=/Users
|
||||
GNUSTEP_NETWORK_USERS_DIR=/Network/Users
|
||||
GNUSTEP_LOCAL_USERS_DIR=/Users
|
||||
|
||||
# NB: $prefix will be added to all the MAKEFILES/SYSTEM/NETWORK/LOCAL
|
||||
# paths.
|
||||
GNUSTEP_MAKEFILES=/GNUDeveloper/Makefiles
|
||||
|
||||
GNUSTEP_SYSTEM_APPS=/GNUApps
|
||||
GNUSTEP_SYSTEM_ADMIN_APPS=/GNUAdmin
|
||||
GNUSTEP_SYSTEM_WEB_APPS=/GNULibrary/WebApps
|
||||
GNUSTEP_SYSTEM_TOOLS=/bin
|
||||
GNUSTEP_SYSTEM_ADMIN_TOOLS=/sbin
|
||||
GNUSTEP_SYSTEM_LIBRARY=/GNULibrary
|
||||
GNUSTEP_SYSTEM_HEADERS=/GNUDeveloper/Headers
|
||||
GNUSTEP_SYSTEM_LIBRARIES=/GNULibrary/Libraries
|
||||
GNUSTEP_SYSTEM_DOC=/GNULibrary/Documentation
|
||||
GNUSTEP_SYSTEM_DOC_MAN=/GNULibrary/Documentation/man
|
||||
GNUSTEP_SYSTEM_DOC_INFO=/GNULibrary/Documentation/info
|
||||
|
||||
GNUSTEP_NETWORK_APPS=/Network/Apps
|
||||
GNUSTEP_NETWORK_ADMIN_APPS=/Network/Admin
|
||||
GNUSTEP_NETWORK_WEB_APPS=/Network/WebApps
|
||||
GNUSTEP_NETWORK_TOOLS=/Network/bin
|
||||
GNUSTEP_NETWORK_ADMIN_TOOLS=/Network/sbin
|
||||
GNUSTEP_NETWORK_LIBRARY=/Network/Library
|
||||
GNUSTEP_NETWORK_HEADERS=/Network/Developer/Headers
|
||||
GNUSTEP_NETWORK_LIBRARIES=/Network/Library/Libraries
|
||||
GNUSTEP_NETWORK_DOC=/Network/Library/Documentation
|
||||
GNUSTEP_NETWORK_DOC_MAN=/Network/Library/Documentation/man
|
||||
GNUSTEP_NETWORK_DOC_INFO=/Network/Library/Documentation/info
|
||||
|
||||
GNUSTEP_LOCAL_APPS=/LocalApps
|
||||
GNUSTEP_LOCAL_ADMIN_APPS=/LocalAdmin
|
||||
GNUSTEP_LOCAL_WEB_APPS=/LocalLibrary/WebApps
|
||||
GNUSTEP_LOCAL_TOOLS=/bin
|
||||
GNUSTEP_LOCAL_ADMIN_TOOLS=/sbin
|
||||
GNUSTEP_LOCAL_LIBRARY=/LocalLibrary
|
||||
GNUSTEP_LOCAL_HEADERS=/LocalDeveloper/Headers
|
||||
GNUSTEP_LOCAL_LIBRARIES=/LocalLibrary/Libraries
|
||||
GNUSTEP_LOCAL_DOC=/LocalLibrary/Documentation
|
||||
GNUSTEP_LOCAL_DOC_MAN=/LocalLibrary/Documentation/man
|
||||
GNUSTEP_LOCAL_DOC_INFO=/LocalLibrary/Documentation/info
|
||||
|
||||
GNUSTEP_USER_DIR_APPS=Apps
|
||||
GNUSTEP_USER_DIR_ADMIN_APPS=Admin
|
||||
GNUSTEP_USER_DIR_WEB_APPS=Library/WebApps
|
||||
GNUSTEP_USER_DIR_TOOLS=bin
|
||||
GNUSTEP_USER_DIR_ADMIN_TOOLS=sbin
|
||||
GNUSTEP_USER_DIR_LIBRARY=Library
|
||||
GNUSTEP_USER_DIR_HEADERS=Developer/Headers
|
||||
GNUSTEP_USER_DIR_LIBRARIES=Library/Libraries
|
||||
GNUSTEP_USER_DIR_DOC=Library/Documentation
|
||||
GNUSTEP_USER_DIR_DOC_MAN=Library/Documentation/man
|
||||
GNUSTEP_USER_DIR_DOC_INFO=Library/Documentation/info
|
||||
GNUSTEP_USER_CONFIG_FILE=Library/Preferences/GNUstep.conf
|
||||
GNUSTEP_USER_DEFAULTS_DIR=Library/Preferences
|
|
@ -1,356 +0,0 @@
|
|||
# @configure_input@
|
||||
#
|
||||
# Main GNUmakefile for the GNUstep GNUmakefile Package.
|
||||
#
|
||||
# Copyright (C) 1997-2006 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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 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-noarch.make
|
||||
include config.make
|
||||
|
||||
|
||||
# To install everything inside a temporary directory (say as part of
|
||||
# building a binary package - deb or rpm), use something like `make
|
||||
# install DESTDIR=/var/tmp/gnustep-make'
|
||||
DESTDIR =
|
||||
|
||||
# 'special_prefix' is an old alias for DESTDIR.
|
||||
ifneq ($(special_prefix),)
|
||||
$(warning "WARNING: special_prefix is deprecated. Please use DESTDIR instead")
|
||||
DESTDIR = $(special_prefix)
|
||||
endif
|
||||
|
||||
override GNUSTEP_CONFIG_FILE = $(DESTDIR)@GNUSTEP_CONFIG_FILE@
|
||||
override GNUSTEP_CONFIG_FILE_DIR = $(dir $(GNUSTEP_CONFIG_FILE))
|
||||
tooldir = $(DESTDIR)@GNUSTEP_SYSTEM_TOOLS@
|
||||
makedir = $(DESTDIR)@GNUSTEP_MAKEFILES@
|
||||
srcdir = @srcdir@
|
||||
VPATH = @srcdir@
|
||||
|
||||
override GNUSTEP_IS_FLATTENED = @GNUSTEP_IS_FLATTENED@
|
||||
override GNUSTEP_TARGET_CPU = @clean_target_cpu@
|
||||
override GNUSTEP_TARGET_VENDOR = @clean_target_vendor@
|
||||
override GNUSTEP_TARGET_OS = @clean_target_os@
|
||||
|
||||
override GNUSTEP_LIB_COMBO = @ac_cv_library_combo@
|
||||
|
||||
ifeq ($(GNUSTEP_IS_FLATTENED), no)
|
||||
override GNUSTEP_TARGET_DIR = $(GNUSTEP_TARGET_CPU)/$(GNUSTEP_TARGET_OS)
|
||||
override GNUSTEP_TARGET_LDIR = $(GNUSTEP_TARGET_DIR)/$(GNUSTEP_LIB_COMBO)
|
||||
override MAYBE_LIBRARY_COMBO = $(GNUSTEP_LIB_COMBO)
|
||||
else
|
||||
override GNUSTEP_TARGET_DIR = .
|
||||
override GNUSTEP_TARGET_LDIR = .
|
||||
override MAYBE_LIBRARY_COMBO = .
|
||||
endif
|
||||
|
||||
export GNUSTEP_TARGET_DIR
|
||||
export GNUSTEP_TARGET_LDIR
|
||||
export MAYBE_LIBRARY_COMBO
|
||||
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
|
||||
VERTAG = $(subst .,_,$(GNUSTEP_MAKE_VERSION))
|
||||
|
||||
SVNPREFIX=svn+ssh://svn.gna.org/svn/gnustep/tools/make
|
||||
|
||||
MAKE_FILES = aggregate.make application.make bundle.make service.make \
|
||||
common.make empty.make filesystem.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 \
|
||||
tar-exclude-list gnustep-make-help
|
||||
|
||||
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
|
||||
|
||||
ifeq ($(messages),yes)
|
||||
EC =
|
||||
else
|
||||
EC = @
|
||||
endif
|
||||
|
||||
all: generated-files
|
||||
$(EC)(echo "Thanks. All is ready to install.")
|
||||
|
||||
install: generated-files
|
||||
$(EC)(echo "Creating system tools directory: $(tooldir)"; \
|
||||
$(srcdir)/mkinstalldirs $(tooldir); \
|
||||
echo "Creating makefile directories in: $(makedir)"; \
|
||||
$(srcdir)/mkinstalldirs \
|
||||
$(makedir) \
|
||||
$(makedir)/$(GNUSTEP_TARGET_CPU) \
|
||||
$(makedir)/$(GNUSTEP_TARGET_DIR) \
|
||||
$(makedir)/$(GNUSTEP_TARGET_LDIR) \
|
||||
$(makedir)/Additional \
|
||||
$(makedir)/Auxiliary \
|
||||
$(makedir)/Master \
|
||||
$(makedir)/Instance \
|
||||
$(makedir)/Instance/Shared \
|
||||
$(makedir)/Instance/Documentation)
|
||||
$(EC)(echo "Installing GNUstep configuration file in $(GNUSTEP_CONFIG_FILE)"; \
|
||||
$(srcdir)/mkinstalldirs "$(GNUSTEP_CONFIG_FILE_DIR)"; \
|
||||
$(INSTALL_DATA) GNUstep.conf "$(GNUSTEP_CONFIG_FILE)")
|
||||
$(EC)(echo "Installing gnustep-make support software")
|
||||
$(EC)(for f in config.guess config.sub install-sh mkinstalldirs \
|
||||
clean_cpu.sh clean_os.sh \
|
||||
clean_vendor.sh cpu.sh os.sh vendor.sh \
|
||||
print_unique_pathlist.sh \
|
||||
relative_path.sh strip_makefiles.sh; do \
|
||||
$(INSTALL_PROGRAM) -m 755 $(srcdir)/$$f $(makedir); \
|
||||
done)
|
||||
$(EC)($(INSTALL_DATA) GNUstep.sh $(makedir); \
|
||||
$(INSTALL_DATA) GNUstep.csh $(makedir); \
|
||||
$(INSTALL_DATA) filesystem.sh $(makedir); \
|
||||
$(INSTALL_DATA) filesystem.csh $(makedir); \
|
||||
$(INSTALL_DATA) $(srcdir)/ld_lib_path.sh $(makedir); \
|
||||
$(INSTALL_DATA) $(srcdir)/ld_lib_path.csh $(makedir); \
|
||||
$(INSTALL_DATA) $(srcdir)/GNUstep-reset.sh $(makedir); \
|
||||
$(INSTALL_PROGRAM) -m 755 fixpath.sh $(makedir); \
|
||||
$(INSTALL_PROGRAM) -m 755 openapp $(tooldir); \
|
||||
$(INSTALL_PROGRAM) -m 755 debugapp $(tooldir); \
|
||||
$(INSTALL_PROGRAM) -m 755 opentool $(tooldir); \
|
||||
$(INSTALL_PROGRAM) -m 755 gnustep-config $(tooldir))
|
||||
$(EC)(echo "Installing makefiles"; \
|
||||
for f in $(MAKE_FILES); do \
|
||||
$(INSTALL_DATA) $(srcdir)/$$f $(makedir); \
|
||||
done; \
|
||||
for f in $(MASTER_MAKE_FILES); do \
|
||||
$(INSTALL_DATA) $(srcdir)/Master/$$f $(makedir)/Master; \
|
||||
done; \
|
||||
for f in $(INSTANCE_MAKE_FILES); do \
|
||||
$(INSTALL_DATA) $(srcdir)/Instance/$$f $(makedir)/Instance; \
|
||||
done; \
|
||||
for f in $(INSTANCE_SHARED_MAKE_FILES); do \
|
||||
$(INSTALL_DATA) $(srcdir)/Instance/Shared/$$f \
|
||||
$(makedir)/Instance/Shared; \
|
||||
done; \
|
||||
for f in $(INSTANCE_DOC_MAKE_FILES); do \
|
||||
$(INSTALL_DATA) $(srcdir)/Instance/Documentation/$$f \
|
||||
$(makedir)/Instance/Documentation; \
|
||||
done; \
|
||||
$(INSTALL_DATA) app-wrapper.template $(makedir); \
|
||||
$(INSTALL_DATA) executable.template $(makedir); \
|
||||
$(INSTALL_DATA) config-noarch.make $(makedir); \
|
||||
$(INSTALL_DATA) config.make $(makedir)/$(GNUSTEP_TARGET_LDIR))
|
||||
$(EC)(if [ "@GNUSTEP_STRIP_MAKEFILES@" = "strip" ]; then \
|
||||
echo "Stripping makefiles and shell scripts..."; \
|
||||
cd $(makedir); ./strip_makefiles.sh; \
|
||||
fi)
|
||||
|
||||
# FIXME - review the issue of this config.site. What is it used for ?
|
||||
# $(EC)($(srcdir)/mkinstalldirs $(GNUSTEP_SYSTEM_ROOT)/share; \
|
||||
# $(INSTALL_DATA) $(srcdir)/config.site $(GNUSTEP_SYSTEM_ROOT)/share)
|
||||
|
||||
uninstall:
|
||||
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 \
|
||||
vendor.sh \
|
||||
print_unique_pathlist.sh \
|
||||
ld_lib_path.csh fixpath.sh \
|
||||
filesystem.sh filesystem.csh \
|
||||
GNUstep.sh GNUstep.csh GNUstep-reset.sh \
|
||||
relative_path.sh strip_makefiles.sh; do \
|
||||
rm -f $(makedir)/$$f; \
|
||||
done
|
||||
rm -f $(tooldir)/openapp; \
|
||||
rm -f $(tooldir)/debugapp; \
|
||||
rm -f $(tooldir)/opentool; \
|
||||
rm -f $(tooldir)/gnustep-config; \
|
||||
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 $(makedir)/app-wrapper.template
|
||||
rm -f $(GNUSTEP_SYSTEM_ROOT)/share/config.site
|
||||
rm -f $(makedir)/config-noarch.make
|
||||
rm -f $(makedir)/$(GNUSTEP_TARGET_LDIR)/config.make
|
||||
-for f in $(makedir)/Instance/Documentation \
|
||||
$(makedir)/Instance/Shared \
|
||||
$(makedir)/Instance \
|
||||
$(makedir)/Master \
|
||||
$(makedir)/Auxiliary \
|
||||
$(makedir)/Additional \
|
||||
$(makedir)/$(GNUSTEP_TARGET_LDIR) \
|
||||
$(makedir)/$(GNUSTEP_TARGET_DIR) \
|
||||
$(makedir)/$(GNUSTEP_TARGET_CPU) \
|
||||
$(makedir); do \
|
||||
test -d $$f && rmdir $$f; \
|
||||
done
|
||||
|
||||
clean:
|
||||
rm -f *~ Master/*~ Instance/*~ Instance/Shared/*~
|
||||
|
||||
distclean: clean
|
||||
rm -f GNUmakefile config-noarch.make config.make config.h
|
||||
rm -f config.cache config.log config.status
|
||||
rm -f openapp opentool executable.template
|
||||
rm -f GNUstep.sh GNUstep.csh fixpath.sh gnustep-config
|
||||
rm -f filesystem.make filesystem.sh filesystem.csh
|
||||
rm -f gnustep-make.spec GNUstep.conf
|
||||
rm -f config-precomp-test.log
|
||||
|
||||
svn-tag:
|
||||
svn copy $(SVNPREFIX)/trunk $(SVNPREFIX)/tags/make-$(VERTAG) \
|
||||
-m "Tag version $(VERTAG)"
|
||||
|
||||
svn-dist:
|
||||
svn export $(SVNPREFIX)/tags/make-$(VERTAG) \
|
||||
gnustep-make-$(GNUSTEP_MAKE_VERSION)
|
||||
tar --gzip -cf gnustep-make-$(GNUSTEP_MAKE_VERSION).tar.gz gnustep-make-$(GNUSTEP_MAKE_VERSION)
|
||||
rm -rf gnustep-make-$(GNUSTEP_MAKE_VERSION)
|
||||
|
||||
svn-snapshot:
|
||||
svn export $(SVNPREFIX)/trunk \
|
||||
gnustep-make-$(GNUSTEP_MAKE_VERSION)
|
||||
tar --gzip -cf gnustep-make-$(GNUSTEP_MAKE_VERSION).tar.gz gnustep-make-$(GNUSTEP_MAKE_VERSION)
|
||||
rm -rf gnustep-make-$(GNUSTEP_MAKE_VERSION)
|
||||
|
||||
cvs-tag:
|
||||
cvs -z3 rtag make-$(VERTAG) make
|
||||
|
||||
cvs-dist:
|
||||
cvs -z3 export -r make-$(VERTAG) make
|
||||
mv make gnustep-make-$(GNUSTEP_MAKE_VERSION)
|
||||
tar --gzip -cf gnustep-make-$(GNUSTEP_MAKE_VERSION).tar.gz gnustep-make-$(GNUSTEP_MAKE_VERSION)
|
||||
rm -rf gnustep-make-$(GNUSTEP_MAKE_VERSION)
|
||||
|
||||
cvs-snapshot:
|
||||
cvs -z3 export -D now make
|
||||
mv make gnustep-make-$(GNUSTEP_MAKE_VERSION)
|
||||
tar --gzip -cf gnustep-make-$(GNUSTEP_MAKE_VERSION).tar.gz gnustep-make-$(GNUSTEP_MAKE_VERSION)
|
||||
rm -rf gnustep-make-$(GNUSTEP_MAKE_VERSION)
|
||||
|
||||
test-RPM_TOPDIR:
|
||||
@(if [ -z "$(RPM_TOPDIR)" ]; then \
|
||||
echo "Error - RPM_TOPDIR variable not set."; \
|
||||
echo "You need to set it to the top of your rpm directory tree"; \
|
||||
exit 1; \
|
||||
fi)
|
||||
|
||||
# The check for rpmbuild is for old RPM versions which didn't have
|
||||
# rpmbuild and used 'rpm -ba' instead. It can be removed when we are
|
||||
# reasonably sure no more old RPM versions (not having rpmbuild), are
|
||||
# still around.
|
||||
rpm: test-RPM_TOPDIR 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-noarch.make config.make \
|
||||
openapp opentool gnustep-make.spec executable.template gnustep-config \
|
||||
filesystem.make filesystem.sh filesystem.csh GNUstep.conf
|
||||
|
||||
GNUmakefile: GNUmakefile.in config.status
|
||||
$(SHELL) config.status
|
||||
|
||||
GNUstep.sh: GNUstep.sh.in
|
||||
$(SHELL) config.status
|
||||
|
||||
GNUstep.csh: GNUstep.csh.in
|
||||
$(SHELL) config.status
|
||||
|
||||
GNUstep.conf: GNUstep.conf.in
|
||||
$(SHELL) config.status
|
||||
|
||||
fixpath.sh: fixpath.sh.in
|
||||
$(SHELL) config.status
|
||||
|
||||
filesystem.make: filesystem.make.in
|
||||
$(SHELL) config.status
|
||||
|
||||
filesystem.sh: filesystem.sh.in
|
||||
$(SHELL) config.status
|
||||
|
||||
filesystem.csh: filesystem.csh.in
|
||||
$(SHELL) config.status
|
||||
|
||||
config-noarch.make: config-noarch.make.in Version
|
||||
$(SHELL) config.status --recheck
|
||||
|
||||
config.make: config.make.in
|
||||
$(SHELL) config.status --recheck
|
||||
|
||||
openapp: openapp.in
|
||||
$(SHELL) config.status
|
||||
|
||||
opentool: opentool.in
|
||||
$(SHELL) config.status
|
||||
|
||||
gnustep-make.spec: gnustep-make.spec.in Version
|
||||
$(SHELL) config.status --recheck
|
||||
|
||||
executable.template: executable.template.in
|
||||
$(SHELL) config.status
|
||||
|
||||
gnustep-config: gnustep-config.in
|
||||
$(SHELL) config.status
|
|
@ -1,45 +0,0 @@
|
|||
#
|
||||
# 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::
|
|
@ -1,50 +0,0 @@
|
|||
#
|
||||
# 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 +=
|
||||
|
1128
trunk/GNUstep-HOWTO
1128
trunk/GNUstep-HOWTO
File diff suppressed because it is too large
Load diff
|
@ -1,196 +0,0 @@
|
|||
#! /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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
#
|
||||
|
||||
# This file is used to reset your environment. This is needed if you
|
||||
# want to change LIBRARY_COMBO. You first reset your environment, then
|
||||
# set a new LIBRARY_COMBO variable, then source GNUstep.sh again.
|
||||
|
||||
# This file resets variables in reverse order as they are set in the
|
||||
# GNUstep.sh file.
|
||||
|
||||
# This file only makes sense if you are using the standard GNUstep
|
||||
# filesystem structure. If you're not, then your System Tools
|
||||
# directory could be /usr/bin, but you don't really want to remove
|
||||
# that from your PATH. :-)
|
||||
|
||||
# This function resets a path.
|
||||
# It takes two arguments: the name of the path variable to reset,
|
||||
# and a path fragment which is used to make our guess at what should
|
||||
# be removed more accurate. All paths beginning with GNUSTEP_SYSTEM_ROOT,
|
||||
# GNUSTEP_LOCAL_ROOT, GNUSTEP_NETWORK_ROOT and GNUSTEP_USER_ROOT
|
||||
# followed by the specified path fragment are removed from the path
|
||||
# variable. All other paths are kept unchanged.
|
||||
function reset_path
|
||||
{
|
||||
# Declare local variables
|
||||
local original_path tmp_IFS temp_path dir gnustep_dir found
|
||||
|
||||
# NB: We need to use eval because we want to access a variable
|
||||
# whose name is another variable!
|
||||
original_path=$(eval echo \$$1)
|
||||
tmp_IFS="$IFS"
|
||||
IFS=:
|
||||
temp_path=
|
||||
# Loop on the paths
|
||||
for dir in $original_path; do
|
||||
# For each of them, keep it only if it's not beginning with
|
||||
# a path in GNUSTEP_PATHLIST as prefix
|
||||
found=no;
|
||||
for gnustep_dir in $GNUSTEP_PATHLIST; do
|
||||
if [ -n "$gnustep_dir$2" ]; then
|
||||
case "$dir" in
|
||||
$gnustep_dir$2*) found=yes; break;;
|
||||
*);;
|
||||
esac;
|
||||
fi;
|
||||
done;
|
||||
if [ "$found" = "no" ]; then
|
||||
if [ -z "$temp_path" ]; then
|
||||
temp_path="$dir"
|
||||
else
|
||||
temp_path="$temp_path:$dir"
|
||||
fi;
|
||||
fi
|
||||
done
|
||||
IFS="$tmp_IFS"
|
||||
|
||||
# Not set the path variable.
|
||||
eval "$1=\$temp_path"
|
||||
# Export it only if non empty, otherwise remove it completely from
|
||||
# the shell environment.
|
||||
temp_path=`eval echo \$"$1"`
|
||||
if [ -z "$temp_path" ]; then
|
||||
eval "unset $1"
|
||||
else
|
||||
eval "export $1"
|
||||
fi
|
||||
}
|
||||
|
||||
reset_path INFOPATH /Library/Documentation/info
|
||||
reset_path GUILE_LOAD_PATH /Library/Libraries/Guile
|
||||
reset_path CLASSPATH /Library/Libraries/Java
|
||||
reset_path LD_LIBRARY_PATH /Library/Libraries
|
||||
reset_path DYLD_LIBRARY_PATH /Library/Libraries
|
||||
reset_path DYLD_FRAMEWORK_PATH /Library/Frameworks
|
||||
reset_path PATH /Tools
|
||||
|
||||
# Make sure we destroy the reset_path function after using it - we don't
|
||||
# want to pollute the environment with it.
|
||||
unset -f reset_path
|
||||
|
||||
unset GNUSTEP_SYSTEM_USERS_DIR
|
||||
unset GNUSTEP_NETWORK_USERS_DIR
|
||||
unset GNUSTEP_LOCAL_USERS_DIR
|
||||
|
||||
unset GNUSTEP_SYSTEM_APPS
|
||||
unset GNUSTEP_SYSTEM_ADMIN_APPS
|
||||
unset GNUSTEP_SYSTEM_WEB_APPS
|
||||
unset GNUSTEP_SYSTEM_TOOLS
|
||||
unset GNUSTEP_SYSTEM_ADMIN_TOOLS
|
||||
unset GNUSTEP_SYSTEM_LIBRARY
|
||||
unset GNUSTEP_SYSTEM_HEADERS
|
||||
unset GNUSTEP_SYSTEM_LIBRARIES
|
||||
unset GNUSTEP_SYSTEM_RESOURCES
|
||||
unset GNUSTEP_SYSTEM_JAVA
|
||||
unset GNUSTEP_SYSTEM_DOC
|
||||
unset GNUSTEP_SYSTEM_DOC_MAN
|
||||
unset GNUSTEP_SYSTEM_DOC_INFO
|
||||
|
||||
unset GNUSTEP_NETWORK_APPS
|
||||
unset GNUSTEP_NETWORK_ADMIN_APPS
|
||||
unset GNUSTEP_NETWORK_WEB_APPS
|
||||
unset GNUSTEP_NETWORK_TOOLS
|
||||
unset GNUSTEP_NETWORK_ADMIN_TOOLS
|
||||
unset GNUSTEP_NETWORK_LIBRARY
|
||||
unset GNUSTEP_NETWORK_HEADERS
|
||||
unset GNUSTEP_NETWORK_LIBRARIES
|
||||
unset GNUSTEP_NETWORK_RESOURCES
|
||||
unset GNUSTEP_NETWORK_JAVA
|
||||
unset GNUSTEP_NETWORK_DOC
|
||||
unset GNUSTEP_NETWORK_DOC_MAN
|
||||
unset GNUSTEP_NETWORK_DOC_INFO
|
||||
|
||||
unset GNUSTEP_LOCAL_APPS
|
||||
unset GNUSTEP_LOCAL_ADMIN_APPS
|
||||
unset GNUSTEP_LOCAL_WEB_APPS
|
||||
unset GNUSTEP_LOCAL_TOOLS
|
||||
unset GNUSTEP_LOCAL_ADMIN_TOOLS
|
||||
unset GNUSTEP_LOCAL_LIBRARY
|
||||
unset GNUSTEP_LOCAL_HEADERS
|
||||
unset GNUSTEP_LOCAL_LIBRARIES
|
||||
unset GNUSTEP_LOCAL_RESOURCES
|
||||
unset GNUSTEP_LOCAL_JAVA
|
||||
unset GNUSTEP_LOCAL_DOC
|
||||
unset GNUSTEP_LOCAL_DOC_MAN
|
||||
unset GNUSTEP_LOCAL_DOC_INFO
|
||||
|
||||
unset GNUSTEP_USER_APPS
|
||||
unset GNUSTEP_USER_ADMIN_APPS
|
||||
unset GNUSTEP_USER_WEB_APPS
|
||||
unset GNUSTEP_USER_TOOLS
|
||||
unset GNUSTEP_USER_ADMIN_TOOLS
|
||||
unset GNUSTEP_USER_LIBRARY
|
||||
unset GNUSTEP_USER_HEADERS
|
||||
unset GNUSTEP_USER_LIBRARIES
|
||||
unset GNUSTEP_USER_RESOURCES
|
||||
unset GNUSTEP_USER_JAVA
|
||||
unset GNUSTEP_USER_DOC
|
||||
unset GNUSTEP_USER_DOC_MAN
|
||||
unset GNUSTEP_USER_DOC_INFO
|
||||
|
||||
# These should not defined, but might be if something goes wrong
|
||||
# somewhere.
|
||||
unset GNUSTEP_USER_DIR_APPS
|
||||
unset GNUSTEP_USER_DIR_ADMIN_APPS
|
||||
unset GNUSTEP_USER_DIR_WEB_APPS
|
||||
unset GNUSTEP_USER_DIR_TOOLS
|
||||
unset GNUSTEP_USER_DIR_ADMIN_TOOLS
|
||||
unset GNUSTEP_USER_DIR_LIBRARY
|
||||
unset GNUSTEP_USER_DIR_HEADERS
|
||||
unset GNUSTEP_USER_DIR_LIBRARIES
|
||||
unset GNUSTEP_USER_DIR_RESOURCES
|
||||
unset GNUSTEP_USER_DIR_JAVA
|
||||
unset GNUSTEP_USER_DIR_DOC
|
||||
unset GNUSTEP_USER_DIR_DOC_MAN
|
||||
unset GNUSTEP_USER_DIR_DOC_INFO
|
||||
|
||||
unset GNUSTEP_PATHLIST
|
||||
unset GNUSTEP_USER_ROOT
|
||||
unset GNUSTEP_HOST_OS
|
||||
unset GNUSTEP_HOST_VENDOR
|
||||
unset GNUSTEP_HOST_CPU
|
||||
unset GNUSTEP_HOST
|
||||
unset GNUSTEP_NETWORK_ROOT
|
||||
unset GNUSTEP_LOCAL_ROOT
|
||||
unset GNUSTEP_MAKEFILES
|
||||
unset GNUSTEP_FLATTENED
|
||||
unset GNUSTEP_IS_FLATTENED
|
||||
unset GNUSTEP_SYSTEM_ROOT
|
||||
unset GNUSTEP_ROOT
|
||||
unset LIBRARY_COMBO
|
||||
|
||||
unset GNUSTEP_CONFIG_FILE
|
||||
unset GNUSTEP_USER_CONFIG_FILE
|
||||
unset GNUSTEP_USER_DIR
|
||||
unset GNUSTEP_USER_DEFAULTS_DIR
|
||||
|
|
@ -1,155 +0,0 @@
|
|||
# This is the GNUstep configuration file.
|
||||
|
||||
# Any line starting with a '#' is a comment.
|
||||
# Empty lines are ignored.
|
||||
# Every other line in this file must be of the form
|
||||
# XXX=YYY
|
||||
# where there should be no spaces around the '=' (this is because we
|
||||
# include this file in shell scripts and makefiles, and sh syntax
|
||||
# requires no spaces around the '=').
|
||||
#
|
||||
# Standard sh quotes can be used in YYY but only at runtime; they can
|
||||
# not be used while building.
|
||||
|
||||
# GNUstep can use up to 4 domains at the same time. They are System,
|
||||
# Local, Network and User. You can install your programs / resources
|
||||
# in any of these domains. This file mostly deals with configuring
|
||||
# how the domains map to your filesystem.
|
||||
|
||||
# IMPORTANT: Don't delete lines from this file unless you want
|
||||
# the values hardcoded in the packages to be used. If you want
|
||||
# to suppress the network domain, set all its paths to be the same
|
||||
# as the system domain. If you want to suppress the local domain,
|
||||
# set all its paths to be the same as the network domain. If you
|
||||
# want to suppress the user domain, set its paths to be the same
|
||||
# as the local domain. You can not suppress the system domain.
|
||||
|
||||
# The paths should not include a '/' at the end.
|
||||
|
||||
# These GNUSTEP_*_ROOT variables are obsolete, and will be removed.
|
||||
GNUSTEP_SYSTEM_ROOT=@GNUSTEP_SYSTEM_ROOT@
|
||||
GNUSTEP_LOCAL_ROOT=@GNUSTEP_LOCAL_ROOT@
|
||||
GNUSTEP_NETWORK_ROOT=@GNUSTEP_NETWORK_ROOT@
|
||||
|
||||
# The name of the user config file. This file can override
|
||||
# some settings in this file. Usually used by users that want
|
||||
# to install things into their GNUstep user domain and/or have
|
||||
# many such domains.
|
||||
GNUSTEP_USER_CONFIG_FILE=@GNUSTEP_USER_CONFIG_FILE@
|
||||
|
||||
# The name of the user directory, if any. This is obsolete,
|
||||
# and will be removed.
|
||||
GNUSTEP_USER_DIR=@GNUSTEP_USER_DIR@
|
||||
|
||||
# The name of the user directory where defaults (eg, preferences) are
|
||||
# stored. If it does not start with a '/', it will be considered
|
||||
# relative to the user home directory.
|
||||
GNUSTEP_USER_DEFAULTS_DIR=@GNUSTEP_USER_DEFAULTS_DIR@
|
||||
|
||||
|
||||
# This is where the gnustep-make Makefiles are installed.
|
||||
# Traditionally, this is /usr/GNUstep/System/Library/Makefiles
|
||||
GNUSTEP_MAKEFILES=@GNUSTEP_MAKEFILES@
|
||||
|
||||
|
||||
# This is where the user home directories are. Only used to provide
|
||||
# NSUserDirectory in gnustep-base. Never used anywhere else.
|
||||
GNUSTEP_SYSTEM_USERS_DIR=@GNUSTEP_SYSTEM_USERS_DIR@
|
||||
GNUSTEP_NETWORK_USERS_DIR=@GNUSTEP_NETWORK_USERS_DIR@
|
||||
GNUSTEP_LOCAL_USERS_DIR=@GNUSTEP_LOCAL_USERS_DIR@
|
||||
|
||||
|
||||
# This is where System GUI Applications get installed.
|
||||
# Traditionally it is /usr/GNUstep/System/Applications.
|
||||
GNUSTEP_SYSTEM_APPS=@GNUSTEP_SYSTEM_APPS@
|
||||
|
||||
# This is where System GUI Applications that only the
|
||||
# Administrator can use get installed.
|
||||
# Traditionally it is /usr/GNUstep/System/Applications/Admin.
|
||||
GNUSTEP_SYSTEM_ADMIN_APPS=@GNUSTEP_SYSTEM_ADMIN_APPS@
|
||||
|
||||
# This is where System Web Applications (GSWeb, SOPE) get
|
||||
# installed.
|
||||
# Traditionally it is /usr/GNUstep/System/Library/WebApplications.
|
||||
GNUSTEP_SYSTEM_WEB_APPS=@GNUSTEP_SYSTEM_WEB_APPS@
|
||||
|
||||
# This is where System Command-Line Tools get installed.
|
||||
# Traditionally it is /usr/GNUstep/System/Tools.
|
||||
GNUSTEP_SYSTEM_TOOLS=@GNUSTEP_SYSTEM_TOOLS@
|
||||
|
||||
# This is where System Command-Line Tools that only the
|
||||
# Administrator can use get installed. Important: this
|
||||
# should not be in the PATH of normal users.
|
||||
# Traditionally it is /usr/GNUstep/System/Tools/Admin.
|
||||
GNUSTEP_SYSTEM_ADMIN_TOOLS=@GNUSTEP_SYSTEM_ADMIN_TOOLS@
|
||||
|
||||
# This is where System resources get installed. This directory will
|
||||
# contain a lot of executable code since *step traditionally likes to
|
||||
# bundle executables and resources together.
|
||||
# Traditionally it is /usr/GNUstep/System/Library.
|
||||
GNUSTEP_SYSTEM_LIBRARY=@GNUSTEP_SYSTEM_LIBRARY@
|
||||
|
||||
# This is where System headers get installed. They are the
|
||||
# library .h headers.
|
||||
# Traditionally it is /usr/GNUstep/System/Library/Headers.
|
||||
GNUSTEP_SYSTEM_HEADERS=@GNUSTEP_SYSTEM_HEADERS@
|
||||
|
||||
# This is where System libraries get installed. By libraries we mean
|
||||
# the shared/static object files that you can link into programs.
|
||||
# Traditionally it is /usr/GNUstep/System/Library/Libraries.
|
||||
GNUSTEP_SYSTEM_LIBRARIES=@GNUSTEP_SYSTEM_LIBRARIES@
|
||||
|
||||
# This is where System documentation get installed. This is known
|
||||
# not to contain any executable, so we keep it separate.
|
||||
# Traditionally it is /usr/GNUstep/System/Library/Documentation.
|
||||
GNUSTEP_SYSTEM_DOC=@GNUSTEP_SYSTEM_DOC@
|
||||
|
||||
# This is where System man pages get installed.
|
||||
# Traditionally it is /usr/GNUstep/System/Library/Documentation/man.
|
||||
GNUSTEP_SYSTEM_DOC_MAN=@GNUSTEP_SYSTEM_DOC_MAN@
|
||||
|
||||
# This is where System info pages get installed.
|
||||
# Traditionally it is /usr/GNUstep/System/Library/Documentation/info.
|
||||
GNUSTEP_SYSTEM_DOC_INFO=@GNUSTEP_SYSTEM_DOC_INFO@
|
||||
|
||||
|
||||
GNUSTEP_NETWORK_APPS=@GNUSTEP_NETWORK_APPS@
|
||||
GNUSTEP_NETWORK_ADMIN_APPS=@GNUSTEP_NETWORK_ADMIN_APPS@
|
||||
GNUSTEP_NETWORK_WEB_APPS=@GNUSTEP_NETWORK_WEB_APPS@
|
||||
GNUSTEP_NETWORK_TOOLS=@GNUSTEP_NETWORK_TOOLS@
|
||||
GNUSTEP_NETWORK_ADMIN_TOOLS=@GNUSTEP_NETWORK_ADMIN_TOOLS@
|
||||
GNUSTEP_NETWORK_LIBRARY=@GNUSTEP_NETWORK_LIBRARY@
|
||||
GNUSTEP_NETWORK_HEADERS=@GNUSTEP_NETWORK_HEADERS@
|
||||
GNUSTEP_NETWORK_LIBRARIES=@GNUSTEP_NETWORK_LIBRARIES@
|
||||
GNUSTEP_NETWORK_DOC=@GNUSTEP_NETWORK_DOC@
|
||||
GNUSTEP_NETWORK_DOC_MAN=@GNUSTEP_NETWORK_DOC_MAN@
|
||||
GNUSTEP_NETWORK_DOC_INFO=@GNUSTEP_NETWORK_DOC_INFO@
|
||||
|
||||
GNUSTEP_LOCAL_APPS=@GNUSTEP_LOCAL_APPS@
|
||||
GNUSTEP_LOCAL_ADMIN_APPS=@GNUSTEP_LOCAL_ADMIN_APPS@
|
||||
GNUSTEP_LOCAL_WEB_APPS=@GNUSTEP_LOCAL_WEB_APPS@
|
||||
GNUSTEP_LOCAL_TOOLS=@GNUSTEP_LOCAL_TOOLS@
|
||||
GNUSTEP_LOCAL_ADMIN_TOOLS=@GNUSTEP_LOCAL_ADMIN_TOOLS@
|
||||
GNUSTEP_LOCAL_LIBRARY=@GNUSTEP_LOCAL_LIBRARY@
|
||||
GNUSTEP_LOCAL_HEADERS=@GNUSTEP_LOCAL_HEADERS@
|
||||
GNUSTEP_LOCAL_LIBRARIES=@GNUSTEP_LOCAL_LIBRARIES@
|
||||
GNUSTEP_LOCAL_DOC=@GNUSTEP_LOCAL_DOC@
|
||||
GNUSTEP_LOCAL_DOC_MAN=@GNUSTEP_LOCAL_DOC_MAN@
|
||||
GNUSTEP_LOCAL_DOC_INFO=@GNUSTEP_LOCAL_DOC_INFO@
|
||||
|
||||
# Important: settings in the User should normally be relative paths,
|
||||
# and will be interpreted as relative to the user's directory. This
|
||||
# allows each user to have their own domain to install things. You
|
||||
# can set them to be absolute, mostly if you want to disable them
|
||||
# by setting them equal to the ones in the Network domain.
|
||||
GNUSTEP_USER_DIR_APPS=@GNUSTEP_USER_DIR_APPS@
|
||||
GNUSTEP_USER_DIR_ADMIN_APPS=@GNUSTEP_USER_DIR_ADMIN_APPS@
|
||||
GNUSTEP_USER_DIR_WEB_APPS=@GNUSTEP_USER_DIR_WEB_APPS@
|
||||
GNUSTEP_USER_DIR_TOOLS=@GNUSTEP_USER_DIR_TOOLS@
|
||||
GNUSTEP_USER_DIR_ADMIN_TOOLS=@GNUSTEP_USER_DIR_ADMIN_TOOLS@
|
||||
GNUSTEP_USER_DIR_LIBRARY=@GNUSTEP_USER_DIR_LIBRARY@
|
||||
GNUSTEP_USER_DIR_HEADERS=@GNUSTEP_USER_DIR_HEADERS@
|
||||
GNUSTEP_USER_DIR_LIBRARIES=@GNUSTEP_USER_DIR_LIBRARIES@
|
||||
GNUSTEP_USER_DIR_DOC=@GNUSTEP_USER_DIR_DOC@
|
||||
GNUSTEP_USER_DIR_DOC_MAN=@GNUSTEP_USER_DIR_DOC_MAN@
|
||||
GNUSTEP_USER_DIR_DOC_INFO=@GNUSTEP_USER_DIR_DOC_INFO@
|
|
@ -1,297 +0,0 @@
|
|||
#! /bin/echo This file must be sourced inside csh using: source
|
||||
#
|
||||
# @configure_input@
|
||||
#
|
||||
# Shell initialization for the GNUstep environment.
|
||||
#
|
||||
# Copyright (C) 1998-2005 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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
#
|
||||
|
||||
#
|
||||
# Set the GNUstep system root and local root
|
||||
#
|
||||
|
||||
#
|
||||
# Read our configuration files
|
||||
#
|
||||
|
||||
# Determine the location of the system configuration file
|
||||
if ( ! ${?GNUSTEP_CONFIG_FILE} ) then
|
||||
setenv GNUSTEP_CONFIG_FILE "@GNUSTEP_CONFIG_FILE@"
|
||||
endif
|
||||
|
||||
# Determine the location of the user configuration file
|
||||
if ( ! ${?GNUSTEP_USER_CONFIG_FILE} ) then
|
||||
setenv GNUSTEP_USER_CONFIG_FILE "@GNUSTEP_USER_CONFIG_FILE@"
|
||||
endif
|
||||
|
||||
# Read the system configuration file
|
||||
if ( -e "${GNUSTEP_CONFIG_FILE}" ) then
|
||||
#
|
||||
# Convert the config file from sh syntax to csh syntax, and execute it.
|
||||
#
|
||||
# We want to convert every line of the type ^xxx=yyy$ into setenv xxx yyy;
|
||||
# and ignore any other line.
|
||||
#
|
||||
# This sed expression will first delete all lines that don't match
|
||||
# the pattern ^[^#=][^#=]*=.*$ -- which means "start of line (^),
|
||||
# followed by a character that is not # and not = ([^#=]), followed
|
||||
# by 0 or more characters that are not # and not = ([^#=]*),
|
||||
# followed by a = (=), followed by some characters until end of the
|
||||
# line (.*$). It will then replace each occurrence of the same
|
||||
# pattern (where the first and second relevant parts are now tagged
|
||||
# -- that's what the additional \(...\) do) with 'setenv \1 \2'.
|
||||
#
|
||||
# The result of all this is ... something that we want to execute!
|
||||
# We use eval to execute the results of `...`.
|
||||
#
|
||||
# Please note that ! must always be escaped in csh, which is why we
|
||||
# write \\!
|
||||
#
|
||||
# Also note that we add a ';' at the end of each setenv command so
|
||||
# that we can pipe all the commands through a single eval.
|
||||
#
|
||||
eval `sed -e '/^[^#=][^#=]*=.*$/\\!d' -e 's/^\([^#=][^#=]*\)=\(.*\)$/setenv \1 \2;/' "${GNUSTEP_CONFIG_FILE}"`
|
||||
endif
|
||||
|
||||
# FIXME: determining GNUSTEP_HOME
|
||||
set GNUSTEP_HOME = ~
|
||||
|
||||
# Read the user configuration file ... unless it is disabled (ie, set
|
||||
# to an empty string)
|
||||
if ( ${?GNUSTEP_USER_CONFIG_FILE} ) then
|
||||
switch ("${GNUSTEP_USER_CONFIG_FILE}")
|
||||
case /*: # An absolute path
|
||||
if ( -e "${GNUSTEP_USER_CONFIG_FILE}" ) then
|
||||
# See above for an explanation of the sed expression
|
||||
eval `sed -e '/^[^#=][^#=]*=.*$/\\!d' -e 's/^\([^#=][^#=]*\)=\(.*\)$/setenv \1 \2;/' "${GNUSTEP_USER_CONFIG_FILE}"``
|
||||
endif
|
||||
breaksw
|
||||
default: # Something else
|
||||
if ( -e "${GNUSTEP_HOME}/${GNUSTEP_USER_CONFIG_FILE}" ) then
|
||||
eval `sed -e '/^[^#=][^#=]*=.*$/\\!d' -e 's/^\([^#=][^#=]*\)=\(.*\)$/setenv \1 \2;/' "${GNUSTEP_HOME}/${GNUSTEP_USER_CONFIG_FILE}"`
|
||||
endif
|
||||
breaksw
|
||||
endsw
|
||||
endif
|
||||
|
||||
# Now, set any essential variable (that is not already set) to the
|
||||
# built-in values.
|
||||
if ( ! ${?GNUSTEP_SYSTEM_ROOT} ) then
|
||||
setenv GNUSTEP_SYSTEM_ROOT "@GNUSTEP_SYSTEM_ROOT@"
|
||||
endif
|
||||
|
||||
if ( ! ${?GNUSTEP_LOCAL_ROOT} ) then
|
||||
setenv GNUSTEP_LOCAL_ROOT "@GNUSTEP_LOCAL_ROOT@"
|
||||
endif
|
||||
|
||||
if ( ! ${?GNUSTEP_NETWORK_ROOT} ) then
|
||||
setenv GNUSTEP_NETWORK_ROOT "@GNUSTEP_NETWORK_ROOT@"
|
||||
endif
|
||||
|
||||
|
||||
# GNUSTEP_FLATTENED is obsolete, please use GNUSTEP_IS_FLATTENED
|
||||
# instead
|
||||
setenv GNUSTEP_FLATTENED "@GNUSTEP_FLATTENED@"
|
||||
setenv GNUSTEP_IS_FLATTENED "@GNUSTEP_IS_FLATTENED@"
|
||||
if ( ! ${?LIBRARY_COMBO} ) then
|
||||
setenv LIBRARY_COMBO "@ac_cv_library_combo@"
|
||||
endif
|
||||
|
||||
if ( ! ${?GNUSTEP_MAKEFILES} ) then
|
||||
setenv GNUSTEP_MAKEFILES "@GNUSTEP_MAKEFILES@"
|
||||
endif
|
||||
|
||||
if ( ! ${?GNUSTEP_USER_DIR} ) then
|
||||
setenv GNUSTEP_USER_DIR "@GNUSTEP_USER_DIR@"
|
||||
endif
|
||||
|
||||
#
|
||||
# Set GNUSTEP_USER_ROOT which is the variable used in practice
|
||||
#
|
||||
switch ("${GNUSTEP_USER_DIR}")
|
||||
case /*: # An absolute path
|
||||
setenv GNUSTEP_USER_ROOT "${GNUSTEP_USER_DIR}"
|
||||
breaksw
|
||||
default: # Something else
|
||||
setenv GNUSTEP_USER_ROOT "${GNUSTEP_HOME}/${GNUSTEP_USER_DIR}"
|
||||
breaksw
|
||||
endsw
|
||||
|
||||
if ( "@GNUSTEP_MULTI_PLATFORM@" == "" ) then
|
||||
setenv GNUSTEP_HOST "@target@"
|
||||
setenv GNUSTEP_HOST_CPU "@clean_target_cpu@"
|
||||
setenv GNUSTEP_HOST_VENDOR "@clean_target_vendor@"
|
||||
setenv GNUSTEP_HOST_OS "@clean_target_os@"
|
||||
endif
|
||||
|
||||
#
|
||||
# Determine the host information
|
||||
#
|
||||
if ( ! ${?GNUSTEP_HOST} ) then
|
||||
pushd /tmp > /dev/null
|
||||
setenv GNUSTEP_HOST `${GNUSTEP_MAKEFILES}/config.guess`
|
||||
setenv GNUSTEP_HOST `${GNUSTEP_MAKEFILES}/config.sub ${GNUSTEP_HOST}`
|
||||
popd > /dev/null
|
||||
endif
|
||||
|
||||
if ( ! ${?GNUSTEP_HOST_CPU} ) then
|
||||
setenv GNUSTEP_HOST_CPU `${GNUSTEP_MAKEFILES}/cpu.sh ${GNUSTEP_HOST}`
|
||||
setenv GNUSTEP_HOST_CPU `${GNUSTEP_MAKEFILES}/clean_cpu.sh ${GNUSTEP_HOST_CPU}`
|
||||
endif
|
||||
|
||||
if ( ! ${?GNUSTEP_HOST_VENDOR} ) then
|
||||
setenv GNUSTEP_HOST_VENDOR `${GNUSTEP_MAKEFILES}/vendor.sh ${GNUSTEP_HOST}`
|
||||
setenv GNUSTEP_HOST_VENDOR `${GNUSTEP_MAKEFILES}/clean_vendor.sh ${GNUSTEP_HOST_VENDOR}`
|
||||
endif
|
||||
|
||||
if ( ! ${?GNUSTEP_HOST_OS} ) then
|
||||
setenv GNUSTEP_HOST_OS `${GNUSTEP_MAKEFILES}/os.sh ${GNUSTEP_HOST}`
|
||||
setenv GNUSTEP_HOST_OS `${GNUSTEP_MAKEFILES}/clean_os.sh ${GNUSTEP_HOST_OS}`
|
||||
endif
|
||||
|
||||
# Now load in all the remaining paths
|
||||
source "${GNUSTEP_MAKEFILES}/filesystem.csh"
|
||||
|
||||
# No longer needed
|
||||
unset GNUSTEP_HOME
|
||||
|
||||
# Determine if the paths look like Windows paths that need fixing
|
||||
set fixup_paths=no
|
||||
if ( `echo $GNUSTEP_MAKEFILES | sed 's|^[a-zA-Z]:/.*$||'` == "" ) then
|
||||
set fixup_paths=yes
|
||||
endif
|
||||
|
||||
#
|
||||
# Add the GNUstep tools directories to the path
|
||||
#
|
||||
if ( ! ${?GNUSTEP_PATHLIST} ) then
|
||||
setenv GNUSTEP_PATHLIST `$GNUSTEP_MAKEFILES/print_unique_pathlist.sh "$GNUSTEP_USER_ROOT" "$GNUSTEP_LOCAL_ROOT" "$GNUSTEP_NETWORK_ROOT" "$GNUSTEP_SYSTEM_ROOT" $fixup_paths`
|
||||
endif
|
||||
|
||||
set GNUSTEP_TOOLS_PATHLIST=`$GNUSTEP_MAKEFILES/print_unique_pathlist.sh "$GNUSTEP_USER_TOOLS" "$GNUSTEP_LOCAL_TOOLS" "$GNUSTEP_NETWORK_TOOLS" "$GNUSTEP_SYSTEM_TOOLS" $fixup_paths`
|
||||
|
||||
foreach dir ( "${GNUSTEP_SYSTEM_ADMIN_TOOLS}" "${GNUSTEP_NETWORK_ADMIN_TOOLS}" "${GNUSTEP_LOCAL_ADMIN_TOOLS}" "${GNUSTEP_USER_ADMIN_TOOLS}" )
|
||||
if ( -d "${dir}" && -w "${dir}" ) then
|
||||
if ( { (echo "${GNUSTEP_TOOLS_PATHLIST}" | fgrep -v "${dir}" >/dev/null) } ) then
|
||||
setenv GNUSTEP_TOOLS_PATHLIST "${dir}:${GNUSTEP_TOOLS_PATHLIST}"
|
||||
endif
|
||||
endif
|
||||
end
|
||||
|
||||
set temp_path = ""
|
||||
foreach dir ( `/bin/sh -c 'IFS=:; for i in '"${GNUSTEP_TOOLS_PATHLIST}"'; do echo $i; done'` )
|
||||
set temp_path="${temp_path}${dir}:"
|
||||
if ( "${GNUSTEP_IS_FLATTENED}" == "no" ) then
|
||||
set temp_path="${temp_path}${dir}/${GNUSTEP_HOST_CPU}/${GNUSTEP_HOST_OS}/${LIBRARY_COMBO}:"
|
||||
set temp_path="${temp_path}${dir}/${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
|
||||
unset GNUSTEP_TOOLS_PATHLIST
|
||||
|
||||
source "${GNUSTEP_MAKEFILES}/ld_lib_path.csh"
|
||||
|
||||
set gnustep_class_path=`$GNUSTEP_MAKEFILES/print_unique_pathlist.sh "$GNUSTEP_USER_LIBRARY/Libraries/Java" "$GNUSTEP_LOCAL_LIBRARY/Libraries/Java" "$GNUSTEP_NETWORK_LIBRARY/Libraries/Java" "$GNUSTEP_SYSTEM_LIBRARY/Libraries/Java" $fixup_paths`
|
||||
|
||||
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_MAKEFILES/print_unique_pathlist.sh "$GNUSTEP_USER_LIBRARY/Libraries/Guile" "$GNUSTEP_LOCAL_LIBRARY/Libraries/Guile" "$GNUSTEP_NETWORK_LIBRARY/Libraries/Guile" "$GNUSTEP_SYSTEM_LIBRARY/Libraries/Guile" $fixup_paths`
|
||||
|
||||
if ( ! ${?GUILE_LOAD_PATH} ) 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
|
||||
|
||||
set gnustep_info_path=`$GNUSTEP_MAKEFILES/print_unique_pathlist.sh "$GNUSTEP_USER_DOC_INFO" "$GNUSTEP_LOCAL_DOC_INFO" "$GNUSTEP_NETWORK_DOC_INFO" "$GNUSTEP_SYSTEM_DOC_INFO" $fixup_paths`
|
||||
|
||||
if ( ! ${?INFOPATH} ) then
|
||||
setenv INFOPATH "${gnustep_info_path}:"
|
||||
else if ( { (echo "${INFOPATH}" | fgrep -v "${gnustep_info_path}" >/dev/null) } ) then
|
||||
setenv INFOPATH "${INFOPATH}:${gnustep_info_path}:"
|
||||
endif
|
||||
|
||||
unset gnustep_info_path
|
||||
|
||||
#
|
||||
# Perform any user initialization
|
||||
#
|
||||
if ( -e "$GNUSTEP_USER_ROOT/GNUstep.csh" ) then
|
||||
source "$GNUSTEP_USER_ROOT/GNUstep.csh"
|
||||
endif
|
||||
|
||||
unsetenv GNUSTEP_SYSTEM_APPS
|
||||
unsetenv GNUSTEP_SYSTEM_ADMIN_APPS
|
||||
unsetenv GNUSTEP_SYSTEM_TOOLS
|
||||
unsetenv GNUSTEP_SYSTEM_ADMIN_TOOLS
|
||||
unsetenv GNUSTEP_SYSTEM_LIBRARY
|
||||
unsetenv GNUSTEP_SYSTEM_HEADERS
|
||||
unsetenv GNUSTEP_SYSTEM_LIBRARIES
|
||||
unsetenv GNUSTEP_SYSTEM_DOC
|
||||
unsetenv GNUSTEP_SYSTEM_DOC_MAN
|
||||
unsetenv GNUSTEP_SYSTEM_DOC_INFO
|
||||
|
||||
unsetenv GNUSTEP_NETWORK_APPS
|
||||
unsetenv GNUSTEP_NETWORK_ADMIN_APPS
|
||||
unsetenv GNUSTEP_NETWORK_TOOLS
|
||||
unsetenv GNUSTEP_NETWORK_ADMIN_TOOLS
|
||||
unsetenv GNUSTEP_NETWORK_LIBRARY
|
||||
unsetenv GNUSTEP_NETWORK_HEADERS
|
||||
unsetenv GNUSTEP_NETWORK_LIBRARIES
|
||||
unsetenv GNUSTEP_NETWORK_DOC
|
||||
unsetenv GNUSTEP_NETWORK_DOC_MAN
|
||||
unsetenv GNUSTEP_NETWORK_DOC_INFO
|
||||
|
||||
unsetenv GNUSTEP_LOCAL_APPS
|
||||
unsetenv GNUSTEP_LOCAL_ADMIN_APPS
|
||||
unsetenv GNUSTEP_LOCAL_TOOLS
|
||||
unsetenv GNUSTEP_LOCAL_ADMIN_TOOLS
|
||||
unsetenv GNUSTEP_LOCAL_LIBRARY
|
||||
unsetenv GNUSTEP_LOCAL_HEADERS
|
||||
unsetenv GNUSTEP_LOCAL_LIBRARIES
|
||||
unsetenv GNUSTEP_LOCAL_DOC
|
||||
unsetenv GNUSTEP_LOCAL_DOC_MAN
|
||||
unsetenv GNUSTEP_LOCAL_DOC_INFO
|
||||
|
||||
unsetenv GNUSTEP_USER_APPS
|
||||
unsetenv GNUSTEP_USER_ADMIN_APPS
|
||||
unsetenv GNUSTEP_USER_TOOLS
|
||||
unsetenv GNUSTEP_USER_ADMIN_TOOLS
|
||||
unsetenv GNUSTEP_USER_LIBRARY
|
||||
unsetenv GNUSTEP_USER_HEADERS
|
||||
unsetenv GNUSTEP_USER_LIBRARIES
|
||||
unsetenv GNUSTEP_USER_DOC
|
||||
unsetenv GNUSTEP_USER_DOC_MAN
|
||||
unsetenv GNUSTEP_USER_DOC_INFO
|
|
@ -1,476 +0,0 @@
|
|||
#! /bin/echo This file must be sourced inside (ba)sh using: .
|
||||
#
|
||||
# @configure_input@
|
||||
#
|
||||
# Shell initialization for the GNUstep environment.
|
||||
#
|
||||
# Copyright (C) 1997-2005 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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
#
|
||||
|
||||
# Warning - this shell script is delicate, because it is sourced by
|
||||
# using . rather than simply executed. It is sourced because that is
|
||||
# the only way to change the shell variables in the calling
|
||||
# environment.
|
||||
#
|
||||
# Sourcing makes the shell script more delicate for the following reasons:
|
||||
#
|
||||
# * temporary variables are automatically set in the calling
|
||||
# environment! WORKAROUND: we need to unset all them after using
|
||||
# them to avoid polluting the calling environment;
|
||||
#
|
||||
# * not only the exit value of the script, but the exit value of each
|
||||
# command we execute, might be interpreted by the calling
|
||||
# environment. Typically, the calling environment might be using the
|
||||
# shell errexit option ('set -e') in bash parlance, which causes the
|
||||
# shell to exit if any command returns an error value. If this were
|
||||
# a normal script, this option would mean that the shell would exit
|
||||
# if the return value of the whole script were an error value; but
|
||||
# because we are sourced, it is as all the commands in this script
|
||||
# were executed directly in the calling environment, so *all* values
|
||||
# returned by *all* commands must be non-error. [this all typically
|
||||
# happens in rpm builds, where scripts are run with the errexit
|
||||
# option so that errors in scripts abort the build, and now if a
|
||||
# script sources GNUstep.sh, then we are exactly in this situation -
|
||||
# if any command inside GNUstep.sh returns an error value (even if
|
||||
# GNUstep.sh as a whole would be happy and return succes), the whole
|
||||
# rpm build process aborts!]. WORKAROUND: we must make sure all
|
||||
# commands return success - last resorts hacks like 'command || :'
|
||||
# which always returns success whatever command returns.
|
||||
#
|
||||
|
||||
# If we're running in zsh (auch!) make sure we're using -y
|
||||
# (SH_WORD_SPLIT) else our path manipulations won't work.
|
||||
if [ -n "$ZSH_VERSION" ]; then
|
||||
|
||||
# If -y is not already set, set it and remember that we
|
||||
# need to set it back to what it was at the end.
|
||||
if ( setopt | grep shwordsplit > /dev/null ); then :; else
|
||||
set -y
|
||||
GS_ZSH_NEED_TO_RESTORE_SET=yes
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
#
|
||||
# Set the GNUstep system root and local root
|
||||
#
|
||||
|
||||
#
|
||||
# Read our configuration files
|
||||
#
|
||||
|
||||
# Determine the location of the system configuration file
|
||||
if [ -z "$GNUSTEP_CONFIG_FILE" ]; then
|
||||
GNUSTEP_CONFIG_FILE=@GNUSTEP_CONFIG_FILE@
|
||||
fi
|
||||
|
||||
# Determine the location of the user configuration file
|
||||
if [ -z "$GNUSTEP_USER_CONFIG_FILE" ]; then
|
||||
GNUSTEP_USER_CONFIG_FILE=@GNUSTEP_USER_CONFIG_FILE@
|
||||
fi
|
||||
|
||||
# Read the system configuration file
|
||||
if [ -f "$GNUSTEP_CONFIG_FILE" ]; then
|
||||
. "$GNUSTEP_CONFIG_FILE"
|
||||
fi
|
||||
|
||||
# FIXME: determining GNUSTEP_HOME
|
||||
GNUSTEP_HOME=~
|
||||
|
||||
# Read the user configuration file ... unless it is disabled (ie, set
|
||||
# to an empty string)
|
||||
if [ -n "$GNUSTEP_USER_CONFIG_FILE" ]; then
|
||||
case "$GNUSTEP_USER_CONFIG_FILE" in
|
||||
/*) # An absolute path
|
||||
if [ -f "$GNUSTEP_USER_CONFIG_FILE" ]; then
|
||||
. "$GNUSTEP_USER_CONFIG_FILE"
|
||||
fi;;
|
||||
*) # Something else
|
||||
if [ -f "$GNUSTEP_HOME/$GNUSTEP_USER_CONFIG_FILE" ]; then
|
||||
. "$GNUSTEP_HOME/$GNUSTEP_USER_CONFIG_FILE"
|
||||
fi;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# Now, set any essential variable (that is not already set) to the
|
||||
# built-in values.
|
||||
|
||||
# This is deprecated and will be removed
|
||||
if [ -z "$GNUSTEP_SYSTEM_ROOT" ]; then
|
||||
GNUSTEP_SYSTEM_ROOT=@GNUSTEP_SYSTEM_ROOT@
|
||||
fi
|
||||
|
||||
# This is deprecated and will be removed
|
||||
if [ -z "$GNUSTEP_LOCAL_ROOT" ]; then
|
||||
GNUSTEP_LOCAL_ROOT=@GNUSTEP_LOCAL_ROOT@
|
||||
fi
|
||||
|
||||
# This is deprecated and will be removed
|
||||
if [ -z "$GNUSTEP_NETWORK_ROOT" ]; then
|
||||
GNUSTEP_NETWORK_ROOT=@GNUSTEP_NETWORK_ROOT@
|
||||
fi
|
||||
|
||||
export GNUSTEP_SYSTEM_ROOT GNUSTEP_LOCAL_ROOT GNUSTEP_NETWORK_ROOT
|
||||
|
||||
# GNUSTEP_FLATTENED is obsolete, please use GNUSTEP_IS_FLATTENED
|
||||
# instead
|
||||
GNUSTEP_FLATTENED=@GNUSTEP_FLATTENED@
|
||||
GNUSTEP_IS_FLATTENED=@GNUSTEP_IS_FLATTENED@
|
||||
if [ -z "$LIBRARY_COMBO" ]; then
|
||||
LIBRARY_COMBO=@ac_cv_library_combo@
|
||||
fi
|
||||
export GNUSTEP_IS_FLATTENED GNUSTEP_FLATTENED LIBRARY_COMBO
|
||||
|
||||
if [ -z "$GNUSTEP_MAKEFILES" ]; then
|
||||
GNUSTEP_MAKEFILES=@GNUSTEP_MAKEFILES@
|
||||
fi
|
||||
export GNUSTEP_MAKEFILES
|
||||
|
||||
if [ -z "$GNUSTEP_USER_DIR" ]; then
|
||||
GNUSTEP_USER_DIR=@GNUSTEP_USER_DIR@
|
||||
fi
|
||||
|
||||
#
|
||||
# Set GNUSTEP_USER_ROOT which is the variable used in practice
|
||||
#
|
||||
case "$GNUSTEP_USER_DIR" in
|
||||
/*) # An absolute path
|
||||
GNUSTEP_USER_ROOT="$GNUSTEP_USER_DIR";;
|
||||
*) # Something else
|
||||
GNUSTEP_USER_ROOT="$GNUSTEP_HOME/$GNUSTEP_USER_DIR";;
|
||||
esac
|
||||
|
||||
# This is deprecated and will be removed
|
||||
export GNUSTEP_USER_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
|
||||
|
||||
# Now load in all the remaining paths
|
||||
. $GNUSTEP_MAKEFILES/filesystem.sh
|
||||
|
||||
# No longer needed
|
||||
unset GNUSTEP_HOME
|
||||
|
||||
# Determine if the paths look like Windows paths that need fixing
|
||||
fixup_paths=no
|
||||
if [ -z "`echo $GNUSTEP_MAKEFILES | sed 's|^[a-zA-Z]:/.*$||'`" ]; then
|
||||
fixup_paths=yes
|
||||
fi
|
||||
|
||||
# GNUSTEP_PATHLIST is deprecated and will be removed.
|
||||
#
|
||||
# GNUSTEP_PATHLIST is like an abstract path-like shell variable, which
|
||||
# can be used to search the gnustep directories - and in these
|
||||
# scripts, it is also used to set up other shell variables
|
||||
#
|
||||
if [ -z "$GNUSTEP_PATHLIST" ]; then
|
||||
|
||||
GNUSTEP_PATHLIST=`$GNUSTEP_MAKEFILES/print_unique_pathlist.sh "$GNUSTEP_USER_ROOT" "$GNUSTEP_LOCAL_ROOT" "$GNUSTEP_NETWORK_ROOT" "$GNUSTEP_SYSTEM_ROOT" $fixup_paths`
|
||||
export GNUSTEP_PATHLIST
|
||||
fi
|
||||
|
||||
#
|
||||
# Add path to Tools to PATH
|
||||
#
|
||||
GNUSTEP_TOOLS_PATHLIST=`$GNUSTEP_MAKEFILES/print_unique_pathlist.sh "$GNUSTEP_USER_TOOLS" "$GNUSTEP_LOCAL_TOOLS" "$GNUSTEP_NETWORK_TOOLS" "$GNUSTEP_SYSTEM_TOOLS" $fixup_paths`
|
||||
|
||||
# Now, we check the paths in GNUSTEP_*_ADMIN_TOOLS. These paths
|
||||
# should only be used by Administrators -- normal users don't have
|
||||
# enough powers to use those tools to do useful things. Our test for
|
||||
# being an 'Administrator' is that anyone who can write to an Admin
|
||||
# directory can be considered powerful enough to use those tools.
|
||||
|
||||
# FIXME: Unfortunately, this doesn't work if the Admin directory
|
||||
# is mounted read-only, so a better test is required!
|
||||
|
||||
# So we examine GNUSTEP_*_ADMIN_TOOLS; if we find any path in that
|
||||
# list that exists and that we can write to, we add it to our PATH.
|
||||
for dir in "$GNUSTEP_SYSTEM_ADMIN_TOOLS" "$GNUSTEP_NETWORK_ADMIN_TOOLS" "$GNUSTEP_LOCAL_ADMIN_TOOLS" "$GNUSTEP_USER_ADMIN_TOOLS"; do
|
||||
if [ -d "$dir" -a -w "$dir" ]; then
|
||||
# Only add the new dir if it's not already in GNUSTEP_TOOLS_PATHLIST
|
||||
if (echo $GNUSTEP_TOOLS_PATHLIST | grep -v "$dir" >/dev/null); then
|
||||
GNUSTEP_TOOLS_PATHLIST="$dir:$GNUSTEP_TOOLS_PATHLIST"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
#
|
||||
# And now, we put the results into PATH
|
||||
#
|
||||
old_IFS="$IFS"
|
||||
IFS=:
|
||||
temp_path=
|
||||
for dir in $GNUSTEP_TOOLS_PATHLIST; do
|
||||
|
||||
# Prepare the path_fragment
|
||||
if [ "$GNUSTEP_IS_FLATTENED" = "no" ]; then
|
||||
path_fragment="$dir:$dir/${GNUSTEP_HOST_CPU}/${GNUSTEP_HOST_OS}/${LIBRARY_COMBO}:$dir/${GNUSTEP_HOST_CPU}/${GNUSTEP_HOST_OS}"
|
||||
else
|
||||
path_fragment="$dir"
|
||||
fi
|
||||
|
||||
# Add it to temp_path
|
||||
if [ -z "$temp_path" ]; then
|
||||
temp_path="$path_fragment"
|
||||
else
|
||||
temp_path="$temp_path:$path_fragment"
|
||||
fi
|
||||
|
||||
unset path_fragment
|
||||
|
||||
done
|
||||
IFS="$old_IFS"
|
||||
unset old_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
|
||||
unset GNUSTEP_TOOLS_PATHLIST
|
||||
export PATH
|
||||
|
||||
. $GNUSTEP_MAKEFILES/ld_lib_path.sh
|
||||
|
||||
GNUSTEP_LIBRARY_PATHLIST=`$GNUSTEP_MAKEFILES/print_unique_pathlist.sh "$GNUSTEP_USER_LIBRARY" "$GNUSTEP_LOCAL_LIBRARY" "$GNUSTEP_NETWORK_LIBRARY" "$GNUSTEP_SYSTEM_LIBRARY" $fixup_paths`
|
||||
|
||||
old_IFS="$IFS"
|
||||
IFS=:
|
||||
gnustep_class_path=
|
||||
for dir in $GNUSTEP_LIBRARY_PATHLIST; do
|
||||
|
||||
if [ -z "$gnustep_class_path" ]; then
|
||||
gnustep_class_path="$dir/Libraries/Java"
|
||||
else
|
||||
gnustep_class_path="$gnustep_class_path:$dir/Libraries/Java"
|
||||
fi
|
||||
|
||||
done
|
||||
IFS="$old_IFS"
|
||||
unset old_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_LIBRARY_PATHLIST; do
|
||||
|
||||
if [ -z "$guile_paths" ]; then
|
||||
guile_paths="$dir/Libraries/Guile"
|
||||
else
|
||||
guile_paths="$guile_paths:$dir/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
|
||||
unset GNUSTEP_LIBRARY_PATHLIST
|
||||
|
||||
#
|
||||
# Make sure info files, that we install by default into
|
||||
# xxx/Library/Documentation/info, are found by the info browsing
|
||||
# programs. To get this effect, we add those paths to INFOPATH.
|
||||
#
|
||||
GNUSTEP_INFO_PATHLIST=`$GNUSTEP_MAKEFILES/print_unique_pathlist.sh "$GNUSTEP_USER_DOC_INFO" "$GNUSTEP_LOCAL_DOC_INFO" "$GNUSTEP_NETWORK_DOC_INFO" "$GNUSTEP_SYSTEM_DOC_INFO" $fixup_paths`
|
||||
old_IFS="$IFS"
|
||||
IFS=:
|
||||
gnustep_info_path=
|
||||
for dir in $GNUSTEP_INFO_PATHLIST; do
|
||||
|
||||
if [ -z "$gnustep_info_path" ]; then
|
||||
gnustep_info_path="$dir"
|
||||
else
|
||||
gnustep_info_path="$gnustep_info_path:$dir"
|
||||
fi
|
||||
|
||||
done
|
||||
IFS="$old_IFS"
|
||||
unset old_IFS
|
||||
unset dir
|
||||
|
||||
if [ -z "$INFOPATH" ]; then
|
||||
# The ':' at the end means to use the built-in paths after searching
|
||||
# the INFOPATH we provide.
|
||||
INFOPATH="${gnustep_info_path}:"
|
||||
else
|
||||
if ( echo ${INFOPATH}| grep -v "${gnustep_info_path}" >/dev/null ); then
|
||||
INFOPATH="$INFOPATH:${gnustep_info_path}:"
|
||||
fi
|
||||
fi
|
||||
|
||||
unset gnustep_info_path
|
||||
export INFOPATH
|
||||
unset GNUSTEP_INFO_PATHLIST
|
||||
|
||||
#
|
||||
# Perform any user initialization
|
||||
#
|
||||
if [ -f "$GNUSTEP_USER_ROOT/GNUstep.sh" ]; then
|
||||
. "$GNUSTEP_USER_ROOT/GNUstep.sh"
|
||||
fi
|
||||
|
||||
#
|
||||
# Clean up the environment by removing the filesystem variables. Do
|
||||
# it unless we were explicitly requested not to clean it up! Mostly
|
||||
# gnustep-config will request that the environment is not cleaned up,
|
||||
# so it can print out all of the GNUstep variables.
|
||||
#
|
||||
if [ -n "$GNUSTEP_SH_EXPORT_ALL_VARIABLES" ]; then
|
||||
export GNUSTEP_SYSTEM_APPS GNUSTEP_SYSTEM_ADMIN_APPS GNUSTEP_SYSTEM_WEB_APPS GNUSTEP_SYSTEM_TOOLS GNUSTEP_SYSTEM_ADMIN_TOOLS
|
||||
export GNUSTEP_SYSTEM_LIBRARY GNUSTEP_SYSTEM_HEADERS GNUSTEP_SYSTEM_LIBRARIES
|
||||
export GNUSTEP_SYSTEM_DOC GNUSTEP_SYSTEM_DOC_MAN GNUSTEP_SYSTEM_DOC_INFO
|
||||
|
||||
export GNUSTEP_NETWORK_APPS GNUSTEP_NETWORK_ADMIN_APPS GNUSTEP_NETWORK_WEB_APPS GNUSTEP_NETWORK_TOOLS GNUSTEP_NETWORK_ADMIN_TOOLS
|
||||
export GNUSTEP_NETWORK_LIBRARY GNUSTEP_NETWORK_HEADERS GNUSTEP_NETWORK_LIBRARIES
|
||||
export GNUSTEP_NETWORK_DOC GNUSTEP_NETWORK_DOC_MAN GNUSTEP_NETWORK_DOC_INFO
|
||||
|
||||
export GNUSTEP_LOCAL_APPS GNUSTEP_LOCAL_ADMIN_APPS GNUSTEP_LOCAL_WEB_APPS GNUSTEP_LOCAL_TOOLS GNUSTEP_LOCAL_ADMIN_TOOLS
|
||||
export GNUSTEP_LOCAL_LIBRARY GNUSTEP_LOCAL_HEADERS GNUSTEP_LOCAL_LIBRARIES
|
||||
export GNUSTEP_LOCAL_DOC GNUSTEP_LOCAL_DOC_MAN GNUSTEP_LOCAL_DOC_INFO
|
||||
|
||||
export GNUSTEP_USER_APPS GNUSTEP_USER_ADMIN_APPS GNUSTEP_USER_WEB_APPS GNUSTEP_USER_TOOLS GNUSTEP_USER_ADMIN_TOOLS
|
||||
export GNUSTEP_USER_LIBRARY GNUSTEP_USER_HEADERS GNUSTEP_USER_LIBRARIES
|
||||
export GNUSTEP_USER_DOC GNUSTEP_USER_DOC_MAN GNUSTEP_USER_DOC_INFO
|
||||
else
|
||||
unset GNUSTEP_SYSTEM_APPS
|
||||
unset GNUSTEP_SYSTEM_ADMIN_APPS
|
||||
unset GNUSTEP_SYSTEM_WEB_APPS
|
||||
unset GNUSTEP_SYSTEM_TOOLS
|
||||
unset GNUSTEP_SYSTEM_ADMIN_TOOLS
|
||||
unset GNUSTEP_SYSTEM_LIBRARY
|
||||
unset GNUSTEP_SYSTEM_HEADERS
|
||||
unset GNUSTEP_SYSTEM_LIBRARIES
|
||||
unset GNUSTEP_SYSTEM_DOC
|
||||
unset GNUSTEP_SYSTEM_DOC_MAN
|
||||
unset GNUSTEP_SYSTEM_DOC_INFO
|
||||
|
||||
unset GNUSTEP_NETWORK_APPS
|
||||
unset GNUSTEP_NETWORK_ADMIN_APPS
|
||||
unset GNUSTEP_NETWORK_WEB_APPS
|
||||
unset GNUSTEP_NETWORK_TOOLS
|
||||
unset GNUSTEP_NETWORK_ADMIN_TOOLS
|
||||
unset GNUSTEP_NETWORK_LIBRARY
|
||||
unset GNUSTEP_NETWORK_HEADERS
|
||||
unset GNUSTEP_NETWORK_LIBRARIES
|
||||
unset GNUSTEP_NETWORK_DOC
|
||||
unset GNUSTEP_NETWORK_DOC_MAN
|
||||
unset GNUSTEP_NETWORK_DOC_INFO
|
||||
|
||||
unset GNUSTEP_LOCAL_APPS
|
||||
unset GNUSTEP_LOCAL_ADMIN_APPS
|
||||
unset GNUSTEP_LOCAL_WEB_APPS
|
||||
unset GNUSTEP_LOCAL_TOOLS
|
||||
unset GNUSTEP_LOCAL_ADMIN_TOOLS
|
||||
unset GNUSTEP_LOCAL_LIBRARY
|
||||
unset GNUSTEP_LOCAL_HEADERS
|
||||
unset GNUSTEP_LOCAL_LIBRARIES
|
||||
unset GNUSTEP_LOCAL_DOC
|
||||
unset GNUSTEP_LOCAL_DOC_MAN
|
||||
unset GNUSTEP_LOCAL_DOC_INFO
|
||||
|
||||
unset GNUSTEP_USER_APPS
|
||||
unset GNUSTEP_USER_ADMIN_APPS
|
||||
unset GNUSTEP_USER_WEB_APPS
|
||||
unset GNUSTEP_USER_TOOLS
|
||||
unset GNUSTEP_USER_ADMIN_TOOLS
|
||||
unset GNUSTEP_USER_LIBRARY
|
||||
unset GNUSTEP_USER_HEADERS
|
||||
unset GNUSTEP_USER_LIBRARIES
|
||||
unset GNUSTEP_USER_DOC
|
||||
unset GNUSTEP_USER_DOC_MAN
|
||||
unset GNUSTEP_USER_DOC_INFO
|
||||
fi
|
||||
|
||||
if [ -n "$GS_ZSH_NEED_TO_RESTORE_SET" ]; then
|
||||
set +y
|
||||
fi
|
||||
# EOF
|
321
trunk/INSTALL
321
trunk/INSTALL
|
@ -1,321 +0,0 @@
|
|||
1 GNUstep makefile package installation
|
||||
***************************************
|
||||
|
||||
1.1 Introduction
|
||||
================
|
||||
|
||||
If you are installing this package as part of the GNUstep core
|
||||
libraries, read the file GNUstep-HOWTO for more complete instructions
|
||||
on how to install the entire GNUstep package (including this package).
|
||||
GNUstep-HOWTO comes with this distribution.
|
||||
|
||||
This should be the first GNUstep package you install. Before
|
||||
installing this package, install ffcall or libffi and any other
|
||||
libraries that GNUstep may need (see the GNUstep-HOWTO). Read and
|
||||
follow the instructions on setting up the GNUstep environement below.
|
||||
Then install gnustep-base.
|
||||
|
||||
Make sure you've read the machine-specific instructions for your
|
||||
particular operating system and CPU. These instructions come with the
|
||||
GNUstep-HOWTO and are also located at the GNUstep web site at
|
||||
`http://www.gnustep.org'.
|
||||
|
||||
Quick installation instructions:
|
||||
|
||||
./configure
|
||||
make
|
||||
make install
|
||||
|
||||
This will use the default GNUstep filesystem layout (in other words,
|
||||
all of GNUstep will end up installed into /usr/GNUstep). If you are on
|
||||
a Unix system, another popular option is
|
||||
|
||||
./configure --with-layout=fhs
|
||||
make
|
||||
make install
|
||||
|
||||
which will use the FHS (in other words, all of GNUstep will end up
|
||||
installed into /usr/local).
|
||||
|
||||
To make and install the documentation:
|
||||
|
||||
cd Documentation
|
||||
make
|
||||
make install
|
||||
|
||||
1.2 Configuration
|
||||
=================
|
||||
|
||||
The GNUstep packages uses the Autoconf mechanism for configuration; it
|
||||
checks some host capabilties which are used by all GNUstep software.
|
||||
To configure just type:
|
||||
|
||||
./configure
|
||||
|
||||
The GNUstep makefile package needs to know which filesystem layout to
|
||||
use when installing; this determines the way that various directories
|
||||
in the GNUstep domains (SYSTEM, NETWORK, LOCAL, USER) are mapped to
|
||||
local directories on disk. In the FilesystemLayouts/README file you
|
||||
can find detailed information on filesystem layouts.
|
||||
|
||||
To specify a filesystem layout, use the -with-layout=xxx option. The
|
||||
default is
|
||||
|
||||
./configure --with-layout=gnustep
|
||||
|
||||
which installs GNUstep in /usr/GNUstep using the GNUstep layout (that
|
||||
is, /usr/GNUstep/System, /usr/GNUstep/Local, ~/GNUstep). Another
|
||||
popular option is '-with-layout=fhs' which installs gnustep-make into
|
||||
FHS directories based on /usr/local. Check the FilesystemLayouts for
|
||||
more options.
|
||||
|
||||
If you want to install the same layout but in a different location
|
||||
(for example, /opt/gnustep), you can use -prefix=xxx,
|
||||
|
||||
./configure --prefix=/opt/gnustep
|
||||
|
||||
If you're confused and want to see exactly what directories will be
|
||||
used for a certain choice of ./configure flags, have a look at the
|
||||
GNUstep.conf file that is generated by ./configure. It will list the
|
||||
full paths to all the relevant GNUstep directories that would be used
|
||||
if you install the software with that configuration.
|
||||
|
||||
To see more options you can use with configure, type
|
||||
|
||||
./configure --help
|
||||
|
||||
Look particularly at the end of the list that configure gives, as
|
||||
these options are specific to GNUstep. Some of these are described
|
||||
below.
|
||||
|
||||
With the GNUstep packages you can use various switches, such as
|
||||
shared and debug, to control compilation. for example, "make shared=no
|
||||
debug=yes" compiles using static libraries with debugging information.
|
||||
(Make sure you use the same switches for every package you compile, and
|
||||
also when you install).
|
||||
|
||||
1.2.1 Backend Bundles
|
||||
---------------------
|
||||
|
||||
By default, the gnustep-make package specifies that GUI backends are
|
||||
built as a bundle and loaded in at runtime. This allows one to switch
|
||||
backends by simply redefining a user default. If you do not want this
|
||||
behavior (for instance, if bundles do not work on your platform), it
|
||||
can be disabled using
|
||||
|
||||
--disable-backend-bundle
|
||||
|
||||
in the arguments to configure.
|
||||
|
||||
1.2.2 Alternate Library Setup
|
||||
-----------------------------
|
||||
|
||||
You can specify compilation of alternate libraries by using the
|
||||
with-library-combo option.
|
||||
|
||||
./configure --with-library-combo=apple-gnu-gnu
|
||||
|
||||
to compile with Apple's runtime on Darwin, for example. See the
|
||||
DESIGN document for more examples of the variety of library combos.
|
||||
|
||||
1.2.3 Alternate Thread Library
|
||||
------------------------------
|
||||
|
||||
You can specify compilation of an alternate thread library from the one
|
||||
that is normally used (or if GNUstep does not know what your normal
|
||||
library is) with the with-thread-lib option.
|
||||
|
||||
./configure --with-thread-lib="-L/usr/local/lib -lgthread -lglib"
|
||||
|
||||
to use libgthread as your threading library. Note that the
|
||||
Objective-C runtime (libobjc) must have a compatible threading backend
|
||||
in order to use this threading library and you must set the appropriate
|
||||
threading backend by hand in the GNUmakefile if you are using
|
||||
gnustep-objc. If you also need to set compiler flags, use the CPPFLAGS
|
||||
variable when calling configure:
|
||||
|
||||
CPPFLAGS="-I/usr/local/include" ./configure --with-thread-lib="-L/usr/local/lib -lgthread -lglib"
|
||||
|
||||
1.2.4 Configuring for a non-flattened structure
|
||||
-----------------------------------------------
|
||||
|
||||
GNUstep is normally configured to support a single target/combo. If you
|
||||
are interested in supporting more than one target and/or combo, it's
|
||||
possible to configure GNUstep to use a non-'flattened' directory
|
||||
structure. You do this by supplying the `--disable-flattened' argument
|
||||
to configure. You might also want to supply the
|
||||
`--enable-multi-platform' option.
|
||||
|
||||
In a flattened structure, files are stored at the top-level rather
|
||||
than in a `$(GNUSTEP_CPU)/$(GNUSTEP_OS)/$(LIBRARY_COMBO)' subdirectory.
|
||||
|
||||
1.2.5 Configuring for a cross-compile target
|
||||
--------------------------------------------
|
||||
|
||||
By default when you run configure, it assumes that you want to create
|
||||
executables for the same host that you are compiling on; however, the
|
||||
GNUstep makefile package has been designed to support cross-compiling
|
||||
just as easily as normal compiling. In order to add a cross-compile
|
||||
target to the GNUstep makefile package, you must rerun configure for
|
||||
that target and reinstall the makefile package. By rerunning
|
||||
configure, the appropriate target settings are determined, and
|
||||
reinstalling the makefile package installs the appropriate files for
|
||||
that target. The target parameter is used to specify the target
|
||||
platform for cross-compiling:
|
||||
|
||||
./configure --target=i386-mingw32
|
||||
make install
|
||||
|
||||
GNUstep normally is configured to work with only one target. To work
|
||||
with multiple targets, you'll need to add `--disable-flattened' and
|
||||
`--enable-multi-platform' to the configure flags. Files for the
|
||||
different targets will not be overwritten when you configure and install
|
||||
the make package several times.
|
||||
|
||||
./configure --disable-flattened --enable-multi-platform --target=i386-mingw32
|
||||
make install
|
||||
./configure --disable-flattened --enable-multi-platform --target=sparc-solaris2.5
|
||||
make install
|
||||
./configure --disable-flattened --enable-multi-platform --target=alpha-linux-gnu
|
||||
make install
|
||||
|
||||
1.3 Installation
|
||||
================
|
||||
|
||||
After you configure the GNUstep makefile package, you can go straight
|
||||
into installation (there is nothing to compile):
|
||||
|
||||
make install
|
||||
|
||||
After you have installed the GNUstep makefile package, there might
|
||||
still be some minor administration to be performed, depending on your
|
||||
configuration.
|
||||
|
||||
1.4 Setting up the GNUstep environment
|
||||
======================================
|
||||
|
||||
GNUstep-make will install all programs and libraries in the directories
|
||||
specified by the filesystem layout that you choose.
|
||||
|
||||
In here we explain how to set up your environment so that the
|
||||
operating system can find the programs and libraries in these
|
||||
directories.
|
||||
|
||||
The procedure depends on the type of layout (flattened or
|
||||
non-flattened), and on the amount of advanced options that you want to
|
||||
use.
|
||||
|
||||
1.4.1 Flattened (default) Setup
|
||||
-------------------------------
|
||||
|
||||
In a flattened setup (the default unless you use the -disable-flattened
|
||||
configure argument), you can use a simple setup where you just need to
|
||||
make sure that the few program and library directories are found by the
|
||||
shell/linker.
|
||||
|
||||
Check the description of your filesystem in FilesystemLayouts to find
|
||||
precise simplified instructions for your layout.
|
||||
|
||||
In general, you need to your GNUSTEP_SYSTEM_TOOLS,
|
||||
GNUSTEP_NETWORK_TOOLS and GNUSTEP_LOCAL_TOOLS to your PATH, and add
|
||||
your GNUSTEP_SYSTEM_LIBRARIES, GNUSTEP_NETWORK_LIBRARIES and
|
||||
GNUSTEP_LOCAL_LIBRARIES to your linker paths (which is /etc/ld.so.conf
|
||||
on GNU/Linux).
|
||||
|
||||
To build software, you also need to set GNUSTEP_MAKEFILES. (PS: This
|
||||
requirement is likely to go away soon)
|
||||
|
||||
1.4.2 Non-Flattend (fat binary) Setup
|
||||
-------------------------------------
|
||||
|
||||
(Advanced configuration)
|
||||
|
||||
If the setup is non-flattened (ie, fat binary support is enabled)
|
||||
programs and libraries will be installed in appropriate subdirectories
|
||||
so that binaries for different machines/library-combos can coexist.
|
||||
This is the case only if you configure gnustep-make with the option
|
||||
-disable-flattened.
|
||||
|
||||
In this case, the recommended solution for setting up the GNUstep
|
||||
environment is to source the GNUstep.sh file.
|
||||
|
||||
. /usr/GNUstep/System/Library/Makefiles/GNUstep.sh
|
||||
|
||||
(change the path to be the path to your GNUstep.sh file on disk.
|
||||
Common cases include /usr/GNUstep/System/Library/Libraries/Makefiles
|
||||
and /usr/local/share/GNUstep/Makefiles)
|
||||
|
||||
You can run this command in your shell every time, or you may want to
|
||||
add the command to your shell startup scripts - either the ones for
|
||||
your own user (for example, `.bash_profile' for Bash) or the ones for
|
||||
the whole system (for example, `/etc/profile' on GNU/Linux).
|
||||
|
||||
Please note that you need to execute this command both to build
|
||||
software using gnustep-make and to run software installed by
|
||||
gnustep-make.
|
||||
|
||||
1.5 Setting up your GNUstep User domain
|
||||
=======================================
|
||||
|
||||
(Advanced configuration)
|
||||
|
||||
The USER domain is generally expected to be in your home directory;
|
||||
you can use the USER domain to install programs or libraries in your
|
||||
home directory without affecting other users.
|
||||
|
||||
If you want to access programs or libraries installed in your USER
|
||||
domain, then you really need to source GNUstep.sh in all cases (both
|
||||
flattened and non-flattened), as explained in the Non-Flattened section.
|
||||
|
||||
If you want to change the filesystem layout of your USER domain
|
||||
(without reinstalling gnustep-make or affecting other people's USER
|
||||
domains), you can do so at runtime by creating a file called
|
||||
~/.GNUstep.conf (this might have a different name if your filesystem
|
||||
layout specifies otherwise).
|
||||
|
||||
In that file, you can set all the GNUSTEP_USER_* variables set in
|
||||
GNUstep.conf. Check your GNUstep.conf for a full description. Here is
|
||||
an example in which all the GNUstep domain is moved into ~/Test/GNUstep
|
||||
instead of ~/GNUstep:
|
||||
|
||||
GNUSTEP_USER_DIR=Test/GNUstep
|
||||
|
||||
1.6 Having multiple gnustep-makes installed at the same time
|
||||
============================================================
|
||||
|
||||
(Advanced configuration)
|
||||
|
||||
You can install gnustep-make multiple times in different directories
|
||||
by using a different config file for each. But if you do, then you
|
||||
must make sure that you can easily switch the operating system paths
|
||||
from one installation to the other. An easy way to do this is to
|
||||
configure your GNUstep by using GNUstep.sh as explained in the
|
||||
non-flattened instructions.
|
||||
|
||||
Your default gnustep-make installation is the one described in the
|
||||
default GNUstep.conf file for the system; on GNU/Linux this is
|
||||
`/etc/GNUstep/GNUstep.conf'. You can create a second one that uses a
|
||||
different config file; for example:
|
||||
|
||||
./configure --prefix=/opt/mytest --with-config-file=/etc/GNUstep-mytest.conf
|
||||
|
||||
When you install, this second instance of gnustep-make will reside in
|
||||
`/opt/mytest', and have `/etc/GNUstep-mytest.conf' as config file.
|
||||
|
||||
To use this second installation instead of the first one, you only
|
||||
need to set the GNUSTEP_CONFIG_FILE variable to point to the next
|
||||
config file and source GNUstep.sh:
|
||||
|
||||
export GNUSTEP_CONFIG_FILE=/etc/GNUstep-mytest.conf
|
||||
. /opt/mytest/System/Library/Makefies/GNUstep.sh
|
||||
|
||||
To stop using a GNUstep installation, reset your GNUstep environment
|
||||
with the GNUstep-reset.sh script and destroy the variable
|
||||
GNUSTEP_CONFIG_FILE -
|
||||
|
||||
. /opt/mytest/System/Library/Makefies/GNUstep-reset.sh
|
||||
unset GNUSTEP_CONFIG_FILE
|
||||
|
||||
After this, you are ready to start using a new one (by setting a new
|
||||
GNUSTEP_CONFIG_FILE and then sourcing the GNUstep.sh of the new one).
|
||||
|
|
@ -1,78 +0,0 @@
|
|||
# -*-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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
ifeq ($(BASE_MAKE_LOADED), yes)
|
||||
ifeq ($(GNUSTEP_BASE_HAVE_LIBXML), 1)
|
||||
|
||||
ifeq ($(AUTOGSDOC),)
|
||||
AUTOGSDOC = autogsdoc
|
||||
endif
|
||||
|
||||
AGSDOC_FLAGS = $($(GNUSTEP_INSTANCE)_AGSDOC_FLAGS)
|
||||
|
||||
INTERNAL_AGSDOCFLAGS = -Project $(GNUSTEP_INSTANCE)
|
||||
INTERNAL_AGSDOCFLAGS += -DocumentationDirectory $(GNUSTEP_INSTANCE)
|
||||
INTERNAL_AGSDOCFLAGS += $(AGSDOC_FLAGS)
|
||||
|
||||
internal-doc-all_:: $(GNUSTEP_INSTANCE)/dependencies
|
||||
|
||||
# Only include (and implicitly automatically rebuild if needed) the
|
||||
# dependencies file when we are compiling. Ignore it when cleaning or
|
||||
# installing.
|
||||
ifeq ($(GNUSTEP_OPERATION), all)
|
||||
-include $(GNUSTEP_INSTANCE)/dependencies
|
||||
endif
|
||||
|
||||
$(GNUSTEP_INSTANCE)/dependencies:
|
||||
$(ECHO_AUTOGSDOC)$(AUTOGSDOC) $(INTERNAL_AGSDOCFLAGS) -MakeDependencies $(GNUSTEP_INSTANCE)/dependencies $(AGSDOC_FILES)$(END_ECHO)
|
||||
|
||||
internal-doc-install_::
|
||||
$(ECHO_INSTALLING)rm -rf $(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)/$(GNUSTEP_INSTANCE); \
|
||||
$(TAR) cfX - $(GNUSTEP_MAKEFILES)/tar-exclude-list $(GNUSTEP_INSTANCE) | \
|
||||
(cd $(GNUSTEP_DOC)/$(DOC_INSTALL_DIR); $(TAR) xf -)$(END_ECHO)
|
||||
ifneq ($(CHOWN_TO),)
|
||||
$(ECHO_CHOWNING)$(CHOWN) -R $(CHOWN_TO) \
|
||||
$(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)/$(GNUSTEP_INSTANCE)$(END_ECHO)
|
||||
endif
|
||||
|
||||
internal-doc-uninstall_::
|
||||
-$(ECHO_UNINSTALLING)rm -f $(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)/$(GNUSTEP_INSTANCE)$(END_ECHO)
|
||||
|
||||
internal-doc-clean::
|
||||
-$(ECHO_NOTHING)rm -Rf $(GNUSTEP_INSTANCE)$(END_ECHO)
|
||||
|
||||
else
|
||||
|
||||
internal-doc-all_::
|
||||
@echo "No libxml - processing of autogsdoc files skipped"
|
||||
|
||||
endif # GNUSTEP_BASE_HAVE_LIBXML
|
||||
|
||||
else
|
||||
|
||||
internal-doc-all_::
|
||||
@echo "GNUstep-Base not installed - processing of autogsdoc files skipped"
|
||||
@echo "If you want to generate documentation, install GNUstep-base first"
|
||||
@echo "and then rerun make here"
|
||||
|
||||
|
||||
endif # BASE_MAKE_LOADED
|
|
@ -1,43 +0,0 @@
|
|||
# -*-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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
# The only thing we know is that each %.gsdoc file should generate a
|
||||
# %.html file. If any of the %.gsdoc files is newer than a corresponding
|
||||
# %.html file, we rebuild them all.
|
||||
GSDOC_OBJECT_FILES = $(patsubst %.gsdoc,%.html,$(GSDOC_FILES))
|
||||
|
||||
internal-doc-all_:: $(GSDOC_OBJECT_FILES)
|
||||
|
||||
$(GSDOC_OBJECT_FILES): $(GSDOC_FILES)
|
||||
autogsdoc $(GSDOC_FILES)
|
||||
|
||||
internal-doc-install_:: \
|
||||
$(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)/$(GNUSTEP_INSTANCE)
|
||||
$(ECHO_INSTALLING)$(INSTALL_DATA) $(GSDOC_OBJECT_FILES) \
|
||||
$(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)/$(GNUSTEP_INSTANCE)$(END_ECHO)
|
||||
internal-doc-uninstall_::
|
||||
$(ECHO_UNINSTALLING)rm -f \
|
||||
$(addprefix $(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)/\
|
||||
$(GNUSTEP_INSTANCE)/,$(GSDOC_OBJECT_FILES))$(END_ECHO)
|
||||
|
||||
internal-doc-clean::
|
||||
-$(ECHO_NOTHING)rm -f $(GSDOC_OBJECT_FILES)$(END_ECHO)
|
|
@ -1,36 +0,0 @@
|
|||
# -*-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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
internal-doc-install_::
|
||||
$(ECHO_INSTALLING)for file in $($(GNUSTEP_INSTANCE)_INSTALL_FILES) __done; do \
|
||||
if [ $$file != __done ]; then \
|
||||
$(INSTALL_DATA) $$file \
|
||||
$(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)/$$file ; \
|
||||
fi; \
|
||||
done$(END_ECHO)
|
||||
|
||||
internal-doc-uninstall_::
|
||||
$(ECHO_UNINSTALLING)for file in $($(GNUSTEP_INSTANCE)_INSTALL_FILES) __done; do \
|
||||
if [ $$file != __done ]; then \
|
||||
rm -f $(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)/$$file ; \
|
||||
fi; \
|
||||
done$(END_ECHO)
|
|
@ -1,86 +0,0 @@
|
|||
# -*-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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
JAVADOC_SOURCEPATH = $($(GNUSTEP_INSTANCE)_JAVADOC_SOURCEPATH)
|
||||
|
||||
.PHONY: generate-javadoc
|
||||
|
||||
ifeq ($(JAVADOC),)
|
||||
JAVADOC = $(JAVA_HOME)/bin/javadoc
|
||||
endif
|
||||
|
||||
ifeq ($(JAVADOC_SOURCEPATH),)
|
||||
INTERNAL_JAVADOCFLAGS = -sourcepath ./
|
||||
else
|
||||
INTERNAL_JAVADOCFLAGS = -sourcepath ./:$(strip $(JAVADOC_SOURCEPATH))
|
||||
endif
|
||||
|
||||
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_DOC)/$(DOC_INSTALL_DIR)/$(GNUSTEP_INSTANCE); \
|
||||
$(TAR) cfX - $(GNUSTEP_MAKEFILES)/tar-exclude-list $(GNUSTEP_INSTANCE) | \
|
||||
(cd $(GNUSTEP_DOC)/$(DOC_INSTALL_DIR); $(TAR) xf -)$(END_ECHO)
|
||||
ifneq ($(CHOWN_TO),)
|
||||
$(ECHO_CHOWNING)$(CHOWN) -R $(CHOWN_TO) \
|
||||
$(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)/$(GNUSTEP_INSTANCE)$(END_ECHO)
|
||||
endif
|
||||
|
||||
internal-doc-uninstall_::
|
||||
-$(ECHO_UNINSTALLING)rm -f $(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)/$(GNUSTEP_INSTANCE)$(END_ECHO)
|
||||
|
||||
endif # JAVADOC_FILES
|
||||
|
||||
internal-doc-clean::
|
||||
-$(ECHO_NOTHING)rm -Rf $(GNUSTEP_INSTANCE)$(END_ECHO)
|
||||
|
||||
internal-doc-distclean::
|
||||
|
|
@ -1,96 +0,0 @@
|
|||
# -*-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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
$(GNUSTEP_INSTANCE).dvi: $(LATEX_FILES)
|
||||
latex $(GNUSTEP_INSTANCE).tex
|
||||
latex $(GNUSTEP_INSTANCE).tex
|
||||
|
||||
$(GNUSTEP_INSTANCE).ps: $(GNUSTEP_INSTANCE).dvi
|
||||
$(GNUSTEP_DVIPS) $(GNUSTEP_DVIPS_FLAGS) $(ADDITIONAL_DVIPS_FLAGS) \
|
||||
$(GNUSTEP_INSTANCE).dvi -o $@
|
||||
|
||||
$(GNUSTEP_INSTANCE).ps.gz: $(GNUSTEP_INSTANCE).ps
|
||||
gzip $(GNUSTEP_INSTANCE).ps -c > $(GNUSTEP_INSTANCE).ps.gz
|
||||
|
||||
internal-doc-all_:: $(GNUSTEP_INSTANCE).ps.gz
|
||||
|
||||
internal-doc-install_::
|
||||
$(INSTALL_DATA) $(GNUSTEP_INSTANCE).ps \
|
||||
$(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)
|
||||
internal-doc-uninstall_::
|
||||
$(ECHO_UNINSTALLING)rm -f \
|
||||
$(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)/$(GNUSTEP_INSTANCE).ps$(END_ECHO)
|
||||
|
||||
internal-doc-clean::
|
||||
-$(ECHO_NOTHING)rm -f $(GNUSTEP_INSTANCE).aux \
|
||||
$(GNUSTEP_INSTANCE).cp \
|
||||
$(GNUSTEP_INSTANCE).cps \
|
||||
$(GNUSTEP_INSTANCE).dvi \
|
||||
$(GNUSTEP_INSTANCE).fn \
|
||||
$(GNUSTEP_INSTANCE).info* \
|
||||
$(GNUSTEP_INSTANCE).ky \
|
||||
$(GNUSTEP_INSTANCE).log \
|
||||
$(GNUSTEP_INSTANCE).pg \
|
||||
$(GNUSTEP_INSTANCE).ps \
|
||||
$(GNUSTEP_INSTANCE).toc \
|
||||
$(GNUSTEP_INSTANCE).tp \
|
||||
$(GNUSTEP_INSTANCE).vr \
|
||||
$(GNUSTEP_INSTANCE).vrs \
|
||||
$(GNUSTEP_INSTANCE)_*.html \
|
||||
$(GNUSTEP_INSTANCE).ps.gz \
|
||||
$(GNUSTEP_INSTANCE).tar.gz \
|
||||
$(GNUSTEP_INSTANCE)/* \
|
||||
*.aux$(END_ECHO)
|
||||
|
||||
#
|
||||
# Targets built only if we can find `latex2html'
|
||||
#
|
||||
|
||||
ifneq ($(LATEX2HTML),)
|
||||
HAS_LATEX2HTML = yes
|
||||
endif
|
||||
|
||||
ifeq ($(HAS_LATEX2HTML),yes)
|
||||
internal-doc-all_:: $(GNUSTEP_INSTANCE).tar.gz
|
||||
|
||||
$(GNUSTEP_INSTANCE)/$(GNUSTEP_INSTANCE).html: $(GNUSTEP_INSTANCE).dvi
|
||||
$(LATEX2HTML) $(GNUSTEP_INSTANCE)
|
||||
|
||||
$(GNUSTEP_INSTANCE).tar.gz: $(GNUSTEP_INSTANCE)/$(GNUSTEP_INSTANCE).html
|
||||
$(TAR) cfzX $(GNUSTEP_INSTANCE).tar.gz $(GNUSTEP_MAKEFILES)/tar-exclude-list $(GNUSTEP_INSTANCE)
|
||||
|
||||
internal-doc-install_::
|
||||
$(INSTALL_DATA) $(GNUSTEP_INSTANCE)/*.html \
|
||||
$(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)
|
||||
$(INSTALL_DATA) $(GNUSTEP_INSTANCE)/*.css \
|
||||
$(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)
|
||||
# Yeah - I know - the following is dangerous if you have misused the
|
||||
# DOC_INSTALL_DIR - but it's the only way to do it
|
||||
internal-doc-uninstall_::
|
||||
-$(ECHO_UNINSTALLING)rm -f $(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)/*.html; \
|
||||
rm -f $(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)/*.css$(END_ECHO)
|
||||
|
||||
internal-doc-distclean::
|
||||
$(ECHO_NOTHING) if [ -d "$(GNUSTEP_INSTANCE)" ]; then \
|
||||
rm -rf $(GNUSTEP_INSTANCE)/; \
|
||||
fi$(END_ECHO)
|
||||
endif # LATEX2HTML
|
|
@ -1,156 +0,0 @@
|
|||
# -*-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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
# To override GNUSTEP_MAKEINFO, define it differently in
|
||||
# GNUmakefile.preamble
|
||||
ifeq ($(GNUSTEP_MAKEINFO),)
|
||||
GNUSTEP_MAKEINFO = makeinfo
|
||||
endif
|
||||
|
||||
# To override GNUSTEP_MAKEINFO_FLAGS, define it differently in
|
||||
# GNUmakefile.premable. To only add new flags to the existing ones,
|
||||
# set ADDITIONAL_MAKEINFO_FLAGS in GNUmakefile.preamble.
|
||||
ifeq ($(GNUSTEP_MAKEINFO_FLAGS),)
|
||||
GNUSTEP_MAKEINFO_FLAGS = -D NO-TEXI2HTML
|
||||
endif
|
||||
|
||||
ifeq ($(GNUSTEP_MAKETEXT),)
|
||||
GNUSTEP_MAKETEXT = makeinfo
|
||||
endif
|
||||
ifeq ($(GNUSTEP_MAKETEXT_FLAGS),)
|
||||
GNUSTEP_MAKETEXT_FLAGS = -D NO-TEXI2HTML -D TEXT-ONLY --no-header --no-split
|
||||
endif
|
||||
|
||||
ifeq ($(GNUSTEP_TEXI2DVI),)
|
||||
GNUSTEP_TEXI2DVI = texi2dvi
|
||||
endif
|
||||
ifeq ($(GNUSTEP_TEXI2DVI_FLAGS),)
|
||||
GNUSTEP_TEXI2DVI_FLAGS =
|
||||
endif
|
||||
|
||||
ifeq ($(GNUSTEP_TEXI2PDF),)
|
||||
GNUSTEP_TEXI2PDF = texi2pdf
|
||||
endif
|
||||
ifeq ($(GNUSTEP_TEXI2PDF_FLAGS),)
|
||||
GNUSTEP_TEXI2PDF_FLAGS =
|
||||
endif
|
||||
|
||||
ifeq ($(GNUSTEP_TEXI2HTML),)
|
||||
GNUSTEP_TEXI2HTML = 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_DOC_INFO. TODO: I think we should run
|
||||
# install-info too - to keep up-to-date the dir index in that
|
||||
# directory.
|
||||
internal-doc-install_:: $(GNUSTEP_DOC_INFO)
|
||||
if [ -f $(GNUSTEP_INSTANCE).pdf ]; then \
|
||||
$(INSTALL_DATA) $(GNUSTEP_INSTANCE).pdf \
|
||||
$(GNUSTEP_DOC)/$(DOC_INSTALL_DIR); \
|
||||
fi
|
||||
if [ -f $(GNUSTEP_INSTANCE).info ]; then \
|
||||
$(INSTALL_DATA) $(GNUSTEP_INSTANCE).info* $(GNUSTEP_DOC_INFO); \
|
||||
fi
|
||||
if [ -f $(GNUSTEP_INSTANCE)_toc.html ]; then \
|
||||
$(INSTALL_DATA) $(GNUSTEP_INSTANCE)_*.html \
|
||||
$(GNUSTEP_DOC)/$(DOC_INSTALL_DIR); \
|
||||
fi
|
||||
if [ -f $(GNUSTEP_INSTANCE).html ]; then \
|
||||
$(INSTALL_DATA) $(GNUSTEP_INSTANCE).html \
|
||||
$(GNUSTEP_DOC)/$(DOC_INSTALL_DIR); \
|
||||
fi
|
||||
|
||||
$(GNUSTEP_DOC_INFO):
|
||||
$(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO)
|
||||
|
||||
internal-doc-uninstall_::
|
||||
rm -f \
|
||||
$(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)/$(GNUSTEP_INSTANCE).pdf
|
||||
rm -f \
|
||||
$(GNUSTEP_DOC_INFO)/$(GNUSTEP_INSTANCE).info*
|
||||
rm -f \
|
||||
$(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)/$(GNUSTEP_INSTANCE)_*.html
|
||||
rm -f \
|
||||
$(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)/$(GNUSTEP_INSTANCE).html
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
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.
|
|
@ -1,51 +0,0 @@
|
|||
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.
|
|
@ -1,423 +0,0 @@
|
|||
# -*-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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
#
|
||||
# input variables:
|
||||
#
|
||||
|
||||
#
|
||||
# GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH : this is used when copying
|
||||
# resource files into the bundle. It's the path to the local resource
|
||||
# bundle where all resources will be put (this might be a subdirectory
|
||||
# of the actual bundle directory). This path must include
|
||||
# GNUSTEP_BUILD_DIR. Resource files will be copied into this path.
|
||||
# For example, for a normal bundle it would be
|
||||
# $(BUNDLE_DIR)/Resources; for an application it would be
|
||||
# $(APP_DIR)/Resources; for a library or a tool,
|
||||
# $(GNUSTEP_BUILD_DIR)/Resources/$(GNUSTEP_INSTANCE). This variable
|
||||
# is used during build, to copy the resources in place.
|
||||
#
|
||||
# GNUSTEP_BUILD_DIR : Implicitly used to find the bundle.
|
||||
#
|
||||
# GNUSTEP_SHARED_BUNDLE_INSTALL_NAME : this is used when installing.
|
||||
# It's the name of the directory that is installed. For example, for
|
||||
# a normal bundle it would be $(BUNDLE_DIR_NAME); for an application
|
||||
# it would be $(APP_DIR_NAME); for a tool $(GNUSTEP_INSTANCE); for a
|
||||
# library, $(INTERFACE_VERSION).
|
||||
#
|
||||
# GNUSTEP_SHARED_BUNDLE_INSTALL_LOCAL_PATH : this is used when
|
||||
# installing. It's the path to the directory that contains
|
||||
# GNUSTEP_SHARED_BUNDLE_INSTALL_NAME, but relative to
|
||||
# GNUSTEP_BUILD_DIR. For example, for a normal bundle or an
|
||||
# application this is simply ./; for a tool this is ./Resources; for a
|
||||
# library this is ./Resources/$(GNUSTEP_INSTANCE). This is relative
|
||||
# to GNUSTEP_BUILD_DIR so that it can be used by COPY_INTO_DIR as
|
||||
# well. When we are asked to COPY_INTO_DIR (instead of the standard
|
||||
# installation) then we copy the stuff from
|
||||
# GNUSTEP_BUILD_DIR/GNUSTEP_SHARED_BUNDLE_INSTALL_LOCAL_PATH into
|
||||
# COPY_INTO_DIR/GNUSTEP_SHARED_BUNDLE_INSTALL_LOCAL_PATH. This works
|
||||
# well for tool resources, for example, so that when you copy a tool
|
||||
# with resources into a framework, the tool resources and the tool
|
||||
# executable remain in the same relative relationship and tool
|
||||
# resources can be found.
|
||||
#
|
||||
# GNUSTEP_SHARED_BUNDLE_INSTALL_PATH : this is used when installing.
|
||||
# It's the path where we install the bundle; that is, we will take
|
||||
# GNUSTEP_SHARED_BUNDLE_INSTALL_NAME from
|
||||
# GNUSTEP_SHARED_BUNDLE_INSTALL_LOCAL_PATH and install it into
|
||||
# GNUSTEP_SHARED_BUNDLE_INSTALL_PATH. For example, for a normal
|
||||
# bundle it would be $(BUNDLE_INSTALL_DIR); for an application it
|
||||
# would be $(APP_INSTALL_DIR); for a tool, $(GNUSTEP_TOOL_RESOURCES);
|
||||
# for a library $(GNUSTEP_RESOURCES)/$(GNUSTEP_INSTANCE).
|
||||
#
|
||||
# Please note that the main constraint when installing is that your
|
||||
# local bundle should have the same name that it has when installed.
|
||||
# Paths can be changed arbitrarily though.
|
||||
#
|
||||
# $(GNUSTEP_INSTANCE)_RESOURCE_FILES : a list of resource files to install.
|
||||
# They are recursively copied (/symlinked), so it might also include dirs.
|
||||
#
|
||||
# $(GNUSTEP_INSTANCE)_RESOURCE_DIRS : a list of additional resource dirs
|
||||
# to create.
|
||||
#
|
||||
# $(GNUSTEP_INSTANCE)_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_PATH) - the rule to build it has to be
|
||||
# provided by the caller {we can't provide two rules to build the same
|
||||
# target; the caller might need to provide the rule for cases when we
|
||||
# are not included, so we let the caller always provide it}
|
||||
#
|
||||
|
||||
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.
|
||||
#
|
||||
# Important: we pass the '-f' argument to 'cp' to make sure that you
|
||||
# can write and overwrite RESOURCE_FILES which are -r--r--r--.
|
||||
#
|
||||
shared-instance-bundle-all: $(GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH) \
|
||||
$(FULL_RESOURCE_DIRS) \
|
||||
shared-instance-bundle-all-gsweb
|
||||
ifneq ($(RESOURCE_FILES),)
|
||||
$(ECHO_COPYING_RESOURCES)for f in $(RESOURCE_FILES); do \
|
||||
if [ -f $$f -o -d $$f ]; then \
|
||||
cp -fr $$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 -fr $$l.lproj/$$f \
|
||||
$(GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH)/$$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
|
||||
ifneq ($(_SUBPROJECTS),)
|
||||
$(ECHO_COPYING_RESOURCES_FROM_SUBPROJS)for subproject in $(_SUBPROJECTS); do \
|
||||
if [ -d $$subproject/Resources/Subproject ]; then \
|
||||
for f in $$subproject/Resources/Subproject/*; do \
|
||||
if [ $$f != $$subproject'/Resources/Subproject/*' ]; then \
|
||||
cp -fr $$f $(GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH)/; \
|
||||
fi; \
|
||||
done; \
|
||||
fi; \
|
||||
done$(END_ECHO)
|
||||
endif
|
||||
|
||||
##
|
||||
##
|
||||
## GSWeb code
|
||||
## A main issue here is - executing *nothing* if gsweb is not used :-)
|
||||
##
|
||||
##
|
||||
|
||||
WEBSERVER_RESOURCE_FILES = \
|
||||
$(strip $($(GNUSTEP_INSTANCE)_WEBSERVER_RESOURCE_FILES) \
|
||||
$($(GNUSTEP_INSTANCE)_WEBSERVER_COMPONENTS))
|
||||
# For historical reasons, we recognized the old variant
|
||||
# xxx_LOCALIZED_WEBSERVER_RESOURCE_FILES - but we recommend to use
|
||||
# xxx_WEBSERVER_LOCALIZED_RESOURCE_FILES instead.
|
||||
WEBSERVER_LOCALIZED_RESOURCE_FILES = \
|
||||
$(strip $($(GNUSTEP_INSTANCE)_LOCALIZED_WEBSERVER_RESOURCE_FILES) \
|
||||
$($(GNUSTEP_INSTANCE)_WEBSERVER_LOCALIZED_RESOURCE_FILES) \
|
||||
$($(GNUSTEP_INSTANCE)_WEBSERVER_LOCALIZED_COMPONENTS))
|
||||
WEBSERVER_RESOURCE_DIRS = \
|
||||
$(strip $($(GNUSTEP_INSTANCE)_WEBSERVER_RESOURCE_DIRS))
|
||||
WEBSERVER_LOCALIZED_RESOURCE_DIRS = \
|
||||
$(strip $($(GNUSTEP_INSTANCE)_WEBSERVER_LOCALIZED_RESOURCE_DIRS))
|
||||
|
||||
|
||||
ifneq ($(WEBSERVER_RESOURCE_DIRS),)
|
||||
|
||||
WEBSERVER_FULL_RESOURCE_DIRS = \
|
||||
$(foreach d, $(WEBSERVER_RESOURCE_DIRS), $(GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH)/WebServer/$(d))
|
||||
|
||||
$(WEBSERVER_FULL_RESOURCE_DIRS):
|
||||
$(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO)
|
||||
|
||||
endif
|
||||
|
||||
|
||||
.PHONY: shared-instance-bundle-all-webresources \
|
||||
shared-instance-bundle-all-localized-webresources
|
||||
|
||||
shared-instance-bundle-all-gsweb: shared-instance-bundle-all-webresources \
|
||||
shared-instance-bundle-all-localized-webresources
|
||||
|
||||
ifneq ($(WEBSERVER_RESOURCE_FILES),)
|
||||
|
||||
$(GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH)/WebServer:
|
||||
$(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO)
|
||||
|
||||
shared-instance-bundle-all-webresources: \
|
||||
$(GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH)/WebServer \
|
||||
$(WEBSERVER_FULL_RESOURCE_DIRS)
|
||||
$(ECHO_COPYING_WEBSERVER_RESOURCES)for f in $(WEBSERVER_RESOURCE_FILES); do \
|
||||
if [ -f ./WebServerResources/$$f \
|
||||
-o -d ./WebServerResources/$$f ]; then \
|
||||
cp -fr ./WebServerResources/$$f \
|
||||
$(GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH)/WebServer/$$f; \
|
||||
else \
|
||||
echo "Warning: WebServerResources/$$f not found - ignoring"; \
|
||||
fi; \
|
||||
done$(END_ECHO)
|
||||
else
|
||||
|
||||
shared-instance-bundle-all-webresources:
|
||||
|
||||
endif
|
||||
|
||||
ifneq ($(WEBSERVER_LOCALIZED_RESOURCE_FILES)$(WEBSERVER_LOCALIZED_RESOURCE_DIRS),)
|
||||
shared-instance-bundle-all-localized-webresources: \
|
||||
$(WEBSERVER_FULL_RESOURCE_DIRS)
|
||||
ifneq ($(WEBSERVER_LOCALIZED_RESOURCE_DIRS),)
|
||||
$(ECHO_CREATING_WEBSERVER_LOC_RESOURCE_DIRS)for l in $(LANGUAGES); do \
|
||||
if [ -d ./WebServerResources/$$l.lproj ]; then \
|
||||
$(MKDIRS) \
|
||||
$(GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH)/WebServer/$$l.lproj; \
|
||||
for f in $(WEBSERVER_LOCALIZED_RESOURCE_DIRS); do \
|
||||
$(MKDIRS) \
|
||||
$(GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH)/WebServer/$$l.lproj/$$f; \
|
||||
done; \
|
||||
else \
|
||||
echo "Warning: WebServer/$$l.lproj not found - ignoring"; \
|
||||
fi; \
|
||||
done$(END_ECHO)
|
||||
endif
|
||||
ifneq ($(WEBSERVER_LOCALIZED_RESOURCE_FILES),)
|
||||
$(ECHO_COPYING_WEBSERVER_LOC_RESOURCES)for l in $(LANGUAGES); do \
|
||||
if [ -d ./WebServerResources/$$l.lproj ]; then \
|
||||
$(MKDIRS) \
|
||||
$(GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH)/WebServer/$$l.lproj;\
|
||||
for f in $(WEBSERVER_LOCALIZED_RESOURCE_FILES); do \
|
||||
if [ -f ./WebServerResources/$$l.lproj/$$f \
|
||||
-o -d ./WebServerResources/$$l.lproj/$$f ]; then \
|
||||
cp -fr ./WebServerResources/$$l.lproj/$$f \
|
||||
$(GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH)/WebServer/$$l.lproj/$$f; \
|
||||
else \
|
||||
echo "Warning: WebServerResources/$$l.lproj/$$f not found - ignoring"; \
|
||||
fi; \
|
||||
done; \
|
||||
else \
|
||||
echo "Warning: WebServerResources/$$l.lproj not found - ignoring"; \
|
||||
fi; \
|
||||
done$(END_ECHO)
|
||||
endif
|
||||
|
||||
else
|
||||
|
||||
shared-instance-bundle-all-localized-webresources:
|
||||
|
||||
endif
|
||||
|
||||
# In the following rule, tar has the 'h' option, which dereferences
|
||||
# symbolic links. The idea is that you could specify symbolic links
|
||||
# to some templates as some of the resource files; then building the
|
||||
# bundle is quick, because you only copy the symlinks - not the actual
|
||||
# files; and the symlinks are dereferenced when the bundle is
|
||||
# installed (which is why the 'h' option is there). I've never used
|
||||
# this feature, but it was requested by some of our users.
|
||||
#
|
||||
|
||||
# Another common request is to ignore/drop CVS and .svn
|
||||
# directories/files from the bundle when installing. You don't really
|
||||
# want to install those in case they ended up in the bundle when you
|
||||
# recursively copied some resources in it from your source code.
|
||||
# This is obtained by using the 'X' flag.
|
||||
#
|
||||
# Because of compatibility issues with older versions of GNU tar (not
|
||||
# to speak of non-GNU tars), we use the X option rather than the
|
||||
# --exclude= option. The X option requires as argument a file listing
|
||||
# files to exclude. We use a standard exclude file list which we store
|
||||
# in GNUSTEP_MAKEFILES.
|
||||
#
|
||||
shared-instance-bundle-install:: $(GNUSTEP_SHARED_BUNDLE_INSTALL_PATH)
|
||||
$(ECHO_INSTALLING_BUNDLE)rm -rf $(GNUSTEP_SHARED_BUNDLE_INSTALL_PATH)/$(GNUSTEP_SHARED_BUNDLE_INSTALL_NAME); \
|
||||
(cd $(GNUSTEP_BUILD_DIR)/$(GNUSTEP_SHARED_BUNDLE_INSTALL_LOCAL_PATH); \
|
||||
$(TAR) chfX - $(GNUSTEP_MAKEFILES)/tar-exclude-list $(GNUSTEP_SHARED_BUNDLE_INSTALL_NAME)) \
|
||||
| (cd $(GNUSTEP_SHARED_BUNDLE_INSTALL_PATH); $(TAR) xf -)$(END_ECHO)
|
||||
ifneq ($(CHOWN_TO),)
|
||||
$(ECHO_CHOWNING)$(CHOWN) -R $(CHOWN_TO) \
|
||||
$(GNUSTEP_SHARED_BUNDLE_INSTALL_PATH)/$(GNUSTEP_SHARED_BUNDLE_INSTALL_NAME)$(END_ECHO)
|
||||
endif
|
||||
|
||||
shared-instance-bundle-copy_into_dir::
|
||||
$(ECHO_COPYING_BUNDLE_INTO_DIR)rm -rf $(COPY_INTO_DIR)/$(GNUSTEP_SHARED_BUNDLE_INSTALL_LOCAL_PATH)/$(GNUSTEP_SHARED_BUNDLE_INSTALL_NAME); \
|
||||
(cd $(GNUSTEP_BUILD_DIR); \
|
||||
$(TAR) chfX - $(GNUSTEP_MAKEFILES)/tar-exclude-list $(GNUSTEP_SHARED_BUNDLE_INSTALL_LOCAL_PATH)/$(GNUSTEP_SHARED_BUNDLE_INSTALL_NAME)) \
|
||||
| (cd $(COPY_INTO_DIR); $(TAR) xf -)$(END_ECHO)
|
||||
|
||||
shared-instance-bundle-uninstall::
|
||||
$(ECHO_NOTHING)cd $(GNUSTEP_SHARED_BUNDLE_INSTALL_PATH); rm -rf $(GNUSTEP_SHARED_BUNDLE_INSTALL_NAME)$(END_ECHO)
|
|
@ -1,133 +0,0 @@
|
|||
#
|
||||
# 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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
#
|
||||
# input variables:
|
||||
#
|
||||
# $(GNUSTEP_INSTANCE)_HEADER_FILES : the list of .h files to install
|
||||
#
|
||||
# $(GNUSTEP_INSTANCE)_HEADER_FILES_DIR : the dir in which the .h files are;
|
||||
# defaults to `.' if no set.
|
||||
#
|
||||
# $(GNUSTEP_INSTANCE)_HEADER_FILES_INSTALL_DIR : the dir in which to install
|
||||
# the .h files; defaults to $(GNUSTEP_INSTANCE) if not set. Please set it
|
||||
# to `.' if you want it to be like empty.
|
||||
#
|
||||
|
||||
#
|
||||
# public targets:
|
||||
#
|
||||
# shared-instance-headers-install
|
||||
# shared-instance-headers-uninstall
|
||||
#
|
||||
|
||||
HEADER_FILES = $($(GNUSTEP_INSTANCE)_HEADER_FILES)
|
||||
|
||||
.PHONY: \
|
||||
shared-instance-headers-install \
|
||||
shared-instance-headers-uninstall
|
||||
|
||||
# We always compute HEADER_FILES_DIR and HEADER_FILES_INSTALL_DIR.
|
||||
# The reason is that frameworks might have headers in subprojects (and
|
||||
# not in the top framework makefile!). Those headers are
|
||||
# automatically used and installed, but in the top-level makefile,
|
||||
# HEADER_FILES = '', still you might want to have a special
|
||||
# HEADER_FILES_DIR and HEADER_FILES_INSTALL_DIR even in this case.
|
||||
# NB: Header installation for frameworks is done by the framework
|
||||
# code.
|
||||
HEADER_FILES_DIR = $($(GNUSTEP_INSTANCE)_HEADER_FILES_DIR)
|
||||
|
||||
ifeq ($(HEADER_FILES_DIR),)
|
||||
HEADER_FILES_DIR = .
|
||||
endif
|
||||
|
||||
HEADER_FILES_INSTALL_DIR = $($(GNUSTEP_INSTANCE)_HEADER_FILES_INSTALL_DIR)
|
||||
|
||||
# Please use `.' to force it to stay empty
|
||||
ifeq ($(HEADER_FILES_INSTALL_DIR),)
|
||||
HEADER_FILES_INSTALL_DIR = $(GNUSTEP_INSTANCE)
|
||||
endif
|
||||
|
||||
ifeq ($(HEADER_FILES),)
|
||||
|
||||
shared-instance-headers-install:
|
||||
|
||||
shared-instance-headers-uninstall:
|
||||
|
||||
else # we have some HEADER_FILES
|
||||
|
||||
#
|
||||
# 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 = ''
|
|
@ -1,140 +0,0 @@
|
|||
#
|
||||
# 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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 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
|
|
@ -1,136 +0,0 @@
|
|||
# -*-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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
#
|
||||
# Normally, make computes dependencies basing on files' timestamps.
|
||||
# You can have a target which depedends on some files. When the files
|
||||
# have changed since the last time the target was built, the target
|
||||
# is rebuilt.
|
||||
#
|
||||
# Inside gnustep-make, we have also a need for a different type of
|
||||
# dependency. We create/patch some .plist files basing on the value
|
||||
# of some make variables. In this case, we want some targets to
|
||||
# depend on some make variables; when the variables have changed since
|
||||
# the last time the target was built, the target is rebuilt.
|
||||
#
|
||||
# This file provides an efficient implementation of this feature. You
|
||||
# can have a target be rebuilt when a certain GNUSTEP_STAMP_STRING has
|
||||
# changed since the last time the target was built. By storing the
|
||||
# values of some variables, in a fixed order, in the
|
||||
# GNUSTEP_STAMP_STRING, you can then in practice have the result of
|
||||
# having the target depend on the variable values.
|
||||
#
|
||||
|
||||
#
|
||||
# To use this file, define GNUSTEP_STAMP_STRING to be the string you
|
||||
# want to depend upon. This file will store the string into a
|
||||
# stamp.make; you need to provide the directory in which to store this
|
||||
# file, and a rule to create the directory. In practice, you need to
|
||||
# set GNUSTEP_STAMP_DIR and implement a $(GNUSTEP_STAMP_DIR): rule.
|
||||
# Then, you can have a target to depend on $(GNUSTEP_STAMP_DEPEND).
|
||||
# That will cause the target to store GNUSTEP_STAMP_STRING into
|
||||
# $(GNUSTEP_STAMP_DIR)/stamp.make the first time it's executed, and to
|
||||
# read it from the same file each time it's executed afterwards.
|
||||
# Whenever the stamp string in stamp.make does not match the curret
|
||||
# GNUSTEP_STAMP_STRING, the stamp file will be rebuilt, and the target
|
||||
# depending on $(GNUSTEP_STAMP_DEPEND) will be forced to be rebuilt.
|
||||
#
|
||||
|
||||
#
|
||||
# Input variables:
|
||||
#
|
||||
# GNUSTEP_STAMP_STRING: This variable is the stamp; we check that it
|
||||
# has not changed since last time the target was rebuilt. You must
|
||||
# set this variable to the appropriate stamp string before including
|
||||
# this file; usually the stamp string is just a concatenation of the
|
||||
# values of the various variables (separated by some character you want,
|
||||
# such as '-') you want to depend upon.
|
||||
#
|
||||
# GNUSTEP_STAMP_DIR: The directory in which you want the stamp file to
|
||||
# be placed. Each time the target is rebuilt, GNUSTEP_STAMP_STRING is
|
||||
# recorded into the stamp file so that next time it can be compared.
|
||||
# Your code must provide a rule to build GNUSTEP_STAMP_DIR.
|
||||
# Typically, GNUSTEP_STAMP_DIR is the bundle dir for a bundle, the
|
||||
# application dir for an application, and so on.
|
||||
#
|
||||
|
||||
#
|
||||
# Output variables:
|
||||
#
|
||||
# GNUSTEP_STAMP_DEPEND: If the value of GNUSTEP_STAMP_STRING is the
|
||||
# same as the value stored inside stamp.make, then this is set to ''.
|
||||
# Else, this is set to shared-instance-stamp-string, and causes both
|
||||
# GNUSTEP_STAMP_FILE to be regenerated, and any target depending on
|
||||
# GNUSTEP_STAMP_DEPEND to be rebuilt as well.
|
||||
#
|
||||
|
||||
#
|
||||
# public targets:
|
||||
#
|
||||
# shared-instance-stamp-string: You do not refer this target directly;
|
||||
# you should instead depend on $(GNUSTEP_STAMP_DEPEND), which will expand
|
||||
# to shared-instance-stamp-string when a change in the stamp string is
|
||||
# detected, and to '' when not.
|
||||
#
|
||||
|
||||
|
||||
# To read the stamp file very quickly, we use a trick: we write the
|
||||
# file as a makefile fragment, and include it to read it.
|
||||
# This can be considered a trick to read the file very efficiently
|
||||
# without spanning a 'cat' subprocess in a subshell.
|
||||
GNUSTEP_STAMP_FILE = $(GNUSTEP_STAMP_DIR)/stamp.make
|
||||
|
||||
# This rule tells make that GNUSTEP_STAMP_FILE is always up to date.
|
||||
# Else, because it is included as a makefile, make would try
|
||||
# rebuilding it, and moreover, after rebuilding it, it would run again
|
||||
# using the new one! We instead manage rules manually to have control
|
||||
# of it.
|
||||
$(GNUSTEP_STAMP_FILE):
|
||||
|
||||
# By default, GNUSTEP_STAMP_DEPEND causes shared-instance-stamp-string to
|
||||
# be executed, and everything depending on GNUSTEP_STAMP_DEPEND to be
|
||||
# rebuilt.
|
||||
GNUSTEP_STAMP_DEPEND = shared-instance-stamp-string
|
||||
|
||||
# We want to make sure the string put in the stamp.make is never empty.
|
||||
# To make sure it is so, we add an '_' at the beginning of the string.
|
||||
GNUSTEP_STAMP_ASTRING = _$(GNUSTEP_STAMP_STRING)
|
||||
|
||||
OLD_GNUSTEP_STAMP_ASTRING =
|
||||
# Include the old stamp.make, but only if it exists.
|
||||
# stamp.make contains the line
|
||||
# OLD_GNUSTEP_STAMP_ASTRING = xxx
|
||||
-include $(GNUSTEP_STAMP_FILE)
|
||||
|
||||
# If there was a stamp.make, and it contained the same
|
||||
# GNUSTEP_STAMP_ASTRING, then we drop GNUSTEP_STAMP_DEPEND, and do
|
||||
# nothing.
|
||||
ifneq ($(OLD_GNUSTEP_STAMP_ASTRING),)
|
||||
ifeq ($(OLD_GNUSTEP_STAMP_ASTRING), $(GNUSTEP_STAMP_ASTRING))
|
||||
GNUSTEP_STAMP_DEPEND =
|
||||
endif
|
||||
endif
|
||||
|
||||
# The actual target building the stamp string.
|
||||
.PHONY: shared-instance-stamp-string
|
||||
|
||||
shared-instance-stamp-string: $(GNUSTEP_STAMP_DIR)
|
||||
$(ECHO_NOTHING)echo "OLD_GNUSTEP_STAMP_ASTRING = $(GNUSTEP_STAMP_ASTRING)" > $(GNUSTEP_STAMP_FILE)$(END_ECHO)
|
|
@ -1,79 +0,0 @@
|
|||
#
|
||||
# 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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 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 = ''
|
|
@ -1,360 +0,0 @@
|
|||
# -*-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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 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 = \
|
||||
$(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)
|
||||
|
||||
APP_DIR_NAME = $(GNUSTEP_INSTANCE:=.$(APP_EXTENSION))
|
||||
APP_DIR = $(GNUSTEP_BUILD_DIR)/$(APP_DIR_NAME)
|
||||
|
||||
#
|
||||
# Now include the standard resource-bundle routines from Shared/bundle.make
|
||||
#
|
||||
|
||||
ifneq ($(FOUNDATION_LIB), apple)
|
||||
# GNUstep bundle
|
||||
GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH = $(APP_DIR)/Resources
|
||||
APP_INFO_PLIST_FILE = $(APP_DIR)/Resources/Info-gnustep.plist
|
||||
else
|
||||
# OSX bundle
|
||||
GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH = $(APP_DIR)/Contents/Resources
|
||||
APP_INFO_PLIST_FILE = $(APP_DIR)/Contents/Info.plist
|
||||
endif
|
||||
GNUSTEP_SHARED_BUNDLE_INSTALL_NAME = $(APP_DIR_NAME)
|
||||
GNUSTEP_SHARED_BUNDLE_INSTALL_LOCAL_PATH = .
|
||||
GNUSTEP_SHARED_BUNDLE_INSTALL_PATH = $(APP_INSTALL_DIR)
|
||||
include $(GNUSTEP_MAKEFILES)/Instance/Shared/bundle.make
|
||||
|
||||
ifneq ($(FOUNDATION_LIB), apple)
|
||||
APP_FILE_NAME = $(APP_DIR_NAME)/$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_INSTANCE)$(EXEEXT)
|
||||
else
|
||||
APP_FILE_NAME = $(APP_DIR_NAME)/Contents/MacOS/$(GNUSTEP_INSTANCE)$(EXEEXT)
|
||||
endif
|
||||
|
||||
APP_FILE = $(GNUSTEP_BUILD_DIR)/$(APP_FILE_NAME)
|
||||
|
||||
|
||||
#
|
||||
# Internal targets
|
||||
#
|
||||
|
||||
# If building on Windows, also generate an import library which can be
|
||||
# used by loadable bundles to resolve symbols in the application. If
|
||||
# a loadable bundle/palette needs to use symbols in the application,
|
||||
# it just needs to link against this APP_NAME/APP_NAME.exe.a library.
|
||||
# We add .exe to the application name to account for Gorm which is
|
||||
# using the same name for the library (libGorm.dll.a) and for the
|
||||
# application (Gorm.exe). Using this terminology, just add
|
||||
# Gorm.app/Gorm.exe.a to the list of objects you link and you get it
|
||||
# working. TODO: Move this into target.make
|
||||
ifeq ($(BUILD_DLL), yes)
|
||||
ALL_LDFLAGS += -Wl,--export-all-symbols -Wl,--out-implib,$(GNUSTEP_BUILD_DIR)/$(APP_DIR_NAME)/$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_INSTANCE).exe$(LIBEXT)
|
||||
endif
|
||||
|
||||
# If building on MinGW, also mark the application as a 'GUI'
|
||||
# application. This prevents an ugly terminal window from being
|
||||
# automatically opened when you start your application directly by
|
||||
# double-clicking on the .exe icon in the Windows file manager. TODO:
|
||||
# Move this into target.make, but somehow make sure it is only used
|
||||
# when linking applications.
|
||||
ifeq ($(findstring mingw32, $(GNUSTEP_TARGET_OS)), mingw32)
|
||||
ALL_LDFLAGS += -mwindows
|
||||
endif
|
||||
|
||||
$(APP_FILE): $(OBJ_FILES_TO_LINK)
|
||||
$(ECHO_LINKING)$(LD) $(ALL_LDFLAGS) $(CC_LDFLAGS) -o $(LDOUT)$@ \
|
||||
$(OBJ_FILES_TO_LINK) $(ALL_GUI_LIBS)$(END_ECHO)
|
||||
|
||||
#
|
||||
# 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_IS_FLATTENED), no)
|
||||
internal-application-build-template: $(APP_DIR)/$(GNUSTEP_INSTANCE)
|
||||
|
||||
$(APP_DIR)/$(GNUSTEP_INSTANCE):
|
||||
$(ECHO_NOTHING)cp $(GNUSTEP_MAKEFILES)/executable.template \
|
||||
$(APP_DIR)/$(GNUSTEP_INSTANCE); \
|
||||
chmod a+x $(APP_DIR)/$(GNUSTEP_INSTANCE)$(END_ECHO)
|
||||
ifneq ($(CHOWN_TO),)
|
||||
$(ECHO_CHOWNING)$(CHOWN) $(CHOWN_TO) $(APP_DIR)/$(GNUSTEP_INSTANCE)$(END_ECHO)
|
||||
endif
|
||||
else
|
||||
internal-application-build-template:
|
||||
|
||||
endif
|
||||
endif
|
||||
|
||||
PRINCIPAL_CLASS = $(strip $($(GNUSTEP_INSTANCE)_PRINCIPAL_CLASS))
|
||||
|
||||
ifeq ($(PRINCIPAL_CLASS),)
|
||||
PRINCIPAL_CLASS = NSApplication
|
||||
endif
|
||||
|
||||
APPLICATION_ICON = $($(GNUSTEP_INSTANCE)_APPLICATION_ICON)
|
||||
|
||||
MAIN_MODEL_FILE = $(strip $(subst .gmodel,,$(subst .gorm,,$(subst .nib,,$($(GNUSTEP_INSTANCE)_MAIN_MODEL_FILE)))))
|
||||
|
||||
MAIN_MARKUP_FILE = $(strip $(subst .gsmarkup,,$($(GNUSTEP_INSTANCE)_MAIN_MARKUP_FILE)))
|
||||
|
||||
# We must recreate Info.plist if PRINCIPAL_CLASS and/or
|
||||
# APPLICATION_ICON and/or MAIN_MODEL_FILE and/or MAIN_MARKUP_FILE has
|
||||
# changed since last time we built Info.plist. We use
|
||||
# stamp-string.make, which will store the variables in a stamp file
|
||||
# inside GNUSTEP_STAMP_DIR, and rebuild Info.plist if
|
||||
# GNUSTEP_STAMP_STRING changes. We will also depend on xxxInfo.plist
|
||||
# if any.
|
||||
GNUSTEP_STAMP_STRING = $(PRINCIPAL_CLASS)-$(APPLICATION_ICON)-$(MAIN_MODEL_FILE)-$(MAIN_MARKUP_FILE)
|
||||
|
||||
ifneq ($(FOUNDATION_LIB),apple)
|
||||
GNUSTEP_STAMP_DIR = $(APP_DIR)
|
||||
|
||||
# Only for efficiency
|
||||
$(GNUSTEP_STAMP_DIR): $(APP_DIR)/$(GNUSTEP_TARGET_LDIR)
|
||||
else
|
||||
# Everything goes in $(APP_DIR)/Contents on Apple
|
||||
GNUSTEP_STAMP_DIR = $(APP_DIR)/Contents
|
||||
endif
|
||||
|
||||
include $(GNUSTEP_MAKEFILES)/Instance/Shared/stamp-string.make
|
||||
|
||||
# You can have a single xxxInfo.plist for both GNUstep and Apple.
|
||||
|
||||
# Often enough, you can just put in it all fields required by both
|
||||
# GNUstep and Apple; if there is a conflict, you can provide
|
||||
# axxxInfo.cplist (please note the suffix!) - that file is
|
||||
# automatically run through the C preprocessor to generate a
|
||||
# xxxInfo.plist file from it. The preprocessor will define GNUSTEP
|
||||
# when using gnustep-base, APPLE when using Apple FoundationKit, NEXT
|
||||
# when using NeXT/OPENStep FoundationKit, and UNKNOWN when using
|
||||
# something else, so you can use
|
||||
# #ifdef GNUSTEP
|
||||
# ... some plist code for GNUstep ...
|
||||
# #else
|
||||
# ... some plist code for Apple ...
|
||||
# #endif
|
||||
# to have your .cplist use different code for each.
|
||||
#
|
||||
|
||||
# Our problem is that we'd like to always depend on xxxInfo.plist if
|
||||
# it's there, and not depend on it if it's not there - which we solve
|
||||
# by expanding $(wildcard $(GNUSTEP_INSTANCE)Info.plist)
|
||||
GNUSTEP_PLIST_DEPEND = $(wildcard $(GNUSTEP_INSTANCE)Info.plist)
|
||||
|
||||
# As a special case, if xxxInfo.cplist is there, in this case as well
|
||||
# we'd like to depend on xxxInfo.plist.
|
||||
ifeq ($(GNUSTEP_PLIST_DEPEND),)
|
||||
# xxxInfo.plist is not there. Check if xxxInfo.cplist is there, and
|
||||
# if so, convert it to xxxInfo.plist and add it to the dependencies.
|
||||
GNUSTEP_PLIST_DEPEND = $(patsubst %.cplist,%.plist,$(wildcard $(GNUSTEP_INSTANCE)Info.cplist))
|
||||
endif
|
||||
|
||||
# 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 internal-install-app-wrapper
|
||||
ifeq ($(strip),yes)
|
||||
$(ECHO_STRIPPING)$(STRIP) $(APP_INSTALL_DIR)/$(APP_FILE_NAME)$(END_ECHO)
|
||||
endif
|
||||
|
||||
internal-app-uninstall_:: shared-instance-bundle-uninstall internal-uninstall-app-wrapper
|
||||
|
||||
#
|
||||
# Normally, to start up an application from the command-line you would
|
||||
# need to use something like 'openapp Gorm.app'. To make this easier
|
||||
# for end-users, we create a 'Gorm' executable inside GNUSTEP_TOOLS
|
||||
# that does just that. Your environment needs to be setup (PATH and
|
||||
# library path properly setup) to use this executable. But that's OK;
|
||||
# if your environment is not setup, then GNUSTEP_TOOLS wouldn't be
|
||||
# in your PATH and so typing 'openapp' or 'Gorm' at the command-line
|
||||
# would do nothing anyway because they wouldn't be found! ;-)
|
||||
#
|
||||
# If your environment is difficult (and you can't fix it), then you
|
||||
# should stick with 'openapp', and you may need to specify the whole
|
||||
# PATH to openapp so that it is found. Eg,
|
||||
# /usr/GNUstep/System/Tools/openapp Gorm.app. That will do a full
|
||||
# GNUstep environment setup and should work no matter what.
|
||||
#
|
||||
# If we have symlinks, we simply create a symlink from
|
||||
# GNUSTEP_TOOLS/GNUSTEP_TARGET_LDIR to APP_INSTALL_DIR/APP_FILE_NAME.
|
||||
# This is the fastest way to start up your application; it just jumps
|
||||
# to the executable file. In fact, it is much faster than openapp.
|
||||
#
|
||||
# If we don't have symlinks, we install an app-wrapper consisting of a
|
||||
# one-liner shell script that will start openapp. This will be
|
||||
# slower.
|
||||
#
|
||||
# These are the rules to create/delete this 'wrapper'.
|
||||
#
|
||||
$(GNUSTEP_TOOLS)/$(GNUSTEP_TARGET_LDIR):
|
||||
$(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO)
|
||||
|
||||
ifeq ($(HAS_LN_S), yes)
|
||||
# We generate a relative symlink. This makes it easier to use DESTDIR
|
||||
# and other packaging relocation tricks.
|
||||
internal-install-app-wrapper: $(GNUSTEP_TOOLS)/$(GNUSTEP_TARGET_LDIR)
|
||||
$(ECHO_NOTHING)\
|
||||
cd $(GNUSTEP_TOOLS)/$(GNUSTEP_TARGET_LDIR); \
|
||||
$(RM_LN_S) $(GNUSTEP_INSTANCE); \
|
||||
$(LN_S) `$(REL_PATH_SCRIPT) $(GNUSTEP_TOOLS)/$(GNUSTEP_TARGET_LDIR) $(APP_INSTALL_DIR)/$(APP_FILE_NAME)` \
|
||||
$(GNUSTEP_INSTANCE)$(END_ECHO)
|
||||
else
|
||||
# Not sure that we can use relative paths with 'exec' in a portable
|
||||
# way. We want the stuff to work with DESTDIR, so in this case we use
|
||||
# openapp in the app wrapper. Much slower, but should work fine.
|
||||
internal-install-app-wrapper: $(GNUSTEP_TOOLS)/$(GNUSTEP_TARGET_LDIR)
|
||||
$(ECHO_NOTHING)cat $(GNUSTEP_MAKEFILES)/app-wrapper.template \
|
||||
| sed -e "s@GNUSTEP_INSTANCE@$(GNUSTEP_INSTANCE)@" > $(GNUSTEP_TOOLS)/$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_INSTANCE); \
|
||||
chmod a+x $(GNUSTEP_TOOLS)/$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_INSTANCE)$(END_ECHO)
|
||||
ifneq ($(CHOWN_TO),)
|
||||
$(ECHO_CHOWNING)$(CHOWN) $(CHOWN_TO) $(GNUSTEP_TOOLS)/$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_INSTANCE)$(END_ECHO)
|
||||
endif
|
||||
endif
|
||||
|
||||
internal-uninstall-app-wrapper:
|
||||
$(ECHO_NOTHING)$(RM) -f $(GNUSTEP_TOOLS)/$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_INSTANCE)$(END_ECHO)
|
||||
|
||||
include $(GNUSTEP_MAKEFILES)/Instance/Shared/strings.make
|
|
@ -1,306 +0,0 @@
|
|||
#
|
||||
# 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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 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 ($(BUILD_DLL), yes)
|
||||
LINK_BUNDLE_AGAINST_ALL_LIBS = yes
|
||||
endif
|
||||
|
||||
# Apple CC two-level namespaces requires all symbols in bundles
|
||||
# to be resolved at link time.
|
||||
ifeq ($(CC_BUNDLE), yes)
|
||||
LINK_BUNDLE_AGAINST_ALL_LIBS = yes
|
||||
endif
|
||||
|
||||
ifeq ($(LINK_BUNDLE_AGAINST_ALL_LIBS), yes)
|
||||
BUNDLE_LIBS += $(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 = \
|
||||
$(ALL_LIB_DIRS) \
|
||||
$(BUNDLE_LIBS)
|
||||
|
||||
ifeq ($(BUILD_DLL),yes)
|
||||
BUNDLE_OBJ_EXT = $(DLL_LIBEXT)
|
||||
endif
|
||||
|
||||
endif # OBJ_FILES_TO_LINK
|
||||
|
||||
#
|
||||
# GNUstep bundles are built in the following way on all platforms:
|
||||
# xxx.bundle/Resources/Info-gnustep.plist
|
||||
# xxx.bundle/Resources/<all resources here>
|
||||
#
|
||||
# We also support building Apple bundles using Apple frameworks
|
||||
# on Apple platforms - in which case, the bundle has a different
|
||||
# structure:
|
||||
# xxx.bundle/Contents/Info.plist
|
||||
# xxx.bundle/Contents/Resources/<all resources here>
|
||||
# This second way of building bundles is triggered by FOUNDATION_LIB =
|
||||
# apple.
|
||||
#
|
||||
|
||||
internal-bundle-all_:: $(GNUSTEP_OBJ_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_INSTALL_NAME = $(BUNDLE_DIR_NAME)
|
||||
GNUSTEP_SHARED_BUNDLE_INSTALL_LOCAL_PATH = .
|
||||
GNUSTEP_SHARED_BUNDLE_INSTALL_PATH = $(BUNDLE_INSTALL_DIR)
|
||||
include $(GNUSTEP_MAKEFILES)/Instance/Shared/bundle.make
|
||||
|
||||
ifneq ($(OBJ_FILES_TO_LINK),)
|
||||
ifneq ($(FOUNDATION_LIB),apple)
|
||||
build-bundle: $(BUNDLE_DIR)/$(GNUSTEP_TARGET_LDIR) \
|
||||
$(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)
|
||||
|
||||
$(BUNDLE_FILE): $(OBJ_FILES_TO_LINK)
|
||||
$(ECHO_LINKING)$(BUNDLE_LINK_CMD)$(END_ECHO)
|
||||
|
||||
PRINCIPAL_CLASS = $(strip $($(GNUSTEP_INSTANCE)_PRINCIPAL_CLASS))
|
||||
|
||||
ifeq ($(PRINCIPAL_CLASS),)
|
||||
PRINCIPAL_CLASS = $(GNUSTEP_INSTANCE)
|
||||
endif
|
||||
|
||||
else
|
||||
# Following code for the case OBJ_FILES_TO_LINK is empty - bundle with
|
||||
# no shared object in it.
|
||||
build-bundle: $(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
|
||||
|
||||
# Depend on xxxInfo.plist but only if it exists.
|
||||
GNUSTEP_PLIST_DEPEND = $(wildcard $(GNUSTEP_INSTANCE)Info.plist)
|
||||
|
||||
ifneq ($(OBJ_FILES_TO_LINK),)
|
||||
# GNUstep bundles
|
||||
$(BUNDLE_DIR)/Resources/Info-gnustep.plist: $(BUNDLE_DIR)/Resources \
|
||||
$(GNUSTEP_STAMP_DEPEND) \
|
||||
$(GNUSTEP_PLIST_DEPEND)
|
||||
$(ECHO_CREATING)(echo "{"; echo ' NOTE = "Automatically generated, do not edit!";'; \
|
||||
echo " NSExecutable = \"$(GNUSTEP_INSTANCE)$(BUNDLE_OBJ_EXT)\";"; \
|
||||
echo " NSMainNibFile = \"$(MAIN_MODEL_FILE)\";"; \
|
||||
echo " NSPrincipalClass = \"$(PRINCIPAL_CLASS)\";"; \
|
||||
echo "}") >$@$(END_ECHO)
|
||||
$(ECHO_NOTHING)if [ -r "$(GNUSTEP_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) \
|
||||
$(GNUSTEP_PLIST_DEPEND)
|
||||
$(ECHO_CREATING)(echo "{"; echo ' NOTE = "Automatically generated, do not edit!";'; \
|
||||
echo " NSMainNibFile = \"$(MAIN_MODEL_FILE)\";"; \
|
||||
echo "}") >$@$(END_ECHO)
|
||||
$(ECHO_NOTHING)if [ -r "$(GNUSTEP_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
|
||||
|
|
@ -1,71 +0,0 @@
|
|||
#
|
||||
# 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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
# Warning/TODO - this makefile is not really finished, because it
|
||||
# still uses the LIB_LINK_CMD used for normal ObjC libraries. The
|
||||
# main difference from library.make, currently, is that it installs
|
||||
# outside the library_combo dir. (because this is the status of this
|
||||
# makefile, we currently simply inherit from library.make. Once we
|
||||
# actually implement C libraries, we might want to make this makefile
|
||||
# partially independent from library.make)
|
||||
|
||||
#
|
||||
# It all works as for library.make but we install outside library-combo
|
||||
#
|
||||
# Other differences are:
|
||||
#
|
||||
# The name of the library is in the CLIBRARY_NAME variable, rather
|
||||
# than in the LIBRARY_NAME variable as it happens for libraries.
|
||||
#
|
||||
# Similarly, the install dir is controlled by CLIBRARY_INSTALL_DIR
|
||||
# rather than LIBRARY_INSTALL_DIR.
|
||||
#
|
||||
|
||||
.PHONY: internal-clibrary-all_ \
|
||||
internal-clibrary-install_ \
|
||||
internal-clibrary-uninstall_
|
||||
|
||||
# This is the directory where the lib get installed.
|
||||
ifneq ($($(GNUSTEP_INSTANCE)_INSTALL_DIR),)
|
||||
CLIBRARY_INSTALL_DIR = $($(GNUSTEP_INSTANCE)_INSTALL_DIR)
|
||||
endif
|
||||
|
||||
ifeq ($(CLIBRARY_INSTALL_DIR),)
|
||||
CLIBRARY_INSTALL_DIR = $(GNUSTEP_LIBRARIES)
|
||||
endif
|
||||
|
||||
# And this is used internally - it is the final directory where we put
|
||||
# the library - it includes target arch, os dir but not the
|
||||
# library_combo - this variable is PRIVATE to gnustep-make
|
||||
FINAL_LIBRARY_INSTALL_DIR = $(CLIBRARY_INSTALL_DIR)/$(GNUSTEP_TARGET_DIR)
|
||||
|
||||
# Drag in library.make rules
|
||||
include $(GNUSTEP_MAKEFILES)/Instance/library.make
|
||||
|
||||
# Now call them from our own rules
|
||||
internal-clibrary-all_:: internal-library-all_
|
||||
|
||||
internal-clibrary-install_:: internal-library-install_
|
||||
|
||||
internal-clibrary-uninstall_:: internal-library-uninstall_
|
||||
|
||||
internal-clibrary-check:: internal-library-check
|
||||
|
|
@ -1,83 +0,0 @@
|
|||
#
|
||||
# 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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
#
|
||||
# The name of the ctools is in the CTOOL_NAME variable.
|
||||
#
|
||||
# xxx We need to prefix the target name when cross-compiling
|
||||
#
|
||||
# This is the same as a tool, but it is not linked against libobjc and
|
||||
# it is not linked against the foundation library. This is good if
|
||||
# you are not using any Objective-C stuff in here.
|
||||
#
|
||||
# PS: this means you must leave the variable xxx_OBJC_FILES (and
|
||||
# xxx_OBJCC_FILES) empty (if you don't, it won't work). If you need
|
||||
# to compile Objective-C stuff, please use tool.make.
|
||||
|
||||
ifeq ($(RULES_MAKE_LOADED),)
|
||||
include $(GNUSTEP_MAKEFILES)/rules.make
|
||||
endif
|
||||
|
||||
# This is the directory where the ctools get installed. If you don't
|
||||
# specify a directory they will get installed in the GNUstep Local
|
||||
# root.
|
||||
ifneq ($($(GNUSTEP_INSTANCE)_INSTALL_DIR),)
|
||||
CTOOL_INSTALL_DIR = $($(GNUSTEP_INSTANCE)_INSTALL_DIR)
|
||||
endif
|
||||
|
||||
ifeq ($(CTOOL_INSTALL_DIR),)
|
||||
CTOOL_INSTALL_DIR = $(GNUSTEP_TOOLS)
|
||||
endif
|
||||
|
||||
.PHONY: internal-ctool-all_ \
|
||||
internal-ctool-install_ \
|
||||
internal-ctool-uninstall_
|
||||
|
||||
ALL_TOOL_LIBS = \
|
||||
$(ALL_LIB_DIRS) \
|
||||
$(ADDITIONAL_TOOL_LIBS) $(AUXILIARY_TOOL_LIBS) \
|
||||
$(TARGET_SYSTEM_LIBS)
|
||||
|
||||
#
|
||||
# Compilation targets
|
||||
#
|
||||
internal-ctool-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-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
|
||||
|
|
@ -1,154 +0,0 @@
|
|||
# -*-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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 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_DOC/DOC_INSTALL_DIR is built before their targets
|
||||
# are. FIXME: Maybe this dependency should be in the submakefiles
|
||||
# themselves.
|
||||
internal-doc-install_:: $(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)
|
||||
|
||||
$(GNUSTEP_DOC)/$(DOC_INSTALL_DIR):
|
||||
$(ECHO_CREATING)$(MKINSTALLDIRS) $(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)$(END_ECHO)
|
||||
|
||||
$(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)/$(GNUSTEP_INSTANCE):
|
||||
$(ECHO_CREATING)$(MKINSTALLDIRS) $(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)/$(GNUSTEP_INSTANCE)$(END_ECHO)
|
||||
|
||||
ifneq ($(TEXI_FILES),)
|
||||
include $(GNUSTEP_MAKEFILES)/Instance/Documentation/texi.make
|
||||
endif
|
||||
|
||||
ifneq ($(GSDOC_FILES),)
|
||||
include $(GNUSTEP_MAKEFILES)/Instance/Documentation/gsdoc.make
|
||||
endif
|
||||
|
||||
ifneq ($(AGSDOC_FILES),)
|
||||
include $(GNUSTEP_MAKEFILES)/Instance/Documentation/autogsdoc.make
|
||||
endif
|
||||
|
||||
ifneq ($(LATEX_FILES),)
|
||||
include $(GNUSTEP_MAKEFILES)/Instance/Documentation/latex.make
|
||||
endif
|
||||
|
||||
ifneq ($(JAVADOC_FILES),)
|
||||
include $(GNUSTEP_MAKEFILES)/Instance/Documentation/javadoc.make
|
||||
endif
|
||||
|
||||
ifneq ($($(GNUSTEP_INSTANCE)_INSTALL_FILES),)
|
||||
include $(GNUSTEP_MAKEFILES)/Instance/Documentation/install_files.make
|
||||
endif
|
||||
|
||||
#
|
||||
# textdoc targets - these are meant to be used with texi.make ... maybe
|
||||
# they should be moved in there
|
||||
#
|
||||
internal-textdoc-install_:: $(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)
|
||||
$(ECHO_NOTHING)$(INSTALL_DATA) $(GNUSTEP_INSTANCE) \
|
||||
$(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)$(END_ECHO)
|
||||
|
||||
internal-textdoc-uninstall_::
|
||||
$(ECHO_UNINSTALLING)rm -f \
|
||||
$(GNUSTEP_DOC)/$(DOC_INSTALL_DIR)/$(GNUSTEP_INSTANCE)$(END_ECHO)
|
||||
|
||||
internal-textdoc-clean::
|
||||
$(ECHO_NOTHING) rm -f $(GNUSTEP_INSTANCE) $(END_ECHO)
|
||||
|
||||
internal-textdoc-distclean::
|
||||
|
|
@ -1,737 +0,0 @@
|
|||
# -*-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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
ifeq ($(RULES_MAKE_LOADED),)
|
||||
include $(GNUSTEP_MAKEFILES)/rules.make
|
||||
endif
|
||||
|
||||
.PHONY: internal-framework-all_ \
|
||||
build-framework \
|
||||
internal-framework-build-headers \
|
||||
build-framework-dirs \
|
||||
internal-framework-install_ \
|
||||
internal-framework-distclean \
|
||||
internal-framework-clean \
|
||||
internal-framework-uninstall_
|
||||
|
||||
# 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 :-).
|
||||
#
|
||||
|
||||
# Set VERSION from xxx_VERSION
|
||||
ifneq ($($(GNUSTEP_INSTANCE)_VERSION),)
|
||||
VERSION = $($(GNUSTEP_INSTANCE)_VERSION)
|
||||
endif
|
||||
|
||||
ifeq ($(VERSION),)
|
||||
VERSION = 0.0.1
|
||||
endif
|
||||
|
||||
# By setting xxx_INTERFACE_VERSION you can change the soversion used
|
||||
# when linking the library. See comments in library.make for the
|
||||
# variables with the same name for libraries.
|
||||
ifeq ($($(GNUSTEP_INSTANCE)_INTERFACE_VERSION),)
|
||||
# By default, if VERSION is 1.0.0, INTERFACE_VERSION is 1
|
||||
INTERFACE_VERSION = $(word 1,$(subst ., ,$(VERSION)))
|
||||
else
|
||||
INTERFACE_VERSION = $($(GNUSTEP_INSTANCE)_INTERFACE_VERSION)
|
||||
endif
|
||||
|
||||
# CURRENT_VERSION_NAME is the name of the version as used when
|
||||
# building the library structure. We recommend just using
|
||||
# INTERFACE_VERSION for that, so your resources and your shared
|
||||
# library have the same versioning.
|
||||
|
||||
# Warning - the following variable is also used in Master/rules.make
|
||||
# to build the OWNING_PROJECT_HEADER_DIR for the framework's
|
||||
# subprojects. Make sure you keep them in sync if you change them.
|
||||
CURRENT_VERSION_NAME = $($(GNUSTEP_INSTANCE)_CURRENT_VERSION_NAME)
|
||||
ifeq ($(CURRENT_VERSION_NAME),)
|
||||
CURRENT_VERSION_NAME = $(INTERFACE_VERSION)
|
||||
endif
|
||||
|
||||
# xxx_MAKE_CURRENT_VERSION can be set to 'no' if you do not want the
|
||||
# framework version that we are building from becoming the Current
|
||||
# one.
|
||||
ifneq ($($(GNUSTEP_INSTANCE)_MAKE_CURRENT_VERSION),)
|
||||
MAKE_CURRENT_VERSION = $($(GNUSTEP_INSTANCE)_MAKE_CURRENT_VERSION)
|
||||
endif
|
||||
|
||||
ifeq ($(MAKE_CURRENT_VERSION),)
|
||||
MAKE_CURRENT_VERSION = yes
|
||||
endif
|
||||
|
||||
# If there are no working symlinks, common.make sets
|
||||
# FRAMEWORK_VERSION_SUPPORT to no, which unconditionally turn
|
||||
# versioning off. This means that we create no symlinks inside the
|
||||
# xxx.framework directory for the various versions; that everything is
|
||||
# put top-level as in the case of bundles. So with
|
||||
# FRAMEWORK_VERSION_SUPPORT = no, the Directory structure is:
|
||||
#
|
||||
# xxx.framework/libframework.dll.a
|
||||
# xxx.framework/framework.dll
|
||||
# xxx.framework/Resources
|
||||
# xxx.framework/Headers
|
||||
#
|
||||
# The Headers, libframework.dll.a and framework.dll are then copied into
|
||||
# the standard header/library locations so that they can be found by
|
||||
# compiler/linker. Given that there are no symlinks, there is no other
|
||||
# way of doing this.
|
||||
ifeq ($(FRAMEWORK_VERSION_SUPPORT),no)
|
||||
MAKE_CURRENT_VERSION = no
|
||||
endif
|
||||
|
||||
# This is used on Apple to build frameworks which can be embedded into
|
||||
# applications. You usually set it to something like
|
||||
# @executable_path/../Frameworks and then you can embed the framework
|
||||
# in an application.
|
||||
DYLIB_INSTALL_NAME_BASE = $($(GNUSTEP_INSTANCE)_DYLIB_INSTALL_NAME_BASE)
|
||||
|
||||
FRAMEWORK_DIR_NAME = $(GNUSTEP_INSTANCE).framework
|
||||
FRAMEWORK_DIR = $(GNUSTEP_BUILD_DIR)/$(FRAMEWORK_DIR_NAME)
|
||||
|
||||
ifeq ($(FRAMEWORK_VERSION_SUPPORT), yes)
|
||||
FRAMEWORK_VERSION_DIR_NAME = $(FRAMEWORK_DIR_NAME)/Versions/$(CURRENT_VERSION_NAME)
|
||||
else
|
||||
FRAMEWORK_VERSION_DIR_NAME = $(FRAMEWORK_DIR_NAME)
|
||||
endif
|
||||
|
||||
FRAMEWORK_VERSION_DIR = $(GNUSTEP_BUILD_DIR)/$(FRAMEWORK_VERSION_DIR_NAME)
|
||||
|
||||
# This is not doing much at the moment, it is only defining
|
||||
# HEADER_FILES, HEADER_FILES_DIR and HEADER_FILES_INSTALL_DIR in the
|
||||
# standard way. Please note that HEADER_FILES might be empty even if
|
||||
# we have headers in subprojects that we need to manage and install.
|
||||
# So we assume by default that we have some headers even if
|
||||
# HEADER_FILES is empty.
|
||||
include $(GNUSTEP_MAKEFILES)/Instance/Shared/headers.make
|
||||
|
||||
# On windows, this is unfortunately required.
|
||||
ifeq ($(BUILD_DLL), yes)
|
||||
LINK_AGAINST_ALL_LIBS = yes
|
||||
endif
|
||||
|
||||
ifeq ($(LINK_AGAINST_ALL_LIBS), yes)
|
||||
# Link against all libs ... but not the one we're compiling! (not sure
|
||||
# when this could happen with frameworks, anyway it makes sense)
|
||||
LIBRARIES_DEPEND_UPON += $(filter-out -l$(GNUSTEP_INSTANCE), \
|
||||
$(ADDITIONAL_GUI_LIBS) $(AUXILIARY_GUI_LIBS) \
|
||||
$(BACKEND_LIBS) \
|
||||
$(GUI_LIBS) $(ADDITIONAL_TOOL_LIBS) $(AUXILIARY_TOOL_LIBS) \
|
||||
$(FND_LIBS) $(ADDITIONAL_OBJC_LIBS) $(AUXILIARY_OBJC_LIBS) $(OBJC_LIBS) \
|
||||
$(SYSTEM_LIBS) $(TARGET_SYSTEM_LIBS))
|
||||
endif
|
||||
|
||||
INTERNAL_LIBRARIES_DEPEND_UPON = \
|
||||
$(ALL_LIB_DIRS) \
|
||||
$(LIBRARIES_DEPEND_UPON)
|
||||
|
||||
ifeq ($(FOUNDATION_LIB),gnu)
|
||||
|
||||
# On GNUstep, build our dummy class to store information which
|
||||
# gnustep-base can find at run time.
|
||||
|
||||
# An ObjC class name can not contain '-', but some people '-' this
|
||||
# in framework names. So we need to encode the '-' in some way
|
||||
# into an ObjC class name. (since we're there, we also encode '+'
|
||||
# even if that's not really common).
|
||||
|
||||
# What we do is, we use '_' as an escape character, and encode (in the
|
||||
# order) as follows:
|
||||
#
|
||||
# '_' is converted to '__'
|
||||
# '-' is converted to '_0'
|
||||
# '+' is converted to '_1'
|
||||
#
|
||||
|
||||
# For example, 'Renaissance-Experimental' becomes
|
||||
# 'Renaissance_0Experimental'.
|
||||
|
||||
# GNUstep-base will convert the name back by applying the reverse rules
|
||||
# in the reverse order.
|
||||
|
||||
DUMMY_FRAMEWORK = NSFramework_$(subst +,_1,$(subst -,_0,$(subst _,__,$(GNUSTEP_INSTANCE))))
|
||||
DUMMY_FRAMEWORK_FILE = $(DERIVED_SOURCES_DIR)/$(DUMMY_FRAMEWORK).m
|
||||
DUMMY_FRAMEWORK_OBJ_FILE = $(addprefix $(GNUSTEP_OBJ_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))
|
||||
|
||||
# FIXME - do we really those variables too ?
|
||||
ifeq ($(FRAMEWORK_VERSION_SUPPORT), yes)
|
||||
FRAMEWORK_CURRENT_DIR_NAME = $(FRAMEWORK_DIR_NAME)/Versions/Current
|
||||
else
|
||||
FRAMEWORK_CURRENT_DIR_NAME = $(FRAMEWORK_DIR_NAME)
|
||||
endif
|
||||
|
||||
FRAMEWORK_CURRENT_DIR = $(GNUSTEP_BUILD_DIR)/$(FRAMEWORK_CURRENT_DIR_NAME)
|
||||
FRAMEWORK_LIBRARY_DIR_NAME = $(FRAMEWORK_VERSION_DIR_NAME)/$(GNUSTEP_TARGET_LDIR)
|
||||
FRAMEWORK_LIBRARY_DIR = $(GNUSTEP_BUILD_DIR)/$(FRAMEWORK_LIBRARY_DIR_NAME)
|
||||
FRAMEWORK_CURRENT_LIBRARY_DIR_NAME = $(FRAMEWORK_CURRENT_DIR_NAME)/$(GNUSTEP_TARGET_LDIR)
|
||||
FRAMEWORK_CURRENT_LIBRARY_DIR = $(GNUSTEP_BUILD_DIR)/$(FRAMEWORK_CURRENT_LIBRARY_DIR_NAME)
|
||||
|
||||
ifneq ($(BUILD_DLL), yes)
|
||||
|
||||
FRAMEWORK_LIBRARY_FILE = lib$(GNUSTEP_INSTANCE)$(SHARED_LIBEXT)
|
||||
VERSION_FRAMEWORK_LIBRARY_FILE = $(FRAMEWORK_LIBRARY_FILE).$(VERSION)
|
||||
SONAME_FRAMEWORK_FILE = $(FRAMEWORK_LIBRARY_FILE).$(INTERFACE_VERSION)
|
||||
|
||||
else # BUILD_DLL
|
||||
|
||||
# When you build a DLL, you have to install it in a directory which is
|
||||
# in your PATH.
|
||||
ifeq ($(DLL_INSTALLATION_DIR),)
|
||||
DLL_INSTALLATION_DIR = $(GNUSTEP_TOOLS)/$(GNUSTEP_TARGET_LDIR)
|
||||
endif
|
||||
|
||||
# When we build a DLL, we also pass -DBUILD_lib{library_name}_DLL=1 to
|
||||
# the preprocessor. With the new DLL support, this is usually not
|
||||
# needed; but in some cases some symbols are difficult and have to be
|
||||
# exported/imported manually. For these cases, the library header
|
||||
# files can use this preprocessor define to know that they are
|
||||
# included during compilation of the library itself, or are being
|
||||
# imported by external code. Typically with the new DLL support if a
|
||||
# symbol can't be imported you have to mark it with
|
||||
# __declspec(dllimport) when the library is not being compiled.
|
||||
# __declspec(dllexport) is not particularly useful instead.
|
||||
|
||||
CLEAN_framework_NAME = $(subst -,_,$(GNUSTEP_INSTANCE))
|
||||
SHARED_CFLAGS += -DBUILD_$(CLEAN_framework_NAME)_DLL=1
|
||||
|
||||
# FRAMEWORK_LIBRARY_FILE is the import library, libRenaissance.dll.a
|
||||
FRAMEWORK_LIBRARY_FILE = lib$(GNUSTEP_INSTANCE)$(DLL_LIBEXT)$(LIBEXT)
|
||||
VERSION_FRAMEWORK_LIBRARY_FILE = $(FRAMEWORK_LIBRARY_FILE)
|
||||
SONAME_FRAMEWORK_FILE = $(FRAMEWORK_LIBRARY_FILE)
|
||||
|
||||
# LIB_LINK_DLL_FILE is the DLL library, Renaissance-0.dll. Include
|
||||
# the INTERFACE_VERSION in the DLL library name. Applications are
|
||||
# linked explicitly to this INTERFACE_VERSION of the library; this
|
||||
# works exactly in the same way as under Unix.
|
||||
LIB_LINK_DLL_FILE = $(GNUSTEP_INSTANCE)-$(subst .,_,$(INTERFACE_VERSION))$(DLL_LIBEXT)
|
||||
|
||||
FRAMEWORK_OBJ_EXT = $(DLL_LIBEXT)
|
||||
endif # BUILD_DLL
|
||||
|
||||
FRAMEWORK_FILE_NAME = $(FRAMEWORK_LIBRARY_DIR_NAME)/$(VERSION_FRAMEWORK_LIBRARY_FILE)
|
||||
FRAMEWORK_FILE = $(GNUSTEP_BUILD_DIR)/$(FRAMEWORK_FILE_NAME)
|
||||
|
||||
ifneq ($($(GNUSTEP_INSTANCE)_INSTALL_DIR),)
|
||||
FRAMEWORK_INSTALL_DIR = $($(GNUSTEP_INSTANCE)_INSTALL_DIR)
|
||||
endif
|
||||
|
||||
ifeq ($(FRAMEWORK_INSTALL_DIR),)
|
||||
FRAMEWORK_INSTALL_DIR = $(GNUSTEP_FRAMEWORKS)
|
||||
endif
|
||||
|
||||
#
|
||||
# Now prepare the variables which are used by target-dependent commands
|
||||
# defined in target.make
|
||||
#
|
||||
LIB_LINK_OBJ_DIR = $(FRAMEWORK_LIBRARY_DIR)
|
||||
LIB_LINK_VERSION_FILE = $(VERSION_FRAMEWORK_LIBRARY_FILE)
|
||||
LIB_LINK_SONAME_FILE = $(SONAME_FRAMEWORK_FILE)
|
||||
LIB_LINK_FILE = $(FRAMEWORK_LIBRARY_FILE)
|
||||
LIB_LINK_INSTALL_DIR = $(FRAMEWORK_INSTALL_DIR)/$(FRAMEWORK_LIBRARY_DIR_NAME)
|
||||
|
||||
ifneq ($(DYLIB_INSTALL_NAME_BASE),)
|
||||
LIB_LINK_INSTALL_NAME = $(DYLIB_INSTALL_NAME_BASE)/$(FRAMEWORK_FILE_NAME)
|
||||
else
|
||||
# Use a relative path for easy relocation.
|
||||
LIB_LINK_INSTALL_NAME = $(GNUSTEP_INSTANCE).framework/$(GNUSTEP_INSTANCE)
|
||||
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:: $(FRAMEWORK_HEADER_FILES) \
|
||||
build-framework-dirs
|
||||
|
||||
ifeq ($(MAKE_CURRENT_VERSION),yes)
|
||||
|
||||
# A target to build/reset the Current symlink to point to the newly
|
||||
# compiled framework. Only executed if MAKE_CURRENT_VERSION is yes,
|
||||
# and only executed if the symlink doesn't exist yet, or if
|
||||
# FRAMEWORK_VERSION_DIR is newer than the symlink. This is to avoid
|
||||
# rebuilding the symlink every single time, which is a waste of time.
|
||||
UPDATE_CURRENT_SYMLINK_RULE = $(FRAMEWORK_DIR)/Versions/Current
|
||||
$(FRAMEWORK_DIR)/Versions/Current: $(FRAMEWORK_VERSION_DIR)
|
||||
$(ECHO_NOTHING)cd $(FRAMEWORK_DIR)/Versions; \
|
||||
$(RM_LN_S) Current; \
|
||||
$(LN_S) $(CURRENT_VERSION_NAME) Current$(END_ECHO)
|
||||
|
||||
else
|
||||
UPDATE_CURRENT_SYMLINK_RULE =
|
||||
endif
|
||||
|
||||
# FIXME/TODO - the following rule is always executed. This is stupid.
|
||||
# We should have some decent dependencies so that it's not executed if
|
||||
# there is nothing to build. :-)
|
||||
|
||||
# Please note that test -h must be used instead of test -L because on
|
||||
# old Sun Solaris, test -h works but test -L does not.
|
||||
build-framework-dirs: $(DERIVED_SOURCES_DIR) \
|
||||
$(FRAMEWORK_LIBRARY_DIR) \
|
||||
$(FRAMEWORK_VERSION_DIR)/Headers \
|
||||
$(FRAMEWORK_VERSION_DIR)/Resources \
|
||||
$(FRAMEWORK_RESOURCE_DIRS) \
|
||||
$(UPDATE_CURRENT_SYMLINK_RULE)
|
||||
ifeq ($(FRAMEWORK_VERSION_SUPPORT), yes)
|
||||
$(ECHO_NOTHING)cd $(FRAMEWORK_DIR); \
|
||||
if [ ! -h "Resources" ]; then \
|
||||
$(RM_LN_S) Resources; \
|
||||
$(LN_S) Versions/Current/Resources Resources; \
|
||||
fi; \
|
||||
if [ ! -h "Headers" ]; then \
|
||||
$(RM_LN_S) Headers; \
|
||||
$(LN_S) Versions/Current/Headers Headers; \
|
||||
fi$(END_ECHO)
|
||||
endif
|
||||
$(ECHO_NOTHING)cd $(DERIVED_SOURCES_DIR); \
|
||||
if [ ! -h "$(HEADER_FILES_INSTALL_DIR)" ]; then \
|
||||
$(RM_LN_S) ./$(HEADER_FILES_INSTALL_DIR); \
|
||||
$(LN_S) ../$(FRAMEWORK_DIR_NAME)/Headers \
|
||||
./$(HEADER_FILES_INSTALL_DIR); \
|
||||
fi$(END_ECHO)
|
||||
|
||||
$(FRAMEWORK_LIBRARY_DIR):
|
||||
$(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO)
|
||||
|
||||
$(FRAMEWORK_VERSION_DIR)/Headers:
|
||||
$(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO)
|
||||
|
||||
$(DERIVED_SOURCES_DIR): $(DERIVED_SOURCES_DIR)/.stamp
|
||||
$(DERIVED_SOURCES_DIR)/.stamp:
|
||||
$(ECHO_CREATING)$(MKDIRS) $(DERIVED_SOURCES_DIR); \
|
||||
touch $@$(END_ECHO)
|
||||
|
||||
# Need to share this code with the headers code ... but how.
|
||||
$(FRAMEWORK_VERSION_DIR)/Headers/%.h: $(HEADER_FILES_DIR)/%.h $(FRAMEWORK_VERSION_DIR)/Headers
|
||||
$(ECHO_NOTHING)$(INSTALL_DATA) $< $@$(END_ECHO)
|
||||
|
||||
|
||||
OBJC_OBJ_FILES_TO_INSPECT = $(OBJC_OBJ_FILES) $(SUBPROJECT_OBJ_FILES)
|
||||
|
||||
# FIXME - We should not depend on GNUmakefile - rather we should use
|
||||
# Instance/Shared/stamp-string.make if we need to depend on the value
|
||||
# of some make variables. That would also detect a change in
|
||||
# FRAMEWORK_INSTALL_DIR from the command line, not currently covered
|
||||
# at the moment!
|
||||
#
|
||||
# To get the list of all classes, we use
|
||||
# $(EXTRACT_CLASS_NAMES_COMMAND), which is defined in target.make
|
||||
#
|
||||
#
|
||||
# The following rule will also build the DUMMY_FRAMEWORK_CLASS_LIST
|
||||
# file. This file is always created/deleted at the same time as the
|
||||
# DUMMY_FRAMEWORK_FILE.
|
||||
$(DUMMY_FRAMEWORK_FILE): $(DERIVED_SOURCES_DIR)/.stamp $(OBJ_FILES_TO_LINK) GNUmakefile
|
||||
$(ECHO_CREATING) classes=""; \
|
||||
for object_file in $(OBJC_OBJ_FILES_TO_INSPECT) __dummy__; do \
|
||||
if [ "$$object_file" != "__dummy__" ]; then \
|
||||
sym=`$(EXTRACT_CLASS_NAMES_COMMAND)`; \
|
||||
classes="$$classes $$sym"; \
|
||||
fi; \
|
||||
done; \
|
||||
classlist=""; \
|
||||
classarray=""; \
|
||||
for f in $$classes __dummy__ ; do \
|
||||
if [ "$$f" != "__dummy__" ]; then \
|
||||
if [ "$$classlist" = "" ]; then \
|
||||
classlist="@\"$$f\""; \
|
||||
classarray="(\"$$f\""; \
|
||||
else \
|
||||
classlist="$$classlist, @\"$$f\""; \
|
||||
classarray="$$classarray, \"$$f\""; \
|
||||
fi; \
|
||||
fi; \
|
||||
done; \
|
||||
if [ "$$classlist" = "" ]; then \
|
||||
classlist="NULL"; \
|
||||
classarray="()"; \
|
||||
else \
|
||||
classlist="$$classlist, NULL"; \
|
||||
classarray="$$classarray)"; \
|
||||
fi; \
|
||||
echo "$$classarray" > $(DUMMY_FRAMEWORK_CLASS_LIST); \
|
||||
echo "#include <Foundation/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 nil; }" >> $@; \
|
||||
echo "+ (NSString *)frameworkPath { return @\"$(FRAMEWORK_INSTALL_DIR)\"; }" >> $@; \
|
||||
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),gnu)
|
||||
FRAMEWORK_INFO_PLIST_FILE = Info-gnustep.plist
|
||||
else
|
||||
FRAMEWORK_INFO_PLIST_FILE = Info.plist
|
||||
endif
|
||||
|
||||
ifeq ($(FRAMEWORK_VERSION_SUPPORT), yes)
|
||||
build-framework: $(FRAMEWORK_FILE) \
|
||||
shared-instance-bundle-all \
|
||||
$(FRAMEWORK_VERSION_DIR)/Resources/$(FRAMEWORK_INFO_PLIST_FILE) \
|
||||
$(GNUSTEP_BUILD_DIR)/$(GNUSTEP_INSTANCE).framework/$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_INSTANCE)
|
||||
else
|
||||
build-framework: $(FRAMEWORK_FILE) \
|
||||
shared-instance-bundle-all \
|
||||
$(FRAMEWORK_VERSION_DIR)/Resources/$(FRAMEWORK_INFO_PLIST_FILE)
|
||||
endif
|
||||
|
||||
ifeq ($(findstring darwin, $(GNUSTEP_TARGET_OS)), darwin)
|
||||
# When building native frameworks on Apple, we need to create a
|
||||
# top-level symlink xxx.framework/xxx ---> the framework shared
|
||||
# library. On Darwin (non-Apple) we do this as well since we can partially
|
||||
# emulate frameworks (see the ld_lib_path.sh comments on this).
|
||||
|
||||
# Please note that the following keeps the top-level symlink pointing
|
||||
# to the framework in Current. This is always correct, even if what
|
||||
# we are compiling is not made the Current framework version, but if
|
||||
# what we are compiling is not made the Current framework version, I
|
||||
# think it's not our business to touch the Current stuff, so let's
|
||||
# ignore it. It's faster to ignore it anyway. ;-)
|
||||
$(GNUSTEP_BUILD_DIR)/$(GNUSTEP_INSTANCE).framework/$(GNUSTEP_TARGET_LDIR):
|
||||
$(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO)
|
||||
|
||||
$(GNUSTEP_BUILD_DIR)/$(GNUSTEP_INSTANCE).framework/$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_INSTANCE): $(GNUSTEP_BUILD_DIR)/$(GNUSTEP_INSTANCE).framework/$(GNUSTEP_TARGET_LDIR)/
|
||||
ifeq ($(MAKE_CURRENT_VERSION),yes)
|
||||
$(ECHO_NOTHING)cd $(GNUSTEP_BUILD_DIR)/$(GNUSTEP_INSTANCE).framework; \
|
||||
$(RM_LN_S) $(GNUSTEP_INSTANCE); \
|
||||
$(LN_S) Versions/Current/$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_INSTANCE) $(GNUSTEP_INSTANCE)$(END_ECHO)
|
||||
endif
|
||||
|
||||
else
|
||||
|
||||
# We create a top-level symlink (/copy)
|
||||
#
|
||||
# xxx.framework/{TARGET_LDIR}/xxx --> <the Current framework {TARGET_LDIR}/object file>
|
||||
#
|
||||
# And also
|
||||
#
|
||||
# xxx.framework/{TARGET_LDIR}/libxxx.so --> <the Current framework {TARGET_LDIR}/libxxx.so file>
|
||||
#
|
||||
# On Windows, we don't do any of this since there are no versions anyway.
|
||||
#
|
||||
# The reason for doing this is that you can link against the uninstalled framework
|
||||
# by just using -Lpath_to_the_framework/xxx.framework/$TARGET_LDIR
|
||||
#
|
||||
ifeq ($(FRAMEWORK_VERSION_SUPPORT), yes)
|
||||
$(GNUSTEP_BUILD_DIR)/$(GNUSTEP_INSTANCE).framework/$(GNUSTEP_TARGET_LDIR):
|
||||
$(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO)
|
||||
|
||||
$(GNUSTEP_BUILD_DIR)/$(GNUSTEP_INSTANCE).framework/$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_INSTANCE): $(GNUSTEP_BUILD_DIR)/$(GNUSTEP_INSTANCE).framework/$(GNUSTEP_TARGET_LDIR)/
|
||||
ifeq ($(MAKE_CURRENT_VERSION),yes)
|
||||
$(ECHO_NOTHING)cd $(GNUSTEP_BUILD_DIR)/$(GNUSTEP_INSTANCE).framework/$(GNUSTEP_TARGET_LDIR); \
|
||||
$(RM_LN_S) $(GNUSTEP_INSTANCE) $(FRAMEWORK_LIBRARY_FILE); \
|
||||
$(LN_S) `$(REL_PATH_SCRIPT) $(GNUSTEP_TARGET_LDIR) \
|
||||
Versions/Current/$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_INSTANCE)` \
|
||||
$(GNUSTEP_INSTANCE); \
|
||||
$(LN_S) `$(REL_PATH_SCRIPT) $(GNUSTEP_TARGET_LDIR) \
|
||||
Versions/Current/$(GNUSTEP_TARGET_LDIR)/$(FRAMEWORK_LIBRARY_FILE)` \
|
||||
$(FRAMEWORK_LIBRARY_FILE)$(END_ECHO)
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
ifneq ($(BUILD_DLL), yes)
|
||||
LIB_LINK_FRAMEWORK_FILE = $(LIB_LINK_FILE)
|
||||
else
|
||||
LIB_LINK_FRAMEWORK_FILE = $(LIB_LINK_DLL_FILE)
|
||||
endif
|
||||
|
||||
$(FRAMEWORK_FILE): $(DUMMY_FRAMEWORK_OBJ_FILE) $(OBJ_FILES_TO_LINK)
|
||||
$(ECHO_LINKING) \
|
||||
$(LIB_LINK_CMD) || $(RM) $(FRAMEWORK_FILE) ; \
|
||||
(cd $(LIB_LINK_OBJ_DIR); \
|
||||
$(RM_LN_S) $(GNUSTEP_INSTANCE); \
|
||||
$(LN_S) $(LIB_LINK_FRAMEWORK_FILE) $(GNUSTEP_INSTANCE)) \
|
||||
$(END_ECHO)
|
||||
|
||||
PRINCIPAL_CLASS = $(strip $($(GNUSTEP_INSTANCE)_PRINCIPAL_CLASS))
|
||||
|
||||
ifeq ($(PRINCIPAL_CLASS),)
|
||||
PRINCIPAL_CLASS = $(GNUSTEP_INSTANCE)
|
||||
endif
|
||||
|
||||
MAIN_MODEL_FILE = $(strip $(subst .gmodel,,$(subst .gorm,,$(subst .nib,,$($(GNUSTEP_INSTANCE)_MAIN_MODEL_FILE)))))
|
||||
|
||||
# FIXME: Use stamp.make to depend on the value of MAIN_MODEL_FILE and PRINCIPAL_CLASS
|
||||
|
||||
# FIXME: MacOSX frameworks should also merge xxxInfo.plist into them
|
||||
# MacOSX-S frameworks
|
||||
$(FRAMEWORK_VERSION_DIR)/Resources/Info.plist: $(FRAMEWORK_VERSION_DIR)/Resources
|
||||
$(ECHO_CREATING)(echo "{"; echo ' NOTE = "Automatically generated, do not edit!";'; \
|
||||
echo " NSExecutable = \"$(GNUSTEP_INSTANCE)\";"; \
|
||||
echo " NSMainNibFile = \"$(MAIN_MODEL_FILE)\";"; \
|
||||
echo " NSPrincipalClass = \"$(PRINCIPAL_CLASS)\";"; \
|
||||
echo "}") >$@$(END_ECHO)
|
||||
|
||||
# Depend on xxxInfo.plist but only if it exists.
|
||||
GNUSTEP_PLIST_DEPEND = $(wildcard $(GNUSTEP_INSTANCE)Info.plist)
|
||||
|
||||
# GNUstep frameworks
|
||||
$(FRAMEWORK_VERSION_DIR)/Resources/Info-gnustep.plist: \
|
||||
$(FRAMEWORK_VERSION_DIR)/Resources \
|
||||
$(DUMMY_FRAMEWORK_FILE) \
|
||||
$(GNUSTEP_PLIST_DEPEND)
|
||||
$(ECHO_CREATING)(echo "{"; echo ' NOTE = "Automatically generated, do not edit!";'; \
|
||||
echo " NSExecutable = \"$(GNUSTEP_INSTANCE)$(FRAMEWORK_OBJ_EXT)\";"; \
|
||||
echo " NSMainNibFile = \"$(MAIN_MODEL_FILE)\";"; \
|
||||
echo " NSPrincipalClass = \"$(PRINCIPAL_CLASS)\";"; \
|
||||
echo " Classes = "; \
|
||||
cat $(DUMMY_FRAMEWORK_CLASS_LIST); \
|
||||
echo " ;"; \
|
||||
echo "}") >$@$(END_ECHO)
|
||||
$(ECHO_NOTHING)if [ -r "$(GNUSTEP_INSTANCE)Info.plist" ]; then \
|
||||
plmerge $@ $(GNUSTEP_INSTANCE)Info.plist; \
|
||||
fi$(END_ECHO)
|
||||
|
||||
ifneq ($(BUILD_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); \
|
||||
$(RM_LN_S) $(HEADER_FILES_INSTALL_DIR); \
|
||||
$(LN_S) `$(REL_PATH_SCRIPT) $(GNUSTEP_HEADERS) $(FRAMEWORK_INSTALL_DIR)/$(FRAMEWORK_DIR_NAME)/Headers` $(HEADER_FILES_INSTALL_DIR); \
|
||||
$(END_ECHO)
|
||||
ifneq ($(CHOWN_TO),)
|
||||
$(ECHO_CHOWNING)cd $(GNUSTEP_HEADERS); \
|
||||
$(CHOWN) $(CHOWN_TO) $(HEADER_FILES_INSTALL_DIR); \
|
||||
$(END_ECHO)
|
||||
endif
|
||||
$(ECHO_NOTHING)cd $(GNUSTEP_LIBRARIES)/$(GNUSTEP_TARGET_LDIR); \
|
||||
$(RM_LN_S) $(FRAMEWORK_LIBRARY_FILE); \
|
||||
$(RM_LN_S) $(SONAME_FRAMEWORK_FILE); \
|
||||
$(RM_LN_S) $(VERSION_FRAMEWORK_LIBRARY_FILE); \
|
||||
$(LN_S) `$(REL_PATH_SCRIPT) $(GNUSTEP_LIBRARIES)/$(GNUSTEP_TARGET_LDIR) $(FRAMEWORK_INSTALL_DIR)/$(FRAMEWORK_CURRENT_LIBRARY_DIR_NAME)/$(FRAMEWORK_LIBRARY_FILE)` $(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 test -d "$(HEADER_FILES_INSTALL_DIR)"; then \
|
||||
rm -Rf $(HEADER_FILES_INSTALL_DIR); \
|
||||
fi; \
|
||||
$(MKINSTALLDIRS) $(HEADER_FILES_INSTALL_DIR); \
|
||||
cd $(FRAMEWORK_INSTALL_DIR)/$(FRAMEWORK_VERSION_DIR_NAME)/Headers ; \
|
||||
$(TAR) cfX - $(GNUSTEP_MAKEFILES)/tar-exclude-list . | (cd $(GNUSTEP_HEADERS)/$(HEADER_FILES_INSTALL_DIR); \
|
||||
$(TAR) xf - ); \
|
||||
$(END_ECHO)
|
||||
ifneq ($(CHOWN_TO),)
|
||||
$(ECHO_CHOWNING)cd $(GNUSTEP_HEADERS); \
|
||||
$(CHOWN) -R $(CHOWN_TO) $(HEADER_FILES_INSTALL_DIR); \
|
||||
$(END_ECHO)
|
||||
endif
|
||||
$(ECHO_NOTHING)$(INSTALL_PROGRAM) $(FRAMEWORK_LIBRARY_DIR)/$(LIB_LINK_DLL_FILE) \
|
||||
$(DLL_INSTALLATION_DIR)$(END_ECHO)
|
||||
$(ECHO_NOTHING)$(INSTALL_PROGRAM) $(FRAMEWORK_FILE_NAME) \
|
||||
$(GNUSTEP_LIBRARIES)/$(GNUSTEP_TARGET_LDIR)$(END_ECHO)
|
||||
|
||||
endif
|
||||
|
||||
$(DLL_INSTALLATION_DIR):
|
||||
$(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO)
|
||||
|
||||
# If Version support is disabled, then this directory is the same as
|
||||
# the Resources directory in Shared/bundle.make for which we already
|
||||
# have a rule.
|
||||
ifeq ($(FRAMEWORK_VERSION_SUPPORT), yes)
|
||||
$(FRAMEWORK_DIR)/Resources:
|
||||
$(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO)
|
||||
endif
|
||||
|
||||
$(FRAMEWORK_INSTALL_DIR):
|
||||
$(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO)
|
||||
|
||||
$(GNUSTEP_LIBRARIES)/$(GNUSTEP_TARGET_LDIR):
|
||||
$(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO)
|
||||
|
||||
$(GNUSTEP_HEADERS):
|
||||
$(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO)
|
||||
|
||||
ifneq ($(BUILD_DLL), yes)
|
||||
# NB: We use '$(RM_LN_S)' to remove the symlinks to insure
|
||||
# that we do not remove customized real directories.
|
||||
internal-framework-uninstall_::
|
||||
$(ECHO_UNINSTALLING)if [ "$(HEADER_FILES)" != "" ]; then \
|
||||
for file in $(HEADER_FILES) __done; do \
|
||||
if [ $$file != __done ]; then \
|
||||
rm -rf $(GNUSTEP_HEADERS)/$(HEADER_FILES_INSTALL_DIR)/$$file ; \
|
||||
fi; \
|
||||
done; \
|
||||
fi; \
|
||||
$(RM_LN_S) $(GNUSTEP_HEADERS)/$(HEADER_FILES_INSTALL_DIR) ; \
|
||||
rm -rf $(FRAMEWORK_INSTALL_DIR)/$(FRAMEWORK_DIR_NAME) ; \
|
||||
cd $(GNUSTEP_LIBRARIES)/$(GNUSTEP_TARGET_LDIR); \
|
||||
$(RM_LN_S) $(FRAMEWORK_LIBRARY_FILE); \
|
||||
$(RM_LN_S) $(SONAME_FRAMEWORK_FILE); \
|
||||
$(RM_LN_S) $(VERSION_FRAMEWORK_LIBRARY_FILE); \
|
||||
$(END_ECHO)
|
||||
else
|
||||
internal-framework-uninstall_::
|
||||
$(ECHO_UNINSTALLING)if [ "$(HEADER_FILES)" != "" ]; then \
|
||||
for file in $(HEADER_FILES) __done; do \
|
||||
if [ $$file != __done ]; then \
|
||||
rm -rf $(GNUSTEP_HEADERS)/$(HEADER_FILES_INSTALL_DIR)/$$file ; \
|
||||
fi; \
|
||||
done; \
|
||||
fi; \
|
||||
$(RM_LN_S) $(GNUSTEP_HEADERS)/$(HEADER_FILES_INSTALL_DIR) ; \
|
||||
rm -rf $(FRAMEWORK_INSTALL_DIR)/$(FRAMEWORK_DIR_NAME) ; \
|
||||
cd $(GNUSTEP_LIBRARIES)/$(GNUSTEP_TARGET_LDIR); \
|
||||
$(RM_LN_S) $(FRAMEWORK_LIBRARY_FILE); \
|
||||
cd $(DLL_INSTALLATION_DIR); \
|
||||
$(RM_LN_S) $(LIB_LINK_DLL_FILE); \
|
||||
$(END_ECHO)
|
||||
endif
|
||||
#
|
||||
# Cleaning targets
|
||||
#
|
||||
internal-framework-clean::
|
||||
$(ECHO_NOTHING)rm -rf \
|
||||
$(PSWRAP_C_FILES) $(PSWRAP_H_FILES) \
|
||||
$(FRAMEWORK_DIR) $(DERIVED_SOURCES_DIR)$(END_ECHO)
|
||||
|
||||
internal-framework-distclean::
|
||||
|
||||
include $(GNUSTEP_MAKEFILES)/Instance/Shared/strings.make
|
|
@ -1,185 +0,0 @@
|
|||
#
|
||||
# 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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 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
|
||||
GSWAPP_EXTENSION = gswa
|
||||
|
||||
.PHONY: internal-gswapp-all_ \
|
||||
internal-gswapp-install_ \
|
||||
internal-gswapp-uninstall_ \
|
||||
internal-gswapp-copy_into_dir
|
||||
|
||||
# Defined (5 March 2007) for backwards compatibility in case your
|
||||
# GNUmakefiles used it -- will be removed any time from 5 March 2011.
|
||||
GNUSTEP_GSWAPPS = $(GNUSTEP_WEB_APPS)
|
||||
|
||||
#
|
||||
# Determine where to install. By default, install into GNUSTEP_WEB_APPS.
|
||||
#
|
||||
ifneq ($($(GNUSTEP_INSTANCE)_INSTALL_DIR),)
|
||||
GSWAPP_INSTALL_DIR = $($(GNUSTEP_INSTANCE)_INSTALL_DIR)
|
||||
endif
|
||||
|
||||
ifeq ($(GSWAPP_INSTALL_DIR),)
|
||||
GSWAPP_INSTALL_DIR = $(GNUSTEP_WEB_APPS)
|
||||
endif
|
||||
|
||||
# Libraries that go before the WO libraries
|
||||
ALL_GSW_LIBS = \
|
||||
$(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)
|
||||
|
||||
GSWAPP_DIR_NAME = $(GNUSTEP_INSTANCE:=.$(GSWAPP_EXTENSION))
|
||||
GSWAPP_DIR = $(GNUSTEP_BUILD_DIR)/$(GSWAPP_DIR_NAME)
|
||||
|
||||
#
|
||||
# Now include the standard resource-bundle routines from Shared/bundle.make
|
||||
#
|
||||
|
||||
ifneq ($(FOUNDATION_LIB), apple)
|
||||
# GNUstep bundle
|
||||
GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH = $(GSWAPP_DIR)/Resources
|
||||
GSWAPP_INFO_PLIST_FILE = $(GSWAPP_DIR)/Resources/Info-gnustep.plist
|
||||
else
|
||||
# OSX bundle
|
||||
GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH = $(GSWAPP_DIR)/Contents/Resources
|
||||
GSWAPP_INFO_PLIST_FILE = $(GSWAPP_DIR)/Contents/Info.plist
|
||||
endif
|
||||
GNUSTEP_SHARED_BUNDLE_INSTALL_NAME = $(GSWAPP_DIR_NAME)
|
||||
GNUSTEP_SHARED_BUNDLE_INSTALL_LOCAL_PATH = .
|
||||
GNUSTEP_SHARED_BUNDLE_INSTALL_PATH = $(GSWAPP_INSTALL_DIR)
|
||||
include $(GNUSTEP_MAKEFILES)/Instance/Shared/bundle.make
|
||||
|
||||
ifneq ($(FOUNDATION_LIB), apple)
|
||||
GSWAPP_FILE_NAME = $(GSWAPP_DIR_NAME)/$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_INSTANCE)$(EXEEXT)
|
||||
else
|
||||
GSWAPP_FILE_NAME = $(GSWAPP_DIR_NAME)/Contents/MacOS/$(GNUSTEP_INSTANCE)$(EXEEXT)
|
||||
endif
|
||||
|
||||
GSWAPP_FILE = $(GNUSTEP_BUILD_DIR)/$(GSWAPP_FILE_NAME)
|
||||
|
||||
#
|
||||
# Internal targets
|
||||
#
|
||||
|
||||
$(GSWAPP_FILE): $(OBJ_FILES_TO_LINK)
|
||||
$(ECHO_LINKING)$(LD) $(ALL_LDFLAGS) $(CC_LDFLAGS) -o $(LDOUT)$@ \
|
||||
$(OBJ_FILES_TO_LINK) $(ALL_GSW_LIBS)$(END_ECHO)
|
||||
|
||||
#
|
||||
# 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)))))
|
||||
|
||||
# Depend on xxxInfo.plist but only if it exists.
|
||||
GNUSTEP_PLIST_DEPEND = $(wildcard $(GNUSTEP_INSTANCE)Info.plist)
|
||||
|
||||
$(GSWAPP_INFO_PLIST_FILE): $(GNUSTEP_PLIST_DEPEND)
|
||||
$(ECHO_CREATING)(echo "{"; echo ' NOTE = "Automatically generated, do not edit!";'; \
|
||||
echo " NSExecutable = \"$(GNUSTEP_INSTANCE)\";"; \
|
||||
echo " NSPrincipalClass = \"$(PRINCIPAL_CLASS)\";"; \
|
||||
if [ "$(HAS_GSWCOMPONENTS)" != "" ]; then \
|
||||
echo " HasGSWComponents = \"$(HAS_GSWCOMPONENTS)\";"; \
|
||||
fi; \
|
||||
echo " NSMainNibFile = \"$(MAIN_MODEL_FILE)\";"; \
|
||||
if [ -r "$(GNUSTEP_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
|
|
@ -1,266 +0,0 @@
|
|||
#
|
||||
# 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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 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_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 = $(ALL_LIB_DIRS) $(ALL_GSWBUNDLE_LIBS)
|
||||
|
||||
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
|
|
@ -1,98 +0,0 @@
|
|||
#
|
||||
# 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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
# Why using Java if you can use Objective-C ...
|
||||
# Anyway if you really want it, here we go.
|
||||
|
||||
#
|
||||
# The name of the tools is in the JAVA_TOOL_NAME variable.
|
||||
# The main class (the one implementing main) is in the
|
||||
# xxx_PRINCIPAL_CLASS variable.
|
||||
#
|
||||
|
||||
ifeq ($(RULES_MAKE_LOADED),)
|
||||
include $(GNUSTEP_MAKEFILES)/rules.make
|
||||
endif
|
||||
|
||||
.PHONY: internal-java_tool-all_ \
|
||||
internal-java_tool-clean \
|
||||
internal-java_tool-distclean \
|
||||
internal-java_tool-install_ \
|
||||
internal-java_tool-uninstall_ \
|
||||
_FORCE
|
||||
|
||||
# This is the directory where the shell wrapper gets installed. You
|
||||
# want this on your path! If you don't specify a directory they will
|
||||
# get installed in $(GNUSTEP_LOCAL_ROOT)/Tools/.
|
||||
ifeq ($(JAVA_TOOL_INSTALLATION_DIR),)
|
||||
JAVA_TOOL_INSTALLATION_DIR = $(GNUSTEP_TOOLS)
|
||||
endif
|
||||
|
||||
# This is the directory where the java classes get installed.
|
||||
# Normally this is /usr/GNUstep/Local/Library/Libraries/Java/
|
||||
ifeq ($(JAVA_INSTALLATION_DIR),)
|
||||
JAVA_INSTALLATION_DIR = $(GNUSTEP_JAVA)
|
||||
endif
|
||||
|
||||
GNUSTEP_SHARED_JAVA_INSTALLATION_DIR = $(JAVA_INSTALLATION_DIR)
|
||||
include $(GNUSTEP_MAKEFILES)/Instance/Shared/java.make
|
||||
|
||||
internal-java_tool-all_:: shared-instance-java-all
|
||||
|
||||
internal-java_tool-install_:: shared-instance-java-install \
|
||||
$(JAVA_TOOL_INSTALLATION_DIR)/$(GNUSTEP_INSTANCE)
|
||||
|
||||
PRINCIPAL_CLASS = $(strip $($(GNUSTEP_INSTANCE)_PRINCIPAL_CLASS))
|
||||
|
||||
ifeq ($(PRINCIPAL_CLASS),)
|
||||
$(warning You must specify PRINCIPAL_CLASS, which should be set to the full classname)
|
||||
# But then, we are good, and try guessing. This will only work if the class
|
||||
# is not in a package though, which sounds unlikely.
|
||||
PRINCIPAL_CLASS = $(word 1 $(JAVA_OBJ_FILES))
|
||||
endif
|
||||
|
||||
# Remove an eventual extension (.class or .java) from PRINCIPAL_CLASS;
|
||||
# only take the first word of it
|
||||
NORMALIZED_PRINCIPAL_CLASS = $(basename $(word 1 $(PRINCIPAL_CLASS)))
|
||||
|
||||
# Escape '/' so it can be passes to sed
|
||||
ESCAPED_PRINCIPAL_CLASS = $(subst /,\/,$(PRINCIPAL_CLASS))
|
||||
|
||||
# Always rebuild this because if the PRINCIPAL_CLASS changes...
|
||||
$(JAVA_TOOL_INSTALLATION_DIR)/$(GNUSTEP_INSTANCE): _FORCE
|
||||
$(ECHO_NOTHING)sed -e 's/JAVA_OBJ_FILE/$(ESCAPED_PRINCIPAL_CLASS)/g' \
|
||||
$(GNUSTEP_MAKEFILES)/java-executable.template \
|
||||
> $(JAVA_TOOL_INSTALLATION_DIR)/$(GNUSTEP_INSTANCE); \
|
||||
chmod a+x $(JAVA_TOOL_INSTALLATION_DIR)/$(GNUSTEP_INSTANCE)$(END_ECHO)
|
||||
ifneq ($(CHOWN_TO),)
|
||||
$(ECHO_CHOWNING)$(CHOWN) $(CHOWN_TO) \
|
||||
$(JAVA_TOOL_INSTALLATION_DIR)/$(GNUSTEP_INSTANCE)$(END_ECHO)
|
||||
endif
|
||||
|
||||
_FORCE::
|
||||
|
||||
|
||||
internal-java_tool-uninstall_:: shared-instance-java-uninstall
|
||||
$(ECHO_UNINSTALLING)rm -f $(JAVA_TOOL_INSTALLATION_DIR)/$(GNUSTEP_INSTANCE)$(END_ECHO)
|
||||
|
||||
internal-java_tool-clean:: shared-instance-java-clean
|
||||
|
||||
internal-java_tool-distclean::
|
|
@ -1,96 +0,0 @@
|
|||
#
|
||||
# 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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
ifeq ($(RULES_MAKE_LOADED),)
|
||||
include $(GNUSTEP_MAKEFILES)/rules.make
|
||||
endif
|
||||
|
||||
#
|
||||
# You can compile any set of java classes, it does not need to be strictly
|
||||
# a single package in the java sense. Please put a single class in each
|
||||
# source file. Multiple classes in a single source file are not supported.
|
||||
#
|
||||
# The name of the Java package is in the JAVA_PACKAGE_NAME variable.
|
||||
# The java files to be compiled are in the xxx_JAVA_FILES variable;
|
||||
# they should be specified in full relative path, such as:
|
||||
# test_JAVA_FILES = gnu/gnustep/base/NSArray.java
|
||||
#
|
||||
# The relative path is important because things will be installed
|
||||
# in $(JAVA_INSTALL_DIR)/{relative_path}; for example,
|
||||
# the file above would be installed in
|
||||
# ${JAVA_INSTALL_DIR)/gnu/gnustep/base/NSArray.class
|
||||
#
|
||||
# JAVA_INSTALL_DIR contains the directory where you want to
|
||||
# install your classes - it defaults to $(GNUSTEP_JAVA), which is
|
||||
# $(GNUSTEP_LOCAL_ROOT)/Library/Libraries/Java/.
|
||||
#
|
||||
# If you have all your files in a directory but want them to be
|
||||
# installed with a different relative path, you can simply redefine
|
||||
# JAVA_INSTALL_DIR, as in the following example -
|
||||
# JAVA_INSTALL_DIR = $(GNUSTEP_JAVA)/gnu/gnustep/base/
|
||||
#
|
||||
# If you have java sources to be processed throught JAVAH to create
|
||||
# JNI headers, specify the files in xxx_JAVA_JNI_FILES. The headers
|
||||
# will be placed together with the source file (example: the header of
|
||||
# gnu/gnustep/base/NSObject.java will be created as
|
||||
# gnu/gnustep/base/NSObject.h) These headers are not installed.
|
||||
#
|
||||
# If you have properties file to install, put them in the
|
||||
# xxx_JAVA_PROPERTIES_FILES
|
||||
|
||||
.PHONY: internal-java_package-all_ \
|
||||
internal-java_package-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
|
||||
|
|
@ -1,343 +0,0 @@
|
|||
# -*-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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 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
|
||||
#
|
||||
# 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)
|
||||
LIBRARY_NAME_WITHOUT_LIB = $(patsubst lib%,%,$(GNUSTEP_INSTANCE))
|
||||
else
|
||||
LIBRARY_NAME_WITH_LIB = lib$(GNUSTEP_INSTANCE)
|
||||
LIBRARY_NAME_WITHOUT_LIB = $(GNUSTEP_INSTANCE)
|
||||
endif
|
||||
|
||||
# On windows, this is unfortunately required.
|
||||
ifeq ($(BUILD_DLL), yes)
|
||||
LINK_AGAINST_ALL_LIBS = yes
|
||||
endif
|
||||
|
||||
ifeq ($(LINK_AGAINST_ALL_LIBS), yes)
|
||||
# Link against all libs ... but not the one we're compiling! (this can
|
||||
# happen, for example, with gnustep-gui)
|
||||
LIBRARIES_DEPEND_UPON += $(filter-out -l$(LIBRARY_NAME_WITHOUT_LIB), \
|
||||
$(ADDITIONAL_GUI_LIBS) $(AUXILIARY_GUI_LIBS) \
|
||||
$(BACKEND_LIBS) \
|
||||
$(GUI_LIBS) $(ADDITIONAL_TOOL_LIBS) $(AUXILIARY_TOOL_LIBS) \
|
||||
$(FND_LIBS) $(ADDITIONAL_OBJC_LIBS) $(AUXILIARY_OBJC_LIBS) $(OBJC_LIBS) \
|
||||
$(SYSTEM_LIBS) $(TARGET_SYSTEM_LIBS))
|
||||
endif
|
||||
|
||||
INTERNAL_LIBRARIES_DEPEND_UPON = \
|
||||
$(ALL_LIB_DIRS) \
|
||||
$(LIBRARIES_DEPEND_UPON)
|
||||
|
||||
ifeq ($(shared), yes)
|
||||
|
||||
# Allow the user GNUmakefile to define xxx_INTERFACE_VERSION to
|
||||
# replace the default INTERFACE_VERSION for this library.
|
||||
|
||||
# Effect of the value of xxx_INTERFACE_VERSION -
|
||||
|
||||
# suppose your library is libgnustep-base.1.0.0 - if you do nothing,
|
||||
# INTERFACE_VERSION=1, and we prepare the symlink
|
||||
# libgnustep-base.so.1 --> libgnustep-base.so.1.0.0 and tell the
|
||||
# linker that it should remember that any application compiled
|
||||
# against this library need to use version .1 of the library. So at
|
||||
# runtime, the dynamical linker will search for libgnustep-base.so.1.
|
||||
# This is important if you install multiple versions of the same
|
||||
# library. The default is that if you install a new version of a
|
||||
# library with the same major number, the new version replaces the
|
||||
# old one, and all applications which were using the old one now use
|
||||
# the new one. If you install a library with a different major
|
||||
# number, the old apps will still use the old library, while newly
|
||||
# compiled apps will use the new one.
|
||||
|
||||
# If you redefine xxx_INTERFACE_VERSION to be for example 1.0, then
|
||||
# we prepare the symlink libgnustep-base.so.1.0 -->
|
||||
# libgnustep-base.so.1.0.0 instead, and tell the linker to remember
|
||||
# 1.0. So at runtime, the dynamic linker will search for
|
||||
# libgnustep-base.so.1.0. The effect of changing
|
||||
# xxx_INTERFACE_VERSION to major.minor as in this example is that if
|
||||
# you install a new version with the same major.minor version, that
|
||||
# replaces the old one also for old applications, but if you install
|
||||
# a new library with the same major version but a *different* minor
|
||||
# version, that is used in new apps, but old apps still use the old
|
||||
# version.
|
||||
|
||||
ifeq ($($(GNUSTEP_INSTANCE)_INTERFACE_VERSION),)
|
||||
|
||||
# Backwards compatibility: xxx_SOVERSION was the old name for
|
||||
# xxx_INTERFACE_VERSION. There was no support for setting SOVERSION
|
||||
# (without xxx_), like there is no support for setting
|
||||
# INTERFACE_VERSION (without xxx_) now.
|
||||
|
||||
# TODO: Remove xxx_SOVERSION at some point in the next few
|
||||
# years. NB: Likely the only user of this is Helge Hess, so once he's
|
||||
# upgraded, let's remove the backwards compatibility code. :-)
|
||||
ifneq ($($(GNUSTEP_INSTANCE)_SOVERSION),)
|
||||
INTERFACE_VERSION = $($(GNUSTEP_INSTANCE)_SOVERSION)
|
||||
else
|
||||
|
||||
# This is the current code - by default, if VERSION is
|
||||
# 1.0.0, INTERFACE_VERSION is 1
|
||||
INTERFACE_VERSION = $(word 1,$(subst ., ,$(VERSION)))
|
||||
|
||||
endif
|
||||
else
|
||||
INTERFACE_VERSION = $($(GNUSTEP_INSTANCE)_INTERFACE_VERSION)
|
||||
endif
|
||||
|
||||
ifneq ($(BUILD_DLL),yes)
|
||||
|
||||
LIBRARY_FILE = $(LIBRARY_NAME_WITH_LIB)$(SHARED_LIBEXT)
|
||||
VERSION_LIBRARY_FILE = $(LIBRARY_FILE).$(VERSION)
|
||||
SONAME_LIBRARY_FILE = $(LIBRARY_FILE).$(INTERFACE_VERSION)
|
||||
|
||||
else # BUILD_DLL
|
||||
|
||||
# When you build a DLL, you have to install it in a directory which is
|
||||
# in your PATH.
|
||||
ifeq ($(DLL_INSTALLATION_DIR),)
|
||||
DLL_INSTALLATION_DIR = $(GNUSTEP_TOOLS)/$(GNUSTEP_TARGET_LDIR)
|
||||
endif
|
||||
|
||||
# When we build a DLL, we also pass -DBUILD_lib{library_name}_DLL=1 to
|
||||
# the preprocessor. With the new DLL support, this is usually not
|
||||
# needed; but in some cases some symbols are difficult and have to be
|
||||
# exported/imported manually. For these cases, the library header
|
||||
# files can use this preprocessor define to know that they are
|
||||
# included during compilation of the library itself, or are being
|
||||
# imported by external code. Typically with the new DLL support if a
|
||||
# symbol can't be imported you have to mark it with
|
||||
# __declspec(dllimport) when the library is not being compiled.
|
||||
# __declspec(dllexport) is not particularly useful instead.
|
||||
|
||||
CLEAN_library_NAME = $(subst -,_,$(LIBRARY_NAME_WITH_LIB))
|
||||
SHARED_CFLAGS += -DBUILD_$(CLEAN_library_NAME)_DLL=1
|
||||
|
||||
# LIBRARY_FILE is the import library, libgnustep-base.dll.a
|
||||
LIBRARY_FILE = $(LIBRARY_NAME_WITH_LIB)$(DLL_LIBEXT)$(LIBEXT)
|
||||
VERSION_LIBRARY_FILE = $(LIBRARY_FILE)
|
||||
SONAME_LIBRARY_FILE = $(LIBRARY_FILE)
|
||||
|
||||
# LIB_LINK_DLL_FILE is the DLL library, gnustep-base-1.dll. Include
|
||||
# the INTERFACE_VERSION in the DLL library name. Applications are
|
||||
# linked explicitly to this INTERFACE_VERSION of the library; this
|
||||
# works exactly in the same way as under Unix.
|
||||
LIB_LINK_DLL_FILE = $(LIBRARY_NAME_WITHOUT_LIB)-$(subst .,_,$(INTERFACE_VERSION))$(DLL_LIBEXT)
|
||||
endif # BUILD_DLL
|
||||
|
||||
else # following code for static libs
|
||||
|
||||
LIBRARY_FILE = $(LIBRARY_NAME_WITH_LIB)$(LIBEXT)
|
||||
VERSION_LIBRARY_FILE = $(LIBRARY_FILE)
|
||||
SONAME_LIBRARY_FILE = $(LIBRARY_FILE)
|
||||
|
||||
endif # shared
|
||||
|
||||
#
|
||||
# Now prepare the variables which are used by target-dependent commands
|
||||
# defined in target.make
|
||||
#
|
||||
LIB_LINK_OBJ_DIR = $(GNUSTEP_OBJ_DIR)
|
||||
LIB_LINK_VERSION_FILE = $(VERSION_LIBRARY_FILE)
|
||||
LIB_LINK_SONAME_FILE = $(SONAME_LIBRARY_FILE)
|
||||
LIB_LINK_FILE = $(LIBRARY_FILE)
|
||||
LIB_LINK_INSTALL_NAME = $(SONAME_LIBRARY_FILE)
|
||||
LIB_LINK_INSTALL_DIR = $(FINAL_LIBRARY_INSTALL_DIR)
|
||||
|
||||
#
|
||||
# Internal targets
|
||||
#
|
||||
|
||||
#
|
||||
# Compilation targets
|
||||
#
|
||||
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)
|
||||
|
||||
#
|
||||
# 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)
|
||||
|
||||
internal-install-lib::
|
||||
$(ECHO_INSTALLING)if [ -f $(GNUSTEP_OBJ_DIR)/$(VERSION_LIBRARY_FILE) ]; then \
|
||||
$(INSTALL_PROGRAM) $(GNUSTEP_OBJ_DIR)/$(VERSION_LIBRARY_FILE) \
|
||||
$(FINAL_LIBRARY_INSTALL_DIR) ; \
|
||||
$(AFTER_INSTALL_LIBRARY_CMD) \
|
||||
fi$(END_ECHO)
|
||||
|
||||
ifeq ($(BUILD_DLL),yes)
|
||||
# For DLLs, also install the DLL file.
|
||||
internal-install-lib::
|
||||
$(ECHO_INSTALLING)if [ -f $(GNUSTEP_OBJ_DIR)/$(LIB_LINK_DLL_FILE) ]; then \
|
||||
$(INSTALL_PROGRAM) $(GNUSTEP_OBJ_DIR)/$(LIB_LINK_DLL_FILE) \
|
||||
$(DLL_INSTALLATION_DIR) ; \
|
||||
fi$(END_ECHO)
|
||||
endif
|
||||
|
||||
internal-library-uninstall_:: shared-instance-headers-uninstall
|
||||
$(ECHO_UNINSTALLING)rm -f $(FINAL_LIBRARY_INSTALL_DIR)/$(VERSION_LIBRARY_FILE) \
|
||||
$(FINAL_LIBRARY_INSTALL_DIR)/$(LIBRARY_FILE) \
|
||||
$(FINAL_LIBRARY_INSTALL_DIR)/$(SONAME_LIBRARY_FILE)$(END_ECHO)
|
||||
|
||||
ifeq ($(BUILD_DLL),yes)
|
||||
# For DLLs, also remove the DLL file.
|
||||
internal-library-uninstall_::
|
||||
$(ECHO_UNINSTALLING)rm -f $(DLL_INSTALLATION_DIR)/$(LIB_LINK_DLL_FILE)$(END_ECHO)
|
||||
endif
|
||||
|
||||
#
|
||||
# Testing targets
|
||||
#
|
||||
internal-library-check::
|
||||
|
||||
#
|
||||
# If the user makefile contains the command
|
||||
# xxx_HAS_RESOURCE_BUNDLE = yes
|
||||
# then we need to build a resource bundle for the library, and install it.
|
||||
# You can then add resources to the library, any sort of, with the usual
|
||||
# xxx_RESOURCE_FILES, xxx_LOCALIZED_RESOURCE_FILES, xxx_LANGUAGES, etc.
|
||||
# The library resource bundle (and all resources inside it) can be
|
||||
# accessed at runtime very comfortably, by using gnustep-base's
|
||||
# [NSBundle +bundleForLibrary:version:].
|
||||
#
|
||||
ifeq ($($(GNUSTEP_INSTANCE)_HAS_RESOURCE_BUNDLE),yes)
|
||||
|
||||
# Include the rules to build resource bundles
|
||||
GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH = $(GNUSTEP_BUILD_DIR)/$(GNUSTEP_INSTANCE)/Versions/$(INTERFACE_VERSION)/Resources/
|
||||
|
||||
# We want to install gnustep-base resources into
|
||||
# GNUSTEP_LIBRARY/Libraries/gnustep-base/Versions/1.14/Resources/
|
||||
# This is similar to a framework resource directory, which might be
|
||||
# helpful in the future.
|
||||
GNUSTEP_SHARED_BUNDLE_INSTALL_NAME = Resources
|
||||
GNUSTEP_SHARED_BUNDLE_INSTALL_LOCAL_PATH = $(GNUSTEP_INSTANCE)/Versions/$(INTERFACE_VERSION)
|
||||
GNUSTEP_SHARED_BUNDLE_INSTALL_PATH = $(GNUSTEP_LIBRARY)/Libraries/$(GNUSTEP_INSTANCE)/Versions/$(INTERFACE_VERSION)
|
||||
|
||||
include $(GNUSTEP_MAKEFILES)/Instance/Shared/bundle.make
|
||||
|
||||
internal-library-all_:: shared-instance-bundle-all
|
||||
internal-library-copy_into_dir:: shared-instance-bundle-copy_into_dir
|
||||
|
||||
$(GNUSTEP_LIBRARY)/Libraries/$(GNUSTEP_INSTANCE)/Versions/$(INTERFACE_VERSION):
|
||||
$(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO)
|
||||
|
||||
internal-library-install_:: $(GNUSTEP_LIBRARY)/Libraries/$(GNUSTEP_INSTANCE)/Versions/$(INTERFACE_VERSION) \
|
||||
shared-instance-bundle-install
|
||||
|
||||
internal-library-uninstall:: shared-instance-bundle-uninstall
|
||||
|
||||
endif
|
||||
|
||||
include $(GNUSTEP_MAKEFILES)/Instance/Shared/strings.make
|
|
@ -1,72 +0,0 @@
|
|||
#
|
||||
# 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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
#
|
||||
# The name of the ObjC program(s) is in the OBJC_PROGRAM_NAME variable.
|
||||
#
|
||||
# xxx We need to prefix the target name when cross-compiling
|
||||
#
|
||||
|
||||
ifeq ($(RULES_MAKE_LOADED),)
|
||||
include $(GNUSTEP_MAKEFILES)/rules.make
|
||||
endif
|
||||
|
||||
.PHONY: internal-objc_program-all_ \
|
||||
internal-objc_program-install_ \
|
||||
internal-objc_program-uninstall_
|
||||
|
||||
# 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 = \
|
||||
$(ALL_LIB_DIRS) \
|
||||
$(ADDITIONAL_OBJC_LIBS) $(AUXILIARY_OBJC_LIBS) $(OBJC_LIBS) \
|
||||
$(TARGET_SYSTEM_LIBS)
|
||||
|
||||
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) $(CC_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
|
|
@ -1,170 +0,0 @@
|
|||
#
|
||||
# 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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 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 windows, this is unfortunately required.
|
||||
ifeq ($(BUILD_DLL), yes)
|
||||
LINK_PALETTE_AGAINST_ALL_LIBS = yes
|
||||
endif
|
||||
|
||||
# On Apple, two-level namespaces require all symbols in bundles
|
||||
# to be resolved at link time. Also on gnu/darwin
|
||||
ifeq ($(CC_BUNDLE), yes)
|
||||
LINK_PALETTE_AGAINST_ALL_LIBS = yes
|
||||
endif
|
||||
|
||||
ifeq ($(LINK_PALETTE_AGAINST_ALL_LIBS), yes)
|
||||
PALETTE_LIBS += $(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 = \
|
||||
$(ALL_LIB_DIRS) \
|
||||
$(PALETTE_LIBS)
|
||||
|
||||
ifeq ($(BUILD_DLL),yes)
|
||||
PALETTE_OBJ_EXT = $(DLL_LIBEXT)
|
||||
endif
|
||||
|
||||
PALETTE_DIR_NAME = $(GNUSTEP_INSTANCE).palette
|
||||
PALETTE_DIR = $(GNUSTEP_BUILD_DIR)/$(PALETTE_DIR_NAME)
|
||||
PALETTE_FILE_NAME = $(PALETTE_DIR_NAME)/$(GNUSTEP_TARGET_LDIR)/$(PALETTE_NAME)$(PALETTE_OBJ_EXT)
|
||||
PALETTE_FILE = $(GNUSTEP_BUILD_DIR)/$(PALETTE_FILE_NAME)
|
||||
|
||||
ifneq ($($(GNUSTEP_INSTANCE)_INSTALL_DIR),)
|
||||
PALETTE_INSTALL_DIR = $($(GNUSTEP_INSTANCE)_INSTALL_DIR)
|
||||
endif
|
||||
|
||||
ifeq ($(PALETTE_INSTALL_DIR),)
|
||||
PALETTE_INSTALL_DIR = $(GNUSTEP_PALETTES)
|
||||
endif
|
||||
|
||||
GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH = $(PALETTE_DIR)/Resources
|
||||
|
||||
GNUSTEP_SHARED_BUNDLE_INSTALL_NAME = $(PALETTE_DIR_NAME)
|
||||
GNUSTEP_SHARED_BUNDLE_INSTALL_LOCAL_PATH = .
|
||||
GNUSTEP_SHARED_BUNDLE_INSTALL_PATH = $(PALETTE_INSTALL_DIR)
|
||||
include $(GNUSTEP_MAKEFILES)/Instance/Shared/bundle.make
|
||||
|
||||
internal-palette-all_:: $(GNUSTEP_OBJ_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)
|
||||
|
||||
# Standard bundle build using the rules for this target
|
||||
$(PALETTE_FILE) : $(OBJ_FILES_TO_LINK)
|
||||
$(ECHO_LINKING)$(BUNDLE_LD) $(BUNDLE_LDFLAGS) \
|
||||
-o $(LDOUT)$(PALETTE_FILE) \
|
||||
$(OBJ_FILES_TO_LINK) $(ALL_LDFLAGS) \
|
||||
$(BUNDLE_LIBFLAGS) $(ALL_PALETTE_LIBS)$(END_ECHO)
|
||||
|
||||
PRINCIPAL_CLASS = $(strip $($(GNUSTEP_INSTANCE)_PRINCIPAL_CLASS))
|
||||
|
||||
ifeq ($(PRINCIPAL_CLASS),)
|
||||
PRINCIPAL_CLASS = $(GNUSTEP_INSTANCE)
|
||||
endif
|
||||
|
||||
PALETTE_ICON = $($(GNUSTEP_INSTANCE)_PALETTE_ICON)
|
||||
|
||||
ifeq ($(PALETTE_ICON),)
|
||||
PALETTE_ICON = $(GNUSTEP_INSTANCE)
|
||||
endif
|
||||
|
||||
# Depend on xxxInfo.plist but only if it exists.
|
||||
GNUSTEP_PLIST_DEPEND = $(wildcard $(GNUSTEP_INSTANCE)Info.plist)
|
||||
|
||||
# FIXME - xxxInfo.plist in this case is not really a plist!
|
||||
|
||||
$(PALETTE_DIR)/Resources/Info-gnustep.plist: $(PALETTE_DIR)/Resources $(GNUSTEP_PLIST_DEPEND)
|
||||
$(ECHO_CREATING)(echo "{"; echo ' NOTE = "Automatically generated, do not edit!";'; \
|
||||
echo " NSExecutable = \"$(PALETTE_NAME)$(PALETTE_OBJ_EXT)\";"; \
|
||||
if [ -r "$(GNUSTEP_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)))))
|
||||
|
||||
# Depend on xxxpalette.table but only if it exists.
|
||||
PALETTE_TABLE_DEPEND = $(wildcard $(GNUSTEP_INSTANCE)palette.table)
|
||||
|
||||
# FIXME - use stamp.make to depend on the value of the variables
|
||||
# MAIN_MODEL_FILE, PRINCIPAL_CLASS and PALETTE_ICON
|
||||
$(PALETTE_DIR)/Resources/palette.table: $(PALETTE_DIR)/Resources $(PALETTE_TABLE_DEPEND)
|
||||
$(ECHO_CREATING)(echo "{";\
|
||||
echo ' NOTE = "Automatically generated, do not edit!";'; \
|
||||
echo " NibFile = \"$(MAIN_MODEL_FILE)\";"; \
|
||||
echo " Class = \"$(PRINCIPAL_CLASS)\";"; \
|
||||
echo " Icon = \"$(PALETTE_ICON)\";"; \
|
||||
echo "}"; \
|
||||
if [ -r "$(GNUSTEP_INSTANCE)palette.table" ]; then \
|
||||
cat $(GNUSTEP_INSTANCE)palette.table; \
|
||||
fi; \
|
||||
) >$@$(END_ECHO)
|
||||
|
||||
internal-palette-copy_into_dir:: shared-instance-bundle-copy_into_dir
|
||||
|
||||
#
|
||||
# Install targets
|
||||
#
|
||||
$(PALETTE_INSTALL_DIR):
|
||||
$(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO)
|
||||
|
||||
internal-palette-install_:: shared-instance-bundle-install
|
||||
ifeq ($(strip),yes)
|
||||
$(ECHO_STRIPPING)$(STRIP) $(PALETTE_INSTALL_DIR)/$(PALETTE_FILE_NAME)$(END_ECHO)
|
||||
endif
|
||||
|
||||
internal-palette-uninstall_:: shared-instance-bundle-uninstall
|
||||
|
||||
|
||||
include $(GNUSTEP_MAKEFILES)/Instance/Shared/strings.make
|
|
@ -1,258 +0,0 @@
|
|||
# -*-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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
ifeq ($(RULES_MAKE_LOADED),)
|
||||
include $(GNUSTEP_MAKEFILES)/rules.make
|
||||
endif
|
||||
|
||||
#
|
||||
# This is used to install a bunch of resource files somewhere. It is
|
||||
# different from a bundle without resources; in a bundle without
|
||||
# resources, we first create the bundle in the build directory, then
|
||||
# copy the build to the install dir, overwriting anything already
|
||||
# there. This instead will install the separate resource files
|
||||
# directly in the installation directory; it's more efficient as it
|
||||
# doesn't create a local bundle, and it doesn't overwrite an existing
|
||||
# bundle in the installation directory.
|
||||
#
|
||||
#
|
||||
# The name of the set of resources is in the RESOURCE_SET_NAME variable.
|
||||
# The list of resource files/dirs is in xxx_RESOURCE_FILES
|
||||
# The list of resource directories to create are in xxx_RESOURCE_DIRS
|
||||
# The directory in which to install the resources is in the
|
||||
# xxx_INSTALL_DIR
|
||||
# The directory in which the resources are 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/dirs 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.
|
||||
# The list of localized dirs to be created empty inside each
|
||||
# $(RESOURCE_FILES_INSTALL_DIR)/yyy.lproj for each language yyy
|
||||
# is in the xxx_LOCALIZED_RESOURCE_DIRS variable.
|
||||
|
||||
.PHONY: internal-resource_set-install_ \
|
||||
internal-resource_set-uninstall_
|
||||
|
||||
#
|
||||
# Determine where to install. By default, install into GNUSTEP_RESOURCES/GNUSTEP_INSTANCE
|
||||
#
|
||||
ifneq ($($(GNUSTEP_INSTANCE)_INSTALL_DIR),)
|
||||
RESOURCE_FILES_INSTALL_DIR = $($(GNUSTEP_INSTANCE)_INSTALL_DIR)
|
||||
endif
|
||||
|
||||
# Use the old xxx_RESOURCE_FILES_INSTALL_DIR setting only if the new
|
||||
# one is not available. If you need your makefile to be compatible
|
||||
# with both old and new versions of make, you can use both settings.
|
||||
ifeq ($($(GNUSTEP_INSTANCE)_INSTALL_DIR),)
|
||||
ifneq ($($(GNUSTEP_INSTANCE)_RESOURCE_FILES_INSTALL_DIR),)
|
||||
# This is deprecated because we need to prepend GNUSTEP_INSTALLATION_DIR to it, which
|
||||
# is deprecated. This was deprecated on 12 Feb 2007.
|
||||
$(warning xxx_RESOURCE_FILES_INSTALL_DIR is deprecated, please use xxx_INSTALL_DIR instead)
|
||||
RESOURCE_FILES_INSTALL_DIR = $(GNUSTEP_INSTALLATION_DIR)/$($(GNUSTEP_INSTANCE)_RESOURCE_FILES_INSTALL_DIR)
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(RESOURCE_FILES_INSTALL_DIR),)
|
||||
RESOURCE_FILES_INSTALL_DIR = $(GNUSTEP_RESOURCES)/$(GNUSTEP_INSTANCE)
|
||||
endif
|
||||
|
||||
# Determine the dir to take the resources from
|
||||
RESOURCE_FILES_DIR = $($(GNUSTEP_INSTANCE)_RESOURCE_FILES_DIR)
|
||||
ifeq ($(RESOURCE_FILES_DIR),)
|
||||
RESOURCE_FILES_DIR = ./
|
||||
endif
|
||||
|
||||
|
||||
# Determine the list of resource files
|
||||
RESOURCE_FILES = $($(GNUSTEP_INSTANCE)_RESOURCE_FILES)
|
||||
RESOURCE_DIRS = $($(GNUSTEP_INSTANCE)_RESOURCE_DIRS)
|
||||
|
||||
ifneq ($(RESOURCE_DIRS),)
|
||||
# Rule to build the additional installation dirs
|
||||
$(addprefix $(RESOURCE_FILES_INSTALL_DIR)/,$(RESOURCE_DIRS)):
|
||||
$(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO)
|
||||
ifneq ($(CHOWN_TO),)
|
||||
$(ECHO_CHOWNING)$(CHOWN) -R $(CHOWN_TO) $@$(END_ECHO)
|
||||
endif
|
||||
endif
|
||||
|
||||
# Rule to build the installation dir
|
||||
$(RESOURCE_FILES_INSTALL_DIR):
|
||||
$(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO)
|
||||
ifneq ($(CHOWN_TO),)
|
||||
$(ECHO_CHOWNING)$(CHOWN) -R $(CHOWN_TO) $@$(END_ECHO)
|
||||
endif
|
||||
|
||||
# Determine the list of 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)
|
||||
LOCALIZED_RESOURCE_DIRS = $($(GNUSTEP_INSTANCE)_LOCALIZED_RESOURCE_DIRS)
|
||||
|
||||
ifneq ($(LOCALIZED_RESOURCE_DIRS),)
|
||||
# The following expression will create all the
|
||||
# RESOURCE_FILES_INSTALL_DIR/LANGUAGE/LOCALIZED_RESOURCE_DIR that we
|
||||
# need to build.
|
||||
$(foreach LANGUAGE,$(LANGUAGES),$(addprefix $(RESOURCE_FILES_INSTALL_DIR)/$(LANGUAGE), $(LOCALIZED_RESOURCE_DIRS))):
|
||||
$(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO)
|
||||
ifneq ($(CHOWN_TO),)
|
||||
$(ECHO_CHOWNING)$(CHOWN) -R $(CHOWN_TO) $@$(END_ECHO)
|
||||
endif
|
||||
endif
|
||||
|
||||
#
|
||||
# We provide two different algorithms of installing resource files.
|
||||
#
|
||||
|
||||
ifeq ($(GNUSTEP_DEVELOPER),)
|
||||
|
||||
# Standard one - just run a subshell and loop, and install everything.
|
||||
internal-resource_set-install_: \
|
||||
$(RESOURCE_FILES_INSTALL_DIR) \
|
||||
$(addprefix $(RESOURCE_FILES_INSTALL_DIR)/,$(RESOURCE_DIRS)) \
|
||||
$(foreach LANGUAGE,$(LANGUAGES),$(addprefix $(RESOURCE_FILES_INSTALL_DIR)/$(LANGUAGE), $(LOCALIZED_RESOURCE_DIRS)))
|
||||
ifneq ($(RESOURCE_FILES),)
|
||||
$(ECHO_NOTHING)for f in $(RESOURCE_FILES); do \
|
||||
if [ -f $$f -o -d $$f ]; then \
|
||||
cp -fr $(RESOURCE_FILES_DIR)/$$f \
|
||||
$(RESOURCE_FILES_INSTALL_DIR)/$$f; \
|
||||
else \
|
||||
echo "Warning: $$f not found - ignoring"; \
|
||||
fi; \
|
||||
done$(END_ECHO)
|
||||
ifneq ($(CHOWN_TO),)
|
||||
$(ECHO_CHOWNING)for f in $(RESOURCE_FILES); do \
|
||||
if [ -f $$f -o -d $$f ]; then \
|
||||
$(CHOWN) -R $(CHOWN_TO) $(RESOURCE_FILES_INSTALL_DIR)/$$f; \
|
||||
fi; \
|
||||
done$(END_ECHO)
|
||||
endif
|
||||
endif
|
||||
ifneq ($(LOCALIZED_RESOURCE_FILES),)
|
||||
$(ECHO_NOTHING)for l in $(LANGUAGES); do \
|
||||
if [ -d $$l.lproj ]; then \
|
||||
$(MKINSTALLDIRS) $(RESOURCE_FILES_INSTALL_DIR)/$$l.lproj; \
|
||||
for f in $(LOCALIZED_RESOURCE_FILES); do \
|
||||
if [ -f $$l.lproj/$$f -o -d $$l.lproj/$$f ]; then \
|
||||
cp -fr $$l.lproj/$$f \
|
||||
$(RESOURCE_FILES_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)
|
||||
ifneq ($(CHOWN_TO),)
|
||||
$(ECHO_CHOWNING)for l in $(LANGUAGES); do \
|
||||
if [ -d $$l.lproj ]; then \
|
||||
$(CHOWN) -R $(CHOWN_TO) $(RESOURCE_FILES_INSTALL_DIR)/$$l.lproj; \
|
||||
for f in $(LOCALIZED_RESOURCE_FILES); do \
|
||||
if [ -f $$l.lproj/$$f -o -d $$l.lproj/$$f ]; then \
|
||||
$(CHOWN) -R $(CHOWN_TO) $(RESOURCE_FILES_INSTALL_DIR)/$$l.lproj/$$f; \
|
||||
fi; \
|
||||
done; \
|
||||
fi; \
|
||||
done$(END_ECHO)
|
||||
endif
|
||||
endif
|
||||
|
||||
else # Following code turned on by setting GNUSTEP_DEVELOPER=YES in the shell
|
||||
|
||||
# TODO/FIXME: Update the code; implement proper
|
||||
# LOCALIZED_RESOURCE_FILES that also allows directories etc.
|
||||
|
||||
.PHONY: internal-resource-set-install-languages
|
||||
|
||||
# One optimized for recurrent installations during development - this
|
||||
# rule installs a single file only if strictly needed
|
||||
$(RESOURCE_FILES_INSTALL_DIR)/% : $(RESOURCE_FILES_DIR)/%
|
||||
$(ECHO_NOTHING)cp -fr $< $(RESOURCE_FILES_DIR)$(END_ECHO)
|
||||
ifneq ($(CHOWN_TO),)
|
||||
$(ECHO_CHOWNING)$(CHOWN) -R $(CHOWN_TO) $@$(END_ECHO)
|
||||
endif
|
||||
|
||||
# This rule depends on having installed all files
|
||||
internal-resource_set-install_: \
|
||||
$(RESOURCE_FILES_INSTALL_DIR) \
|
||||
$(addprefix $(RESOURCE_FILES_INSTALL_DIR)/,$(RESOURCE_DIRS)) \
|
||||
$(addprefix $(RESOURCE_FILES_INSTALL_DIR)/,$(RESOURCE_FILES)) \
|
||||
internal-resource-set-install-languages
|
||||
|
||||
ifeq ($(LOCALIZED_RESOURCE_FILES),)
|
||||
internal-resource-set-install-languages:
|
||||
|
||||
else
|
||||
|
||||
# Rule to build the language installation directories
|
||||
$(addsuffix .lproj,$(addprefix $(RESOURCE_FILES_INSTALL_DIR)/,$(LANGUAGES))):
|
||||
$(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO)
|
||||
|
||||
# install the localized resources, checking the installation date by
|
||||
# using test -nt ... this doesn't seem to be easy to do using make
|
||||
# rules because we want to issue a warning if the directory/file can't
|
||||
# be found, rather than aborting with an error as make would do.
|
||||
internal-resource-set-install-languages: \
|
||||
$(addsuffix .lproj,$(addprefix $(RESOURCE_FILES_INSTALL_DIR)/,$(LANGUAGES)))
|
||||
$(ECHO_NOTHING)for l in $(LANGUAGES); do \
|
||||
if [ -d $$l.lproj ]; then \
|
||||
for f in $(LOCALIZED_RESOURCE_FILES); do \
|
||||
if [ -f $$l.lproj/$$f ]; then \
|
||||
if [ $$l.lproj -nt $(RESOURCE_FILES_INSTALL_DIR)/$$l.lproj/$$f ]; then \
|
||||
$(INSTALL_DATA) $$l.lproj/$$f \
|
||||
$(RESOURCE_FILES_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_INSTALL_DIR)/$$language.lproj/$$file;\
|
||||
done; \
|
||||
rmdir $(RESOURCE_FILES_INSTALL_DIR)/$$language.lproj; \
|
||||
done$(END_ECHO)
|
||||
endif
|
||||
ifneq ($(RESOURCE_FILES),)
|
||||
$(ECHO_NOTHING)for file in $(RESOURCE_FILES); do \
|
||||
rm -rf $(RESOURCE_FILES_INSTALL_DIR)/$$file ; \
|
||||
done$(END_ECHO)
|
||||
-rmdir $(RESOURCE_FILES_INSTALL_DIR)
|
||||
endif
|
|
@ -1,364 +0,0 @@
|
|||
#
|
||||
# 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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
|
||||
# Every project should have its internal-xxx-all depend first on
|
||||
# before-$(GNUSTEP_INSTANCE)-all, and last on
|
||||
# after-$(GNUSTEP_INSTANCE)-all. We declare them here, empty, so that
|
||||
# the user can add them if he wants, but if he doesn't, make doesn't
|
||||
# complain about missing targets.
|
||||
|
||||
# NB: internal-$(GNUSTEP_TYPE)-all_ should not be declared .PHONY
|
||||
# here, because it's not implemented here. (example of how could go
|
||||
# wrong otherwise: if say internal-clibrary-all_ depends on
|
||||
# internal-library-all_, both of them should be declared .PHONY, while
|
||||
# here we would only declare one of them .PHONY, so it should be done
|
||||
# by the project specific makefile fragments).
|
||||
.PHONY: \
|
||||
internal-precompile-headers \
|
||||
before-$(GNUSTEP_INSTANCE)-all after-$(GNUSTEP_INSTANCE)-all \
|
||||
internal-$(GNUSTEP_TYPE)-all \
|
||||
before-$(GNUSTEP_INSTANCE)-install after-$(GNUSTEP_INSTANCE)-install \
|
||||
internal-$(GNUSTEP_TYPE)-install \
|
||||
before-$(GNUSTEP_INSTANCE)-uninstall after-$(GNUSTEP_INSTANCE)-uninstall \
|
||||
internal-$(GNUSTEP_TYPE)-uninstall
|
||||
|
||||
# By adding the line
|
||||
# xxx_COPY_INTO_DIR = ../Vanity.framework/Resources
|
||||
# to you GNUmakefile, you cause the after-xxx-all:: stage of
|
||||
# compilation of xxx to copy the created stuff into the *local*
|
||||
# directory ../Vanity.framework/Resources (this path should be
|
||||
# relative). It also disables installation of xxx.
|
||||
#
|
||||
# This is normally used, for example, to bundle a tool into a
|
||||
# framework. You compile the framework, then the tool, then you can
|
||||
# request the tool to be copied into the framework, becoming part of
|
||||
# the framework (it is installed with the framework etc).
|
||||
#
|
||||
COPY_INTO_DIR = $(strip $($(GNUSTEP_INSTANCE)_COPY_INTO_DIR))
|
||||
|
||||
# If COPY_INTO_DIR is non-empty, we'll execute below an additional
|
||||
# target at the end of compilation:
|
||||
# internal-$(GNUSTEP_TYPE)-copy_into_dir
|
||||
|
||||
# Centrally disable standard installation if COPY_INTO_DIR is non-empty.
|
||||
ifneq ($(COPY_INTO_DIR),)
|
||||
$(GNUSTEP_INSTANCE)_STANDARD_INSTALL = no
|
||||
endif
|
||||
|
||||
before-$(GNUSTEP_INSTANCE)-all::
|
||||
|
||||
after-$(GNUSTEP_INSTANCE)-all::
|
||||
|
||||
# Automatically run before-$(GNUSTEP_INSTANCE)-all before building,
|
||||
# and after-$(GNUSTEP_INSTANCE)-all after building.
|
||||
# The project-type specific makefile instance fragment only needs to provide
|
||||
# the internal-$(GNUSTEP_TYPE)-all_ rule.
|
||||
|
||||
ifeq ($(COPY_INTO_DIR),)
|
||||
internal-$(GNUSTEP_TYPE)-all:: internal-precompile-headers \
|
||||
before-$(GNUSTEP_INSTANCE)-all \
|
||||
internal-$(GNUSTEP_TYPE)-all_ \
|
||||
after-$(GNUSTEP_INSTANCE)-all
|
||||
else
|
||||
internal-$(GNUSTEP_TYPE)-all:: internal-precompile-headers \
|
||||
before-$(GNUSTEP_INSTANCE)-all \
|
||||
internal-$(GNUSTEP_TYPE)-all_ \
|
||||
after-$(GNUSTEP_INSTANCE)-all \
|
||||
internal-$(GNUSTEP_TYPE)-copy_into_dir
|
||||
|
||||
# To copy into a dir, we always have to first make sure the dir exists :-)
|
||||
$(COPY_INTO_DIR):
|
||||
$(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO)
|
||||
|
||||
# The specific project-type makefiles will add more commands.
|
||||
internal-$(GNUSTEP_TYPE)-copy_into_dir:: $(COPY_INTO_DIR)
|
||||
endif
|
||||
|
||||
before-$(GNUSTEP_INSTANCE)-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 Objective-C++ source files to be compiled
|
||||
# are in the OBJCC_FILES variable.
|
||||
#
|
||||
# The list of PSWRAP source files to be compiled
|
||||
# are in the PSWRAP_FILES variable.
|
||||
#
|
||||
# The list of JAVA source files to be compiled
|
||||
# are in the JAVA_FILES variable.
|
||||
#
|
||||
# The list of JAVA source files from which to generate jni headers
|
||||
# are in the JAVA_JNI_FILES variable.
|
||||
#
|
||||
# The list of WINDRES source files to be compiled
|
||||
# are in the WINDRES_FILES variable.
|
||||
#
|
||||
|
||||
#
|
||||
# Please note the subtle difference:
|
||||
#
|
||||
# At `user' level (ie, in the user's GNUmakefile),
|
||||
# the SUBPROJECTS variable is reserved for use with aggregate.make;
|
||||
# the xxx_SUBPROJECTS variable is reserved for use with subproject.make.
|
||||
#
|
||||
# This separation *must* be enforced strictly, because nothing prevents
|
||||
# a GNUmakefile from including both aggregate.make and subproject.make!
|
||||
#
|
||||
|
||||
ifneq ($($(GNUSTEP_INSTANCE)_SUBPROJECTS),)
|
||||
SUBPROJECT_OBJ_FILES = $(foreach d, $($(GNUSTEP_INSTANCE)_SUBPROJECTS), \
|
||||
$(addprefix $(GNUSTEP_BUILD_DIR)/$(d)/, $(GNUSTEP_OBJ_DIR_NAME)/$(SUBPROJECT_PRODUCT)))
|
||||
endif
|
||||
|
||||
OBJC_OBJS = $(patsubst %.m,%$(OEXT),$($(GNUSTEP_INSTANCE)_OBJC_FILES))
|
||||
OBJC_OBJ_FILES = $(addprefix $(GNUSTEP_OBJ_DIR)/,$(OBJC_OBJS))
|
||||
|
||||
OBJCC_OBJS = $(patsubst %.mm,%$(OEXT),$($(GNUSTEP_INSTANCE)_OBJCC_FILES))
|
||||
OBJCC_OBJ_FILES = $(addprefix $(GNUSTEP_OBJ_DIR)/,$(OBJCC_OBJS))
|
||||
|
||||
JAVA_OBJS = $(patsubst %.java,%.class,$($(GNUSTEP_INSTANCE)_JAVA_FILES))
|
||||
JAVA_OBJ_FILES = $(JAVA_OBJS)
|
||||
|
||||
JAVA_JNI_OBJS = $(patsubst %.java,%.h,$($(GNUSTEP_INSTANCE)_JAVA_JNI_FILES))
|
||||
JAVA_JNI_OBJ_FILES = $(JAVA_JNI_OBJS)
|
||||
|
||||
PSWRAP_C_FILES = $(patsubst %.psw,%.c,$($(GNUSTEP_INSTANCE)_PSWRAP_FILES))
|
||||
PSWRAP_H_FILES = $(patsubst %.psw,%.h,$($(GNUSTEP_INSTANCE)_PSWRAP_FILES))
|
||||
PSWRAP_OBJS = $(patsubst %.psw,%$(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))
|
||||
|
||||
ifeq ($(findstring mingw32, $(GNUSTEP_TARGET_OS)), mingw32)
|
||||
WINDRES_OBJS = $(patsubst %.rc,%$(OEXT),$($(GNUSTEP_INSTANCE)_WINDRES_FILES))
|
||||
WINDRES_OBJ_FILES = $(addprefix $(GNUSTEP_OBJ_DIR)/,$(WINDRES_OBJS))
|
||||
else
|
||||
ifeq ($(findstring cygwin, $(GNUSTEP_TARGET_OS)), cygwin)
|
||||
WINDRES_OBJS = $(patsubst %.rc,%$(OEXT),$($(GNUSTEP_INSTANCE)_WINDRES_FILES))
|
||||
WINDRES_OBJ_FILES = $(addprefix $(GNUSTEP_OBJ_DIR)/,$(WINDRES_OBJS))
|
||||
else
|
||||
WINDRES_OBJ_FILES =
|
||||
endif
|
||||
endif
|
||||
|
||||
OBJ_FILES = $($(GNUSTEP_INSTANCE)_OBJ_FILES)
|
||||
|
||||
# OBJ_FILES_TO_LINK is the set of all .o files which will be linked
|
||||
# into the result - please note that you can add to OBJ_FILES_TO_LINK
|
||||
# by defining manually some special xxx_OBJ_FILES for your
|
||||
# tool/app/whatever. Strip the variable so that by comparing
|
||||
# OBJ_FILES_TO_LINK to '' we know if there is a link stage to be
|
||||
# performed at all (useful for example in bundles which can contain an
|
||||
# object file, or not).
|
||||
OBJ_FILES_TO_LINK = $(strip $(C_OBJ_FILES) $(OBJC_OBJ_FILES) $(CC_OBJ_FILES) $(OBJCC_OBJ_FILES) $(WINDRES_OBJ_FILES) $(SUBPROJECT_OBJ_FILES) $(OBJ_FILES))
|
||||
|
||||
ifeq ($(AUTO_DEPENDENCIES),yes)
|
||||
ifneq ($(strip $(OBJ_FILES_TO_LINK)),)
|
||||
-include $(addsuffix .d, $(basename $(OBJ_FILES_TO_LINK)))
|
||||
endif
|
||||
endif
|
||||
|
||||
# The following is for precompiled headers, only executed if GCC
|
||||
# supports them.
|
||||
ifeq ($(GCC_WITH_PRECOMPILED_HEADERS),yes)
|
||||
#
|
||||
# The following are useful to speed up compilation by using
|
||||
# precompiled headers. If GCC_WITH_PRECOMPILED_HEADERS is '', then
|
||||
# these variables do nothing. If GCC_WITH_PRECOMPILED_HEADERS is yes,
|
||||
# then these variables cause all the listed headers to be precompiled
|
||||
# with the specified compiler before the compilation of the main files
|
||||
# starts; the precompiled files will be put in the
|
||||
# GNUSTEP_OBJ_DIR/PrecompiledHeaders/{language} directory, and
|
||||
# -I$GNUSTEP_OBJ_DIR/PrecompiledHeaders/{language} -Winvalid-pch will
|
||||
# automatically be added to the command line to make sure they are
|
||||
# used.
|
||||
#
|
||||
# The list of C header files to be precompiled is in the
|
||||
# C_PRECOMPILED_HEADERS variable
|
||||
#
|
||||
# The list of Objective-C header files to be precompiled is in the
|
||||
# OBJC_PRECOMPILED_HEADERS variable
|
||||
#
|
||||
# The list of C++ header files to be precompiled is in the
|
||||
# CC_PRECOMPILED_HEADERS variable
|
||||
#
|
||||
# The list of Objective-C++ header files to be precompiled is in the
|
||||
# OBJCC_PRECOMPILED_HEADERS variable
|
||||
#
|
||||
|
||||
C_PRECOMPILED_OBJS = $(patsubst %.h,%.h.gch,$($(GNUSTEP_INSTANCE)_C_PRECOMPILED_HEADERS))
|
||||
C_PRECOMPILED_OBJ_FILES = $(addprefix $(GNUSTEP_OBJ_DIR)/PrecompiledHeaders/C/,$(C_PRECOMPILED_OBJS))
|
||||
|
||||
OBJC_PRECOMPILED_OBJS = $(patsubst %.h,%.h.gch,$($(GNUSTEP_INSTANCE)_OBJC_PRECOMPILED_HEADERS))
|
||||
OBJC_PRECOMPILED_OBJ_FILES = $(addprefix $(GNUSTEP_OBJ_DIR)/PrecompiledHeaders/ObjC/,$(OBJC_PRECOMPILED_OBJS))
|
||||
|
||||
CC_PRECOMPILED_OBJS = $(patsubst %.h,%.h.gch,$($(GNUSTEP_INSTANCE)_CC_PRECOMPILED_HEADERS))
|
||||
CC_PRECOMPILED_OBJ_FILES = $(addprefix $(GNUSTEP_OBJ_DIR)/PrecompiledHeaders/CC/,$(CC_PRECOMPILED_OBJS))
|
||||
|
||||
OBJCC_PRECOMPILED_OBJS = $(patsubst %.h,%.h.gch,$($(GNUSTEP_INSTANCE)_OBJCC_PRECOMPILED_HEADERS))
|
||||
OBJCC_PRECOMPILED_OBJ_FILES = $(addprefix $(GNUSTEP_OBJ_DIR)/PrecompiledHeaders/ObjCC/,$(OBJCC_PRECOMPILED_OBJS))
|
||||
|
||||
# If any of those variables is not empty
|
||||
ifneq ($(C_PRECOMPILED_OBJ_FILES)$(OBJC_PRECOMPILED_OBJ_FILES)$(CC_PRECOMPILED_OBJ_FILES)$(OBJCC_PRECOMPILED_OBJ_FILES),)
|
||||
# Then we need to build the files before everything else!
|
||||
internal-precompile-headers: $(C_PRECOMPILED_OBJ_FILES)\
|
||||
$(OBJC_PRECOMPILED_OBJ_FILES)\
|
||||
$(CC_PRECOMPILED_OBJ_FILES)\
|
||||
$(OBJCC_PRECOMPILED_OBJ_FILES)
|
||||
|
||||
# We put all the PrecompiledHeaders/xx/ dirs in xx_PRECOMPILED_HEADERS_INCLUDE_FLAGS,
|
||||
# which will be put before any other header include (this is what we want, as we
|
||||
# want a precompiled header, if available, to be used in preference
|
||||
# to the non-precompiled header, no matter where the non-precompiled
|
||||
# header is).
|
||||
ifneq ($(C_PRECOMPILED_OBJ_FILES),)
|
||||
C_PRECOMPILED_HEADERS_INCLUDE_FLAGS += -I$(GNUSTEP_OBJ_DIR)/PrecompiledHeaders/C
|
||||
endif
|
||||
ifneq ($(OBJC_PRECOMPILED_OBJ_FILES),)
|
||||
OBJC_PRECOMPILED_HEADERS_INCLUDE_FLAGS += -I$(GNUSTEP_OBJ_DIR)/PrecompiledHeaders/ObjC
|
||||
endif
|
||||
ifneq ($(CC_PRECOMPILED_OBJ_FILES),)
|
||||
CC_PRECOMPILED_HEADERS_INCLUDE_FLAGS += -I$(GNUSTEP_OBJ_DIR)/PrecompiledHeaders/CC
|
||||
endif
|
||||
ifneq ($(OBJCC_PRECOMPILED_OBJ_FILES),)
|
||||
OBJCC_PRECOMPILED_HEADERS_INCLUDE_FLAGS += -I$(GNUSTEP_OBJ_DIR)/PrecompiledHeaders/ObjCC
|
||||
endif
|
||||
|
||||
else
|
||||
internal-precompile-headers:
|
||||
endif
|
||||
|
||||
# End of precompiled headers code
|
||||
else
|
||||
internal-precompile-headers:
|
||||
endif
|
||||
|
||||
##
|
||||
## Library and related special flags.
|
||||
##
|
||||
BUNDLE_LIBS += $($(GNUSTEP_INSTANCE)_BUNDLE_LIBS)
|
||||
|
||||
ADDITIONAL_INCLUDE_DIRS += $($(GNUSTEP_INSTANCE)_INCLUDE_DIRS)
|
||||
|
||||
ADDITIONAL_GUI_LIBS += $($(GNUSTEP_INSTANCE)_GUI_LIBS)
|
||||
|
||||
ADDITIONAL_TOOL_LIBS += $($(GNUSTEP_INSTANCE)_TOOL_LIBS)
|
||||
|
||||
ADDITIONAL_OBJC_LIBS += $($(GNUSTEP_INSTANCE)_OBJC_LIBS)
|
||||
|
||||
ADDITIONAL_LIBRARY_LIBS += $($(GNUSTEP_INSTANCE)_LIBS) \
|
||||
$($(GNUSTEP_INSTANCE)_LIBRARY_LIBS)
|
||||
|
||||
ADDITIONAL_NATIVE_LIBS += $($(GNUSTEP_INSTANCE)_NATIVE_LIBS)
|
||||
|
||||
ADDITIONAL_LIB_DIRS += $($(GNUSTEP_INSTANCE)_LIB_DIRS)
|
||||
|
||||
ADDITIONAL_CPPFLAGS += $($(GNUSTEP_INSTANCE)_CPPFLAGS)
|
||||
|
||||
ADDITIONAL_CFLAGS += $($(GNUSTEP_INSTANCE)_CFLAGS)
|
||||
|
||||
ADDITIONAL_OBJCFLAGS += $($(GNUSTEP_INSTANCE)_OBJCFLAGS)
|
||||
|
||||
ADDITIONAL_CCFLAGS += $($(GNUSTEP_INSTANCE)_CCFLAGS)
|
||||
|
||||
ADDITIONAL_OBJCCFLAGS += $($(GNUSTEP_INSTANCE)_OBJCCFLAGS)
|
||||
|
||||
ADDITIONAL_LDFLAGS += $($(GNUSTEP_INSTANCE)_LDFLAGS)
|
||||
|
||||
ADDITIONAL_CLASSPATH += $($(GNUSTEP_INSTANCE)_CLASSPATH)
|
||||
|
||||
LIBRARIES_DEPEND_UPON += $($(GNUSTEP_INSTANCE)_LIBRARIES_DEPEND_UPON)
|
||||
|
|
@ -1,130 +0,0 @@
|
|||
#
|
||||
# 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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
ifeq ($(RULES_MAKE_LOADED),)
|
||||
include $(GNUSTEP_MAKEFILES)/rules.make
|
||||
endif
|
||||
|
||||
#
|
||||
# The name of the service is in the SERVICE_NAME variable.
|
||||
# The NSServices info should be in $(SERVICE_NAME)Info.plist
|
||||
# The list of service resource file are in xxx_RESOURCE_FILES
|
||||
# The list of service resource directories are in xxx_RESOURCE_DIRS
|
||||
# where xxx is the service name
|
||||
#
|
||||
|
||||
.PHONY: internal-service-all_ \
|
||||
internal-service-install_ \
|
||||
internal-service-uninstall_ \
|
||||
internal-service-copy_into_dir \
|
||||
service-resource-files
|
||||
|
||||
# Libraries that go before the GUI libraries
|
||||
ALL_SERVICE_LIBS = \
|
||||
$(ALL_LIB_DIRS) \
|
||||
$(ADDITIONAL_GUI_LIBS) $(AUXILIARY_GUI_LIBS) \
|
||||
$(GUI_LIBS) $(ADDITIONAL_TOOL_LIBS) $(AUXILIARY_TOOL_LIBS) \
|
||||
$(FND_LIBS) $(ADDITIONAL_OBJC_LIBS) $(AUXILIARY_OBJC_LIBS) \
|
||||
$(OBJC_LIBS) $(SYSTEM_LIBS) $(TARGET_SYSTEM_LIBS)
|
||||
|
||||
# Don't include these definitions the first time make is invoked. This part is
|
||||
# included when make is invoked the second time from the %.build rule (see
|
||||
# rules.make).
|
||||
SERVICE_DIR_NAME = $(GNUSTEP_INSTANCE:=.service)
|
||||
SERVICE_DIR = $(GNUSTEP_BUILD_DIR)/$(SERVICE_DIR_NAME)
|
||||
|
||||
#
|
||||
# Internal targets
|
||||
#
|
||||
SERVICE_FILE_NAME = $(SERVICE_DIR_NAME)/$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_INSTANCE)
|
||||
SERVICE_FILE = $(GNUSTEP_BUILD_DIR)/$(SERVICE_FILE_NAME)
|
||||
|
||||
ifneq ($($(GNUSTEP_INSTANCE)_INSTALL_DIR),)
|
||||
SERVICE_INSTALL_DIR = $($(GNUSTEP_INSTANCE)_INSTALL_DIR)
|
||||
endif
|
||||
|
||||
ifeq ($(SERVICE_INSTALL_DIR),)
|
||||
SERVICE_INSTALL_DIR = $(GNUSTEP_SERVICES)
|
||||
endif
|
||||
|
||||
GNUSTEP_SHARED_BUNDLE_RESOURCE_PATH = $(SERVICE_DIR)/Resources
|
||||
GNUSTEP_SHARED_BUNDLE_INSTALL_NAME = $(SERVICE_DIR_NAME)
|
||||
GNUSTEP_SHARED_BUNDLE_INSTALL_LOCAL_PATH = .
|
||||
GNUSTEP_SHARED_BUNDLE_INSTALL_PATH = $(SERVICE_INSTALL_DIR)
|
||||
include $(GNUSTEP_MAKEFILES)/Instance/Shared/bundle.make
|
||||
|
||||
internal-service-all_:: $(GNUSTEP_OBJ_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) $(CC_LDFLAGS) -o $(LDOUT)$@ \
|
||||
$(OBJ_FILES_TO_LINK) $(ALL_SERVICE_LIBS)$(END_ECHO)
|
||||
|
||||
$(SERVICE_DIR)/$(GNUSTEP_TARGET_LDIR):
|
||||
$(ECHO_CREATING)$(MKDIRS) $(SERVICE_DIR)/$(GNUSTEP_TARGET_LDIR)$(END_ECHO)
|
||||
|
||||
|
||||
# Allow the gui library to redefine make_services to use its local one
|
||||
ifeq ($(GNUSTEP_MAKE_SERVICES),)
|
||||
GNUSTEP_MAKE_SERVICES = make_services
|
||||
endif
|
||||
|
||||
# Depend on xxxInfo.plist but only if it exists.
|
||||
GNUSTEP_PLIST_DEPEND = $(wildcard $(GNUSTEP_INSTANCE)Info.plist)
|
||||
|
||||
ifeq ($(GNUSTEP_PLIST_DEPEND),)
|
||||
$(warning Service $(GNUSTEP_INSTANCE) missing $(GNUSTEP_INSTANCE)Info.plist)
|
||||
endif
|
||||
|
||||
# FIXME - xxxInfo.plist in this case is not really a plist!
|
||||
|
||||
$(SERVICE_DIR)/Resources/Info-gnustep.plist: \
|
||||
$(SERVICE_DIR)/Resources $(GNUSTEP_PLIST_DEPEND)
|
||||
$(ECHO_CREATING)(echo "{"; echo ' NOTE = "Automatically generated, do not edit!";'; \
|
||||
echo " NSExecutable = \"$(GNUSTEP_INSTANCE)\";"; \
|
||||
if [ -r "$(GNUSTEP_INSTANCE)Info.plist" ]; then \
|
||||
cat $(GNUSTEP_INSTANCE)Info.plist; \
|
||||
fi; \
|
||||
echo "}") >$@ ;\
|
||||
if $(GNUSTEP_MAKE_SERVICES) --test $@; then : ; else rm -f $@; false; \
|
||||
fi$(END_ECHO)
|
||||
|
||||
internal-service-copy_into_dir:: shared-instance-bundle-copy_into_dir
|
||||
|
||||
#
|
||||
# Install targets
|
||||
#
|
||||
$(SERVICE_INSTALL_DIR):
|
||||
$(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO)
|
||||
|
||||
internal-service-install_:: shared-instance-bundle-install
|
||||
ifeq ($(strip),yes)
|
||||
$(ECHO_STRIPPING)$(STRIP) $(SERVICE_INSTALL_DIR)/$(SERVICE_FILE_NAME)$(END_ECHO)
|
||||
endif
|
||||
|
||||
internal-service-uninstall_:: shared-instance-bundle-uninstall
|
||||
|
||||
include $(GNUSTEP_MAKEFILES)/Instance/Shared/strings.make
|
|
@ -1,105 +0,0 @@
|
|||
# -*-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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
ifeq ($(RULES_MAKE_LOADED),)
|
||||
include $(GNUSTEP_MAKEFILES)/rules.make
|
||||
endif
|
||||
|
||||
.PHONY: internal-subproject-all_ \
|
||||
internal-subproject-install_ \
|
||||
internal-subproject-uninstall_
|
||||
|
||||
#
|
||||
# Compilation targets
|
||||
#
|
||||
internal-subproject-all_:: $(GNUSTEP_OBJ_DIR) \
|
||||
$(GNUSTEP_OBJ_DIR)/$(SUBPROJECT_PRODUCT)
|
||||
|
||||
# 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_DIR)/%.h: %.h $(OWNING_PROJECT_HEADER_DIR)
|
||||
$(ECHO_NOTHING)$(INSTALL_DATA) $< $@$(END_ECHO)
|
||||
|
||||
$(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 = $(GNUSTEP_BUILD_DIR)/Resources/Subproject
|
||||
include $(GNUSTEP_MAKEFILES)/Instance/Shared/bundle.make
|
||||
|
||||
# Only build, not install
|
||||
internal-subproject-all_:: shared-instance-bundle-all
|
||||
|
||||
endif
|
||||
|
||||
include $(GNUSTEP_MAKEFILES)/Instance/Shared/strings.make
|
|
@ -1,29 +0,0 @@
|
|||
# -*-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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
ifeq ($(RULES_MAKE_LOADED),)
|
||||
include $(GNUSTEP_MAKEFILES)/rules.make
|
||||
endif
|
||||
|
||||
# Just inherit the build rule from application.make
|
||||
|
||||
include $(GNUSTEP_MAKEFILES)/Instance/application.make
|
||||
|
||||
internal-test_app-all_:: internal-app-all_
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
#
|
||||
# Instance/test-library.make
|
||||
#
|
||||
# Instance Makefile rules for test/non-installed libraries
|
||||
#
|
||||
# Copyright (C) 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# Author: Adam Fedor <fedor@gnu.org>
|
||||
#
|
||||
# This file is part of the GNUstep Makefile Package.
|
||||
#
|
||||
# This library is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
ifeq ($(RULES_MAKE_LOADED),)
|
||||
include $(GNUSTEP_MAKEFILES)/rules.make
|
||||
endif
|
||||
|
||||
# Just inherit the build rule from library.make
|
||||
|
||||
include $(GNUSTEP_MAKEFILES)/Instance/library.make
|
||||
|
||||
internal-test_library-all_:: internal-library-all_
|
|
@ -1,29 +0,0 @@
|
|||
# -*-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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
ifeq ($(RULES_MAKE_LOADED),)
|
||||
include $(GNUSTEP_MAKEFILES)/rules.make
|
||||
endif
|
||||
|
||||
# Just inherit the build rule from tool.make
|
||||
|
||||
include $(GNUSTEP_MAKEFILES)/Instance/tool.make
|
||||
|
||||
internal-test_tool-all_:: internal-tool-all_
|
||||
|
|
@ -1,129 +0,0 @@
|
|||
# -*-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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 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),)
|
||||
TOOL_INSTALL_DIR = $($(GNUSTEP_INSTANCE)_INSTALL_DIR)
|
||||
endif
|
||||
|
||||
ifeq ($(TOOL_INSTALL_DIR),)
|
||||
TOOL_INSTALL_DIR = $(GNUSTEP_TOOLS)
|
||||
endif
|
||||
|
||||
# This is the 'final' directory in which we copy the tool executable, including
|
||||
# the target and library-combo paths. You can override it in special occasions
|
||||
# (eg, installing an executable into a web server's cgi dir).
|
||||
ifeq ($(FINAL_TOOL_INSTALL_DIR),)
|
||||
FINAL_TOOL_INSTALL_DIR = $(TOOL_INSTALL_DIR)/$(GNUSTEP_TARGET_LDIR)
|
||||
endif
|
||||
|
||||
ALL_TOOL_LIBS = \
|
||||
$(ALL_LIB_DIRS) \
|
||||
$(ADDITIONAL_TOOL_LIBS) $(AUXILIARY_TOOL_LIBS) $(FND_LIBS) \
|
||||
$(ADDITIONAL_OBJC_LIBS) $(AUXILIARY_OBJC_LIBS) $(OBJC_LIBS) \
|
||||
$(TARGET_SYSTEM_LIBS)
|
||||
|
||||
#
|
||||
# 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) $(CC_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 = $(GNUSTEP_BUILD_DIR)/Resources/$(GNUSTEP_INSTANCE)
|
||||
|
||||
GNUSTEP_SHARED_BUNDLE_INSTALL_NAME = $(GNUSTEP_INSTANCE)
|
||||
GNUSTEP_SHARED_BUNDLE_INSTALL_LOCAL_PATH = Resources
|
||||
GNUSTEP_SHARED_BUNDLE_INSTALL_PATH = $(GNUSTEP_LIBRARY)/Tools/Resources
|
||||
include $(GNUSTEP_MAKEFILES)/Instance/Shared/bundle.make
|
||||
|
||||
internal-tool-all_:: shared-instance-bundle-all
|
||||
internal-tool-copy_into_dir:: shared-instance-bundle-copy_into_dir
|
||||
|
||||
$(TOOL_INSTALL_DIR):
|
||||
$(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO)
|
||||
|
||||
$(GNUSTEP_LIBRARY)/Tools/Resources:
|
||||
$(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO)
|
||||
|
||||
internal-tool-install_:: $(GNUSTEP_LIBRARY)/Tools/Resources \
|
||||
shared-instance-bundle-install
|
||||
|
||||
internal-tool-uninstall:: shared-instance-bundle-uninstall
|
||||
|
||||
endif
|
||||
|
||||
include $(GNUSTEP_MAKEFILES)/Instance/Shared/strings.make
|
|
@ -1,55 +0,0 @@
|
|||
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.
|
|
@ -1,80 +0,0 @@
|
|||
#
|
||||
# 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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 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
|
||||
|
|
@ -1,79 +0,0 @@
|
|||
#
|
||||
# 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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
ifeq ($(RULES_MAKE_LOADED),)
|
||||
include $(GNUSTEP_MAKEFILES)/rules.make
|
||||
endif
|
||||
|
||||
APP_NAME := $(strip $(APP_NAME))
|
||||
|
||||
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_IS_FLATTENED), no)
|
||||
(cd $(GNUSTEP_BUILD_DIR); \
|
||||
rm -rf $(_PSWRAP_C_FILES) $(_PSWRAP_H_FILES) $(_PLIST_INFO_FILES) *.$(APP_EXTENSION)/$(GNUSTEP_TARGET_LDIR))
|
||||
else
|
||||
(cd $(GNUSTEP_BUILD_DIR); \
|
||||
rm -rf $(_PSWRAP_C_FILES) $(_PSWRAP_H_FILES) $(_PLIST_INFO_FILES) *.$(APP_EXTENSION))
|
||||
endif
|
||||
|
||||
internal-distclean::
|
||||
ifeq ($(GNUSTEP_IS_FLATTENED), no)
|
||||
(cd $(GNUSTEP_BUILD_DIR); rm -rf *.$(APP_EXTENSION))
|
||||
endif
|
||||
|
||||
# The following make trick extracts all 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
|
|
@ -1,56 +0,0 @@
|
|||
#
|
||||
# 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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
ifeq ($(RULES_MAKE_LOADED),)
|
||||
include $(GNUSTEP_MAKEFILES)/rules.make
|
||||
endif
|
||||
|
||||
BUNDLE_NAME := $(strip $(BUNDLE_NAME))
|
||||
|
||||
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 $(_PSWRAP_C_FILES) $(_PSWRAP_H_FILES) $(addsuffix $(BUNDLE_EXTENSION),$(BUNDLE_NAME)))
|
||||
|
||||
internal-distclean::
|
||||
|
||||
BUNDLES_WITH_SUBPROJECTS = $(strip $(foreach bundle,$(BUNDLE_NAME),$(patsubst %,$(bundle),$($(bundle)_SUBPROJECTS))))
|
||||
|
||||
ifneq ($(BUNDLES_WITH_SUBPROJECTS),)
|
||||
internal-clean:: $(BUNDLES_WITH_SUBPROJECTS:=.clean.bundle.subprojects)
|
||||
internal-distclean:: $(BUNDLES_WITH_SUBPROJECTS:=.distclean.bundle.subprojects)
|
||||
endif
|
||||
|
||||
internal-strings:: $(BUNDLE_NAME:=.strings.bundle.variables)
|
||||
|
||||
$(BUNDLE_NAME):
|
||||
@$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \
|
||||
$@.all.bundle.variables
|
|
@ -1,57 +0,0 @@
|
|||
#
|
||||
# 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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
ifeq ($(RULES_MAKE_LOADED),)
|
||||
include $(GNUSTEP_MAKEFILES)/rules.make
|
||||
endif
|
||||
|
||||
CLIBRARY_NAME := $(strip $(CLIBRARY_NAME))
|
||||
|
||||
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::
|
||||
ifneq ($(_PSWRAP_C_FILES)$(_PSWRAP_H_FILES),)
|
||||
(cd $(GNUSTEP_BUILD_DIR); \
|
||||
rm -rf $(_PSWRAP_C_FILES) $(_PSWRAP_H_FILES))
|
||||
endif
|
||||
|
||||
internal-distclean::
|
||||
|
||||
CLIBRARIES_WITH_SUBPROJECTS = $(strip $(foreach clibrary,$(CLIBRARY_NAME),$(patsubst %,$(clibrary),$($(clibrary)_SUBPROJECTS))))
|
||||
ifneq ($(CLIBRARIES_WITH_SUBPROJECTS),)
|
||||
internal-clean:: $(CLIBRARIES_WITH_SUBPROJECTS:=.clean.clibrary.subprojects)
|
||||
internal-distclean:: $(CLIBRARIES_WITH_SUBPROJECTS:=.distclean.clibrary.subprojects)
|
||||
endif
|
||||
|
||||
internal-strings:: $(CLIBRARY_NAME:=.strings.clibrary.variables)
|
||||
|
||||
$(CLIBRARY_NAME):
|
||||
@$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \
|
||||
$@.all.clibrary.variables
|
|
@ -1,49 +0,0 @@
|
|||
#
|
||||
# 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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
ifeq ($(RULES_MAKE_LOADED),)
|
||||
include $(GNUSTEP_MAKEFILES)/rules.make
|
||||
endif
|
||||
|
||||
CTOOL_NAME := $(strip $(CTOOL_NAME))
|
||||
|
||||
internal-all:: $(CTOOL_NAME:=.all.ctool.variables)
|
||||
|
||||
internal-install:: $(CTOOL_NAME:=.install.ctool.variables)
|
||||
|
||||
internal-uninstall:: $(CTOOL_NAME:=.uninstall.ctool.variables)
|
||||
|
||||
internal-clean::
|
||||
|
||||
internal-distclean::
|
||||
|
||||
CTOOLS_WITH_SUBPROJECTS = $(strip $(foreach ctool,$(CTOOL_NAME),$(patsubst %,$(ctool),$($(ctool)_SUBPROJECTS))))
|
||||
ifneq ($(CTOOLS_WITH_SUBPROJECTS),)
|
||||
internal-clean:: $(CTOOLS_WITH_SUBPROJECTS:=.clean.ctool.subprojects)
|
||||
internal-distclean:: $(CTOOLS_WITH_SUBPROJECTS:=.distclean.ctool.subprojects)
|
||||
endif
|
||||
|
||||
internal-strings:: $(CTOOL_NAME:=.strings.ctool.variables)
|
||||
|
||||
$(CTOOL_NAME):
|
||||
@$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \
|
||||
$@.all.ctool.variables
|
|
@ -1,48 +0,0 @@
|
|||
# -*-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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 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
|
||||
|
|
@ -1,54 +0,0 @@
|
|||
#
|
||||
# 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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
ifeq ($(RULES_MAKE_LOADED),)
|
||||
include $(GNUSTEP_MAKEFILES)/rules.make
|
||||
endif
|
||||
|
||||
FRAMEWORK_NAME := $(strip $(FRAMEWORK_NAME))
|
||||
|
||||
before-build-headers::
|
||||
|
||||
after-build-headers::
|
||||
|
||||
# A framework has a special task to do before all, which is to build
|
||||
# the public framework headers.
|
||||
build-headers:: before-build-headers $(FRAMEWORK_NAME:=.build-headers.framework.variables) after-build-headers
|
||||
|
||||
before-all:: build-headers
|
||||
|
||||
internal-all:: $(FRAMEWORK_NAME:=.all.framework.variables)
|
||||
$(FRAMEWORK_NAME:=.all.framework.variables): $(FRAMEWORK_NAME:=.build-headers.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
|
|
@ -1,65 +0,0 @@
|
|||
#
|
||||
# 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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
ifeq ($(RULES_MAKE_LOADED),)
|
||||
include $(GNUSTEP_MAKEFILES)/rules.make
|
||||
endif
|
||||
|
||||
# Determine the application directory extension
|
||||
GSWAPP_EXTENSION=gswa
|
||||
|
||||
GSWAPP_NAME := $(strip $(GSWAPP_NAME))
|
||||
|
||||
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_IS_FLATTENED), no)
|
||||
(cd $(GNUSTEP_BUILD_DIR); \
|
||||
rm -rf *.$(GSWAPP_EXTENSION)/$(GNUSTEP_TARGET_LDIR))
|
||||
else
|
||||
(cd $(GNUSTEP_BUILD_DIR); \
|
||||
rm -rf *.$(GSWAPP_EXTENSION))
|
||||
endif
|
||||
|
||||
internal-distclean::
|
||||
ifeq ($(GNUSTEP_IS_FLATTENED), no)
|
||||
(cd $(GNUSTEP_BUILD_DIR); \
|
||||
rm -rf *.$(GSWAPP_EXTENSION))
|
||||
endif
|
||||
|
||||
GSWAPPS_WITH_SUBPROJECTS = $(strip $(foreach gswapp,$(GSWAPP_NAME),$(patsubst %,$(gswapp),$($(gswapp)_SUBPROJECTS))))
|
||||
ifneq ($(GSWAPPS_WITH_SUBPROJECTS),)
|
||||
internal-clean:: $(GSWAPPS_WITH_SUBPROJECTS:=.clean.gswapp.subprojects)
|
||||
internal-distclean:: $(GSWAPPS_WITH_SUBPROJECTS:=.distclean.gswapp.subprojects)
|
||||
endif
|
||||
|
||||
internal-strings:: $(GSWAPP_NAME:=.strings.gswapp.variables)
|
||||
|
||||
$(GSWAPP_NAME):
|
||||
@$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \
|
||||
$@.all.gswapp.variables
|
|
@ -1,56 +0,0 @@
|
|||
#
|
||||
# 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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
ifeq ($(RULES_MAKE_LOADED),)
|
||||
include $(GNUSTEP_MAKEFILES)/rules.make
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(GSWBUNDLE_EXTENSION)),)
|
||||
GSWBUNDLE_EXTENSION = .gswbundle
|
||||
endif
|
||||
|
||||
GSWBUNDLE_NAME := $(strip $(GSWBUNDLE_NAME))
|
||||
|
||||
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 $(addsuffix $(GSWBUNDLE_EXTENSION),$(GSWBUNDLE_NAME)))
|
||||
|
||||
internal-distclean::
|
||||
|
||||
GSWBUNDLES_WITH_SUBPROJECTS = $(strip $(foreach gswbundle,$(GSWBUNDLE_NAME),$(patsubst %,$(gswbundle),$($(gswbundle)_SUBPROJECTS))))
|
||||
ifneq ($(GSWBUNDLES_WITH_SUBPROJECTS),)
|
||||
internal-clean:: $(GSWBUNDLES_WITH_SUBPROJECTS:=.clean.gswbundle.subprojects)
|
||||
internal-distclean:: $(GSWBUNDLES_WITH_SUBPROJECTS:=.distclean.gswbundle.subprojects)
|
||||
endif
|
||||
|
||||
internal-all:: $(GSWBUNDLE_NAME:=.all.gswbundle.variables)
|
||||
|
||||
$(GSWBUNDLE_NAME):
|
||||
@$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \
|
||||
$@.all.gswbundle.variables
|
|
@ -1,54 +0,0 @@
|
|||
#
|
||||
# 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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
# Why using Java if you can use Objective-C ...
|
||||
# Anyway if you really want it, here we go.
|
||||
|
||||
#
|
||||
# The name of the tools is in the JAVA_TOOL_NAME variable.
|
||||
# The main class (the one implementing main) is in the
|
||||
# xxx_PRINCIPAL_CLASS variable.
|
||||
#
|
||||
|
||||
JAVA_TOOL_NAME := $(strip $(JAVA_TOOL_NAME))
|
||||
|
||||
ifeq ($(RULES_MAKE_LOADED),)
|
||||
include $(GNUSTEP_MAKEFILES)/rules.make
|
||||
endif
|
||||
|
||||
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
|
|
@ -1,46 +0,0 @@
|
|||
#
|
||||
# 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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
ifeq ($(RULES_MAKE_LOADED),)
|
||||
include $(GNUSTEP_MAKEFILES)/rules.make
|
||||
endif
|
||||
|
||||
JAVA_PACKAGE_NAME := $(strip $(JAVA_PACKAGE_NAME))
|
||||
|
||||
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
|
|
@ -1,57 +0,0 @@
|
|||
#
|
||||
# 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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
ifeq ($(RULES_MAKE_LOADED),)
|
||||
include $(GNUSTEP_MAKEFILES)/rules.make
|
||||
endif
|
||||
|
||||
LIBRARY_NAME := $(strip $(LIBRARY_NAME))
|
||||
|
||||
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::
|
||||
ifneq ($(_PSWRAP_C_FILES)$(_PSWRAP_H_FILES),)
|
||||
(cd $(GNUSTEP_BUILD_DIR); \
|
||||
rm -rf $(_PSWRAP_C_FILES) $(_PSWRAP_H_FILES))
|
||||
endif
|
||||
|
||||
internal-distclean::
|
||||
|
||||
LIBRARIES_WITH_SUBPROJECTS = $(strip $(foreach library,$(LIBRARY_NAME),$(patsubst %,$(library),$($(library)_SUBPROJECTS))))
|
||||
ifneq ($(LIBRARIES_WITH_SUBPROJECTS),)
|
||||
internal-clean:: $(LIBRARIES_WITH_SUBPROJECTS:=.clean.library.subprojects)
|
||||
internal-distclean:: $(LIBRARIES_WITH_SUBPROJECTS:=.distclean.library.subprojects)
|
||||
endif
|
||||
|
||||
internal-strings:: $(LIBRARY_NAME:=.strings.library.variables)
|
||||
|
||||
$(LIBRARY_NAME):
|
||||
@$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \
|
||||
$@.all.library.variables
|
|
@ -1,49 +0,0 @@
|
|||
#
|
||||
# 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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
OBJC_PROGRAM_NAME := $(strip $(OBJC_PROGRAM_NAME))
|
||||
|
||||
ifeq ($(RULES_MAKE_LOADED),)
|
||||
include $(GNUSTEP_MAKEFILES)/rules.make
|
||||
endif
|
||||
|
||||
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::
|
||||
|
||||
internal-distclean::
|
||||
|
||||
OBJC_PROGRAMS_WITH_SUBPROJECTS = $(strip $(foreach objc_program,$(OBJC_PROGRAM_NAME),$(patsubst %,$(objc_program),$($(objc_program)_SUBPROJECTS))))
|
||||
ifneq ($(OBJC_PROGRAMS_WITH_SUBPROJECTS),)
|
||||
internal-clean:: $(OBJC_PROGRAMS_WITH_SUBPROJECTS:=.clean.objc-program.subprojects)
|
||||
internal-distclean:: $(OBJC_PROGRAMS_WITH_SUBPROJECTS:=.distclean.objc-program.subprojects)
|
||||
endif
|
||||
|
||||
internal-strings:: $(OBJC_PROGRAM_NAME:=.strings.objc-program.variables)
|
||||
|
||||
$(OBJC_PROGRAM_NAME):
|
||||
@$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \
|
||||
$@.all.objc-program.variables
|
|
@ -1,63 +0,0 @@
|
|||
#
|
||||
# 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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
ifeq ($(RULES_MAKE_LOADED),)
|
||||
include $(GNUSTEP_MAKEFILES)/rules.make
|
||||
endif
|
||||
|
||||
PALETTE_NAME:=$(strip $(PALETTE_NAME))
|
||||
|
||||
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_IS_FLATTENED), no)
|
||||
(cd $(GNUSTEP_BUILD_DIR); \
|
||||
rm -rf $(_PSWRAP_C_FILES) $(_PSWRAP_H_FILES) *.palette/$(GNUSTEP_TARGET_LDIR))
|
||||
else
|
||||
(cd $(GNUSTEP_BUILD_DIR); \
|
||||
rm -rf $(_PSWRAP_C_FILES) $(_PSWRAP_H_FILES) *.palette)
|
||||
endif
|
||||
|
||||
internal-distclean::
|
||||
ifeq ($(GNUSTEP_IS_FLATTENED), no)
|
||||
(cd $(GNUSTEP_BUILD_DIR); rm -rf *.palette)
|
||||
endif
|
||||
|
||||
PALETTES_WITH_SUBPROJECTS = $(strip $(foreach palette,$(PALETTE_NAME),$(patsubst %,$(palette),$($(palette)_SUBPROJECTS))))
|
||||
ifneq ($(PALETTES_WITH_SUBPROJECTS),)
|
||||
internal-clean:: $(PALETTES_WITH_SUBPROJECTS:=.clean.palette.subprojects)
|
||||
endif
|
||||
|
||||
internal-strings:: $(PALETTE_NAME:=.strings.palette.variables)
|
||||
|
||||
$(PALETTE_NAME):
|
||||
@$(MAKE) -f $(MAKEFILE_NAME) --no-print-directory \
|
||||
$@.all.palette.variables
|
|
@ -1,39 +0,0 @@
|
|||
#
|
||||
# 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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
ifeq ($(RULES_MAKE_LOADED),)
|
||||
include $(GNUSTEP_MAKEFILES)/rules.make
|
||||
endif
|
||||
|
||||
RESOURCE_SET_NAME := $(strip $(RESOURCE_SET_NAME))
|
||||
|
||||
# Only install and uninstall are actually performed for this project type
|
||||
|
||||
internal-all::
|
||||
|
||||
internal-install:: $(RESOURCE_SET_NAME:=.install.resource-set.variables)
|
||||
|
||||
internal-uninstall:: $(RESOURCE_SET_NAME:=.uninstall.resource-set.variables)
|
||||
|
||||
internal-clean::
|
||||
|
||||
internal-distclean::
|
||||
|
|
@ -1,262 +0,0 @@
|
|||
#
|
||||
# rpm.make
|
||||
#
|
||||
# Makefile rules to build a RPM spec files and RPM packages
|
||||
#
|
||||
# Copyright (C) 2001-2007 Free Software Foundation, Inc.
|
||||
#
|
||||
# Author: Nicola Pero <n.pero@mi.flashnet.it>
|
||||
#
|
||||
# This file is part of the GNUstep Makefile Package.
|
||||
#
|
||||
# This library is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 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,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
#
|
||||
# FIXME: Move all this documentation into the documentation
|
||||
#
|
||||
|
||||
#
|
||||
# FIXME/TODO: Update for GNUSTEP_BUILD_DIR
|
||||
#
|
||||
|
||||
# rpm puts all tools, bundles, applications, subprojects, libraries,
|
||||
# etc specified in the GNUmakefile into a single rpm. There aren't any
|
||||
# provisions for putting separate apps/tools/etc in separate rpms
|
||||
# (other than putting them in separate dirs).
|
||||
#
|
||||
# Note: we don't make development packages separated from the standard
|
||||
# ones. Every package containing a library's object files will also
|
||||
# contain the header files for the library <only the ones which were
|
||||
# declared in the makefile of course>.
|
||||
#
|
||||
#
|
||||
# When building a package, the make package generates automatically:
|
||||
#
|
||||
# * the .tgz source file to be copied into where_you_build_rpms/SOURCES/
|
||||
# <generated by source-dist.make>
|
||||
#
|
||||
# * the spec file to be copied into where_you_build_rpms/SPECS/
|
||||
# <generate by rpm.make>
|
||||
#
|
||||
# at this point, to build the rpm you just do
|
||||
# cd where_you_build_rpms/SPECS/
|
||||
# rpm -ba my_package.spec
|
||||
#
|
||||
# If you are *very* lazy, typing `make rpm' will do it all automatically
|
||||
# for you. But in that case, you need to have set the shell environment
|
||||
# variable `RPM_TOPDIR' to the top dir of where you build rpms (eg,
|
||||
# /usr/src/redhat/).
|
||||
#
|
||||
|
||||
# To build the spec file for a package, you need to do two things:
|
||||
|
||||
# [1] Add - after common.make - the following lines in your GNUmakefile:
|
||||
#
|
||||
# PACKAGE_NAME = Gomoku
|
||||
# PACKAGE_VERSION = 1.1.1
|
||||
#
|
||||
# (replace them with name, version of your software). This is mainly
|
||||
# needed so that when you build the .tgz and the spec file, they have
|
||||
# names which are in sync. Make sure to keep the library version and
|
||||
# the package version in sync.
|
||||
#
|
||||
# The other important variable you may want to set in your makefiles is
|
||||
#
|
||||
# GNUSTEP_INSTALLATION_DOMAIN - Installation domain (defaults to LOCAL)
|
||||
#
|
||||
# Make sure that your filesystem layout matches the one of your target
|
||||
# system else your files might end up in the wrong directory when
|
||||
# installed. In other words, use the same version of gnustep-make
|
||||
# that will be used on the target system, and configured in the same
|
||||
# way.
|
||||
|
||||
# [2] Provide a $(PACKAGE_NAME).spec.in file, which contains the RPM
|
||||
# spec preamble. Here is an example:
|
||||
|
||||
# Summary: A table board game
|
||||
# Release: 1
|
||||
# License: GPL
|
||||
# Group: Amusements/Games
|
||||
# Source: http://www.gnustep.it/nicola/Applications/Gomoku/%{gs_name}-%{gs_version}.tar.gz
|
||||
#
|
||||
# %description
|
||||
# Gomoku is an extended TicTacToe game for GNUstep. You win the game if
|
||||
# you are able to put 5 of your pieces in a row, column or diagonal. You
|
||||
# loose if the computer does it before you. You can play the game on
|
||||
# boards of different size; the default size is 8 but 10 is also nice to
|
||||
# play. The game has 6 different difficulty levels.
|
||||
|
||||
# Comments:
|
||||
# you must not include: `Name', `Version', `BuildRoot' and `Prefix'
|
||||
# entries. These are generated automatically; `Name' and `Version'
|
||||
# from $(PACKAGE_NAME) and $(PACKAGE_VERSION), and so for BuildRoot
|
||||
# and Prefix. you might include all the other tags listed in the RPM
|
||||
# doc if you want.
|
||||
#
|
||||
# You can use the following if you need:
|
||||
# %{gs_name} expands to the value of the make variable PACKAGE_NAME
|
||||
# %{gs_version} expands to the value of the make variable PACKAGE_VERSION
|
||||
# (make sure you use them in `Source:' as shown).
|
||||
#
|
||||
|
||||
# A special note: if you need `./configure' to be run before
|
||||
# compilation (usually only needed for GNUstep core libraries
|
||||
# themselves), define the following make variable:
|
||||
#
|
||||
# PACKAGE_NEEDS_CONFIGURE = YES
|
||||
#
|
||||
# in your makefile.
|
||||
|
||||
#
|
||||
# At this point, typing
|
||||
# `make dist' will generate the .tgz (can be used outside rpm.make)
|
||||
# `make specfile' will generate the (matching) specfile.
|
||||
#
|
||||
|
||||
#
|
||||
# As said before, if you are very lazy, typing something like
|
||||
#
|
||||
# make distclean
|
||||
# `RPM_TOPDIR=/usr/src/redhat' make rpm
|
||||
#
|
||||
# will do the whole job once you have written your '.spec.in' file,
|
||||
# and set the PACKAGE_NAME and PACKAGE_VERSION variables in the makefile.
|
||||
# The generated rpm will be in /usr/src/redhat/RPMS/.
|
||||
#
|
||||
|
||||
#
|
||||
# Internal targets
|
||||
#
|
||||
|
||||
# If we have been called with something like
|
||||
#
|
||||
# make DESTDIR=/var/tmp/package-build filelist=yes install
|
||||
#
|
||||
# we are being called inside the rpm installation stage, and we need
|
||||
# to produce the file list from the installed files.
|
||||
#
|
||||
GNUSTEP_FILE_LIST = $(GNUSTEP_OBJ_DIR)/file-list
|
||||
|
||||
ifeq ($(filelist),yes)
|
||||
|
||||
# Build the file-list only at top level
|
||||
# ifeq ($(MAKELEVEL),0)
|
||||
|
||||
# Remove the old file list before installing, and initialize the new one.
|
||||
before-install:: $(GNUSTEP_OBJ_DIR)
|
||||
$(ECHO_NOTHING)rm -f $(GNUSTEP_FILE_LIST)$(END_ECHO)
|
||||
$(ECHO_NOTHING)echo "%attr (-, root, root)" >> $(GNUSTEP_FILE_LIST)$(END_ECHO)
|
||||
|
||||
# Get the list of files inside DESTDIR
|
||||
internal-after-install::
|
||||
$(ECHO_NOTHING)for file in `$(TAR) Pcf - $(DESTDIR) | $(TAR) t`; do \
|
||||
if [ -d "$$file" ]; then \
|
||||
echo "%dir $$file" > /dev/null; \
|
||||
else \
|
||||
echo "$$file" >> $(GNUSTEP_FILE_LIST); \
|
||||
fi; \
|
||||
done$(END_ECHO)
|
||||
$(ECHO_NOTHING)sed -e "s|^$(DESTDIR)||" $(GNUSTEP_FILE_LIST) > file-list.tmp$(END_ECHO)
|
||||
$(ECHO_NOTHING)mv file-list.tmp $(GNUSTEP_FILE_LIST)$(END_ECHO)
|
||||
|
||||
# endif # MAKELEVEL
|
||||
|
||||
endif # filelist == yes
|
||||
|
||||
# NB: The filelist is automatically deleted when GNUSTEP_OBJ_DIR is
|
||||
# deleted (that is, by make clean)
|
||||
|
||||
SPEC_FILE_NAME=$(PACKAGE_NAME).spec
|
||||
SPEC_FILE=$(GNUSTEP_OBJ_DIR)/$(SPEC_FILE_NAME)
|
||||
SPEC_RULES_TEMPLATE=$(GNUSTEP_MAKEFILES)/spec-rules.template
|
||||
SPEC_IN=$(PACKAGE_NAME).spec.in
|
||||
SPEC_SCRIPT_IN=$(PACKAGE_NAME).script.spec.in
|
||||
|
||||
.PHONY: specfile rpm check-RPM_TOPDIR
|
||||
|
||||
#
|
||||
# The user will type `make specfile' to generate the specfile
|
||||
#
|
||||
specfile: $(SPEC_FILE)
|
||||
|
||||
#
|
||||
# This is the real target - depends on having a correct .spec.in file
|
||||
#
|
||||
$(SPEC_FILE): $(SPEC_IN) $(GNUSTEP_OBJ_DIR)
|
||||
$(ECHO_NOTHING)echo "Generating the spec file..."$(END_ECHO)
|
||||
$(ECHO_NOTHING)rm -f $@$(END_ECHO)
|
||||
$(ECHO_NOTHING)echo "##" >> $@$(END_ECHO)
|
||||
$(ECHO_NOTHING)echo "## Generated automatically by GNUstep make - do not edit!" >> $@$(END_ECHO)
|
||||
$(ECHO_NOTHING)echo "## Edit the $(SPEC_IN) file instead" >> $@$(END_ECHO)
|
||||
$(ECHO_NOTHING)echo "##" >> $@$(END_ECHO)
|
||||
$(ECHO_NOTHING)echo " " >> $@$(END_ECHO)
|
||||
$(ECHO_NOTHING)echo "## Code dynamically generated" >> $@$(END_ECHO)
|
||||
$(ECHO_NOTHING)echo "%define gs_name $(PACKAGE_NAME)" >> $@$(END_ECHO)
|
||||
$(ECHO_NOTHING)echo "%define gs_version $(PACKAGE_VERSION)" >> $@$(END_ECHO)
|
||||
$(ECHO_NOTHING)echo "%define gs_install_domain $(GNUSTEP_INSTALLATION_DOMAIN)" >> $@$(END_ECHO)
|
||||
$(ECHO_NOTHING)echo "%define gs_makefiles $(GNUSTEP_MAKEFILES)" >> $@$(END_ECHO)
|
||||
$(ECHO_NOTHING)echo "%define gs_file_list $(GNUSTEP_FILE_LIST)" >> $@$(END_ECHO)
|
||||
ifeq ($(PACKAGE_NEEDS_CONFIGURE),YES)
|
||||
$(ECHO_NOTHING)echo "%define gs_configure YES" >> $@$(END_ECHO)
|
||||
else
|
||||
$(ECHO_NOTHING)echo "%define gs_configure NO" >> $@$(END_ECHO)
|
||||
endif
|
||||
$(ECHO_NOTHING)echo " " >> $@$(END_ECHO)
|
||||
$(ECHO_NOTHING)echo "Name: %{gs_name}" >> $@$(END_ECHO)
|
||||
$(ECHO_NOTHING)echo "Version: %{gs_version}" >> $@$(END_ECHO)
|
||||
$(ECHO_NOTHING)echo "BuildRoot: /var/tmp/%{gs_name}-buildroot" >> $@$(END_ECHO)
|
||||
$(ECHO_NOTHING)echo "" >> $@$(END_ECHO)
|
||||
$(ECHO_NOTHING)echo "## Code from $(SPEC_IN)" >> $@$(END_ECHO)
|
||||
$(ECHO_NOTHING)cat $(SPEC_IN) >> $@$(END_ECHO)
|
||||
$(ECHO_NOTHING)echo "" >> $@$(END_ECHO)
|
||||
$(ECHO_NOTHING)echo "## Fixed rules from $(SPEC_RULES_TEMPLATE)" >> $@$(END_ECHO)
|
||||
$(ECHO_NOTHING)cat $(SPEC_RULES_TEMPLATE) >> $@$(END_ECHO)
|
||||
$(ECHO_NOTHING)if [ -f $(SPEC_SCRIPT_IN) ]; then \
|
||||
echo "" >> $@; \
|
||||
echo "## Script rules from $(SPEC_SCRIPT_IN)" >> $@; \
|
||||
cat $(SPEC_SCRIPT_IN) >> $@; \
|
||||
fi$(END_ECHO)
|
||||
|
||||
check-RPM_TOPDIR:
|
||||
$(ECHO_NOTHING)if [ "$(RPM_TOPDIR)" = "" ]; then \
|
||||
echo "I can't build the RPM if you do not set your RPM_TOPDIR"; \
|
||||
echo "shell variable"; \
|
||||
exit 1; \
|
||||
fi;$(END_ECHO)
|
||||
|
||||
# In old RPM versions, building was done using 'rpm -ba'; in newer RPM
|
||||
# versions, it can only be done using 'rpmbuild -ba'. Try to support
|
||||
# the old RPM versions by using 'rpm' instead of 'rpmbuild', if
|
||||
# 'rpmbuild' is not available. This hack can presumably be removed
|
||||
# when all RPM versions on earth will have been updated to the new
|
||||
# setup (it might take a while).
|
||||
|
||||
rpm: check-RPM_TOPDIR dist specfile
|
||||
$(ECHO_NOTHING)echo "Generating the rpm..."$(END_ECHO)
|
||||
ifneq ($(RELEASE_DIR),)
|
||||
$(ECHO_NOTHING)cp $(RELEASE_DIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION).tar.gz \
|
||||
$(RPM_TOPDIR)/SOURCES/$(END_ECHO)
|
||||
else
|
||||
$(ECHO_NOTHING)cp ../$(PACKAGE_NAME)-$(PACKAGE_VERSION).tar.gz $(RPM_TOPDIR)/SOURCES/$(END_ECHO)
|
||||
endif
|
||||
$(ECHO_NOTHING)cp $(SPEC_FILE) $(RPM_TOPDIR)/SPECS/; \
|
||||
cd $(RPM_TOPDIR)/SPECS/; \
|
||||
if which rpmbuild > /dev/null 2>/dev/null; then \
|
||||
rpmbuild="rpmbuild"; \
|
||||
else \
|
||||
if which rpm > /dev/null 2>/dev/null; then \
|
||||
rpmbuild="rpm"; \
|
||||
else \
|
||||
echo "Error: You don't have rpm installed!"; \
|
||||
rpmbuild="rpmbuild"; \
|
||||
fi; \
|
||||
fi; \
|
||||
$${rpmbuild} -ba $(SPEC_FILE_NAME)$(END_ECHO)
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue