mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-08-11 19:55:15 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ddf896eb8e | ||
|
|
9aadbdf371 | ||
|
|
f1b769ff28 | ||
|
|
94ff2b9475 | ||
|
|
470d206b2e | ||
|
|
08f0a4e409 | ||
|
|
00fda01856 | ||
|
|
bf31619762 | ||
|
|
31a743b2bb | ||
|
|
48b43d9d83 | ||
|
|
4b9e71f993 | ||
|
|
16cd214585 | ||
|
|
f2c7ab2c1f | ||
|
|
2c377512c2 | ||
|
|
74c3b26d85 | ||
|
|
72ab1d45d2 | ||
|
|
d9302e4b73 | ||
|
|
f1394282f0 | ||
|
|
d8b1af2801 | ||
|
|
445cb4e989 | ||
|
|
f40703a29a | ||
|
|
e348b12ae0 | ||
|
|
ba6f6bf90f | ||
|
|
d9af6cc62f | ||
|
|
ab30845981 | ||
|
|
0b3870c112 | ||
|
|
e92a5d5bae | ||
|
|
02cbcfc577 | ||
|
|
8c67836b58 | ||
|
|
cae30a7df4 | ||
|
|
9fb2ad6738 | ||
|
|
8bce355d7c | ||
|
|
ae7c7ada67 | ||
|
|
9e42f7b625 | ||
|
|
f87fc33f87 | ||
|
|
7ba81a101f | ||
|
|
9190f3e726 | ||
|
|
330de47708 | ||
|
|
bb84601097 | ||
|
|
9a96ccfa20 | ||
|
|
6051d37287 | ||
|
|
2aec1bc1de | ||
|
|
c6e1f6235a | ||
|
|
ab6fbb02ad | ||
|
|
f2632e420f | ||
|
|
19f01e885f | ||
|
|
6792619fa8 | ||
|
|
645ff8cdee | ||
|
|
a726df0b44 | ||
|
|
ce209526ed | ||
|
|
b94bf14aac | ||
|
|
2a4426474d | ||
|
|
9022c575cc | ||
|
|
dae9263b7b | ||
|
|
cdd11a9322 | ||
|
|
da7ab9b7b0 | ||
|
|
0899b02570 | ||
|
|
0f23d6d25b | ||
|
|
47cef7a2ff | ||
|
|
7972022dac | ||
|
|
ea4f4c4c1b | ||
|
|
d97207ad77 | ||
|
|
3068221b53 | ||
|
|
6f0d1fd89d | ||
|
|
6526f6dbf7 | ||
|
|
817e461c23 | ||
|
|
c4e3dae3ac | ||
|
|
8cedc168fa | ||
|
|
3b14996787 | ||
|
|
041cad1677 | ||
|
|
31478b7ab7 | ||
|
|
e957bbb7d4 | ||
|
|
b5f513ef2c | ||
|
|
3afa674b1d | ||
|
|
ac481f3b08 | ||
|
|
010c94a243 | ||
|
|
d37a7c45b3 | ||
|
|
d63e24071f | ||
|
|
afd36419df | ||
|
|
6918b5fcc9 | ||
|
|
38e616f0f5 | ||
|
|
db433e9db8 | ||
|
|
870f12c270 | ||
|
|
e0a53a7f4a | ||
|
|
27c1ceb8da | ||
|
|
8f5d3a2dd5 | ||
|
|
adfd774c80 | ||
|
|
057194c61e | ||
|
|
a6f622cd50 | ||
|
|
2b8ce46775 | ||
|
|
19553c4e06 | ||
|
|
b1722803ec | ||
|
|
6f5e0eea04 | ||
|
|
e4ad4676be | ||
|
|
7b50efe542 | ||
|
|
cf90ca5d46 | ||
|
|
e373aad966 | ||
|
|
3e4c37cf7b | ||
|
|
dfaa776005 | ||
|
|
aecd294cb0 | ||
|
|
52eddd8c33 | ||
|
|
60403d1bc1 | ||
|
|
dd9f12de60 | ||
|
|
6085f203e1 | ||
|
|
7a360eeaed | ||
|
|
af550e2927 | ||
|
|
78632bbcdc | ||
|
|
483c899a17 |
+6
-23
@@ -1,29 +1,12 @@
|
|||||||
*.flc
|
|
||||||
*.patch *.log log patches applied
|
|
||||||
*.prj
|
|
||||||
ABOUT-NLS
|
|
||||||
COPYING
|
|
||||||
INSTALL
|
|
||||||
Makefile
|
Makefile
|
||||||
Makefile.in
|
|
||||||
_*
|
|
||||||
a.exe
|
|
||||||
a.out
|
|
||||||
aclocal.m4
|
|
||||||
autom4te.cache
|
|
||||||
b.out
|
|
||||||
bison-*
|
|
||||||
conf[0-9]*
|
|
||||||
confdefs*
|
|
||||||
config.cache
|
config.cache
|
||||||
config.h
|
config.h
|
||||||
config.hin
|
|
||||||
config.log
|
config.log
|
||||||
config.status
|
config.status
|
||||||
configure
|
|
||||||
configure.lineno
|
|
||||||
conftest*
|
|
||||||
intl
|
|
||||||
patches
|
|
||||||
releases
|
|
||||||
stamp-h*
|
stamp-h*
|
||||||
|
bison-*
|
||||||
|
patches
|
||||||
|
*.patch *.log log patches applied
|
||||||
|
*.prj
|
||||||
|
releases
|
||||||
|
autom4te.cache
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
patch_list='Bison Patches <[email protected]>'
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
data/glr.c
|
|
||||||
data/yacc.c
|
|
||||||
lib/yyerror.c
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
doc/bison.texinfo
|
|
||||||
@@ -0,0 +1,324 @@
|
|||||||
|
Notes on the Free Translation Project
|
||||||
|
*************************************
|
||||||
|
|
||||||
|
Free software is going international! The Free Translation Project
|
||||||
|
is a way to get maintainers of free software, translators, and users all
|
||||||
|
together, so that will gradually become able to speak many languages.
|
||||||
|
A few packages already provide translations for their messages.
|
||||||
|
|
||||||
|
If you found this `ABOUT-NLS' file inside a distribution, you may
|
||||||
|
assume that the distributed package does use GNU `gettext' internally,
|
||||||
|
itself available at your nearest GNU archive site. But you do _not_
|
||||||
|
need to install GNU `gettext' prior to configuring, installing or using
|
||||||
|
this package with messages translated.
|
||||||
|
|
||||||
|
Installers will find here some useful hints. These notes also
|
||||||
|
explain how users should proceed for getting the programs to use the
|
||||||
|
available translations. They tell how people wanting to contribute and
|
||||||
|
work at translations should contact the appropriate team.
|
||||||
|
|
||||||
|
When reporting bugs in the `intl/' directory or bugs which may be
|
||||||
|
related to internationalization, you should tell about the version of
|
||||||
|
`gettext' which is used. The information can be found in the
|
||||||
|
`intl/VERSION' file, in internationalized packages.
|
||||||
|
|
||||||
|
Quick configuration advice
|
||||||
|
==========================
|
||||||
|
|
||||||
|
If you want to exploit the full power of internationalization, you
|
||||||
|
should configure it using
|
||||||
|
|
||||||
|
./configure --with-included-gettext
|
||||||
|
|
||||||
|
to force usage of internationalizing routines provided within this
|
||||||
|
package, despite the existence of internationalizing capabilities in the
|
||||||
|
operating system where this package is being installed. So far, only
|
||||||
|
the `gettext' implementation in the GNU C library version 2 provides as
|
||||||
|
many features (such as locale alias, message inheritance, automatic
|
||||||
|
charset conversion or plural form handling) as the implementation here.
|
||||||
|
It is also not possible to offer this additional functionality on top
|
||||||
|
of a `catgets' implementation. Future versions of GNU `gettext' will
|
||||||
|
very likely convey even more functionality. So it might be a good idea
|
||||||
|
to change to GNU `gettext' as soon as possible.
|
||||||
|
|
||||||
|
So you need _not_ provide this option if you are using GNU libc 2 or
|
||||||
|
you have installed a recent copy of the GNU gettext package with the
|
||||||
|
included `libintl'.
|
||||||
|
|
||||||
|
INSTALL Matters
|
||||||
|
===============
|
||||||
|
|
||||||
|
Some packages are "localizable" when properly installed; the
|
||||||
|
programs they contain can be made to speak your own native language.
|
||||||
|
Most such packages use GNU `gettext'. Other packages have their own
|
||||||
|
ways to internationalization, predating GNU `gettext'.
|
||||||
|
|
||||||
|
By default, this package will be installed to allow translation of
|
||||||
|
messages. It will automatically detect whether the system already
|
||||||
|
provides the GNU `gettext' functions. If not, the GNU `gettext' own
|
||||||
|
library will be used. This library is wholly contained within this
|
||||||
|
package, usually in the `intl/' subdirectory, so prior installation of
|
||||||
|
the GNU `gettext' package is _not_ required. Installers may use
|
||||||
|
special options at configuration time for changing the default
|
||||||
|
behaviour. The commands:
|
||||||
|
|
||||||
|
./configure --with-included-gettext
|
||||||
|
./configure --disable-nls
|
||||||
|
|
||||||
|
will respectively bypass any pre-existing `gettext' to use the
|
||||||
|
internationalizing routines provided within this package, or else,
|
||||||
|
_totally_ disable translation of messages.
|
||||||
|
|
||||||
|
When you already have GNU `gettext' installed on your system and run
|
||||||
|
configure without an option for your new package, `configure' will
|
||||||
|
probably detect the previously built and installed `libintl.a' file and
|
||||||
|
will decide to use this. This might be not what is desirable. You
|
||||||
|
should use the more recent version of the GNU `gettext' library. I.e.
|
||||||
|
if the file `intl/VERSION' shows that the library which comes with this
|
||||||
|
package is more recent, you should use
|
||||||
|
|
||||||
|
./configure --with-included-gettext
|
||||||
|
|
||||||
|
to prevent auto-detection.
|
||||||
|
|
||||||
|
The configuration process will not test for the `catgets' function
|
||||||
|
and therefore it will not be used. The reason is that even an
|
||||||
|
emulation of `gettext' on top of `catgets' could not provide all the
|
||||||
|
extensions of the GNU `gettext' library.
|
||||||
|
|
||||||
|
Internationalized packages have usually many `po/LL.po' files, where
|
||||||
|
LL gives an ISO 639 two-letter code identifying the language. Unless
|
||||||
|
translations have been forbidden at `configure' time by using the
|
||||||
|
`--disable-nls' switch, all available translations are installed
|
||||||
|
together with the package. However, the environment variable `LINGUAS'
|
||||||
|
may be set, prior to configuration, to limit the installed set.
|
||||||
|
`LINGUAS' should then contain a space separated list of two-letter
|
||||||
|
codes, stating which languages are allowed.
|
||||||
|
|
||||||
|
Using This Package
|
||||||
|
==================
|
||||||
|
|
||||||
|
As a user, if your language has been installed for this package, you
|
||||||
|
only have to set the `LANG' environment variable to the appropriate
|
||||||
|
`LL_CC' combination. Here `LL' is an ISO 639 two-letter language code,
|
||||||
|
and `CC' is an ISO 3166 two-letter country code. For example, let's
|
||||||
|
suppose that you speak German and live in Germany. At the shell
|
||||||
|
prompt, merely execute `setenv LANG de_DE' (in `csh'),
|
||||||
|
`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash').
|
||||||
|
This can be done from your `.login' or `.profile' file, once and for
|
||||||
|
all.
|
||||||
|
|
||||||
|
You might think that the country code specification is redundant.
|
||||||
|
But in fact, some languages have dialects in different countries. For
|
||||||
|
example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The
|
||||||
|
country code serves to distinguish the dialects.
|
||||||
|
|
||||||
|
Not all programs have translations for all languages. By default, an
|
||||||
|
English message is shown in place of a nonexistent translation. If you
|
||||||
|
understand other languages, you can set up a priority list of languages.
|
||||||
|
This is done through a different environment variable, called
|
||||||
|
`LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG'
|
||||||
|
for the purpose of message handling, but you still need to have `LANG'
|
||||||
|
set to the primary language; this is required by other parts of the
|
||||||
|
system libraries. For example, some Swedish users who would rather
|
||||||
|
read translations in German than English for when Swedish is not
|
||||||
|
available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'.
|
||||||
|
|
||||||
|
In the `LANGUAGE' environment variable, but not in the `LANG'
|
||||||
|
environment variable, `LL_CC' combinations can be abbreviated as `LL'
|
||||||
|
to denote the language's main dialect. For example, `de' is equivalent
|
||||||
|
to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT'
|
||||||
|
(Portuguese as spoken in Portugal) in this context.
|
||||||
|
|
||||||
|
Translating Teams
|
||||||
|
=================
|
||||||
|
|
||||||
|
For the Free Translation Project to be a success, we need interested
|
||||||
|
people who like their own language and write it well, and who are also
|
||||||
|
able to synergize with other translators speaking the same language.
|
||||||
|
Each translation team has its own mailing list. The up-to-date list of
|
||||||
|
teams can be found at the Free Translation Project's homepage,
|
||||||
|
`http://www.iro.umontreal.ca/contrib/po/HTML/', in the "National teams"
|
||||||
|
area.
|
||||||
|
|
||||||
|
If you'd like to volunteer to _work_ at translating messages, you
|
||||||
|
should become a member of the translating team for your own language.
|
||||||
|
The subscribing address is _not_ the same as the list itself, it has
|
||||||
|
`-request' appended. For example, speakers of Swedish can send a
|
||||||
|
message to `[email protected]', having this message body:
|
||||||
|
|
||||||
|
subscribe
|
||||||
|
|
||||||
|
Keep in mind that team members are expected to participate
|
||||||
|
_actively_ in translations, or at solving translational difficulties,
|
||||||
|
rather than merely lurking around. If your team does not exist yet and
|
||||||
|
you want to start one, or if you are unsure about what to do or how to
|
||||||
|
get started, please write to `[email protected]' to reach the
|
||||||
|
coordinator for all translator teams.
|
||||||
|
|
||||||
|
The English team is special. It works at improving and uniformizing
|
||||||
|
the terminology in use. Proven linguistic skill are praised more than
|
||||||
|
programming skill, here.
|
||||||
|
|
||||||
|
Available Packages
|
||||||
|
==================
|
||||||
|
|
||||||
|
Languages are not equally supported in all packages. The following
|
||||||
|
matrix shows the current state of internationalization, as of September
|
||||||
|
2001. The matrix shows, in regard of each package, for which languages
|
||||||
|
PO files have been submitted to translation coordination, with a
|
||||||
|
translation percentage of at least 50%.
|
||||||
|
|
||||||
|
Ready PO files bg cs da de el en eo es et fi fr gl he hr id it ja
|
||||||
|
+----------------------------------------------------+
|
||||||
|
a2ps | [] [] [] |
|
||||||
|
bash | [] [] [] [] |
|
||||||
|
bfd | |
|
||||||
|
binutils | [] |
|
||||||
|
bison | [] [] [] [] [] |
|
||||||
|
clisp | [] [] [] [] |
|
||||||
|
cpio | [] [] [] [] [] |
|
||||||
|
diffutils | [] [] [] [] [] [] [] |
|
||||||
|
enscript | [] [] |
|
||||||
|
error | [] [] |
|
||||||
|
fetchmail | |
|
||||||
|
fileutils | [] [] [] [] [] [] [] [] |
|
||||||
|
findutils | [] [] [] [] [] [] [] [] |
|
||||||
|
flex | [] [] [] |
|
||||||
|
freetype | |
|
||||||
|
gas | |
|
||||||
|
gawk | [] [] |
|
||||||
|
gcal | |
|
||||||
|
gcc | |
|
||||||
|
gettext | [] [] [] [] [] [] [] [] [] [] |
|
||||||
|
gnupg | [] [] [] [] [] [] [] |
|
||||||
|
gprof | |
|
||||||
|
grep | [] [] [] [] [] [] [] [] |
|
||||||
|
hello | [] [] [] [] [] [] [] [] [] [] [] |
|
||||||
|
id-utils | [] [] [] |
|
||||||
|
indent | [] [] [] [] [] |
|
||||||
|
jpilot | [] |
|
||||||
|
kbd | |
|
||||||
|
ld | [] |
|
||||||
|
libc | [] [] [] [] [] [] [] [] |
|
||||||
|
lilypond | [] |
|
||||||
|
lynx | [] [] [] [] |
|
||||||
|
m4 | [] [] [] [] [] [] [] [] |
|
||||||
|
make | [] [] [] [] [] [] |
|
||||||
|
mysecretdiary | [] |
|
||||||
|
nano | [] [] [] |
|
||||||
|
opcodes | |
|
||||||
|
parted | [] [] [] |
|
||||||
|
ptx | [] [] [] [] [] [] [] |
|
||||||
|
python | |
|
||||||
|
recode | [] [] [] [] [] [] [] [] [] |
|
||||||
|
sed | [] [] [] [] [] [] [] [] [] [] [] [] |
|
||||||
|
sh-utils | [] [] [] [] [] [] [] [] [] [] |
|
||||||
|
sharutils | [] [] [] [] [] [] [] [] |
|
||||||
|
sketch | |
|
||||||
|
soundtracker | [] [] [] |
|
||||||
|
sp | |
|
||||||
|
tar | [] [] [] [] [] [] [] [] |
|
||||||
|
texinfo | [] [] [] [] [] [] |
|
||||||
|
textutils | [] [] [] [] [] [] [] [] |
|
||||||
|
util-linux | [] [] |
|
||||||
|
wdiff | [] [] [] |
|
||||||
|
wget | [] [] [] [] [] [] [] [] [] [] |
|
||||||
|
+----------------------------------------------------+
|
||||||
|
bg cs da de el en eo es et fi fr gl he hr id it ja
|
||||||
|
0 14 24 32 11 1 8 23 13 1 33 22 4 0 7 9 18
|
||||||
|
|
||||||
|
ko lv nb nl nn no pl pt pt_BR ru sk sl sv tr uk zh
|
||||||
|
+----------------------------------------------------+
|
||||||
|
a2ps | [] [] [] | 6
|
||||||
|
bash | | 4
|
||||||
|
bfd | | 0
|
||||||
|
binutils | | 1
|
||||||
|
bison | [] | 6
|
||||||
|
clisp | [] | 5
|
||||||
|
cpio | [] [] [] [] [] | 10
|
||||||
|
diffutils | [] [] [] [] | 11
|
||||||
|
enscript | [] [] [] | 5
|
||||||
|
error | [] [] | 4
|
||||||
|
fetchmail | | 0
|
||||||
|
fileutils | [] [] [] [] [] [] [] [] [] | 17
|
||||||
|
findutils | [] [] [] [] [] [] [] [] | 16
|
||||||
|
flex | [] [] [] | 6
|
||||||
|
freetype | | 0
|
||||||
|
gas | | 0
|
||||||
|
gawk | [] | 3
|
||||||
|
gcal | | 0
|
||||||
|
gcc | | 0
|
||||||
|
gettext | [] [] [] [] [] [] [] [] | 18
|
||||||
|
gnupg | [] [] [] | 10
|
||||||
|
gprof | | 0
|
||||||
|
grep | [] [] [] [] | 12
|
||||||
|
hello | [] [] [] [] [] [] [] [] [] [] [] | 22
|
||||||
|
id-utils | [] [] [] | 6
|
||||||
|
indent | [] [] [] [] [] [] [] | 12
|
||||||
|
jpilot | | 1
|
||||||
|
kbd | [] | 1
|
||||||
|
ld | | 1
|
||||||
|
libc | [] [] [] [] [] [] [] [] | 16
|
||||||
|
lilypond | [] [] | 3
|
||||||
|
lynx | [] [] [] [] | 8
|
||||||
|
m4 | [] [] [] [] | 12
|
||||||
|
make | [] [] [] [] [] [] | 12
|
||||||
|
mysecretdiary | | 1
|
||||||
|
nano | [] | 4
|
||||||
|
opcodes | [] | 1
|
||||||
|
parted | [] [] | 5
|
||||||
|
ptx | [] [] [] [] [] [] [] [] | 15
|
||||||
|
python | | 0
|
||||||
|
recode | [] [] [] [] | 13
|
||||||
|
sed | [] [] [] [] [] [] [] | 19
|
||||||
|
sh-utils | [] [] [] [] [] [] [] [] [] [] [] | 21
|
||||||
|
sharutils | [] [] [] | 11
|
||||||
|
sketch | | 0
|
||||||
|
soundtracker | | 3
|
||||||
|
sp | | 0
|
||||||
|
tar | [] [] [] [] [] [] [] | 15
|
||||||
|
texinfo | [] | 7
|
||||||
|
textutils | [] [] [] [] [] [] [] [] | 16
|
||||||
|
util-linux | [] [] | 4
|
||||||
|
wdiff | [] [] [] [] | 7
|
||||||
|
wget | [] [] [] [] [] [] [] | 17
|
||||||
|
+----------------------------------------------------+
|
||||||
|
33 teams ko lv nb nl nn no pl pt pt_BR ru sk sl sv tr uk zh
|
||||||
|
53 domains 9 1 6 20 0 6 17 1 13 25 10 11 23 21 2 2 387
|
||||||
|
|
||||||
|
Some counters in the preceding matrix are higher than the number of
|
||||||
|
visible blocks let us expect. This is because a few extra PO files are
|
||||||
|
used for implementing regional variants of languages, or language
|
||||||
|
dialects.
|
||||||
|
|
||||||
|
For a PO file in the matrix above to be effective, the package to
|
||||||
|
which it applies should also have been internationalized and
|
||||||
|
distributed as such by its maintainer. There might be an observable
|
||||||
|
lag between the mere existence a PO file and its wide availability in a
|
||||||
|
distribution.
|
||||||
|
|
||||||
|
If September 2001 seems to be old, you may fetch a more recent copy
|
||||||
|
of this `ABOUT-NLS' file on most GNU archive sites. The most
|
||||||
|
up-to-date matrix with full percentage details can be found at
|
||||||
|
`http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'.
|
||||||
|
|
||||||
|
Using `gettext' in new packages
|
||||||
|
===============================
|
||||||
|
|
||||||
|
If you are writing a freely available program and want to
|
||||||
|
internationalize it you are welcome to use GNU `gettext' in your
|
||||||
|
package. Of course you have to respect the GNU Library General Public
|
||||||
|
License which covers the use of the GNU `gettext' library. This means
|
||||||
|
in particular that even non-free programs can use `libintl' as a shared
|
||||||
|
library, whereas only free software can use `libintl' as a static
|
||||||
|
library or use modified versions of `libintl'.
|
||||||
|
|
||||||
|
Once the sources are changed appropriately and the setup can handle
|
||||||
|
to use of `gettext' the only thing missing are the translations. The
|
||||||
|
Free Translation Project is also available for packages which are not
|
||||||
|
developed inside the GNU project. Therefore the information given above
|
||||||
|
applies also for every other Free Software Project. Contact
|
||||||
|
`[email protected]' to make the `.pot' files available to
|
||||||
|
the translation teams.
|
||||||
|
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
Version 2, June 1991
|
Version 2, June 1991
|
||||||
|
|
||||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||||
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
Everyone is permitted to copy and distribute verbatim copies
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
of this license document, but changing it is not allowed.
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
@@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found.
|
|||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
|
||||||
|
|
||||||
Also add information on how to contact you by electronic and paper mail.
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
@@ -313,7 +313,7 @@ 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
|
If the program is interactive, make it output a short notice like this
|
||||||
when it starts in an interactive mode:
|
when it starts in an interactive mode:
|
||||||
|
|
||||||
Gnomovision version 69, Copyright (C) year name of author
|
Gnomovision version 69, Copyright (C) year name of author
|
||||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||||
This is free software, and you are welcome to redistribute it
|
This is free software, and you are welcome to redistribute it
|
||||||
under certain conditions; type `show c' for details.
|
under certain conditions; type `show c' for details.
|
||||||
|
|||||||
-26
@@ -4,31 +4,9 @@
|
|||||||
# It is necessary if you want to build targets usually of interest
|
# It is necessary if you want to build targets usually of interest
|
||||||
# only to the maintainer.
|
# only to the maintainer.
|
||||||
|
|
||||||
# Copyright (C) 2001, 2003 Free Software Foundation, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
# Systems where /bin/sh is not the default shell need this. The $(shell)
|
# Systems where /bin/sh is not the default shell need this. The $(shell)
|
||||||
# command below won't work with e.g. stock DOS/Windows shells.
|
# command below won't work with e.g. stock DOS/Windows shells.
|
||||||
ifeq ($(wildcard /bin/s[h]),/bin/sh)
|
|
||||||
SHELL = /bin/sh
|
SHELL = /bin/sh
|
||||||
else
|
|
||||||
# will be used only with the next shell-test line, then overwritten
|
|
||||||
# by a configured-in value
|
|
||||||
SHELL = sh
|
|
||||||
endif
|
|
||||||
|
|
||||||
have-Makefile := $(shell test -f Makefile && echo yes)
|
have-Makefile := $(shell test -f Makefile && echo yes)
|
||||||
|
|
||||||
@@ -36,11 +14,7 @@ have-Makefile := $(shell test -f Makefile && echo yes)
|
|||||||
# give them a diagnostic.
|
# give them a diagnostic.
|
||||||
ifeq ($(have-Makefile),yes)
|
ifeq ($(have-Makefile),yes)
|
||||||
|
|
||||||
# Make tar archive easier to reproduce.
|
|
||||||
export TAR_OPTIONS = --owner=0 --group=0 --numeric-owner
|
|
||||||
|
|
||||||
include Makefile
|
include Makefile
|
||||||
include $(srcdir)/Makefile.cfg
|
|
||||||
include $(srcdir)/Makefile.maint
|
include $(srcdir)/Makefile.maint
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -1,138 +0,0 @@
|
|||||||
-*- outline -*-
|
|
||||||
|
|
||||||
This file attempts to describe the rules to use when hacking Bison.
|
|
||||||
Don't put this file into the distribution. Don't mention it in the
|
|
||||||
ChangeLog.
|
|
||||||
|
|
||||||
Everything related to the development of Bison is on Savannah:
|
|
||||||
|
|
||||||
http://savannah.gnu.org/projects/bison/
|
|
||||||
|
|
||||||
|
|
||||||
* Administrivia
|
|
||||||
|
|
||||||
** If you incorporate a change from somebody on the net:
|
|
||||||
First, if it is a large change, you must make sure they have signed
|
|
||||||
the appropriate paperwork. Second, be sure to add their name and
|
|
||||||
email address to THANKS.
|
|
||||||
|
|
||||||
** If a change fixes a test, mention the test in the ChangeLog entry.
|
|
||||||
|
|
||||||
** Bug reports
|
|
||||||
If somebody reports a new bug, mention his name in the ChangeLog entry
|
|
||||||
and in the test case you write. Put him into THANKS.
|
|
||||||
|
|
||||||
The correct response to most actual bugs is to write a new test case
|
|
||||||
which demonstrates the bug. Then fix the bug, re-run the test suite,
|
|
||||||
and check everything in.
|
|
||||||
|
|
||||||
|
|
||||||
* Hacking
|
|
||||||
|
|
||||||
** Visible changes
|
|
||||||
Which include serious bug fixes, must be mentioned in NEWS.
|
|
||||||
|
|
||||||
** Translations
|
|
||||||
Only user visible strings are to be translated: error messages, bits
|
|
||||||
of the .output file etc. This excludes impossible error messages
|
|
||||||
(comparable to assert/abort), and all the --trace output which is
|
|
||||||
meant for the maintainers only.
|
|
||||||
|
|
||||||
|
|
||||||
* Test suite
|
|
||||||
|
|
||||||
** make check
|
|
||||||
Use liberally.
|
|
||||||
|
|
||||||
** Release checks
|
|
||||||
Try to run the test suite with more severe conditions before a
|
|
||||||
release:
|
|
||||||
|
|
||||||
- Configure the package with --enable-gcc-warnings, so that one checks
|
|
||||||
that 1. Bison compiles cleanly, 2. the parsers it produces compile
|
|
||||||
cleanly too.
|
|
||||||
|
|
||||||
- run `make maintainer-check' which:
|
|
||||||
- runs `valgrind -q bison' to run Bison under Valgrind.
|
|
||||||
- runs the parsers under Valgrind.
|
|
||||||
- runs the test suite with G++ as C compiler...
|
|
||||||
|
|
||||||
- Change tests/atlocal/CFLAGS to add your preferred options. For
|
|
||||||
instance, `-traditional' to check that the parsers are K&R. Note
|
|
||||||
that it does not make sense for glr.c, which should be ANSI,
|
|
||||||
but currently is actually GNU C, nor for lalr1.cc, which anyway is
|
|
||||||
not exercised yet in the test suite.
|
|
||||||
|
|
||||||
|
|
||||||
* Release Procedure
|
|
||||||
|
|
||||||
** Try to get the *.pot files to the Translation Project at least one week
|
|
||||||
before a stable release, to give them time to translate them.
|
|
||||||
|
|
||||||
** Tests
|
|
||||||
See above.
|
|
||||||
|
|
||||||
** Update the foreign files
|
|
||||||
Running `./bootstrap' in the top level should update them all for you.
|
|
||||||
This covers PO files too. Sometimes a PO file contains problems that
|
|
||||||
causes it to be rejected by recent Gettext releases; please report
|
|
||||||
these to the Translation Project.
|
|
||||||
|
|
||||||
** Update NEWS
|
|
||||||
The version number, *and* the date of the release (including for
|
|
||||||
betas).
|
|
||||||
|
|
||||||
** Update ChangeLog
|
|
||||||
Should have an entry similar to `Version 1.49b.'.
|
|
||||||
Check all this in once `make distcheck' passes.
|
|
||||||
|
|
||||||
** make alpha
|
|
||||||
Running `make alpha' is absolutely perfect for beta releases: it makes
|
|
||||||
the tarballs, the xdeltas, and prepares (in /tmp/) a proto
|
|
||||||
announcement. It is so neat, that that's what I use anyway for
|
|
||||||
genuine releases, but adjusting things by hand (e.g., the urls in the
|
|
||||||
announcement file, the ChangeLog which is not needed etc.).
|
|
||||||
|
|
||||||
If it fails, you're on your own...
|
|
||||||
|
|
||||||
It requires GNU Make.
|
|
||||||
|
|
||||||
** Upload
|
|
||||||
Put the tarballs/xdeltas where they should be. Or put it somewhere,
|
|
||||||
and send the URL to [email protected].
|
|
||||||
|
|
||||||
** Bump the version number
|
|
||||||
In configure.ac. Run `make', check this in.
|
|
||||||
|
|
||||||
** Announce
|
|
||||||
Complete/fix the announcement file, and send it at least to
|
|
||||||
[email protected] (if a real release, or a ``serious beta''),
|
|
||||||
[email protected], [email protected], [email protected],
|
|
||||||
and [email protected].
|
|
||||||
|
|
||||||
Send the same announcement on the comp.compilers newsgroup by sending
|
|
||||||
email to [email protected]. Do not make any Cc as the moderator will
|
|
||||||
throw away anything cross-posted or Cc'ed. It really needs to be a
|
|
||||||
separate message.
|
|
||||||
|
|
||||||
|
|
||||||
-----
|
|
||||||
|
|
||||||
Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
This file is part of GNU Bison.
|
|
||||||
|
|
||||||
GNU Bison is free software; you can 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, or (at your option)
|
|
||||||
any later version.
|
|
||||||
|
|
||||||
GNU Bison 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 GNU Bison; see the file COPYING. If not, write to the Free
|
|
||||||
Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
|
||||||
02110-1301, USA.
|
|
||||||
@@ -0,0 +1,231 @@
|
|||||||
|
Copyright 1994, 1995, 1996, 1999, 2000, 2001 Free Software Foundation,
|
||||||
|
Inc.
|
||||||
|
|
||||||
|
This file is free documentation; the Free Software Foundation gives
|
||||||
|
unlimited permission to copy, distribute and modify it.
|
||||||
|
|
||||||
|
Basic Installation
|
||||||
|
==================
|
||||||
|
|
||||||
|
These are generic installation instructions.
|
||||||
|
|
||||||
|
The `configure' shell script attempts to guess correct values for
|
||||||
|
various system-dependent variables used during compilation. It uses
|
||||||
|
those values to create a `Makefile' in each directory of the package.
|
||||||
|
It may also create one or more `.h' files containing system-dependent
|
||||||
|
definitions. Finally, it creates a shell script `config.status' that
|
||||||
|
you can run in the future to recreate the current configuration, and a
|
||||||
|
file `config.log' containing compiler output (useful mainly for
|
||||||
|
debugging `configure').
|
||||||
|
|
||||||
|
It can also use an optional file (typically called `config.cache'
|
||||||
|
and enabled with `--cache-file=config.cache' or simply `-C') that saves
|
||||||
|
the results of its tests to speed up reconfiguring. (Caching is
|
||||||
|
disabled by default to prevent problems with accidental use of stale
|
||||||
|
cache files.)
|
||||||
|
|
||||||
|
If you need to do unusual things to compile the package, please try
|
||||||
|
to figure out how `configure' could check whether to do them, and mail
|
||||||
|
diffs or instructions to the address given in the `README' so they can
|
||||||
|
be considered for the next release. If you are using the cache, and at
|
||||||
|
some point `config.cache' contains results you don't want to keep, you
|
||||||
|
may remove or edit it.
|
||||||
|
|
||||||
|
The file `configure.ac' (or `configure.in') is used to create
|
||||||
|
`configure' by a program called `autoconf'. You only need
|
||||||
|
`configure.ac' if you want to change it or regenerate `configure' using
|
||||||
|
a newer version of `autoconf'.
|
||||||
|
|
||||||
|
The simplest way to compile this package is:
|
||||||
|
|
||||||
|
1. `cd' to the directory containing the package's source code and type
|
||||||
|
`./configure' to configure the package for your system. If you're
|
||||||
|
using `csh' on an old version of System V, you might need to type
|
||||||
|
`sh ./configure' instead to prevent `csh' from trying to execute
|
||||||
|
`configure' itself.
|
||||||
|
|
||||||
|
Running `configure' takes awhile. While running, it prints some
|
||||||
|
messages telling which features it is checking for.
|
||||||
|
|
||||||
|
2. Type `make' to compile the package.
|
||||||
|
|
||||||
|
3. Optionally, type `make check' to run any self-tests that come with
|
||||||
|
the package.
|
||||||
|
|
||||||
|
4. Type `make install' to install the programs and any data files and
|
||||||
|
documentation.
|
||||||
|
|
||||||
|
5. You can remove the program binaries and object files from the
|
||||||
|
source code directory by typing `make clean'. To also remove the
|
||||||
|
files that `configure' created (so you can compile the package for
|
||||||
|
a different kind of computer), type `make distclean'. There is
|
||||||
|
also a `make maintainer-clean' target, but that is intended mainly
|
||||||
|
for the package's developers. If you use it, you may have to get
|
||||||
|
all sorts of other programs in order to regenerate files that came
|
||||||
|
with the distribution.
|
||||||
|
|
||||||
|
Compilers and Options
|
||||||
|
=====================
|
||||||
|
|
||||||
|
Some systems require unusual options for compilation or linking that
|
||||||
|
the `configure' script does not know about. Run `./configure --help'
|
||||||
|
for details on some of the pertinent environment variables.
|
||||||
|
|
||||||
|
You can give `configure' initial values for variables by setting
|
||||||
|
them in the environment. You can do that on the command line like this:
|
||||||
|
|
||||||
|
./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
|
||||||
|
|
||||||
|
*Note Defining Variables::, for more details.
|
||||||
|
|
||||||
|
Compiling For Multiple Architectures
|
||||||
|
====================================
|
||||||
|
|
||||||
|
You can compile the package for more than one kind of computer at the
|
||||||
|
same time, by placing the object files for each architecture in their
|
||||||
|
own directory. To do this, you must use a version of `make' that
|
||||||
|
supports the `VPATH' variable, such as GNU `make'. `cd' to the
|
||||||
|
directory where you want the object files and executables to go and run
|
||||||
|
the `configure' script. `configure' automatically checks for the
|
||||||
|
source code in the directory that `configure' is in and in `..'.
|
||||||
|
|
||||||
|
If you have to use a `make' that does not support the `VPATH'
|
||||||
|
variable, you have to compile the package for one architecture at a
|
||||||
|
time in the source code directory. After you have installed the
|
||||||
|
package for one architecture, use `make distclean' before reconfiguring
|
||||||
|
for another architecture.
|
||||||
|
|
||||||
|
Installation Names
|
||||||
|
==================
|
||||||
|
|
||||||
|
By default, `make install' will install the package's files in
|
||||||
|
`/usr/local/bin', `/usr/local/man', etc. You can specify an
|
||||||
|
installation prefix other than `/usr/local' by giving `configure' the
|
||||||
|
option `--prefix=PATH'.
|
||||||
|
|
||||||
|
You can specify separate installation prefixes for
|
||||||
|
architecture-specific files and architecture-independent files. If you
|
||||||
|
give `configure' the option `--exec-prefix=PATH', the package will use
|
||||||
|
PATH as the prefix for installing programs and libraries.
|
||||||
|
Documentation and other data files will still use the regular prefix.
|
||||||
|
|
||||||
|
In addition, if you use an unusual directory layout you can give
|
||||||
|
options like `--bindir=PATH' to specify different values for particular
|
||||||
|
kinds of files. Run `configure --help' for a list of the directories
|
||||||
|
you can set and what kinds of files go in them.
|
||||||
|
|
||||||
|
If the package supports it, you can cause programs to be installed
|
||||||
|
with an extra prefix or suffix on their names by giving `configure' the
|
||||||
|
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
|
||||||
|
|
||||||
|
Optional Features
|
||||||
|
=================
|
||||||
|
|
||||||
|
Some packages pay attention to `--enable-FEATURE' options to
|
||||||
|
`configure', where FEATURE indicates an optional part of the package.
|
||||||
|
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
|
||||||
|
is something like `gnu-as' or `x' (for the X Window System). The
|
||||||
|
`README' should mention any `--enable-' and `--with-' options that the
|
||||||
|
package recognizes.
|
||||||
|
|
||||||
|
For packages that use the X Window System, `configure' can usually
|
||||||
|
find the X include and library files automatically, but if it doesn't,
|
||||||
|
you can use the `configure' options `--x-includes=DIR' and
|
||||||
|
`--x-libraries=DIR' to specify their locations.
|
||||||
|
|
||||||
|
Specifying the System Type
|
||||||
|
==========================
|
||||||
|
|
||||||
|
There may be some features `configure' cannot figure out
|
||||||
|
automatically, but needs to determine by the type of host the package
|
||||||
|
will run on. Usually `configure' can figure that out, but if it prints
|
||||||
|
a message saying it cannot guess the host type, give it the
|
||||||
|
`--build=TYPE' option. TYPE can either be a short name for the system
|
||||||
|
type, such as `sun4', or a canonical name which has the form:
|
||||||
|
|
||||||
|
CPU-COMPANY-SYSTEM
|
||||||
|
|
||||||
|
where SYSTEM can have one of these forms:
|
||||||
|
|
||||||
|
OS KERNEL-OS
|
||||||
|
|
||||||
|
See the file `config.sub' for the possible values of each field. If
|
||||||
|
`config.sub' isn't included in this package, then this package doesn't
|
||||||
|
need to know the host type.
|
||||||
|
|
||||||
|
If you are _building_ compiler tools for cross-compiling, you should
|
||||||
|
use the `--target=TYPE' option to select the type of system they will
|
||||||
|
produce code for.
|
||||||
|
|
||||||
|
If you want to _use_ a cross compiler, that generates code for a
|
||||||
|
platform different from the build platform, you should specify the host
|
||||||
|
platform (i.e., that on which the generated programs will eventually be
|
||||||
|
run) with `--host=TYPE'. In this case, you should also specify the
|
||||||
|
build platform with `--build=TYPE', because, in this case, it may not
|
||||||
|
be possible to guess the build platform (it sometimes involves
|
||||||
|
compiling and running simple test programs, and this can't be done if
|
||||||
|
the compiler is a cross compiler).
|
||||||
|
|
||||||
|
Sharing Defaults
|
||||||
|
================
|
||||||
|
|
||||||
|
If you want to set default values for `configure' scripts to share,
|
||||||
|
you can create a site shell script called `config.site' that gives
|
||||||
|
default values for variables like `CC', `cache_file', and `prefix'.
|
||||||
|
`configure' looks for `PREFIX/share/config.site' if it exists, then
|
||||||
|
`PREFIX/etc/config.site' if it exists. Or, you can set the
|
||||||
|
`CONFIG_SITE' environment variable to the location of the site script.
|
||||||
|
A warning: not all `configure' scripts look for a site script.
|
||||||
|
|
||||||
|
Defining Variables
|
||||||
|
==================
|
||||||
|
|
||||||
|
Variables not defined in a site shell script can be set in the
|
||||||
|
environment passed to `configure'. However, some packages may run
|
||||||
|
configure again during the build, and the customized values of these
|
||||||
|
variables may be lost. In order to avoid this problem, you should set
|
||||||
|
them in the `configure' command line, using `VAR=value'. For example:
|
||||||
|
|
||||||
|
./configure CC=/usr/local2/bin/gcc
|
||||||
|
|
||||||
|
will cause the specified gcc to be used as the C compiler (unless it is
|
||||||
|
overridden in the site shell script).
|
||||||
|
|
||||||
|
`configure' Invocation
|
||||||
|
======================
|
||||||
|
|
||||||
|
`configure' recognizes the following options to control how it
|
||||||
|
operates.
|
||||||
|
|
||||||
|
`--help'
|
||||||
|
`-h'
|
||||||
|
Print a summary of the options to `configure', and exit.
|
||||||
|
|
||||||
|
`--version'
|
||||||
|
`-V'
|
||||||
|
Print the version of Autoconf used to generate the `configure'
|
||||||
|
script, and exit.
|
||||||
|
|
||||||
|
`--cache-file=FILE'
|
||||||
|
Enable the cache: use and save the results of the tests in FILE,
|
||||||
|
traditionally `config.cache'. FILE defaults to `/dev/null' to
|
||||||
|
disable caching.
|
||||||
|
|
||||||
|
`--config-cache'
|
||||||
|
`-C'
|
||||||
|
Alias for `--cache-file=config.cache'.
|
||||||
|
|
||||||
|
`--quiet'
|
||||||
|
`--silent'
|
||||||
|
`-q'
|
||||||
|
Do not print messages saying which checks are being made. To
|
||||||
|
suppress all normal output, redirect it to `/dev/null' (any error
|
||||||
|
messages will still be shown).
|
||||||
|
|
||||||
|
`--srcdir=DIR'
|
||||||
|
Look for the package's source code in directory DIR. Usually
|
||||||
|
`configure' can determine that directory automatically.
|
||||||
|
|
||||||
|
`configure' also accepts some other, not widely useful, options. Run
|
||||||
|
`configure --help' for more details.
|
||||||
|
|
||||||
+22
-29
@@ -1,37 +1,30 @@
|
|||||||
## Process this file with automake to produce Makefile.in -*-Makefile-*-
|
## Process this file with automake to produce Makefile.in -*-Makefile-*-
|
||||||
## Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
|
AUTOMAKE_OPTIONS = 1.5 check-news readme-alpha dist-bzip2
|
||||||
|
|
||||||
## 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
|
|
||||||
|
|
||||||
ACLOCAL_AMFLAGS = -I m4
|
ACLOCAL_AMFLAGS = -I m4
|
||||||
|
|
||||||
SUBDIRS = build-aux po runtime-po lib data src doc examples tests
|
SUBDIRS = config intl po lib src doc m4 tests
|
||||||
|
|
||||||
# Files installed for use by Automake.
|
EXTRA_DIST = REFERENCES configure.bat OChangeLog Makefile.maint GNUmakefile
|
||||||
aclocaldir = @aclocaldir@
|
|
||||||
aclocal_DATA = m4/bison-i18n.m4
|
|
||||||
|
|
||||||
EXTRA_DIST = GNUmakefile Makefile.cfg Makefile.maint \
|
DISTCLEANFILES = intl/libintl.h
|
||||||
OChangeLog PACKAGING \
|
|
||||||
djgpp/Makefile.maint djgpp/README.in djgpp/config.bat \
|
|
||||||
djgpp/config.sed djgpp/config.site djgpp/config_h.sed \
|
|
||||||
djgpp/subpipe.c djgpp/subpipe.h djgpp/djunpack.bat \
|
|
||||||
djgpp/fnchange.lst
|
|
||||||
|
|
||||||
|
|
||||||
.PHONY: maintainer-check
|
## ---------------------------- ##
|
||||||
maintainer-check:
|
## Customizing Makefile.maint. ##
|
||||||
cd tests && $(MAKE) $(AM_MAKEFLAGS) $@
|
## ---------------------------- ##
|
||||||
|
|
||||||
|
move_if_change = $(srcdir)/config/move-if-change
|
||||||
|
prev_version_file = $(srcdir)/config/prev-version.txt
|
||||||
|
release_archive_dir = releases
|
||||||
|
|
||||||
|
# Uploading betas.
|
||||||
|
hosts = alpha
|
||||||
|
alpha_host = alpha.gnu.org
|
||||||
|
alpha_url_dir = gnu/bison
|
||||||
|
|
||||||
|
# Files to update automatically.
|
||||||
|
wget_files = $(srcdir)/config/config.guess $(srcdir)/config/config.sub \
|
||||||
|
$(srcdir)/config/texinfo.tex
|
||||||
|
|
||||||
|
cvs_files = $(srcdir)/config/missing
|
||||||
|
|||||||
@@ -1,48 +0,0 @@
|
|||||||
# Customize Makefile.maint for Bison. -*- makefile -*-
|
|
||||||
# Copyright (C) 2003, 2005, 2006 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
# 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, 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.
|
|
||||||
|
|
||||||
build_aux_dir = $(srcdir)/build-aux
|
|
||||||
prev_version_file = $(build_aux_dir)/prev-version.txt
|
|
||||||
announce_gen = $(build_aux_dir)/announce-gen
|
|
||||||
release_archive_dir = releases
|
|
||||||
|
|
||||||
# Use alpha.gnu.org for alpha and beta releases.
|
|
||||||
# Use ftp.gnu.org for major releases.
|
|
||||||
gnu_ftp_host-alpha = alpha
|
|
||||||
gnu_ftp_host-beta = alpha
|
|
||||||
gnu_ftp_host-major = ftp
|
|
||||||
gnu_rel_host = $(gnu_ftp_host-$(RELEASE_TYPE))
|
|
||||||
|
|
||||||
url_dir_list = \
|
|
||||||
ftp://$(gnu_rel_host).gnu.org/gnu/bison
|
|
||||||
|
|
||||||
# Files to update automatically.
|
|
||||||
wget_files = \
|
|
||||||
$(build_aux_dir)/config.guess \
|
|
||||||
$(build_aux_dir)/config.sub \
|
|
||||||
$(build_aux_dir)/texinfo.tex \
|
|
||||||
|
|
||||||
cvs_files = \
|
|
||||||
$(build_aux_dir)/install-sh \
|
|
||||||
$(build_aux_dir)/mdate-sh \
|
|
||||||
$(build_aux_dir)/missing \
|
|
||||||
$(build_aux_dir)/mkinstalldirs
|
|
||||||
|
|
||||||
# Tests not to run.
|
|
||||||
local-checks-to-skip = \
|
|
||||||
changelog-check
|
|
||||||
+466
@@ -0,0 +1,466 @@
|
|||||||
|
# Makefile.in generated automatically by automake 1.5a from Makefile.am.
|
||||||
|
|
||||||
|
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
|
||||||
|
# Free Software Foundation, Inc.
|
||||||
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||||
|
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
|
# PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
@SET_MAKE@
|
||||||
|
|
||||||
|
SHELL = @SHELL@
|
||||||
|
|
||||||
|
srcdir = @srcdir@
|
||||||
|
top_srcdir = @top_srcdir@
|
||||||
|
VPATH = @srcdir@
|
||||||
|
prefix = @prefix@
|
||||||
|
exec_prefix = @exec_prefix@
|
||||||
|
|
||||||
|
bindir = @bindir@
|
||||||
|
sbindir = @sbindir@
|
||||||
|
libexecdir = @libexecdir@
|
||||||
|
datadir = @datadir@
|
||||||
|
sysconfdir = @sysconfdir@
|
||||||
|
sharedstatedir = @sharedstatedir@
|
||||||
|
localstatedir = @localstatedir@
|
||||||
|
libdir = @libdir@
|
||||||
|
infodir = @infodir@
|
||||||
|
mandir = @mandir@
|
||||||
|
includedir = @includedir@
|
||||||
|
oldincludedir = /usr/include
|
||||||
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
|
top_builddir = .
|
||||||
|
|
||||||
|
ACLOCAL = @ACLOCAL@
|
||||||
|
AUTOCONF = @AUTOCONF@
|
||||||
|
AUTOMAKE = @AUTOMAKE@
|
||||||
|
AUTOHEADER = @AUTOHEADER@
|
||||||
|
|
||||||
|
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||||
|
INSTALL = @INSTALL@
|
||||||
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||||
|
INSTALL_HEADER = $(INSTALL_DATA)
|
||||||
|
transform = @program_transform_name@
|
||||||
|
NORMAL_INSTALL = :
|
||||||
|
PRE_INSTALL = :
|
||||||
|
POST_INSTALL = :
|
||||||
|
NORMAL_UNINSTALL = :
|
||||||
|
PRE_UNINSTALL = :
|
||||||
|
POST_UNINSTALL = :
|
||||||
|
host_alias = @host_alias@
|
||||||
|
host_triplet = @host@
|
||||||
|
|
||||||
|
EXEEXT = @EXEEXT@
|
||||||
|
OBJEXT = @OBJEXT@
|
||||||
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
|
AMTAR = @AMTAR@
|
||||||
|
AUTOM4TE = @AUTOM4TE@
|
||||||
|
AWK = @AWK@
|
||||||
|
BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
|
||||||
|
CATALOGS = @CATALOGS@
|
||||||
|
CATOBJEXT = @CATOBJEXT@
|
||||||
|
CC = @CC@
|
||||||
|
CPP = @CPP@
|
||||||
|
DATADIRNAME = @DATADIRNAME@
|
||||||
|
DEPDIR = @DEPDIR@
|
||||||
|
GCC = @GCC@
|
||||||
|
GENCAT = @GENCAT@
|
||||||
|
GLIBC21 = @GLIBC21@
|
||||||
|
GMOFILES = @GMOFILES@
|
||||||
|
GMSGFMT = @GMSGFMT@
|
||||||
|
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||||
|
INSTOBJEXT = @INSTOBJEXT@
|
||||||
|
INTLBISON = @INTLBISON@
|
||||||
|
INTLLIBS = @INTLLIBS@
|
||||||
|
INTLOBJS = @INTLOBJS@
|
||||||
|
INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@
|
||||||
|
LIBICONV = @LIBICONV@
|
||||||
|
LIBOBJS = @LIBOBJS@
|
||||||
|
MKINSTALLDIRS = @MKINSTALLDIRS@
|
||||||
|
MSGFMT = @MSGFMT@
|
||||||
|
PACKAGE = @PACKAGE@
|
||||||
|
POFILES = @POFILES@
|
||||||
|
POSUB = @POSUB@
|
||||||
|
RANLIB = @RANLIB@
|
||||||
|
U = @U@
|
||||||
|
USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
|
||||||
|
USE_NLS = @USE_NLS@
|
||||||
|
VERSION = @VERSION@
|
||||||
|
WARNING_CFLAGS = @WARNING_CFLAGS@
|
||||||
|
am__include = @am__include@
|
||||||
|
am__quote = @am__quote@
|
||||||
|
install_sh = @install_sh@
|
||||||
|
|
||||||
|
AUTOMAKE_OPTIONS = 1.5 check-news readme-alpha dist-bzip2
|
||||||
|
|
||||||
|
ACLOCAL_AMFLAGS = -I m4
|
||||||
|
|
||||||
|
SUBDIRS = config intl po lib src doc m4 tests
|
||||||
|
|
||||||
|
EXTRA_DIST = REFERENCES configure.bat OChangeLog Makefile.maint GNUmakefile
|
||||||
|
|
||||||
|
DISTCLEANFILES = intl/libintl.h
|
||||||
|
|
||||||
|
move_if_change = $(srcdir)/config/move-if-change
|
||||||
|
prev_version_file = $(srcdir)/config/prev-version.txt
|
||||||
|
release_archive_dir = releases
|
||||||
|
|
||||||
|
# Uploading betas.
|
||||||
|
hosts = alpha
|
||||||
|
alpha_host = alpha.gnu.org
|
||||||
|
alpha_url_dir = gnu/bison
|
||||||
|
|
||||||
|
# Files to update automatically.
|
||||||
|
wget_files = $(srcdir)/config/config.guess $(srcdir)/config/config.sub \
|
||||||
|
$(srcdir)/config/texinfo.tex
|
||||||
|
|
||||||
|
|
||||||
|
cvs_files = $(srcdir)/config/missing
|
||||||
|
subdir = .
|
||||||
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
|
mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
|
||||||
|
CONFIG_HEADER = config.h
|
||||||
|
CONFIG_CLEAN_FILES = intl/Makefile
|
||||||
|
DIST_SOURCES =
|
||||||
|
|
||||||
|
RECURSIVE_TARGETS = info-recursive dvi-recursive install-info-recursive \
|
||||||
|
uninstall-info-recursive all-recursive install-data-recursive \
|
||||||
|
install-exec-recursive installdirs-recursive install-recursive \
|
||||||
|
uninstall-recursive check-recursive installcheck-recursive
|
||||||
|
DIST_COMMON = README ./stamp-h.in ABOUT-NLS AUTHORS COPYING ChangeLog \
|
||||||
|
INSTALL Makefile.am Makefile.in NEWS README-alpha THANKS \
|
||||||
|
aclocal.m4 config.hin configure configure.in
|
||||||
|
DIST_SUBDIRS = $(SUBDIRS)
|
||||||
|
all: config.h
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) all-recursive
|
||||||
|
|
||||||
|
.SUFFIXES:
|
||||||
|
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||||
|
cd $(top_srcdir) && \
|
||||||
|
$(AUTOMAKE) --gnu Makefile
|
||||||
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||||
|
cd $(top_builddir) && \
|
||||||
|
CONFIG_HEADERS= CONFIG_LINKS= \
|
||||||
|
CONFIG_FILES=$@ $(SHELL) ./config.status
|
||||||
|
|
||||||
|
$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||||
|
$(SHELL) ./config.status --recheck
|
||||||
|
$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
|
||||||
|
cd $(srcdir) && $(AUTOCONF)
|
||||||
|
|
||||||
|
$(ACLOCAL_M4): configure.in m4/c-bs-a.m4 m4/codeset.m4 m4/dmalloc.m4 m4/error.m4 m4/gettext.m4 m4/glibc21.m4 m4/iconv.m4 m4/isc-posix.m4 m4/lcmessage.m4 m4/malloc.m4 m4/mbrtowc.m4 m4/mbstate_t.m4 m4/prereq.m4 m4/progtest.m4 m4/realloc.m4 m4/strerror_r.m4 m4/warning.m4
|
||||||
|
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
|
||||||
|
config.h: stamp-h
|
||||||
|
@if test ! -f $@; then \
|
||||||
|
rm -f stamp-h; \
|
||||||
|
$(MAKE) stamp-h; \
|
||||||
|
else :; fi
|
||||||
|
stamp-h: $(srcdir)/config.hin $(top_builddir)/config.status
|
||||||
|
@rm -f stamp-h stamp-hT
|
||||||
|
@echo timestamp > stamp-hT 2> /dev/null
|
||||||
|
cd $(top_builddir) \
|
||||||
|
&& CONFIG_FILES= CONFIG_HEADERS=config.h:config.hin \
|
||||||
|
$(SHELL) ./config.status
|
||||||
|
@mv stamp-hT stamp-h
|
||||||
|
$(srcdir)/config.hin: $(srcdir)/./stamp-h.in
|
||||||
|
@if test ! -f $@; then \
|
||||||
|
rm -f $(srcdir)/./stamp-h.in; \
|
||||||
|
$(MAKE) $(srcdir)/./stamp-h.in; \
|
||||||
|
else :; fi
|
||||||
|
$(srcdir)/./stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||||
|
@rm -f $(srcdir)/./stamp-h.in $(srcdir)/./stamp-h.inT
|
||||||
|
@echo timestamp > $(srcdir)/./stamp-h.inT 2> /dev/null
|
||||||
|
cd $(top_srcdir) && $(AUTOHEADER)
|
||||||
|
@mv $(srcdir)/./stamp-h.inT $(srcdir)/./stamp-h.in
|
||||||
|
|
||||||
|
distclean-hdr:
|
||||||
|
-rm -f config.h
|
||||||
|
intl/Makefile: $(top_builddir)/config.status $(top_srcdir)/intl/Makefile.in
|
||||||
|
cd $(top_builddir) && CONFIG_FILES=$@ CONFIG_HEADERS= CONFIG_LINKS= $(SHELL) ./config.status
|
||||||
|
uninstall-info-am:
|
||||||
|
|
||||||
|
# This directory's subdirectories are mostly independent; you can cd
|
||||||
|
# into them and run `make' without going through this Makefile.
|
||||||
|
# To change the values of `make' variables: instead of editing Makefiles,
|
||||||
|
# (1) if the variable is set in `config.status', edit `config.status'
|
||||||
|
# (which will cause the Makefiles to be regenerated when you run `make');
|
||||||
|
# (2) otherwise, pass the desired values on the `make' command line.
|
||||||
|
$(RECURSIVE_TARGETS):
|
||||||
|
@set fnord $(MAKEFLAGS); amf=$$2; \
|
||||||
|
dot_seen=no; \
|
||||||
|
target=`echo $@ | sed s/-recursive//`; \
|
||||||
|
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||||
|
echo "Making $$target in $$subdir"; \
|
||||||
|
if test "$$subdir" = "."; then \
|
||||||
|
dot_seen=yes; \
|
||||||
|
local_target="$$target-am"; \
|
||||||
|
else \
|
||||||
|
local_target="$$target"; \
|
||||||
|
fi; \
|
||||||
|
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||||
|
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
|
||||||
|
done; \
|
||||||
|
if test "$$dot_seen" = "no"; then \
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||||
|
fi; test -z "$$fail"
|
||||||
|
|
||||||
|
mostlyclean-recursive clean-recursive distclean-recursive \
|
||||||
|
maintainer-clean-recursive:
|
||||||
|
@set fnord $(MAKEFLAGS); amf=$$2; \
|
||||||
|
dot_seen=no; \
|
||||||
|
case "$@" in \
|
||||||
|
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||||
|
*) list='$(SUBDIRS)' ;; \
|
||||||
|
esac; \
|
||||||
|
rev=''; for subdir in $$list; do \
|
||||||
|
if test "$$subdir" = "."; then :; else \
|
||||||
|
rev="$$subdir $$rev"; \
|
||||||
|
fi; \
|
||||||
|
done; \
|
||||||
|
rev="$$rev ."; \
|
||||||
|
target=`echo $@ | sed s/-recursive//`; \
|
||||||
|
for subdir in $$rev; do \
|
||||||
|
echo "Making $$target in $$subdir"; \
|
||||||
|
if test "$$subdir" = "."; then \
|
||||||
|
local_target="$$target-am"; \
|
||||||
|
else \
|
||||||
|
local_target="$$target"; \
|
||||||
|
fi; \
|
||||||
|
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||||
|
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
|
||||||
|
done && test -z "$$fail"
|
||||||
|
tags-recursive:
|
||||||
|
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||||
|
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
||||||
|
done
|
||||||
|
|
||||||
|
tags: TAGS
|
||||||
|
|
||||||
|
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||||
|
list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) ' { files[$$0] = 1; } \
|
||||||
|
END { for (i in files) print i; }'`; \
|
||||||
|
mkid -fID $$unique $(LISP)
|
||||||
|
|
||||||
|
TAGS: tags-recursive $(HEADERS) $(SOURCES) config.hin $(TAGS_DEPENDENCIES) \
|
||||||
|
$(TAGS_FILES) $(LISP)
|
||||||
|
tags=; \
|
||||||
|
here=`pwd`; \
|
||||||
|
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||||
|
if test "$$subdir" = .; then :; else \
|
||||||
|
test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \
|
||||||
|
fi; \
|
||||||
|
done; \
|
||||||
|
list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) ' { files[$$0] = 1; } \
|
||||||
|
END { for (i in files) print i; }'`; \
|
||||||
|
test -z "$(ETAGS_ARGS)config.hin$$unique$(LISP)$$tags" \
|
||||||
|
|| etags $(ETAGS_ARGS) $$tags config.hin $$unique $(LISP)
|
||||||
|
|
||||||
|
GTAGS:
|
||||||
|
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||||
|
&& cd $(top_srcdir) \
|
||||||
|
&& gtags -i $(GTAGS_ARGS) $$here
|
||||||
|
|
||||||
|
distclean-tags:
|
||||||
|
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH
|
||||||
|
|
||||||
|
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
|
|
||||||
|
top_distdir = .
|
||||||
|
# Avoid unsightly `./'.
|
||||||
|
distdir = $(PACKAGE)-$(VERSION)
|
||||||
|
|
||||||
|
GZIP_ENV = --best
|
||||||
|
|
||||||
|
distdir: $(DISTFILES)
|
||||||
|
@if sed 15q $(srcdir)/NEWS | fgrep -e "$(VERSION)" >/dev/null; \
|
||||||
|
then :; else \
|
||||||
|
echo "NEWS not updated; not releasing" 1>&2; \
|
||||||
|
exit 1; \
|
||||||
|
fi
|
||||||
|
-chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf $(distdir)
|
||||||
|
mkdir $(distdir)
|
||||||
|
$(mkinstalldirs) $(distdir)/intl $(distdir)/po $(distdir)/tests
|
||||||
|
@for file in $(DISTFILES); do \
|
||||||
|
if test -f $$file; then d=.; else d=$(srcdir); fi; \
|
||||||
|
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||||
|
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||||
|
$(mkinstalldirs) "$(distdir)/$$dir"; \
|
||||||
|
fi; \
|
||||||
|
if test -d $$d/$$file; then \
|
||||||
|
cp -pR $$d/$$file $(distdir) \
|
||||||
|
|| exit 1; \
|
||||||
|
else \
|
||||||
|
test -f $(distdir)/$$file \
|
||||||
|
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||||
|
|| exit 1; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
for subdir in $(SUBDIRS); do \
|
||||||
|
if test "$$subdir" = .; then :; else \
|
||||||
|
test -d $(distdir)/$$subdir \
|
||||||
|
|| mkdir $(distdir)/$$subdir \
|
||||||
|
|| exit 1; \
|
||||||
|
(cd $$subdir && \
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) \
|
||||||
|
top_distdir="$(top_distdir)" \
|
||||||
|
distdir=../$(distdir)/$$subdir \
|
||||||
|
distdir) \
|
||||||
|
|| exit 1; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
|
||||||
|
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
|
||||||
|
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
|
||||||
|
! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
|
||||||
|
|| chmod -R a+r $(distdir)
|
||||||
|
dist-gzip: distdir
|
||||||
|
$(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
||||||
|
-chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf $(distdir)
|
||||||
|
|
||||||
|
dist-bzip2: distdir
|
||||||
|
$(AMTAR) chof - $(distdir) | bzip2 -9 -c >$(distdir).tar.bz2
|
||||||
|
-chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf $(distdir)
|
||||||
|
|
||||||
|
dist dist-all: distdir
|
||||||
|
$(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
||||||
|
$(AMTAR) chof - $(distdir) | bzip2 -9 -c >$(distdir).tar.bz2
|
||||||
|
-chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf $(distdir)
|
||||||
|
|
||||||
|
# This target untars the dist file and tries a VPATH configuration. Then
|
||||||
|
# it guarantees that the distribution is self-contained by making another
|
||||||
|
# tarfile.
|
||||||
|
distcheck: dist
|
||||||
|
-chmod -R a+w $(distdir) > /dev/null 2>&1; rm -rf $(distdir)
|
||||||
|
GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf -
|
||||||
|
chmod -R a-w $(distdir); chmod a+w $(distdir)
|
||||||
|
mkdir $(distdir)/=build
|
||||||
|
mkdir $(distdir)/=inst
|
||||||
|
chmod a-w $(distdir)
|
||||||
|
dc_install_base=`$(am__cd) $(distdir)/=inst && pwd` \
|
||||||
|
&& cd $(distdir)/=build \
|
||||||
|
&& ../configure --srcdir=.. --prefix=$$dc_install_base \
|
||||||
|
--with-included-gettext \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) check \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) install \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
|
||||||
|
&& (test `find $$dc_install_base -type f -print | wc -l` -le 1 \
|
||||||
|
|| { echo "ERROR: files left after uninstall:" ; \
|
||||||
|
find $$dc_install_base -type f -print ; \
|
||||||
|
exit 1; } >&2 ) \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) dist-gzip \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) distclean \
|
||||||
|
&& rm -f $(distdir).tar.gz \
|
||||||
|
&& (test `find . -type f -print | wc -l` -eq 0 \
|
||||||
|
|| { echo "ERROR: files left after distclean:" ; \
|
||||||
|
find . -type f -print ; \
|
||||||
|
exit 1; } >&2 )
|
||||||
|
-chmod -R a+w $(distdir) > /dev/null 2>&1; rm -rf $(distdir)
|
||||||
|
@echo "$(distdir).tar.gz is ready for distribution" | \
|
||||||
|
sed 'h;s/./=/g;p;x;p;x'
|
||||||
|
check-am: all-am
|
||||||
|
check: check-recursive
|
||||||
|
all-am: Makefile config.h
|
||||||
|
installdirs: installdirs-recursive
|
||||||
|
installdirs-am:
|
||||||
|
|
||||||
|
install: install-recursive
|
||||||
|
install-exec: install-exec-recursive
|
||||||
|
install-data: install-data-recursive
|
||||||
|
uninstall: uninstall-recursive
|
||||||
|
|
||||||
|
install-am: all-am
|
||||||
|
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||||
|
|
||||||
|
installcheck: installcheck-recursive
|
||||||
|
install-strip:
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
|
`test -z '$(STRIP)' || \
|
||||||
|
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||||
|
mostlyclean-generic:
|
||||||
|
|
||||||
|
clean-generic:
|
||||||
|
|
||||||
|
distclean-generic:
|
||||||
|
-rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]*
|
||||||
|
-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
|
||||||
|
|
||||||
|
maintainer-clean-generic:
|
||||||
|
@echo "This command is intended for maintainers to use"
|
||||||
|
@echo "it deletes files that may require special tools to rebuild."
|
||||||
|
clean: clean-recursive
|
||||||
|
|
||||||
|
clean-am: clean-generic mostlyclean-am
|
||||||
|
|
||||||
|
distclean: distclean-recursive
|
||||||
|
-rm -f config.status config.cache config.log
|
||||||
|
distclean-am: clean-am distclean-generic distclean-hdr distclean-tags
|
||||||
|
|
||||||
|
dvi: dvi-recursive
|
||||||
|
|
||||||
|
dvi-am:
|
||||||
|
|
||||||
|
info: info-recursive
|
||||||
|
|
||||||
|
info-am:
|
||||||
|
|
||||||
|
install-data-am:
|
||||||
|
|
||||||
|
install-exec-am:
|
||||||
|
|
||||||
|
install-info: install-info-recursive
|
||||||
|
|
||||||
|
install-man:
|
||||||
|
|
||||||
|
installcheck-am:
|
||||||
|
|
||||||
|
maintainer-clean: maintainer-clean-recursive
|
||||||
|
|
||||||
|
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||||
|
|
||||||
|
mostlyclean: mostlyclean-recursive
|
||||||
|
|
||||||
|
mostlyclean-am: mostlyclean-generic
|
||||||
|
|
||||||
|
uninstall-am: uninstall-info-am
|
||||||
|
|
||||||
|
uninstall-info: uninstall-info-recursive
|
||||||
|
|
||||||
|
.PHONY: $(RECURSIVE_TARGETS) GTAGS all all-am check check-am clean \
|
||||||
|
clean-generic clean-recursive dist dist-all dist-bzip2 \
|
||||||
|
dist-gzip distcheck distclean distclean-generic distclean-hdr \
|
||||||
|
distclean-recursive distclean-tags distdir dvi dvi-am \
|
||||||
|
dvi-recursive info info-am info-recursive install install-am \
|
||||||
|
install-data install-data-am install-data-recursive \
|
||||||
|
install-exec install-exec-am install-exec-recursive \
|
||||||
|
install-info install-info-am install-info-recursive install-man \
|
||||||
|
install-recursive install-strip installcheck installcheck-am \
|
||||||
|
installdirs installdirs-am installdirs-recursive \
|
||||||
|
maintainer-clean maintainer-clean-generic \
|
||||||
|
maintainer-clean-recursive mostlyclean mostlyclean-generic \
|
||||||
|
mostlyclean-recursive tags tags-recursive uninstall \
|
||||||
|
uninstall-am uninstall-info-am uninstall-info-recursive \
|
||||||
|
uninstall-recursive
|
||||||
|
|
||||||
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
|
.NOEXPORT:
|
||||||
+250
-543
@@ -1,8 +1,8 @@
|
|||||||
# -*-Makefile-*-
|
# -*-Makefile-*-
|
||||||
# This Makefile fragment is shared between the coreutils,
|
# This Makefile fragment is shared between fileutils, sh-utils, textutils,
|
||||||
# CPPI, Bison, and Autoconf.
|
# CPPI, Bison, and Autoconf.
|
||||||
|
|
||||||
## Copyright (C) 2001-2006 Free Software Foundation, Inc.
|
## Copyright 2001 Free Software Foundation, Inc.
|
||||||
##
|
##
|
||||||
## This program is free software; you can redistribute it and/or modify
|
## 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
|
## it under the terms of the GNU General Public License as published by
|
||||||
@@ -16,525 +16,43 @@
|
|||||||
##
|
##
|
||||||
## You should have received a copy of the GNU General Public License
|
## You should have received a copy of the GNU General Public License
|
||||||
## along with this program; if not, write to the Free Software
|
## along with this program; if not, write to the Free Software
|
||||||
## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||||
## 02110-1301, USA.
|
## 02111-1307, USA.
|
||||||
|
|
||||||
# This is reported not to work with make-3.79.1
|
|
||||||
# ME := $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
|
|
||||||
ME := Makefile.maint
|
|
||||||
|
|
||||||
# Do not save the original name or timestamp in the .tar.gz file.
|
# Do not save the original name or timestamp in the .tar.gz file.
|
||||||
# Use --rsyncable if available.
|
GZIP_ENV = '--no-name --best'
|
||||||
gzip_rsyncable = \
|
|
||||||
(gzip --help|grep rsyncable) >/dev/null 2>&1 && echo --rsyncable
|
|
||||||
GZIP_ENV = "--no-name --best `$(gzip_rsyncable)`"
|
|
||||||
|
|
||||||
CVS = cvs
|
CVS = cvs
|
||||||
|
|
||||||
# cvsu is part of the cvsutils package: http://www.red-bean.com/cvsutils/
|
prev_version_file ?= .prev-version
|
||||||
CVS_LIST = sh -c ' \
|
|
||||||
if test -x $(srcdir)/build-aux/cvsu; then \
|
|
||||||
$(srcdir)/build-aux/cvsu --find --types=AFGM $$*; \
|
|
||||||
else \
|
|
||||||
awk -F/ '\''{ \
|
|
||||||
if (!$$1 && $$3 !~ /^-/) { \
|
|
||||||
f=FILENAME; \
|
|
||||||
sub(/CVS\/Entries/, "", f); \
|
|
||||||
print f $$2; \
|
|
||||||
}}'\'' \
|
|
||||||
$$(find $${*-*} -name Entries -print) /dev/null; \
|
|
||||||
fi \
|
|
||||||
' dummy
|
|
||||||
|
|
||||||
CVS_LIST_EXCEPT = \
|
|
||||||
$(CVS_LIST) | if test -f .x-$@; then grep -vEf .x-$@; else grep -v ChangeLog; fi
|
|
||||||
|
|
||||||
ifeq ($(origin prev_version_file), undefined)
|
|
||||||
prev_version_file = .prev-version
|
|
||||||
endif
|
|
||||||
|
|
||||||
|
THIS_VERSION_REGEXP = $(subst .,\.,$(VERSION))
|
||||||
PREV_VERSION := $(shell cat $(prev_version_file))
|
PREV_VERSION := $(shell cat $(prev_version_file))
|
||||||
VERSION_REGEXP = $(subst .,\.,$(VERSION))
|
PREV_VERSION_REGEXP := $(shell echo $(PREV_VERSION)|sed 's/\./\\./g')
|
||||||
|
|
||||||
tag-package = $(shell echo "$(PACKAGE)" | tr '[:lower:]' '[:upper:]')
|
tag-package = $(shell echo "$(PACKAGE)" | tr '[:lower:]' '[:upper:]')
|
||||||
tag-this-version = $(subst .,_,$(VERSION))
|
tag-this-version = $(subst .,_,$(VERSION))
|
||||||
|
tag-prev-version = $(subst .,_,$(PREV_VERSION))
|
||||||
this-cvs-tag = $(tag-package)-$(tag-this-version)
|
this-cvs-tag = $(tag-package)-$(tag-this-version)
|
||||||
|
prev-cvs-tag = $(tag-package)-$(tag-prev-version)
|
||||||
my_distdir = $(PACKAGE)-$(VERSION)
|
my_distdir = $(PACKAGE)-$(VERSION)
|
||||||
|
|
||||||
# Old releases are stored here.
|
# Old releases are stored here.
|
||||||
# Used for diffs and xdeltas.
|
# Used for diffs and xdeltas.
|
||||||
release_archive_dir ?= ../release
|
release_archive_dir ?= ../release
|
||||||
|
|
||||||
# Prevent programs like 'sort' from considering distinct strings to be equal.
|
|
||||||
# Doing it here saves us from having to set LC_ALL elsewhere in this file.
|
|
||||||
export LC_ALL = C
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## --------------- ##
|
|
||||||
## Sanity checks. ##
|
|
||||||
## --------------- ##
|
|
||||||
|
|
||||||
# FIXME: add a check to prohibit definition in src/*.c of symbols defined
|
|
||||||
# in system.h. E.g. today I removed from tail.c a useless definition of
|
|
||||||
# ENOSYS. It was useless because system.h ensures it's defined.
|
|
||||||
|
|
||||||
# Checks that don't require cvs.
|
|
||||||
# Run `changelog-check' last, as previous test may reveal problems requiring
|
|
||||||
# new ChangeLog entries.
|
|
||||||
local-checks-available = \
|
|
||||||
po-check copyright-check writable-files m4-check author_mark_check \
|
|
||||||
changelog-check strftime-check $(syntax-check-rules) \
|
|
||||||
makefile_path_separator_check \
|
|
||||||
makefile-check
|
|
||||||
.PHONY: $(local-checks-available)
|
|
||||||
|
|
||||||
local-check = $(filter-out $(local-checks-to-skip), $(local-checks-available))
|
|
||||||
|
|
||||||
.PHONY: $(syntax-check-rules)
|
|
||||||
syntax-check-rules = \
|
|
||||||
sc_cast_of_argument_to_free \
|
|
||||||
sc_cast_of_x_alloc_return_value \
|
|
||||||
sc_cast_of_alloca_return_value \
|
|
||||||
sc_changelog \
|
|
||||||
sc_dd_max_sym_length \
|
|
||||||
sc_error_exit_success \
|
|
||||||
sc_file_system \
|
|
||||||
sc_no_if_have_config_h \
|
|
||||||
sc_obsolete_symbols \
|
|
||||||
sc_prohibit_atoi_atof \
|
|
||||||
sc_prohibit_jm_in_m4 \
|
|
||||||
sc_prohibit_assert_without_use \
|
|
||||||
sc_require_config_h \
|
|
||||||
sc_root_tests \
|
|
||||||
sc_space_tab \
|
|
||||||
sc_sun_os_names \
|
|
||||||
sc_system_h_headers \
|
|
||||||
sc_tight_scope \
|
|
||||||
sc_trailing_blank \
|
|
||||||
sc_two_space_separator_in_usage \
|
|
||||||
sc_unmarked_diagnostics \
|
|
||||||
sc_useless_cpp_parens
|
|
||||||
|
|
||||||
syntax-check: $(syntax-check-rules)
|
|
||||||
# @grep -nE '# *include <(limits|std(def|arg|bool))\.h>' \
|
|
||||||
# $$(find -type f -name '*.[chly]') && \
|
|
||||||
# { echo '$(ME): found conditional include' 1>&2; \
|
|
||||||
# exit 1; } || :
|
|
||||||
|
|
||||||
# grep -nE '^# *include <(string|stdlib)\.h>' \
|
|
||||||
# $(srcdir)/{lib,src}/*.[chy] && \
|
|
||||||
# { echo '$(ME): FIXME' 1>&2; \
|
|
||||||
# exit 1; } || :
|
|
||||||
# FIXME: don't allow `#include .strings\.h' anywhere
|
|
||||||
|
|
||||||
sc_cast_of_argument_to_free:
|
|
||||||
@grep -nE '\<free \(\(' $(srcdir)/{lib,src}/*.[chly] && \
|
|
||||||
{ echo '$(ME): don'\''t cast free argument' 1>&2; \
|
|
||||||
exit 1; } || :
|
|
||||||
|
|
||||||
sc_cast_of_x_alloc_return_value:
|
|
||||||
@grep -nE --exclude=$(srcdir)/lib/regex.c \
|
|
||||||
'\*\) *x(m|c|re)alloc\>' \
|
|
||||||
$(srcdir)/{lib,src}/*.[chy] && \
|
|
||||||
{ echo '$(ME): don'\''t cast x*alloc return value' 1>&2; \
|
|
||||||
exit 1; } || :
|
|
||||||
|
|
||||||
sc_cast_of_alloca_return_value:
|
|
||||||
@grep -nE '\*\) *alloca\>' \
|
|
||||||
$(srcdir)/src/*.[chy] && \
|
|
||||||
{ echo '$(ME): don'\''t cast alloca return value' 1>&2; \
|
|
||||||
exit 1; } || :
|
|
||||||
|
|
||||||
sc_space_tab:
|
|
||||||
@grep -n '[ ] ' $$($(CVS_LIST_EXCEPT)) && \
|
|
||||||
{ echo '$(ME): found SPACE-TAB sequence; remove the SPACE' \
|
|
||||||
1>&2; exit 1; } || :
|
|
||||||
|
|
||||||
# Don't use the old ato* functions in `real' code.
|
|
||||||
# They provide no error checking mechanism.
|
|
||||||
# Instead, use strto* functions.
|
|
||||||
sc_prohibit_atoi_atof:
|
|
||||||
@grep -nE '\<ato([filq]|ll)\>' $$($(CVS_LIST_EXCEPT)) && \
|
|
||||||
{ echo '$(ME): do not use ato''f, ato''i, ato''l, ato''ll, or ato''q' \
|
|
||||||
1>&2; exit 1; } || :
|
|
||||||
|
|
||||||
# Using EXIT_SUCCESS as the first argument to error is misleading,
|
|
||||||
# since when that parameter is 0, error does not exit. Use `0' instead.
|
|
||||||
sc_error_exit_success:
|
|
||||||
@grep -nF 'error (EXIT_SUCCESS,' \
|
|
||||||
$$(find -type f -name '*.[chly]') && \
|
|
||||||
{ echo '$(ME): found error (EXIT_SUCCESS' 1>&2; \
|
|
||||||
exit 1; } || :
|
|
||||||
|
|
||||||
sc_file_system:
|
|
||||||
@grep -ni 'file''system' $$($(CVS_LIST_EXCEPT)) && \
|
|
||||||
{ echo '$(ME): found use of "file''system";' \
|
|
||||||
'rewrite to use "file system"' 1>&2; \
|
|
||||||
exit 1; } || :
|
|
||||||
|
|
||||||
sc_no_if_have_config_h:
|
|
||||||
@grep -n '^# *if HAVE_CONFIG_H' $$($(CVS_LIST_EXCEPT)) && \
|
|
||||||
{ echo '$(ME): found use of #if HAVE_CONFIG_H; use #ifdef' \
|
|
||||||
1>&2; exit 1; } || :
|
|
||||||
|
|
||||||
# Nearly all .c files must include <config.h>.
|
|
||||||
sc_require_config_h:
|
|
||||||
@grep -L '^# *include <config\.h>' \
|
|
||||||
$$($(CVS_LIST_EXCEPT) | grep '\.c$$') \
|
|
||||||
| grep . && \
|
|
||||||
{ echo '$(ME): the above files do not include <config.h>' \
|
|
||||||
1>&2; exit 1; } || :
|
|
||||||
|
|
||||||
# Prohibit the inclusion of assert.h without an actual use of assert.
|
|
||||||
sc_prohibit_assert_without_use:
|
|
||||||
@files=$$(grep -l '# *include <assert\.h>' \
|
|
||||||
$$($(CVS_LIST_EXCEPT) | grep '\.c$$')) && \
|
|
||||||
grep -L '\<assert (' $$files \
|
|
||||||
| grep . && \
|
|
||||||
{ echo "$(ME): the above files include <assert.h> but don't use it" \
|
|
||||||
1>&2; exit 1; } || :
|
|
||||||
|
|
||||||
sc_obsolete_symbols:
|
|
||||||
@grep -nE '\<(HAVE''_FCNTL_H|O''_NDELAY)\>' \
|
|
||||||
$$($(CVS_LIST_EXCEPT)) && \
|
|
||||||
{ echo '$(ME): do not use HAVE''_FCNTL_H or O''_NDELAY' \
|
|
||||||
1>&2; exit 1; } || :
|
|
||||||
|
|
||||||
# FIXME: warn about definitions of EXIT_FAILURE, EXIT_SUCCESS, STREQ
|
|
||||||
|
|
||||||
# Each nonempty line must start with a year number, or a TAB.
|
|
||||||
sc_changelog:
|
|
||||||
@grep -n '^[^12 ]' $$(find . -maxdepth 2 -name ChangeLog) && \
|
|
||||||
{ echo '$(ME): found unexpected prefix in a ChangeLog' 1>&2; \
|
|
||||||
exit 1; } || :
|
|
||||||
|
|
||||||
# Ensure that dd's definition of LONGEST_SYMBOL stays in sync
|
|
||||||
# with the strings from the two affected variables.
|
|
||||||
dd_c = $(srcdir)/src/dd.c
|
|
||||||
sc_dd_max_sym_length:
|
|
||||||
ifneq ($(wildcard $(dd_c)),)
|
|
||||||
@len=$$( (sed -n '/conversions\[\] =$$/,/^};/p' $(dd_c);\
|
|
||||||
sed -n '/flags\[\] =$$/,/^};/p' $(dd_c) ) \
|
|
||||||
|sed -n '/"/s/^[^"]*"\([^"]*\)".*/\1/p' \
|
|
||||||
| wc --max-line-length); \
|
|
||||||
max=$$(sed -n '/^#define LONGEST_SYMBOL /s///p' $(dd_c) \
|
|
||||||
|tr -d '"' | wc --max-line-length); \
|
|
||||||
if test "$$len" = "$$max"; then :; else \
|
|
||||||
echo 'dd.c: LONGEST_SYMBOL is not longest' 1>&2; \
|
|
||||||
exit 1; \
|
|
||||||
fi
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Many m4 macros names once began with `jm_'.
|
|
||||||
# On 2004-04-13, they were all changed to start with gl_ instead.
|
|
||||||
# Make sure that none are inadvertently reintroduced.
|
|
||||||
sc_prohibit_jm_in_m4:
|
|
||||||
@grep -nE 'jm_[A-Z]' \
|
|
||||||
$$($(CVS_LIST) $(srcdir)/m4 |grep '\.m4$$') && \
|
|
||||||
{ echo '$(ME): do not use jm_ in m4 macro names' \
|
|
||||||
1>&2; exit 1; } || :
|
|
||||||
|
|
||||||
sc_root_tests:
|
|
||||||
@t1=sc-root.expected; t2=sc-root.actual; \
|
|
||||||
grep -nl '^PRIV_CHECK_ARG=require-root' \
|
|
||||||
$$($(CVS_LIST) tests) |sed s,tests,., |sort > $$t1; \
|
|
||||||
sed -n 's, cd \([^ ]*\) .*MAKE..check TESTS=\(.*\),./\1/\2,p' \
|
|
||||||
$(srcdir)/tests/Makefile.am |sort > $$t2; \
|
|
||||||
diff -u $$t1 $$t2 || diff=1; \
|
|
||||||
rm -f $$t1 $$t2; \
|
|
||||||
test "$$diff" \
|
|
||||||
&& { echo 'tests/Makefile.am: missing check-root action'>&2; \
|
|
||||||
exit 1; } || :
|
|
||||||
|
|
||||||
# Create a list of regular expressions matching the names
|
|
||||||
# of files included from system.h. Exclude a couple.
|
|
||||||
.re-list:
|
|
||||||
@sed -n '/^# *include /s///p' $(srcdir)/src/system.h \
|
|
||||||
| grep -Ev 'sys/(param|file)\.h' \
|
|
||||||
| sed 's/ .*//;;s/^["<]/^# *include [<"]/;s/\.h[">]$$/\\.h[">]/' \
|
|
||||||
> $@-t
|
|
||||||
@mv $@-t $@
|
|
||||||
|
|
||||||
# Files in src/ should not include directly any of
|
|
||||||
# the headers already included via system.h.
|
|
||||||
sc_system_h_headers: .re-list
|
|
||||||
@if test -f $(srcdir)/src/system.h; then \
|
|
||||||
trap 'rc=$$?; rm -f .re-list; exit $$rc' 0 1 2 3 15; \
|
|
||||||
grep -nE -f .re-list \
|
|
||||||
$$($(CVS_LIST) src | \
|
|
||||||
grep -Ev '((copy|system)\.h|parse-gram\.c)$$') \
|
|
||||||
&& { echo '$(ME): the above are already included via system.h'\
|
|
||||||
1>&2; exit 1; } || :; \
|
|
||||||
fi
|
|
||||||
|
|
||||||
sc_sun_os_names:
|
|
||||||
@grep -nEi \
|
|
||||||
'solaris[^[:alnum:]]*2\.(7|8|9|[1-9][0-9])|sunos[^[:alnum:]][6-9]' \
|
|
||||||
$$($(CVS_LIST_EXCEPT)) && \
|
|
||||||
{ echo '$(ME): found misuse of Sun OS version numbers' 1>&2; \
|
|
||||||
exit 1; } || :
|
|
||||||
|
|
||||||
sc_tight_scope:
|
|
||||||
$(MAKE) -C src $@
|
|
||||||
|
|
||||||
sc_trailing_blank:
|
|
||||||
@grep -n '[ ]$$' $$($(CVS_LIST_EXCEPT)) && \
|
|
||||||
{ echo '$(ME): found trailing blank(s)' \
|
|
||||||
1>&2; exit 1; } || :
|
|
||||||
|
|
||||||
sc_two_space_separator_in_usage:
|
|
||||||
@grep -n '^ *--[a-z][0-9A-Za-z-]* [^ ].*\\$$' \
|
|
||||||
$$($(CVS_LIST_EXCEPT)) && \
|
|
||||||
{ echo "$(ME): help2man requires at least two spaces between"; \
|
|
||||||
echo "$(ME): an option and its description"; \
|
|
||||||
1>&2; exit 1; } || :
|
|
||||||
|
|
||||||
# Look for diagnostics that aren't marked for translation.
|
|
||||||
# This won't find any for which error's format string is on a separate line.
|
|
||||||
sc_unmarked_diagnostics:
|
|
||||||
@grep -nE \
|
|
||||||
'\<error \([^"]*"[^"]*[a-z]{3}' $$($(CVS_LIST_EXCEPT)) \
|
|
||||||
| grep -v '_''(' && \
|
|
||||||
{ echo '$(ME): found unmarked diagnostic(s)' 1>&2; \
|
|
||||||
exit 1; } || :
|
|
||||||
|
|
||||||
# Avoid useless parentheses like those in this example:
|
|
||||||
# #if defined (SYMBOL) || defined (SYM2)
|
|
||||||
sc_useless_cpp_parens:
|
|
||||||
@grep -n '^# *if .*defined *(' $$($(CVS_LIST_EXCEPT)) && \
|
|
||||||
{ echo '$(ME): found useless parentheses in cpp directive' \
|
|
||||||
1>&2; exit 1; } || :
|
|
||||||
|
|
||||||
# Ensure that date's --help output stays in sync with the info
|
|
||||||
# documentation for GNU strftime. The only exception is %N,
|
|
||||||
# which date accepts but GNU strftime does not.
|
|
||||||
extract_char = sed 's/^[^%][^%]*%\(.\).*/\1/'
|
|
||||||
strftime-check:
|
|
||||||
if test -f $(srcdir)/src/date.c; then \
|
|
||||||
grep '^ %. ' $(srcdir)/src/date.c | sort \
|
|
||||||
| $(extract_char) > $@-src; \
|
|
||||||
{ echo N; \
|
|
||||||
info libc date calendar format | grep '^ `%.'\' \
|
|
||||||
| $(extract_char); } | sort > $@-info; \
|
|
||||||
diff -u $@-src $@-info || exit 1; \
|
|
||||||
rm -f $@-src $@-info; \
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Ensure that we use only the standard $(VAR) notation,
|
|
||||||
# not @...@ in Makefile.am, now that we can rely on automake
|
|
||||||
# to emit a definition for each substituted variable.
|
|
||||||
makefile-check:
|
|
||||||
grep -nE '@[A-Z_0-9]+@' `find . -name Makefile.am` \
|
|
||||||
&& { echo 'Makefile.maint: use $$(...), not @...@' 1>&2; exit 1; } || :
|
|
||||||
|
|
||||||
news-date-check: NEWS
|
|
||||||
today=`date +%Y-%m-%d`; \
|
|
||||||
if head NEWS | grep '^\*.* $(VERSION_REGEXP) ('$$today')' \
|
|
||||||
>/dev/null; then \
|
|
||||||
:; \
|
|
||||||
else \
|
|
||||||
echo "version or today's date is not in NEWS" 1>&2; \
|
|
||||||
exit 1; \
|
|
||||||
fi
|
|
||||||
|
|
||||||
changelog-check:
|
|
||||||
if head ChangeLog | grep 'Version $(VERSION_REGEXP)\.$$' \
|
|
||||||
>/dev/null; then \
|
|
||||||
:; \
|
|
||||||
else \
|
|
||||||
echo "$(VERSION) not in ChangeLog" 1>&2; \
|
|
||||||
exit 1; \
|
|
||||||
fi
|
|
||||||
|
|
||||||
m4-check:
|
|
||||||
@grep -n 'AC_DEFUN([^[]' m4/*.m4 \
|
|
||||||
&& { echo 'Makefile.maint: quote the first arg to AC_DEFUN' 1>&2; \
|
|
||||||
exit 1; } || :
|
|
||||||
|
|
||||||
# Verify that all source files using _() are listed in po/POTFILES.in.
|
|
||||||
# FIXME: don't hard-code file names below; use a more general mechanism.
|
|
||||||
po-check:
|
|
||||||
if test -f po/POTFILES.in; then \
|
|
||||||
grep -E -v '^(#|$$)' po/POTFILES.in \
|
|
||||||
| grep -v '^src/false\.c$$' | sort > $@-1; \
|
|
||||||
files=; \
|
|
||||||
for file in $$($(CVS_LIST_EXCEPT)) lib/*.[ch]; do \
|
|
||||||
case $$file in \
|
|
||||||
djgpp/* | man/*) continue;; \
|
|
||||||
esac; \
|
|
||||||
case $$file in \
|
|
||||||
*.[ch]) \
|
|
||||||
base=`expr " $$file" : ' \(.*\)\..'`; \
|
|
||||||
{ test -f $$base.l || test -f $$base.y; } && continue;; \
|
|
||||||
esac; \
|
|
||||||
files="$$files $$file"; \
|
|
||||||
done; \
|
|
||||||
grep -E -l '\bN?_\([^)"]*("|$$)' $$files | sort -u > $@-2; \
|
|
||||||
diff -u $@-1 $@-2 || exit 1; \
|
|
||||||
rm -f $@-1 $@-2; \
|
|
||||||
fi
|
|
||||||
|
|
||||||
# In a definition of #define AUTHORS "... and ..." where the RHS contains
|
|
||||||
# the English word `and', the string must be marked with `N_ (...)' so that
|
|
||||||
# gettext recognizes it as a string requiring translation.
|
|
||||||
author_mark_check:
|
|
||||||
@grep -n '^# *define AUTHORS "[^"]* and ' src/*.c |grep -v ' N_ (' && \
|
|
||||||
{ echo 'Makefile.maint: enclose the above strings in N_ (...)' 1>&2; \
|
|
||||||
exit 1; } || :
|
|
||||||
|
|
||||||
# Sometimes it is useful to change the PATH environment variable
|
|
||||||
# in Makefiles. When doing so, it's better not to use the Unix-centric
|
|
||||||
# path separator of `:', but rather the automake-provided `@PATH_SEPARATOR@'.
|
|
||||||
# It'd be better to use `find -print0 ...|xargs -0 ...', but less portable,
|
|
||||||
# and there probably aren't many projects with so many Makefile.am files
|
|
||||||
# that we'd have to worry about limits on command line length.
|
|
||||||
msg = 'Makefile.maint: Do not use `:'\'' above; use @PATH_SEPARATOR@ instead'
|
|
||||||
makefile_path_separator_check:
|
|
||||||
@grep -n 'PATH=.*:' `find $(srcdir) -name Makefile.am` \
|
|
||||||
&& { echo $(msg) 1>&2; exit 1; } || :
|
|
||||||
|
|
||||||
# Check that `make alpha' will not fail at the end of the process.
|
|
||||||
writable-files:
|
|
||||||
if test -d $(release_archive_dir); then :; else \
|
|
||||||
mkdir $(release_archive_dir); \
|
|
||||||
fi
|
|
||||||
for file in $(distdir).tar.gz $(xd-delta) \
|
|
||||||
$(release_archive_dir)/$(distdir).tar.gz \
|
|
||||||
$(release_archive_dir)/$(xd-delta); do \
|
|
||||||
test -e $$file || continue; \
|
|
||||||
test -w $$file \
|
|
||||||
|| { echo ERROR: $$file is not writable; fail=1; }; \
|
|
||||||
done; \
|
|
||||||
test "$$fail" && exit 1 || :
|
|
||||||
|
|
||||||
v_etc_file = lib/version-etc.c
|
|
||||||
# Make sure that the copyright date in $(v_etc_file) is up to date.
|
|
||||||
copyright-check:
|
|
||||||
@if test -f $(v_etc_file); then \
|
|
||||||
grep 'enum { COPYRIGHT_YEAR = '$$(date +%Y)' };' $(v_etc_file) \
|
|
||||||
>/dev/null \
|
|
||||||
|| { echo 'out of date copyright in $(v_etc_file); update it' 1>&2; \
|
|
||||||
exit 1; }; \
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
# Sanity checks with the CVS repository.
|
|
||||||
cvs-tag-check:
|
|
||||||
echo $(this-cvs-tag); \
|
|
||||||
if $(CVS) -n log -h README | grep -e $(this-cvs-tag): >/dev/null; then \
|
|
||||||
echo "$(this-cvs-tag) as already been used; not tagging" 1>&2; \
|
|
||||||
exit 1; \
|
|
||||||
else :; fi
|
|
||||||
|
|
||||||
cvs-diff-check:
|
|
||||||
if $(CVS) diff >cvs-diffs; then \
|
|
||||||
rm cvs-diffs; \
|
|
||||||
else \
|
|
||||||
echo "Some files are locally modified:" 1>&2; \
|
|
||||||
cat cvs-diffs; \
|
|
||||||
exit 1; \
|
|
||||||
fi
|
|
||||||
|
|
||||||
cvs-check: cvs-diff-check cvs-tag-check
|
|
||||||
|
|
||||||
maintainer-distcheck: changelog-check
|
|
||||||
$(MAKE) distcheck
|
|
||||||
$(MAKE) my-distcheck
|
|
||||||
|
|
||||||
|
|
||||||
# Tag before making distribution. Also, don't make a distribution if
|
|
||||||
# checks fail. Also, make sure the NEWS file is up-to-date.
|
|
||||||
# FIXME: use dist-hook/my-dist like distcheck-hook/my-distcheck.
|
|
||||||
cvs-dist: $(local-check) cvs-check maintainer-distcheck
|
|
||||||
$(CVS) update po
|
|
||||||
$(CVS) tag -c $(this-cvs-tag)
|
|
||||||
$(MAKE) dist
|
|
||||||
|
|
||||||
# Use this to make sure we don't run these programs when building
|
|
||||||
# from a virgin tgz file, below.
|
|
||||||
null_AM_MAKEFLAGS = \
|
|
||||||
ACLOCAL=false \
|
|
||||||
AUTOCONF=false \
|
|
||||||
AUTOMAKE=false \
|
|
||||||
AUTOHEADER=false \
|
|
||||||
MAKEINFO=false
|
|
||||||
|
|
||||||
# Detect format-string/arg-list mismatches that would normally be obscured
|
|
||||||
# by the use of _(). The --disable-nls effectively defines away that macro,
|
|
||||||
# and building with CFLAGS='-Wformat -Werror' causes any format warning to be
|
|
||||||
# treated as a failure. Also, check for shadowing problems with -Wshadow.
|
|
||||||
# These CFLAGS are pretty strict. If you build this target, you probably
|
|
||||||
# have to have a recent version of gcc and glibc headers.
|
|
||||||
TMPDIR ?= /tmp
|
|
||||||
t=$(TMPDIR)/$(PACKAGE)/test
|
|
||||||
my-distcheck: $(local-check) $(release_archive_dir)/$(prev-tgz)
|
|
||||||
-rm -rf $(t)
|
|
||||||
mkdir -p $(t)
|
|
||||||
GZIP=$(GZIP_ENV) $(AMTAR) -C $(t) -zxf $(distdir).tar.gz
|
|
||||||
cd $(t)/$(distdir) \
|
|
||||||
&& ./configure --disable-nls \
|
|
||||||
&& $(MAKE) CFLAGS='-Werror -Wall -Wformat -Wshadow' \
|
|
||||||
AM_MAKEFLAGS='$(null_AM_MAKEFLAGS)' \
|
|
||||||
&& $(MAKE) dvi \
|
|
||||||
&& $(MAKE) check \
|
|
||||||
&& $(MAKE) distclean
|
|
||||||
(cd $(t) && mv $(distdir) $(distdir).old \
|
|
||||||
&& $(AMTAR) -zxf - ) < $(distdir).tar.gz
|
|
||||||
diff -ur $(t)/$(distdir).old $(t)/$(distdir)
|
|
||||||
-rm -rf $(t)
|
|
||||||
@echo "========================"; \
|
|
||||||
echo "$(distdir).tar.gz is ready for distribution"; \
|
|
||||||
echo "========================"
|
|
||||||
|
|
||||||
WGET = wget
|
|
||||||
WGETFLAGS = -C off
|
|
||||||
|
|
||||||
rel-check:
|
|
||||||
tarz=/tmp/rel-check-tarz-$$$$; \
|
|
||||||
md5_tmp=/tmp/rel-check-md5-$$$$; \
|
|
||||||
set -e; \
|
|
||||||
trap 'status=$$?; rm -f $$tarz $$md5_tmp; exit $$status' 0 1 2 3 15; \
|
|
||||||
$(WGET) $(WGETFLAGS) -q --output-document=$$tarz $(url); \
|
|
||||||
echo "$(md5) -" > $$md5_tmp; \
|
|
||||||
md5sum -c $$md5_tmp < $$tarz
|
|
||||||
|
|
||||||
prev-tgz = $(PACKAGE)-$(PREV_VERSION).tar.gz
|
|
||||||
xd-delta = $(PACKAGE)-$(PREV_VERSION)-$(VERSION).xdelta
|
|
||||||
|
|
||||||
rel-files = $(xd-delta) $(DIST_ARCHIVES)
|
|
||||||
announcement: NEWS ChangeLog $(rel-files)
|
|
||||||
@./announce-gen \
|
|
||||||
--release-type=$(RELEASE_TYPE) \
|
|
||||||
--package=$(PACKAGE) \
|
|
||||||
--prev=$(PREV_VERSION) \
|
|
||||||
--curr=$(VERSION) \
|
|
||||||
--release-archive-directory=$(release_archive_dir) \
|
|
||||||
--gpg-key-id=$(gpg_key_ID) \
|
|
||||||
--news=NEWS \
|
|
||||||
$(addprefix --url-dir=, $(url_dir_list)) \
|
|
||||||
|
|
||||||
|
|
||||||
## ---------------- ##
|
## ---------------- ##
|
||||||
## Updating files. ##
|
## Updating files. ##
|
||||||
## ---------------- ##
|
## ---------------- ##
|
||||||
|
|
||||||
|
WGET = wget
|
||||||
ftp-gnu = ftp://ftp.gnu.org/gnu
|
ftp-gnu = ftp://ftp.gnu.org/gnu
|
||||||
www-gnu = http://www.gnu.org
|
|
||||||
|
|
||||||
# Use mv, if you don't have/want move-if-change.
|
# Use mv, if you don't have/want move-if-change.
|
||||||
move_if_change ?= move-if-change
|
move_if_change ?= move-if-change
|
||||||
|
|
||||||
|
|
||||||
# --------------------- #
|
|
||||||
# Updating everything. #
|
|
||||||
# --------------------- #
|
|
||||||
|
|
||||||
.PHONY: update
|
|
||||||
local_updates ?= wget-update cvs-update po-update
|
|
||||||
update: $(local_updates)
|
|
||||||
|
|
||||||
|
|
||||||
# ------------------- #
|
# ------------------- #
|
||||||
# Updating PO files. #
|
# Updating PO files. #
|
||||||
# ------------------- #
|
# ------------------- #
|
||||||
@@ -545,8 +63,7 @@ do-po-update:
|
|||||||
tmppo=/tmp/$(PACKAGE)-$(VERSION)-po &&\
|
tmppo=/tmp/$(PACKAGE)-$(VERSION)-po &&\
|
||||||
rm -rf $$tmppo && \
|
rm -rf $$tmppo && \
|
||||||
mkdir $$tmppo && \
|
mkdir $$tmppo && \
|
||||||
(cd $$tmppo && \
|
(cd $$tmppo && $(WGET) -r -l1 -nd --no-parent -A '*.po' $(po_repo)) &&\
|
||||||
$(WGET) $(WGETFLAGS) -r -l1 -nd --no-parent -A '*.po' $(po_repo)) &&\
|
|
||||||
cp $$tmppo/*.po po
|
cp $$tmppo/*.po po
|
||||||
cd po && $(MAKE) update-po
|
cd po && $(MAKE) update-po
|
||||||
$(MAKE) po-check
|
$(MAKE) po-check
|
||||||
@@ -563,77 +80,267 @@ po-update:
|
|||||||
# The following pseudo table associates a local directory and a URL
|
# The following pseudo table associates a local directory and a URL
|
||||||
# with each of the files that belongs to some other package and is
|
# with each of the files that belongs to some other package and is
|
||||||
# regularly updated from the specified URL.
|
# regularly updated from the specified URL.
|
||||||
wget_files ?= \
|
wget_files ?= $(srcdir)/config.guess $(srcdir)/config.sub \
|
||||||
$(srcdir)/build-aux/config.guess \
|
$(srcdir)/src/ansi2knr.c \
|
||||||
$(srcdir)/build-aux/config.sub \
|
$(srcdir)/doc/texinfo.tex
|
||||||
$(srcdir)/build-aux/texinfo.tex \
|
wget-targets = $(patsubst %, get-%, $(wget_files))
|
||||||
$(srcdir)/src/ansi2knr.c
|
|
||||||
|
|
||||||
get-targets = $(patsubst %, get-%, $(wget_files))
|
config.guess-url_prefix = $(ftp-gnu)/config/
|
||||||
|
config.sub-url_prefix = $(ftp-gnu)/config/
|
||||||
config.guess-url_prefix = $(ftp-gnu)/build-aux/
|
|
||||||
config.sub-url_prefix = $(ftp-gnu)/build-aux/
|
|
||||||
|
|
||||||
ansi2knr.c-url_prefix = ftp://ftp.cs.wisc.edu/ghost/
|
ansi2knr.c-url_prefix = ftp://ftp.cs.wisc.edu/ghost/
|
||||||
|
|
||||||
texinfo.tex-url_prefix = $(ftp-gnu)/texinfo/
|
texinfo.tex-url_prefix = $(ftp-gnu)/texinfo/
|
||||||
|
|
||||||
standards.texi-url_prefix = $(www-gnu)/prep/
|
standards.texi-url_prefix = $(ftp-gnu)/GNUinfo/
|
||||||
make-stds.texi-url_prefix = $(standards.texi-url_prefix)
|
make-stds.texi-url_prefix = $(ftp-gnu)/GNUinfo/
|
||||||
|
|
||||||
target = $(patsubst get-%, %, $@)
|
target = $(patsubst get-%, %, $@)
|
||||||
url = $($(notdir $(target))-url_prefix)$(notdir $(target))
|
url = $($(notdir $(target))-url_prefix)$(notdir $(target))
|
||||||
|
|
||||||
.PHONY: $(get-targets)
|
.PHONY: $(wget-targets)
|
||||||
$(get-targets):
|
$(wget-targets):
|
||||||
$(WGET) $(WGETFLAGS) $(url) -O $(target).t \
|
$(WGET) $(url) -O $(target).t \
|
||||||
&& $(move_if_change) $(target).t $(target)
|
&& $(move_if_change) $(target).t $(target)
|
||||||
|
|
||||||
cvs_files ?= \
|
|
||||||
$(srcdir)/build-aux/depcomp \
|
|
||||||
$(srcdir)/build-aux/install-sh \
|
|
||||||
$(srcdir)/build-aux/missing \
|
|
||||||
$(srcdir)/build-aux/mkinstalldirs \
|
|
||||||
$(srcdir)/src/ansi2knr.c
|
|
||||||
automake_repo=:pserver:anoncvs:[email protected]:/cvs/automake
|
|
||||||
.PHONY: wget-update
|
.PHONY: wget-update
|
||||||
wget-update: $(get-targets)
|
wget-update: $(wget-targets)
|
||||||
|
|
||||||
|
|
||||||
|
# Updating tools via CVS.
|
||||||
|
cvs_files ?= depcomp missing
|
||||||
|
cvs-targets = $(patsubst %, get-%, $(cvs_files))
|
||||||
|
|
||||||
|
automake_repo = :pserver:[email protected]:/cvs/automake
|
||||||
|
.PHONY: $(cvs-targets)
|
||||||
|
$(cvs-targets):
|
||||||
|
$(CVS) -d $(automake_repo) co -p automake/lib/$(notdir $(target)) \
|
||||||
|
>$(target).t \
|
||||||
|
&& $(move_if_change) $(target).t $(target);
|
||||||
|
|
||||||
.PHONY: cvs-update
|
.PHONY: cvs-update
|
||||||
cvs-update:
|
cvs-update: $(cvs-targets)
|
||||||
fail=; \
|
|
||||||
for f in $(cvs_files); do \
|
|
||||||
test -f $$f || { echo "*** skipping $$f" 1>&2; continue; }; \
|
|
||||||
cvs diff $$f > /dev/null \
|
|
||||||
|| { echo "*** $$f is locally modified; skipping it" 1>&2; \
|
|
||||||
fail=yes; continue; }; \
|
|
||||||
file=$$(basename $$f); \
|
|
||||||
echo checking out $$file...; \
|
|
||||||
$(CVS) -d $(automake_repo) co -p automake/lib/$$file> $$f.t \
|
|
||||||
&& $(move_if_change) $$f.t $$f; \
|
|
||||||
done; \
|
|
||||||
test "$$fail" && exit 1
|
|
||||||
|
|
||||||
emit_upload_commands:
|
|
||||||
@echo =====================================
|
# --------------------- #
|
||||||
@echo =====================================
|
# Updating everything. #
|
||||||
@echo "$(srcdir)/gnupload $(GNUPLOADFLAGS) \\"
|
# --------------------- #
|
||||||
@echo " --to $(gnu_rel_host):coreutils \\"
|
|
||||||
@echo " $(rel-files)"
|
.PHONY: update
|
||||||
@echo '# send the /tmp/announcement e-mail'
|
update: wget-update cvs-update po-update
|
||||||
@echo =====================================
|
|
||||||
@echo =====================================
|
|
||||||
|
|
||||||
|
## --------------- ##
|
||||||
|
## Sanity checks. ##
|
||||||
|
## --------------- ##
|
||||||
|
|
||||||
|
# Checks that don't require cvs. Run `changelog-check' last as
|
||||||
|
# previous test may reveal problems requiring new ChangeLog entries.
|
||||||
|
local-check: po-check copyright-check writable-files changelog-check
|
||||||
|
|
||||||
|
changelog-check:
|
||||||
|
if head ChangeLog | grep 'Version $(VERSION)' >/dev/null; then \
|
||||||
|
:; \
|
||||||
|
else \
|
||||||
|
echo "$(VERSION) not in ChangeLog" 1>&2; \
|
||||||
|
exit 1; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Verify that all source files using _() are listed in po/POTFILES.in.
|
||||||
|
po-check:
|
||||||
|
if test -f po/POTFILES.in; then \
|
||||||
|
grep -E -v '^(#|$$)' po/POTFILES.in | sort > $@-1; \
|
||||||
|
grep -E -l '\b_\(' lib/*.c src/*.c | sort > $@-2; \
|
||||||
|
diff -u $@-1 $@-2 || exit 1; \
|
||||||
|
rm -f $@-1 $@-2; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check that `make alpha' will not fail at the end of the process.
|
||||||
|
writable-files:
|
||||||
|
if test -d $(release_archive_dir); then :; else \
|
||||||
|
mkdir $(release_archive_dir); \
|
||||||
|
fi
|
||||||
|
for file in $(distdir).tar.gz $(xd-delta) \
|
||||||
|
$(release_archive_dir)/$(distdir).tar.gz \
|
||||||
|
$(release_archive_dir)/$(xd-delta); do \
|
||||||
|
test -e $$file || continue; \
|
||||||
|
test -w $$file \
|
||||||
|
|| { echo ERROR: $$file is not writable; fail=1; }; \
|
||||||
|
done; \
|
||||||
|
test "$$fail" && exit 1 || :
|
||||||
|
|
||||||
|
# Make sure that the copyright date in lib/version-etc.c is up to date.
|
||||||
|
copyright-check:
|
||||||
|
@if test -f lib/version-etc.c; then \
|
||||||
|
grep 'N_("Copyright (C) $(shell date +%Y) Free' lib/version-etc.c \
|
||||||
|
>/dev/null \
|
||||||
|
|| { echo 'out of date copyright in $<; update it' 1>&2; exit 1; }; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# Sanity checks with the CVS repository.
|
||||||
|
cvs-tag-check:
|
||||||
|
echo $(this-cvs-tag); \
|
||||||
|
if $(CVS) -n log -h README | grep -e $(this-cvs-tag): >/dev/null; then \
|
||||||
|
echo "$(this-cvs-tag) as already been used; not tagging" 1>&2; \
|
||||||
|
exit 1; \
|
||||||
|
else :; fi
|
||||||
|
|
||||||
|
cvs-diff-check:
|
||||||
|
if $(CVS) diff >cvs-diffs; then \
|
||||||
|
rm cvs-diffs; \
|
||||||
|
else \
|
||||||
|
echo "Some files are locally modified:" 1>&2; \
|
||||||
|
cat cvs-diffs; \
|
||||||
|
exit 1; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
cvs-check: cvs-diff-check cvs-tag-check
|
||||||
|
|
||||||
|
maintainer-distcheck: changelog-check
|
||||||
|
$(MAKE) distcheck
|
||||||
|
$(MAKE) my-distcheck
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## -------------- ##
|
||||||
|
## Making dists. ##
|
||||||
|
## -------------- ##
|
||||||
|
|
||||||
|
|
||||||
|
# Tag before making distribution. Also, don't make a distribution if
|
||||||
|
# checks fail. Also, make sure the NEWS file is up-to-date.
|
||||||
|
# FIXME: use dist-hook/my-dist like distcheck-hook/my-distcheck.
|
||||||
|
cvs-dist: local-check cvs-check maintainer-distcheck
|
||||||
|
$(CVS) update po
|
||||||
|
$(CVS) tag -c $(this-cvs-tag)
|
||||||
|
$(MAKE) dist
|
||||||
|
|
||||||
|
# Use this to make sure we don't run these programs when building
|
||||||
|
# from a virgin tgz file, below.
|
||||||
|
null_AM_MAKEFLAGS = \
|
||||||
|
ACLOCAL=false \
|
||||||
|
AUTOCONF=false \
|
||||||
|
AUTOM4TE=false \
|
||||||
|
AUTOMAKE=false \
|
||||||
|
AUTOHEADER=false \
|
||||||
|
MAKEINFO=false
|
||||||
|
|
||||||
|
# Detect format-string/arg-list mismatches that would normally be obscured
|
||||||
|
# by the use of _(). The --disable-nls effectively defines away that macro,
|
||||||
|
# and building with CFLAGS='-Wformat -Werror' causes any format warning to be
|
||||||
|
# treated as a failure.
|
||||||
|
t=./=test
|
||||||
|
my-distcheck: writable-files po-check
|
||||||
|
-rm -rf $(t)
|
||||||
|
mkdir $(t)
|
||||||
|
GZIP=$(GZIP_ENV) $(AMTAR) -C $(t) -zxf $(distdir).tar.gz
|
||||||
|
cd $(t)/$(distdir) \
|
||||||
|
&& ./configure --disable-nls \
|
||||||
|
&& $(MAKE) CFLAGS='-Wformat -Werror' \
|
||||||
|
AM_MAKEFLAGS='$(null_AM_MAKEFLAGS)' \
|
||||||
|
&& $(MAKE) dvi \
|
||||||
|
&& $(MAKE) check \
|
||||||
|
&& $(MAKE) distclean
|
||||||
|
cd $(t) && mv $(distdir) $(distdir).old \
|
||||||
|
&& $(AMTAR) -zxf ../$(distdir).tar.gz
|
||||||
|
diff -ur $(t)/$(distdir).old $(t)/$(distdir)
|
||||||
|
-rm -rf $(t)
|
||||||
|
@echo "========================"; \
|
||||||
|
echo "$(distdir).tar.gz is ready for distribution"; \
|
||||||
|
echo "========================"
|
||||||
|
|
||||||
|
# This must be the same name on both hosts.
|
||||||
|
# Make it a symlink that points to the right place.
|
||||||
|
real_dir = fetish-ftp
|
||||||
|
|
||||||
|
url_dir_list = $(foreach x,$(hosts),ftp://$($(x)_host)/$($(x)_url_dir))
|
||||||
|
|
||||||
|
tgz-md5 = $(shell md5sum < $(my_distdir).tar.gz|sed 's/ -//')
|
||||||
|
tgz-sha1 = $(shell sha1sum < $(my_distdir).tar.gz|sed 's/ -//')
|
||||||
|
bz2-md5 = $(shell md5sum < $(my_distdir).tar.bz2|sed 's/ -//')
|
||||||
|
bz2-sha1 = $(shell sha1sum < $(my_distdir).tar.bz2|sed 's/ -//')
|
||||||
|
tgz-size = $(shell du --human $(my_distdir).tar.gz|sed 's/\([Mk]\).*/ \1B/')
|
||||||
|
bz2-size = $(shell du --human $(my_distdir).tar.bz2|sed 's/\([Mk]\).*/ \1B/')
|
||||||
|
xd-size = $(shell du --human $(xd-delta)|sed 's/\([Mk]\).*/ \1B/')
|
||||||
|
|
||||||
|
rel-check:
|
||||||
|
tarz=/tmp/rel-check-tarz-$$$$; \
|
||||||
|
md5_tmp=/tmp/rel-check-md5-$$$$; \
|
||||||
|
set -e; \
|
||||||
|
trap 'status=$$?; rm -f $$tarz $$md5_tmp; exit $$status' 0 1 2 3 15; \
|
||||||
|
$(WGET) -q --output-document=$$tarz $(url); \
|
||||||
|
echo "$(md5) -" > $$md5_tmp; \
|
||||||
|
md5sum -c $$md5_tmp < $$tarz
|
||||||
|
|
||||||
|
prev-tgz = $(PACKAGE)-$(PREV_VERSION).tar.gz
|
||||||
|
xd-delta = $(PACKAGE)-$(PREV_VERSION)-$(VERSION).xdelta
|
||||||
|
|
||||||
|
GZIP = gzip
|
||||||
|
BZIP2 = bzip2
|
||||||
|
$(my_distdir).tar.bz2: $(my_distdir).tar.gz
|
||||||
|
$(GZIP) -dc $< > $(my_distdir).tar
|
||||||
|
rm -f $@
|
||||||
|
$(BZIP2) -9 $(my_distdir).tar
|
||||||
|
|
||||||
|
rel-files = $(xd-delta) $(distdir).tar.bz2 $(distdir).tar.gz
|
||||||
|
announcement: NEWS ChangeLog $(rel-files)
|
||||||
|
@( \
|
||||||
|
echo Subject: $(my_distdir) released; \
|
||||||
|
echo; \
|
||||||
|
echo FIXME: put comments here; \
|
||||||
|
echo; \
|
||||||
|
for url in $(url_dir_list); do \
|
||||||
|
echo " $$url/$(my_distdir).tar.gz ($(tgz-size))"; \
|
||||||
|
echo " $$url/$(my_distdir).tar.bz2 ($(bz2-size))"; \
|
||||||
|
done; \
|
||||||
|
echo; \
|
||||||
|
echo And here are xdelta-style diffs; \
|
||||||
|
echo; \
|
||||||
|
for url in $(url_dir_list); do \
|
||||||
|
echo " $$url/$(xd-delta) ($(xd-size))"; \
|
||||||
|
done; \
|
||||||
|
echo; \
|
||||||
|
echo "Here are the MD5 and SHA1 signatures for the compressed tar files:"; \
|
||||||
|
echo; \
|
||||||
|
echo "$(tgz-md5) $(my_distdir).tar.gz"; \
|
||||||
|
echo "$(bz2-md5) $(my_distdir).tar.bz2"; \
|
||||||
|
echo "$(tgz-sha1) $(my_distdir).tar.gz"; \
|
||||||
|
echo "$(bz2-sha1) $(my_distdir).tar.bz2"; \
|
||||||
|
echo; \
|
||||||
|
echo NEWS:; \
|
||||||
|
sed -n "/$(THIS_VERSION_REGEXP)[]:]/,/$(PREV_VERSION_REGEXP)[]:]/p" NEWS \
|
||||||
|
| grep -v '^\['; \
|
||||||
|
echo; \
|
||||||
|
echo ChangeLog entries:; \
|
||||||
|
find . -name ChangeLog -maxdepth 2 \
|
||||||
|
| xargs $(CVS) diff -up -r$(prev-cvs-tag) -rHEAD \
|
||||||
|
| sed -n 's/^+//p' \
|
||||||
|
| perl -ne 'm!^\+\+ (\./)?! or print,next;' \
|
||||||
|
-e 'print "\n"."*"x70 ."\n"; s///; print; print "*"x70 ."\n"'; \
|
||||||
|
)
|
||||||
|
|
||||||
|
define emit-rsync-commands
|
||||||
|
echo =====================================
|
||||||
|
echo =====================================
|
||||||
|
echo 'for host in $(a_host) $(b_host); do \'
|
||||||
|
echo ' rsync -e ssh --pro -av $(xd-delta) $(my_distdir).tar.bz2 \'
|
||||||
|
echo ' $(my_distdir).tar.gz $$host:$(real_dir); done'
|
||||||
|
echo '# send the /tmp/announcement e-mail'
|
||||||
|
echo =====================================
|
||||||
|
echo =====================================
|
||||||
|
endef
|
||||||
|
|
||||||
$(xd-delta): $(release_archive_dir)/$(prev-tgz) $(distdir).tar.gz
|
$(xd-delta): $(release_archive_dir)/$(prev-tgz) $(distdir).tar.gz
|
||||||
xdelta delta -9 $^ $@ || :
|
xdelta delta -9 $^ $@ || :
|
||||||
|
|
||||||
.PHONY: alpha beta major
|
alpha:
|
||||||
alpha beta major: news-date-check $(local-check)
|
|
||||||
$(MAKE) cvs-dist
|
$(MAKE) cvs-dist
|
||||||
$(MAKE) $(xd-delta)
|
$(MAKE) $(xd-delta)
|
||||||
$(MAKE) -s announcement RELEASE_TYPE=$@ > /tmp/announce-$(my_distdir)
|
$(MAKE) -s announcement > /tmp/announce-$(my_distdir)
|
||||||
ln $(rel-files) $(release_archive_dir)
|
ln $(rel-files) $(release_archive_dir)
|
||||||
chmod a-w $(rel-files)
|
chmod a-w $(rel-files)
|
||||||
$(MAKE) -s emit_upload_commands RELEASE_TYPE=$@
|
|
||||||
echo $(VERSION) > $(prev_version_file)
|
echo $(VERSION) > $(prev_version_file)
|
||||||
$(CVS) ci -m. $(prev_version_file)
|
$(CVS) ci -m. $(prev_version_file)
|
||||||
|
@$(emit-rsync-commands)
|
||||||
|
|||||||
@@ -1,708 +1,20 @@
|
|||||||
Bison News
|
Bison News
|
||||||
----------
|
----------
|
||||||
|
|
||||||
Changes in version 2.3a, 2006-09-13:
|
Changes in version 1.29f:
|
||||||
|
|
||||||
* Instead of %union, you can define and use your own union type
|
* `--defines' and `--graph' have now an optionnal argument which is the
|
||||||
YYSTYPE if your grammar contains at least one <type> tag.
|
output file name. `-d' and `-g' do not change, they do not take any
|
||||||
Your YYSTYPE need not be a macro; it can be a typedef.
|
|
||||||
This change is for compatibility with other Yacc implementations,
|
|
||||||
and is required by POSIX.
|
|
||||||
|
|
||||||
* Locations columns and lines start at 1.
|
|
||||||
In accordance with the GNU Coding Standards and Emacs.
|
|
||||||
|
|
||||||
* You may now declare per-type and default %destructor's and %printer's:
|
|
||||||
|
|
||||||
For example:
|
|
||||||
|
|
||||||
%union { char *string; }
|
|
||||||
%token <string> STRING1
|
|
||||||
%token <string> STRING2
|
|
||||||
%type <string> string1
|
|
||||||
%type <string> string2
|
|
||||||
%union { char character; }
|
|
||||||
%token <character> CHR
|
|
||||||
%type <character> chr
|
|
||||||
%destructor { free ($$); } %symbol-default
|
|
||||||
%destructor { free ($$); printf ("%d", @$.first_line); } STRING1 string1
|
|
||||||
%destructor { } <character>
|
|
||||||
|
|
||||||
guarantees that, when the parser discards any user-defined symbol that has a
|
|
||||||
semantic type tag other than `<character>', it passes its semantic value to
|
|
||||||
`free'. However, when the parser discards a `STRING1' or a `string1', it
|
|
||||||
also prints its line number to `stdout'. It performs only the second
|
|
||||||
`%destructor' in this case, so it invokes `free' only once.
|
|
||||||
|
|
||||||
* Except for LALR(1) parsers in C with POSIX Yacc emulation enabled (with `-y',
|
|
||||||
`--yacc', or `%yacc'), Bison no longer generates #define statements for
|
|
||||||
associating token numbers with token names. Removing the #define statements
|
|
||||||
helps to sanitize the global namespace during preprocessing, but POSIX Yacc
|
|
||||||
requires them. Bison still generates an enum for token names in all cases.
|
|
||||||
|
|
||||||
* Handling of traditional Yacc prologue blocks is now more consistent but
|
|
||||||
potentially incompatible with previous releases of Bison.
|
|
||||||
|
|
||||||
As before, you declare prologue blocks in your grammar file with the
|
|
||||||
`%{ ... %}' syntax. To generate the pre-prologue, Bison concatenates all
|
|
||||||
prologue blocks that you've declared before the first %union. To generate
|
|
||||||
the post-prologue, Bison concatenates all prologue blocks that you've
|
|
||||||
declared after the first %union.
|
|
||||||
|
|
||||||
Previous releases of Bison inserted the pre-prologue into both the header
|
|
||||||
file and the code file in all cases except for LALR(1) parsers in C. In the
|
|
||||||
latter case, Bison inserted it only into the code file. For parsers in C++,
|
|
||||||
the point of insertion was before any token definitions (which associate
|
|
||||||
token numbers with names). For parsers in C, the point of insertion was
|
|
||||||
after the token definitions.
|
|
||||||
|
|
||||||
Now, Bison never inserts the pre-prologue into the header file. In the code
|
|
||||||
file, it always inserts it before the token definitions.
|
|
||||||
|
|
||||||
* Bison now provides a more flexible alternative to the traditional Yacc
|
|
||||||
prologue blocks: %before-header, %start-header, %end-header, and
|
|
||||||
%after-header.
|
|
||||||
|
|
||||||
For example, the following declaration order in the grammar file reflects the
|
|
||||||
order in which Bison will output these code blocks. However, you are free to
|
|
||||||
declare these code blocks in your grammar file in whatever order is most
|
|
||||||
convenient for you:
|
|
||||||
|
|
||||||
%before-header {
|
|
||||||
/* Bison treats this block like a pre-prologue block: it inserts it into
|
|
||||||
* the code file before the contents of the header file. It does *not*
|
|
||||||
* insert it into the header file. This is a good place to put
|
|
||||||
* #include's that you want at the top of your code file. A common
|
|
||||||
* example is `#include "system.h"'. */
|
|
||||||
}
|
|
||||||
%start-header {
|
|
||||||
/* Bison inserts this block into both the header file and the code file.
|
|
||||||
* In both files, the point of insertion is before any Bison-generated
|
|
||||||
* token, semantic type, location type, and class definitions. This is a
|
|
||||||
* good place to define %union dependencies, for example. */
|
|
||||||
}
|
|
||||||
%union {
|
|
||||||
/* Unlike the traditional Yacc prologue blocks, the output order for the
|
|
||||||
* new %*-header blocks is not affected by their declaration position
|
|
||||||
* relative to any %union in the grammar file. */
|
|
||||||
}
|
|
||||||
%end-header {
|
|
||||||
/* Bison inserts this block into both the header file and the code file.
|
|
||||||
* In both files, the point of insertion is after the Bison-generated
|
|
||||||
* definitions. This is a good place to declare or define public
|
|
||||||
* functions or data structures that depend on the Bison-generated
|
|
||||||
* definitions. */
|
|
||||||
}
|
|
||||||
%after-header {
|
|
||||||
/* Bison treats this block like a post-prologue block: it inserts it into
|
|
||||||
* the code file after the contents of the header file. It does *not*
|
|
||||||
* insert it into the header file. This is a good place to declare or
|
|
||||||
* define internal functions or data structures that depend on the
|
|
||||||
* Bison-generated definitions. */
|
|
||||||
}
|
|
||||||
|
|
||||||
If you have multiple occurrences of any one of the above declarations, Bison
|
|
||||||
will concatenate the contents in declaration order.
|
|
||||||
|
|
||||||
* The option `--report=look-ahead' has been changed to `--report=lookahead'.
|
|
||||||
The old spelling still works, but is not documented and may be removed
|
|
||||||
in a future release.
|
|
||||||
|
|
||||||
Changes in version 2.3, 2006-06-05:
|
|
||||||
|
|
||||||
* GLR grammars should now use `YYRECOVERING ()' instead of `YYRECOVERING',
|
|
||||||
for compatibility with LALR(1) grammars.
|
|
||||||
|
|
||||||
* It is now documented that any definition of YYSTYPE or YYLTYPE should
|
|
||||||
be to a type name that does not contain parentheses or brackets.
|
|
||||||
|
|
||||||
Changes in version 2.2, 2006-05-19:
|
|
||||||
|
|
||||||
* The distribution terms for all Bison-generated parsers now permit
|
|
||||||
using the parsers in nonfree programs. Previously, this permission
|
|
||||||
was granted only for Bison-generated LALR(1) parsers in C.
|
|
||||||
|
|
||||||
* %name-prefix changes the namespace name in C++ outputs.
|
|
||||||
|
|
||||||
* The C++ parsers export their token_type.
|
|
||||||
|
|
||||||
* Bison now allows multiple %union declarations, and concatenates
|
|
||||||
their contents together.
|
|
||||||
|
|
||||||
* New warning: unused values
|
|
||||||
Right-hand side symbols whose values are not used are reported,
|
|
||||||
if the symbols have destructors. For instance:
|
|
||||||
|
|
||||||
exp: exp "?" exp ":" exp { $1 ? $1 : $3; }
|
|
||||||
| exp "+" exp
|
|
||||||
;
|
|
||||||
|
|
||||||
will trigger a warning about $$ and $5 in the first rule, and $3 in
|
|
||||||
the second ($1 is copied to $$ by the default rule). This example
|
|
||||||
most likely contains three errors, and could be rewritten as:
|
|
||||||
|
|
||||||
exp: exp "?" exp ":" exp
|
|
||||||
{ $$ = $1 ? $3 : $5; free ($1 ? $5 : $3); free ($1); }
|
|
||||||
| exp "+" exp
|
|
||||||
{ $$ = $1 ? $1 : $3; if ($1) free ($3); }
|
|
||||||
;
|
|
||||||
|
|
||||||
However, if the original actions were really intended, memory leaks
|
|
||||||
and all, the warnings can be suppressed by letting Bison believe the
|
|
||||||
values are used, e.g.:
|
|
||||||
|
|
||||||
exp: exp "?" exp ":" exp { $1 ? $1 : $3; (void) ($$, $5); }
|
|
||||||
| exp "+" exp { $$ = $1; (void) $3; }
|
|
||||||
;
|
|
||||||
|
|
||||||
If there are mid-rule actions, the warning is issued if no action
|
|
||||||
uses it. The following triggers no warning: $1 and $3 are used.
|
|
||||||
|
|
||||||
exp: exp { push ($1); } '+' exp { push ($3); sum (); };
|
|
||||||
|
|
||||||
The warning is intended to help catching lost values and memory leaks.
|
|
||||||
If a value is ignored, its associated memory typically is not reclaimed.
|
|
||||||
|
|
||||||
* %destructor vs. YYABORT, YYACCEPT, and YYERROR.
|
|
||||||
Destructors are now called when user code invokes YYABORT, YYACCEPT,
|
|
||||||
and YYERROR, for all objects on the stack, other than objects
|
|
||||||
corresponding to the right-hand side of the current rule.
|
|
||||||
|
|
||||||
* %expect, %expect-rr
|
|
||||||
Incorrect numbers of expected conflicts are now actual errors,
|
|
||||||
instead of warnings.
|
|
||||||
|
|
||||||
* GLR, YACC parsers.
|
|
||||||
The %parse-params are available in the destructors (and the
|
|
||||||
experimental printers) as per the documentation.
|
|
||||||
|
|
||||||
* Bison now warns if it finds a stray `$' or `@' in an action.
|
|
||||||
|
|
||||||
* %require "VERSION"
|
|
||||||
This specifies that the grammar file depends on features implemented
|
|
||||||
in Bison version VERSION or higher.
|
|
||||||
|
|
||||||
* lalr1.cc: The token and value types are now class members.
|
|
||||||
The tokens were defined as free form enums and cpp macros. YYSTYPE
|
|
||||||
was defined as a free form union. They are now class members:
|
|
||||||
tokens are enumerations of the `yy::parser::token' struct, and the
|
|
||||||
semantic values have the `yy::parser::semantic_type' type.
|
|
||||||
|
|
||||||
If you do not want or can update to this scheme, the directive
|
|
||||||
`%define "global_tokens_and_yystype" "1"' triggers the global
|
|
||||||
definition of tokens and YYSTYPE. This change is suitable both
|
|
||||||
for previous releases of Bison, and this one.
|
|
||||||
|
|
||||||
If you wish to update, then make sure older version of Bison will
|
|
||||||
fail using `%require "2.2"'.
|
|
||||||
|
|
||||||
* DJGPP support added.
|
|
||||||
|
|
||||||
Changes in version 2.1, 2005-09-16:
|
|
||||||
|
|
||||||
* The C++ lalr1.cc skeleton supports %lex-param.
|
|
||||||
|
|
||||||
* Bison-generated parsers now support the translation of diagnostics like
|
|
||||||
"syntax error" into languages other than English. The default
|
|
||||||
language is still English. For details, please see the new
|
|
||||||
Internationalization section of the Bison manual. Software
|
|
||||||
distributors should also see the new PACKAGING file. Thanks to
|
|
||||||
Bruno Haible for this new feature.
|
|
||||||
|
|
||||||
* Wording in the Bison-generated parsers has been changed slightly to
|
|
||||||
simplify translation. In particular, the message "memory exhausted"
|
|
||||||
has replaced "parser stack overflow", as the old message was not
|
|
||||||
always accurate for modern Bison-generated parsers.
|
|
||||||
|
|
||||||
* Destructors are now called when the parser aborts, for all symbols left
|
|
||||||
behind on the stack. Also, the start symbol is now destroyed after a
|
|
||||||
successful parse. In both cases, the behavior was formerly inconsistent.
|
|
||||||
|
|
||||||
* When generating verbose diagnostics, Bison-generated parsers no longer
|
|
||||||
quote the literal strings associated with tokens. For example, for
|
|
||||||
a syntax error associated with '%token NUM "number"' they might
|
|
||||||
print 'syntax error, unexpected number' instead of 'syntax error,
|
|
||||||
unexpected "number"'.
|
|
||||||
|
|
||||||
Changes in version 2.0, 2004-12-25:
|
|
||||||
|
|
||||||
* Possibly-incompatible changes
|
|
||||||
|
|
||||||
- Bison-generated parsers no longer default to using the alloca function
|
|
||||||
(when available) to extend the parser stack, due to widespread
|
|
||||||
problems in unchecked stack-overflow detection. You can "#define
|
|
||||||
YYSTACK_USE_ALLOCA 1" to require the use of alloca, but please read
|
|
||||||
the manual to determine safe values for YYMAXDEPTH in that case.
|
|
||||||
|
|
||||||
- Error token location.
|
|
||||||
During error recovery, the location of the syntax error is updated
|
|
||||||
to cover the whole sequence covered by the error token: it includes
|
|
||||||
the shifted symbols thrown away during the first part of the error
|
|
||||||
recovery, and the lookahead rejected during the second part.
|
|
||||||
|
|
||||||
- Semicolon changes:
|
|
||||||
. Stray semicolons are no longer allowed at the start of a grammar.
|
|
||||||
. Semicolons are now required after in-grammar declarations.
|
|
||||||
|
|
||||||
- Unescaped newlines are no longer allowed in character constants or
|
|
||||||
string literals. They were never portable, and GCC 3.4.0 has
|
|
||||||
dropped support for them. Better diagnostics are now generated if
|
|
||||||
forget a closing quote.
|
|
||||||
|
|
||||||
- NUL bytes are no longer allowed in Bison string literals, unfortunately.
|
|
||||||
|
|
||||||
* New features
|
|
||||||
|
|
||||||
- GLR grammars now support locations.
|
|
||||||
|
|
||||||
- New directive: %initial-action.
|
|
||||||
This directive allows the user to run arbitrary code (including
|
|
||||||
initializing @$) from yyparse before parsing starts.
|
|
||||||
|
|
||||||
- A new directive "%expect-rr N" specifies the expected number of
|
|
||||||
reduce/reduce conflicts in GLR parsers.
|
|
||||||
|
|
||||||
- %token numbers can now be hexadecimal integers, e.g., `%token FOO 0x12d'.
|
|
||||||
This is a GNU extension.
|
|
||||||
|
|
||||||
- The option `--report=lookahead' was changed to `--report=look-ahead'.
|
|
||||||
[However, this was changed back after 2.3.]
|
|
||||||
|
|
||||||
- Experimental %destructor support has been added to lalr1.cc.
|
|
||||||
|
|
||||||
- New configure option --disable-yacc, to disable installation of the
|
|
||||||
yacc command and -ly library introduced in 1.875 for POSIX conformance.
|
|
||||||
|
|
||||||
* Bug fixes
|
|
||||||
|
|
||||||
- For now, %expect-count violations are now just warnings, not errors.
|
|
||||||
This is for compatibility with Bison 1.75 and earlier (when there are
|
|
||||||
reduce/reduce conflicts) and with Bison 1.30 and earlier (when there
|
|
||||||
are too many or too few shift/reduce conflicts). However, in future
|
|
||||||
versions of Bison we plan to improve the %expect machinery so that
|
|
||||||
these violations will become errors again.
|
|
||||||
|
|
||||||
- Within Bison itself, numbers (e.g., goto numbers) are no longer
|
|
||||||
arbitrarily limited to 16-bit counts.
|
|
||||||
|
|
||||||
- Semicolons are now allowed before "|" in grammar rules, as POSIX requires.
|
|
||||||
|
|
||||||
Changes in version 1.875, 2003-01-01:
|
|
||||||
|
|
||||||
* The documentation license has been upgraded to version 1.2
|
|
||||||
of the GNU Free Documentation License.
|
|
||||||
|
|
||||||
* syntax error processing
|
|
||||||
|
|
||||||
- In Yacc-style parsers YYLLOC_DEFAULT is now used to compute error
|
|
||||||
locations too. This fixes bugs in error-location computation.
|
|
||||||
|
|
||||||
- %destructor
|
|
||||||
It is now possible to reclaim the memory associated to symbols
|
|
||||||
discarded during error recovery. This feature is still experimental.
|
|
||||||
|
|
||||||
- %error-verbose
|
|
||||||
This new directive is preferred over YYERROR_VERBOSE.
|
|
||||||
|
|
||||||
- #defining yyerror to steal internal variables is discouraged.
|
|
||||||
It is not guaranteed to work forever.
|
|
||||||
|
|
||||||
* POSIX conformance
|
|
||||||
|
|
||||||
- Semicolons are once again optional at the end of grammar rules.
|
|
||||||
This reverts to the behavior of Bison 1.33 and earlier, and improves
|
|
||||||
compatibility with Yacc.
|
|
||||||
|
|
||||||
- `parse error' -> `syntax error'
|
|
||||||
Bison now uniformly uses the term `syntax error'; formerly, the code
|
|
||||||
and manual sometimes used the term `parse error' instead. POSIX
|
|
||||||
requires `syntax error' in diagnostics, and it was thought better to
|
|
||||||
be consistent.
|
|
||||||
|
|
||||||
- The documentation now emphasizes that yylex and yyerror must be
|
|
||||||
declared before use. C99 requires this.
|
|
||||||
|
|
||||||
- Bison now parses C99 lexical constructs like UCNs and
|
|
||||||
backslash-newline within C escape sequences, as POSIX 1003.1-2001 requires.
|
|
||||||
|
|
||||||
- File names are properly escaped in C output. E.g., foo\bar.y is
|
|
||||||
output as "foo\\bar.y".
|
|
||||||
|
|
||||||
- Yacc command and library now available
|
|
||||||
The Bison distribution now installs a `yacc' command, as POSIX requires.
|
|
||||||
Also, Bison now installs a small library liby.a containing
|
|
||||||
implementations of Yacc-compatible yyerror and main functions.
|
|
||||||
This library is normally not useful, but POSIX requires it.
|
|
||||||
|
|
||||||
- Type clashes now generate warnings, not errors.
|
|
||||||
|
|
||||||
- If the user does not define YYSTYPE as a macro, Bison now declares it
|
|
||||||
using typedef instead of defining it as a macro.
|
|
||||||
For consistency, YYLTYPE is also declared instead of defined.
|
|
||||||
|
|
||||||
* Other compatibility issues
|
|
||||||
|
|
||||||
- %union directives can now have a tag before the `{', e.g., the
|
|
||||||
directive `%union foo {...}' now generates the C code
|
|
||||||
`typedef union foo { ... } YYSTYPE;'; this is for Yacc compatibility.
|
|
||||||
The default union tag is `YYSTYPE', for compatibility with Solaris 9 Yacc.
|
|
||||||
For consistency, YYLTYPE's struct tag is now `YYLTYPE' not `yyltype'.
|
|
||||||
This is for compatibility with both Yacc and Bison 1.35.
|
|
||||||
|
|
||||||
- `;' is output before the terminating `}' of an action, for
|
|
||||||
compatibility with Bison 1.35.
|
|
||||||
|
|
||||||
- Bison now uses a Yacc-style format for conflict reports, e.g.,
|
|
||||||
`conflicts: 2 shift/reduce, 1 reduce/reduce'.
|
|
||||||
|
|
||||||
- `yystype' and `yyltype' are now obsolescent macros instead of being
|
|
||||||
typedefs or tags; they are no longer documented and are planned to be
|
|
||||||
withdrawn in a future release.
|
|
||||||
|
|
||||||
* GLR parser notes
|
|
||||||
|
|
||||||
- GLR and inline
|
|
||||||
Users of Bison have to decide how they handle the portability of the
|
|
||||||
C keyword `inline'.
|
|
||||||
|
|
||||||
- `parsing stack overflow...' -> `parser stack overflow'
|
|
||||||
GLR parsers now report `parser stack overflow' as per the Bison manual.
|
|
||||||
|
|
||||||
* Bison now warns if it detects conflicting outputs to the same file,
|
|
||||||
e.g., it generates a warning for `bison -d -o foo.h foo.y' since
|
|
||||||
that command outputs both code and header to foo.h.
|
|
||||||
|
|
||||||
* #line in output files
|
|
||||||
- --no-line works properly.
|
|
||||||
|
|
||||||
* Bison can no longer be built by a K&R C compiler; it requires C89 or
|
|
||||||
later to be built. This change originally took place a few versions
|
|
||||||
ago, but nobody noticed until we recently asked someone to try
|
|
||||||
building Bison with a K&R C compiler.
|
|
||||||
|
|
||||||
Changes in version 1.75, 2002-10-14:
|
|
||||||
|
|
||||||
* Bison should now work on 64-bit hosts.
|
|
||||||
|
|
||||||
* Indonesian translation thanks to Tedi Heriyanto.
|
|
||||||
|
|
||||||
* GLR parsers
|
|
||||||
Fix spurious parse errors.
|
|
||||||
|
|
||||||
* Pure parsers
|
|
||||||
Some people redefine yyerror to steal yyparse' private variables.
|
|
||||||
Reenable this trick until an official feature replaces it.
|
|
||||||
|
|
||||||
* Type Clashes
|
|
||||||
In agreement with POSIX and with other Yaccs, leaving a default
|
|
||||||
action is valid when $$ is untyped, and $1 typed:
|
|
||||||
|
|
||||||
untyped: ... typed;
|
|
||||||
|
|
||||||
but the converse remains an error:
|
|
||||||
|
|
||||||
typed: ... untyped;
|
|
||||||
|
|
||||||
* Values of mid-rule actions
|
|
||||||
The following code:
|
|
||||||
|
|
||||||
foo: { ... } { $$ = $1; } ...
|
|
||||||
|
|
||||||
was incorrectly rejected: $1 is defined in the second mid-rule
|
|
||||||
action, and is equal to the $$ of the first mid-rule action.
|
|
||||||
|
|
||||||
Changes in version 1.50, 2002-10-04:
|
|
||||||
|
|
||||||
* GLR parsing
|
|
||||||
The declaration
|
|
||||||
%glr-parser
|
|
||||||
causes Bison to produce a Generalized LR (GLR) parser, capable of handling
|
|
||||||
almost any context-free grammar, ambiguous or not. The new declarations
|
|
||||||
%dprec and %merge on grammar rules allow parse-time resolution of
|
|
||||||
ambiguities. Contributed by Paul Hilfinger.
|
|
||||||
|
|
||||||
Unfortunately Bison 1.50 does not work properly on 64-bit hosts
|
|
||||||
like the Alpha, so please stick to 32-bit hosts for now.
|
|
||||||
|
|
||||||
* Output Directory
|
|
||||||
When not in Yacc compatibility mode, when the output file was not
|
|
||||||
specified, running `bison foo/bar.y' created `foo/bar.c'. It
|
|
||||||
now creates `bar.c'.
|
|
||||||
|
|
||||||
* Undefined token
|
|
||||||
The undefined token was systematically mapped to 2 which prevented
|
|
||||||
the use of 2 by the user. This is no longer the case.
|
|
||||||
|
|
||||||
* Unknown token numbers
|
|
||||||
If yylex returned an out of range value, yyparse could die. This is
|
|
||||||
no longer the case.
|
|
||||||
|
|
||||||
* Error token
|
|
||||||
According to POSIX, the error token must be 256.
|
|
||||||
Bison extends this requirement by making it a preference: *if* the
|
|
||||||
user specified that one of her tokens is numbered 256, then error
|
|
||||||
will be mapped onto another number.
|
|
||||||
|
|
||||||
* Verbose error messages
|
|
||||||
They no longer report `..., expecting error or...' for states where
|
|
||||||
error recovery is possible.
|
|
||||||
|
|
||||||
* End token
|
|
||||||
Defaults to `$end' instead of `$'.
|
|
||||||
|
|
||||||
* Error recovery now conforms to documentation and to POSIX
|
|
||||||
When a Bison-generated parser encounters a syntax error, it now pops
|
|
||||||
the stack until it finds a state that allows shifting the error
|
|
||||||
token. Formerly, it popped the stack until it found a state that
|
|
||||||
allowed some non-error action other than a default reduction on the
|
|
||||||
error token. The new behavior has long been the documented behavior,
|
|
||||||
and has long been required by POSIX. For more details, please see
|
|
||||||
Paul Eggert, "Reductions during Bison error handling" (2002-05-20)
|
|
||||||
<http://lists.gnu.org/archive/html/bug-bison/2002-05/msg00038.html>.
|
|
||||||
|
|
||||||
* Traces
|
|
||||||
Popped tokens and nonterminals are now reported.
|
|
||||||
|
|
||||||
* Larger grammars
|
|
||||||
Larger grammars are now supported (larger token numbers, larger grammar
|
|
||||||
size (= sum of the LHS and RHS lengths), larger LALR tables).
|
|
||||||
Formerly, many of these numbers ran afoul of 16-bit limits;
|
|
||||||
now these limits are 32 bits on most hosts.
|
|
||||||
|
|
||||||
* Explicit initial rule
|
|
||||||
Bison used to play hacks with the initial rule, which the user does
|
|
||||||
not write. It is now explicit, and visible in the reports and
|
|
||||||
graphs as rule 0.
|
|
||||||
|
|
||||||
* Useless rules
|
|
||||||
Before, Bison reported the useless rules, but, although not used,
|
|
||||||
included them in the parsers. They are now actually removed.
|
|
||||||
|
|
||||||
* Useless rules, useless nonterminals
|
|
||||||
They are now reported, as a warning, with their locations.
|
|
||||||
|
|
||||||
* Rules never reduced
|
|
||||||
Rules that can never be reduced because of conflicts are now
|
|
||||||
reported.
|
|
||||||
|
|
||||||
* Incorrect `Token not used'
|
|
||||||
On a grammar such as
|
|
||||||
|
|
||||||
%token useless useful
|
|
||||||
%%
|
|
||||||
exp: '0' %prec useful;
|
|
||||||
|
|
||||||
where a token was used to set the precedence of the last rule,
|
|
||||||
bison reported both `useful' and `useless' as useless tokens.
|
|
||||||
|
|
||||||
* Revert the C++ namespace changes introduced in 1.31
|
|
||||||
as they caused too many portability hassles.
|
|
||||||
|
|
||||||
* Default locations
|
|
||||||
By an accident of design, the default computation of @$ was
|
|
||||||
performed after another default computation was performed: @$ = @1.
|
|
||||||
The latter is now removed: YYLLOC_DEFAULT is fully responsible of
|
|
||||||
the computation of @$.
|
|
||||||
|
|
||||||
* Token end-of-file
|
|
||||||
The token end of file may be specified by the user, in which case,
|
|
||||||
the user symbol is used in the reports, the graphs, and the verbose
|
|
||||||
error messages instead of `$end', which remains being the default.
|
|
||||||
For instance
|
|
||||||
%token MYEOF 0
|
|
||||||
or
|
|
||||||
%token MYEOF 0 "end of file"
|
|
||||||
|
|
||||||
* Semantic parser
|
|
||||||
This old option, which has been broken for ages, is removed.
|
|
||||||
|
|
||||||
* New translations
|
|
||||||
Brazilian Portuguese, thanks to Alexandre Folle de Menezes.
|
|
||||||
Croatian, thanks to Denis Lackovic.
|
|
||||||
|
|
||||||
* Incorrect token definitions
|
|
||||||
When given `%token 'a' "A"', Bison used to output `#define 'a' 65'.
|
|
||||||
|
|
||||||
* Token definitions as enums
|
|
||||||
Tokens are output both as the traditional #define's, and, provided
|
|
||||||
the compiler supports ANSI C or is a C++ compiler, as enums.
|
|
||||||
This lets debuggers display names instead of integers.
|
|
||||||
|
|
||||||
* Reports
|
|
||||||
In addition to --verbose, bison supports --report=THINGS, which
|
|
||||||
produces additional information:
|
|
||||||
- itemset
|
|
||||||
complete the core item sets with their closure
|
|
||||||
- lookahead [changed to `look-ahead' in 1.875e through 2.3, but changed back]
|
|
||||||
explicitly associate lookahead tokens to items
|
|
||||||
- solved
|
|
||||||
describe shift/reduce conflicts solving.
|
|
||||||
Bison used to systematically output this information on top of
|
|
||||||
the report. Solved conflicts are now attached to their states.
|
|
||||||
|
|
||||||
* Type clashes
|
|
||||||
Previous versions don't complain when there is a type clash on
|
|
||||||
the default action if the rule has a mid-rule action, such as in:
|
|
||||||
|
|
||||||
%type <foo> bar
|
|
||||||
%%
|
|
||||||
bar: '0' {} '0';
|
|
||||||
|
|
||||||
This is fixed.
|
|
||||||
|
|
||||||
* GNU M4 is now required when using Bison.
|
|
||||||
|
|
||||||
Changes in version 1.35, 2002-03-25:
|
|
||||||
|
|
||||||
* C Skeleton
|
|
||||||
Some projects use Bison's C parser with C++ compilers, and define
|
|
||||||
YYSTYPE as a class. The recent adjustment of C parsers for data
|
|
||||||
alignment and 64 bit architectures made this impossible.
|
|
||||||
|
|
||||||
Because for the time being no real solution for C++ parser
|
|
||||||
generation exists, kludges were implemented in the parser to
|
|
||||||
maintain this use. In the future, when Bison has C++ parsers, this
|
|
||||||
kludge will be disabled.
|
|
||||||
|
|
||||||
This kludge also addresses some C++ problems when the stack was
|
|
||||||
extended.
|
|
||||||
|
|
||||||
Changes in version 1.34, 2002-03-12:
|
|
||||||
|
|
||||||
* File name clashes are detected
|
|
||||||
$ bison foo.y -d -o foo.x
|
|
||||||
fatal error: header and parser would both be named `foo.x'
|
|
||||||
|
|
||||||
* A missing `;' at the end of a rule triggers a warning
|
|
||||||
In accordance with POSIX, and in agreement with other
|
|
||||||
Yacc implementations, Bison will mandate this semicolon in the near
|
|
||||||
future. This eases the implementation of a Bison parser of Bison
|
|
||||||
grammars by making this grammar LALR(1) instead of LR(2). To
|
|
||||||
facilitate the transition, this release introduces a warning.
|
|
||||||
|
|
||||||
* Revert the C++ namespace changes introduced in 1.31, as they caused too
|
|
||||||
many portability hassles.
|
|
||||||
|
|
||||||
* DJGPP support added.
|
|
||||||
|
|
||||||
* Fix test suite portability problems.
|
|
||||||
|
|
||||||
Changes in version 1.33, 2002-02-07:
|
|
||||||
|
|
||||||
* Fix C++ issues
|
|
||||||
Groff could not be compiled for the definition of size_t was lacking
|
|
||||||
under some conditions.
|
|
||||||
|
|
||||||
* Catch invalid @n
|
|
||||||
As is done with $n.
|
|
||||||
|
|
||||||
Changes in version 1.32, 2002-01-23:
|
|
||||||
|
|
||||||
* Fix Yacc output file names
|
|
||||||
|
|
||||||
* Portability fixes
|
|
||||||
|
|
||||||
* Italian, Dutch translations
|
|
||||||
|
|
||||||
Changes in version 1.31, 2002-01-14:
|
|
||||||
|
|
||||||
* Many Bug Fixes
|
|
||||||
|
|
||||||
* GNU Gettext and %expect
|
|
||||||
GNU Gettext asserts 10 s/r conflicts, but there are 7. Now that
|
|
||||||
Bison dies on incorrect %expectations, we fear there will be
|
|
||||||
too many bug reports for Gettext, so _for the time being_, %expect
|
|
||||||
does not trigger an error when the input file is named `plural.y'.
|
|
||||||
|
|
||||||
* Use of alloca in parsers
|
|
||||||
If YYSTACK_USE_ALLOCA is defined to 0, then the parsers will use
|
|
||||||
malloc exclusively. Since 1.29, but was not NEWS'ed.
|
|
||||||
|
|
||||||
alloca is used only when compiled with GCC, to avoid portability
|
|
||||||
problems as on AIX.
|
|
||||||
|
|
||||||
* yyparse now returns 2 if memory is exhausted; formerly it dumped core.
|
|
||||||
|
|
||||||
* When the generated parser lacks debugging code, YYDEBUG is now 0
|
|
||||||
(as POSIX requires) instead of being undefined.
|
|
||||||
|
|
||||||
* User Actions
|
|
||||||
Bison has always permitted actions such as { $$ = $1 }: it adds the
|
|
||||||
ending semicolon. Now if in Yacc compatibility mode, the semicolon
|
|
||||||
is no longer output: one has to write { $$ = $1; }.
|
|
||||||
|
|
||||||
* Better C++ compliance
|
|
||||||
The output parsers try to respect C++ namespaces.
|
|
||||||
[This turned out to be a failed experiment, and it was reverted later.]
|
|
||||||
|
|
||||||
* Reduced Grammars
|
|
||||||
Fixed bugs when reporting useless nonterminals.
|
|
||||||
|
|
||||||
* 64 bit hosts
|
|
||||||
The parsers work properly on 64 bit hosts.
|
|
||||||
|
|
||||||
* Error messages
|
|
||||||
Some calls to strerror resulted in scrambled or missing error messages.
|
|
||||||
|
|
||||||
* %expect
|
|
||||||
When the number of shift/reduce conflicts is correct, don't issue
|
|
||||||
any warning.
|
|
||||||
|
|
||||||
* The verbose report includes the rule line numbers.
|
|
||||||
|
|
||||||
* Rule line numbers are fixed in traces.
|
|
||||||
|
|
||||||
* Swedish translation
|
|
||||||
|
|
||||||
* Parse errors
|
|
||||||
Verbose parse error messages from the parsers are better looking.
|
|
||||||
Before: parse error: unexpected `'/'', expecting `"number"' or `'-'' or `'(''
|
|
||||||
Now: parse error: unexpected '/', expecting "number" or '-' or '('
|
|
||||||
|
|
||||||
* Fixed parser memory leaks.
|
|
||||||
When the generated parser was using malloc to extend its stacks, the
|
|
||||||
previous allocations were not freed.
|
|
||||||
|
|
||||||
* Fixed verbose output file.
|
|
||||||
Some newlines were missing.
|
|
||||||
Some conflicts in state descriptions were missing.
|
|
||||||
|
|
||||||
* Fixed conflict report.
|
|
||||||
Option -v was needed to get the result.
|
|
||||||
|
|
||||||
* %expect
|
|
||||||
Was not used.
|
|
||||||
Mismatches are errors, not warnings.
|
|
||||||
|
|
||||||
* Fixed incorrect processing of some invalid input.
|
|
||||||
|
|
||||||
* Fixed CPP guards: 9foo.h uses BISON_9FOO_H instead of 9FOO_H.
|
|
||||||
|
|
||||||
* Fixed some typos in the documentation.
|
|
||||||
|
|
||||||
* %token MY_EOF 0 is supported.
|
|
||||||
Before, MY_EOF was silently renumbered as 257.
|
|
||||||
|
|
||||||
* doc/refcard.tex is updated.
|
|
||||||
|
|
||||||
* %output, %file-prefix, %name-prefix.
|
|
||||||
New.
|
|
||||||
|
|
||||||
* --output
|
|
||||||
New, aliasing `--output-file'.
|
|
||||||
|
|
||||||
Changes in version 1.30, 2001-10-26:
|
|
||||||
|
|
||||||
* `--defines' and `--graph' have now an optional argument which is the
|
|
||||||
output file name. `-d' and `-g' do not change; they do not take any
|
|
||||||
argument.
|
argument.
|
||||||
|
|
||||||
* `%source_extension' and `%header_extension' are removed, failed
|
* `%source_extension' and `%header_extension' are removed, failed
|
||||||
experiment.
|
experiment.
|
||||||
|
|
||||||
* Portability fixes.
|
* The test suite is more portable.
|
||||||
|
|
||||||
Changes in version 1.29, 2001-09-07:
|
* Better portability.
|
||||||
|
|
||||||
|
Changes in version 1.29:
|
||||||
|
|
||||||
* The output file does not define const, as this caused problems when used
|
* The output file does not define const, as this caused problems when used
|
||||||
with common autoconfiguration schemes. If you still use ancient compilers
|
with common autoconfiguration schemes. If you still use ancient compilers
|
||||||
@@ -733,11 +45,8 @@ Changes in version 1.29, 2001-09-07:
|
|||||||
* New directives.
|
* New directives.
|
||||||
`%yacc', `%fixed_output_files', `%defines', `%no_parser', `%verbose',
|
`%yacc', `%fixed_output_files', `%defines', `%no_parser', `%verbose',
|
||||||
`%debug', `%source_extension' and `%header_extension'.
|
`%debug', `%source_extension' and `%header_extension'.
|
||||||
|
|
||||||
* @$
|
|
||||||
Automatic location tracking.
|
|
||||||
|
|
||||||
Changes in version 1.28, 1999-07-06:
|
Changes in version 1.28:
|
||||||
|
|
||||||
* Should compile better now with K&R compilers.
|
* Should compile better now with K&R compilers.
|
||||||
|
|
||||||
@@ -769,7 +78,7 @@ Changes in version 1.26:
|
|||||||
* Generated parsers should now work even on operating systems which do
|
* Generated parsers should now work even on operating systems which do
|
||||||
not provide alloca().
|
not provide alloca().
|
||||||
|
|
||||||
Changes in version 1.25, 1995-10-16:
|
Changes in version 1.25:
|
||||||
|
|
||||||
* Errors in the input grammar are not fatal; Bison keeps reading
|
* Errors in the input grammar are not fatal; Bison keeps reading
|
||||||
the grammar file, and reports all the errors found in it.
|
the grammar file, and reports all the errors found in it.
|
||||||
@@ -810,29 +119,3 @@ Changes in version 1.22:
|
|||||||
Changes in version 1.20:
|
Changes in version 1.20:
|
||||||
|
|
||||||
Output file does not redefine const for C++.
|
Output file does not redefine const for C++.
|
||||||
|
|
||||||
Local Variables:
|
|
||||||
mode: outline
|
|
||||||
End:
|
|
||||||
|
|
||||||
-----
|
|
||||||
|
|
||||||
Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
|
|
||||||
2004, 2005, 2006 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
This file is part of Bison, the GNU Compiler Compiler.
|
|
||||||
|
|
||||||
Bison is free software; you can 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, or (at your option)
|
|
||||||
any later version.
|
|
||||||
|
|
||||||
Bison 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 autoconf; see the file COPYING. If not, write to
|
|
||||||
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
||||||
Boston, MA 02110-1301, USA.
|
|
||||||
|
|||||||
@@ -1,56 +0,0 @@
|
|||||||
Packaging hints for binary package distributors
|
|
||||||
===============================================
|
|
||||||
|
|
||||||
Although the source of the bison package comes as a single package,
|
|
||||||
in distributions of binary packages the installed files should
|
|
||||||
be split into two packages:
|
|
||||||
|
|
||||||
bison-runtime
|
|
||||||
Contents: Runtime libraries and programs.
|
|
||||||
Audience: Anyone who wants to run internationalized programs
|
|
||||||
that contain Bison-generated parsers.
|
|
||||||
|
|
||||||
bison
|
|
||||||
Contents: Tools and documentation for developers that use Bison.
|
|
||||||
Audience: Anyone who wants to develop programs that use parsers.
|
|
||||||
Dependencies: requires bison-runtime.
|
|
||||||
|
|
||||||
The 'bison-runtime' binary package is much smaller than the 'bison'
|
|
||||||
binary package. It should be included in any distribution that
|
|
||||||
contains localized programs that use the diagnostics contained in
|
|
||||||
Bison-generated parsers.
|
|
||||||
|
|
||||||
If you want to install both packages at the same time, you simply do
|
|
||||||
at the toplevel directory:
|
|
||||||
|
|
||||||
./configure
|
|
||||||
make
|
|
||||||
make install
|
|
||||||
|
|
||||||
After installation, the file
|
|
||||||
|
|
||||||
$prefix/share/locale/*/LC_MESSAGES/bison-runtime.mo
|
|
||||||
|
|
||||||
belongs to the bison-runtime package; all other installed files belong
|
|
||||||
to the bison package.
|
|
||||||
|
|
||||||
-----
|
|
||||||
|
|
||||||
Copyright (C) 2002, 2005 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
This file is part of Bison, the GNU Compiler Compiler.
|
|
||||||
|
|
||||||
Bison is free software; you can 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, or (at your option)
|
|
||||||
any later version.
|
|
||||||
|
|
||||||
Bison 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 autoconf; see the file COPYING. If not, write to
|
|
||||||
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
||||||
Boston, MA 02110-1301, USA.
|
|
||||||
@@ -1,41 +1,24 @@
|
|||||||
This directory contains the Bison parser generator.
|
This directory contains the Bison parser generator.
|
||||||
|
|
||||||
See the file INSTALL for generic compilation and installation instructions.
|
See the file INSTALL for compilation and installation instructions.
|
||||||
See the file doc/FAQ for frequently asked questions.
|
See the file doc/FAQ for frequently asked questions.
|
||||||
|
|
||||||
Bison requires GNU m4 1.4.3 or later. See:
|
It was once true that, when installing Bison on Sequent (or Pyramid?)
|
||||||
|
systems, you had to be in the Berkeley universe. This may no longer
|
||||||
|
be true; we have no way to tell.
|
||||||
|
|
||||||
ftp://ftp.gnu.org/gnu/m4/m4-1.4.3.tar.gz
|
On VMS, you will probably have to create Makefile from Makefile.in by
|
||||||
|
hand. Remember to do `SET COMMAND BISON' to install the data in
|
||||||
|
`BISON.CLD'.
|
||||||
|
|
||||||
Bison can work with pre-1.4.3 distributions of GNU m4 if they are
|
VMS and MS-DOS builds are probably broken right now. If you are able
|
||||||
sufficiently patched, but if you encounter a bug with an older
|
to build Bison on either platform and you need to make changes to do
|
||||||
distribution and report a bug we will probably suggest that you
|
so, please submit those changes as a bug report.
|
||||||
upgrade to 1.4.3 as the first step in trying to fix it.
|
|
||||||
|
|
||||||
Please send bug reports to <[email protected]>. Please include the
|
Send bug reports to [email protected]. Please include the version
|
||||||
version number from `bison --version', and a complete, self-contained
|
number from `bison --version', and a complete, self-contained test
|
||||||
test case in each bug report.
|
case in each bug report.
|
||||||
|
|
||||||
If you have questions about using Bison and the documentation does
|
If you have questions about using Bison which the documentation does
|
||||||
not answer them, please send mail to <[email protected]>.
|
not answer, send mail to [email protected].
|
||||||
|
|
||||||
-----
|
|
||||||
|
|
||||||
Copyright (C) 1992, 1998, 1999, 2003, 2004, 2005 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
This file is part of Bison, the GNU Compiler Compiler.
|
|
||||||
|
|
||||||
Bison is free software; you can 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, or (at your option)
|
|
||||||
any later version.
|
|
||||||
|
|
||||||
Bison 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 autoconf; see the file COPYING. If not, write to
|
|
||||||
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
||||||
Boston, MA 02110-1301, USA.
|
|
||||||
|
|||||||
+6
-21
@@ -7,26 +7,11 @@ The documentation still needs more work. Suggestions welcome.
|
|||||||
Patches even more welcome.
|
Patches even more welcome.
|
||||||
|
|
||||||
Please send comments and problem reports about this test release to
|
Please send comments and problem reports about this test release to
|
||||||
<[email protected]>. This program will get better only if you report
|
[email protected]. This program will get better only if you report
|
||||||
the problems you encounter.
|
the problems you encounter.
|
||||||
|
|
||||||
-----
|
Please, *do not package this*, *do not distribute it* widely, it is
|
||||||
|
not ready for full scale use. Because it is not fully functional, if
|
||||||
Copyright (C) 2002, 2004 Free Software Foundation, Inc.
|
you distribute this package, we will be buried under bug reports from
|
||||||
|
panicked users. We don't have time to spend on this, and nor do the
|
||||||
This file is part of GNU Bison.
|
users.
|
||||||
|
|
||||||
GNU Bison is free software; you can 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, or (at your option)
|
|
||||||
any later version.
|
|
||||||
|
|
||||||
GNU Bison 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 Bison; see the file COPYING. If not, write to
|
|
||||||
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
||||||
Boston, MA 02110-1301, USA.
|
|
||||||
|
|||||||
-79
@@ -1,79 +0,0 @@
|
|||||||
-*- outline -*-
|
|
||||||
|
|
||||||
These notes intend to help people working on the CVS versions of
|
|
||||||
Bison.
|
|
||||||
|
|
||||||
* Requirements
|
|
||||||
|
|
||||||
Only the sources are installed in the CVS repository (to ease the
|
|
||||||
maintenance, merges etc.), therefore you will have to get the latest
|
|
||||||
stable versions of the maintainer tools we depend upon, including:
|
|
||||||
|
|
||||||
- Automake <http://www.gnu.org/software/automake/>
|
|
||||||
- Autoconf <http://www.gnu.org/software/autoconf/>
|
|
||||||
- Flex <http://www.gnu.org/software/flex/>
|
|
||||||
- Gettext <http://www.gnu.org/software/gettext/>
|
|
||||||
- Gzip <http://www.gnu.org/software/gzip/>
|
|
||||||
- Tar <http://www.gnu.org/software/tar/>
|
|
||||||
- Wget <http://www.gnu.org/software/wget/>
|
|
||||||
|
|
||||||
As of this writing, the latest stable version of Gzip is 1.2.4 but we
|
|
||||||
suggest using test version 1.3.5 (or later, if one becomes available).
|
|
||||||
|
|
||||||
Valgrind <http://valgrind.org/> is also highly recommended, if
|
|
||||||
Valgrind supports your architecture.
|
|
||||||
|
|
||||||
Bison is written using Bison grammars, so there are bootstrapping
|
|
||||||
issues. The bootstrap script attempts to discover when the C code
|
|
||||||
generated from the grammars is out of date, and to bootstrap with an
|
|
||||||
out-of-date version of the C code, but the process is not foolproof.
|
|
||||||
Also, you may run into similar problems yourself if you modify Bison.
|
|
||||||
|
|
||||||
Only building the initial full source tree will be a bit painful,
|
|
||||||
later, a plain `cvs update -P && make' should be sufficient.
|
|
||||||
|
|
||||||
* First CVS checkout
|
|
||||||
|
|
||||||
Obviously, if you are reading these notes, you did manage to check out
|
|
||||||
Bison from CVS. For the records, you will find all the relevant
|
|
||||||
information on:
|
|
||||||
|
|
||||||
http://savannah.gnu.org/cvs/?group_id=56
|
|
||||||
|
|
||||||
The next step is asking the installation of all the missing files:
|
|
||||||
|
|
||||||
$ ./bootstrap
|
|
||||||
|
|
||||||
And there you are! Just
|
|
||||||
|
|
||||||
$ ./configure && make && make check
|
|
||||||
|
|
||||||
At this point, there should be no difference between your local copy,
|
|
||||||
and the CVS master copy:
|
|
||||||
|
|
||||||
$ cvs diff
|
|
||||||
|
|
||||||
should output no difference.
|
|
||||||
|
|
||||||
Enjoy!
|
|
||||||
|
|
||||||
-----
|
|
||||||
|
|
||||||
Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
This file is part of GNU Bison.
|
|
||||||
|
|
||||||
GNU Bison is free software; you can 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, or (at your option)
|
|
||||||
any later version.
|
|
||||||
|
|
||||||
GNU Bison 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 Bison; see the file COPYING. If not, write to
|
|
||||||
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
||||||
Boston, MA 02110-1301, USA.
|
|
||||||
+2
-5
@@ -20,14 +20,11 @@ Also, Bison uses a faster but less space-efficient encoding for the
|
|||||||
parse tables (see Corbett's PhD thesis from Berkeley, "Static
|
parse tables (see Corbett's PhD thesis from Berkeley, "Static
|
||||||
Semantics in Compiler Error Recovery", June 1985, Report No. UCB/CSD
|
Semantics in Compiler Error Recovery", June 1985, Report No. UCB/CSD
|
||||||
85/251), and more modern technique for generating the lookahead sets.
|
85/251), and more modern technique for generating the lookahead sets.
|
||||||
(See Frank DeRemer and Thomas Pennello, "Efficient Computation of
|
(See "Efficient Construction of LALR(1) Lookahead Sets" by F. DeRemer
|
||||||
LALR(1) Look-Ahead Sets", ACM Transactions on Programming Languages
|
and A. Pennello, in ACM TOPLS Vol 4 No 4, October 1982. Their
|
||||||
and Systems (TOPLAS) 4, 4 (October 1982), 615-649. Their
|
|
||||||
technique is the standard one now.)
|
technique is the standard one now.)
|
||||||
|
|
||||||
paul rubin
|
paul rubin
|
||||||
free software foundation
|
free software foundation
|
||||||
|
|
||||||
|
|
||||||
[DeRemer-Pennello reference corrected by Paul Eggert <[email protected]>,
|
|
||||||
2004-06-21.]
|
|
||||||
|
|||||||
@@ -1,86 +1,28 @@
|
|||||||
Bison was originally written by Robert Corbett. It would not be what
|
Bison was originally written by Robert Corbett. It would not be what
|
||||||
it is today without the invaluable help of these people:
|
it is today without the invaluable help of these people:
|
||||||
|
|
||||||
Airy Andre [email protected]
|
Airy Andre [email protected]
|
||||||
Akim Demaille akim@freefriends.org
|
Akim Demaille akim@epita.fr
|
||||||
Albert Chin-A-Young [email protected]
|
Albert Chin-A-Young [email protected]
|
||||||
Alexander Belopolsky [email protected]
|
Alexander Belopolsky [email protected]
|
||||||
Alexandre Duret-Lutz [email protected]
|
Daniel Hagerty [email protected]
|
||||||
Andreas Schwab [email protected]
|
David J. MacKenzie [email protected]
|
||||||
Andrew Suffield [email protected]
|
Fabrice Bauzac [email protected]
|
||||||
Anthony Heading [email protected]
|
Hans Aberg [email protected]
|
||||||
Arnold Robbins [email protected]
|
Jesse Thilo [email protected]
|
||||||
Art Haas [email protected]
|
Jim Meyering [email protected]
|
||||||
Baron Schwartz [email protected]
|
Juan Manuel Guerrero [email protected]
|
||||||
Benoit Perrot [email protected]
|
Keith Browne [email protected]
|
||||||
Bert Deknuydt [email protected]
|
Laurent Mascherpa [email protected]
|
||||||
Bruce Lilly [email protected]
|
Marc Autret [email protected]
|
||||||
Bruno Haible [email protected]
|
Neil Booth [email protected]
|
||||||
Charles-Henri de Boysson [email protected]
|
Noah Friedman [email protected]
|
||||||
Cris Bailiff [email protected]
|
Pascal Bart [email protected]
|
||||||
Cris van Pelt [email protected]
|
Paul Eggert [email protected]
|
||||||
Daniel Hagerty [email protected]
|
Piotr Gackiewicz [email protected]
|
||||||
David J. MacKenzie djm@gnu.org
|
Richard Stallman rms@gnu.org
|
||||||
Derek M. Jones [email protected]
|
Robert Anisko [email protected]
|
||||||
Dick Streefland [email protected]
|
Shura [email protected]
|
||||||
Enrico Scholz [email protected]
|
|
||||||
Evgeny Stambulchik [email protected]
|
|
||||||
Fabrice Bauzac [email protected]
|
|
||||||
Florian Krohm [email protected]
|
|
||||||
Frank Heckenbach [email protected]
|
|
||||||
Guido Trentalancia [email protected]
|
|
||||||
H. Merijn Brand [email protected]
|
|
||||||
Hans Aberg [email protected]
|
|
||||||
Jan Nieuwenhuizen [email protected]
|
|
||||||
Jesse Thilo [email protected]
|
|
||||||
Jim Kent [email protected]
|
|
||||||
Jim Meyering [email protected]
|
|
||||||
Joel E. Denny [email protected]
|
|
||||||
Juan Manuel Guerrero [email protected]
|
|
||||||
Kees Zeelenberg [email protected]
|
|
||||||
Keith Browne [email protected]
|
|
||||||
Laurent Mascherpa [email protected]
|
|
||||||
Magnus Fromreide [email protected]
|
|
||||||
Marc Autret [email protected]
|
|
||||||
Martin Mokrejs [email protected]
|
|
||||||
Martin Nylin [email protected]
|
|
||||||
Matt Kraai [email protected]
|
|
||||||
Matt Rosing [email protected]
|
|
||||||
Michael Hayes [email protected]
|
|
||||||
Mickael Labau [email protected]
|
|
||||||
Mike Castle [email protected]
|
|
||||||
Neil Booth [email protected]
|
|
||||||
Nelson H. F. Beebe [email protected]
|
|
||||||
Nicolas Burrus [email protected]
|
|
||||||
Nicolas Tisserand [email protected]
|
|
||||||
Noah Friedman [email protected]
|
|
||||||
Oleg Smolsky [email protected]
|
|
||||||
Pascal Bart [email protected]
|
|
||||||
Paul Eggert [email protected]
|
|
||||||
Paul Hilfinger [email protected]
|
|
||||||
Per Allansson [email protected]
|
|
||||||
Peter Fales [email protected]
|
|
||||||
Peter Hamorsky [email protected]
|
|
||||||
Piotr Gackiewicz [email protected]
|
|
||||||
Quoc Peyrot [email protected]
|
|
||||||
R Blake [email protected]
|
|
||||||
Raja R Harinath [email protected]
|
|
||||||
Richard Stallman [email protected]
|
|
||||||
Robert Anisko [email protected]
|
|
||||||
Shura [email protected]
|
|
||||||
Steve Murphy [email protected]
|
|
||||||
Tim Josling [email protected]
|
|
||||||
Tim Van Holder [email protected]
|
|
||||||
Tom Lane [email protected]
|
|
||||||
Tom Tromey [email protected]
|
|
||||||
Tommy Nordgren [email protected]
|
|
||||||
Troy A. Johnson [email protected]
|
|
||||||
Tys Lefering [email protected]
|
|
||||||
Vin Shelton [email protected]
|
|
||||||
Wayne Green [email protected]
|
|
||||||
Wolfram Wagner [email protected]
|
|
||||||
Wwp [email protected]
|
|
||||||
Zack Weinberg [email protected]
|
|
||||||
|
|
||||||
Many people are not named here because we lost track of them. We
|
Many people are not named here because we lost track of them. We
|
||||||
thank them! Please, help us keeping this list up to date.
|
thank them! Please, help us keeping this list up to date.
|
||||||
|
|||||||
@@ -1,337 +0,0 @@
|
|||||||
-*- outline -*-
|
|
||||||
|
|
||||||
* Header guards
|
|
||||||
|
|
||||||
From Franc,ois: should we keep the directory part in the CPP guard?
|
|
||||||
|
|
||||||
|
|
||||||
* Yacc.c: CPP Macros
|
|
||||||
|
|
||||||
Do some people use YYPURE, YYLSP_NEEDED like we do in the test suite?
|
|
||||||
They should not: it is not documented. But if they need to, let's
|
|
||||||
find something clean (not like YYLSP_NEEDED...).
|
|
||||||
|
|
||||||
|
|
||||||
* Installation
|
|
||||||
|
|
||||||
** Disable installation of yacc.
|
|
||||||
|
|
||||||
Add an option to 'configure' that allows people to install Bison
|
|
||||||
without installing the yacc wrapper script or the rarely-used little
|
|
||||||
yacc library required by Posix. This is for people who prefer some
|
|
||||||
other implementation of yacc.
|
|
||||||
|
|
||||||
* Documentation
|
|
||||||
Before releasing, make sure the documentation ("Understanding your
|
|
||||||
parser") refers to the current `output' format.
|
|
||||||
|
|
||||||
* lalr1.cc
|
|
||||||
** vector
|
|
||||||
Move to using vector, drop stack.hh.
|
|
||||||
|
|
||||||
** I18n
|
|
||||||
Catch up with yacc.c.
|
|
||||||
|
|
||||||
* Report
|
|
||||||
|
|
||||||
** GLR
|
|
||||||
How would Paul like to display the conflicted actions? In particular,
|
|
||||||
what when two reductions are possible on a given lookahead token, but one is
|
|
||||||
part of $default. Should we make the two reductions explicit, or just
|
|
||||||
keep $default? See the following point.
|
|
||||||
|
|
||||||
** Disabled Reductions
|
|
||||||
See `tests/conflicts.at (Defaulted Conflicted Reduction)', and decide
|
|
||||||
what we want to do.
|
|
||||||
|
|
||||||
** Documentation
|
|
||||||
Extend with error productions. The hard part will probably be finding
|
|
||||||
the right rule so that a single state does not exhibit too many yet
|
|
||||||
undocumented ``features''. Maybe an empty action ought to be
|
|
||||||
presented too. Shall we try to make a single grammar with all these
|
|
||||||
features, or should we have several very small grammars?
|
|
||||||
|
|
||||||
** --report=conflict-path
|
|
||||||
Provide better assistance for understanding the conflicts by providing
|
|
||||||
a sample text exhibiting the (LALR) ambiguity. See the paper from
|
|
||||||
DeRemer and Penello: they already provide the algorithm.
|
|
||||||
|
|
||||||
|
|
||||||
* Extensions
|
|
||||||
|
|
||||||
** Labeling the symbols
|
|
||||||
Have a look at the Lemon parser generator: instead of $1, $2 etc. they
|
|
||||||
can name the values. This is much more pleasant. For instance:
|
|
||||||
|
|
||||||
exp (res): exp (a) '+' exp (b) { $res = $a + $b; };
|
|
||||||
|
|
||||||
I love this. I have been bitten too often by the removal of the
|
|
||||||
symbol, and forgetting to shift all the $n to $n-1. If you are
|
|
||||||
unlucky, it compiles...
|
|
||||||
|
|
||||||
But instead of using $a etc., we can use regular variables. And
|
|
||||||
instead of using (), I propose to use `:' (again). Paul suggests
|
|
||||||
supporting `->' in addition to `:' to separate LHS and RHS. In other
|
|
||||||
words:
|
|
||||||
|
|
||||||
r:exp -> a:exp '+' b:exp { r = a + b; };
|
|
||||||
|
|
||||||
That requires an significant improvement of the grammar parser. Using
|
|
||||||
GLR would be nice. It also requires that Bison know the type of the
|
|
||||||
symbols (which will be useful for %include anyway). So we have some
|
|
||||||
time before...
|
|
||||||
|
|
||||||
Note that there remains the problem of locations: `@r'?
|
|
||||||
|
|
||||||
|
|
||||||
** $-1
|
|
||||||
We should find a means to provide an access to values deep in the
|
|
||||||
stack. For instance, instead of
|
|
||||||
|
|
||||||
baz: qux { $$ = $<foo>-1 + $<bar>0 + $1; }
|
|
||||||
|
|
||||||
we should be able to have:
|
|
||||||
|
|
||||||
foo($foo) bar($bar) baz($bar): qux($qux) { $baz = $foo + $bar + $qux; }
|
|
||||||
|
|
||||||
Or something like this.
|
|
||||||
|
|
||||||
** %if and the like
|
|
||||||
It should be possible to have %if/%else/%endif. The implementation is
|
|
||||||
not clear: should it be lexical or syntactic. Vadim Maslow thinks it
|
|
||||||
must be in the scanner: we must not parse what is in a switched off
|
|
||||||
part of %if. Akim Demaille thinks it should be in the parser, so as
|
|
||||||
to avoid falling into another CPP mistake.
|
|
||||||
|
|
||||||
** -D, --define-muscle NAME=VALUE
|
|
||||||
To define muscles via cli. Or maybe support directly NAME=VALUE?
|
|
||||||
|
|
||||||
** XML Output
|
|
||||||
There are couple of available extensions of Bison targeting some XML
|
|
||||||
output. Some day we should consider including them. One issue is
|
|
||||||
that they seem to be quite orthogonal to the parsing technique, and
|
|
||||||
seem to depend mostly on the possibility to have some code triggered
|
|
||||||
for each reduction. As a matter of fact, such hooks could also be
|
|
||||||
used to generate the yydebug traces. Some generic scheme probably
|
|
||||||
exists in there.
|
|
||||||
|
|
||||||
XML output for GNU Bison and gcc
|
|
||||||
http://www.cs.may.ie/~jpower/Research/bisonXML/
|
|
||||||
|
|
||||||
XML output for GNU Bison
|
|
||||||
http://yaxx.sourceforge.net/
|
|
||||||
|
|
||||||
* Unit rules
|
|
||||||
Maybe we could expand unit rules, i.e., transform
|
|
||||||
|
|
||||||
exp: arith | bool;
|
|
||||||
arith: exp '+' exp;
|
|
||||||
bool: exp '&' exp;
|
|
||||||
|
|
||||||
into
|
|
||||||
|
|
||||||
exp: exp '+' exp | exp '&' exp;
|
|
||||||
|
|
||||||
when there are no actions. This can significantly speed up some
|
|
||||||
grammars. I can't find the papers. In particular the book `LR
|
|
||||||
parsing: Theory and Practice' is impossible to find, but according to
|
|
||||||
`Parsing Techniques: a Practical Guide', it includes information about
|
|
||||||
this issue. Does anybody have it?
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
* Documentation
|
|
||||||
|
|
||||||
** History/Bibliography
|
|
||||||
Some history of Bison and some bibliography would be most welcome.
|
|
||||||
Are there any Texinfo standards for bibliography?
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
* Java, Fortran, etc.
|
|
||||||
|
|
||||||
|
|
||||||
** Java
|
|
||||||
|
|
||||||
There are a couple of proposed outputs:
|
|
||||||
|
|
||||||
- BYACC/J
|
|
||||||
which is based on Byacc.
|
|
||||||
<http://troi.lincom-asg.com/~rjamison/byacc/>
|
|
||||||
|
|
||||||
- Bison Java
|
|
||||||
which is based on Bison.
|
|
||||||
<http://www.goice.co.jp/member/mo/hack-progs/bison-java.html>
|
|
||||||
|
|
||||||
Sebastien Serrurier ([email protected]) is working on this: he is
|
|
||||||
expected to contact the authors, design the output, and implement it
|
|
||||||
into Bison.
|
|
||||||
|
|
||||||
|
|
||||||
* Coding system independence
|
|
||||||
Paul notes:
|
|
||||||
|
|
||||||
Currently Bison assumes 8-bit bytes (i.e. that UCHAR_MAX is
|
|
||||||
255). It also assumes that the 8-bit character encoding is
|
|
||||||
the same for the invocation of 'bison' as it is for the
|
|
||||||
invocation of 'cc', but this is not necessarily true when
|
|
||||||
people run bison on an ASCII host and then use cc on an EBCDIC
|
|
||||||
host. I don't think these topics are worth our time
|
|
||||||
addressing (unless we find a gung-ho volunteer for EBCDIC or
|
|
||||||
PDP-10 ports :-) but they should probably be documented
|
|
||||||
somewhere.
|
|
||||||
|
|
||||||
More importantly, Bison does not currently allow NUL bytes in
|
|
||||||
tokens, either via escapes (e.g., "x\0y") or via a NUL byte in
|
|
||||||
the source code. This should get fixed.
|
|
||||||
|
|
||||||
* --graph
|
|
||||||
Show reductions.
|
|
||||||
|
|
||||||
* Broken options ?
|
|
||||||
** %no-parser
|
|
||||||
** %token-table
|
|
||||||
** Skeleton strategy
|
|
||||||
Must we keep %no-parser? %token-table?
|
|
||||||
|
|
||||||
* src/print_graph.c
|
|
||||||
Find the best graph parameters.
|
|
||||||
|
|
||||||
* BTYacc
|
|
||||||
See if we can integrate backtracking in Bison. Charles-Henri de
|
|
||||||
Boysson <[email protected]> is working on this, and already has some
|
|
||||||
results. Vadim Maslow, the maintainer of BTYacc was contacted, and we
|
|
||||||
stay in touch with him. Adjusting the Bison grammar parser will be
|
|
||||||
needed to support some extra BTYacc features. This is less urgent.
|
|
||||||
|
|
||||||
** Keeping the conflicted actions
|
|
||||||
First, analyze the differences between byacc and btyacc (I'm referring
|
|
||||||
to the executables). Find where the conflicts are preserved.
|
|
||||||
|
|
||||||
** Compare with the GLR tables
|
|
||||||
See how isomorphic the way BTYacc and the way the GLR adjustments in
|
|
||||||
Bison are compatible. *As much as possible* one should try to use the
|
|
||||||
same implementation in the Bison executables. I insist: it should be
|
|
||||||
very feasible to use the very same conflict tables.
|
|
||||||
|
|
||||||
** Adjust the skeletons
|
|
||||||
Import the skeletons for C and C++.
|
|
||||||
|
|
||||||
** Improve the skeletons
|
|
||||||
Have them support yysymprint, yydestruct and so forth.
|
|
||||||
|
|
||||||
|
|
||||||
* Precedence
|
|
||||||
|
|
||||||
** Partial order
|
|
||||||
It is unfortunate that there is a total order for precedence. It
|
|
||||||
makes it impossible to have modular precedence information. We should
|
|
||||||
move to partial orders (sounds like series/parallel orders to me).
|
|
||||||
|
|
||||||
This will be possible with a Bison parser for the grammar, as it will
|
|
||||||
make it much easier to extend the grammar.
|
|
||||||
|
|
||||||
** Correlation b/w precedence and associativity
|
|
||||||
Also, I fail to understand why we have to assign the same
|
|
||||||
associativity to operators with the same precedence. For instance,
|
|
||||||
why can't I decide that the precedence of * and / is the same, but the
|
|
||||||
latter is nonassoc?
|
|
||||||
|
|
||||||
If there is really no profound motivation, we should find a new syntax
|
|
||||||
to allow specifying this.
|
|
||||||
|
|
||||||
** RR conflicts
|
|
||||||
See if we can use precedence between rules to solve RR conflicts. See
|
|
||||||
what POSIX says.
|
|
||||||
|
|
||||||
|
|
||||||
* $undefined
|
|
||||||
From Hans:
|
|
||||||
- If the Bison generated parser experiences an undefined number in the
|
|
||||||
character range, that character is written out in diagnostic messages, an
|
|
||||||
addition to the $undefined value.
|
|
||||||
|
|
||||||
Suggest: Change the name $undefined to undefined; looks better in outputs.
|
|
||||||
|
|
||||||
|
|
||||||
* Default Action
|
|
||||||
From Hans:
|
|
||||||
- For use with my C++ parser, I transported the "switch (yyn)" statement
|
|
||||||
that Bison writes to the bison.simple skeleton file. This way, I can remove
|
|
||||||
the current default rule $$ = $1 implementation, which causes a double
|
|
||||||
assignment to $$ which may not be OK under C++, replacing it with a
|
|
||||||
"default:" part within the switch statement.
|
|
||||||
|
|
||||||
Note that the default rule $$ = $1, when typed, is perfectly OK under C,
|
|
||||||
but in the C++ implementation I made, this rule is different from
|
|
||||||
$<type_name>$ = $<type_name>1. I therefore think that one should implement
|
|
||||||
a Bison option where every typed default rule is explicitly written out
|
|
||||||
(same typed ruled can of course be grouped together).
|
|
||||||
|
|
||||||
Note: Robert Anisko handles this. He knows how to do it.
|
|
||||||
|
|
||||||
|
|
||||||
* Warnings
|
|
||||||
It would be nice to have warning support. See how Autoconf handles
|
|
||||||
them, it is fairly well described there. It would be very nice to
|
|
||||||
implement this in such a way that other programs could use
|
|
||||||
lib/warnings.[ch].
|
|
||||||
|
|
||||||
Don't work on this without first announcing you do, as I already have
|
|
||||||
thought about it, and know many of the components that can be used to
|
|
||||||
implement it.
|
|
||||||
|
|
||||||
|
|
||||||
* Pre and post actions.
|
|
||||||
From: Florian Krohm <[email protected]>
|
|
||||||
Subject: YYACT_EPILOGUE
|
|
||||||
To: [email protected]
|
|
||||||
X-Sent: 1 week, 4 days, 14 hours, 38 minutes, 11 seconds ago
|
|
||||||
|
|
||||||
The other day I had the need for explicitly building the parse tree. I
|
|
||||||
used %locations for that and defined YYLLOC_DEFAULT to call a function
|
|
||||||
that returns the tree node for the production. Easy. But I also needed
|
|
||||||
to assign the S-attribute to the tree node. That cannot be done in
|
|
||||||
YYLLOC_DEFAULT, because it is invoked before the action is executed.
|
|
||||||
The way I solved this was to define a macro YYACT_EPILOGUE that would
|
|
||||||
be invoked after the action. For reasons of symmetry I also added
|
|
||||||
YYACT_PROLOGUE. Although I had no use for that I can envision how it
|
|
||||||
might come in handy for debugging purposes.
|
|
||||||
All is needed is to add
|
|
||||||
|
|
||||||
#if YYLSP_NEEDED
|
|
||||||
YYACT_EPILOGUE (yyval, (yyvsp - yylen), yylen, yyloc, (yylsp - yylen));
|
|
||||||
#else
|
|
||||||
YYACT_EPILOGUE (yyval, (yyvsp - yylen), yylen);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
at the proper place to bison.simple. Ditto for YYACT_PROLOGUE.
|
|
||||||
|
|
||||||
I was wondering what you think about adding YYACT_PROLOGUE/EPILOGUE
|
|
||||||
to bison. If you're interested, I'll work on a patch.
|
|
||||||
|
|
||||||
* Move to Graphviz
|
|
||||||
Well, VCG seems really dead. Move to Graphviz instead. Also, equip
|
|
||||||
the parser with a means to create the (visual) parse tree.
|
|
||||||
|
|
||||||
-----
|
|
||||||
|
|
||||||
Copyright (C) 2001, 2002, 2003, 2004, 2006 Free Software Foundation,
|
|
||||||
Inc.
|
|
||||||
|
|
||||||
This file is part of Bison, the GNU Compiler Compiler.
|
|
||||||
|
|
||||||
Bison is free software; you can 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, or (at your option)
|
|
||||||
any later version.
|
|
||||||
|
|
||||||
Bison 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 Bison; see the file COPYING. If not, write to
|
|
||||||
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
||||||
Boston, MA 02110-1301, USA.
|
|
||||||
Vendored
+1690
File diff suppressed because it is too large
Load Diff
@@ -1,345 +0,0 @@
|
|||||||
#! /bin/sh
|
|
||||||
|
|
||||||
# Bootstrap this package from CVS.
|
|
||||||
|
|
||||||
# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
# 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, 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.
|
|
||||||
|
|
||||||
# Written by Paul Eggert.
|
|
||||||
|
|
||||||
package=bison
|
|
||||||
|
|
||||||
# Translation Project URL, for the registry of all projects.
|
|
||||||
TP_URL='http://www.iro.umontreal.ca/translation/registry.cgi?domain='
|
|
||||||
|
|
||||||
# Ensure file names are sorted consistently across platforms.
|
|
||||||
# Also, ensure diagnostics are in English, e.g., "wget --help" below.
|
|
||||||
LC_ALL=C
|
|
||||||
export LC_ALL
|
|
||||||
|
|
||||||
# Parse options.
|
|
||||||
|
|
||||||
for option
|
|
||||||
do
|
|
||||||
case $option in
|
|
||||||
--help)
|
|
||||||
echo "$0: usage: $0 [--gnulib-srcdir=DIR] [--cvs-user=USERNAME] [--skip-po]"
|
|
||||||
exit;;
|
|
||||||
--gnulib-srcdir=*)
|
|
||||||
GNULIB_SRCDIR=`expr "$option" : '--gnulib-srcdir=\(.*\)'`;;
|
|
||||||
--cvs-user=*)
|
|
||||||
CVS_USER=`expr "$option" : '--cvs-user=\(.*\)'`;;
|
|
||||||
--skip-po)
|
|
||||||
SKIP_PO=t;;
|
|
||||||
*)
|
|
||||||
echo >&2 "$0: $option: unknown option"
|
|
||||||
exit 1;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
echo "$0: Bootstrapping CVS $package..."
|
|
||||||
|
|
||||||
cleanup_gnulib() {
|
|
||||||
status=$?
|
|
||||||
rm -fr gnulib
|
|
||||||
exit $status
|
|
||||||
}
|
|
||||||
|
|
||||||
# Get gnulib files.
|
|
||||||
|
|
||||||
case ${GNULIB_SRCDIR--} in
|
|
||||||
-)
|
|
||||||
if [ ! -d gnulib ]; then
|
|
||||||
echo "$0: getting gnulib files..."
|
|
||||||
|
|
||||||
case ${CVS_AUTH-pserver} in
|
|
||||||
pserver)
|
|
||||||
CVS_PREFIX=':pserver:anonymous@';;
|
|
||||||
ssh)
|
|
||||||
CVS_PREFIX="$CVS_USER${CVS_USER+@}";;
|
|
||||||
*)
|
|
||||||
echo "$0: $CVS_AUTH: Unknown CVS access method" >&2
|
|
||||||
exit 1;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
case $CVS_RSH in
|
|
||||||
'') export CVS_RSH=ssh;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
trap cleanup_gnulib 1 2 13 15
|
|
||||||
|
|
||||||
cvs -z3 -q -d ${CVS_PREFIX}cvs.savannah.gnu.org:/cvsroot/gnulib co gnulib ||
|
|
||||||
cleanup_gnulib
|
|
||||||
|
|
||||||
trap - 1 2 13 15
|
|
||||||
fi
|
|
||||||
GNULIB_SRCDIR=gnulib
|
|
||||||
esac
|
|
||||||
|
|
||||||
gnulib_tool=$GNULIB_SRCDIR/gnulib-tool
|
|
||||||
<$gnulib_tool || exit
|
|
||||||
|
|
||||||
gnulib_modules='
|
|
||||||
argmatch
|
|
||||||
dirname
|
|
||||||
error
|
|
||||||
extensions
|
|
||||||
fopen-safer
|
|
||||||
getopt
|
|
||||||
gettext
|
|
||||||
hash
|
|
||||||
malloc
|
|
||||||
mbswidth
|
|
||||||
obstack
|
|
||||||
quote
|
|
||||||
quotearg
|
|
||||||
stdbool
|
|
||||||
stdint
|
|
||||||
stpcpy
|
|
||||||
strerror
|
|
||||||
strtoul
|
|
||||||
strverscmp
|
|
||||||
unistd-safer
|
|
||||||
unlocked-io
|
|
||||||
verify
|
|
||||||
xalloc
|
|
||||||
xalloc-die
|
|
||||||
xstrndup
|
|
||||||
'
|
|
||||||
|
|
||||||
previous_gnulib_modules=
|
|
||||||
while [ "$gnulib_modules" != "$previous_gnulib_modules" ]; do
|
|
||||||
previous_gnulib_modules=$gnulib_modules
|
|
||||||
gnulib_modules=`
|
|
||||||
(echo "$gnulib_modules"
|
|
||||||
for gnulib_module in $gnulib_modules; do
|
|
||||||
$gnulib_tool --extract-dependencies $gnulib_module
|
|
||||||
done) | sort -u
|
|
||||||
`
|
|
||||||
done
|
|
||||||
|
|
||||||
gnulib_files=`
|
|
||||||
(echo m4/warning.m4
|
|
||||||
for gnulib_module in $gnulib_modules; do
|
|
||||||
$gnulib_tool --extract-filelist $gnulib_module
|
|
||||||
done) | sort -u
|
|
||||||
`
|
|
||||||
|
|
||||||
gnulib_dirs=`echo "$gnulib_files" | sed 's,/[^/]*$,,' | sort -u`
|
|
||||||
mkdir -p $gnulib_dirs || exit
|
|
||||||
|
|
||||||
for gnulib_file in $gnulib_files; do
|
|
||||||
dest=$gnulib_file
|
|
||||||
rm -f $dest &&
|
|
||||||
echo "$0: Copying file $GNULIB_SRCDIR/$gnulib_file" &&
|
|
||||||
cp -p $GNULIB_SRCDIR/$gnulib_file $dest || exit
|
|
||||||
done
|
|
||||||
|
|
||||||
# This suppresses a bogus diagnostic
|
|
||||||
# "warning: macro `AM_LANGINFO_CODESET' not found in library".
|
|
||||||
echo "$0: patching m4/gettext.m4 to remove need for intl/* ..."
|
|
||||||
sed '
|
|
||||||
/^AC_DEFUN(\[AM_INTL_SUBDIR],/,/^]/c\
|
|
||||||
AC_DEFUN([AM_INTL_SUBDIR], [])
|
|
||||||
/^AC_DEFUN(\[gt_INTL_SUBDIR_CORE],/,/^]/c\
|
|
||||||
AC_DEFUN([gt_INTL_SUBDIR_CORE], [])
|
|
||||||
' m4/gettext.m4 >m4/gettext_gl.m4 || exit
|
|
||||||
|
|
||||||
|
|
||||||
# Get translations.
|
|
||||||
|
|
||||||
get_translations() {
|
|
||||||
subdir=$1
|
|
||||||
domain=$2
|
|
||||||
|
|
||||||
echo "$0: getting translations into $subdir for $domain..."
|
|
||||||
(cd $subdir && rm -f dummy `ls | sed -n '/\.gmo$/p; /\.po/p'`) &&
|
|
||||||
|
|
||||||
$WGET_COMMAND -O "$subdir/$domain.html" "$TP_URL$domain" &&
|
|
||||||
|
|
||||||
sed -n 's|.*"http://[^"]*/translation/teams/PO/\([^/"]*\)/'"$domain"'-\([^/"]*\)\.[^."]*\.po".*|\1.\2|p' <"$subdir/$domain.html" |
|
|
||||||
sort -k 1,1 -k 2,2n -k2,2 -k3,3n -k3,3 -k4,4n -k4,4 -k5,5n -k5.5 |
|
|
||||||
awk -F. '
|
|
||||||
{ if (lang && $1 != lang) print lang, ver }
|
|
||||||
{ lang = $1; ver = substr($0, index($0, ".") + 1) }
|
|
||||||
END { if (lang) print lang, ver }
|
|
||||||
' | awk -v domain="$domain" -v subdir="$subdir" '
|
|
||||||
{
|
|
||||||
lang = $1
|
|
||||||
|
|
||||||
# Work around bugs in Bison 2.3 translations uncovered by gettext 0.15.
|
|
||||||
# This workaround can be removed once the translations are fixed.
|
|
||||||
if (lang == "id" || lang == "tr") next
|
|
||||||
|
|
||||||
ver = $2
|
|
||||||
urlfmt = ""
|
|
||||||
printf "$WGET_COMMAND -O %s/%s.po 'http://www.iro.umontreal.ca/translation/teams/PO/%s/%s-%s.%s.po' &&\n", subdir, lang, lang, domain, ver, lang
|
|
||||||
}
|
|
||||||
END { print ":" }
|
|
||||||
' | sh &&
|
|
||||||
ls "$subdir"/*.po | sed 's|.*/||; s|\.po$||' >"$subdir/LINGUAS" &&
|
|
||||||
rm "$subdir/$domain.html"
|
|
||||||
}
|
|
||||||
|
|
||||||
case $SKIP_PO in
|
|
||||||
'')
|
|
||||||
case `wget --help` in
|
|
||||||
*'--no-cache'*)
|
|
||||||
no_cache='--no-cache';;
|
|
||||||
*'--cache=on/off'*)
|
|
||||||
no_cache='--cache=off';;
|
|
||||||
*)
|
|
||||||
no_cache='';;
|
|
||||||
esac
|
|
||||||
|
|
||||||
WGET_COMMAND="wget -nv $no_cache"
|
|
||||||
export WGET_COMMAND
|
|
||||||
|
|
||||||
get_translations po $package || exit
|
|
||||||
|
|
||||||
case $package in
|
|
||||||
bison)
|
|
||||||
get_translations runtime-po $package-runtime || exit
|
|
||||||
esac;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
|
|
||||||
# Generate autoconf and automake snippets.
|
|
||||||
|
|
||||||
(echo '# This file is generated automatically by "bootstrap".' &&
|
|
||||||
echo 'AC_DEFUN([GNULIB_AUTOCONF_SNIPPET],[' &&
|
|
||||||
$gnulib_tool --extract-autoconf-snippet $gnulib_modules |
|
|
||||||
sed 's/AM_GNU_GETTEXT(\[external]/&, [need-ngettext]/' &&
|
|
||||||
echo '])'
|
|
||||||
) >m4/gnulib.m4 || exit
|
|
||||||
|
|
||||||
(echo '# This file is generated automatically by "bootstrap".' &&
|
|
||||||
$gnulib_tool --extract-automake-snippet $gnulib_modules |
|
|
||||||
sed 's/^[ ]*AM_CPPFLAGS[ ]*+=/# (commented out by bootstrap) &/'
|
|
||||||
) >lib/gnulib.mk || exit
|
|
||||||
|
|
||||||
|
|
||||||
# Reconfigure, getting other files.
|
|
||||||
|
|
||||||
echo "$0: autopoint --force ..."
|
|
||||||
autopoint --force || exit
|
|
||||||
|
|
||||||
# We don't need intl, so remove it.
|
|
||||||
intl_files_to_remove='
|
|
||||||
intl
|
|
||||||
m4/codeset.m4
|
|
||||||
m4/gettext.m4
|
|
||||||
m4/glibc2.m4
|
|
||||||
m4/glibc21.m4
|
|
||||||
m4/intdiv0.m4
|
|
||||||
m4/intmax.m4
|
|
||||||
m4/inttypes-h.m4
|
|
||||||
m4/inttypes-pri.m4
|
|
||||||
m4/lcmessage.m4
|
|
||||||
m4/lock.m4
|
|
||||||
m4/longdouble.m4
|
|
||||||
m4/printf-posix.m4
|
|
||||||
m4/signed.m4
|
|
||||||
m4/size_max.m4
|
|
||||||
m4/visibility.m4
|
|
||||||
m4/wint_t.m4
|
|
||||||
m4/xsize.m4
|
|
||||||
'
|
|
||||||
echo $0: rm -fr $intl_files_to_remove ...
|
|
||||||
rm -fr $intl_files_to_remove || exit
|
|
||||||
|
|
||||||
|
|
||||||
# Undo changes to gnulib files that autoreconf made.
|
|
||||||
for gnulib_file in $gnulib_files; do
|
|
||||||
test ! -f $gnulib_file || cmp -s $gnulib_file $GNULIB_SRCDIR/$gnulib_file || {
|
|
||||||
rm -f $gnulib_file &&
|
|
||||||
echo "$0: Copying file $GNULIB_SRCDIR/$gnulib_file again" &&
|
|
||||||
cp -p $GNULIB_SRCDIR/$gnulib_file $gnulib_file || exit
|
|
||||||
}
|
|
||||||
done
|
|
||||||
|
|
||||||
# Make sure aclocal.m4 is not older than input files.
|
|
||||||
sleep 1
|
|
||||||
|
|
||||||
for command in \
|
|
||||||
'aclocal --force -I m4' \
|
|
||||||
'autoconf --force' \
|
|
||||||
'autoheader --force' \
|
|
||||||
'automake --add-missing --copy --force-missing';
|
|
||||||
do
|
|
||||||
echo "$0: $command ..."
|
|
||||||
$command || exit
|
|
||||||
done
|
|
||||||
|
|
||||||
|
|
||||||
# Put bug-reporting address into po/Makevars.
|
|
||||||
echo "$0: Creating po/Makevars from po/Makevars.template ..."
|
|
||||||
sed '
|
|
||||||
/^MSGID_BUGS_ADDRESS *=/s/=.*/= [email protected]/
|
|
||||||
/^XGETTEXT_OPTIONS *=/{
|
|
||||||
s/$/ \\/
|
|
||||||
a\
|
|
||||||
--flag=_:1:pass-c-format \\\
|
|
||||||
--flag=N_:1:pass-c-format \\\
|
|
||||||
--flag=error:3:c-format --flag=error_at_line:5:c-format \\\
|
|
||||||
--flag=warn:1:c-format --flag=warn_at:2:c-format \\\
|
|
||||||
--flag=complain:1:c-format --flag=complain_at:2:c-format \\\
|
|
||||||
--flag=fatal:1:c-format --flag=fatal_at:2:c-format
|
|
||||||
}
|
|
||||||
' po/Makevars.template >po/Makevars
|
|
||||||
|
|
||||||
# Likewise for runtime-po/Makevars, except also change a few other parameters.
|
|
||||||
sed '
|
|
||||||
s/^\(DOMAIN\) *=.*/\1 = bison-runtime/
|
|
||||||
s/^\(subdir\) *=.*/\1 = runtime-po/
|
|
||||||
s/^\(XGETTEXT_OPTIONS\) *=.*/\1 = --keyword=YY_/
|
|
||||||
' <po/Makevars >runtime-po/Makevars
|
|
||||||
|
|
||||||
# Copy identical files from po to runtime-po.
|
|
||||||
(cd po && cp -p Makefile.in.in *-quot *.header *.sed *.sin ../runtime-po)
|
|
||||||
|
|
||||||
# if src/parse-gram.[ch] are out of date, rebuild them.
|
|
||||||
parse_gram_y=`find src/parse-gram.y \
|
|
||||||
'(' -newer src/parse-gram.c -o -newer src/parse-gram.h ')' \
|
|
||||||
-print` || exit
|
|
||||||
case $parse_gram_y in
|
|
||||||
?*)
|
|
||||||
echo "$0: warning: bootstrapping with old src/parse-gram.[ch] files."
|
|
||||||
|
|
||||||
echo "$0: touch -c src/parse-gram.[ch] ... "
|
|
||||||
touch -c src/parse-gram.[ch] || exit
|
|
||||||
|
|
||||||
echo "$0: ./configure --disable-nls ..."
|
|
||||||
./configure --disable-nls || exit
|
|
||||||
|
|
||||||
echo "$0: (cd lib && make) ..."
|
|
||||||
(cd lib && make) || exit
|
|
||||||
|
|
||||||
echo "$0: (cd src && make) ..."
|
|
||||||
(cd src && make) || exit
|
|
||||||
|
|
||||||
echo "$0: rm -f src/parse-gram.c src/parse-gram.h ..."
|
|
||||||
rm -f src/parse-gram.c src/parse-gram.h || exit
|
|
||||||
|
|
||||||
echo "$0: (cd src && make parse-gram.c parse-gram.h) ..."
|
|
||||||
(cd src && make parse-gram.c parse-gram.h) || exit
|
|
||||||
|
|
||||||
echo "$0: make distclean ..."
|
|
||||||
make distclean || exit;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
echo "$0: done. Now you can run './configure'."
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
*.t
|
|
||||||
Makefile
|
|
||||||
Makefile.in
|
|
||||||
config.guess
|
|
||||||
config.rpath
|
|
||||||
config.sub
|
|
||||||
depcomp
|
|
||||||
install-sh
|
|
||||||
mdate-sh
|
|
||||||
missing
|
|
||||||
mkinstalldirs
|
|
||||||
texinfo.tex
|
|
||||||
ylwrap
|
|
||||||
@@ -1,338 +0,0 @@
|
|||||||
#!/usr/bin/perl -w
|
|
||||||
# Generate an announcement message.
|
|
||||||
use strict;
|
|
||||||
|
|
||||||
use Getopt::Long;
|
|
||||||
use Digest::MD5;
|
|
||||||
use Digest::SHA1;
|
|
||||||
|
|
||||||
(my $VERSION = '$Revision$ ') =~ tr/[0-9].//cd;
|
|
||||||
(my $ME = $0) =~ s|.*/||;
|
|
||||||
|
|
||||||
my %valid_release_types = map {$_ => 1} qw (alpha beta major);
|
|
||||||
|
|
||||||
END
|
|
||||||
{
|
|
||||||
# Nobody ever checks the status of print()s. That's okay, because
|
|
||||||
# if any do fail, we're guaranteed to get an indicator when we close()
|
|
||||||
# the filehandle.
|
|
||||||
#
|
|
||||||
# Close stdout now, and if there were no errors, return happy status.
|
|
||||||
# If stdout has already been closed by the script, though, do nothing.
|
|
||||||
defined fileno STDOUT
|
|
||||||
or return;
|
|
||||||
close STDOUT
|
|
||||||
and return;
|
|
||||||
|
|
||||||
# Errors closing stdout. Indicate that, and hope stderr is OK.
|
|
||||||
warn "$ME: closing standard output: $!\n";
|
|
||||||
|
|
||||||
# Don't be so arrogant as to assume that we're the first END handler
|
|
||||||
# defined, and thus the last one invoked. There may be others yet
|
|
||||||
# to come. $? will be passed on to them, and to the final _exit().
|
|
||||||
#
|
|
||||||
# If it isn't already an error, make it one (and if it _is_ an error,
|
|
||||||
# preserve the value: it might be important).
|
|
||||||
$? ||= 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub usage ($)
|
|
||||||
{
|
|
||||||
my ($exit_code) = @_;
|
|
||||||
my $STREAM = ($exit_code == 0 ? *STDOUT : *STDERR);
|
|
||||||
if ($exit_code != 0)
|
|
||||||
{
|
|
||||||
print $STREAM "Try `$ME --help' for more information.\n";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
my @types = sort keys %valid_release_types;
|
|
||||||
print $STREAM <<EOF;
|
|
||||||
Usage: $ME [OPTIONS]
|
|
||||||
|
|
||||||
OPTIONS:
|
|
||||||
|
|
||||||
Generate an announcement message.
|
|
||||||
|
|
||||||
FIXME: describe the following
|
|
||||||
|
|
||||||
--release-type=TYPE TYPE must be one of @types
|
|
||||||
--package-name=PACKAGE_NAME
|
|
||||||
--previous-version=VER
|
|
||||||
--current-version=VER
|
|
||||||
--release-archive-directory=DIR
|
|
||||||
--url-directory=URL_DIR
|
|
||||||
--news=NEWS_FILE optional
|
|
||||||
|
|
||||||
--help display this help and exit
|
|
||||||
--version output version information and exit
|
|
||||||
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
exit $exit_code;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub print_changelog_deltas ($$)
|
|
||||||
{
|
|
||||||
my ($package_name, $prev_version) = @_;
|
|
||||||
|
|
||||||
# Print new ChangeLog entries.
|
|
||||||
|
|
||||||
# First find all CVS-controlled ChangeLog files.
|
|
||||||
use File::Find;
|
|
||||||
my @changelog;
|
|
||||||
find ({wanted => sub {$_ eq 'ChangeLog' && -d 'CVS'
|
|
||||||
and push @changelog, $File::Find::name}},
|
|
||||||
'.');
|
|
||||||
|
|
||||||
# If there are no ChangeLog files, we're done.
|
|
||||||
@changelog
|
|
||||||
or return;
|
|
||||||
my %changelog = map {$_ => 1} @changelog;
|
|
||||||
|
|
||||||
# Reorder the list of files so that if there are ChangeLog
|
|
||||||
# files in the specified directories, they're listed first,
|
|
||||||
# in this order:
|
|
||||||
my @dir = qw ( . src lib m4 config doc );
|
|
||||||
|
|
||||||
# A typical @changelog array might look like this:
|
|
||||||
# ./ChangeLog
|
|
||||||
# ./po/ChangeLog
|
|
||||||
# ./m4/ChangeLog
|
|
||||||
# ./lib/ChangeLog
|
|
||||||
# ./doc/ChangeLog
|
|
||||||
# ./config/ChangeLog
|
|
||||||
my @reordered;
|
|
||||||
foreach my $d (@dir)
|
|
||||||
{
|
|
||||||
my $dot_slash = $d eq '.' ? $d : "./$d";
|
|
||||||
my $target = "$dot_slash/ChangeLog";
|
|
||||||
delete $changelog{$target}
|
|
||||||
and push @reordered, $target;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Append any remaining ChangeLog files.
|
|
||||||
push @reordered, sort keys %changelog;
|
|
||||||
|
|
||||||
# Remove leading `./'.
|
|
||||||
@reordered = map { s!^\./!!; $_ } @reordered;
|
|
||||||
|
|
||||||
print "\nChangeLog entries:\n\n";
|
|
||||||
# print join ("\n", @reordered), "\n";
|
|
||||||
|
|
||||||
$prev_version =~ s/\./_/g;
|
|
||||||
my $prev_cvs_tag = "\U$package_name\E-$prev_version";
|
|
||||||
|
|
||||||
my $cmd = "cvs -n diff -u -r$prev_cvs_tag -rHEAD @reordered";
|
|
||||||
open DIFF, '-|', $cmd
|
|
||||||
or die "$ME: cannot run `$cmd': $!\n";
|
|
||||||
# Print two types of lines, making minor changes:
|
|
||||||
# Lines starting with `+++ ', e.g.,
|
|
||||||
# +++ ChangeLog 22 Feb 2003 16:52:51 -0000 1.247
|
|
||||||
# and those starting with `+'.
|
|
||||||
# Don't print the others.
|
|
||||||
my $prev_printed_line_empty = 1;
|
|
||||||
while (defined (my $line = <DIFF>))
|
|
||||||
{
|
|
||||||
if ($line =~ /^\+\+\+ /)
|
|
||||||
{
|
|
||||||
my $separator = "*"x70 ."\n";
|
|
||||||
$line =~ s///;
|
|
||||||
$line =~ s/\s.*//;
|
|
||||||
$prev_printed_line_empty
|
|
||||||
or print "\n";
|
|
||||||
print $separator, $line, $separator;
|
|
||||||
}
|
|
||||||
elsif ($line =~ /^\+/)
|
|
||||||
{
|
|
||||||
$line =~ s///;
|
|
||||||
print $line;
|
|
||||||
$prev_printed_line_empty = ($line =~ /^$/);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
close DIFF;
|
|
||||||
|
|
||||||
# The exit code should be 1.
|
|
||||||
# Allow in case there are no modified ChangeLog entries.
|
|
||||||
$? == 256 || $? == 128
|
|
||||||
or warn "$ME: warning: `cmd' had unexpected exit code or signal ($?)\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
my $release_type;
|
|
||||||
my $package_name;
|
|
||||||
my $prev_version;
|
|
||||||
my $curr_version;
|
|
||||||
my $release_archive_dir;
|
|
||||||
my @url_dir_list;
|
|
||||||
my $news_file;
|
|
||||||
|
|
||||||
GetOptions
|
|
||||||
(
|
|
||||||
'release-type=s' => \$release_type,
|
|
||||||
'package-name=s' => \$package_name,
|
|
||||||
'previous-version=s' => \$prev_version,
|
|
||||||
'current-version=s' => \$curr_version,
|
|
||||||
'release-archive-directory=s' => \$release_archive_dir,
|
|
||||||
'url-directory=s@' => \@url_dir_list,
|
|
||||||
'news=s@' => \$news_file,
|
|
||||||
|
|
||||||
help => sub { usage 0 },
|
|
||||||
version => sub { print "$ME version $VERSION\n"; exit },
|
|
||||||
) or usage 1;
|
|
||||||
|
|
||||||
my $fail = 0;
|
|
||||||
# Ensure that sure each required option is specified.
|
|
||||||
$release_type
|
|
||||||
or (warn "$ME: release type not specified\n"), $fail = 1;
|
|
||||||
$package_name
|
|
||||||
or (warn "$ME: package name not specified\n"), $fail = 1;
|
|
||||||
$prev_version
|
|
||||||
or (warn "$ME: previous version string not specified\n"), $fail = 1;
|
|
||||||
$curr_version
|
|
||||||
or (warn "$ME: current version string not specified\n"), $fail = 1;
|
|
||||||
$release_archive_dir
|
|
||||||
or (warn "$ME: release directory name not specified\n"), $fail = 1;
|
|
||||||
@url_dir_list
|
|
||||||
or (warn "$ME: URL directory name(s) not specified\n"), $fail = 1;
|
|
||||||
|
|
||||||
exists $valid_release_types{$release_type}
|
|
||||||
or (warn "$ME: `$release_type': invalid release type\n"), $fail = 1;
|
|
||||||
|
|
||||||
@ARGV
|
|
||||||
and (warn "$ME: too many arguments\n"), $fail = 1;
|
|
||||||
$fail
|
|
||||||
and usage 1;
|
|
||||||
|
|
||||||
my $my_distdir = "$package_name-$curr_version";
|
|
||||||
my $tgz = "$my_distdir.tar.gz";
|
|
||||||
my $tbz = "$my_distdir.tar.bz2";
|
|
||||||
my $xd = "$package_name-$prev_version-$curr_version.xdelta";
|
|
||||||
|
|
||||||
my %size;
|
|
||||||
|
|
||||||
foreach my $f (($tgz, $tbz, $xd))
|
|
||||||
{
|
|
||||||
my $cmd = "du --human $f";
|
|
||||||
my $t = `$cmd`;
|
|
||||||
# FIXME-someday: give a better diagnostic, a la $PROCESS_STATUS
|
|
||||||
$@
|
|
||||||
and (warn "$ME: command failed: `$cmd'\n"), $fail = 1;
|
|
||||||
chomp $t;
|
|
||||||
$t =~ s/^([\d.]+[MkK]).*/${1}B/;
|
|
||||||
$size{$f} = $t;
|
|
||||||
}
|
|
||||||
|
|
||||||
$fail
|
|
||||||
and exit 1;
|
|
||||||
|
|
||||||
# The markup is escaped as <\# so that when this script is sent by
|
|
||||||
# mail (or part of a diff), Gnus is not triggered.
|
|
||||||
print <<EOF;
|
|
||||||
|
|
||||||
Subject: $my_distdir released
|
|
||||||
|
|
||||||
<\#secure method=pgpmime mode=sign>
|
|
||||||
|
|
||||||
FIXME: put comments here
|
|
||||||
|
|
||||||
EOF
|
|
||||||
|
|
||||||
print "Here are the compressed sources:\n";
|
|
||||||
foreach my $url (@url_dir_list)
|
|
||||||
{
|
|
||||||
print " $url/$tgz ($size{$tgz})\n";
|
|
||||||
print " $url/$tbz ($size{$tbz})\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
print "\nAnd here are xdelta-style diffs:\n";
|
|
||||||
foreach my $url (@url_dir_list)
|
|
||||||
{
|
|
||||||
print " $url/$xd ($size{$xd})\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
print "\nHere are GPG detached signatures:\n";
|
|
||||||
foreach my $url (@url_dir_list)
|
|
||||||
{
|
|
||||||
print " $url/$tgz.asc\n";
|
|
||||||
print " $url/$tbz.asc\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
# FIXME: clean up upon interrupt or die
|
|
||||||
my $tmpdir = $ENV{TMPDIR} || '/tmp';
|
|
||||||
my $tmp = "$tmpdir/$ME-$$";
|
|
||||||
unlink $tmp; # ignore failure
|
|
||||||
|
|
||||||
print "\nHere are the MD5 and SHA1 signatures:\n";
|
|
||||||
print "\n";
|
|
||||||
# The markup is escaped as <\# so that when this script is sent by
|
|
||||||
# mail (or part of a diff), Gnus is not triggered.
|
|
||||||
print "<\#part type=text/plain filename=\"$tmp\" disposition=inline>\n"
|
|
||||||
. "<\#/part>\n";
|
|
||||||
|
|
||||||
open OUT, '>', $tmp
|
|
||||||
or die "$ME: $tmp: cannot open for writing: $!\n";
|
|
||||||
|
|
||||||
foreach my $meth (qw (md5 sha1))
|
|
||||||
{
|
|
||||||
foreach my $f (($tgz, $tbz, $xd))
|
|
||||||
{
|
|
||||||
open IN, '<', $f
|
|
||||||
or die "$ME: $f: cannot open for reading: $!\n";
|
|
||||||
binmode IN;
|
|
||||||
my $dig =
|
|
||||||
($meth eq 'md5'
|
|
||||||
? Digest::MD5->new->addfile(*IN)->hexdigest
|
|
||||||
: Digest::SHA1->new->addfile(*IN)->hexdigest);
|
|
||||||
close IN;
|
|
||||||
print OUT "$dig $f\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
close OUT
|
|
||||||
or die "$ME: $tmp: while writing: $!\n";
|
|
||||||
chmod 0400, $tmp; # ignore failure
|
|
||||||
|
|
||||||
if ($news_file)
|
|
||||||
{
|
|
||||||
print "\nNEWS\n\n";
|
|
||||||
|
|
||||||
# Print all lines from $news_file, starting with the first one
|
|
||||||
# that mentions $curr_version up to but not including
|
|
||||||
# the first occurrence of $prev_version.
|
|
||||||
my $in_items;
|
|
||||||
open NEWS, '<', $news_file
|
|
||||||
or die "$ME: $news_file: cannot open for reading: $!\n";
|
|
||||||
while (defined (my $line = <NEWS>))
|
|
||||||
{
|
|
||||||
if ( ! $in_items)
|
|
||||||
{
|
|
||||||
# Match lines like this one:
|
|
||||||
# * Major changes in release 5.0.1:
|
|
||||||
# but not any other line that starts with a space, *, or -.
|
|
||||||
$line =~ /^(\* Major changes.*|[^ *-].*)\Q$curr_version\E/o
|
|
||||||
or next;
|
|
||||||
$in_items = 1;
|
|
||||||
print $line;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
# Be careful that this regexp cannot match version numbers
|
|
||||||
# in NEWS items -- they might well say `introduced in 4.5.5',
|
|
||||||
# and we don't want that to match.
|
|
||||||
$line =~ /^(\* Major changes.*|[^ *-].*)\Q$prev_version\E/o
|
|
||||||
and last;
|
|
||||||
print $line;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
close NEWS;
|
|
||||||
|
|
||||||
$in_items
|
|
||||||
or die "$ME: $news_file: no matching lines for `$curr_version'\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
$release_type eq 'major'
|
|
||||||
or print_changelog_deltas ($package_name, $prev_version);
|
|
||||||
|
|
||||||
exit 0;
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
2.0
|
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
Makefile
|
||||||
|
*.t
|
||||||
@@ -1,2 +1,2 @@
|
|||||||
## Process this file with automake to produce Makefile.in -*-Makefile-*-
|
## Process this file with automake to produce Makefile.in -*-Makefile-*-
|
||||||
EXTRA_DIST = prev-version.txt
|
EXTRA_DIST = move-if-change prev-version.txt
|
||||||
@@ -0,0 +1,222 @@
|
|||||||
|
# Makefile.in generated automatically by automake 1.5a from Makefile.am.
|
||||||
|
|
||||||
|
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
|
||||||
|
# Free Software Foundation, Inc.
|
||||||
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||||
|
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
|
# PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
@SET_MAKE@
|
||||||
|
|
||||||
|
SHELL = @SHELL@
|
||||||
|
|
||||||
|
srcdir = @srcdir@
|
||||||
|
top_srcdir = @top_srcdir@
|
||||||
|
VPATH = @srcdir@
|
||||||
|
prefix = @prefix@
|
||||||
|
exec_prefix = @exec_prefix@
|
||||||
|
|
||||||
|
bindir = @bindir@
|
||||||
|
sbindir = @sbindir@
|
||||||
|
libexecdir = @libexecdir@
|
||||||
|
datadir = @datadir@
|
||||||
|
sysconfdir = @sysconfdir@
|
||||||
|
sharedstatedir = @sharedstatedir@
|
||||||
|
localstatedir = @localstatedir@
|
||||||
|
libdir = @libdir@
|
||||||
|
infodir = @infodir@
|
||||||
|
mandir = @mandir@
|
||||||
|
includedir = @includedir@
|
||||||
|
oldincludedir = /usr/include
|
||||||
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
|
top_builddir = ..
|
||||||
|
|
||||||
|
ACLOCAL = @ACLOCAL@
|
||||||
|
AUTOCONF = @AUTOCONF@
|
||||||
|
AUTOMAKE = @AUTOMAKE@
|
||||||
|
AUTOHEADER = @AUTOHEADER@
|
||||||
|
|
||||||
|
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||||
|
INSTALL = @INSTALL@
|
||||||
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||||
|
INSTALL_HEADER = $(INSTALL_DATA)
|
||||||
|
transform = @program_transform_name@
|
||||||
|
NORMAL_INSTALL = :
|
||||||
|
PRE_INSTALL = :
|
||||||
|
POST_INSTALL = :
|
||||||
|
NORMAL_UNINSTALL = :
|
||||||
|
PRE_UNINSTALL = :
|
||||||
|
POST_UNINSTALL = :
|
||||||
|
host_alias = @host_alias@
|
||||||
|
host_triplet = @host@
|
||||||
|
|
||||||
|
EXEEXT = @EXEEXT@
|
||||||
|
OBJEXT = @OBJEXT@
|
||||||
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
|
AMTAR = @AMTAR@
|
||||||
|
AUTOM4TE = @AUTOM4TE@
|
||||||
|
AWK = @AWK@
|
||||||
|
BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
|
||||||
|
CATALOGS = @CATALOGS@
|
||||||
|
CATOBJEXT = @CATOBJEXT@
|
||||||
|
CC = @CC@
|
||||||
|
CPP = @CPP@
|
||||||
|
DATADIRNAME = @DATADIRNAME@
|
||||||
|
DEPDIR = @DEPDIR@
|
||||||
|
GCC = @GCC@
|
||||||
|
GENCAT = @GENCAT@
|
||||||
|
GLIBC21 = @GLIBC21@
|
||||||
|
GMOFILES = @GMOFILES@
|
||||||
|
GMSGFMT = @GMSGFMT@
|
||||||
|
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||||
|
INSTOBJEXT = @INSTOBJEXT@
|
||||||
|
INTLBISON = @INTLBISON@
|
||||||
|
INTLLIBS = @INTLLIBS@
|
||||||
|
INTLOBJS = @INTLOBJS@
|
||||||
|
INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@
|
||||||
|
LIBICONV = @LIBICONV@
|
||||||
|
LIBOBJS = @LIBOBJS@
|
||||||
|
MKINSTALLDIRS = @MKINSTALLDIRS@
|
||||||
|
MSGFMT = @MSGFMT@
|
||||||
|
PACKAGE = @PACKAGE@
|
||||||
|
POFILES = @POFILES@
|
||||||
|
POSUB = @POSUB@
|
||||||
|
RANLIB = @RANLIB@
|
||||||
|
U = @U@
|
||||||
|
USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
|
||||||
|
USE_NLS = @USE_NLS@
|
||||||
|
VERSION = @VERSION@
|
||||||
|
WARNING_CFLAGS = @WARNING_CFLAGS@
|
||||||
|
am__include = @am__include@
|
||||||
|
am__quote = @am__quote@
|
||||||
|
install_sh = @install_sh@
|
||||||
|
|
||||||
|
EXTRA_DIST = move-if-change prev-version.txt
|
||||||
|
subdir = config
|
||||||
|
mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
|
||||||
|
CONFIG_HEADER = $(top_builddir)/config.h
|
||||||
|
CONFIG_CLEAN_FILES =
|
||||||
|
DIST_SOURCES =
|
||||||
|
DIST_COMMON = Makefile.am Makefile.in config.guess config.sub depcomp \
|
||||||
|
install-sh mdate-sh missing mkinstalldirs texinfo.tex
|
||||||
|
all: all-am
|
||||||
|
|
||||||
|
.SUFFIXES:
|
||||||
|
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||||
|
cd $(top_srcdir) && \
|
||||||
|
$(AUTOMAKE) --gnu config/Makefile
|
||||||
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||||
|
cd $(top_builddir) && \
|
||||||
|
CONFIG_HEADERS= CONFIG_LINKS= \
|
||||||
|
CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status
|
||||||
|
uninstall-info-am:
|
||||||
|
tags: TAGS
|
||||||
|
TAGS:
|
||||||
|
|
||||||
|
|
||||||
|
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
|
|
||||||
|
top_distdir = ..
|
||||||
|
distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
|
||||||
|
|
||||||
|
distdir: $(DISTFILES)
|
||||||
|
@for file in $(DISTFILES); do \
|
||||||
|
if test -f $$file; then d=.; else d=$(srcdir); fi; \
|
||||||
|
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||||
|
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||||
|
$(mkinstalldirs) "$(distdir)/$$dir"; \
|
||||||
|
fi; \
|
||||||
|
if test -d $$d/$$file; then \
|
||||||
|
cp -pR $$d/$$file $(distdir) \
|
||||||
|
|| exit 1; \
|
||||||
|
else \
|
||||||
|
test -f $(distdir)/$$file \
|
||||||
|
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||||
|
|| exit 1; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
check-am: all-am
|
||||||
|
check: check-am
|
||||||
|
all-am: Makefile
|
||||||
|
|
||||||
|
installdirs:
|
||||||
|
|
||||||
|
install: install-am
|
||||||
|
install-exec: install-exec-am
|
||||||
|
install-data: install-data-am
|
||||||
|
uninstall: uninstall-am
|
||||||
|
|
||||||
|
install-am: all-am
|
||||||
|
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||||
|
|
||||||
|
installcheck: installcheck-am
|
||||||
|
install-strip:
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
|
`test -z '$(STRIP)' || \
|
||||||
|
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||||
|
mostlyclean-generic:
|
||||||
|
|
||||||
|
clean-generic:
|
||||||
|
|
||||||
|
distclean-generic:
|
||||||
|
-rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]*
|
||||||
|
|
||||||
|
maintainer-clean-generic:
|
||||||
|
@echo "This command is intended for maintainers to use"
|
||||||
|
@echo "it deletes files that may require special tools to rebuild."
|
||||||
|
clean: clean-am
|
||||||
|
|
||||||
|
clean-am: clean-generic mostlyclean-am
|
||||||
|
|
||||||
|
distclean: distclean-am
|
||||||
|
|
||||||
|
distclean-am: clean-am distclean-generic
|
||||||
|
|
||||||
|
dvi: dvi-am
|
||||||
|
|
||||||
|
dvi-am:
|
||||||
|
|
||||||
|
info: info-am
|
||||||
|
|
||||||
|
info-am:
|
||||||
|
|
||||||
|
install-data-am:
|
||||||
|
|
||||||
|
install-exec-am:
|
||||||
|
|
||||||
|
install-info: install-info-am
|
||||||
|
|
||||||
|
install-man:
|
||||||
|
|
||||||
|
installcheck-am:
|
||||||
|
|
||||||
|
maintainer-clean: maintainer-clean-am
|
||||||
|
|
||||||
|
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||||
|
|
||||||
|
mostlyclean: mostlyclean-am
|
||||||
|
|
||||||
|
mostlyclean-am: mostlyclean-generic
|
||||||
|
|
||||||
|
uninstall-am: uninstall-info-am
|
||||||
|
|
||||||
|
.PHONY: all all-am check check-am clean clean-generic distclean \
|
||||||
|
distclean-generic distdir dvi dvi-am info info-am install \
|
||||||
|
install-am install-data install-data-am install-exec \
|
||||||
|
install-exec-am install-info install-info-am install-man \
|
||||||
|
install-strip installcheck installcheck-am installdirs \
|
||||||
|
maintainer-clean maintainer-clean-generic mostlyclean \
|
||||||
|
mostlyclean-generic uninstall uninstall-am uninstall-info-am
|
||||||
|
|
||||||
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
|
.NOEXPORT:
|
||||||
+1308
File diff suppressed because it is too large
Load Diff
+1413
File diff suppressed because it is too large
Load Diff
Executable
+411
@@ -0,0 +1,411 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
# depcomp - compile a program generating dependencies as side-effects
|
||||||
|
# Copyright 1999, 2000 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
# 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, or (at your option)
|
||||||
|
# any later version.
|
||||||
|
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||||
|
# 02111-1307, USA.
|
||||||
|
|
||||||
|
# As a special exception to the GNU General Public License, if you
|
||||||
|
# distribute this file as part of a program that contains a
|
||||||
|
# configuration script generated by Autoconf, you may include it under
|
||||||
|
# the same distribution terms that you use for the rest of that program.
|
||||||
|
|
||||||
|
# Originally written by Alexandre Oliva <[email protected]>.
|
||||||
|
|
||||||
|
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
|
||||||
|
echo "depcomp: Variables source, object and depmode must be set" 1>&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# `libtool' can also be set to `yes' or `no'.
|
||||||
|
|
||||||
|
depfile=${depfile-`echo "$object" | sed 's,\([^/]*\)$,.deps/\1,;s/\.\([^.]*\)$/.P\1/'`}
|
||||||
|
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
|
||||||
|
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
|
||||||
|
# Some modes work just like other modes, but use different flags. We
|
||||||
|
# parameterize here, but still list the modes in the big case below,
|
||||||
|
# to make depend.m4 easier to write. Note that we *cannot* use a case
|
||||||
|
# here, because this file can only contain one case statement.
|
||||||
|
if test "$depmode" = hp; then
|
||||||
|
# HP compiler uses -M and no extra arg.
|
||||||
|
gccflag=-M
|
||||||
|
depmode=gcc
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$depmode" = dashXmstdout; then
|
||||||
|
# This is just like dashmstdout with a different argument.
|
||||||
|
dashmflag=-xM
|
||||||
|
depmode=dashmstdout
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$depmode" in
|
||||||
|
gcc3)
|
||||||
|
## gcc 3 implements dependency tracking that does exactly what
|
||||||
|
## we want. Yay! Note: for some reason libtool 1.4 doesn't like
|
||||||
|
## it if -MD -MP comes after the -MF stuff. Hmm.
|
||||||
|
"$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
|
||||||
|
stat=$?
|
||||||
|
if test $stat -eq 0; then :
|
||||||
|
else
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
mv "$tmpdepfile" "$depfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
gcc)
|
||||||
|
## There are various ways to get dependency output from gcc. Here's
|
||||||
|
## why we pick this rather obscure method:
|
||||||
|
## - Don't want to use -MD because we'd like the dependencies to end
|
||||||
|
## up in a subdir. Having to rename by hand is ugly.
|
||||||
|
## (We might end up doing this anyway to support other compilers.)
|
||||||
|
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
|
||||||
|
## -MM, not -M (despite what the docs say).
|
||||||
|
## - Using -M directly means running the compiler twice (even worse
|
||||||
|
## than renaming).
|
||||||
|
if test -z "$gccflag"; then
|
||||||
|
gccflag=-MD,
|
||||||
|
fi
|
||||||
|
"$@" -Wp,"$gccflag$tmpdepfile"
|
||||||
|
stat=$?
|
||||||
|
if test $stat -eq 0; then :
|
||||||
|
else
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
rm -f "$depfile"
|
||||||
|
echo "$object : \\" > "$depfile"
|
||||||
|
alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
|
||||||
|
## The second -e expression handles DOS-style file names with drive letters.
|
||||||
|
sed -e 's/^[^:]*: / /' \
|
||||||
|
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
|
||||||
|
## This next piece of magic avoids the `deleted header file' problem.
|
||||||
|
## The problem is that when a header file which appears in a .P file
|
||||||
|
## is deleted, the dependency causes make to die (because there is
|
||||||
|
## typically no way to rebuild the header). We avoid this by adding
|
||||||
|
## dummy dependencies for each header file. Too bad gcc doesn't do
|
||||||
|
## this for us directly.
|
||||||
|
tr ' ' '
|
||||||
|
' < "$tmpdepfile" |
|
||||||
|
## Some versions of gcc put a space before the `:'. On the theory
|
||||||
|
## that the space means something, we add a space to the output as
|
||||||
|
## well.
|
||||||
|
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||||
|
## correctly. Breaking it into two sed invocations is a workaround.
|
||||||
|
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
hp)
|
||||||
|
# This case exists only to let depend.m4 do its work. It works by
|
||||||
|
# looking at the text of this script. This case will never be run,
|
||||||
|
# since it is checked for above.
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
sgi)
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
"$@" "-Wp,-MDupdate,$tmpdepfile"
|
||||||
|
else
|
||||||
|
"$@" -MDupdate "$tmpdepfile"
|
||||||
|
fi
|
||||||
|
stat=$?
|
||||||
|
if test $stat -eq 0; then :
|
||||||
|
else
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
rm -f "$depfile"
|
||||||
|
|
||||||
|
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
|
||||||
|
echo "$object : \\" > "$depfile"
|
||||||
|
|
||||||
|
# Clip off the initial element (the dependent). Don't try to be
|
||||||
|
# clever and replace this with sed code, as IRIX sed won't handle
|
||||||
|
# lines with more than a fixed number of characters (4096 in
|
||||||
|
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
|
||||||
|
# the IRIX cc adds comments like `#:fec' to the end of the
|
||||||
|
# dependency line.
|
||||||
|
tr ' ' '
|
||||||
|
' < "$tmpdepfile" \
|
||||||
|
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
|
||||||
|
tr '
|
||||||
|
' ' ' >> $depfile
|
||||||
|
echo >> $depfile
|
||||||
|
|
||||||
|
# The second pass generates a dummy entry for each header file.
|
||||||
|
tr ' ' '
|
||||||
|
' < "$tmpdepfile" \
|
||||||
|
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
|
||||||
|
>> $depfile
|
||||||
|
else
|
||||||
|
# The sourcefile does not contain any dependencies, so just
|
||||||
|
# store a dummy comment line, to avoid errors with the Makefile
|
||||||
|
# "include basename.Plo" scheme.
|
||||||
|
echo "#dummy" > "$depfile"
|
||||||
|
fi
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
aix)
|
||||||
|
# The C for AIX Compiler uses -M and outputs the dependencies
|
||||||
|
# in a .u file. This file always lives in the current directory.
|
||||||
|
# Also, the AIX compiler puts `$object:' at the start of each line;
|
||||||
|
# $object doesn't have directory information.
|
||||||
|
stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'`
|
||||||
|
tmpdepfile="$stripped.u"
|
||||||
|
outname="$stripped.o"
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
"$@" -Wc,-M
|
||||||
|
else
|
||||||
|
"$@" -M
|
||||||
|
fi
|
||||||
|
|
||||||
|
stat=$?
|
||||||
|
if test $stat -eq 0; then :
|
||||||
|
else
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -f "$tmpdepfile"; then
|
||||||
|
# Each line is of the form `foo.o: dependent.h'.
|
||||||
|
# Do two passes, one to just change these to
|
||||||
|
# `$object: dependent.h' and one to simply `dependent.h:'.
|
||||||
|
sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
|
||||||
|
sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
|
||||||
|
else
|
||||||
|
# The sourcefile does not contain any dependencies, so just
|
||||||
|
# store a dummy comment line, to avoid errors with the Makefile
|
||||||
|
# "include basename.Plo" scheme.
|
||||||
|
echo "#dummy" > "$depfile"
|
||||||
|
fi
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
tru64)
|
||||||
|
# The Tru64 AIX compiler uses -MD to generate dependencies as a side
|
||||||
|
# effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
|
||||||
|
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
|
||||||
|
# dependencies in `foo.d' instead, so we check for that too.
|
||||||
|
# Subdirectories are respected.
|
||||||
|
|
||||||
|
tmpdepfile1="$object.d"
|
||||||
|
tmpdepfile2=`echo "$object" | sed -e 's/.o$/.d/'`
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
"$@" -Wc,-MD
|
||||||
|
else
|
||||||
|
"$@" -MD
|
||||||
|
fi
|
||||||
|
|
||||||
|
stat=$?
|
||||||
|
if test $stat -eq 0; then :
|
||||||
|
else
|
||||||
|
rm -f "$tmpdepfile1" "$tmpdepfile2"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -f "$tmpdepfile1"; then
|
||||||
|
tmpdepfile="$tmpdepfile1"
|
||||||
|
else
|
||||||
|
tmpdepfile="$tmpdepfile2"
|
||||||
|
fi
|
||||||
|
if test -f "$tmpdepfile"; then
|
||||||
|
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
|
||||||
|
# That's a space and a tab in the [].
|
||||||
|
sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
|
||||||
|
else
|
||||||
|
echo "#dummy" > "$depfile"
|
||||||
|
fi
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
#nosideeffect)
|
||||||
|
# This comment above is used by automake to tell side-effect
|
||||||
|
# dependency tracking mechanisms from slower ones.
|
||||||
|
|
||||||
|
dashmstdout)
|
||||||
|
# Important note: in order to support this mode, a compiler *must*
|
||||||
|
# always write the proprocessed file to stdout, regardless of -o,
|
||||||
|
# because we must use -o when running libtool.
|
||||||
|
test -z "$dashmflag" && dashmflag=-M
|
||||||
|
( IFS=" "
|
||||||
|
case " $* " in
|
||||||
|
*" --mode=compile "*) # this is libtool, let us make it quiet
|
||||||
|
for arg
|
||||||
|
do # cycle over the arguments
|
||||||
|
case "$arg" in
|
||||||
|
"--mode=compile")
|
||||||
|
# insert --quiet before "--mode=compile"
|
||||||
|
set fnord "$@" --quiet
|
||||||
|
shift # fnord
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
set fnord "$@" "$arg"
|
||||||
|
shift # fnord
|
||||||
|
shift # "$arg"
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
"$@" $dashmflag | sed 's:^[^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
|
||||||
|
) &
|
||||||
|
proc=$!
|
||||||
|
"$@"
|
||||||
|
stat=$?
|
||||||
|
wait "$proc"
|
||||||
|
if test "$stat" != 0; then exit $stat; fi
|
||||||
|
rm -f "$depfile"
|
||||||
|
cat < "$tmpdepfile" > "$depfile"
|
||||||
|
tr ' ' '
|
||||||
|
' < "$tmpdepfile" | \
|
||||||
|
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||||
|
## correctly. Breaking it into two sed invocations is a workaround.
|
||||||
|
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
dashXmstdout)
|
||||||
|
# This case only exists to satisfy depend.m4. It is never actually
|
||||||
|
# run, as this mode is specially recognized in the preamble.
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
makedepend)
|
||||||
|
# X makedepend
|
||||||
|
(
|
||||||
|
shift
|
||||||
|
cleared=no
|
||||||
|
for arg in "$@"; do
|
||||||
|
case $cleared in no)
|
||||||
|
set ""; shift
|
||||||
|
cleared=yes
|
||||||
|
esac
|
||||||
|
case "$arg" in
|
||||||
|
-D*|-I*)
|
||||||
|
set fnord "$@" "$arg"; shift;;
|
||||||
|
-*)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
set fnord "$@" "$arg"; shift;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
obj_suffix="`echo $object | sed 's/^.*\././'`"
|
||||||
|
touch "$tmpdepfile"
|
||||||
|
${MAKEDEPEND-makedepend} 2>/dev/null -o"$obj_suffix" -f"$tmpdepfile" "$@"
|
||||||
|
) &
|
||||||
|
proc=$!
|
||||||
|
"$@"
|
||||||
|
stat=$?
|
||||||
|
wait "$proc"
|
||||||
|
if test "$stat" != 0; then exit $stat; fi
|
||||||
|
rm -f "$depfile"
|
||||||
|
cat < "$tmpdepfile" > "$depfile"
|
||||||
|
tail +3 "$tmpdepfile" | tr ' ' '
|
||||||
|
' | \
|
||||||
|
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||||
|
## correctly. Breaking it into two sed invocations is a workaround.
|
||||||
|
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile" "$tmpdepfile".bak
|
||||||
|
;;
|
||||||
|
|
||||||
|
cpp)
|
||||||
|
# Important note: in order to support this mode, a compiler *must*
|
||||||
|
# always write the proprocessed file to stdout, regardless of -o,
|
||||||
|
# because we must use -o when running libtool.
|
||||||
|
( IFS=" "
|
||||||
|
case " $* " in
|
||||||
|
*" --mode=compile "*)
|
||||||
|
for arg
|
||||||
|
do # cycle over the arguments
|
||||||
|
case $arg in
|
||||||
|
"--mode=compile")
|
||||||
|
# insert --quiet before "--mode=compile"
|
||||||
|
set fnord "$@" --quiet
|
||||||
|
shift # fnord
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
set fnord "$@" "$arg"
|
||||||
|
shift # fnord
|
||||||
|
shift # "$arg"
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
"$@" -E |
|
||||||
|
sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
|
||||||
|
sed '$ s: \\$::' > "$tmpdepfile"
|
||||||
|
) &
|
||||||
|
proc=$!
|
||||||
|
"$@"
|
||||||
|
stat=$?
|
||||||
|
wait "$proc"
|
||||||
|
if test "$stat" != 0; then exit $stat; fi
|
||||||
|
rm -f "$depfile"
|
||||||
|
echo "$object : \\" > "$depfile"
|
||||||
|
cat < "$tmpdepfile" >> "$depfile"
|
||||||
|
sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
msvisualcpp)
|
||||||
|
# Important note: in order to support this mode, a compiler *must*
|
||||||
|
# always write the proprocessed file to stdout, regardless of -o,
|
||||||
|
# because we must use -o when running libtool.
|
||||||
|
( IFS=" "
|
||||||
|
case " $* " in
|
||||||
|
*" --mode=compile "*)
|
||||||
|
for arg
|
||||||
|
do # cycle over the arguments
|
||||||
|
case $arg in
|
||||||
|
"--mode=compile")
|
||||||
|
# insert --quiet before "--mode=compile"
|
||||||
|
set fnord "$@" --quiet
|
||||||
|
shift # fnord
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
set fnord "$@" "$arg"
|
||||||
|
shift # fnord
|
||||||
|
shift # "$arg"
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
"$@" -E |
|
||||||
|
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
|
||||||
|
) &
|
||||||
|
proc=$!
|
||||||
|
"$@"
|
||||||
|
stat=$?
|
||||||
|
wait "$proc"
|
||||||
|
if test "$stat" != 0; then exit $stat; fi
|
||||||
|
rm -f "$depfile"
|
||||||
|
echo "$object : \\" > "$depfile"
|
||||||
|
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
|
||||||
|
echo " " >> "$depfile"
|
||||||
|
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
none)
|
||||||
|
exec "$@"
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo "Unknown depmode $depmode" 1>&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
exit 0
|
||||||
Executable
+251
@@ -0,0 +1,251 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# install - install a program, script, or datafile
|
||||||
|
# This comes from X11R5 (mit/util/scripts/install.sh).
|
||||||
|
#
|
||||||
|
# Copyright 1991 by the Massachusetts Institute of Technology
|
||||||
|
#
|
||||||
|
# Permission to use, copy, modify, distribute, and sell this software and its
|
||||||
|
# documentation for any purpose is hereby granted without fee, provided that
|
||||||
|
# the above copyright notice appear in all copies and that both that
|
||||||
|
# copyright notice and this permission notice appear in supporting
|
||||||
|
# documentation, and that the name of M.I.T. not be used in advertising or
|
||||||
|
# publicity pertaining to distribution of the software without specific,
|
||||||
|
# written prior permission. M.I.T. makes no representations about the
|
||||||
|
# suitability of this software for any purpose. It is provided "as is"
|
||||||
|
# without express or implied warranty.
|
||||||
|
#
|
||||||
|
# Calling this script install-sh is preferred over install.sh, to prevent
|
||||||
|
# `make' implicit rules from creating a file called install from it
|
||||||
|
# when there is no Makefile.
|
||||||
|
#
|
||||||
|
# This script is compatible with the BSD install script, but was written
|
||||||
|
# from scratch. It can only install one file at a time, a restriction
|
||||||
|
# shared with many OS's install programs.
|
||||||
|
|
||||||
|
|
||||||
|
# set DOITPROG to echo to test this script
|
||||||
|
|
||||||
|
# Don't use :- since 4.3BSD and earlier shells don't like it.
|
||||||
|
doit="${DOITPROG-}"
|
||||||
|
|
||||||
|
|
||||||
|
# put in absolute paths if you don't have them in your path; or use env. vars.
|
||||||
|
|
||||||
|
mvprog="${MVPROG-mv}"
|
||||||
|
cpprog="${CPPROG-cp}"
|
||||||
|
chmodprog="${CHMODPROG-chmod}"
|
||||||
|
chownprog="${CHOWNPROG-chown}"
|
||||||
|
chgrpprog="${CHGRPPROG-chgrp}"
|
||||||
|
stripprog="${STRIPPROG-strip}"
|
||||||
|
rmprog="${RMPROG-rm}"
|
||||||
|
mkdirprog="${MKDIRPROG-mkdir}"
|
||||||
|
|
||||||
|
transformbasename=""
|
||||||
|
transform_arg=""
|
||||||
|
instcmd="$mvprog"
|
||||||
|
chmodcmd="$chmodprog 0755"
|
||||||
|
chowncmd=""
|
||||||
|
chgrpcmd=""
|
||||||
|
stripcmd=""
|
||||||
|
rmcmd="$rmprog -f"
|
||||||
|
mvcmd="$mvprog"
|
||||||
|
src=""
|
||||||
|
dst=""
|
||||||
|
dir_arg=""
|
||||||
|
|
||||||
|
while [ x"$1" != x ]; do
|
||||||
|
case $1 in
|
||||||
|
-c) instcmd="$cpprog"
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-d) dir_arg=true
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-m) chmodcmd="$chmodprog $2"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-o) chowncmd="$chownprog $2"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-g) chgrpcmd="$chgrpprog $2"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-s) stripcmd="$stripprog"
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-t=*) transformarg=`echo $1 | sed 's/-t=//'`
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
*) if [ x"$src" = x ]
|
||||||
|
then
|
||||||
|
src=$1
|
||||||
|
else
|
||||||
|
# this colon is to work around a 386BSD /bin/sh bug
|
||||||
|
:
|
||||||
|
dst=$1
|
||||||
|
fi
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ x"$src" = x ]
|
||||||
|
then
|
||||||
|
echo "install: no input file specified"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
true
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ x"$dir_arg" != x ]; then
|
||||||
|
dst=$src
|
||||||
|
src=""
|
||||||
|
|
||||||
|
if [ -d $dst ]; then
|
||||||
|
instcmd=:
|
||||||
|
chmodcmd=""
|
||||||
|
else
|
||||||
|
instcmd=mkdir
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
|
||||||
|
# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
|
||||||
|
# might cause directories to be created, which would be especially bad
|
||||||
|
# if $src (and thus $dsttmp) contains '*'.
|
||||||
|
|
||||||
|
if [ -f $src -o -d $src ]
|
||||||
|
then
|
||||||
|
true
|
||||||
|
else
|
||||||
|
echo "install: $src does not exist"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ x"$dst" = x ]
|
||||||
|
then
|
||||||
|
echo "install: no destination specified"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
true
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If destination is a directory, append the input filename; if your system
|
||||||
|
# does not like double slashes in filenames, you may need to add some logic
|
||||||
|
|
||||||
|
if [ -d $dst ]
|
||||||
|
then
|
||||||
|
dst="$dst"/`basename $src`
|
||||||
|
else
|
||||||
|
true
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
## this sed command emulates the dirname command
|
||||||
|
dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
|
||||||
|
|
||||||
|
# Make sure that the destination directory exists.
|
||||||
|
# this part is taken from Noah Friedman's mkinstalldirs script
|
||||||
|
|
||||||
|
# Skip lots of stat calls in the usual case.
|
||||||
|
if [ ! -d "$dstdir" ]; then
|
||||||
|
defaultIFS='
|
||||||
|
'
|
||||||
|
IFS="${IFS-${defaultIFS}}"
|
||||||
|
|
||||||
|
oIFS="${IFS}"
|
||||||
|
# Some sh's can't handle IFS=/ for some reason.
|
||||||
|
IFS='%'
|
||||||
|
set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
|
||||||
|
IFS="${oIFS}"
|
||||||
|
|
||||||
|
pathcomp=''
|
||||||
|
|
||||||
|
while [ $# -ne 0 ] ; do
|
||||||
|
pathcomp="${pathcomp}${1}"
|
||||||
|
shift
|
||||||
|
|
||||||
|
if [ ! -d "${pathcomp}" ] ;
|
||||||
|
then
|
||||||
|
$mkdirprog "${pathcomp}"
|
||||||
|
else
|
||||||
|
true
|
||||||
|
fi
|
||||||
|
|
||||||
|
pathcomp="${pathcomp}/"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ x"$dir_arg" != x ]
|
||||||
|
then
|
||||||
|
$doit $instcmd $dst &&
|
||||||
|
|
||||||
|
if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
|
||||||
|
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
|
||||||
|
if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
|
||||||
|
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
|
||||||
|
else
|
||||||
|
|
||||||
|
# If we're going to rename the final executable, determine the name now.
|
||||||
|
|
||||||
|
if [ x"$transformarg" = x ]
|
||||||
|
then
|
||||||
|
dstfile=`basename $dst`
|
||||||
|
else
|
||||||
|
dstfile=`basename $dst $transformbasename |
|
||||||
|
sed $transformarg`$transformbasename
|
||||||
|
fi
|
||||||
|
|
||||||
|
# don't allow the sed command to completely eliminate the filename
|
||||||
|
|
||||||
|
if [ x"$dstfile" = x ]
|
||||||
|
then
|
||||||
|
dstfile=`basename $dst`
|
||||||
|
else
|
||||||
|
true
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Make a temp file name in the proper directory.
|
||||||
|
|
||||||
|
dsttmp=$dstdir/#inst.$$#
|
||||||
|
|
||||||
|
# Move or copy the file name to the temp name
|
||||||
|
|
||||||
|
$doit $instcmd $src $dsttmp &&
|
||||||
|
|
||||||
|
trap "rm -f ${dsttmp}" 0 &&
|
||||||
|
|
||||||
|
# and set any options; do chmod last to preserve setuid bits
|
||||||
|
|
||||||
|
# If any of these fail, we abort the whole thing. If we want to
|
||||||
|
# ignore errors from any of these, just make sure not to ignore
|
||||||
|
# errors from the above "$doit $instcmd $src $dsttmp" command.
|
||||||
|
|
||||||
|
if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
|
||||||
|
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
|
||||||
|
if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
|
||||||
|
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
|
||||||
|
|
||||||
|
# Now rename the file to the real destination.
|
||||||
|
|
||||||
|
$doit $rmcmd -f $dstdir/$dstfile &&
|
||||||
|
$doit $mvcmd $dsttmp $dstdir/$dstfile
|
||||||
|
|
||||||
|
fi &&
|
||||||
|
|
||||||
|
|
||||||
|
exit 0
|
||||||
Executable
+97
@@ -0,0 +1,97 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# Get modification time of a file or directory and pretty-print it.
|
||||||
|
# Copyright 1995, 1996, 1997 Free Software Foundation, Inc.
|
||||||
|
# written by Ulrich Drepper <[email protected]>, June 1995
|
||||||
|
#
|
||||||
|
# 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, or (at your option)
|
||||||
|
# any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the Free Software Foundation,
|
||||||
|
# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
|
# As a special exception to the GNU General Public License, if you
|
||||||
|
# distribute this file as part of a program that contains a
|
||||||
|
# configuration script generated by Autoconf, you may include it under
|
||||||
|
# the same distribution terms that you use for the rest of that program.
|
||||||
|
|
||||||
|
# Prevent date giving response in another language.
|
||||||
|
LANG=C
|
||||||
|
export LANG
|
||||||
|
LC_ALL=C
|
||||||
|
export LC_ALL
|
||||||
|
LC_TIME=C
|
||||||
|
export LC_TIME
|
||||||
|
|
||||||
|
# Get the extended ls output of the file or directory.
|
||||||
|
# On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below.
|
||||||
|
if ls -L /dev/null 1>/dev/null 2>&1; then
|
||||||
|
set - x`ls -L -l -d $1`
|
||||||
|
else
|
||||||
|
set - x`ls -l -d $1`
|
||||||
|
fi
|
||||||
|
# The month is at least the fourth argument
|
||||||
|
# (3 shifts here, the next inside the loop).
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
|
||||||
|
# Find the month. Next argument is day, followed by the year or time.
|
||||||
|
month=
|
||||||
|
until test $month
|
||||||
|
do
|
||||||
|
shift
|
||||||
|
case $1 in
|
||||||
|
Jan) month=January; nummonth=1;;
|
||||||
|
Feb) month=February; nummonth=2;;
|
||||||
|
Mar) month=March; nummonth=3;;
|
||||||
|
Apr) month=April; nummonth=4;;
|
||||||
|
May) month=May; nummonth=5;;
|
||||||
|
Jun) month=June; nummonth=6;;
|
||||||
|
Jul) month=July; nummonth=7;;
|
||||||
|
Aug) month=August; nummonth=8;;
|
||||||
|
Sep) month=September; nummonth=9;;
|
||||||
|
Oct) month=October; nummonth=10;;
|
||||||
|
Nov) month=November; nummonth=11;;
|
||||||
|
Dec) month=December; nummonth=12;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
day=$2
|
||||||
|
|
||||||
|
# Here we have to deal with the problem that the ls output gives either
|
||||||
|
# the time of day or the year.
|
||||||
|
case $3 in
|
||||||
|
*:*) set `date`; eval year=\$$#
|
||||||
|
case $2 in
|
||||||
|
Jan) nummonthtod=1;;
|
||||||
|
Feb) nummonthtod=2;;
|
||||||
|
Mar) nummonthtod=3;;
|
||||||
|
Apr) nummonthtod=4;;
|
||||||
|
May) nummonthtod=5;;
|
||||||
|
Jun) nummonthtod=6;;
|
||||||
|
Jul) nummonthtod=7;;
|
||||||
|
Aug) nummonthtod=8;;
|
||||||
|
Sep) nummonthtod=9;;
|
||||||
|
Oct) nummonthtod=10;;
|
||||||
|
Nov) nummonthtod=11;;
|
||||||
|
Dec) nummonthtod=12;;
|
||||||
|
esac
|
||||||
|
# For the first six month of the year the time notation can also
|
||||||
|
# be used for files modified in the last year.
|
||||||
|
if (expr $nummonth \> $nummonthtod) > /dev/null;
|
||||||
|
then
|
||||||
|
year=`expr $year - 1`
|
||||||
|
fi;;
|
||||||
|
*) year=$3;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# The result.
|
||||||
|
echo $day $month $year
|
||||||
Executable
+336
@@ -0,0 +1,336 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
# Common stub for a few missing GNU programs while installing.
|
||||||
|
# Copyright 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
|
||||||
|
# Originally by Fran,cois Pinard <[email protected]>, 1996.
|
||||||
|
|
||||||
|
# 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, or (at your option)
|
||||||
|
# any later version.
|
||||||
|
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||||
|
# 02111-1307, USA.
|
||||||
|
|
||||||
|
# As a special exception to the GNU General Public License, if you
|
||||||
|
# distribute this file as part of a program that contains a
|
||||||
|
# configuration script generated by Autoconf, you may include it under
|
||||||
|
# the same distribution terms that you use for the rest of that program.
|
||||||
|
|
||||||
|
if test $# -eq 0; then
|
||||||
|
echo 1>&2 "Try \`$0 --help' for more information"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
run=:
|
||||||
|
|
||||||
|
# In the cases where this matters, `missing' is being run in the
|
||||||
|
# srcdir already.
|
||||||
|
if test -f configure.ac; then
|
||||||
|
configure_ac=configure.ac
|
||||||
|
else
|
||||||
|
configure_ac=configure.in
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
--run)
|
||||||
|
# Try to run requested program, and just exit if it succeeds.
|
||||||
|
run=
|
||||||
|
shift
|
||||||
|
"$@" && exit 0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# If it does not exist, or fails to run (possibly an outdated version),
|
||||||
|
# try to emulate it.
|
||||||
|
case "$1" in
|
||||||
|
|
||||||
|
-h|--h|--he|--hel|--help)
|
||||||
|
echo "\
|
||||||
|
$0 [OPTION]... PROGRAM [ARGUMENT]...
|
||||||
|
|
||||||
|
Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
|
||||||
|
error status if there is no known handling for PROGRAM.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-h, --help display this help and exit
|
||||||
|
-v, --version output version information and exit
|
||||||
|
--run try to run the given command, and emulate it if it fails
|
||||||
|
|
||||||
|
Supported PROGRAM values:
|
||||||
|
aclocal touch file \`aclocal.m4'
|
||||||
|
autoconf touch file \`configure'
|
||||||
|
autoheader touch file \`config.h.in'
|
||||||
|
automake touch all \`Makefile.in' files
|
||||||
|
bison create \`y.tab.[ch]', if possible, from existing .[ch]
|
||||||
|
flex create \`lex.yy.c', if possible, from existing .c
|
||||||
|
help2man touch the output file
|
||||||
|
lex create \`lex.yy.c', if possible, from existing .c
|
||||||
|
makeinfo touch the output file
|
||||||
|
tar try tar, gnutar, gtar, then tar without non-portable flags
|
||||||
|
yacc create \`y.tab.[ch]', if possible, from existing .[ch]"
|
||||||
|
;;
|
||||||
|
|
||||||
|
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
|
||||||
|
echo "missing 0.4 - GNU automake"
|
||||||
|
;;
|
||||||
|
|
||||||
|
-*)
|
||||||
|
echo 1>&2 "$0: Unknown \`$1' option"
|
||||||
|
echo 1>&2 "Try \`$0 --help' for more information"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
aclocal)
|
||||||
|
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
||||||
|
# We have it, but it failed.
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: \`$1' is missing on your system. You should only need it if
|
||||||
|
you modified \`acinclude.m4' or \`${configure_ac}'. You might want
|
||||||
|
to install the \`Automake' and \`Perl' packages. Grab them from
|
||||||
|
any GNU archive site."
|
||||||
|
touch aclocal.m4
|
||||||
|
;;
|
||||||
|
|
||||||
|
autoconf)
|
||||||
|
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
||||||
|
# We have it, but it failed.
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: \`$1' is missing on your system. You should only need it if
|
||||||
|
you modified \`${configure_ac}'. You might want to install the
|
||||||
|
\`Autoconf' and \`GNU m4' packages. Grab them from any GNU
|
||||||
|
archive site."
|
||||||
|
touch configure
|
||||||
|
;;
|
||||||
|
|
||||||
|
autoheader)
|
||||||
|
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
||||||
|
# We have it, but it failed.
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: \`$1' is missing on your system. You should only need it if
|
||||||
|
you modified \`acconfig.h' or \`${configure_ac}'. You might want
|
||||||
|
to install the \`Autoconf' and \`GNU m4' packages. Grab them
|
||||||
|
from any GNU archive site."
|
||||||
|
files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
|
||||||
|
test -z "$files" && files="config.h"
|
||||||
|
touch_files=
|
||||||
|
for f in $files; do
|
||||||
|
case "$f" in
|
||||||
|
*:*) touch_files="$touch_files "`echo "$f" |
|
||||||
|
sed -e 's/^[^:]*://' -e 's/:.*//'`;;
|
||||||
|
*) touch_files="$touch_files $f.in";;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
touch $touch_files
|
||||||
|
;;
|
||||||
|
|
||||||
|
automake)
|
||||||
|
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
||||||
|
# We have it, but it failed.
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: \`$1' is missing on your system. You should only need it if
|
||||||
|
you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
|
||||||
|
You might want to install the \`Automake' and \`Perl' packages.
|
||||||
|
Grab them from any GNU archive site."
|
||||||
|
find . -type f -name Makefile.am -print |
|
||||||
|
sed 's/\.am$/.in/' |
|
||||||
|
while read f; do touch "$f"; done
|
||||||
|
;;
|
||||||
|
|
||||||
|
autom4te)
|
||||||
|
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
||||||
|
# We have it, but it failed.
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: \`$1' is needed, and you do not seem to have it handy on your
|
||||||
|
system. You might have modified some files without having the
|
||||||
|
proper tools for further handling them.
|
||||||
|
You can get \`$1Help2man' as part of \`Autoconf' from any GNU
|
||||||
|
archive site."
|
||||||
|
|
||||||
|
file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
|
||||||
|
test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
|
||||||
|
if test -f "$file"; then
|
||||||
|
touch $file
|
||||||
|
else
|
||||||
|
test -z "$file" || exec >$file
|
||||||
|
echo "#! /bin/sh"
|
||||||
|
echo "# Created by GNU Automake missing as a replacement of"
|
||||||
|
echo "# $ $@"
|
||||||
|
echo "exit 0"
|
||||||
|
chmod +x $file
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
bison|yacc)
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: \`$1' is missing on your system. You should only need it if
|
||||||
|
you modified a \`.y' file. You may need the \`Bison' package
|
||||||
|
in order for those modifications to take effect. You can get
|
||||||
|
\`Bison' from any GNU archive site."
|
||||||
|
rm -f y.tab.c y.tab.h
|
||||||
|
if [ $# -ne 1 ]; then
|
||||||
|
eval LASTARG="\${$#}"
|
||||||
|
case "$LASTARG" in
|
||||||
|
*.y)
|
||||||
|
SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
|
||||||
|
if [ -f "$SRCFILE" ]; then
|
||||||
|
cp "$SRCFILE" y.tab.c
|
||||||
|
fi
|
||||||
|
SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
|
||||||
|
if [ -f "$SRCFILE" ]; then
|
||||||
|
cp "$SRCFILE" y.tab.h
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
if [ ! -f y.tab.h ]; then
|
||||||
|
echo >y.tab.h
|
||||||
|
fi
|
||||||
|
if [ ! -f y.tab.c ]; then
|
||||||
|
echo 'main() { return 0; }' >y.tab.c
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
lex|flex)
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: \`$1' is missing on your system. You should only need it if
|
||||||
|
you modified a \`.l' file. You may need the \`Flex' package
|
||||||
|
in order for those modifications to take effect. You can get
|
||||||
|
\`Flex' from any GNU archive site."
|
||||||
|
rm -f lex.yy.c
|
||||||
|
if [ $# -ne 1 ]; then
|
||||||
|
eval LASTARG="\${$#}"
|
||||||
|
case "$LASTARG" in
|
||||||
|
*.l)
|
||||||
|
SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
|
||||||
|
if [ -f "$SRCFILE" ]; then
|
||||||
|
cp "$SRCFILE" lex.yy.c
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
if [ ! -f lex.yy.c ]; then
|
||||||
|
echo 'main() { return 0; }' >lex.yy.c
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
help2man)
|
||||||
|
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
||||||
|
# We have it, but it failed.
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: \`$1' is missing on your system. You should only need it if
|
||||||
|
you modified a dependency of a manual page. You may need the
|
||||||
|
\`Help2man' package in order for those modifications to take
|
||||||
|
effect. You can get \`Help2man' from any GNU archive site."
|
||||||
|
|
||||||
|
file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
|
||||||
|
if test -z "$file"; then
|
||||||
|
file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
|
||||||
|
fi
|
||||||
|
if [ -f "$file" ]; then
|
||||||
|
touch $file
|
||||||
|
else
|
||||||
|
test -z "$file" || exec >$file
|
||||||
|
echo ".ab help2man is required to generate this page"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
makeinfo)
|
||||||
|
if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then
|
||||||
|
# We have makeinfo, but it failed.
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: \`$1' is missing on your system. You should only need it if
|
||||||
|
you modified a \`.texi' or \`.texinfo' file, or any other file
|
||||||
|
indirectly affecting the aspect of the manual. The spurious
|
||||||
|
call might also be the consequence of using a buggy \`make' (AIX,
|
||||||
|
DU, IRIX). You might want to install the \`Texinfo' package or
|
||||||
|
the \`GNU make' package. Grab either from any GNU archive site."
|
||||||
|
file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
|
||||||
|
if test -z "$file"; then
|
||||||
|
file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
|
||||||
|
file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
|
||||||
|
fi
|
||||||
|
touch $file
|
||||||
|
;;
|
||||||
|
|
||||||
|
tar)
|
||||||
|
shift
|
||||||
|
if test -n "$run"; then
|
||||||
|
echo 1>&2 "ERROR: \`tar' requires --run"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# We have already tried tar in the generic part.
|
||||||
|
# Look for gnutar/gtar before invocation to avoid ugly error
|
||||||
|
# messages.
|
||||||
|
if (gnutar --version > /dev/null 2>&1); then
|
||||||
|
gnutar ${1+"$@"} && exit 0
|
||||||
|
fi
|
||||||
|
if (gtar --version > /dev/null 2>&1); then
|
||||||
|
gtar ${1+"$@"} && exit 0
|
||||||
|
fi
|
||||||
|
firstarg="$1"
|
||||||
|
if shift; then
|
||||||
|
case "$firstarg" in
|
||||||
|
*o*)
|
||||||
|
firstarg=`echo "$firstarg" | sed s/o//`
|
||||||
|
tar "$firstarg" ${1+"$@"} && exit 0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
case "$firstarg" in
|
||||||
|
*h*)
|
||||||
|
firstarg=`echo "$firstarg" | sed s/h//`
|
||||||
|
tar "$firstarg" ${1+"$@"} && exit 0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: I can't seem to be able to run \`tar' with the given arguments.
|
||||||
|
You may want to install GNU tar or Free paxutils, or check the
|
||||||
|
command line arguments."
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: \`$1' is needed, and you do not seem to have it handy on your
|
||||||
|
system. You might have modified some files without having the
|
||||||
|
proper tools for further handling them. Check the \`README' file,
|
||||||
|
it often tells you about the needed prerequirements for installing
|
||||||
|
this package. You may also peek at any GNU archive site, in case
|
||||||
|
some other package would contain this missing \`$1' program."
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
exit 0
|
||||||
Executable
+101
@@ -0,0 +1,101 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
# mkinstalldirs --- make directory hierarchy
|
||||||
|
# Author: Noah Friedman <[email protected]>
|
||||||
|
# Created: 1993-05-16
|
||||||
|
# Public domain
|
||||||
|
|
||||||
|
# $Id$
|
||||||
|
|
||||||
|
errstatus=0
|
||||||
|
dirmode=""
|
||||||
|
|
||||||
|
usage="\
|
||||||
|
Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
|
||||||
|
|
||||||
|
# process command line arguments
|
||||||
|
while test $# -gt 0 ; do
|
||||||
|
case "${1}" in
|
||||||
|
-h | --help | --h* ) # -h for help
|
||||||
|
echo "${usage}" 1>&2; exit 0 ;;
|
||||||
|
-m ) # -m PERM arg
|
||||||
|
shift
|
||||||
|
test $# -eq 0 && { echo "${usage}" 1>&2; exit 1; }
|
||||||
|
dirmode="${1}"
|
||||||
|
shift ;;
|
||||||
|
-- ) shift; break ;; # stop option processing
|
||||||
|
-* ) echo "${usage}" 1>&2; exit 1 ;; # unknown option
|
||||||
|
* ) break ;; # first non-opt arg
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
for file
|
||||||
|
do
|
||||||
|
if test -d "$file"; then
|
||||||
|
shift
|
||||||
|
else
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
case $# in
|
||||||
|
0) exit 0 ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
case $dirmode in
|
||||||
|
'')
|
||||||
|
if mkdir -p -- . 2>/dev/null; then
|
||||||
|
echo "mkdir -p -- $*"
|
||||||
|
exec mkdir -p -- "$@"
|
||||||
|
fi ;;
|
||||||
|
*)
|
||||||
|
if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
|
||||||
|
echo "mkdir -m $dirmode -p -- $*"
|
||||||
|
exec mkdir -m "$dirmode" -p -- "$@"
|
||||||
|
fi ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
for file
|
||||||
|
do
|
||||||
|
set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
|
||||||
|
shift
|
||||||
|
|
||||||
|
pathcomp=
|
||||||
|
for d
|
||||||
|
do
|
||||||
|
pathcomp="$pathcomp$d"
|
||||||
|
case "$pathcomp" in
|
||||||
|
-* ) pathcomp=./$pathcomp ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if test ! -d "$pathcomp"; then
|
||||||
|
echo "mkdir $pathcomp"
|
||||||
|
|
||||||
|
mkdir "$pathcomp" || lasterr=$?
|
||||||
|
|
||||||
|
if test ! -d "$pathcomp"; then
|
||||||
|
errstatus=$lasterr
|
||||||
|
else
|
||||||
|
if test ! -z "$dirmode"; then
|
||||||
|
echo "chmod $dirmode $pathcomp"
|
||||||
|
|
||||||
|
lasterr=""
|
||||||
|
chmod "$dirmode" "$pathcomp" || lasterr=$?
|
||||||
|
|
||||||
|
if test ! -z "$lasterr"; then
|
||||||
|
errstatus=$lasterr
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
pathcomp="$pathcomp/"
|
||||||
|
done
|
||||||
|
done
|
||||||
|
|
||||||
|
exit $errstatus
|
||||||
|
|
||||||
|
# Local Variables:
|
||||||
|
# mode: shell-script
|
||||||
|
# sh-indentation: 3
|
||||||
|
# End:
|
||||||
|
# mkinstalldirs ends here
|
||||||
Executable
+17
@@ -0,0 +1,17 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# Like mv $1 $2, but if the files are the same, just delete $1.
|
||||||
|
# Status is 0 if $2 is changed, 1 otherwise.
|
||||||
|
if
|
||||||
|
test -r $2
|
||||||
|
then
|
||||||
|
if
|
||||||
|
cmp -s $1 $2
|
||||||
|
then
|
||||||
|
echo $2 is unchanged
|
||||||
|
rm -f $1
|
||||||
|
else
|
||||||
|
mv -f $1 $2
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
mv -f $1 $2
|
||||||
|
fi
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
1.29e
|
||||||
+6288
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
-139
@@ -1,139 +0,0 @@
|
|||||||
# Configure template for GNU Bison. -*-Autoconf-*-
|
|
||||||
#
|
|
||||||
# Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006 Free Software
|
|
||||||
# Foundation, Inc.
|
|
||||||
#
|
|
||||||
# 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
|
|
||||||
|
|
||||||
# We use macros like AC_CHECK_HEADERS_ONCE, so we need Autoconf 2.60 or better.
|
|
||||||
AC_PREREQ(2.60)
|
|
||||||
|
|
||||||
AC_INIT([GNU Bison], [2.3a], [[email protected]])
|
|
||||||
AC_CONFIG_AUX_DIR([build-aux])
|
|
||||||
AC_CONFIG_MACRO_DIR([m4])
|
|
||||||
|
|
||||||
# We don't have a file m4/Makefile.am, so we need Automake 1.8 or later.
|
|
||||||
AM_INIT_AUTOMAKE([1.8 check-news readme-alpha dist-bzip2])
|
|
||||||
AC_CONFIG_HEADERS([config.h:config.hin])
|
|
||||||
|
|
||||||
gl_USE_SYSTEM_EXTENSIONS
|
|
||||||
|
|
||||||
# Checks for the compiler.
|
|
||||||
AC_PROG_CC
|
|
||||||
AM_PROG_CC_STDC
|
|
||||||
AC_ARG_ENABLE(gcc-warnings,
|
|
||||||
[ --enable-gcc-warnings turn on lots of GCC warnings (not recommended)],
|
|
||||||
[case "${enableval}" in
|
|
||||||
yes|no) ;;
|
|
||||||
*) AC_MSG_ERROR([bad value ${enableval} for gcc-warnings option]) ;;
|
|
||||||
esac],
|
|
||||||
[enableval=no])
|
|
||||||
if test "${enableval}" = yes; then
|
|
||||||
gl_WARNING_CFLAGS([-Werror])
|
|
||||||
AC_SUBST([WERROR_CFLAGS], [$WARNING_CFLAGS])
|
|
||||||
WARNING_CFLAGS=
|
|
||||||
gl_WARNING_CFLAGS([-Wextra -Wno-sign-compare])
|
|
||||||
gl_WARNING_CFLAGS([-Wall])
|
|
||||||
gl_WARNING_CFLAGS([-Wcast-align])
|
|
||||||
gl_WARNING_CFLAGS([-Wcast-qual])
|
|
||||||
gl_WARNING_CFLAGS([-Wformat])
|
|
||||||
gl_WARNING_CFLAGS([-Wpointer-arith])
|
|
||||||
gl_WARNING_CFLAGS([-Wwrite-strings])
|
|
||||||
AC_SUBST([WARNING_CXXFLAGS], [$WARNING_CFLAGS])
|
|
||||||
# The following warnings are not suitable for C++.
|
|
||||||
gl_WARNING_CFLAGS([-Wbad-function-cast])
|
|
||||||
gl_WARNING_CFLAGS([-Wmissing-declarations])
|
|
||||||
gl_WARNING_CFLAGS([-Wmissing-prototypes])
|
|
||||||
gl_WARNING_CFLAGS([-Wshadow])
|
|
||||||
gl_WARNING_CFLAGS([-Wstrict-prototypes])
|
|
||||||
AC_DEFINE([lint], 1, [Define to 1 if the compiler is checking for lint.])
|
|
||||||
fi
|
|
||||||
|
|
||||||
BISON_TEST_FOR_WORKING_C_COMPILER
|
|
||||||
|
|
||||||
AC_ARG_ENABLE([yacc],
|
|
||||||
[AC_HELP_STRING([--disable-yacc],
|
|
||||||
[do not build a yacc command or an -ly library])],
|
|
||||||
, [enable_yacc=yes])
|
|
||||||
case $enable_yacc in
|
|
||||||
yes)
|
|
||||||
YACC_SCRIPT=yacc
|
|
||||||
YACC_LIBRARY=liby.a;;
|
|
||||||
*)
|
|
||||||
YACC_SCRIPT=
|
|
||||||
YACC_LIBRARY=;;
|
|
||||||
esac
|
|
||||||
AC_SUBST([YACC_SCRIPT])
|
|
||||||
AC_SUBST([YACC_LIBRARY])
|
|
||||||
|
|
||||||
# Checks for programs.
|
|
||||||
AC_PROG_LEX
|
|
||||||
AC_PROG_YACC
|
|
||||||
AC_PROG_RANLIB
|
|
||||||
BISON_PROG_GNU_M4
|
|
||||||
if test x"$ac_cv_prog_gnu_m4" != xyes; then
|
|
||||||
AC_MSG_ERROR([GNU M4 1.4 is required])
|
|
||||||
fi
|
|
||||||
AC_DEFINE_UNQUOTED([M4], ["$M4"], [Define to the GNU M4 executable name.])
|
|
||||||
|
|
||||||
# Checks for header files.
|
|
||||||
AC_CHECK_HEADERS_ONCE([locale.h])
|
|
||||||
AM_STDBOOL_H
|
|
||||||
|
|
||||||
# Checks for compiler characteristics.
|
|
||||||
AC_C_INLINE
|
|
||||||
|
|
||||||
# Checks for library functions.
|
|
||||||
AC_CHECK_FUNCS_ONCE([setlocale])
|
|
||||||
AM_WITH_DMALLOC
|
|
||||||
BISON_PREREQ_SUBPIPE
|
|
||||||
BISON_PREREQ_TIMEVAR
|
|
||||||
|
|
||||||
# gnulib and gettext.
|
|
||||||
GNULIB_AUTOCONF_SNIPPET
|
|
||||||
# We've never tested with gettext versions before 0.15, so play it safe.
|
|
||||||
AM_GNU_GETTEXT_VERSION([0.15])
|
|
||||||
BISON_I18N
|
|
||||||
|
|
||||||
# Internationalized parsers.
|
|
||||||
AC_CONFIG_FILES([runtime-po/Makefile.in])
|
|
||||||
# Autoconf macros for packages using internationalized parsers.
|
|
||||||
aclocaldir='${datadir}/aclocal'
|
|
||||||
AC_SUBST([aclocaldir])
|
|
||||||
|
|
||||||
# Initialize the test suite.
|
|
||||||
AC_CONFIG_TESTDIR(tests)
|
|
||||||
AC_CONFIG_FILES([tests/Makefile tests/atlocal])
|
|
||||||
AC_CONFIG_FILES([tests/bison], [chmod +x tests/bison])
|
|
||||||
AC_CHECK_PROGS([VALGRIND], [valgrind])
|
|
||||||
AC_PROG_CXX
|
|
||||||
BISON_TEST_FOR_WORKING_CXX_COMPILER
|
|
||||||
AM_MISSING_PROG([AUTOM4TE], [autom4te])
|
|
||||||
# Needed by tests/atlocal.in.
|
|
||||||
AC_SUBST([GCC])
|
|
||||||
O0CFLAGS=`echo $CFLAGS | sed 's/-O[[0-9]] *//'`
|
|
||||||
AC_SUBST([O0CFLAGS])
|
|
||||||
O0CXXFLAGS=`echo $CXXFLAGS | sed 's/-O[[0-9]] *//'`
|
|
||||||
AC_SUBST([O0CXXFLAGS])
|
|
||||||
|
|
||||||
AC_CONFIG_FILES([Makefile
|
|
||||||
build-aux/Makefile
|
|
||||||
po/Makefile.in
|
|
||||||
data/Makefile
|
|
||||||
examples/Makefile
|
|
||||||
examples/calc++/Makefile
|
|
||||||
lib/Makefile src/Makefile doc/Makefile])
|
|
||||||
AC_OUTPUT
|
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
@echo off
|
||||||
|
echo Configuring bison for go32
|
||||||
|
rem This batch file assumes a unix-type "sed" program
|
||||||
|
|
||||||
|
echo # Makefile generated by "configure.bat"> Makefile
|
||||||
|
echo all.dos : bison >> Makefile
|
||||||
|
|
||||||
|
if exist config.sed del config.sed
|
||||||
|
|
||||||
|
echo "s/@srcdir@/./g ">> config.sed
|
||||||
|
echo "s/@CC@/gcc/g ">> config.sed
|
||||||
|
echo "s/@INSTALL@//g ">> config.sed
|
||||||
|
echo "s/@INSTALL_PROGRAM@//g ">> config.sed
|
||||||
|
echo "s/@INSTALL_DATA@//g ">> config.sed
|
||||||
|
echo "s/@DEFS@/-DHAVE_STRERROR/g ">> config.sed
|
||||||
|
echo "s/@LIBS@//g ">> config.sed
|
||||||
|
echo "s/@ALLOCA@//g ">> config.sed
|
||||||
|
|
||||||
|
echo "/^bison[ ]*:/,/-o/ { ">> config.sed
|
||||||
|
echo " s/ \$(CC)/ >bison.rf/ ">> config.sed
|
||||||
|
echo " /-o/ a\ ">> config.sed
|
||||||
|
echo " $(CC) @bison.rf ">> config.sed
|
||||||
|
echo "} ">> config.sed
|
||||||
|
|
||||||
|
sed -e "s/^\"//" -e "s/\"$//" -e "s/[ ]*$//" config.sed > config2.sed
|
||||||
|
sed -f config2.sed Makefile.in >> Makefile
|
||||||
|
del config.sed
|
||||||
|
del config2.sed
|
||||||
+104
@@ -0,0 +1,104 @@
|
|||||||
|
# Configure template for GNU Bison. -*-Autoconf-*-
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||||
|
# 02111-1307 USA
|
||||||
|
|
||||||
|
# We need a recent Autoconf to run a recent Autotest.
|
||||||
|
AC_PREREQ(2.52e)
|
||||||
|
|
||||||
|
AC_INIT([GNU Bison], [1.29f], [[email protected]])
|
||||||
|
AC_CONFIG_AUX_DIR(config)
|
||||||
|
|
||||||
|
AM_INIT_AUTOMAKE([bison], [1.29f])
|
||||||
|
AM_CONFIG_HEADER(config.h:config.hin)
|
||||||
|
|
||||||
|
# Initialize the test suite.
|
||||||
|
AC_CONFIG_TESTDIR(tests)
|
||||||
|
AC_CONFIG_FILES([tests/bison], [chmod +x tests/bison])
|
||||||
|
# Needed by tests/atlocal.in.
|
||||||
|
AC_SUBST([GCC])
|
||||||
|
|
||||||
|
# Checks for programs.
|
||||||
|
AC_PROG_CC
|
||||||
|
AC_MINIX
|
||||||
|
AC_ISC_POSIX
|
||||||
|
AM_PROG_CC_STDC
|
||||||
|
AC_PROG_RANLIB
|
||||||
|
AM_MISSING_PROG([AUTOM4TE], [autom4te])
|
||||||
|
|
||||||
|
AC_ARG_ENABLE(gcc-warnings,
|
||||||
|
[ --enable-gcc-warnings turn on lots of GCC warnings (not recommended)],
|
||||||
|
[case "${enableval}" in
|
||||||
|
yes|no) ;;
|
||||||
|
*) AC_MSG_ERROR([bad value ${enableval} for gcc-warnings option]) ;;
|
||||||
|
esac],
|
||||||
|
[enableval=no])
|
||||||
|
if test "${enableval}" = yes; then
|
||||||
|
BISON_WARNING(-Wall)
|
||||||
|
BISON_WARNING(-W)
|
||||||
|
BISON_WARNING(-Wbad-function-cast)
|
||||||
|
BISON_WARNING(-Wcast-align)
|
||||||
|
BISON_WARNING(-Wcast-qual)
|
||||||
|
BISON_WARNING(-Wformat)
|
||||||
|
BISON_WARNING(-Wmissing-declarations)
|
||||||
|
BISON_WARNING(-Wmissing-prototypes)
|
||||||
|
BISON_WARNING(-Wnested-externs)
|
||||||
|
BISON_WARNING(-Wshadow)
|
||||||
|
BISON_WARNING(-Wstrict-prototypes)
|
||||||
|
BISON_WARNING(-Wwrite-strings)
|
||||||
|
CFLAGS="$CFLAGS $WARNING_CFLAGS"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Checks for libraries.
|
||||||
|
AC_DEFINE([_GNU_SOURCE],1,[Define to 1 for GNU C library extensions.])
|
||||||
|
|
||||||
|
# Checks for header files.
|
||||||
|
AC_HEADER_STDC
|
||||||
|
AC_CHECK_HEADERS(ctype.h locale.h memory.h stdlib.h string.h unistd.h)
|
||||||
|
|
||||||
|
# Checks for typedefs.
|
||||||
|
|
||||||
|
# Checks for structures.
|
||||||
|
|
||||||
|
# Checks for compiler characteristics.
|
||||||
|
AC_C_CONST
|
||||||
|
AC_C_INLINE
|
||||||
|
AM_C_PROTOTYPES
|
||||||
|
|
||||||
|
# Checks for library functions.
|
||||||
|
AC_FUNC_ALLOCA
|
||||||
|
AC_CHECK_FUNCS(mkstemp setlocale)
|
||||||
|
AC_CHECK_DECLS([stpcpy, strndup, strnlen, memchr])
|
||||||
|
AC_REPLACE_FUNCS(stpcpy strndup strnlen strspn memchr)
|
||||||
|
jm_FUNC_MALLOC
|
||||||
|
jm_FUNC_REALLOC
|
||||||
|
jm_PREREQ_QUOTEARG
|
||||||
|
jm_PREREQ_ERROR
|
||||||
|
AM_WITH_DMALLOC
|
||||||
|
|
||||||
|
ALL_LINGUAS="de es et fr ja nl tr ru"
|
||||||
|
AM_GNU_GETTEXT
|
||||||
|
|
||||||
|
# This is necessary so that .o files in LIBOBJS are also built via
|
||||||
|
# the ANSI2KNR-filtering rules.
|
||||||
|
LIBOBJS=`echo $LIBOBJS|sed 's/\.o /\$U.o /g;s/\.o$/\$U.o/'`
|
||||||
|
AC_SUBST(LIBOBJS)
|
||||||
|
|
||||||
|
AC_OUTPUT([Makefile
|
||||||
|
config/Makefile
|
||||||
|
intl/Makefile po/Makefile.in
|
||||||
|
lib/Makefile src/Makefile doc/Makefile
|
||||||
|
m4/Makefile
|
||||||
|
tests/Makefile])
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
Makefile.in
|
|
||||||
Makefile
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
## Copyright (C) 2002, 2005 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
## 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
|
|
||||||
|
|
||||||
dist_pkgdata_DATA = README \
|
|
||||||
c.m4 yacc.c glr.c \
|
|
||||||
c++.m4 location.cc lalr1.cc glr.cc
|
|
||||||
|
|
||||||
m4sugardir = $(pkgdatadir)/m4sugar
|
|
||||||
dist_m4sugar_DATA = m4sugar/m4sugar.m4
|
|
||||||
-45
@@ -1,45 +0,0 @@
|
|||||||
-*- outline -*-
|
|
||||||
|
|
||||||
This directory contains Bison skeletons: the general shapes of the
|
|
||||||
different parser kinds, that are specialized for specific grammars by
|
|
||||||
the bison program.
|
|
||||||
|
|
||||||
Currently, there are only three supported skeletons:
|
|
||||||
|
|
||||||
- yacc.c
|
|
||||||
It used to be named bison.simple: it corresponds to C Yacc
|
|
||||||
compatible LALR(1) parsers.
|
|
||||||
|
|
||||||
- lalr1.cc
|
|
||||||
Produces a C++ parser class. It is still very experimental, and not
|
|
||||||
yet supported. Please, subscribe to [email protected].
|
|
||||||
|
|
||||||
- glr.c
|
|
||||||
A Generalized LR C parser based on Bison's LALR(1) tables.
|
|
||||||
|
|
||||||
These skeletons are the only ones supported by the Bison team.
|
|
||||||
Because the interface between skeletons and the bison program is not
|
|
||||||
finished, *we are not bound to it*. In particular, Bison is not
|
|
||||||
mature enough for us to consider that ``foreign skeletons'' are
|
|
||||||
supported.
|
|
||||||
|
|
||||||
-----
|
|
||||||
|
|
||||||
Copyright (C) 2002 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
This file is part of GNU Bison.
|
|
||||||
|
|
||||||
GNU Bison is free software; you can 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, or (at your option)
|
|
||||||
any later version.
|
|
||||||
|
|
||||||
GNU Bison 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 Bison; see the file COPYING. If not, write to
|
|
||||||
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
||||||
Boston, MA 02110-1301, USA.
|
|
||||||
-124
@@ -1,124 +0,0 @@
|
|||||||
m4_divert(-1) -*- Autoconf -*-
|
|
||||||
|
|
||||||
# C++ skeleton for Bison
|
|
||||||
|
|
||||||
# Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
# 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
|
|
||||||
|
|
||||||
m4_include(b4_pkgdatadir/[c.m4])
|
|
||||||
|
|
||||||
## ---------------- ##
|
|
||||||
## Default values. ##
|
|
||||||
## ---------------- ##
|
|
||||||
|
|
||||||
# Default parser class name.
|
|
||||||
m4_define_default([b4_parser_class_name], [parser])
|
|
||||||
m4_define_default([b4_location_type], [location])
|
|
||||||
m4_define_default([b4_filename_type], [std::string])
|
|
||||||
m4_define_default([b4_namespace], m4_defn([b4_prefix]))
|
|
||||||
m4_define_default([b4_define_location_comparison],
|
|
||||||
m4_if(b4_filename_type, [std::string], [1], [0]))
|
|
||||||
|
|
||||||
|
|
||||||
# b4_token_enums(LIST-OF-PAIRS-TOKEN-NAME-TOKEN-NUMBER)
|
|
||||||
# -----------------------------------------------------
|
|
||||||
# Output the definition of the tokens as enums.
|
|
||||||
m4_define([b4_token_enums],
|
|
||||||
[/* Tokens. */
|
|
||||||
enum yytokentype {
|
|
||||||
m4_map_sep([ b4_token_enum], [,
|
|
||||||
],
|
|
||||||
[$@])
|
|
||||||
};
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
## ----------------- ##
|
|
||||||
## Semantic Values. ##
|
|
||||||
## ----------------- ##
|
|
||||||
|
|
||||||
|
|
||||||
# b4_lhs_value([TYPE])
|
|
||||||
# --------------------
|
|
||||||
# Expansion of $<TYPE>$.
|
|
||||||
m4_define([b4_lhs_value],
|
|
||||||
[(yyval[]m4_ifval([$1], [.$1]))])
|
|
||||||
|
|
||||||
|
|
||||||
# b4_rhs_value(RULE-LENGTH, NUM, [TYPE])
|
|
||||||
# --------------------------------------
|
|
||||||
# Expansion of $<TYPE>NUM, where the current rule has RULE-LENGTH
|
|
||||||
# symbols on RHS.
|
|
||||||
m4_define([b4_rhs_value],
|
|
||||||
[(yysemantic_stack_@{($1) - ($2)@}m4_ifval([$3], [.$3]))])
|
|
||||||
|
|
||||||
# b4_lhs_location()
|
|
||||||
# -----------------
|
|
||||||
# Expansion of @$.
|
|
||||||
m4_define([b4_lhs_location],
|
|
||||||
[(yyloc)])
|
|
||||||
|
|
||||||
|
|
||||||
# b4_rhs_location(RULE-LENGTH, NUM)
|
|
||||||
# ---------------------------------
|
|
||||||
# Expansion of @NUM, where the current rule has RULE-LENGTH symbols
|
|
||||||
# on RHS.
|
|
||||||
m4_define([b4_rhs_location],
|
|
||||||
[(yylocation_stack_@{($1) - ($2)@})])
|
|
||||||
|
|
||||||
|
|
||||||
# b4_parse_param_decl
|
|
||||||
# -------------------
|
|
||||||
# Extra formal arguments of the constructor.
|
|
||||||
# Change the parameter names from "foo" into "foo_yyarg", so that
|
|
||||||
# there is no collision bw the user chosen attribute name, and the
|
|
||||||
# argument name in the constructor.
|
|
||||||
m4_define([b4_parse_param_decl],
|
|
||||||
[m4_ifset([b4_parse_param],
|
|
||||||
[m4_map_sep([b4_parse_param_decl_1], [, ], [b4_parse_param])])])
|
|
||||||
|
|
||||||
m4_define([b4_parse_param_decl_1],
|
|
||||||
[$1_yyarg])
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# b4_parse_param_cons
|
|
||||||
# -------------------
|
|
||||||
# Extra initialisations of the constructor.
|
|
||||||
m4_define([b4_parse_param_cons],
|
|
||||||
[m4_ifset([b4_parse_param],
|
|
||||||
[
|
|
||||||
b4_cc_constructor_calls(b4_parse_param)])])
|
|
||||||
m4_define([b4_cc_constructor_calls],
|
|
||||||
[m4_map_sep([b4_cc_constructor_call], [,
|
|
||||||
], [$@])])
|
|
||||||
m4_define([b4_cc_constructor_call],
|
|
||||||
[$2 ($2_yyarg)])
|
|
||||||
|
|
||||||
# b4_parse_param_vars
|
|
||||||
# -------------------
|
|
||||||
# Extra instance variables.
|
|
||||||
m4_define([b4_parse_param_vars],
|
|
||||||
[m4_ifset([b4_parse_param],
|
|
||||||
[
|
|
||||||
/* User arguments. */
|
|
||||||
b4_cc_var_decls(b4_parse_param)])])
|
|
||||||
m4_define([b4_cc_var_decls],
|
|
||||||
[m4_map_sep([b4_cc_var_decl], [
|
|
||||||
], [$@])])
|
|
||||||
m4_define([b4_cc_var_decl],
|
|
||||||
[ $1;])
|
|
||||||
@@ -1,597 +0,0 @@
|
|||||||
m4_divert(-1) -*- Autoconf -*-
|
|
||||||
|
|
||||||
# C M4 Macros for Bison.
|
|
||||||
# Copyright (C) 2002, 2004, 2005, 2006 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
# 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
|
|
||||||
|
|
||||||
|
|
||||||
## ---------------- ##
|
|
||||||
## Identification. ##
|
|
||||||
## ---------------- ##
|
|
||||||
|
|
||||||
# b4_copyright(TITLE, YEARS)
|
|
||||||
# --------------------------
|
|
||||||
m4_define([b4_copyright],
|
|
||||||
[/* A Bison parser, made by GNU Bison b4_version. */
|
|
||||||
|
|
||||||
/* $1
|
|
||||||
|
|
||||||
m4_text_wrap([Copyright (C) $2 Free Software Foundation, Inc.], [ ])
|
|
||||||
|
|
||||||
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, 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. */
|
|
||||||
|
|
||||||
/* As a special exception, you may create a larger work that contains
|
|
||||||
part or all of the Bison parser skeleton and distribute that work
|
|
||||||
under terms of your choice, so long as that work isn't itself a
|
|
||||||
parser generator using the skeleton or a modified version thereof
|
|
||||||
as a parser skeleton. Alternatively, if you modify or redistribute
|
|
||||||
the parser skeleton itself, you may (at your option) remove this
|
|
||||||
special exception, which will cause the skeleton and the resulting
|
|
||||||
Bison output files to be licensed under the GNU General Public
|
|
||||||
License without this special exception.
|
|
||||||
|
|
||||||
This special exception was added by the Free Software Foundation in
|
|
||||||
version 2.2 of Bison. */])
|
|
||||||
|
|
||||||
|
|
||||||
# b4_identification
|
|
||||||
# -----------------
|
|
||||||
m4_define([b4_identification],
|
|
||||||
[/* Identify Bison output. */
|
|
||||||
[#]define YYBISON 1
|
|
||||||
|
|
||||||
/* Bison version. */
|
|
||||||
[#]define YYBISON_VERSION "b4_version"
|
|
||||||
|
|
||||||
/* Skeleton name. */
|
|
||||||
[#]define YYSKELETON_NAME b4_skeleton
|
|
||||||
|
|
||||||
/* Pure parsers. */
|
|
||||||
[#]define YYPURE b4_pure_flag
|
|
||||||
|
|
||||||
/* Using locations. */
|
|
||||||
[#]define YYLSP_NEEDED b4_locations_flag
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
## ---------------- ##
|
|
||||||
## Default values. ##
|
|
||||||
## ---------------- ##
|
|
||||||
|
|
||||||
m4_define_default([b4_epilogue], [])
|
|
||||||
|
|
||||||
# If the %union is not named, its name is YYSTYPE.
|
|
||||||
m4_define_default([b4_union_name], [YYSTYPE])
|
|
||||||
|
|
||||||
# The initial column and line.
|
|
||||||
m4_define_default([b4_location_initial_column], [1])
|
|
||||||
m4_define_default([b4_location_initial_line], [1])
|
|
||||||
|
|
||||||
|
|
||||||
## ------------------------ ##
|
|
||||||
## Pure/impure interfaces. ##
|
|
||||||
## ------------------------ ##
|
|
||||||
|
|
||||||
# b4_user_args
|
|
||||||
# ------------
|
|
||||||
m4_define([b4_user_args],
|
|
||||||
[m4_ifset([b4_parse_param], [, b4_c_args(b4_parse_param)])])
|
|
||||||
|
|
||||||
|
|
||||||
# b4_parse_param
|
|
||||||
# --------------
|
|
||||||
# If defined, b4_parse_param arrives double quoted, but below we prefer
|
|
||||||
# it to be single quoted.
|
|
||||||
m4_define_default([b4_parse_param])
|
|
||||||
m4_define([b4_parse_param],
|
|
||||||
b4_parse_param))
|
|
||||||
|
|
||||||
|
|
||||||
# b4_parse_param_for(DECL, FORMAL, BODY)
|
|
||||||
# ---------------------------------------
|
|
||||||
# Iterate over the user parameters, binding the declaration to DECL,
|
|
||||||
# the formal name to FORMAL, and evaluating the BODY.
|
|
||||||
m4_define([b4_parse_param_for],
|
|
||||||
[m4_foreach([$1_$2], m4_defn([b4_parse_param]),
|
|
||||||
[m4_pushdef([$1], m4_fst($1_$2))dnl
|
|
||||||
m4_pushdef([$2], m4_shift($1_$2))dnl
|
|
||||||
$3[]dnl
|
|
||||||
m4_popdef([$2])dnl
|
|
||||||
m4_popdef([$1])dnl
|
|
||||||
])])
|
|
||||||
|
|
||||||
# b4_parse_param_use
|
|
||||||
# ------------------
|
|
||||||
# `YYUSE' all the parse-params.
|
|
||||||
m4_define([b4_parse_param_use],
|
|
||||||
[b4_parse_param_for([Decl], [Formal], [ YYUSE (Formal);
|
|
||||||
])dnl
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
## ------------ ##
|
|
||||||
## Data Types. ##
|
|
||||||
## ------------ ##
|
|
||||||
|
|
||||||
# b4_ints_in(INT1, INT2, LOW, HIGH)
|
|
||||||
# ---------------------------------
|
|
||||||
# Return 1 iff both INT1 and INT2 are in [LOW, HIGH], 0 otherwise.
|
|
||||||
m4_define([b4_ints_in],
|
|
||||||
[m4_eval([$3 <= $1 && $1 <= $4 && $3 <= $2 && $2 <= $4])])
|
|
||||||
|
|
||||||
|
|
||||||
# b4_int_type(MIN, MAX)
|
|
||||||
# ---------------------
|
|
||||||
# Return the smallest int type able to handle numbers ranging from
|
|
||||||
# MIN to MAX (included).
|
|
||||||
m4_define([b4_int_type],
|
|
||||||
[m4_if(b4_ints_in($@, [0], [255]), [1], [unsigned char],
|
|
||||||
b4_ints_in($@, [-128], [127]), [1], [signed char],
|
|
||||||
|
|
||||||
b4_ints_in($@, [0], [65535]), [1], [unsigned short int],
|
|
||||||
b4_ints_in($@, [-32768], [32767]), [1], [short int],
|
|
||||||
|
|
||||||
m4_eval([0 <= $1]), [1], [unsigned int],
|
|
||||||
|
|
||||||
[int])])
|
|
||||||
|
|
||||||
|
|
||||||
# b4_int_type_for(NAME)
|
|
||||||
# ---------------------
|
|
||||||
# Return the smallest int type able to handle numbers ranging from
|
|
||||||
# `NAME_min' to `NAME_max' (included).
|
|
||||||
m4_define([b4_int_type_for],
|
|
||||||
[b4_int_type($1_min, $1_max)])
|
|
||||||
|
|
||||||
|
|
||||||
## ---------##
|
|
||||||
## Values. ##
|
|
||||||
## ---------##
|
|
||||||
|
|
||||||
# b4_null
|
|
||||||
---------
|
|
||||||
# Return a null pointer constant. NULL infringes on the user name
|
|
||||||
# space in C, so use 0 rather than NULL.
|
|
||||||
m4_define([b4_null], [0])
|
|
||||||
|
|
||||||
|
|
||||||
## ------------------ ##
|
|
||||||
## Decoding options. ##
|
|
||||||
## ------------------ ##
|
|
||||||
|
|
||||||
# b4_flag_if(FLAG, IF-TRUE, IF-FALSE)
|
|
||||||
# -----------------------------------
|
|
||||||
# Run IF-TRUE if b4_FLAG_flag is 1, IF-FALSE if FLAG is 0, otherwise fail.
|
|
||||||
m4_define([b4_flag_if],
|
|
||||||
[m4_case(b4_$1_flag,
|
|
||||||
[0], [$3],
|
|
||||||
[1], [$2],
|
|
||||||
[m4_fatal([invalid $1 value: ]$1)])])
|
|
||||||
|
|
||||||
|
|
||||||
# b4_define_flag_if(FLAG)
|
|
||||||
# -----------------------
|
|
||||||
# Define "b4_FLAG_if(IF-TRUE, IF-FALSE)" that depends on the
|
|
||||||
# value of the Boolean FLAG.
|
|
||||||
m4_define([b4_define_flag_if],
|
|
||||||
[_b4_define_flag_if($[1], $[2], [$1])])
|
|
||||||
|
|
||||||
# _b4_define_flag_if($1, $2, FLAG)
|
|
||||||
# --------------------------------
|
|
||||||
# This macro works around the impossibility to define macros
|
|
||||||
# inside macros, because issuing `[$1]' is not possible in M4 :(.
|
|
||||||
# This sucks hard, GNU M4 should really provide M5 like $$1.
|
|
||||||
m4_define([_b4_define_flag_if],
|
|
||||||
[m4_if([$1$2], $[1]$[2], [],
|
|
||||||
[m4_fatal([$0: Invalid arguments: $@])])dnl
|
|
||||||
m4_define([b4_$3_if],
|
|
||||||
[b4_flag_if([$3], [$1], [$2])])])
|
|
||||||
|
|
||||||
|
|
||||||
# b4_FLAG_if(IF-TRUE, IF-FALSE)
|
|
||||||
# -----------------------------
|
|
||||||
# Expand IF-TRUE, if FLAG is true, IF-FALSE otherwise.
|
|
||||||
b4_define_flag_if([defines]) # Whether headers are requested.
|
|
||||||
b4_define_flag_if([error_verbose]) # Whether error are verbose.
|
|
||||||
b4_define_flag_if([locations]) # Whether locations are tracked.
|
|
||||||
b4_define_flag_if([pure]) # Whether the interface is pure.
|
|
||||||
b4_define_flag_if([yacc]) # Whether POSIX Yacc is emulated.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## ------------------------- ##
|
|
||||||
## Assigning token numbers. ##
|
|
||||||
## ------------------------- ##
|
|
||||||
|
|
||||||
# b4_token_define(TOKEN-NAME, TOKEN-NUMBER)
|
|
||||||
# -----------------------------------------
|
|
||||||
# Output the definition of this token as #define.
|
|
||||||
m4_define([b4_token_define],
|
|
||||||
[#define $1 $2
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
# b4_token_defines(LIST-OF-PAIRS-TOKEN-NAME-TOKEN-NUMBER)
|
|
||||||
# -------------------------------------------------------
|
|
||||||
# Output the definition of the tokens (if there are) as #defines.
|
|
||||||
m4_define([b4_token_defines],
|
|
||||||
[m4_if([$@], [[]], [],
|
|
||||||
[/* Tokens. */
|
|
||||||
m4_map([b4_token_define], [$@])])
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
# b4_token_enum(TOKEN-NAME, TOKEN-NUMBER)
|
|
||||||
# ---------------------------------------
|
|
||||||
# Output the definition of this token as an enum.
|
|
||||||
m4_define([b4_token_enum],
|
|
||||||
[$1 = $2])
|
|
||||||
|
|
||||||
|
|
||||||
# b4_token_enums(LIST-OF-PAIRS-TOKEN-NAME-TOKEN-NUMBER)
|
|
||||||
# -----------------------------------------------------
|
|
||||||
# Output the definition of the tokens (if there are) as enums.
|
|
||||||
m4_define([b4_token_enums],
|
|
||||||
[m4_if([$@], [[]], [],
|
|
||||||
[/* Tokens. */
|
|
||||||
#ifndef YYTOKENTYPE
|
|
||||||
# define YYTOKENTYPE
|
|
||||||
/* Put the tokens into the symbol table, so that GDB and other debuggers
|
|
||||||
know about them. */
|
|
||||||
enum yytokentype {
|
|
||||||
m4_map_sep([ b4_token_enum], [,
|
|
||||||
],
|
|
||||||
[$@])
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
])])
|
|
||||||
|
|
||||||
|
|
||||||
# b4_token_enums_defines(LIST-OF-PAIRS-TOKEN-NAME-TOKEN-NUMBER)
|
|
||||||
# -------------------------------------------------------------
|
|
||||||
# Output the definition of the tokens (if there are any) as enums and, if POSIX
|
|
||||||
# Yacc is enabled, as #defines.
|
|
||||||
m4_define([b4_token_enums_defines],
|
|
||||||
[b4_token_enums($@)b4_yacc_if([b4_token_defines($@)], [])
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## --------------------------------------------- ##
|
|
||||||
## Defining C functions in both K&R and ANSI-C. ##
|
|
||||||
## --------------------------------------------- ##
|
|
||||||
|
|
||||||
|
|
||||||
# b4_modern_c
|
|
||||||
# -----------
|
|
||||||
# A predicate useful in #if to determine whether C is ancient or modern.
|
|
||||||
#
|
|
||||||
# If __STDC__ is defined, the compiler is modern. IBM xlc 7.0 when run
|
|
||||||
# as 'cc' doesn't define __STDC__ (or __STDC_VERSION__) for pedantic
|
|
||||||
# reasons, but it defines __C99__FUNC__ so check that as well.
|
|
||||||
# Microsoft C normally doesn't define these macros, but it defines _MSC_VER.
|
|
||||||
# Consider a C++ compiler to be modern if it defines __cplusplus.
|
|
||||||
#
|
|
||||||
m4_define([b4_c_modern],
|
|
||||||
[[(defined __STDC__ || defined __C99__FUNC__ \
|
|
||||||
|| defined __cplusplus || defined _MSC_VER)]])
|
|
||||||
|
|
||||||
# b4_c_function_def(NAME, RETURN-VALUE, [DECL1, NAME1], ...)
|
|
||||||
# ----------------------------------------------------------
|
|
||||||
# Declare the function NAME.
|
|
||||||
m4_define([b4_c_function_def],
|
|
||||||
[#if b4_c_modern
|
|
||||||
b4_c_ansi_function_def($@)
|
|
||||||
#else
|
|
||||||
$2
|
|
||||||
$1 (b4_c_knr_formal_names(m4_shiftn(2, $@)))
|
|
||||||
b4_c_knr_formal_decls(m4_shiftn(2, $@))
|
|
||||||
#endif[]dnl
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
# b4_c_ansi_function_def(NAME, RETURN-VALUE, [DECL1, NAME1], ...)
|
|
||||||
# ---------------------------------------------------------------
|
|
||||||
# Declare the function NAME in ANSI.
|
|
||||||
m4_define([b4_c_ansi_function_def],
|
|
||||||
[$2
|
|
||||||
$1 (b4_c_ansi_formals(m4_shiftn(2, $@)))[]dnl
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
# b4_c_ansi_formals([DECL1, NAME1], ...)
|
|
||||||
# --------------------------------------
|
|
||||||
# Output the arguments ANSI-C definition.
|
|
||||||
m4_define([b4_c_ansi_formals],
|
|
||||||
[m4_case([$@],
|
|
||||||
[], [void],
|
|
||||||
[[]], [void],
|
|
||||||
[m4_map_sep([b4_c_ansi_formal], [, ], [$@])])])
|
|
||||||
|
|
||||||
m4_define([b4_c_ansi_formal],
|
|
||||||
[$1])
|
|
||||||
|
|
||||||
|
|
||||||
# b4_c_knr_formal_names([DECL1, NAME1], ...)
|
|
||||||
# ------------------------------------------
|
|
||||||
# Output the argument names.
|
|
||||||
m4_define([b4_c_knr_formal_names],
|
|
||||||
[m4_map_sep([b4_c_knr_formal_name], [, ], [$@])])
|
|
||||||
|
|
||||||
m4_define([b4_c_knr_formal_name],
|
|
||||||
[$2])
|
|
||||||
|
|
||||||
|
|
||||||
# b4_c_knr_formal_decls([DECL1, NAME1], ...)
|
|
||||||
# ------------------------------------------
|
|
||||||
# Output the K&R argument declarations.
|
|
||||||
m4_define([b4_c_knr_formal_decls],
|
|
||||||
[m4_map_sep([b4_c_knr_formal_decl],
|
|
||||||
[
|
|
||||||
],
|
|
||||||
[$@])])
|
|
||||||
|
|
||||||
m4_define([b4_c_knr_formal_decl],
|
|
||||||
[ $1;])
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## ------------------------------------------------------------ ##
|
|
||||||
## Declaring (prototyping) C functions in both K&R and ANSI-C. ##
|
|
||||||
## ------------------------------------------------------------ ##
|
|
||||||
|
|
||||||
|
|
||||||
# b4_c_function_decl(NAME, RETURN-VALUE, [DECL1, NAME1], ...)
|
|
||||||
# -----------------------------------------------------------
|
|
||||||
# Declare the function NAME.
|
|
||||||
m4_define([b4_c_function_decl],
|
|
||||||
[#if defined __STDC__ || defined __cplusplus
|
|
||||||
b4_c_ansi_function_decl($@)
|
|
||||||
#else
|
|
||||||
$2 $1 ();
|
|
||||||
#endif[]dnl
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
# b4_c_ansi_function_decl(NAME, RETURN-VALUE, [DECL1, NAME1], ...)
|
|
||||||
# ----------------------------------------------------------------
|
|
||||||
# Declare the function NAME.
|
|
||||||
m4_define([b4_c_ansi_function_decl],
|
|
||||||
[$2 $1 (b4_c_ansi_formals(m4_shiftn(2, $@)));[]dnl
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## --------------------- ##
|
|
||||||
## Calling C functions. ##
|
|
||||||
## --------------------- ##
|
|
||||||
|
|
||||||
|
|
||||||
# b4_c_function_call(NAME, RETURN-VALUE, [DECL1, NAME1], ...)
|
|
||||||
# -----------------------------------------------------------
|
|
||||||
# Call the function NAME with arguments NAME1, NAME2 etc.
|
|
||||||
m4_define([b4_c_function_call],
|
|
||||||
[$1 (b4_c_args(m4_shiftn(2, $@)))[]dnl
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
# b4_c_args([DECL1, NAME1], ...)
|
|
||||||
# ------------------------------
|
|
||||||
# Output the arguments NAME1, NAME2...
|
|
||||||
m4_define([b4_c_args],
|
|
||||||
[m4_map_sep([b4_c_arg], [, ], [$@])])
|
|
||||||
|
|
||||||
m4_define([b4_c_arg],
|
|
||||||
[$2])
|
|
||||||
|
|
||||||
|
|
||||||
## ----------- ##
|
|
||||||
## Synclines. ##
|
|
||||||
## ----------- ##
|
|
||||||
|
|
||||||
# b4_basename(NAME)
|
|
||||||
# -----------------
|
|
||||||
# Similar to POSIX basename; the differences don't matter here.
|
|
||||||
# Beware that NAME is not evaluated.
|
|
||||||
m4_define([b4_basename],
|
|
||||||
[m4_bpatsubst([$1], [^.*/\([^/]+\)/*$], [\1])])
|
|
||||||
|
|
||||||
|
|
||||||
# b4_syncline(LINE, FILE)
|
|
||||||
# -----------------------
|
|
||||||
m4_define([b4_syncline],
|
|
||||||
[b4_flag_if([synclines],
|
|
||||||
[/* Line __line__ of b4_basename(m4_quote(__file__)). */
|
|
||||||
[#]line $1 $2])])
|
|
||||||
|
|
||||||
|
|
||||||
# b4_user_code(USER-CODE)
|
|
||||||
# -----------------------
|
|
||||||
# Emit code from the user, ending it with synclines.
|
|
||||||
m4_define([b4_user_code],
|
|
||||||
[$1
|
|
||||||
b4_syncline([@oline@], [@ofile@])])
|
|
||||||
|
|
||||||
|
|
||||||
# b4_define_user_code(MACRO)
|
|
||||||
# --------------------------
|
|
||||||
# From b4_MACRO, build b4_user_MACRO that includes the synclines.
|
|
||||||
m4_define([b4_define_user_code],
|
|
||||||
[m4_define([b4_user_$1],
|
|
||||||
[b4_user_code([b4_$1])])])
|
|
||||||
|
|
||||||
|
|
||||||
# b4_user_actions
|
|
||||||
# b4_user_initial_action
|
|
||||||
# b4_user_post_prologue
|
|
||||||
# b4_user_start_header
|
|
||||||
# b4_user_stype
|
|
||||||
# ----------------------
|
|
||||||
# Macros that issue user code, ending with synclines.
|
|
||||||
b4_define_user_code([actions])
|
|
||||||
b4_define_user_code([initial_action])
|
|
||||||
b4_define_user_code([post_prologue])
|
|
||||||
b4_define_user_code([start_header])
|
|
||||||
b4_define_user_code([stype])
|
|
||||||
|
|
||||||
|
|
||||||
## -------------- ##
|
|
||||||
## User actions. ##
|
|
||||||
## -------------- ##
|
|
||||||
|
|
||||||
# b4_case(LABEL, STATEMENTS)
|
|
||||||
# --------------------------
|
|
||||||
m4_define([b4_case],
|
|
||||||
[ case $1:
|
|
||||||
$2
|
|
||||||
break;])
|
|
||||||
|
|
||||||
# b4_symbol_actions(FILENAME, LINENO,
|
|
||||||
# SYMBOL-TAG, SYMBOL-NUM,
|
|
||||||
# SYMBOL-ACTION, SYMBOL-TYPENAME)
|
|
||||||
# -------------------------------------------------
|
|
||||||
m4_define([b4_symbol_actions],
|
|
||||||
[m4_pushdef([b4_dollar_dollar],
|
|
||||||
[m4_ifval([$6], [(yyvaluep->$6)], [(*yyvaluep)])])dnl
|
|
||||||
m4_pushdef([b4_at_dollar], [(*yylocationp)])dnl
|
|
||||||
case $4: /* $3 */
|
|
||||||
b4_syncline([$2], [$1])
|
|
||||||
$5;
|
|
||||||
b4_syncline([@oline@], [@ofile@])
|
|
||||||
break;
|
|
||||||
m4_popdef([b4_at_dollar])dnl
|
|
||||||
m4_popdef([b4_dollar_dollar])dnl
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
# b4_yydestruct_generate(FUNCTION-DECLARATOR)
|
|
||||||
# -------------------------------------------
|
|
||||||
# Generate the "yydestruct" function, which declaration is issued using
|
|
||||||
# FUNCTION-DECLARATOR, which may be "b4_c_ansi_function_def" for ISO C
|
|
||||||
# or "b4_c_function_def" for K&R.
|
|
||||||
m4_define_default([b4_yydestruct_generate],
|
|
||||||
[[/*-----------------------------------------------.
|
|
||||||
| Release the memory associated to this symbol. |
|
|
||||||
`-----------------------------------------------*/
|
|
||||||
|
|
||||||
/*ARGSUSED*/
|
|
||||||
]$1([yydestruct],
|
|
||||||
[static void],
|
|
||||||
[[const char *yymsg], [yymsg]],
|
|
||||||
[[int yytype], [yytype]],
|
|
||||||
[[YYSTYPE *yyvaluep], [yyvaluep]][]dnl
|
|
||||||
b4_locations_if( [, [[YYLTYPE *yylocationp], [yylocationp]]])[]dnl
|
|
||||||
m4_ifset([b4_parse_param], [, b4_parse_param]))[
|
|
||||||
{
|
|
||||||
YYUSE (yyvaluep);
|
|
||||||
]b4_locations_if([ YYUSE (yylocationp);
|
|
||||||
])dnl
|
|
||||||
b4_parse_param_use[]dnl
|
|
||||||
[
|
|
||||||
if (!yymsg)
|
|
||||||
yymsg = "Deleting";
|
|
||||||
YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
|
|
||||||
|
|
||||||
switch (yytype)
|
|
||||||
{
|
|
||||||
]m4_map([b4_symbol_actions], m4_defn([b4_symbol_destructors]))[
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}]dnl
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
# b4_yy_symbol_print_generate(FUNCTION-DECLARATOR)
|
|
||||||
# ------------------------------------------------
|
|
||||||
# Generate the "yy_symbol_print" function, which declaration is issued using
|
|
||||||
# FUNCTION-DECLARATOR, which may be "b4_c_ansi_function_def" for ISO C
|
|
||||||
# or "b4_c_function_def" for K&R.
|
|
||||||
m4_define_default([b4_yy_symbol_print_generate],
|
|
||||||
[[
|
|
||||||
/*--------------------------------.
|
|
||||||
| Print this symbol on YYOUTPUT. |
|
|
||||||
`--------------------------------*/
|
|
||||||
|
|
||||||
/*ARGSUSED*/
|
|
||||||
]$1([yy_symbol_value_print],
|
|
||||||
[static void],
|
|
||||||
[[FILE *yyoutput], [yyoutput]],
|
|
||||||
[[int yytype], [yytype]],
|
|
||||||
[[YYSTYPE const * const yyvaluep], [yyvaluep]][]dnl
|
|
||||||
b4_locations_if([, [[YYLTYPE const * const yylocationp], [yylocationp]]])[]dnl
|
|
||||||
m4_ifset([b4_parse_param], [, b4_parse_param]))[
|
|
||||||
{
|
|
||||||
if (!yyvaluep)
|
|
||||||
return;
|
|
||||||
]b4_locations_if([ YYUSE (yylocationp);
|
|
||||||
])dnl
|
|
||||||
b4_parse_param_use[]dnl
|
|
||||||
[# ifdef YYPRINT
|
|
||||||
if (yytype < YYNTOKENS)
|
|
||||||
YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
|
|
||||||
# else
|
|
||||||
YYUSE (yyoutput);
|
|
||||||
# endif
|
|
||||||
switch (yytype)
|
|
||||||
{
|
|
||||||
]m4_map([b4_symbol_actions], m4_defn([b4_symbol_printers]))dnl
|
|
||||||
[ default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*--------------------------------.
|
|
||||||
| Print this symbol on YYOUTPUT. |
|
|
||||||
`--------------------------------*/
|
|
||||||
|
|
||||||
]$1([yy_symbol_print],
|
|
||||||
[static void],
|
|
||||||
[[FILE *yyoutput], [yyoutput]],
|
|
||||||
[[int yytype], [yytype]],
|
|
||||||
[[YYSTYPE const * const yyvaluep], [yyvaluep]][]dnl
|
|
||||||
b4_locations_if([, [[YYLTYPE const * const yylocationp], [yylocationp]]])[]dnl
|
|
||||||
m4_ifset([b4_parse_param], [, b4_parse_param]))[
|
|
||||||
{
|
|
||||||
if (yytype < YYNTOKENS)
|
|
||||||
YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
|
|
||||||
else
|
|
||||||
YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
|
|
||||||
|
|
||||||
]b4_locations_if([ YY_LOCATION_PRINT (yyoutput, *yylocationp);
|
|
||||||
YYFPRINTF (yyoutput, ": ");
|
|
||||||
])dnl
|
|
||||||
[ yy_symbol_value_print (yyoutput, yytype, yyvaluep]dnl
|
|
||||||
b4_locations_if([, yylocationp])[]b4_user_args[);
|
|
||||||
YYFPRINTF (yyoutput, ")");
|
|
||||||
}]dnl
|
|
||||||
])
|
|
||||||
-2617
File diff suppressed because it is too large
Load Diff
-380
@@ -1,380 +0,0 @@
|
|||||||
m4_divert(-1) -*- C -*-
|
|
||||||
|
|
||||||
# C++ GLR skeleton for Bison
|
|
||||||
# Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
# 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
|
|
||||||
|
|
||||||
|
|
||||||
# This skeleton produces a C++ class that encapsulates a C glr parser.
|
|
||||||
# This is in order to reduce the maintenance burden. The glr.c
|
|
||||||
# skeleton is clean and pure enough so that there are no real
|
|
||||||
# problems. The C++ interface is the same as that of lalr1.cc. In
|
|
||||||
# fact, glr.c can replace yacc.c without the user noticing any
|
|
||||||
# difference, and similarly for glr.cc replacing lalr1.cc.
|
|
||||||
#
|
|
||||||
# The passing of parse-params
|
|
||||||
#
|
|
||||||
# The additional arguments are stored as members of the parser
|
|
||||||
# object, yyparser. The C routines need to carry yyparser
|
|
||||||
# throughout the C parser; that easy: just let yyparser become an
|
|
||||||
# additional parse-param. But because the C++ skeleton needs to
|
|
||||||
# know the "real" original parse-param, we save them
|
|
||||||
# (b4_parse_param_orig). Note that b4_parse_param is overquoted
|
|
||||||
# (and c.m4 strips one level of quotes). This is a PITA, and
|
|
||||||
# explains why there are so many levels of quotes.
|
|
||||||
#
|
|
||||||
# The locations
|
|
||||||
#
|
|
||||||
# We use location.cc just like lalr1.cc, but because glr.c stores
|
|
||||||
# the locations in a (C++) union, the position and location classes
|
|
||||||
# must not have a constructor. Therefore, contrary to lalr1.cc, we
|
|
||||||
# must not define "b4_location_constructors". As a consequence the
|
|
||||||
# user must initialize the first positions (in particular the
|
|
||||||
# filename member).
|
|
||||||
|
|
||||||
# We require a pure interface using locations.
|
|
||||||
m4_define([b4_locations_flag], [1])
|
|
||||||
m4_define([b4_pure_flag], [1])
|
|
||||||
|
|
||||||
# The header is mandatory.
|
|
||||||
b4_defines_if([],
|
|
||||||
[m4_fatal(b4_skeleton[: using %defines is mandatory])])
|
|
||||||
|
|
||||||
m4_include(b4_pkgdatadir/[c++.m4])
|
|
||||||
m4_include(b4_pkgdatadir/[location.cc])
|
|
||||||
|
|
||||||
|
|
||||||
# Save the parse parameters.
|
|
||||||
m4_define([b4_parse_param_orig], m4_defn([b4_parse_param]))
|
|
||||||
|
|
||||||
|
|
||||||
# b4_yy_symbol_print_generate
|
|
||||||
# ---------------------------
|
|
||||||
# Bypass the default implementation to generate the "yy_symbol_print"
|
|
||||||
# and "yy_symbol_value_print" functions.
|
|
||||||
m4_define([b4_yy_symbol_print_generate],
|
|
||||||
[[
|
|
||||||
/*--------------------.
|
|
||||||
| Print this symbol. |
|
|
||||||
`--------------------*/
|
|
||||||
|
|
||||||
]b4_c_ansi_function_def([yy_symbol_print],
|
|
||||||
[static void],
|
|
||||||
[[FILE *], []],
|
|
||||||
[[int yytype], [yytype]],
|
|
||||||
[[const b4_namespace::b4_parser_class_name::semantic_type *yyvaluep],
|
|
||||||
[yyvaluep]],
|
|
||||||
[[const b4_namespace::b4_parser_class_name::location_type *yylocationp],
|
|
||||||
[yylocationp]],
|
|
||||||
b4_parse_param)[
|
|
||||||
{
|
|
||||||
]b4_parse_param_use[]dnl
|
|
||||||
[ yyparser.yy_symbol_print_ (yytype, yyvaluep]b4_locations_if([, yylocationp])[);
|
|
||||||
}
|
|
||||||
]])
|
|
||||||
|
|
||||||
|
|
||||||
# Declare yyerror.
|
|
||||||
m4_append([b4_post_prologue],
|
|
||||||
[b4_syncline([@oline@], [@ofile@])
|
|
||||||
|
|
||||||
b4_c_ansi_function_decl([yyerror],
|
|
||||||
[static void],
|
|
||||||
[[b4_namespace::b4_parser_class_name::location_type *yylocationp], [yylocationp]],
|
|
||||||
b4_parse_param,
|
|
||||||
[[const char* msg], [msg]])])
|
|
||||||
|
|
||||||
|
|
||||||
# Define yyerror.
|
|
||||||
m4_append([b4_epilogue],
|
|
||||||
[b4_syncline([@oline@], [@ofile@])[
|
|
||||||
/*------------------.
|
|
||||||
| Report an error. |
|
|
||||||
`------------------*/
|
|
||||||
|
|
||||||
]b4_c_ansi_function_def([yyerror],
|
|
||||||
[static void],
|
|
||||||
[[b4_namespace::b4_parser_class_name::location_type *yylocationp], [yylocationp]],
|
|
||||||
b4_parse_param,
|
|
||||||
[[const char* msg], [msg]])[
|
|
||||||
{
|
|
||||||
]b4_parse_param_use[]dnl
|
|
||||||
[ yyparser.error (*yylocationp, msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
namespace ]b4_namespace[
|
|
||||||
{
|
|
||||||
]dnl In this section, the parse param are the original parse_params.
|
|
||||||
m4_pushdef([b4_parse_param], m4_defn([b4_parse_param_orig]))dnl
|
|
||||||
[ /// Build a parser object.
|
|
||||||
]b4_parser_class_name::b4_parser_class_name[ (]b4_parse_param_decl[)]m4_ifset([b4_parse_param], [
|
|
||||||
:])[
|
|
||||||
#if YYDEBUG
|
|
||||||
]m4_ifset([b4_parse_param], [ ], [ :])[yydebug_ (false),
|
|
||||||
yycdebug_ (&std::cerr)]m4_ifset([b4_parse_param], [,])[
|
|
||||||
#endif]b4_parse_param_cons[
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
]b4_parser_class_name::~b4_parser_class_name[ ()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
]b4_parser_class_name[::parse ()
|
|
||||||
{
|
|
||||||
return ::yyparse (*this]b4_user_args[);
|
|
||||||
}
|
|
||||||
|
|
||||||
#if YYDEBUG
|
|
||||||
/*--------------------.
|
|
||||||
| Print this symbol. |
|
|
||||||
`--------------------*/
|
|
||||||
|
|
||||||
inline void
|
|
||||||
]b4_parser_class_name[::yy_symbol_value_print_ (int yytype,
|
|
||||||
const semantic_type* yyvaluep, const location_type* yylocationp)
|
|
||||||
{
|
|
||||||
/* Pacify ``unused variable'' warnings. */
|
|
||||||
YYUSE (yyvaluep);
|
|
||||||
YYUSE (yylocationp);
|
|
||||||
switch (yytype)
|
|
||||||
{
|
|
||||||
]m4_map([b4_symbol_actions], m4_defn([b4_symbol_printers]))dnl
|
|
||||||
[ default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
]b4_parser_class_name[::yy_symbol_print_ (int yytype,
|
|
||||||
const semantic_type* yyvaluep, const location_type* yylocationp)
|
|
||||||
{
|
|
||||||
*yycdebug_ << (yytype < YYNTOKENS ? "token" : "nterm")
|
|
||||||
<< ' ' << yytname[yytype] << " ("
|
|
||||||
<< *yylocationp << ": ";
|
|
||||||
yy_symbol_value_print_ (yytype, yyvaluep, yylocationp);
|
|
||||||
*yycdebug_ << ')';
|
|
||||||
}
|
|
||||||
|
|
||||||
std::ostream&
|
|
||||||
]b4_parser_class_name[::debug_stream () const
|
|
||||||
{
|
|
||||||
return *yycdebug_;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
]b4_parser_class_name[::set_debug_stream (std::ostream& o)
|
|
||||||
{
|
|
||||||
yycdebug_ = &o;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
]b4_parser_class_name[::debug_level_type
|
|
||||||
]b4_parser_class_name[::debug_level () const
|
|
||||||
{
|
|
||||||
return yydebug_;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
]b4_parser_class_name[::set_debug_level (debug_level_type l)
|
|
||||||
{
|
|
||||||
yydebug_ = l;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
]m4_popdef([b4_parse_param])dnl
|
|
||||||
[} // namespace ]b4_namespace[
|
|
||||||
|
|
||||||
]])
|
|
||||||
|
|
||||||
|
|
||||||
# Let glr.c believe that the user arguments include the parser itself.
|
|
||||||
m4_ifset([b4_parse_param],
|
|
||||||
[m4_pushdef([b4_parse_param],
|
|
||||||
m4_dquote([[[b4_namespace::b4_parser_class_name& yyparser], [[yyparser]]],]
|
|
||||||
m4_defn([b4_parse_param])))],
|
|
||||||
[m4_pushdef([b4_parse_param],
|
|
||||||
[[[[b4_namespace::b4_parser_class_name& yyparser], [[yyparser]]]]])
|
|
||||||
])
|
|
||||||
m4_include(b4_pkgdatadir/[glr.c])
|
|
||||||
m4_popdef([b4_parse_param])
|
|
||||||
|
|
||||||
@output @output_header_name@
|
|
||||||
b4_copyright([Skeleton interface for Bison GLR parsers in C++],
|
|
||||||
[2002, 2003, 2004, 2005, 2006])[
|
|
||||||
|
|
||||||
/* C++ GLR parser skeleton written by Akim Demaille. */
|
|
||||||
|
|
||||||
#ifndef PARSER_HEADER_H
|
|
||||||
# define PARSER_HEADER_H
|
|
||||||
|
|
||||||
]m4_ifdef([b4_start_header],
|
|
||||||
[[/* Copy the %start-header blocks. */
|
|
||||||
]b4_user_start_header])[
|
|
||||||
|
|
||||||
#include <string>
|
|
||||||
#include <iostream>
|
|
||||||
|
|
||||||
/* Using locations. */
|
|
||||||
#define YYLSP_NEEDED ]b4_locations_flag[
|
|
||||||
|
|
||||||
namespace ]b4_namespace[
|
|
||||||
{
|
|
||||||
class position;
|
|
||||||
class location;
|
|
||||||
}
|
|
||||||
|
|
||||||
#include "location.hh"
|
|
||||||
|
|
||||||
/* Enabling traces. */
|
|
||||||
#ifndef YYDEBUG
|
|
||||||
# define YYDEBUG ]b4_debug_flag[
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
|
|
||||||
If N is 0, then set CURRENT to the empty location which ends
|
|
||||||
the previous symbol: RHS[0] (always defined). */
|
|
||||||
|
|
||||||
#ifndef YYLLOC_DEFAULT
|
|
||||||
# define YYLLOC_DEFAULT(Current, Rhs, N) \
|
|
||||||
do \
|
|
||||||
if (N) \
|
|
||||||
{ \
|
|
||||||
(Current).begin = YYRHSLOC (Rhs, 1).begin; \
|
|
||||||
(Current).end = YYRHSLOC (Rhs, N).end; \
|
|
||||||
} \
|
|
||||||
else \
|
|
||||||
{ \
|
|
||||||
(Current).begin = (Current).end = YYRHSLOC (Rhs, 0).end; \
|
|
||||||
} \
|
|
||||||
while (/*CONSTCOND*/ 0)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace ]b4_namespace[
|
|
||||||
{
|
|
||||||
/// A Bison parser.
|
|
||||||
class ]b4_parser_class_name[
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
/// Symbol semantic values.
|
|
||||||
#ifndef YYSTYPE
|
|
||||||
]m4_ifdef([b4_stype],
|
|
||||||
[ union semantic_type
|
|
||||||
b4_user_stype
|
|
||||||
;],
|
|
||||||
[m4_if(b4_tag_seen_flag, 0,
|
|
||||||
[[ typedef int semantic_type;]],
|
|
||||||
[[ typedef YYSTYPE semantic_type;]])])[
|
|
||||||
#else
|
|
||||||
typedef YYSTYPE semantic_type;
|
|
||||||
#endif
|
|
||||||
/// Symbol locations.
|
|
||||||
typedef ]b4_location_type[ location_type;
|
|
||||||
/// Tokens.
|
|
||||||
struct token
|
|
||||||
{
|
|
||||||
]b4_token_enums(b4_tokens)[
|
|
||||||
};
|
|
||||||
/// Token type.
|
|
||||||
typedef token::yytokentype token_type;
|
|
||||||
|
|
||||||
/// Build a parser object.
|
|
||||||
]b4_parser_class_name[ (]b4_parse_param_decl[);
|
|
||||||
virtual ~]b4_parser_class_name[ ();
|
|
||||||
|
|
||||||
/// Parse.
|
|
||||||
/// \returns 0 iff parsing succeeded.
|
|
||||||
virtual int parse ();
|
|
||||||
|
|
||||||
/// The current debugging stream.
|
|
||||||
std::ostream& debug_stream () const;
|
|
||||||
/// Set the current debugging stream.
|
|
||||||
void set_debug_stream (std::ostream &);
|
|
||||||
|
|
||||||
/// Type for debugging levels.
|
|
||||||
typedef int debug_level_type;
|
|
||||||
/// The current debugging level.
|
|
||||||
debug_level_type debug_level () const;
|
|
||||||
/// Set the current debugging level.
|
|
||||||
void set_debug_level (debug_level_type l);
|
|
||||||
|
|
||||||
private:
|
|
||||||
|
|
||||||
public:
|
|
||||||
/// Report a syntax error.
|
|
||||||
/// \param loc where the syntax error is found.
|
|
||||||
/// \param msg a description of the syntax error.
|
|
||||||
virtual void error (const location_type& loc, const std::string& msg);
|
|
||||||
private:
|
|
||||||
|
|
||||||
#if YYDEBUG
|
|
||||||
public:
|
|
||||||
/// \brief Report a symbol value on the debug stream.
|
|
||||||
/// \param yytype The token type.
|
|
||||||
/// \param yyvaluep Its semantic value.
|
|
||||||
/// \param yylocationp Its location.
|
|
||||||
virtual void yy_symbol_value_print_ (int yytype,
|
|
||||||
const semantic_type* yyvaluep,
|
|
||||||
const location_type* yylocationp);
|
|
||||||
/// \brief Report a symbol on the debug stream.
|
|
||||||
/// \param yytype The token type.
|
|
||||||
/// \param yyvaluep Its semantic value.
|
|
||||||
/// \param yylocationp Its location.
|
|
||||||
virtual void yy_symbol_print_ (int yytype,
|
|
||||||
const semantic_type* yyvaluep,
|
|
||||||
const location_type* yylocationp);
|
|
||||||
private:
|
|
||||||
/* Debugging. */
|
|
||||||
int yydebug_;
|
|
||||||
std::ostream* yycdebug_;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/// \brief Reclaim the memory associated to a symbol.
|
|
||||||
/// \param yymsg Why this token is reclaimed.
|
|
||||||
/// \param yytype The symbol type.
|
|
||||||
/// \param yyvaluep Its semantic value.
|
|
||||||
/// \param yylocationp Its location.
|
|
||||||
inline void yydestruct_ (const char* yymsg,
|
|
||||||
int yytype,
|
|
||||||
semantic_type* yyvaluep,
|
|
||||||
location_type* yylocationp);
|
|
||||||
|
|
||||||
]b4_parse_param_vars[
|
|
||||||
};
|
|
||||||
|
|
||||||
]dnl Redirections for glr.c.
|
|
||||||
m4_ifset([b4_global_tokens_and_yystype],
|
|
||||||
[b4_token_defines(b4_tokens)])
|
|
||||||
[
|
|
||||||
#ifndef YYSTYPE
|
|
||||||
# define YYSTYPE ]b4_namespace[::]b4_parser_class_name[::semantic_type
|
|
||||||
#endif
|
|
||||||
#ifndef YYLTYPE
|
|
||||||
# define YYLTYPE ]b4_namespace[::]b4_parser_class_name[::location_type
|
|
||||||
#endif
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
]m4_ifdef([b4_end_header],
|
|
||||||
[[/* Copy the %end-header blocks. */
|
|
||||||
]b4_end_header])[]dnl
|
|
||||||
|
|
||||||
[#endif /* ! defined PARSER_HEADER_H */]
|
|
||||||
-1154
File diff suppressed because it is too large
Load Diff
@@ -1,280 +0,0 @@
|
|||||||
m4_divert(-1)
|
|
||||||
|
|
||||||
# C++ skeleton for Bison
|
|
||||||
|
|
||||||
# Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
# 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
|
|
||||||
|
|
||||||
# We do want M4 expansion after # for CPP macros.
|
|
||||||
m4_changecom()
|
|
||||||
m4_divert(0)dnl
|
|
||||||
@output b4_dir_prefix[]position.hh
|
|
||||||
b4_copyright([Positions for Bison parsers in C++],
|
|
||||||
[2002, 2003, 2004, 2005, 2006])[
|
|
||||||
|
|
||||||
/**
|
|
||||||
** \file position.hh
|
|
||||||
** Define the ]b4_namespace[::position class.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef BISON_POSITION_HH
|
|
||||||
# define BISON_POSITION_HH
|
|
||||||
|
|
||||||
# include <iostream>
|
|
||||||
# include <string>
|
|
||||||
# include <algorithm>
|
|
||||||
|
|
||||||
namespace ]b4_namespace[
|
|
||||||
{
|
|
||||||
/// Abstract a position.
|
|
||||||
class position
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
]m4_ifdef([b4_location_constructors], [
|
|
||||||
/// Construct a position.
|
|
||||||
position ()
|
|
||||||
: filename (0), line (]b4_location_initial_line[), column (]b4_location_initial_column[)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
])[
|
|
||||||
/// Initialization.
|
|
||||||
inline void initialize (]b4_filename_type[* fn)
|
|
||||||
{
|
|
||||||
filename = fn;
|
|
||||||
line = ]b4_location_initial_line[;
|
|
||||||
column = ]b4_location_initial_column[;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** \name Line and Column related manipulators
|
|
||||||
** \{ */
|
|
||||||
public:
|
|
||||||
/// (line related) Advance to the COUNT next lines.
|
|
||||||
inline void lines (int count = 1)
|
|
||||||
{
|
|
||||||
column = ]b4_location_initial_column[;
|
|
||||||
line += count;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// (column related) Advance to the COUNT next columns.
|
|
||||||
inline void columns (int count = 1)
|
|
||||||
{
|
|
||||||
column = std::max (]b4_location_initial_column[u, column + count);
|
|
||||||
}
|
|
||||||
/** \} */
|
|
||||||
|
|
||||||
public:
|
|
||||||
/// File name to which this position refers.
|
|
||||||
]b4_filename_type[* filename;
|
|
||||||
/// Current line number.
|
|
||||||
unsigned int line;
|
|
||||||
/// Current column number.
|
|
||||||
unsigned int column;
|
|
||||||
};
|
|
||||||
|
|
||||||
/// Add and assign a position.
|
|
||||||
inline const position&
|
|
||||||
operator+= (position& res, const int width)
|
|
||||||
{
|
|
||||||
res.columns (width);
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Add two position objects.
|
|
||||||
inline const position
|
|
||||||
operator+ (const position& begin, const int width)
|
|
||||||
{
|
|
||||||
position res = begin;
|
|
||||||
return res += width;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Add and assign a position.
|
|
||||||
inline const position&
|
|
||||||
operator-= (position& res, const int width)
|
|
||||||
{
|
|
||||||
return res += -width;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Add two position objects.
|
|
||||||
inline const position
|
|
||||||
operator- (const position& begin, const int width)
|
|
||||||
{
|
|
||||||
return begin + -width;
|
|
||||||
}
|
|
||||||
]m4_if(b4_define_location_comparison, [1], [[
|
|
||||||
/// Compare two position objects.
|
|
||||||
inline bool
|
|
||||||
operator== (const position& pos1, const position& pos2)
|
|
||||||
{
|
|
||||||
return
|
|
||||||
(pos1.filename == pos2.filename
|
|
||||||
|| pos1.filename && pos2.filename && *pos1.filename == *pos2.filename)
|
|
||||||
&& pos1.line == pos2.line && pos1.column == pos2.column;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Compare two position objects.
|
|
||||||
inline bool
|
|
||||||
operator!= (const position& pos1, const position& pos2)
|
|
||||||
{
|
|
||||||
return !(pos1 == pos2);
|
|
||||||
}
|
|
||||||
]])[
|
|
||||||
/** \brief Intercept output stream redirection.
|
|
||||||
** \param ostr the destination output stream
|
|
||||||
** \param pos a reference to the position to redirect
|
|
||||||
*/
|
|
||||||
inline std::ostream&
|
|
||||||
operator<< (std::ostream& ostr, const position& pos)
|
|
||||||
{
|
|
||||||
if (pos.filename)
|
|
||||||
ostr << *pos.filename << ':';
|
|
||||||
return ostr << pos.line << '.' << pos.column;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
#endif // not BISON_POSITION_HH]
|
|
||||||
@output b4_dir_prefix[]location.hh
|
|
||||||
b4_copyright([Locations for Bison parsers in C++],
|
|
||||||
[2002, 2003, 2004, 2005, 2006])[
|
|
||||||
|
|
||||||
/**
|
|
||||||
** \file location.hh
|
|
||||||
** Define the ]b4_namespace[::location class.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef BISON_LOCATION_HH
|
|
||||||
# define BISON_LOCATION_HH
|
|
||||||
|
|
||||||
# include <iostream>
|
|
||||||
# include <string>
|
|
||||||
# include "position.hh"
|
|
||||||
|
|
||||||
namespace ]b4_namespace[
|
|
||||||
{
|
|
||||||
|
|
||||||
/// Abstract a location.
|
|
||||||
class location
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
]m4_ifdef([b4_location_constructors], [
|
|
||||||
/// Construct a location.
|
|
||||||
location ()
|
|
||||||
: begin (), end ()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
])[
|
|
||||||
/// Initialization.
|
|
||||||
inline void initialize (]b4_filename_type[* fn)
|
|
||||||
{
|
|
||||||
begin.initialize (fn);
|
|
||||||
end = begin;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** \name Line and Column related manipulators
|
|
||||||
** \{ */
|
|
||||||
public:
|
|
||||||
/// Reset initial location to final location.
|
|
||||||
inline void step ()
|
|
||||||
{
|
|
||||||
begin = end;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Extend the current location to the COUNT next columns.
|
|
||||||
inline void columns (unsigned int count = 1)
|
|
||||||
{
|
|
||||||
end += count;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Extend the current location to the COUNT next lines.
|
|
||||||
inline void lines (unsigned int count = 1)
|
|
||||||
{
|
|
||||||
end.lines (count);
|
|
||||||
}
|
|
||||||
/** \} */
|
|
||||||
|
|
||||||
|
|
||||||
public:
|
|
||||||
/// Beginning of the located region.
|
|
||||||
position begin;
|
|
||||||
/// End of the located region.
|
|
||||||
position end;
|
|
||||||
};
|
|
||||||
|
|
||||||
/// Join two location objects to create a location.
|
|
||||||
inline const location operator+ (const location& begin, const location& end)
|
|
||||||
{
|
|
||||||
location res = begin;
|
|
||||||
res.end = end.end;
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Add two location objects.
|
|
||||||
inline const location operator+ (const location& begin, unsigned int width)
|
|
||||||
{
|
|
||||||
location res = begin;
|
|
||||||
res.columns (width);
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Add and assign a location.
|
|
||||||
inline location& operator+= (location& res, unsigned int width)
|
|
||||||
{
|
|
||||||
res.columns (width);
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
]m4_if(b4_define_location_comparison, [1], [[
|
|
||||||
/// Compare two location objects.
|
|
||||||
inline bool
|
|
||||||
operator== (const location& loc1, const location& loc2)
|
|
||||||
{
|
|
||||||
return loc1.begin == loc2.begin && loc1.end == loc2.end;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Compare two location objects.
|
|
||||||
inline bool
|
|
||||||
operator!= (const location& loc1, const location& loc2)
|
|
||||||
{
|
|
||||||
return !(loc1 == loc2);
|
|
||||||
}
|
|
||||||
]])[
|
|
||||||
/** \brief Intercept output stream redirection.
|
|
||||||
** \param ostr the destination output stream
|
|
||||||
** \param loc a reference to the location to redirect
|
|
||||||
**
|
|
||||||
** Avoid duplicate information.
|
|
||||||
*/
|
|
||||||
inline std::ostream& operator<< (std::ostream& ostr, const location& loc)
|
|
||||||
{
|
|
||||||
position last = loc.end - 1;
|
|
||||||
ostr << loc.begin;
|
|
||||||
if (last.filename
|
|
||||||
&& (!loc.begin.filename
|
|
||||||
|| *loc.begin.filename != *last.filename))
|
|
||||||
ostr << '-' << last;
|
|
||||||
else if (loc.begin.line != last.line)
|
|
||||||
ostr << '-' << last.line << '.' << last.column;
|
|
||||||
else if (loc.begin.column != last.column)
|
|
||||||
ostr << '-' << last.column;
|
|
||||||
return ostr;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif // not BISON_LOCATION_HH]
|
|
||||||
m4_divert(-1)
|
|
||||||
m4_changecom([#])
|
|
||||||
File diff suppressed because it is too large
Load Diff
-1535
File diff suppressed because it is too large
Load Diff
@@ -1,38 +0,0 @@
|
|||||||
# DJGPP Maintainer's Makefile -*-Makefile-*-
|
|
||||||
# Requires GNU sed
|
|
||||||
|
|
||||||
## Copyright (C) 2005, 2006 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
## 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, 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.
|
|
||||||
|
|
||||||
top_srcdir = ..
|
|
||||||
srcdir = .
|
|
||||||
|
|
||||||
SHELL = /bin/sh
|
|
||||||
|
|
||||||
all: README
|
|
||||||
|
|
||||||
README: README.in $(top_srcdir)/configure
|
|
||||||
PACKAGE=`grep "^[ ]*PACKAGE=" $(top_srcdir)/configure | sed -e 's/^[ ]*PACKAGE=//' -e s/[\"\']//g`; \
|
|
||||||
VERSION=`grep "^[ ]*VERSION=" $(top_srcdir)/configure | sed -e 's/^[ ]*VERSION=//' -e s/[\"\']//g`; \
|
|
||||||
package_version=`echo "$${VERSION}" | sed 's/\.//g'`; \
|
|
||||||
tree_version=`echo "$${VERSION}" | sed 's/\.//2g'`; \
|
|
||||||
sed \
|
|
||||||
-e "s/@V@/$${PACKAGE}-$${VERSION}/g" \
|
|
||||||
-e "s/@VERSION@/$${VERSION}/g" \
|
|
||||||
-e "s/@PACKAGE_VERSION@/$$package_version/g" \
|
|
||||||
-e "s/@TREE_VERSION@/$$tree_version/g" \
|
|
||||||
$(srcdir)/README.in > t-$@
|
|
||||||
mv t-$@ $@
|
|
||||||
-194
@@ -1,194 +0,0 @@
|
|||||||
This is a port of GNU Bison @VERSION@ to MSDOS/DJGPP.
|
|
||||||
|
|
||||||
Copyright (C) 2005, 2006 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
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, 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.
|
|
||||||
|
|
||||||
|
|
||||||
1.: DJGPP specific changes.
|
|
||||||
=======================
|
|
||||||
|
|
||||||
The DJGPP port of Bison offers LFN and SFN support depending on which
|
|
||||||
OS it is running. If LFN support is available or not is determinated at
|
|
||||||
run time. If LFN support is available (DOS session under Win9X, Win2K,
|
|
||||||
WinXP, etc.) the standard posix file name extensions will be used.
|
|
||||||
These are: y.tab.c, y.tab.c++, y.tab.h, y.output, etc. If only SFN
|
|
||||||
support is available (plain DOS), then the standard MSDOS short file
|
|
||||||
names will be used. These are: y_tab.c, y_tab.h, y.out, etc.
|
|
||||||
It should be noticed that this bison version needs the m4 program as
|
|
||||||
back end to generate the parser file (y.tab.c etc.) from the skeleton
|
|
||||||
files. This implies that m4 must always be installed to get bison
|
|
||||||
working. m4 will use a couple of m4 scripts that will be installed in
|
|
||||||
/dev/env/DJDIR/share/bison and shall not be removed.
|
|
||||||
It should also be noticed that the skeleton files bison.simple and
|
|
||||||
bison.hairy are no longer supported. This applies also to the environ-
|
|
||||||
ment variables BISON_HAIRY and BISON_SIMPLE. Those variables are *no*
|
|
||||||
longer honored at all.
|
|
||||||
The kind of skeleton file bison.hairy is no longer supported at all.
|
|
||||||
The skeleton file bison.simple is now called yacc.c and is an m4 script.
|
|
||||||
The other two skeleton files supported by this bison version are glr.c
|
|
||||||
and lalr1.cc. The first one is a generalized LR C parser based on
|
|
||||||
Bison's LALR(1) tables and the second one is a experimental C++ parser
|
|
||||||
class.
|
|
||||||
As has been told before, bison uses m4 to generate the parser file.
|
|
||||||
This is done by forking and using pipes for the IPC. MSDOS does not
|
|
||||||
support this functionality so this has been reproduced in the usual
|
|
||||||
way by redirecting stdin and stdout of bison and m4 to temporary files
|
|
||||||
and processing these files in sequence. All the changes to the sources
|
|
||||||
are documented in the djgpp/diffs file.
|
|
||||||
|
|
||||||
Please **read** the docs.
|
|
||||||
|
|
||||||
|
|
||||||
2.: Installing the binary package.
|
|
||||||
==============================
|
|
||||||
|
|
||||||
2.1.: Copy the binary distribution into the top DJGPP installation directory,
|
|
||||||
just unzip it preserving the directory structure running *ONE* of the
|
|
||||||
following commands:
|
|
||||||
unzip32 bsn@[email protected] or
|
|
||||||
djtarx bsn@[email protected] or
|
|
||||||
pkunzip -d bsn@[email protected]
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
3.: Building the binaries from sources.
|
|
||||||
===================================
|
|
||||||
|
|
||||||
3.1.: Create a temporary directory and copy the source package into the
|
|
||||||
directory. If you download the source distribution from one of the
|
|
||||||
DJGPP sites, just unzip it preserving the directory structure
|
|
||||||
running *ONE* of the following commands:
|
|
||||||
unzip32 bsn@[email protected] or
|
|
||||||
djtarx bsn@[email protected] or
|
|
||||||
pkunzip -d bsn@[email protected]
|
|
||||||
and proceed to the paragraph 3.3, below.
|
|
||||||
|
|
||||||
3.2.: Source distributions downloaded from one of the GNU FTP sites need
|
|
||||||
some more work to unpack, if LFN support is not available. If LFN is
|
|
||||||
available then you can extract the source files from the archive with
|
|
||||||
any unzip program and proceed to the paragraph 3.3, below. Any file
|
|
||||||
name issue will be handled by the the DJGPP configuration files.
|
|
||||||
To unpack the source distribution on SFN systems, first, you MUST use
|
|
||||||
the `djunpack' batch file to unzip the package. That is because some
|
|
||||||
file names in the official distributions need to be changed to avoid
|
|
||||||
problems on the various platforms supported by DJGPP.
|
|
||||||
`djunpack' invokes the `djtar' program (that is part of the basic DJGPP
|
|
||||||
development kit) to rename these files on the fly given a file with
|
|
||||||
name mappings; the distribution includes a file `djgpp/fnchange.lst'
|
|
||||||
with the necessary mappings. So you need first to retrieve that batch
|
|
||||||
file, and then invoke it to unpack the distribution. Here's how:
|
|
||||||
|
|
||||||
djtar -x -p -o bison-@VERSION@/djgpp/djunpack.bat bison-@[email protected] > djunpack.bat
|
|
||||||
djunpack bison-@[email protected]
|
|
||||||
|
|
||||||
(The name of the distribution archive and the leading directory of the
|
|
||||||
path to `djunpack.bat' in the distribution will be different for
|
|
||||||
versions of Bison other than @VERSION@.)
|
|
||||||
|
|
||||||
If the argument to `djunpack.bat' include leading directories, it MUST
|
|
||||||
be given with the DOS-style backslashes; Unix-style forward slashes
|
|
||||||
will NOT work.
|
|
||||||
|
|
||||||
If the distribution comes as a .tar.bz2 archive, and your version of
|
|
||||||
`djtar' doesn't support bzip2 decompression, you need to unpack it as
|
|
||||||
follows:
|
|
||||||
|
|
||||||
bnzip2 bison-@[email protected]
|
|
||||||
djtar -x -p -o bison-@VERSION@/djgpp/djunpack.bat bison-@[email protected] > djunpack.bat
|
|
||||||
djunpack bison-@[email protected]
|
|
||||||
|
|
||||||
3.3.: To build the binaries you will need the following binary packages:
|
|
||||||
djdev203.zip (or a later but NOT a prior version)
|
|
||||||
bsh204b.zip (or a later but NOT a prior version)
|
|
||||||
gcc410b.zip, gpp410b.zip, bnu2161b.zip, mak3791b.zip,
|
|
||||||
fil40b.zip, shl20jb.zip, txt20b.zip,
|
|
||||||
txi48b.zip, grep24b.zip, sed415b.zip,
|
|
||||||
m4-144b.zip.
|
|
||||||
|
|
||||||
If you want to run the check you will need also:
|
|
||||||
dif287b.zip
|
|
||||||
|
|
||||||
All this packages can be found in the v2gnu directory of any
|
|
||||||
ftp.delorie.com mirror.
|
|
||||||
You will need bsh204b.zip or later and *NOT* a prior version or
|
|
||||||
the build will fail. The same applies to djdev203.zip. Please note
|
|
||||||
that Bison requires m4-144b.zip or later to work properly. All the
|
|
||||||
other packages are the ones I have used to build the binaries
|
|
||||||
from this source. Previuos versions of this packages may do the
|
|
||||||
job as well but I have not tested this.
|
|
||||||
|
|
||||||
3.4.: If for some reason you want to reconfigure the package cd into the top
|
|
||||||
srcdir (bison-@TREE_VERSION@) and run the following commands:
|
|
||||||
del djgpp\config.cache
|
|
||||||
make clean
|
|
||||||
djgpp\config
|
|
||||||
|
|
||||||
Please note that you *MUST* delete the config.cache file in the djgpp
|
|
||||||
subdir or you will not really reconfigure the sources because the
|
|
||||||
configuration informations will be read from the cache file instead
|
|
||||||
of being newly computed.
|
|
||||||
To build the programs in a directory other than where the sources are,
|
|
||||||
you must add the parameter that specifies the source directory,
|
|
||||||
e.g:
|
|
||||||
x:\src\gnu\bison-@TREE_VERSION@\djgpp\config x:/src/gnu/bison-@TREE_VERSION@
|
|
||||||
|
|
||||||
Lets assume you want to build the binaries in a directory placed on a
|
|
||||||
different drive (z:\build in this case) from where the sources are,
|
|
||||||
then you will run the following commands:
|
|
||||||
z:
|
|
||||||
md \build
|
|
||||||
cd \build
|
|
||||||
x:\src\gnu\bison-@TREE_VERSION@\djgpp\config x:/src/gnu/bison-@TREE_VERSION@
|
|
||||||
|
|
||||||
The order of the options and the srcdir option does not matter. You
|
|
||||||
*MUST* use forward slashes to specify the source directory.
|
|
||||||
|
|
||||||
The batch file will set same environment variables, make MSDOS specific
|
|
||||||
modifications to the Makefile.in's and supply all other needed options
|
|
||||||
to the configure script.
|
|
||||||
|
|
||||||
3.5.: To compile the package run from the top srcdir the command:
|
|
||||||
make
|
|
||||||
|
|
||||||
3.6.: Now you can run the tests if you like. From the top srcdir run the
|
|
||||||
command:
|
|
||||||
make check
|
|
||||||
|
|
||||||
No test should fail but the tests #131 (Doxygen Public Documentation)
|
|
||||||
and #132 (Doxygen Private Documentation) will be skipped. Please note
|
|
||||||
that the testsuite only works with LFN available. On plain DOS, most
|
|
||||||
of the tests will fail due to invalid DOS names.
|
|
||||||
|
|
||||||
3.7.: To install the binaries, header, library, catalogs, and info docs
|
|
||||||
run the following command from the top srcdir:
|
|
||||||
make install
|
|
||||||
|
|
||||||
This will install the products into your DJGPP installation tree given
|
|
||||||
by the default prefix "/dev/env/DJDIR". If you prefer to install them
|
|
||||||
into some other directory you will have to set prefix to the appropiate
|
|
||||||
value:
|
|
||||||
make install prefix=z:/some/other/place
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Send GNU bison specific bug reports to <[email protected]>.
|
|
||||||
Send suggestions and bug reports concerning the DJGPP port to
|
|
||||||
comp.os.msdos.djgpp or <[email protected]>.
|
|
||||||
|
|
||||||
|
|
||||||
Enjoy.
|
|
||||||
|
|
||||||
Guerrero, Juan Manuel <[email protected]>
|
|
||||||
@@ -1,480 +0,0 @@
|
|||||||
@echo off
|
|
||||||
Rem Configure Bison for DJGPP.
|
|
||||||
|
|
||||||
Rem WARNING WARNING WARNING: This file needs to have DOS CRLF end-of-line
|
|
||||||
Rem format, or else stock DOS/Windows shells will refuse to run it.
|
|
||||||
|
|
||||||
Rem Copyright (C) 2005, 2006 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
Rem This program is free software; you can redistribute it and/or modify
|
|
||||||
Rem it under the terms of the GNU General Public License as published by
|
|
||||||
Rem the Free Software Foundation; either version 2, or (at your option)
|
|
||||||
Rem any later version.
|
|
||||||
|
|
||||||
Rem This program is distributed in the hope that it will be useful,
|
|
||||||
Rem but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
Rem MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
Rem GNU General Public License for more details.
|
|
||||||
|
|
||||||
Rem You should have received a copy of the GNU General Public License
|
|
||||||
Rem along with this program; if not, write to the Free Software Foundation,
|
|
||||||
Rem Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
||||||
|
|
||||||
echo Configuring Bison for DJGPP v2.x...
|
|
||||||
|
|
||||||
Rem The SmallEnv tests protect against fixed and too small size
|
|
||||||
Rem of the environment in stock DOS shell.
|
|
||||||
|
|
||||||
Rem Find out if NLS is wanted or not,
|
|
||||||
Rem if dependency-tracking is wanted or not,
|
|
||||||
Rem if caching is wanted or not
|
|
||||||
Rem and where the sources are.
|
|
||||||
Rem We always default to NLS support,
|
|
||||||
Rem no dependency tracking
|
|
||||||
Rem and to in place configuration.
|
|
||||||
set ARGS=
|
|
||||||
set NLS=enabled
|
|
||||||
if not "%NLS%" == "enabled" goto SmallEnv
|
|
||||||
set CACHING=enabled
|
|
||||||
if not "%CACHING%" == "enabled" goto SmallEnv
|
|
||||||
set DEPENDENCY_TRACKING=disabled
|
|
||||||
if not "%DEPENDENCY_TRACKING%" == "disabled" goto SmallEnv
|
|
||||||
set LIBICONV_PREFIX=disabled
|
|
||||||
if not "%LIBICONV_PREFIX%" == "disabled" goto SmallEnv
|
|
||||||
set LIBINTL_PREFIX=disabled
|
|
||||||
if not "%LIBINTL_PREFIX%" == "disabled" goto SmallEnv
|
|
||||||
set HTML=enabled
|
|
||||||
if not "%HTML%" == "enabled" goto SmallEnv
|
|
||||||
set XSRC=.
|
|
||||||
if not "%XSRC%" == "." goto SmallEnv
|
|
||||||
|
|
||||||
Rem Loop over all arguments.
|
|
||||||
Rem Special arguments are: NLS, XSRC, CACHE, STATIC_LIBS, LIBICONV_PREFIX, LIBINTL_PREFIX and DEPS.
|
|
||||||
Rem All other arguments are stored into ARGS.
|
|
||||||
:ArgLoop
|
|
||||||
if "%1" == "nls" goto NextArgument
|
|
||||||
if "%1" == "NLS" goto NextArgument
|
|
||||||
if "%1" == "no-nls" goto NoNLS
|
|
||||||
if "%1" == "no-NLS" goto NoNLS
|
|
||||||
if "%1" == "NO-NLS" goto NoNLS
|
|
||||||
goto CachingOption
|
|
||||||
:NoNLS
|
|
||||||
if "%1" == "no-nls" set NLS=disabled
|
|
||||||
if "%1" == "no-NLS" set NLS=disabled
|
|
||||||
if "%1" == "NO-NLS" set NLS=disabled
|
|
||||||
if not "%NLS%" == "disabled" goto SmallEnv
|
|
||||||
goto NextArgument
|
|
||||||
:CachingOption
|
|
||||||
if "%1" == "cache" goto NextArgument
|
|
||||||
if "%1" == "CACHE" goto NextArgument
|
|
||||||
if "%1" == "no-cache" goto NoCaching
|
|
||||||
if "%1" == "no-CACHE" goto NoCaching
|
|
||||||
if "%1" == "NO-CACHE" goto NoCaching
|
|
||||||
goto DependencyOption
|
|
||||||
:NoCaching
|
|
||||||
if "%1" == "no-cache" set CACHING=disabled
|
|
||||||
if "%1" == "no-CACHE" set CACHING=disabled
|
|
||||||
if "%1" == "NO-CACHE" set CACHING=disabled
|
|
||||||
if not "%CACHING%" == "disabled" goto SmallEnv
|
|
||||||
goto NextArgument
|
|
||||||
:DependencyOption
|
|
||||||
if "%1" == "no-dep" goto NextArgument
|
|
||||||
if "%1" == "no-DEP" goto NextArgument
|
|
||||||
if "%1" == "NO-DEP" goto NextArgument
|
|
||||||
if "%1" == "dep" goto DependecyTraking
|
|
||||||
if "%1" == "DEP" goto DependecyTraking
|
|
||||||
goto LibiconvPrefixOption
|
|
||||||
:DependecyTraking
|
|
||||||
if "%1" == "dep" set DEPENDENCY_TRACKING=enabled
|
|
||||||
if "%1" == "DEP" set DEPENDENCY_TRACKING=enabled
|
|
||||||
if not "%DEPENDENCY_TRACKING%" == "enabled" goto SmallEnv
|
|
||||||
goto NextArgument
|
|
||||||
:LibiconvPrefixOption
|
|
||||||
if "%1" == "no-libiconvprefix" goto NextArgument
|
|
||||||
if "%1" == "no-LIBICONVPREFIX" goto NextArgument
|
|
||||||
if "%1" == "NO-LIBICONVPREFIX" goto NextArgument
|
|
||||||
if "%1" == "libiconvprefix" goto WithLibiconvPrefix
|
|
||||||
if "%1" == "LIBICONVPREFIX" goto WithLibiconvPrefix
|
|
||||||
goto LibintlPrefixOption
|
|
||||||
:WithLibiconvPrefix
|
|
||||||
if "%1" == "libiconvprefix" set LIBICONV_PREFIX=enabled
|
|
||||||
if "%1" == "LIBICONVPREFIX" set LIBICONV_PREFIX=enabled
|
|
||||||
if not "%LIBICONV_PREFIX%" == "enabled" goto SmallEnv
|
|
||||||
goto NextArgument
|
|
||||||
:LibintlPrefixOption
|
|
||||||
if "%1" == "no-libiconvprefix" goto NextArgument
|
|
||||||
if "%1" == "no-LIBICONVPREFIX" goto NextArgument
|
|
||||||
if "%1" == "NO-LIBICONVPREFIX" goto NextArgument
|
|
||||||
if "%1" == "libintlprefix" goto _WithLibintlPrefix
|
|
||||||
if "%1" == "LIBINTLPREFIX" goto _WithLibintlPrefix
|
|
||||||
goto HTMLOption
|
|
||||||
:_WithLibintlPrefix
|
|
||||||
if "%1" == "libintlprefix" set LIBINTL_PREFIX=enabled
|
|
||||||
if "%1" == "LIBINTLPREFIX" set LIBINTL_PREFIX=enabled
|
|
||||||
if not "%LIBINTL_PREFIX%" == "enabled" goto SmallEnv
|
|
||||||
:HTMLOption
|
|
||||||
if "%1" == "withhtml" goto NextArgument
|
|
||||||
if "%1" == "withHTML" goto NextArgument
|
|
||||||
if "%1" == "WITHHTML" goto NextArgument
|
|
||||||
if "%1" == "withouthtml" goto _WithoutHTML
|
|
||||||
if "%1" == "withoutHTML" goto _WithoutHTML
|
|
||||||
if "%1" == "WITHOUTHTML" goto _WithoutHTML
|
|
||||||
goto SrcDirOption
|
|
||||||
:_WithoutHTML
|
|
||||||
if "%1" == "withouthtml" set HTML=disabled
|
|
||||||
if "%1" == "withoutHTML" set HTML=disabled
|
|
||||||
if "%1" == "WITHOUTHTML" set HTML=disabled
|
|
||||||
if not "%HTML%" == "disabled" goto SmallEnv
|
|
||||||
goto NextArgument
|
|
||||||
:SrcDirOption
|
|
||||||
echo %1 | grep -q "/"
|
|
||||||
if errorlevel 1 goto CollectArgument
|
|
||||||
set XSRC=%1
|
|
||||||
if not "%XSRC%" == "%1" goto SmallEnv
|
|
||||||
goto NextArgument
|
|
||||||
:CollectArgument
|
|
||||||
set _ARGS=%ARGS% %1
|
|
||||||
if not "%_ARGS%" == "%ARGS% %1" if not "%_ARGS%" == "%ARGS%%1" goto SmallEnv
|
|
||||||
echo %_ARGS% | grep -q "[^ ]"
|
|
||||||
if not errorlevel 0 set ARGS=%_ARGS%
|
|
||||||
set _ARGS=
|
|
||||||
:NextArgument
|
|
||||||
shift
|
|
||||||
if not "%1" == "" goto ArgLoop
|
|
||||||
|
|
||||||
Rem Create an arguments file for the configure script.
|
|
||||||
echo --srcdir=%XSRC% > arguments
|
|
||||||
if "%CACHING%" == "enabled" echo --cache-file=%XSRC%/djgpp/config.cache >> arguments
|
|
||||||
if "%DEPENDENCY_TRACKING%" == "enabled" echo --enable-dependency-tracking >> arguments
|
|
||||||
if "%DEPENDENCY_TRACKING%" == "disabled" echo --disable-dependency-tracking >> arguments
|
|
||||||
if "%LIBICONV_PREFIX%" == "enabled" echo --with-libiconv-prefix >> arguments
|
|
||||||
if "%LIBICONV_PREFIX%" == "disabled" echo --without-libiconv-prefix >> arguments
|
|
||||||
if "%LIBINTL_PREFIX%" == "enabled" echo --with-libintl-prefix >> arguments
|
|
||||||
if "%LIBINTL_PREFIX%" == "disabled" echo --without-libintl-prefix >> arguments
|
|
||||||
if "%HTML%" == "enabled" echo --enable-html >> arguments
|
|
||||||
if "%HTML%" == "disabled" echo --disable-html >> arguments
|
|
||||||
if not "%ARGS%" == "" echo %ARGS% >> arguments
|
|
||||||
set ARGS=
|
|
||||||
set CACHING=
|
|
||||||
set DEPENDENCY_TRACKING=
|
|
||||||
set LIBICONV_PREFIX=
|
|
||||||
set LIBINTL_PREFIX=
|
|
||||||
set HTML=
|
|
||||||
|
|
||||||
if "%XSRC%" == "." goto InPlace
|
|
||||||
|
|
||||||
:NotInPlace
|
|
||||||
redir -e /dev/null update %XSRC%/configure.orig ./configure
|
|
||||||
test -f ./configure
|
|
||||||
if errorlevel 1 update %XSRC%/configure ./configure
|
|
||||||
|
|
||||||
:InPlace
|
|
||||||
Rem Update configuration files
|
|
||||||
echo Updating configuration scripts...
|
|
||||||
test -f ./configure.orig
|
|
||||||
if errorlevel 1 update configure configure.orig
|
|
||||||
sed -f %XSRC%/djgpp/config.sed configure.orig > configure
|
|
||||||
if errorlevel 1 goto SedError
|
|
||||||
|
|
||||||
Rem Make sure they have a config.site file
|
|
||||||
set CONFIG_SITE=%XSRC%/djgpp/config.site
|
|
||||||
if not "%CONFIG_SITE%" == "%XSRC%/djgpp/config.site" goto SmallEnv
|
|
||||||
|
|
||||||
Rem Make sure crucial file names are not munged by unpacking
|
|
||||||
test -f %XSRC%/po/Makefile.in.in
|
|
||||||
if not errorlevel 1 mv -f %XSRC%/po/Makefile.in.in %XSRC%/po/Makefile.in-in
|
|
||||||
test -f %XSRC%/po/Makefile.in-in
|
|
||||||
if errorlevel 1 mv -f %XSRC%/po/Makefile.in %XSRC%/po/Makefile.in-in
|
|
||||||
test -f %XSRC%/po/Makefile.in-in
|
|
||||||
if errorlevel 1 mv -f %XSRC%/po/Makefile.inin %XSRC%/po/Makefile.in-in
|
|
||||||
test -f %XSRC%/po/Makefile.in-in
|
|
||||||
if errorlevel 1 mv -f %XSRC%/po/Makefile.in_in %XSRC%/po/Makefile.in-in
|
|
||||||
test -f %XSRC%/po/Makefile.in-in
|
|
||||||
if errorlevel 1 mv -f %XSRC%/po/Makefile_in.in %XSRC%/po/Makefile.in-in
|
|
||||||
test -f %XSRC%/runtime-po/Makefile.in.in
|
|
||||||
if not errorlevel 1 mv -f %XSRC%/runtime-po/Makefile.in.in %XSRC%/runtime-po/Makefile.in-in
|
|
||||||
test -f %XSRC%/runtime-po/Makefile.in-in
|
|
||||||
if errorlevel 1 mv -f %XSRC%/runtime-po/Makefile.in %XSRC%/runtime-po/Makefile.in-in
|
|
||||||
test -f %XSRC%/runtime-po/Makefile.in-in
|
|
||||||
if errorlevel 1 mv -f %XSRC%/runtime-po/Makefile.inin %XSRC%/runtime-po/Makefile.in-in
|
|
||||||
test -f %XSRC%/runtime-po/Makefile.in-in
|
|
||||||
if errorlevel 1 mv -f %XSRC%/runtime-po/Makefile.in_in %XSRC%/runtime-po/Makefile.in-in
|
|
||||||
test -f %XSRC%/runtime-po/Makefile.in-in
|
|
||||||
if errorlevel 1 mv -f %XSRC%/runtime-po/Makefile_in.in %XSRC%/runtime-po/Makefile.in-in
|
|
||||||
test -f %XSRC%/data/c++.m4
|
|
||||||
if not errorlevel 1 mv -f %XSRC%/data/c++.m4 %XSRC%/data/cxx.m4
|
|
||||||
test -f %XSRC%/data/cxx.m4
|
|
||||||
if errorlevel 1 mv -f %XSRC%/data/cpp.m4 %XSRC%/data/cxx.m4
|
|
||||||
:scan_gram_c_Test
|
|
||||||
test -f %XSRC%/src/c-scan-gram.c
|
|
||||||
if not errorlevel 1 goto scan_skel_c_Test
|
|
||||||
test -f %XSRC%/src/scan-gram-c.c
|
|
||||||
if not errorlevel 1 mv -f %XSRC%/src/scan-gram-c.c %XSRC%/src/c-scan-gram.c
|
|
||||||
:scan_skel_c_Test
|
|
||||||
test -f %XSRC%/src/c-scan-skel.c
|
|
||||||
if not errorlevel 1 goto FixFiles
|
|
||||||
test -f %XSRC%/src/scan-skel-c.c
|
|
||||||
if not errorlevel 1 mv -f %XSRC%/src/scan-skel-c.c %XSRC%/src/c-scan-skel.c
|
|
||||||
|
|
||||||
:FixFiles
|
|
||||||
Rem Fix data/lalr1.cc and data/location.cc to reflect the renaming of c++.m4
|
|
||||||
sed "s/c++\.m4/cxx.m4/" %XSRC%/data/lalr1.cc > lalr1.cc
|
|
||||||
if errorlevel 1 goto lalr1_ccFileError
|
|
||||||
mv ./lalr1.cc %XSRC%/data/lalr1.cc
|
|
||||||
sed "s/c++\.m4/cxx.m4/" %XSRC%/data/location.cc > location.cc
|
|
||||||
if errorlevel 1 goto location.ccFileError
|
|
||||||
mv ./location.cc %XSRC%/data/location.cc
|
|
||||||
sed "s/c++\.m4/cxx.m4/" %XSRC%/data/glr.cc > glr.cc
|
|
||||||
if errorlevel 1 goto glr.ccFileError
|
|
||||||
mv ./glr.cc %XSRC%/data/glr.cc
|
|
||||||
|
|
||||||
Rem Define DJGPP specific defs in config.hin
|
|
||||||
echo Editing config.hin...
|
|
||||||
test -f %XSRC%/config_h.orig
|
|
||||||
if errorlevel 1 update %XSRC%/config.hin %XSRC%/config_h.orig
|
|
||||||
sed -f %XSRC%/djgpp/config_h.sed %XSRC%/config_h.orig > config.hin
|
|
||||||
if errorlevel 1 goto SedError2
|
|
||||||
mv -f config.hin %XSRC%/config.hin
|
|
||||||
|
|
||||||
|
|
||||||
Rem Fixing ilicit testsuite file name.
|
|
||||||
test -f %XSRC%/tests/c++.at
|
|
||||||
if not errorlevel 1 mv -f %XSRC%/tests/c++.at %XSRC%/tests/cxx.at
|
|
||||||
|
|
||||||
Rem Fixing ilicit calc++ file names in the calc++ directory.
|
|
||||||
test -d %XSRC%/examples/calc++
|
|
||||||
if not errorlevel 1 mv -f %XSRC%/examples/calc++ %XSRC%/examples/calcxx
|
|
||||||
test -d %XSRC%/examples/calcxx
|
|
||||||
if errorlevel 1 mv -f %XSRC%/examples/calcpp %XSRC%/examples/calcxx
|
|
||||||
test -f %XSRC%/examples/calcxx/calc++-scanner.cc
|
|
||||||
if not errorlevel 1 mv -f %XSRC%/examples/calcxx/calc++-scanner.cc %XSRC%/examples/calcxx/calcxx-scanner.cc
|
|
||||||
test -f %XSRC%/examples/calcxx/calcxx-scanner.cc
|
|
||||||
if errorlevel 1 mv -f %XSRC%/examples/calcxx/calcpp-scanner.cc %XSRC%/examples/calcxx/calcxx-scanner.cc
|
|
||||||
test -f %XSRC%/examples/calcxx/calc++-scanner.ll
|
|
||||||
if not errorlevel 1 mv -f %XSRC%/examples/calcxx/calc++-scanner.ll %XSRC%/examples/calcxx/calcxx-scanner.ll
|
|
||||||
test -f %XSRC%/examples/calcxx/calcxx-scanner.ll
|
|
||||||
if errorlevel 1 mv -f %XSRC%/examples/calcxx/calcpp-scanner.ll %XSRC%/examples/calcxx/calcxx-scanner.ll
|
|
||||||
test -f %XSRC%/examples/calcxx/calc++-driver.cc
|
|
||||||
if not errorlevel 1 mv -f %XSRC%/examples/calcxx/calc++-driver.cc %XSRC%/examples/calcxx/calcxx-driver.cc
|
|
||||||
test -f %XSRC%/examples/calcxx/calcxx-driver.cc
|
|
||||||
if errorlevel 1 mv -f %XSRC%/examples/calcxx/calcpp-driver.cc %XSRC%/examples/calcxx/calcxx-driver.cc
|
|
||||||
test -f %XSRC%/examples/calcxx/calc++-driver.hh
|
|
||||||
if not errorlevel 1 mv -f %XSRC%/examples/calcxx/calc++-driver.hh %XSRC%/examples/calcxx/calcxx-driver.hh
|
|
||||||
test -f %XSRC%/examples/calcxx/calcxx-driver.hh
|
|
||||||
if errorlevel 1 mv -f %XSRC%/examples/calcxx/calcpp-driver.hh %XSRC%/examples/calcxx/calcxx-driver.hh
|
|
||||||
test -f %XSRC%/examples/calcxx/calc++-parser.cc
|
|
||||||
if not errorlevel 1 mv -f %XSRC%/examples/calcxx/calc++-parser.cc %XSRC%/examples/calcxx/calcxx-parser.cc
|
|
||||||
test -f %XSRC%/examples/calcxx/calcxx-parser.cc
|
|
||||||
if errorlevel 1 mv -f %XSRC%/examples/calcxx/calcpp-parser.cc %XSRC%/examples/calcxx/calcxx-parser.cc
|
|
||||||
test -f %XSRC%/examples/calcxx/calc++-parser.hh
|
|
||||||
if not errorlevel 1 mv -f %XSRC%/examples/calcxx/calc++-parser.hh %XSRC%/examples/calcxx/calcxx-parser.hh
|
|
||||||
test -f %XSRC%/examples/calcxx/calcxx-parser.hh
|
|
||||||
if errorlevel 1 mv -f %XSRC%/examples/calcxx/calcpp-parser.hh %XSRC%/examples/calcxx/calcxx-parser.hh
|
|
||||||
test -f %XSRC%/examples/calcxx/calc++-parser.stamp
|
|
||||||
if not errorlevel 1 mv -f %XSRC%/examples/calcxx/calc++-parser.stamp %XSRC%/examples/calcxx/calcxx-parser.stamp
|
|
||||||
test -f %XSRC%/examples/calcxx/calcxx-parser.stamp
|
|
||||||
if errorlevel 1 mv -f %XSRC%/examples/calcxx/calcpp-parser.stamp %XSRC%/examples/calcxx/calcxx-parser.stamp
|
|
||||||
test -f %XSRC%/examples/calcxx/calc++-parser.yy
|
|
||||||
if not errorlevel 1 mv -f %XSRC%/examples/calcxx/calc++-parser.yy %XSRC%/examples/calcxx/calcxx-parser.yy
|
|
||||||
test -f %XSRC%/examples/calcxx/calcxx-parser.yy
|
|
||||||
if errorlevel 1 mv -f %XSRC%/examples/calcxx/calcpp-parser.yy %XSRC%/examples/calcxx/calcxx-parser.yy
|
|
||||||
test -f %XSRC%/examples/calcxx/calc++.cc
|
|
||||||
if not errorlevel 1 mv -f %XSRC%/examples/calcxx/calc++.cc %XSRC%/examples/calcxx/calcxx.cc
|
|
||||||
test -f %XSRC%/examples/calcxx/calcxx.cc
|
|
||||||
if errorlevel 1 mv -f %XSRC%/examples/calcxx/calcpp.cc %XSRC%/examples/calcxx/calcxx.cc
|
|
||||||
|
|
||||||
Rem Fixing #include lines in calcxx files.
|
|
||||||
sed "/#[ ]*include/s/++/xx/" %XSRC%/examples/calcxx/calcxx.cc > calcxx.cc
|
|
||||||
if errorlevel 1 goto calcxxFileError
|
|
||||||
mv ./calcxx.cc %XSRC%/examples/calcxx/calcxx.cc
|
|
||||||
sed "/#[ ]*include/s/++/xx/" %XSRC%/examples/calcxx/calcxx-driver.cc > calcxx-driver.cc
|
|
||||||
if errorlevel 1 goto calcxxFileError
|
|
||||||
mv ./calcxx-driver.cc %XSRC%/examples/calcxx/calcxx-driver.cc
|
|
||||||
sed "/#[ ]*include/s/++/xx/" %XSRC%/examples/calcxx/calcxx-driver.hh > calcxx-driver.hh
|
|
||||||
if errorlevel 1 goto calcxxFileError
|
|
||||||
mv ./calcxx-driver.hh %XSRC%/examples/calcxx/calcxx-driver.hh
|
|
||||||
sed "/#[ ]*include/s/++/xx/" %XSRC%/examples/calcxx/calcxx-parser.cc > calcxx-parser.cc
|
|
||||||
if errorlevel 1 goto calcxxFileError
|
|
||||||
mv ./calcxx-parser.cc %XSRC%/examples/calcxx/calcxx-parser.cc
|
|
||||||
sed "/#[ ]*include/s/++/xx/" %XSRC%/examples/calcxx/calcxx-parser.hh > calcxx-parser.hh
|
|
||||||
if errorlevel 1 goto calcxxFileError
|
|
||||||
mv ./calcxx-parser.hh %XSRC%/examples/calcxx/calcxx-parser.hh
|
|
||||||
:sed "/#[ ]*include/s/++/xx/" %XSRC%/examples/calcxx/calcxx-parser.yy > calcxx-parser.yy
|
|
||||||
:if errorlevel 1 goto calcxxFileError
|
|
||||||
:mv ./calcxx-parser.yy %XSRC%/examples/calcxx/calcxx-parser.yy
|
|
||||||
sed "/#[ ]*include/s/++/xx/" %XSRC%/examples/calcxx/calcxx-scanner.cc > calcxx-scanner.cc
|
|
||||||
if errorlevel 1 goto calcxxFileError
|
|
||||||
mv ./calcxx-scanner.cc %XSRC%/examples/calcxx/calcxx-scanner.cc
|
|
||||||
:sed "/#[ ]*include/s/++/xx/" %XSRC%/examples/calcxx/calcxx-scanner.ll > calcxx-scanner.ll
|
|
||||||
:if errorlevel 1 goto calcxxFileError
|
|
||||||
:mv ./calcxx-scanner.ll %XSRC%/examples/calcxx/calcxx-scanner.ll
|
|
||||||
sed "s/calc++/calcxx/" %XSRC%/examples/calcxx/test > test
|
|
||||||
if errorlevel 1 goto calcxxFileError
|
|
||||||
mv ./test %XSRC%/examples/calcxx/test
|
|
||||||
|
|
||||||
|
|
||||||
Rem Fixing the scanner files to make file names 8.3 valid.
|
|
||||||
Rem Use only if you want to change the scan-gram.l and scan-skel.l files.
|
|
||||||
: sed "/outfile=/s/\.yy/yy/" %XSRC%/src/scan-gram.l > scan-gram.l
|
|
||||||
: if errorlevel 1 goto ScannerFileError
|
|
||||||
: mv ./scan-gram.l %XSRC%/src/scan-gram.l
|
|
||||||
: sed "/outfile=/s/\.yy/yy/" %XSRC%/src/scan-skel.l > scan-skel.l
|
|
||||||
: if errorlevel 1 goto ScannerFileError
|
|
||||||
: mv ./scan-skel.l %XSRC%/src/scan-skel.l
|
|
||||||
|
|
||||||
|
|
||||||
Rem This is required because DOS/Windows are case-insensitive
|
|
||||||
Rem to file names, and "make install" will do nothing if Make
|
|
||||||
Rem finds a file called `install'.
|
|
||||||
if exist INSTALL ren INSTALL INSTALL.txt
|
|
||||||
|
|
||||||
Rem Set SHELL to a sane default or some configure tests stop working
|
|
||||||
Rem if the package is configured across partitions.
|
|
||||||
if not "%SHELL%" == "" goto HomeName
|
|
||||||
set SHELL=/bin/sh
|
|
||||||
if not "%SHELL%" == "/bin/sh" goto SmallEnv
|
|
||||||
echo No SHELL found in the environment, using default value
|
|
||||||
|
|
||||||
:HomeName
|
|
||||||
Rem Set HOME to a sane default so configure stops complaining.
|
|
||||||
if not "%HOME%" == "" goto HostName
|
|
||||||
set HOME=%XSRC%/djgpp
|
|
||||||
if not "%HOME%" == "%XSRC%/djgpp" goto SmallEnv
|
|
||||||
echo No HOME found in the environment, using default value
|
|
||||||
|
|
||||||
:HostName
|
|
||||||
Rem Set HOSTNAME so it shows in config.status
|
|
||||||
if not "%HOSTNAME%" == "" goto hostdone
|
|
||||||
if "%windir%" == "" goto msdos
|
|
||||||
set OS=MS-Windows
|
|
||||||
if not "%OS%" == "MS-Windows" goto SmallEnv
|
|
||||||
goto haveos
|
|
||||||
:msdos
|
|
||||||
set OS=MS-DOS
|
|
||||||
if not "%OS%" == "MS-DOS" goto SmallEnv
|
|
||||||
:haveos
|
|
||||||
if not "%USERNAME%" == "" goto haveuname
|
|
||||||
if not "%USER%" == "" goto haveuser
|
|
||||||
echo No USERNAME and no USER found in the environment, using default values
|
|
||||||
set HOSTNAME=Unknown PC
|
|
||||||
if not "%HOSTNAME%" == "Unknown PC" goto SmallEnv
|
|
||||||
goto userdone
|
|
||||||
:haveuser
|
|
||||||
set HOSTNAME=%USER%'s PC
|
|
||||||
if not "%HOSTNAME%" == "%USER%'s PC" goto SmallEnv
|
|
||||||
goto userdone
|
|
||||||
:haveuname
|
|
||||||
set HOSTNAME=%USERNAME%'s PC
|
|
||||||
if not "%HOSTNAME%" == "%USERNAME%'s PC" goto SmallEnv
|
|
||||||
:userdone
|
|
||||||
set _HOSTNAME=%HOSTNAME%, %OS%
|
|
||||||
if not "%_HOSTNAME%" == "%HOSTNAME%, %OS%" goto SmallEnv
|
|
||||||
set HOSTNAME=%_HOSTNAME%
|
|
||||||
:hostdone
|
|
||||||
set _HOSTNAME=
|
|
||||||
set OS=
|
|
||||||
|
|
||||||
Rem install-sh is required by the configure script but clashes with the
|
|
||||||
Rem various Makefile install-foo targets, so we MUST have it before the
|
|
||||||
Rem script runs and rename it afterwards
|
|
||||||
test -f %XSRC%/install-sh
|
|
||||||
if not errorlevel 1 goto NoRen0
|
|
||||||
test -f %XSRC%/install-sh.sh
|
|
||||||
if not errorlevel 1 mv -f %XSRC%/install-sh.sh %XSRC%/install-sh
|
|
||||||
:NoRen0
|
|
||||||
|
|
||||||
if "%NLS%" == "disabled" goto WithoutNLS
|
|
||||||
|
|
||||||
:WithNLS
|
|
||||||
Rem Check for the needed libraries and binaries.
|
|
||||||
test -x /dev/env/DJDIR/bin/msgfmt.exe
|
|
||||||
if errorlevel 1 goto MissingNLSTools
|
|
||||||
test -x /dev/env/DJDIR/bin/xgettext.exe
|
|
||||||
if errorlevel 1 goto MissingNLSTools
|
|
||||||
test -f /dev/env/DJDIR/include/libcharset.h
|
|
||||||
if errorlevel 1 goto MissingNLSTools
|
|
||||||
test -f /dev/env/DJDIR/lib/libcharset.a
|
|
||||||
if errorlevel 1 goto MissingNLSTools
|
|
||||||
test -f /dev/env/DJDIR/include/iconv.h
|
|
||||||
if errorlevel 1 goto MissingNLSTools
|
|
||||||
test -f /dev/env/DJDIR/lib/libiconv.a
|
|
||||||
if errorlevel 1 goto MissingNLSTools
|
|
||||||
test -f /dev/env/DJDIR/include/libintl.h
|
|
||||||
if errorlevel 1 goto MissingNLSTools
|
|
||||||
test -f /dev/env/DJDIR/lib/libintl.a
|
|
||||||
if errorlevel 1 goto MissingNLSTools
|
|
||||||
|
|
||||||
Rem Recreate the files in the %XSRC%/po subdir with our ported tools.
|
|
||||||
redir -e /dev/null rm %XSRC%/po/*.gmo
|
|
||||||
redir -e /dev/null rm %XSRC%/po/bison.pot
|
|
||||||
redir -e /dev/null rm %XSRC%/po/cat-id-tbl.c
|
|
||||||
redir -e /dev/null rm %XSRC%/po/stamp-cat-id
|
|
||||||
|
|
||||||
Rem Update the arguments file for the configure script.
|
|
||||||
Rem We prefer without-included-gettext because libintl.a from gettext package
|
|
||||||
Rem is the only one that is garanteed to have been ported to DJGPP.
|
|
||||||
echo --enable-nls --without-included-gettext >> arguments
|
|
||||||
goto ConfigurePackage
|
|
||||||
|
|
||||||
:MissingNLSTools
|
|
||||||
echo Needed libs/tools for NLS not found. Configuring without NLS.
|
|
||||||
:WithoutNLS
|
|
||||||
Rem Update the arguments file for the configure script.
|
|
||||||
echo --disable-nls >> arguments
|
|
||||||
|
|
||||||
:ConfigurePackage
|
|
||||||
echo Running the ./configure script...
|
|
||||||
sh ./configure @arguments
|
|
||||||
if errorlevel 1 goto CfgError
|
|
||||||
rm arguments
|
|
||||||
echo Done.
|
|
||||||
goto End
|
|
||||||
|
|
||||||
:lalr1_ccFileError
|
|
||||||
echo ./data/lalr1.cc file editing failed!
|
|
||||||
goto End
|
|
||||||
|
|
||||||
:glr_ccFileError
|
|
||||||
echo ./data/glr.cc file editing failed!
|
|
||||||
goto End
|
|
||||||
|
|
||||||
:location_ccFileError
|
|
||||||
echo ./data/location.cc file editing failed!
|
|
||||||
goto End
|
|
||||||
|
|
||||||
:calcxxFileError
|
|
||||||
echo ./examples/calcxx file editing failed!
|
|
||||||
goto End
|
|
||||||
|
|
||||||
:ScannerFileError
|
|
||||||
echo ./scanner file editing failed!
|
|
||||||
goto End
|
|
||||||
|
|
||||||
:SedError
|
|
||||||
echo ./configure script editing failed!
|
|
||||||
goto End
|
|
||||||
|
|
||||||
:SedError2
|
|
||||||
echo ./config.hin editing failed!
|
|
||||||
goto End
|
|
||||||
|
|
||||||
:CfgError
|
|
||||||
echo ./configure script exited abnormally!
|
|
||||||
goto End
|
|
||||||
|
|
||||||
:SmallEnv
|
|
||||||
echo Your environment size is too small. Enlarge it and run me again.
|
|
||||||
echo Configuration NOT done!
|
|
||||||
|
|
||||||
:End
|
|
||||||
test -f %XSRC%/install-sh.sh
|
|
||||||
if not errorlevel 1 goto NoRen1
|
|
||||||
test -f %XSRC%/install-sh
|
|
||||||
if not errorlevel 1 mv -f %XSRC%/install-sh %XSRC%/install-sh.sh
|
|
||||||
:NoRen1
|
|
||||||
if "%SHELL%" == "/bin/sh" set SHELL=
|
|
||||||
if "%HOME%" == "%XSRC%/djgpp" set HOME=
|
|
||||||
set CONFIG_SITE=
|
|
||||||
set HOSTNAME=
|
|
||||||
set NLS=
|
|
||||||
set XSRC=
|
|
||||||
@@ -1,164 +0,0 @@
|
|||||||
# DJGPP specific configuration file.
|
|
||||||
# Sed script for additional DJGPP specific editing
|
|
||||||
# of the configure script generated by autoconf 2.57.
|
|
||||||
|
|
||||||
|
|
||||||
# Copyright (C) 2005, 2006 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
# Additional editing of Makefiles
|
|
||||||
/(echo[ ]*':t/ a\
|
|
||||||
# DJGPP specific Makefile changes.\
|
|
||||||
/^aliaspath * *=/s,:,";",g;t t\
|
|
||||||
/TEXINPUTS=/s,:,";",g;t t\
|
|
||||||
/PATH=/s,:,";",g;t t\
|
|
||||||
s,\\.deps,_deps,g;t t\
|
|
||||||
s,\\.new\\.,_new.,g;t t\
|
|
||||||
s,\\.old\\.,_old.,g;t t\
|
|
||||||
s,c++\\.at,cxx.at,g;t t\
|
|
||||||
s,c++\\.m4,cxx.m4,g;t t\
|
|
||||||
s,calc++,calcxx,g;t t\
|
|
||||||
s,scan-gram-c,c-scan-gram,g;t t\
|
|
||||||
s,scan-skel-c,c-scan-skel,g;t t\
|
|
||||||
s,Makefile\\.in\\.in,Makefile.in-in,g;t t\
|
|
||||||
s,Makefile\\.am\\.in,Makefile.am-in,g;t t\
|
|
||||||
s,(MAKEINFOFLAGS),& --no-split,\
|
|
||||||
/^install-info-am:/,/^$/ {\
|
|
||||||
/@list=/ s,\\\$(INFO_DEPS),& bison.i,\
|
|
||||||
/@for *file/ s,\\\$(INFO_DEPS),& bison.i,\
|
|
||||||
s,file-\\[0-9\\]\\[0-9\\],& \\$\\$file[0-9] \\$\\$file[0-9][0-9],\
|
|
||||||
}\
|
|
||||||
/^\\.y\\.c:/,/^$/ {\
|
|
||||||
/\\\$(YACCCOMPILE)/ {\
|
|
||||||
a\\\
|
|
||||||
-@test -f y.tab.c && mv -f y.tab.c y_tab.c\\\
|
|
||||||
-@test -f y.tab.h && mv -f y.tab.h y_tab.h\
|
|
||||||
}\
|
|
||||||
}\
|
|
||||||
/^libbison.a:/ i\\\
|
|
||||||
\\$(top_srcdir)/djgpp/subpipe.c: \\$(top_srcdir)/djgpp/subpipe.h\\\
|
|
||||||
subpipe.o: \\$(top_srcdir)/djgpp/subpipe.c \\$(top_srcdir)/djgpp/subpipe.h\\\
|
|
||||||
\\$(COMPILE) -c \\$<\
|
|
||||||
/^yacc:/ i\\\
|
|
||||||
yacc.bat:\\\
|
|
||||||
echo "bison\\$(EXEEXT) -y %1 %2 %3 %4 %5 %6 %7 %8 %9" >\\$@\
|
|
||||||
/^bin_SCRIPTS =/s/$/ yacc.bat/\
|
|
||||||
/^MOSTLYCLEANFILES = yacc/s/$/ yacc.bat/
|
|
||||||
|
|
||||||
|
|
||||||
# Makefile.in.in is renamed to Makefile.in-in.
|
|
||||||
/ac_config_files=/,/_ACEOF/ {
|
|
||||||
s|po/Makefile\.in|&:po/Makefile.in-in|
|
|
||||||
}
|
|
||||||
/CONFIG_FILES=/ s|po/Makefile\.in|&:po/Makefile.in-in|2
|
|
||||||
|
|
||||||
# We always use _deps and _libs instead of .deps and .libs, because
|
|
||||||
# the latter is an invalid name on 8+3 MS-DOS file system. This makes
|
|
||||||
# the generated Makefiles good for every DJGPP installation, not only
|
|
||||||
# the one where the package was configured (which could happen to be
|
|
||||||
# a Windows box, where leading dots in file names are allowed).
|
|
||||||
s,\.deps,_deps,g
|
|
||||||
s,\.libs,_libs,g
|
|
||||||
/^rmdir[ ]*\.tst/ i\
|
|
||||||
am__leading_dot=_
|
|
||||||
|
|
||||||
# Replace (command) > /dev/null with `command > /dev/null`, since
|
|
||||||
# parenthesized commands always return zero status in the ported Bash,
|
|
||||||
# even if the named command doesn't exist
|
|
||||||
/if ([^|;`]*null/{
|
|
||||||
s,(,`,
|
|
||||||
s,),,
|
|
||||||
/null[ ]*2>&1/ s,2>&1,&`,
|
|
||||||
/null.*null/ s,null.*null,&`,
|
|
||||||
/null.*null/ !{
|
|
||||||
/null[ ]*2>&1/ !s,null,&`,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# DOS-style absolute file names should be supported as well
|
|
||||||
/\*) top_srcdir=/s,/\*,[\\\\/]* | ?:[\\\\/]*,
|
|
||||||
|
|
||||||
# Prevent the spliting of subs.sed.
|
|
||||||
# The sed script: subs.sed is split into 48 lines long files.
|
|
||||||
# This will produce sed scripts called subs-$ac_sed_frag.sed, where
|
|
||||||
# $ac_sed_frag is some unique number. This will not work if the splited
|
|
||||||
# sed script contains a multiple line sed command at line #48. In this
|
|
||||||
# case the first part of the multiple line sed command will be written
|
|
||||||
# at the end of one particular subs-$ac_sed_frag.sed and the rest of the
|
|
||||||
# sed command will be written at the begining of the next subs-$ac_sed_frag.sed
|
|
||||||
# making both sed script useless.
|
|
||||||
# This matches the configure script produced by Autoconf 2.57
|
|
||||||
/ac_max_sed_lines=[0-9]/ s,=.*$,=`sed -n "$=" $tmp/subs.sed`,
|
|
||||||
|
|
||||||
# The following two items are changes needed for configuring
|
|
||||||
# and compiling across partitions.
|
|
||||||
# 1) The given srcdir value is always translated from the
|
|
||||||
# "x:" syntax into "/dev/x" syntax while we run configure.
|
|
||||||
/^[ ]*-srcdir=\*.*$/ a\
|
|
||||||
ac_optarg=`echo "$ac_optarg" | sed "s,^\\([A-Za-z]\\):,/dev/\\1,"`
|
|
||||||
/set X `ls -Lt \$srcdir/ i\
|
|
||||||
if `echo $srcdir | grep "^/dev/" - > /dev/null`; then\
|
|
||||||
srcdir=`echo "$srcdir" | sed -e "s%^/dev/%%" -e "s%/%:/%"`\
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Autoconf 2.52e generated configure scripts
|
|
||||||
# write absolute paths into Makefiles and bison.in
|
|
||||||
# making them useless for DJGPP installations for
|
|
||||||
# which the package has not been configured for.
|
|
||||||
/MISSING=/,/^$/ {
|
|
||||||
/^fi$/ a\
|
|
||||||
am_missing_run=`echo "$am_missing_run" | sed 's%/dev.*/bison[-_0-9]\\{1,1\\}[-.0-9A-z]*%${top_srcdir}%;s%.:.*/bison[-_0-9]\\{1,1\\}[-.0-9A-z]*%${top_srcdir}%'`
|
|
||||||
}
|
|
||||||
/^install_sh=/a\
|
|
||||||
install_sh=`echo "$install_sh" | sed 's%/dev.*/bison[-_0-9]\\{1,1\\}[-.0-9A-z]*%${top_srcdir}%;s%.:.*/bison[-_0-9]\\{1,1\\}[-.0-9A-z]*%${top_srcdir}%'`
|
|
||||||
|
|
||||||
# This will only work if the assumption that the
|
|
||||||
# testsuite is ran from the following path:
|
|
||||||
# ${top_srcdir}/tests/testsuite.dir
|
|
||||||
# holds. The explicit names are of no importance.
|
|
||||||
# ../../. == ${top_srcdir}
|
|
||||||
/\.)[ ]*ac_abs_builddir=/,/^esac$/ {
|
|
||||||
/^esac$/ a\
|
|
||||||
ac_abs_builddir=`echo "$ac_abs_builddir" | sed "s%/dev.*/bison[-_0-9]\\{1,1\\}[-.0-9A-z]*/[^/]*%../../.%;s%.:.*/bison[-_0-9]\\{1,1\\}[-.0-9A-z]*/[^/]*%../../.%"`
|
|
||||||
}
|
|
||||||
/\.)[ ]*ac_abs_top_builddir=/,/^esac$/ {
|
|
||||||
/^esac$/ a\
|
|
||||||
ac_abs_top_builddir=`echo "$ac_abs_top_builddir" | sed "s%/dev.*/bison[-_0-9]\\{1,1\\}[-.0-9A-z]*/[^/]*%../../../%;s%.:.*/bison[-_0-9]\\{1,1\\}[-.0-9A-z]*/[^/]*%../../../%"`
|
|
||||||
}
|
|
||||||
/\.)[ ]*ac_abs_srcdir=/,/^esac$/ {
|
|
||||||
/^esac$/ a\
|
|
||||||
ac_abs_srcdir=`echo "$ac_abs_srcdir" | sed "s%/dev.*/bison[-_0-9]\\{1,1\\}[-.0-9A-z]*/[^/]*%../../.%;s%.:.*/bison[-_0-9]\\{1,1\\}[-.0-9A-z]*/[^/]*%../../.%"`
|
|
||||||
}
|
|
||||||
/\.)[ ]*ac_abs_top_srcdir=/,/^esac$/ {
|
|
||||||
/^esac$/ a\
|
|
||||||
ac_abs_top_srcdir=`echo "$ac_abs_top_srcdir" | sed "s%/dev.*/bison[-_0-9]\\{1,1\\}[-.0-9A-z]*/[^/]*%../../../%;s%.:.*/bison[-_0-9]\\{1,1\\}[-.0-9A-z]*/[^/]*%../../../%"`
|
|
||||||
}
|
|
||||||
|
|
||||||
# Add DJGPP version information.
|
|
||||||
/^#define VERSION/ s/\$VERSION/& (DJGPP port (r1))/
|
|
||||||
|
|
||||||
# We need makeinfo to make the html formated docs.
|
|
||||||
/\$am_missing_run[ ]*makeinfo/ s,\$am_missing_run,,
|
|
||||||
|
|
||||||
# The path to the FORTRAN compiler and libraries
|
|
||||||
# shall contain no absolute path reference so it
|
|
||||||
# will be good for all djgpp installations.
|
|
||||||
/^FLIBS="\$ac_cv_flibs"/ i\
|
|
||||||
ac_djgpp_path=`echo "$DJDIR" | sed 's%\\\\\\%/%g' | tr $as_cr_LETTERS $as_cr_letters`\
|
|
||||||
ac_cv_flibs=`echo "$ac_cv_flibs" | sed "s%-L$ac_djgpp_path%-L/dev/env/DJDIR%g"`
|
|
||||||
|
|
||||||
# The following is not a valid DOS file name
|
|
||||||
s/calc++/calcxx/g
|
|
||||||
@@ -1,83 +0,0 @@
|
|||||||
#! /bin/sh
|
|
||||||
|
|
||||||
# This is the config.site file for configuring GNU packages
|
|
||||||
# which are to be built with DJGPP tools.
|
|
||||||
|
|
||||||
# Copyright (C) 2005, 2006 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
# 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, 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.
|
|
||||||
|
|
||||||
|
|
||||||
# Include the djgpp subdirectory in PATH, so that getconf is found
|
|
||||||
PATH="$srcdir/djgpp:$PATH"
|
|
||||||
|
|
||||||
# These two variables are required, otherwise looking for
|
|
||||||
# programs along the PATH will not work.
|
|
||||||
PATH_SEPARATOR=:
|
|
||||||
PATH_EXPAND=y
|
|
||||||
|
|
||||||
# This is required in for "test -f foo" to find foo.exe
|
|
||||||
export TEST_FINDS_EXE=y
|
|
||||||
|
|
||||||
# The root of the DJGPP tree serves as the default prefix
|
|
||||||
test "x$prefix" = xNONE && prefix='/dev/env/DJDIR'
|
|
||||||
|
|
||||||
# This is required for config.status script to be run, since
|
|
||||||
# ./configure runs it by invoking ${CONFIG_SHELL-/bin/sh}
|
|
||||||
CONFIG_SHELL=${CONFIG_SHELL='sh'}
|
|
||||||
|
|
||||||
# These are set here so the generated Makefile's will be good
|
|
||||||
# for every DJGPP installation, not only the one where the
|
|
||||||
# package was configured.
|
|
||||||
# $INSTALL must be an absolute path name, otherwise config.status
|
|
||||||
# will try to prepend ./ and ../ to it when it goes into subdirs.
|
|
||||||
INSTALL=${INSTALL='/dev/env/DJDIR/bin/ginstall -c'}
|
|
||||||
RANLIB=${RANLIB='ranlib'}
|
|
||||||
GMSGFMT=${GMSGFMT='/dev/env/DJDIR/bin/msgfmt'}
|
|
||||||
MSGFMT=${MSGFMT='/dev/env/DJDIR/bin/msgfmt'}
|
|
||||||
XGETTEXT=${XGETTEXT='/dev/env/DJDIR/bin/xgettext'}
|
|
||||||
AWK=${AWK='gawk'}
|
|
||||||
|
|
||||||
# A sane default for emacs.
|
|
||||||
ac_cv_path_EMACS=${EMACS='/dev/env/DJDIR/gnu/emacs/bin/emacs'}
|
|
||||||
|
|
||||||
# A sane default for m4.
|
|
||||||
ac_cv_path_M4=${M4='/dev/env/DJDIR/bin/m4'}
|
|
||||||
|
|
||||||
# A sane default for grep.
|
|
||||||
ac_cv_path_GREP=${GREP='/dev/env/DJDIR/bin/grep'}
|
|
||||||
|
|
||||||
# A sane default for egrep.
|
|
||||||
ac_cv_path_EGREP=${EGREP='/dev/env/DJDIR/bin/egrep'}
|
|
||||||
|
|
||||||
# A sane default for fgrep.
|
|
||||||
ac_cv_path_FGREP=${FGREP='/dev/env/DJDIR/bin/fgrep'}
|
|
||||||
|
|
||||||
# A sane default for sed.
|
|
||||||
ac_cv_path_SED=${SED='/dev/env/DJDIR/bin/sed'}
|
|
||||||
|
|
||||||
# These are set here so the generated libtool will be good
|
|
||||||
# for every DJGPP installation, not only the one where the
|
|
||||||
# package was configured.
|
|
||||||
NM=${NM='nm'}
|
|
||||||
LD=${LD='ld'}
|
|
||||||
|
|
||||||
# Force the test for 'ln -s' to report 'cp -pf'.
|
|
||||||
ac_cv_prog_LN_S='cp -pf'
|
|
||||||
|
|
||||||
# There is no fork and vfork functionality.
|
|
||||||
ac_cv_func_fork=no
|
|
||||||
ac_cv_func_vfork=no
|
|
||||||
ac_cv_func_pipe=no
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
# sed script for DJGPP specific editing of config.hin
|
|
||||||
|
|
||||||
# Copyright (C) 2005, 2006 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
# 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, 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.
|
|
||||||
|
|
||||||
|
|
||||||
$ a\
|
|
||||||
\
|
|
||||||
\
|
|
||||||
/* DJGPP specific defines. */\
|
|
||||||
\
|
|
||||||
#include <unistd.h>\
|
|
||||||
#define TAB_EXT ((pathconf(NULL, _PC_NAME_MAX) > 12) ? ".tab" : "_tab")\
|
|
||||||
#define OUTPUT_EXT ((pathconf(NULL, _PC_NAME_MAX) > 12) ? ".output" : ".out")\
|
|
||||||
\
|
|
||||||
#define DEFAULT_TMPDIR "/dev/env/DJDIR/tmp"
|
|
||||||
@@ -1,88 +0,0 @@
|
|||||||
@echo off
|
|
||||||
Rem
|
|
||||||
Rem WARNING WARNING WARNING: This file needs to have DOS CRLF end-of-line
|
|
||||||
Rem format, or else stock DOS/Windows shells will refuse to run it.
|
|
||||||
Rem
|
|
||||||
Rem This batch file unpacks the Bison distribution while simultaneously
|
|
||||||
Rem renaming some of the files whose names are invalid on DOS or conflict
|
|
||||||
Rem with other file names after truncation to DOS 8+3 namespace.
|
|
||||||
Rem
|
|
||||||
Rem Copyright (C) 2005, 2006 Free Software Foundation, Inc.
|
|
||||||
Rem
|
|
||||||
Rem This program is free software; you can redistribute it and/or modify
|
|
||||||
Rem it under the terms of the GNU General Public License as published by
|
|
||||||
Rem the Free Software Foundation; either version 2, or (at your option)
|
|
||||||
Rem any later version.
|
|
||||||
Rem
|
|
||||||
Rem This program is distributed in the hope that it will be useful,
|
|
||||||
Rem but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
Rem MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
Rem GNU General Public License for more details.
|
|
||||||
Rem
|
|
||||||
Rem You should have received a copy of the GNU General Public License
|
|
||||||
Rem along with this program; if not, write to the Free Software Foundation,
|
|
||||||
Rem Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
||||||
Rem
|
|
||||||
Rem
|
|
||||||
Rem Invoke like this:
|
|
||||||
Rem
|
|
||||||
Rem djunpack bison-XYZ.tar.gz
|
|
||||||
Rem or
|
|
||||||
Rem djunpack bison-XYZ.tar.bz2
|
|
||||||
Rem
|
|
||||||
Rem where XYZ is the version number. If the argument includes leading
|
|
||||||
Rem directories, it MUST use backslashes, not forward slashes.
|
|
||||||
Rem
|
|
||||||
|
|
||||||
set ENVIRONMENT_SIZE_TEST_STRING=ENVIRONMENT_SIZE_TEST_STRING
|
|
||||||
if "%ENVIRONMENT_SIZE_TEST_STRING%"=="ENVIRONMENT_SIZE_TEST_STRING" GoTo EnvOk
|
|
||||||
Rem If their environment space is too small, re-exec with a larger one
|
|
||||||
command.com /e:4096 /c %0 %1
|
|
||||||
GoTo End
|
|
||||||
|
|
||||||
:EnvOk
|
|
||||||
set ENVIRONMENT_SIZE_TEST_STRING=
|
|
||||||
if "%1" == "" GoTo NoArgument
|
|
||||||
if not exist %1 GoTo NoArchive
|
|
||||||
Rem Extract top src dir from archive file.
|
|
||||||
djtar -t %1 > top_src.dir
|
|
||||||
Rem The following uses a feature of COPY whereby it does not copy
|
|
||||||
Rem empty files. We need that because the previous line will create
|
|
||||||
Rem an empty fnchange.tmp even if the command failed for some reason.
|
|
||||||
copy top_src.dir junk.tmp > nul
|
|
||||||
if not exist junk.tmp GoTo NoDjTar
|
|
||||||
del junk.tmp
|
|
||||||
sed "1{s/^.*bison-/djtar -x -p -o bison-/;s|$|djgpp/fnchange.lst %%1 > fnchange.tmp|};2,$d" top_src.dir > ext_list.bat
|
|
||||||
Rem See the comment above about the reason for using COPY.
|
|
||||||
copy ext_list.bat junk.tmp > nul
|
|
||||||
if not exist junk.tmp GoTo NoSed
|
|
||||||
del junk.tmp
|
|
||||||
Rem Extract fnchange.lst from archive.
|
|
||||||
call ext_list.bat %1
|
|
||||||
del ext_list.bat
|
|
||||||
sed "1{s|^.*bison-|s/@V@/bison-|;s|$|g|};2,$d" top_src.dir > version.sed
|
|
||||||
sed -f version.sed < fnchange.tmp > fnchange.lst
|
|
||||||
del version.sed
|
|
||||||
del fnchange.tmp
|
|
||||||
del top_src.dir
|
|
||||||
Rem unpack the source distribution
|
|
||||||
djtar -x -n fnchange.lst %1
|
|
||||||
del fnchange.lst
|
|
||||||
GoTo End
|
|
||||||
|
|
||||||
:NoSed
|
|
||||||
del junk.tmp
|
|
||||||
echo FAIL: Sed is not available.
|
|
||||||
GoTo End
|
|
||||||
:NoDjTar
|
|
||||||
del junk.tmp
|
|
||||||
echo FAIL: DJTAR is not available or no fnchange.lst file in %1.
|
|
||||||
GoTo End
|
|
||||||
:NoArchive
|
|
||||||
echo FAIL: the file %1 does not seem to exist.
|
|
||||||
echo Remember that %1 cannot use forward slashes, only backslashes.
|
|
||||||
GoTo End
|
|
||||||
:NoArgument
|
|
||||||
echo FAIL: no archive file has been specified.
|
|
||||||
echo Remember that the file name cannot use forward slashes, only backslashes.
|
|
||||||
:End
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
@V@/src/scan-gram-c.c @V@/src/c-scan-gram.c
|
|
||||||
@V@/src/scan-skel-c.c @V@/src/c-scan-skel.c
|
|
||||||
-285
@@ -1,285 +0,0 @@
|
|||||||
/* Subprocesses with pipes.
|
|
||||||
|
|
||||||
Copyright (C) 2005, 2006 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
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, or (at your option)
|
|
||||||
any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software Foundation,
|
|
||||||
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
|
||||||
|
|
||||||
/* Written by Juan Manuel Guerrero <[email protected]>. */
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include <config.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "subpipe.h"
|
|
||||||
|
|
||||||
#include <errno.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
#include <process.h>
|
|
||||||
#include <signal.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include "xalloc.h"
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef STDIN_FILENO
|
|
||||||
# define STDIN_FILENO 0
|
|
||||||
#endif
|
|
||||||
#ifndef STDOUT_FILENO
|
|
||||||
# define STDOUT_FILENO 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#include "error.h"
|
|
||||||
|
|
||||||
#include "gettext.h"
|
|
||||||
#define _(Msgid) gettext (Msgid)
|
|
||||||
|
|
||||||
|
|
||||||
/* Initialize this module. */
|
|
||||||
|
|
||||||
|
|
||||||
static int old_stdin;
|
|
||||||
static int old_stdout;
|
|
||||||
static char **arguments;
|
|
||||||
static char tmp_file_name[2][L_tmpnam];
|
|
||||||
|
|
||||||
#define remove_tmp_file(fd, name) \
|
|
||||||
do { \
|
|
||||||
close ((fd)); \
|
|
||||||
if (unlink ((name))) \
|
|
||||||
error (EXIT_FAILURE, 0, _("removing of `%s' failed"), (name)); \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
init_subpipe(void)
|
|
||||||
{
|
|
||||||
int fd;
|
|
||||||
|
|
||||||
strcpy(tmp_file_name[0], "/dev/env/TMPDIR/bnXXXXXX");
|
|
||||||
fd = mkstemp(tmp_file_name[0]);
|
|
||||||
if (fd < 0)
|
|
||||||
error(EXIT_FAILURE, 0, _("creation of a temporary file failed"));
|
|
||||||
close (fd);
|
|
||||||
|
|
||||||
strcpy(tmp_file_name[1], "/dev/env/TMPDIR/bnXXXXXX");
|
|
||||||
fd = mkstemp(tmp_file_name[1]);
|
|
||||||
if (fd < 0)
|
|
||||||
error(EXIT_FAILURE, 0, _("creation of a temporary file failed"));
|
|
||||||
close (fd);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Create a subprocess that is run as a filter. ARGV is the
|
|
||||||
NULL-terminated argument vector for the subprocess. Store read and
|
|
||||||
write file descriptors for communication with the subprocess into
|
|
||||||
FD[0] and FD[1]: input meant for the process can be written into
|
|
||||||
FD[0], and output from the process can be read from FD[1]. Return
|
|
||||||
the subprocess id.
|
|
||||||
|
|
||||||
Because DOS has neither fork nor pipe functionality to run the subprocess
|
|
||||||
as a filter, the filter is reproduced using temporary files. First bison's
|
|
||||||
stdout is redirected to a temporary file. After bison has produced all of
|
|
||||||
is output, this file is closed and connected to m4's stdin. All m4's output
|
|
||||||
is redirected from m4's stdout to a second temporary file and reopened as
|
|
||||||
bison's stdin. */
|
|
||||||
|
|
||||||
pid_t
|
|
||||||
create_subpipe(char const *const *argv, int fd[2])
|
|
||||||
{
|
|
||||||
int argc;
|
|
||||||
int from_in_fd; /* pipe from bison to m4. */
|
|
||||||
pid_t pid;
|
|
||||||
|
|
||||||
|
|
||||||
pid = getpid();
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Save original stdin and stdout
|
|
||||||
* for later restauration.
|
|
||||||
*/
|
|
||||||
old_stdin = dup(STDIN_FILENO);
|
|
||||||
if (old_stdin < 0)
|
|
||||||
error(EXIT_FAILURE, 0, _("saving stdin failed"));
|
|
||||||
|
|
||||||
old_stdout = dup(STDOUT_FILENO);
|
|
||||||
if (old_stdout < 0)
|
|
||||||
error(EXIT_FAILURE, 0, _("saving stdout failed"));
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Save argv for later use.
|
|
||||||
*/
|
|
||||||
for (argc = 0; argv[argc]; argc++)
|
|
||||||
;
|
|
||||||
argc++;
|
|
||||||
arguments = xmalloc(argc * sizeof(arguments[0]));
|
|
||||||
for (argc = 0; argv[argc]; argc++)
|
|
||||||
{
|
|
||||||
arguments[argc] = xmalloc((strlen(argv[argc]) + 1) * sizeof(arguments[0][0]));
|
|
||||||
strcpy(arguments[argc], argv[argc]);
|
|
||||||
}
|
|
||||||
arguments[argc] = NULL;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* All bison's output will be gathered in this temporary file
|
|
||||||
* and will be redirected to m4's stdin.
|
|
||||||
*/
|
|
||||||
from_in_fd = open(tmp_file_name[0], O_WRONLY | O_CREAT | O_TRUNC, S_IWUSR);
|
|
||||||
if (from_in_fd < 0)
|
|
||||||
error(EXIT_FAILURE, 0, _("opening of tmpfile failed"));
|
|
||||||
if (dup2(from_in_fd, STDOUT_FILENO) < 0)
|
|
||||||
{
|
|
||||||
remove_tmp_file(from_in_fd, tmp_file_name[0]);
|
|
||||||
error(EXIT_FAILURE, 0, _("redirecting bison's stdout to the temporary file failed"));
|
|
||||||
}
|
|
||||||
close(from_in_fd);
|
|
||||||
|
|
||||||
|
|
||||||
fd[0] = STDOUT_FILENO;
|
|
||||||
return pid;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* A signal handler that just records that a signal has happened. */
|
|
||||||
static int child_interrupted;
|
|
||||||
|
|
||||||
static void
|
|
||||||
signal_catcher(int signo)
|
|
||||||
{
|
|
||||||
child_interrupted++;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
end_of_output_subpipe(pid_t pid, int fd[2])
|
|
||||||
{
|
|
||||||
char *program;
|
|
||||||
int from_out_fd = open(tmp_file_name[0], O_RDONLY, S_IRUSR); /* pipe from bison to m4. */
|
|
||||||
int to_in_fd = open(tmp_file_name[1], O_WRONLY | O_CREAT | O_TRUNC, S_IWUSR); /* pipe from m4 to bison. */
|
|
||||||
int status;
|
|
||||||
void (*previous_handler)(int);
|
|
||||||
|
|
||||||
|
|
||||||
program = strrchr(arguments[0], '/');
|
|
||||||
if (program)
|
|
||||||
program++;
|
|
||||||
else
|
|
||||||
program = arguments[0];
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Redirect bison's output to m4's stdin.
|
|
||||||
*/
|
|
||||||
if (from_out_fd < 0)
|
|
||||||
error(EXIT_FAILURE, 0, _("opening of tmpfile failed"));
|
|
||||||
if (dup2(from_out_fd, STDIN_FILENO) < 0)
|
|
||||||
{
|
|
||||||
remove_tmp_file(from_out_fd, tmp_file_name[0]);
|
|
||||||
error(EXIT_FAILURE, 0, _("redirecting m4's stdin from the temporary file failed"));
|
|
||||||
}
|
|
||||||
close(from_out_fd);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* All m4's output will be gathered in this temporary file
|
|
||||||
* and will be redirected to bison's stdin.
|
|
||||||
*/
|
|
||||||
if (to_in_fd < 0)
|
|
||||||
{
|
|
||||||
remove_tmp_file(STDIN_FILENO, tmp_file_name[0]);
|
|
||||||
error(EXIT_FAILURE, 0, _("opening of a temporary file failed"));
|
|
||||||
}
|
|
||||||
if (dup2(to_in_fd, STDOUT_FILENO) < 0)
|
|
||||||
{
|
|
||||||
remove_tmp_file(STDIN_FILENO, tmp_file_name[0]);
|
|
||||||
remove_tmp_file(to_in_fd, tmp_file_name[1]);
|
|
||||||
error(EXIT_FAILURE, 0, _("redirecting m4's stdout to a temporary file failed"));
|
|
||||||
}
|
|
||||||
close(to_in_fd);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Run m4.
|
|
||||||
*/
|
|
||||||
child_interrupted = 0;
|
|
||||||
errno = 0;
|
|
||||||
previous_handler = signal(SIGINT, signal_catcher);
|
|
||||||
status = spawnvp(P_WAIT, program, arguments);
|
|
||||||
signal(SIGINT, previous_handler);
|
|
||||||
if (child_interrupted)
|
|
||||||
{
|
|
||||||
remove_tmp_file(STDIN_FILENO, tmp_file_name[0]);
|
|
||||||
remove_tmp_file(STDOUT_FILENO, tmp_file_name[1]);
|
|
||||||
error(EXIT_FAILURE, 0, _("subsidiary program `%s' interrupted"), program);
|
|
||||||
}
|
|
||||||
if (status)
|
|
||||||
{
|
|
||||||
remove_tmp_file(STDIN_FILENO, tmp_file_name[0]);
|
|
||||||
remove_tmp_file(STDOUT_FILENO, tmp_file_name[1]);
|
|
||||||
error(EXIT_FAILURE, 0, _(errno == ENOENT
|
|
||||||
? "subsidiary program `%s' not found"
|
|
||||||
: status < 1
|
|
||||||
? "subsidiary program `%s' failed"
|
|
||||||
: "subsidiary program `%s' failed (status=%i, errno=%i)"), program, status, errno);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Redirect m4's output to bison's stdin.
|
|
||||||
*/
|
|
||||||
if (dup2(old_stdout, STDOUT_FILENO) < 0)
|
|
||||||
error(EXIT_FAILURE, 0, "restore of bison's stdout failed");
|
|
||||||
close(old_stdout);
|
|
||||||
to_in_fd = open(tmp_file_name[1], O_RDONLY, S_IRUSR); /* pipe from m4 to bison. */
|
|
||||||
if (to_in_fd < 0)
|
|
||||||
{
|
|
||||||
remove_tmp_file(STDIN_FILENO, tmp_file_name[0]);
|
|
||||||
error(EXIT_FAILURE, 0, _("opening of tmpfile failed"));
|
|
||||||
}
|
|
||||||
if (dup2(to_in_fd, STDIN_FILENO) < 0)
|
|
||||||
{
|
|
||||||
remove_tmp_file(STDIN_FILENO, tmp_file_name[0]);
|
|
||||||
remove_tmp_file(to_in_fd, tmp_file_name[1]);
|
|
||||||
error(EXIT_FAILURE, -1, "dup2");
|
|
||||||
error(EXIT_FAILURE, 0, _("redirecting bison's stdin from the temporary file failed"));
|
|
||||||
}
|
|
||||||
close(to_in_fd);
|
|
||||||
|
|
||||||
|
|
||||||
fd[1] = STDIN_FILENO;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Free resources, unlink temporary files and restore stdin and stdout. */
|
|
||||||
|
|
||||||
void
|
|
||||||
reap_subpipe(pid_t pid, char const *program)
|
|
||||||
{
|
|
||||||
int argc;
|
|
||||||
|
|
||||||
for (argc = 0; arguments[argc]; argc++)
|
|
||||||
free(arguments[argc]);
|
|
||||||
free(arguments);
|
|
||||||
|
|
||||||
if (unlink(tmp_file_name[0]))
|
|
||||||
error(EXIT_FAILURE, 0, _("removing of `%s' failed"), tmp_file_name[0]);
|
|
||||||
if (unlink(tmp_file_name[1]))
|
|
||||||
error(EXIT_FAILURE, 0, _("removing of `%s' failed"), tmp_file_name[1]);
|
|
||||||
|
|
||||||
if (dup2(old_stdin, STDIN_FILENO) < 0)
|
|
||||||
error(EXIT_FAILURE, 0, "restore of bison's stdin failed");
|
|
||||||
close(old_stdin);
|
|
||||||
}
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
/* Subprocesses with pipes.
|
|
||||||
Copyright (C) 2005 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
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. */
|
|
||||||
|
|
||||||
/* Written by Juan Manuel Guerrero <[email protected]>. */
|
|
||||||
|
|
||||||
#if HAVE_SYS_TYPES_H
|
|
||||||
# include <sys/types.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void init_subpipe(void);
|
|
||||||
pid_t create_subpipe(char const * const *, int[2]);
|
|
||||||
void end_of_output_subpipe(pid_t, int[2]);
|
|
||||||
void reap_subpipe(pid_t, char const *);
|
|
||||||
@@ -4,10 +4,8 @@ bison.cp
|
|||||||
bison.cps
|
bison.cps
|
||||||
bison.dvi
|
bison.dvi
|
||||||
bison.fn
|
bison.fn
|
||||||
bison.html
|
|
||||||
bison.ky
|
bison.ky
|
||||||
bison.log
|
bison.log
|
||||||
bison.pdf
|
|
||||||
bison.pg
|
bison.pg
|
||||||
bison.ps
|
bison.ps
|
||||||
bison.toc
|
bison.toc
|
||||||
@@ -16,7 +14,3 @@ bison.vr
|
|||||||
refcard.dvi
|
refcard.dvi
|
||||||
refcard.log
|
refcard.log
|
||||||
refcard.ps
|
refcard.ps
|
||||||
Makefile.in
|
|
||||||
*.info*
|
|
||||||
stamp-vti
|
|
||||||
version.texi
|
|
||||||
|
|||||||
-1087
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,109 @@
|
|||||||
|
Frequently Asked Questions about Bison:
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
|
Q1. Is Bison Y2K compliant?
|
||||||
|
|
||||||
|
A1. If you're looking for a guarantee or certification, I can't
|
||||||
|
provide it. With a little thought you can answer this one for
|
||||||
|
yourself, though. (Hint: does a parser generator rely on the
|
||||||
|
date or time for anything?) If you're still confused, see
|
||||||
|
http://www.gnu.org/software/year2000.html for more information.
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
|
Q2. I can't build Bison because "make" complains that "msgfmt" is not
|
||||||
|
fund. What should I do?
|
||||||
|
|
||||||
|
A2. Like most GNU packages with internationalization support, that
|
||||||
|
feature is turned on by default. If you have problems building
|
||||||
|
in the "po" subdirectory, it indicates that your system's
|
||||||
|
internationalization support is lacking. You can re-configure
|
||||||
|
Bison with "--disable-nls" to turn off this support, or you can
|
||||||
|
install GNU gettext from ftp://ftp.gnu.org/gnu/gettext/ and
|
||||||
|
re-configure Bison. See the file "ABOUT-NLS" for more
|
||||||
|
information.
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
|
Q3. I'm having trouble using Bison. Where can I find help?
|
||||||
|
|
||||||
|
A3. First, read the fine manual which comes with bison. Beyond that,
|
||||||
|
you can send mail to <[email protected]>. This mailing list is
|
||||||
|
intended to be populated with people who are willing to answer
|
||||||
|
questions about using and installing Bison. Please keep in mind
|
||||||
|
that (most of) the people on the list have aspects of their lives
|
||||||
|
which are not related to Bison (!), so you may not receive an
|
||||||
|
answer to your question right away. This can be frustrating, but
|
||||||
|
please try not to honk them off; remember that any help they
|
||||||
|
provide is purely voluntary and out of the kindness of their
|
||||||
|
hearts.
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
|
Q4. I found a bug. What should I include in the bug report?
|
||||||
|
|
||||||
|
A4. Before you send a bug report, make sure you are using the latest
|
||||||
|
version. Check ftp://ftp.gnu.org/pub/gnu/bison/ or one of its
|
||||||
|
mirrors. Be sure to include the version number in your bug
|
||||||
|
report. If the bug is present in the latest version but not in a
|
||||||
|
previous version, try to determine the most recent version which
|
||||||
|
did not contain the bug.
|
||||||
|
|
||||||
|
If the bug is parser-related, you should include the smallest
|
||||||
|
grammar you can which demonstrates the bug. The grammar file
|
||||||
|
should also be complete (i.e., I should be able to run it through
|
||||||
|
Bison without having to edit or add anything). The smaller and
|
||||||
|
simpler the grammar, the easier it will be to fix the bug.
|
||||||
|
|
||||||
|
Include information about your compilation environment, including
|
||||||
|
your operating system's name and version and your compiler's name
|
||||||
|
and version. If you have trouble compiling, you should also
|
||||||
|
include a transcript of the build session, starting with the
|
||||||
|
invocation of `configure'. Depending on the nature of the bug,
|
||||||
|
you may be asked to send additional files as well (such as
|
||||||
|
`config.h' or `config.cache').
|
||||||
|
|
||||||
|
Patches are most welcome, but not required. That is, do not
|
||||||
|
hesitate to send a bug report just because you can not provide a
|
||||||
|
fix.
|
||||||
|
|
||||||
|
Send bug reports to <[email protected]>.
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
|
Q5. Will Bison ever have C++ support?
|
||||||
|
|
||||||
|
A5. Yes, it's in the works. Things are very chaotic right now, but
|
||||||
|
what little information floats around is posted to the bug-bison
|
||||||
|
mailing list. If you're interested in testing C++ support when
|
||||||
|
it becomes available, please consider subscribing to the list,
|
||||||
|
especially if you are willing to beta test other releases as
|
||||||
|
well.
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
|
Q6. What is involved in being a beta tester?
|
||||||
|
|
||||||
|
A6. It's not terribly involved. Basically, you would download a test
|
||||||
|
release, compile it, and use it to build and run a parser or two.
|
||||||
|
After that, you would submit either a bug report or a message
|
||||||
|
saying that everything is okay. It is important to report
|
||||||
|
successes as well as failures because test releases eventually
|
||||||
|
become mainstream releases, but only if they are adequately
|
||||||
|
tested. If no one tests, development is essentially halted.
|
||||||
|
|
||||||
|
Beta testers are particularly needed for operating systems to
|
||||||
|
which I do not have access. I currently have easy access to
|
||||||
|
Linux (x86 glibc 2.1), Solaris (SPARC) 2.6 and 2.7, and HP-UX
|
||||||
|
10.20. Reports about other operating systems are especially
|
||||||
|
welcome.
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
|
Q7. How do I join the help-bison and bug-bison mailing lists?
|
||||||
|
|
||||||
|
A7. See http://www.gnu.org/ (the section about "GNU mailing lists")
|
||||||
|
for more information.
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
+3
-55
@@ -1,67 +1,15 @@
|
|||||||
## Process this file with automake to produce Makefile.in -*-Makefile-*-
|
## Process this file with automake to produce Makefile.in -*-Makefile-*-
|
||||||
## Copyright (C) 2001, 2002, 2003, 2005, 2006 Free Software Foundation, Inc.
|
AUTOMAKE_OPTIONS = 1.4
|
||||||
|
|
||||||
## 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
|
|
||||||
|
|
||||||
AM_MAKEINFOFLAGS = --no-split
|
|
||||||
info_TEXINFOS = bison.texinfo
|
info_TEXINFOS = bison.texinfo
|
||||||
man_MANS = bison.1
|
man_MANS = bison.1
|
||||||
bison_TEXINFOS = gpl.texi fdl.texi
|
bison_TEXINFOS = gpl.texi fdl.texi
|
||||||
|
|
||||||
EXTRA_DIST = bison.1 refcard.tex
|
EXTRA_DIST = FAQ bison.1 bison.rnh refcard.tex
|
||||||
|
|
||||||
CLEANFILES = refcard.dvi refcard.log refcard.ps bison.fns
|
CLEANFILES = refcard.dvi refcard.log refcard.ps
|
||||||
CLEANDIRS = *.t2d
|
|
||||||
clean-local:
|
|
||||||
rm -rf $(CLEANDIRS)
|
|
||||||
|
|
||||||
refcard.dvi: refcard.tex
|
refcard.dvi: refcard.tex
|
||||||
tex refcard.tex
|
tex refcard.tex
|
||||||
|
|
||||||
refcard.ps: refcard.dvi
|
refcard.ps: refcard.dvi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## -------------- ##
|
|
||||||
## Doxygenation. ##
|
|
||||||
## -------------- ##
|
|
||||||
|
|
||||||
DOXYGEN = doxygen
|
|
||||||
|
|
||||||
.PHONY: doc html
|
|
||||||
|
|
||||||
doc: html
|
|
||||||
|
|
||||||
html-local: Doxyfile
|
|
||||||
$(DOXYGEN)
|
|
||||||
|
|
||||||
edit = sed -e "s|@ID@|$$Id|" \
|
|
||||||
-e 's,@PACKAGE_NAME\@,$(PACKAGE_NAME),g' \
|
|
||||||
-e 's,@PACKAGE_VERSION\@,$(PACKAGE_VERSION),g' \
|
|
||||||
-e 's,@top_builddir\@,$(top_builddir),g' \
|
|
||||||
-e 's,@top_srcdir\@,$(top_srcdir),g'
|
|
||||||
|
|
||||||
EXTRA_DIST += Doxyfile.in
|
|
||||||
CLEANFILES += Doxyfile
|
|
||||||
# Sed is used to generate Doxyfile from Doxyfile.in instead of
|
|
||||||
# configure, because the former is way faster than the latter.
|
|
||||||
# Moreover, this file is updated whenever ChangeLog is touched: using
|
|
||||||
# sed instead of configure saves us a lot of time.
|
|
||||||
Doxyfile: $(top_srcdir)/ChangeLog $(srcdir)/Doxyfile.in
|
|
||||||
Id=`grep '^\$$Id' $(top_srcdir)/ChangeLog`; \
|
|
||||||
$(edit) $(srcdir)/Doxyfile.in >Doxyfile
|
|
||||||
|
|
||||||
CLEANDIRS += html latex
|
|
||||||
|
|||||||
+404
@@ -0,0 +1,404 @@
|
|||||||
|
# Makefile.in generated automatically by automake 1.5a from Makefile.am.
|
||||||
|
|
||||||
|
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
|
||||||
|
# Free Software Foundation, Inc.
|
||||||
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||||
|
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
|
# PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
@SET_MAKE@
|
||||||
|
|
||||||
|
SHELL = @SHELL@
|
||||||
|
|
||||||
|
srcdir = @srcdir@
|
||||||
|
top_srcdir = @top_srcdir@
|
||||||
|
VPATH = @srcdir@
|
||||||
|
prefix = @prefix@
|
||||||
|
exec_prefix = @exec_prefix@
|
||||||
|
|
||||||
|
bindir = @bindir@
|
||||||
|
sbindir = @sbindir@
|
||||||
|
libexecdir = @libexecdir@
|
||||||
|
datadir = @datadir@
|
||||||
|
sysconfdir = @sysconfdir@
|
||||||
|
sharedstatedir = @sharedstatedir@
|
||||||
|
localstatedir = @localstatedir@
|
||||||
|
libdir = @libdir@
|
||||||
|
infodir = @infodir@
|
||||||
|
mandir = @mandir@
|
||||||
|
includedir = @includedir@
|
||||||
|
oldincludedir = /usr/include
|
||||||
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
|
top_builddir = ..
|
||||||
|
|
||||||
|
ACLOCAL = @ACLOCAL@
|
||||||
|
AUTOCONF = @AUTOCONF@
|
||||||
|
AUTOMAKE = @AUTOMAKE@
|
||||||
|
AUTOHEADER = @AUTOHEADER@
|
||||||
|
|
||||||
|
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||||
|
INSTALL = @INSTALL@
|
||||||
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||||
|
INSTALL_HEADER = $(INSTALL_DATA)
|
||||||
|
transform = @program_transform_name@
|
||||||
|
NORMAL_INSTALL = :
|
||||||
|
PRE_INSTALL = :
|
||||||
|
POST_INSTALL = :
|
||||||
|
NORMAL_UNINSTALL = :
|
||||||
|
PRE_UNINSTALL = :
|
||||||
|
POST_UNINSTALL = :
|
||||||
|
host_alias = @host_alias@
|
||||||
|
host_triplet = @host@
|
||||||
|
|
||||||
|
EXEEXT = @EXEEXT@
|
||||||
|
OBJEXT = @OBJEXT@
|
||||||
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
|
AMTAR = @AMTAR@
|
||||||
|
AUTOM4TE = @AUTOM4TE@
|
||||||
|
AWK = @AWK@
|
||||||
|
BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
|
||||||
|
CATALOGS = @CATALOGS@
|
||||||
|
CATOBJEXT = @CATOBJEXT@
|
||||||
|
CC = @CC@
|
||||||
|
CPP = @CPP@
|
||||||
|
DATADIRNAME = @DATADIRNAME@
|
||||||
|
DEPDIR = @DEPDIR@
|
||||||
|
GCC = @GCC@
|
||||||
|
GENCAT = @GENCAT@
|
||||||
|
GLIBC21 = @GLIBC21@
|
||||||
|
GMOFILES = @GMOFILES@
|
||||||
|
GMSGFMT = @GMSGFMT@
|
||||||
|
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||||
|
INSTOBJEXT = @INSTOBJEXT@
|
||||||
|
INTLBISON = @INTLBISON@
|
||||||
|
INTLLIBS = @INTLLIBS@
|
||||||
|
INTLOBJS = @INTLOBJS@
|
||||||
|
INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@
|
||||||
|
LIBICONV = @LIBICONV@
|
||||||
|
LIBOBJS = @LIBOBJS@
|
||||||
|
MKINSTALLDIRS = @MKINSTALLDIRS@
|
||||||
|
MSGFMT = @MSGFMT@
|
||||||
|
PACKAGE = @PACKAGE@
|
||||||
|
POFILES = @POFILES@
|
||||||
|
POSUB = @POSUB@
|
||||||
|
RANLIB = @RANLIB@
|
||||||
|
U = @U@
|
||||||
|
USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
|
||||||
|
USE_NLS = @USE_NLS@
|
||||||
|
VERSION = @VERSION@
|
||||||
|
WARNING_CFLAGS = @WARNING_CFLAGS@
|
||||||
|
am__include = @am__include@
|
||||||
|
am__quote = @am__quote@
|
||||||
|
install_sh = @install_sh@
|
||||||
|
|
||||||
|
AUTOMAKE_OPTIONS = 1.4
|
||||||
|
|
||||||
|
info_TEXINFOS = bison.texinfo
|
||||||
|
man_MANS = bison.1
|
||||||
|
bison_TEXINFOS = gpl.texi fdl.texi
|
||||||
|
|
||||||
|
EXTRA_DIST = FAQ bison.1 bison.rnh refcard.tex
|
||||||
|
|
||||||
|
CLEANFILES = refcard.dvi refcard.log refcard.ps
|
||||||
|
subdir = doc
|
||||||
|
mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
|
||||||
|
CONFIG_HEADER = $(top_builddir)/config.h
|
||||||
|
CONFIG_CLEAN_FILES =
|
||||||
|
DIST_SOURCES =
|
||||||
|
TEXINFO_TEX = $(top_srcdir)/config/texinfo.tex
|
||||||
|
INFO_DEPS = bison.info
|
||||||
|
DVIS = bison.dvi
|
||||||
|
TEXINFOS = bison.texinfo
|
||||||
|
|
||||||
|
NROFF = nroff
|
||||||
|
MANS = $(man_MANS)
|
||||||
|
DIST_COMMON = $(bison_TEXINFOS) Makefile.am Makefile.in stamp-vti \
|
||||||
|
version.texi
|
||||||
|
all: all-am
|
||||||
|
|
||||||
|
.SUFFIXES:
|
||||||
|
.SUFFIXES: .dvi .info .ps .texinfo
|
||||||
|
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||||
|
cd $(top_srcdir) && \
|
||||||
|
$(AUTOMAKE) --gnu doc/Makefile
|
||||||
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||||
|
cd $(top_builddir) && \
|
||||||
|
CONFIG_HEADERS= CONFIG_LINKS= \
|
||||||
|
CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status
|
||||||
|
|
||||||
|
$(srcdir)/version.texi: $(srcdir)/stamp-vti
|
||||||
|
@:
|
||||||
|
$(srcdir)/stamp-vti: bison.texinfo $(top_srcdir)/configure.in
|
||||||
|
@(set `$(SHELL) $(top_srcdir)/config/mdate-sh $(srcdir)/bison.texinfo`; \
|
||||||
|
echo "@set UPDATED $$1 $$2 $$3"; \
|
||||||
|
echo "@set UPDATED-MONTH $$2 $$3"; \
|
||||||
|
echo "@set EDITION $(VERSION)"; \
|
||||||
|
echo "@set VERSION $(VERSION)") > vti.tmp
|
||||||
|
@cmp -s vti.tmp $(srcdir)/version.texi \
|
||||||
|
|| (echo "Updating $(srcdir)/version.texi"; \
|
||||||
|
cp vti.tmp $(srcdir)/version.texi)
|
||||||
|
-@rm -f vti.tmp
|
||||||
|
@cp $(srcdir)/version.texi $@
|
||||||
|
|
||||||
|
mostlyclean-vti:
|
||||||
|
-rm -f vti.tmp
|
||||||
|
|
||||||
|
maintainer-clean-vti:
|
||||||
|
-rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi
|
||||||
|
|
||||||
|
bison.info: bison.texinfo $(srcdir)/version.texi $(bison_TEXINFOS)
|
||||||
|
bison.dvi: bison.texinfo $(srcdir)/version.texi $(bison_TEXINFOS)
|
||||||
|
|
||||||
|
.texinfo.info:
|
||||||
|
@cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
|
||||||
|
cd $(srcdir) \
|
||||||
|
&& $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) \
|
||||||
|
`echo $< | sed 's,.*/,,'`
|
||||||
|
|
||||||
|
.texinfo.dvi:
|
||||||
|
TEXINPUTS="$(top_srcdir)/config$(PATH_SEPARATOR)$$TEXINPUTS" \
|
||||||
|
MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
|
||||||
|
$(TEXI2DVI) $<
|
||||||
|
|
||||||
|
.texinfo:
|
||||||
|
@cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
|
||||||
|
cd $(srcdir) \
|
||||||
|
&& $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) \
|
||||||
|
`echo $< | sed 's,.*/,,'`
|
||||||
|
|
||||||
|
MAKEINFO = @MAKEINFO@
|
||||||
|
TEXI2DVI = texi2dvi
|
||||||
|
DVIPS = dvips
|
||||||
|
.dvi.ps:
|
||||||
|
$(DVIPS) $< -o $@
|
||||||
|
|
||||||
|
uninstall-info-am:
|
||||||
|
$(PRE_UNINSTALL)
|
||||||
|
@if (install-info --version && \
|
||||||
|
install-info --version | fgrep -i -v debian) >/dev/null 2>&1; then \
|
||||||
|
list='$(INFO_DEPS)'; \
|
||||||
|
for file in $$list; do \
|
||||||
|
echo " install-info --info-dir=$(DESTDIR)$(infodir) --remove $(DESTDIR)$(infodir)/$$file"; \
|
||||||
|
install-info --info-dir=$(DESTDIR)$(infodir) --remove $(DESTDIR)$(infodir)/$$file; \
|
||||||
|
done; \
|
||||||
|
else :; fi
|
||||||
|
@$(NORMAL_UNINSTALL)
|
||||||
|
@list='$(INFO_DEPS)'; \
|
||||||
|
for file in $$list; do \
|
||||||
|
(if cd $(DESTDIR)$(infodir); then \
|
||||||
|
echo " rm -f $$file $$file-[0-9] $$file-[0-9][0-9])"; \
|
||||||
|
rm -f $$file $$file-[0-9] $$file-[0-9][0-9]; \
|
||||||
|
else :; fi); \
|
||||||
|
done
|
||||||
|
|
||||||
|
dist-info: $(INFO_DEPS)
|
||||||
|
list='$(INFO_DEPS)'; \
|
||||||
|
for base in $$list; do \
|
||||||
|
d=$(srcdir); \
|
||||||
|
for file in $$d/$$base*; do \
|
||||||
|
relfile=`expr "$$file" : "$$d/\(.*\)"`; \
|
||||||
|
test -f $(distdir)/$$relfile || \
|
||||||
|
cp -p $$file $(distdir)/$$relfile; \
|
||||||
|
done; \
|
||||||
|
done
|
||||||
|
|
||||||
|
mostlyclean-aminfo:
|
||||||
|
-rm -f bison.aux bison.cp bison.cps bison.dvi bison.fn bison.ky bison.log \
|
||||||
|
bison.pg bison.ps bison.toc bison.tp bison.vr
|
||||||
|
|
||||||
|
maintainer-clean-aminfo:
|
||||||
|
cd $(srcdir) && \
|
||||||
|
for i in $(INFO_DEPS); do \
|
||||||
|
rm -f $$i; \
|
||||||
|
if test "`echo $$i-[0-9]*`" != "$$i-[0-9]*"; then \
|
||||||
|
rm -f $$i-[0-9]*; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
|
||||||
|
man1dir = $(mandir)/man1
|
||||||
|
install-man1: $(man1_MANS) $(man_MANS)
|
||||||
|
@$(NORMAL_INSTALL)
|
||||||
|
$(mkinstalldirs) $(DESTDIR)$(man1dir)
|
||||||
|
@list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
|
||||||
|
l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
|
||||||
|
for i in $$l2; do \
|
||||||
|
case "$$i" in \
|
||||||
|
*.1*) list="$$list $$i" ;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
for i in $$list; do \
|
||||||
|
if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
|
||||||
|
else file=$$i; fi; \
|
||||||
|
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
|
||||||
|
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
|
||||||
|
inst=`echo $$inst | sed -e 's/^.*\///'`; \
|
||||||
|
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
|
||||||
|
echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst"; \
|
||||||
|
$(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst; \
|
||||||
|
done
|
||||||
|
uninstall-man1:
|
||||||
|
@$(NORMAL_UNINSTALL)
|
||||||
|
@list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
|
||||||
|
l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
|
||||||
|
for i in $$l2; do \
|
||||||
|
case "$$i" in \
|
||||||
|
*.1*) list="$$list $$i" ;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
for i in $$list; do \
|
||||||
|
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
|
||||||
|
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
|
||||||
|
inst=`echo $$inst | sed -e 's/^.*\///'`; \
|
||||||
|
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
|
||||||
|
echo " rm -f $(DESTDIR)$(man1dir)/$$inst"; \
|
||||||
|
rm -f $(DESTDIR)$(man1dir)/$$inst; \
|
||||||
|
done
|
||||||
|
tags: TAGS
|
||||||
|
TAGS:
|
||||||
|
|
||||||
|
|
||||||
|
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
|
|
||||||
|
top_distdir = ..
|
||||||
|
distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
|
||||||
|
|
||||||
|
distdir: $(DISTFILES)
|
||||||
|
@for file in $(DISTFILES); do \
|
||||||
|
if test -f $$file; then d=.; else d=$(srcdir); fi; \
|
||||||
|
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||||
|
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||||
|
$(mkinstalldirs) "$(distdir)/$$dir"; \
|
||||||
|
fi; \
|
||||||
|
if test -d $$d/$$file; then \
|
||||||
|
cp -pR $$d/$$file $(distdir) \
|
||||||
|
|| exit 1; \
|
||||||
|
else \
|
||||||
|
test -f $(distdir)/$$file \
|
||||||
|
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||||
|
|| exit 1; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) \
|
||||||
|
top_distdir="${top_distdir}" distdir="$(distdir)" \
|
||||||
|
dist-info
|
||||||
|
check-am: all-am
|
||||||
|
check: check-am
|
||||||
|
all-am: Makefile $(INFO_DEPS) $(MANS)
|
||||||
|
|
||||||
|
installdirs:
|
||||||
|
$(mkinstalldirs) $(DESTDIR)$(infodir) $(DESTDIR)$(man1dir)
|
||||||
|
|
||||||
|
install: install-am
|
||||||
|
install-exec: install-exec-am
|
||||||
|
install-data: install-data-am
|
||||||
|
uninstall: uninstall-am
|
||||||
|
|
||||||
|
install-am: all-am
|
||||||
|
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||||
|
|
||||||
|
installcheck: installcheck-am
|
||||||
|
install-strip:
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
|
`test -z '$(STRIP)' || \
|
||||||
|
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||||
|
mostlyclean-generic:
|
||||||
|
|
||||||
|
clean-generic:
|
||||||
|
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
|
||||||
|
|
||||||
|
distclean-generic:
|
||||||
|
-rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]*
|
||||||
|
|
||||||
|
maintainer-clean-generic:
|
||||||
|
@echo "This command is intended for maintainers to use"
|
||||||
|
@echo "it deletes files that may require special tools to rebuild."
|
||||||
|
clean: clean-am
|
||||||
|
|
||||||
|
clean-am: clean-generic mostlyclean-am
|
||||||
|
|
||||||
|
distclean: distclean-am
|
||||||
|
|
||||||
|
distclean-am: clean-am distclean-generic
|
||||||
|
|
||||||
|
dvi: dvi-am
|
||||||
|
|
||||||
|
dvi-am: $(DVIS)
|
||||||
|
|
||||||
|
info: info-am
|
||||||
|
|
||||||
|
info-am: $(INFO_DEPS)
|
||||||
|
|
||||||
|
install-data-am: install-info-am install-man
|
||||||
|
|
||||||
|
install-exec-am:
|
||||||
|
|
||||||
|
install-info: install-info-am
|
||||||
|
|
||||||
|
install-info-am: $(INFO_DEPS)
|
||||||
|
@$(NORMAL_INSTALL)
|
||||||
|
$(mkinstalldirs) $(DESTDIR)$(infodir)
|
||||||
|
@list='$(INFO_DEPS)'; \
|
||||||
|
for file in $$list; do \
|
||||||
|
d=$(srcdir); \
|
||||||
|
for ifile in echo $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9]; do \
|
||||||
|
if test -f $$ifile; then \
|
||||||
|
relfile=`expr "$$ifile" : "$$d/\(.*\)"`; \
|
||||||
|
echo " $(INSTALL_DATA) $$ifile $(DESTDIR)$(infodir)/$$relfile"; \
|
||||||
|
$(INSTALL_DATA) $$ifile $(DESTDIR)$(infodir)/$$relfile; \
|
||||||
|
else : ; fi; \
|
||||||
|
done; \
|
||||||
|
done
|
||||||
|
@$(POST_INSTALL)
|
||||||
|
@if (install-info --version && \
|
||||||
|
install-info --version | fgrep -i -v debian) >/dev/null 2>&1; then \
|
||||||
|
list='$(INFO_DEPS)'; \
|
||||||
|
for file in $$list; do \
|
||||||
|
echo " install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file";\
|
||||||
|
install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file || :;\
|
||||||
|
done; \
|
||||||
|
else : ; fi
|
||||||
|
install-man: install-man1
|
||||||
|
|
||||||
|
installcheck-am:
|
||||||
|
|
||||||
|
maintainer-clean: maintainer-clean-am
|
||||||
|
|
||||||
|
maintainer-clean-am: distclean-am maintainer-clean-aminfo \
|
||||||
|
maintainer-clean-generic maintainer-clean-vti
|
||||||
|
|
||||||
|
mostlyclean: mostlyclean-am
|
||||||
|
|
||||||
|
mostlyclean-am: mostlyclean-aminfo mostlyclean-generic mostlyclean-vti
|
||||||
|
|
||||||
|
uninstall-am: uninstall-info-am uninstall-man
|
||||||
|
|
||||||
|
uninstall-man: uninstall-man1
|
||||||
|
|
||||||
|
.PHONY: all all-am check check-am clean clean-generic dist-info \
|
||||||
|
distclean distclean-generic distdir dvi dvi-am info info-am \
|
||||||
|
install install-am install-data install-data-am install-exec \
|
||||||
|
install-exec-am install-info install-info-am install-man \
|
||||||
|
install-man1 install-strip installcheck installcheck-am \
|
||||||
|
installdirs maintainer-clean maintainer-clean-aminfo \
|
||||||
|
maintainer-clean-generic maintainer-clean-vti mostlyclean \
|
||||||
|
mostlyclean-aminfo mostlyclean-generic mostlyclean-vti \
|
||||||
|
uninstall uninstall-am uninstall-info-am uninstall-man \
|
||||||
|
uninstall-man1
|
||||||
|
|
||||||
|
|
||||||
|
refcard.dvi: refcard.tex
|
||||||
|
tex refcard.tex
|
||||||
|
|
||||||
|
refcard.ps: refcard.dvi
|
||||||
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
|
.NOEXPORT:
|
||||||
+44
-42
@@ -59,11 +59,6 @@ bison \- GNU Project parser generator (yacc replacement)
|
|||||||
.B \-\-fixed-output-files
|
.B \-\-fixed-output-files
|
||||||
]
|
]
|
||||||
file
|
file
|
||||||
.br
|
|
||||||
.B yacc
|
|
||||||
[
|
|
||||||
.I "similar options and operands"
|
|
||||||
]
|
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
.I Bison
|
.I Bison
|
||||||
is a parser generator in the style of
|
is a parser generator in the style of
|
||||||
@@ -80,10 +75,10 @@ Unlike
|
|||||||
.IR yacc ,
|
.IR yacc ,
|
||||||
the generated files do not have fixed names, but instead use the prefix
|
the generated files do not have fixed names, but instead use the prefix
|
||||||
of the input file.
|
of the input file.
|
||||||
Moreover, if you need to put
|
Moreover, if you need to put
|
||||||
.I C++
|
.IR C++
|
||||||
code in the input file, you can end his name by a C++-like extension
|
code in the input file, you can end his name by a C++-like extension
|
||||||
(.ypp or .y++), then bison will follow your extension to name the
|
(.ypp or .y++), then bison will follow your extension to name the
|
||||||
output file (.cpp or .c++).
|
output file (.cpp or .c++).
|
||||||
For instance, a grammar description file named
|
For instance, a grammar description file named
|
||||||
.B parse.yxx
|
.B parse.yxx
|
||||||
@@ -91,10 +86,10 @@ would produce the generated parser in a file named
|
|||||||
.BR parse.tab.cxx ,
|
.BR parse.tab.cxx ,
|
||||||
instead of
|
instead of
|
||||||
.IR yacc 's
|
.IR yacc 's
|
||||||
.B y.tab.c
|
.BR y.tab.c
|
||||||
or old
|
or old
|
||||||
.I Bison
|
.IR Bison
|
||||||
version's
|
versions
|
||||||
.BR parse.tab.c .
|
.BR parse.tab.c .
|
||||||
.PP
|
.PP
|
||||||
This description of the options that can be given to
|
This description of the options that can be given to
|
||||||
@@ -127,7 +122,7 @@ Specify a prefix to use for all
|
|||||||
.I bison
|
.I bison
|
||||||
output file names. The names are
|
output file names. The names are
|
||||||
chosen as if the input file were named
|
chosen as if the input file were named
|
||||||
\fIfile-prefix\fP\fB.c\fP.
|
\fIfile-prefix\fB.c\fR.
|
||||||
.TP
|
.TP
|
||||||
.B \-d
|
.B \-d
|
||||||
.br
|
.br
|
||||||
@@ -140,10 +135,10 @@ as well as a few
|
|||||||
variable declarations.
|
variable declarations.
|
||||||
.sp
|
.sp
|
||||||
If the parser output file is named
|
If the parser output file is named
|
||||||
.IB name .c
|
\fIname\fB.c\fR
|
||||||
then this file
|
then this file
|
||||||
is named
|
is named
|
||||||
\fIname\fP\fB.h\fP.
|
\fIname\fB.h\fR.
|
||||||
.sp
|
.sp
|
||||||
This output file is essential if you wish to put the definition of
|
This output file is essential if you wish to put the definition of
|
||||||
.B yylex
|
.B yylex
|
||||||
@@ -153,29 +148,29 @@ needs to be able to refer to token type codes and the variable
|
|||||||
.BR yylval .
|
.BR yylval .
|
||||||
.TP
|
.TP
|
||||||
.BI \-\-defines= defines-file
|
.BI \-\-defines= defines-file
|
||||||
The behavior of
|
The behaviour of
|
||||||
.B \-\-defines
|
.BI \-\-defines
|
||||||
is the same than
|
is the same than
|
||||||
.B \-d
|
.BI \-d
|
||||||
option.
|
option.
|
||||||
The only difference is that it has an optional argument which is
|
The only difference is that it has an optionnal argument which is
|
||||||
the name of the output filename.
|
the name of the output filename.
|
||||||
.TP
|
.TP
|
||||||
.BI \-g
|
.BI \-g
|
||||||
.br
|
.br
|
||||||
.ns
|
.ns
|
||||||
Output a VCG definition of the LALR(1) grammar automaton computed by
|
Output a VCG definition of the LALR(1) grammar automaton computed by
|
||||||
Bison. If the grammar file is
|
Bison. If the grammar file is
|
||||||
.BR foo.y
|
.BR foo.y
|
||||||
, the VCG output file will be
|
, the VCG output file will be
|
||||||
.BR foo.vcg .
|
.BR foo.vcg .
|
||||||
.TP
|
.TP
|
||||||
.BI \-\-graph= graph-file
|
.BI \-\-graph= graph-file
|
||||||
The behavior of
|
The behaviour of
|
||||||
.BI \-\-graph
|
.BI \-\-graph
|
||||||
is the same than
|
is the same than
|
||||||
.BI \-g
|
.BI \-g
|
||||||
option. The only difference is that it has an optional argument which
|
option. The only difference is that it has an optionnal argument which
|
||||||
is the name of the output graph filename.
|
is the name of the output graph filename.
|
||||||
.TP
|
.TP
|
||||||
.B \-k
|
.B \-k
|
||||||
@@ -183,10 +178,8 @@ is the name of the output graph filename.
|
|||||||
.ns
|
.ns
|
||||||
.TP
|
.TP
|
||||||
.B \-\-token-table
|
.B \-\-token-table
|
||||||
This switch causes the
|
This switch causes the \fIname\fB.tab.c\fR output to include a list of
|
||||||
.IB name .tab.c
|
token names in order by their token numbers; this is defined in the array
|
||||||
output to include a list of
|
|
||||||
token names in order by their token numbers; this is defined in the array
|
|
||||||
.IR yytname .
|
.IR yytname .
|
||||||
Also generated
|
Also generated
|
||||||
are #defines for
|
are #defines for
|
||||||
@@ -216,13 +209,9 @@ parser file, treating it an independent source file in its own right.
|
|||||||
.ns
|
.ns
|
||||||
.TP
|
.TP
|
||||||
.B \-\-no-parser
|
.B \-\-no-parser
|
||||||
Do not generate the parser code into the output; generate only
|
Do not generate the parser code into the output; generate only
|
||||||
declarations. The generated
|
declarations. The generated \fIname\fB.tab.c\fR file will have only
|
||||||
.IB name .tab.c
|
constant declarations. In addition, a \fIname\fB.act\fR file is
|
||||||
file will have only
|
|
||||||
constant declarations. In addition, a
|
|
||||||
.IB name .act
|
|
||||||
file is
|
|
||||||
generated containing a switch statement body containing all the
|
generated containing a switch statement body containing all the
|
||||||
translated actions.
|
translated actions.
|
||||||
.TP
|
.TP
|
||||||
@@ -273,9 +262,9 @@ and so on.
|
|||||||
.ns
|
.ns
|
||||||
.TP
|
.TP
|
||||||
.B \-\-debug
|
.B \-\-debug
|
||||||
In the parser file, define the macro
|
Output a definition of the macro
|
||||||
.B YYDEBUG
|
.B YYDEBUG
|
||||||
to 1 if it is not already defined,
|
into the parser file,
|
||||||
so that the debugging facilities are compiled.
|
so that the debugging facilities are compiled.
|
||||||
.TP
|
.TP
|
||||||
.B \-v
|
.B \-v
|
||||||
@@ -284,7 +273,7 @@ so that the debugging facilities are compiled.
|
|||||||
.TP
|
.TP
|
||||||
.B \-\-verbose
|
.B \-\-verbose
|
||||||
Write an extra output file containing verbose descriptions of the
|
Write an extra output file containing verbose descriptions of the
|
||||||
parser states and what is done for each type of lookahead token in
|
parser states and what is done for each type of look-ahead token in
|
||||||
that state.
|
that state.
|
||||||
.sp
|
.sp
|
||||||
This file also describes all the conflicts, both those resolved by
|
This file also describes all the conflicts, both those resolved by
|
||||||
@@ -345,16 +334,29 @@ The purpose of this switch is to imitate
|
|||||||
.IR yacc 's
|
.IR yacc 's
|
||||||
output file name conventions.
|
output file name conventions.
|
||||||
Thus, the following shell script can substitute for
|
Thus, the following shell script can substitute for
|
||||||
.I yacc
|
|
||||||
and is often installed as
|
|
||||||
.IR yacc :
|
.IR yacc :
|
||||||
.sp
|
.sp
|
||||||
.RS
|
.RS
|
||||||
.ft B
|
.ft B
|
||||||
bison \-y "$@"
|
bison \-y $*
|
||||||
.ft R
|
.ft R
|
||||||
.sp
|
.sp
|
||||||
.RE
|
.RE
|
||||||
|
.SH FILES
|
||||||
|
/usr/local/share/bison/bison.simple simple parser
|
||||||
|
.br
|
||||||
|
/usr/local/share/bison/bison.hairy complicated parser
|
||||||
|
.SH "ENVIRONMENT VARIABLES"
|
||||||
|
.TP
|
||||||
|
.SM BISON_SIMPLE
|
||||||
|
If this is set, it specifies the location in which the
|
||||||
|
.B bison.simple
|
||||||
|
parser can be found.
|
||||||
|
.TP
|
||||||
|
.SM BISON_HAIRY
|
||||||
|
If this is set, it specifies the location in which the
|
||||||
|
.B bison.hairy
|
||||||
|
parser can be found.
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.IR yacc (1)
|
.IR yacc (1)
|
||||||
.br
|
.br
|
||||||
|
|||||||
+145
@@ -0,0 +1,145 @@
|
|||||||
|
Ceci est le fichier Info bison.info, produit par Makeinfo version 4.0b
|
||||||
|
à partir bison.texinfo.
|
||||||
|
|
||||||
|
START-INFO-DIR-ENTRY
|
||||||
|
* bison: (bison). GNU Project parser generator (yacc replacement).
|
||||||
|
END-INFO-DIR-ENTRY
|
||||||
|
|
||||||
|
This file documents the Bison parser generator.
|
||||||
|
|
||||||
|
Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1995, 1998, 1999,
|
||||||
|
2000, 2001 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
Permission is granted to make and distribute verbatim copies of this
|
||||||
|
manual provided the copyright notice and this permission notice are
|
||||||
|
preserved on all copies.
|
||||||
|
|
||||||
|
Permission is granted to copy and distribute modified versions of
|
||||||
|
this manual under the conditions for verbatim copying, provided also
|
||||||
|
that the sections entitled "GNU General Public License" and "Conditions
|
||||||
|
for Using Bison" are included exactly as in the original, and provided
|
||||||
|
that the entire resulting derived work is distributed under the terms
|
||||||
|
of a permission notice identical to this one.
|
||||||
|
|
||||||
|
Permission is granted to copy and distribute translations of this
|
||||||
|
manual into another language, under the above conditions for modified
|
||||||
|
versions, except that the sections entitled "GNU General Public
|
||||||
|
License", "Conditions for Using Bison" and this permission notice may be
|
||||||
|
included in translations approved by the Free Software Foundation
|
||||||
|
instead of in the original English.
|
||||||
|
|
||||||
|
|
||||||
|
Indirect:
|
||||||
|
bison.info-1: 1313
|
||||||
|
bison.info-2: 50691
|
||||||
|
bison.info-3: 100581
|
||||||
|
bison.info-4: 150131
|
||||||
|
bison.info-5: 197908
|
||||||
|
|
||||||
|
Tag Table:
|
||||||
|
(Indirect)
|
||||||
|
Node: Top1313
|
||||||
|
Node: Introduction8969
|
||||||
|
Node: Conditions10244
|
||||||
|
Node: Copying11708
|
||||||
|
Node: Concepts30911
|
||||||
|
Node: Language and Grammar31990
|
||||||
|
Node: Grammar in Bison37006
|
||||||
|
Node: Semantic Values38930
|
||||||
|
Node: Semantic Actions41031
|
||||||
|
Node: Locations Overview42220
|
||||||
|
Node: Bison Parser43667
|
||||||
|
Node: Stages45979
|
||||||
|
Node: Grammar Layout47262
|
||||||
|
Node: Examples48519
|
||||||
|
Node: RPN Calc49717
|
||||||
|
Node: Rpcalc Decls50691
|
||||||
|
Node: Rpcalc Rules52278
|
||||||
|
Node: Rpcalc Input54078
|
||||||
|
Node: Rpcalc Line55539
|
||||||
|
Node: Rpcalc Expr56654
|
||||||
|
Node: Rpcalc Lexer58599
|
||||||
|
Node: Rpcalc Main61171
|
||||||
|
Node: Rpcalc Error61569
|
||||||
|
Node: Rpcalc Gen62577
|
||||||
|
Node: Rpcalc Compile63726
|
||||||
|
Node: Infix Calc64601
|
||||||
|
Node: Simple Error Recovery67308
|
||||||
|
Node: Location Tracking Calc69197
|
||||||
|
Node: Ltcalc Decls69927
|
||||||
|
Node: Ltcalc Rules70836
|
||||||
|
Node: Ltcalc Lexer72897
|
||||||
|
Node: Multi-function Calc75235
|
||||||
|
Node: Mfcalc Decl76802
|
||||||
|
Node: Mfcalc Rules78825
|
||||||
|
Node: Mfcalc Symtab80205
|
||||||
|
Node: Exercises86578
|
||||||
|
Node: Grammar File87084
|
||||||
|
Node: Grammar Outline87932
|
||||||
|
Node: C Declarations88666
|
||||||
|
Node: Bison Declarations89246
|
||||||
|
Node: Grammar Rules89658
|
||||||
|
Node: C Code90118
|
||||||
|
Node: Symbols91048
|
||||||
|
Node: Rules96129
|
||||||
|
Node: Recursion97768
|
||||||
|
Node: Semantics99487
|
||||||
|
Node: Value Type100581
|
||||||
|
Node: Multiple Types101253
|
||||||
|
Node: Actions102270
|
||||||
|
Node: Action Types105055
|
||||||
|
Node: Mid-Rule Actions106358
|
||||||
|
Node: Locations111928
|
||||||
|
Node: Location Type112576
|
||||||
|
Node: Actions and Locations113134
|
||||||
|
Node: Location Default Action115290
|
||||||
|
Node: Declarations116753
|
||||||
|
Node: Token Decl118072
|
||||||
|
Node: Precedence Decl120085
|
||||||
|
Node: Union Decl121636
|
||||||
|
Node: Type Decl122480
|
||||||
|
Node: Expect Decl123386
|
||||||
|
Node: Start Decl124932
|
||||||
|
Node: Pure Decl125310
|
||||||
|
Node: Decl Summary126987
|
||||||
|
Node: Multiple Parsers132370
|
||||||
|
Node: Interface133864
|
||||||
|
Node: Parser Function134736
|
||||||
|
Node: Lexical135571
|
||||||
|
Node: Calling Convention136977
|
||||||
|
Node: Token Values139748
|
||||||
|
Node: Token Positions140897
|
||||||
|
Node: Pure Calling141782
|
||||||
|
Node: Error Reporting144714
|
||||||
|
Node: Action Features146836
|
||||||
|
Node: Algorithm150131
|
||||||
|
Node: Look-Ahead152424
|
||||||
|
Node: Shift/Reduce154556
|
||||||
|
Node: Precedence157468
|
||||||
|
Node: Why Precedence158119
|
||||||
|
Node: Using Precedence159984
|
||||||
|
Node: Precedence Examples160952
|
||||||
|
Node: How Precedence161653
|
||||||
|
Node: Contextual Precedence162802
|
||||||
|
Node: Parser States164593
|
||||||
|
Node: Reduce/Reduce165836
|
||||||
|
Node: Mystery Conflicts169397
|
||||||
|
Node: Stack Overflow172783
|
||||||
|
Node: Error Recovery174156
|
||||||
|
Node: Context Dependency179292
|
||||||
|
Node: Semantic Tokens180140
|
||||||
|
Node: Lexical Tie-ins183157
|
||||||
|
Node: Tie-in Recovery184705
|
||||||
|
Node: Debugging186877
|
||||||
|
Node: Invocation190178
|
||||||
|
Node: Bison Options191430
|
||||||
|
Node: Environment Variables195398
|
||||||
|
Node: Option Cross Key196246
|
||||||
|
Node: VMS Invocation197124
|
||||||
|
Node: Table of Symbols197908
|
||||||
|
Node: Glossary205547
|
||||||
|
Node: Copying This Manual211851
|
||||||
|
Node: GNU Free Documentation License212060
|
||||||
|
Node: Index231925
|
||||||
|
|
||||||
|
End Tag Table
|
||||||
+1076
File diff suppressed because it is too large
Load Diff
+1427
File diff suppressed because it is too large
Load Diff
+1317
File diff suppressed because it is too large
Load Diff
+1261
File diff suppressed because it is too large
Load Diff
+1036
File diff suppressed because it is too large
Load Diff
+191
@@ -0,0 +1,191 @@
|
|||||||
|
.!
|
||||||
|
.! RUNOFF source file for BISON.HLP
|
||||||
|
.!
|
||||||
|
.! This is a RUNOFF input file which will produce a VMS help file
|
||||||
|
.! for the VMS HELP library.
|
||||||
|
.!
|
||||||
|
.! Eric Youngdale and Wilfred J. Hansen ([email protected]).
|
||||||
|
.!
|
||||||
|
.literal
|
||||||
|
.end literal
|
||||||
|
.no paging
|
||||||
|
.no flags all
|
||||||
|
.right margin 70
|
||||||
|
.left margin 1
|
||||||
|
|
||||||
|
.indent -1
|
||||||
|
1 BISON
|
||||||
|
.skip
|
||||||
|
The BISON command invokes the GNU BISON parser generator.
|
||||||
|
.skip
|
||||||
|
.literal
|
||||||
|
BISON file-spec
|
||||||
|
.end literal
|
||||||
|
.skip
|
||||||
|
.indent -1
|
||||||
|
2 Parameters
|
||||||
|
.skip
|
||||||
|
file-spec
|
||||||
|
.skip
|
||||||
|
Here file-spec is the grammar file name, which usually ends in
|
||||||
|
.y. The parser file's name is made by replacing the .y
|
||||||
|
with _tab.c. Thus, the command bison foo.y yields
|
||||||
|
foo_tab.c.
|
||||||
|
|
||||||
|
.skip
|
||||||
|
.indent -1
|
||||||
|
2 Qualifiers
|
||||||
|
.skip
|
||||||
|
The following is the list of available qualifiers for BISON:
|
||||||
|
.literal
|
||||||
|
/DEBUG
|
||||||
|
/DEFINES
|
||||||
|
/FILE_PREFIX=prefix
|
||||||
|
/FIXED_OUTFILES
|
||||||
|
/NAME_PREFIX=prefix
|
||||||
|
/NOLINES
|
||||||
|
/NOPARSER
|
||||||
|
/OUTPUT=outfilefile
|
||||||
|
/RAW
|
||||||
|
/TOKEN_TABLE
|
||||||
|
/VERBOSE
|
||||||
|
/VERSION
|
||||||
|
/YACC
|
||||||
|
.end literal
|
||||||
|
.skip
|
||||||
|
.indent -1
|
||||||
|
2 /DEBUG
|
||||||
|
.skip
|
||||||
|
Output a definition of the macro YYDEBUG into the parser file,
|
||||||
|
so that the debugging facilities are compiled.
|
||||||
|
.skip
|
||||||
|
.indent -1
|
||||||
|
2 /DEFINES
|
||||||
|
.skip
|
||||||
|
Write an extra output file containing macro definitions for the token
|
||||||
|
type names defined in the grammar and the semantic value type
|
||||||
|
YYSTYPE, as well as a extern variable declarations.
|
||||||
|
.skip
|
||||||
|
If the parser output file is named "name.c" then this file
|
||||||
|
is named "name.h".
|
||||||
|
.skip
|
||||||
|
This output file is essential if you wish to put the definition of
|
||||||
|
yylex in a separate source file, because yylex needs to
|
||||||
|
be able to refer to token type codes and the variable
|
||||||
|
yylval.
|
||||||
|
.skip
|
||||||
|
.indent -1
|
||||||
|
2 /FILE_PREFIX
|
||||||
|
.skip
|
||||||
|
.literal
|
||||||
|
/FILIE_PREFIX=prefix
|
||||||
|
.end literal
|
||||||
|
.skip
|
||||||
|
Specify a prefix to use for all Bison output file names. The names are
|
||||||
|
chosen as if the input file were named prefix.c
|
||||||
|
|
||||||
|
.skip
|
||||||
|
.indent -1
|
||||||
|
2 /FIXED_OUTFILES
|
||||||
|
.skip
|
||||||
|
Equivalent to /OUTPUT=y_tab.c; the parser output file is called
|
||||||
|
y_tab.c, and the other outputs are called y.output and
|
||||||
|
y_tab.h. The purpose of this switch is to imitate Yacc's output
|
||||||
|
file name conventions. The /YACC qualifier is functionally equivalent
|
||||||
|
to /FIXED_OUTFILES. The following command definition will
|
||||||
|
work as a substitute for Yacc:
|
||||||
|
|
||||||
|
.literal
|
||||||
|
$YACC:==BISON/FIXED_OUTFILES
|
||||||
|
.end literal
|
||||||
|
.skip
|
||||||
|
.indent -1
|
||||||
|
2 /NAME_PREFIX
|
||||||
|
.skip
|
||||||
|
.literal
|
||||||
|
/NAME_PREFIX=prefix
|
||||||
|
.end literal
|
||||||
|
.skip
|
||||||
|
Rename the external symbols used in the parser so that they start with
|
||||||
|
"prefix" instead of "yy". The precise list of symbols renamed
|
||||||
|
is yyparse, yylex, yyerror, yylval, yychar and yydebug.
|
||||||
|
|
||||||
|
For example, if you use /NAME_PREFIX="c", the names become cparse,
|
||||||
|
clex, and so on.
|
||||||
|
|
||||||
|
.skip
|
||||||
|
.indent -1
|
||||||
|
2 /NOLINES
|
||||||
|
.skip
|
||||||
|
Don't put any "#line" preprocessor commands in the parser file.
|
||||||
|
Ordinarily Bison puts them in the parser file so that the C compiler
|
||||||
|
and debuggers will associate errors with your source file, the
|
||||||
|
grammar file. This option causes them to associate errors with the
|
||||||
|
parser file, treating it an independent source file in its own right.
|
||||||
|
.skip
|
||||||
|
.indent -1
|
||||||
|
2 /NOPARSER
|
||||||
|
.skip
|
||||||
|
Do not generate the parser code into the output; generate only
|
||||||
|
declarations. The generated name_tab.c file will have only
|
||||||
|
constant declarations. In addition, a name.act file is
|
||||||
|
generated containing a switch statement body containing all the
|
||||||
|
translated actions.
|
||||||
|
.skip
|
||||||
|
.indent -1
|
||||||
|
2 /OUTPUT
|
||||||
|
.skip
|
||||||
|
.literal
|
||||||
|
/OUTPUT=outfile
|
||||||
|
.end literal
|
||||||
|
.skip
|
||||||
|
Specify the name "outfile" for the parser file.
|
||||||
|
.skip
|
||||||
|
.indent -1
|
||||||
|
2 /RAW
|
||||||
|
.skip
|
||||||
|
When this switch is specified, the .tab.h file defines the tokens to
|
||||||
|
have the bison token numbers rather than the yacc compatible numbers.
|
||||||
|
To employ this switch you would have to have your own parser.
|
||||||
|
.skip
|
||||||
|
.indent -1
|
||||||
|
2 /TOKEN_TABLE
|
||||||
|
.skip
|
||||||
|
This switch causes the name_tab.c output to include a list of
|
||||||
|
token names in order by their token numbers; this is defined in the array
|
||||||
|
yytname. Also generated are #defines for YYNTOKENS, YYNNTS, YYNRULES,
|
||||||
|
and YYNSTATES.
|
||||||
|
|
||||||
|
.skip
|
||||||
|
.indent -1
|
||||||
|
2 /VERBOSE
|
||||||
|
.skip
|
||||||
|
Write an extra output file containing verbose descriptions of the
|
||||||
|
parser states and what is done for each type of look-ahead token in
|
||||||
|
that state.
|
||||||
|
.skip
|
||||||
|
This file also describes all the conflicts, both those resolved by
|
||||||
|
operator precedence and the unresolved ones.
|
||||||
|
.skip
|
||||||
|
The file's name is made by removing _tab.c or .c from
|
||||||
|
the parser output file name, and adding .output instead.
|
||||||
|
.skip
|
||||||
|
Therefore, if the input file is foo.y, then the parser file is
|
||||||
|
called foo_tab.c by default. As a consequence, the verbose
|
||||||
|
output file is called foo.output.
|
||||||
|
.skip
|
||||||
|
.indent -1
|
||||||
|
2 /VERSION
|
||||||
|
.skip
|
||||||
|
Print the version number of Bison.
|
||||||
|
|
||||||
|
.skip
|
||||||
|
.indent -1
|
||||||
|
2 /YACC
|
||||||
|
.skip
|
||||||
|
See /FIXED_OUTFILES.
|
||||||
|
.skip
|
||||||
|
.indent -1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+1229
-4549
File diff suppressed because it is too large
Load Diff
+89
-140
@@ -1,13 +1,12 @@
|
|||||||
|
|
||||||
@node GNU Free Documentation License
|
@node GNU Free Documentation License
|
||||||
@appendixsec GNU Free Documentation License
|
@appendixsec GNU Free Documentation License
|
||||||
|
|
||||||
@cindex FDL, GNU Free Documentation License
|
@cindex FDL, GNU Free Documentation License
|
||||||
@center Version 1.2, November 2002
|
@center Version 1.1, March 2000
|
||||||
|
|
||||||
@display
|
@display
|
||||||
Copyright @copyright{} 2000,2001,2002 Free Software Foundation, Inc.
|
Copyright @copyright{} 2000 Free Software Foundation, Inc.
|
||||||
51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
|
||||||
|
|
||||||
Everyone is permitted to copy and distribute verbatim copies
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
of this license document, but changing it is not allowed.
|
of this license document, but changing it is not allowed.
|
||||||
@@ -18,12 +17,12 @@ of this license document, but changing it is not allowed.
|
|||||||
PREAMBLE
|
PREAMBLE
|
||||||
|
|
||||||
The purpose of this License is to make a manual, textbook, or other
|
The purpose of this License is to make a manual, textbook, or other
|
||||||
functional and useful document @dfn{free} in the sense of freedom: to
|
written document @dfn{free} in the sense of freedom: to assure everyone
|
||||||
assure everyone the effective freedom to copy and redistribute it,
|
the effective freedom to copy and redistribute it, with or without
|
||||||
with or without modifying it, either commercially or noncommercially.
|
modifying it, either commercially or noncommercially. Secondarily,
|
||||||
Secondarily, this License preserves for the author and publisher a way
|
this License preserves for the author and publisher a way to get
|
||||||
to get credit for their work, while not being considered responsible
|
credit for their work, while not being considered responsible for
|
||||||
for modifications made by others.
|
modifications made by others.
|
||||||
|
|
||||||
This License is a kind of ``copyleft'', which means that derivative
|
This License is a kind of ``copyleft'', which means that derivative
|
||||||
works of the document must themselves be free in the same sense. It
|
works of the document must themselves be free in the same sense. It
|
||||||
@@ -41,69 +40,57 @@ principally for works whose purpose is instruction or reference.
|
|||||||
@item
|
@item
|
||||||
APPLICABILITY AND DEFINITIONS
|
APPLICABILITY AND DEFINITIONS
|
||||||
|
|
||||||
This License applies to any manual or other work, in any medium, that
|
This License applies to any manual or other work that contains a
|
||||||
contains a notice placed by the copyright holder saying it can be
|
notice placed by the copyright holder saying it can be distributed
|
||||||
distributed under the terms of this License. Such a notice grants a
|
under the terms of this License. The ``Document'', below, refers to any
|
||||||
world-wide, royalty-free license, unlimited in duration, to use that
|
such manual or work. Any member of the public is a licensee, and is
|
||||||
work under the conditions stated herein. The ``Document'', below,
|
addressed as ``you''.
|
||||||
refers to any such manual or work. Any member of the public is a
|
|
||||||
licensee, and is addressed as ``you''. You accept the license if you
|
|
||||||
copy, modify or distribute the work in a way requiring permission
|
|
||||||
under copyright law.
|
|
||||||
|
|
||||||
A ``Modified Version'' of the Document means any work containing the
|
A ``Modified Version'' of the Document means any work containing the
|
||||||
Document or a portion of it, either copied verbatim, or with
|
Document or a portion of it, either copied verbatim, or with
|
||||||
modifications and/or translated into another language.
|
modifications and/or translated into another language.
|
||||||
|
|
||||||
A ``Secondary Section'' is a named appendix or a front-matter section
|
A ``Secondary Section'' is a named appendix or a front-matter section of
|
||||||
of the Document that deals exclusively with the relationship of the
|
the Document that deals exclusively with the relationship of the
|
||||||
publishers or authors of the Document to the Document's overall
|
publishers or authors of the Document to the Document's overall subject
|
||||||
subject (or to related matters) and contains nothing that could fall
|
(or to related matters) and contains nothing that could fall directly
|
||||||
directly within that overall subject. (Thus, if the Document is in
|
within that overall subject. (For example, if the Document is in part a
|
||||||
part a textbook of mathematics, a Secondary Section may not explain
|
textbook of mathematics, a Secondary Section may not explain any
|
||||||
any mathematics.) The relationship could be a matter of historical
|
mathematics.) The relationship could be a matter of historical
|
||||||
connection with the subject or with related matters, or of legal,
|
connection with the subject or with related matters, or of legal,
|
||||||
commercial, philosophical, ethical or political position regarding
|
commercial, philosophical, ethical or political position regarding
|
||||||
them.
|
them.
|
||||||
|
|
||||||
The ``Invariant Sections'' are certain Secondary Sections whose titles
|
The ``Invariant Sections'' are certain Secondary Sections whose titles
|
||||||
are designated, as being those of Invariant Sections, in the notice
|
are designated, as being those of Invariant Sections, in the notice
|
||||||
that says that the Document is released under this License. If a
|
that says that the Document is released under this License.
|
||||||
section does not fit the above definition of Secondary then it is not
|
|
||||||
allowed to be designated as Invariant. The Document may contain zero
|
|
||||||
Invariant Sections. If the Document does not identify any Invariant
|
|
||||||
Sections then there are none.
|
|
||||||
|
|
||||||
The ``Cover Texts'' are certain short passages of text that are listed,
|
The ``Cover Texts'' are certain short passages of text that are listed,
|
||||||
as Front-Cover Texts or Back-Cover Texts, in the notice that says that
|
as Front-Cover Texts or Back-Cover Texts, in the notice that says that
|
||||||
the Document is released under this License. A Front-Cover Text may
|
the Document is released under this License.
|
||||||
be at most 5 words, and a Back-Cover Text may be at most 25 words.
|
|
||||||
|
|
||||||
A ``Transparent'' copy of the Document means a machine-readable copy,
|
A ``Transparent'' copy of the Document means a machine-readable copy,
|
||||||
represented in a format whose specification is available to the
|
represented in a format whose specification is available to the
|
||||||
general public, that is suitable for revising the document
|
general public, whose contents can be viewed and edited directly and
|
||||||
straightforwardly with generic text editors or (for images composed of
|
straightforwardly with generic text editors or (for images composed of
|
||||||
pixels) generic paint programs or (for drawings) some widely available
|
pixels) generic paint programs or (for drawings) some widely available
|
||||||
drawing editor, and that is suitable for input to text formatters or
|
drawing editor, and that is suitable for input to text formatters or
|
||||||
for automatic translation to a variety of formats suitable for input
|
for automatic translation to a variety of formats suitable for input
|
||||||
to text formatters. A copy made in an otherwise Transparent file
|
to text formatters. A copy made in an otherwise Transparent file
|
||||||
format whose markup, or absence of markup, has been arranged to thwart
|
format whose markup has been designed to thwart or discourage
|
||||||
or discourage subsequent modification by readers is not Transparent.
|
subsequent modification by readers is not Transparent. A copy that is
|
||||||
An image format is not Transparent if used for any substantial amount
|
not ``Transparent'' is called ``Opaque''.
|
||||||
of text. A copy that is not ``Transparent'' is called ``Opaque''.
|
|
||||||
|
|
||||||
Examples of suitable formats for Transparent copies include plain
|
Examples of suitable formats for Transparent copies include plain
|
||||||
@sc{ascii} without markup, Texinfo input format, La@TeX{} input
|
@sc{ascii} without markup, Texinfo input format, La@TeX{} input format,
|
||||||
format, @acronym{SGML} or @acronym{XML} using a publicly available
|
@acronym{SGML} or @acronym{XML} using a publicly available
|
||||||
@acronym{DTD}, and standard-conforming simple @acronym{HTML},
|
@acronym{DTD}, and standard-conforming simple @acronym{HTML} designed
|
||||||
PostScript or @acronym{PDF} designed for human modification. Examples
|
for human modification. Opaque formats include PostScript,
|
||||||
of transparent image formats include @acronym{PNG}, @acronym{XCF} and
|
@acronym{PDF}, proprietary formats that can be read and edited only by
|
||||||
@acronym{JPG}. Opaque formats include proprietary formats that can be
|
proprietary word processors, @acronym{SGML} or @acronym{XML} for which
|
||||||
read and edited only by proprietary word processors, @acronym{SGML} or
|
the @acronym{DTD} and/or processing tools are not generally available,
|
||||||
@acronym{XML} for which the @acronym{DTD} and/or processing tools are
|
and the machine-generated @acronym{HTML} produced by some word
|
||||||
not generally available, and the machine-generated @acronym{HTML},
|
processors for output purposes only.
|
||||||
PostScript or @acronym{PDF} produced by some word processors for
|
|
||||||
output purposes only.
|
|
||||||
|
|
||||||
The ``Title Page'' means, for a printed book, the title page itself,
|
The ``Title Page'' means, for a printed book, the title page itself,
|
||||||
plus such following pages as are needed to hold, legibly, the material
|
plus such following pages as are needed to hold, legibly, the material
|
||||||
@@ -112,21 +99,6 @@ formats which do not have any title page as such, ``Title Page'' means
|
|||||||
the text near the most prominent appearance of the work's title,
|
the text near the most prominent appearance of the work's title,
|
||||||
preceding the beginning of the body of the text.
|
preceding the beginning of the body of the text.
|
||||||
|
|
||||||
A section ``Entitled XYZ'' means a named subunit of the Document whose
|
|
||||||
title either is precisely XYZ or contains XYZ in parentheses following
|
|
||||||
text that translates XYZ in another language. (Here XYZ stands for a
|
|
||||||
specific section name mentioned below, such as ``Acknowledgements'',
|
|
||||||
``Dedications'', ``Endorsements'', or ``History''.) To ``Preserve the Title''
|
|
||||||
of such a section when you modify the Document means that it remains a
|
|
||||||
section ``Entitled XYZ'' according to this definition.
|
|
||||||
|
|
||||||
The Document may include Warranty Disclaimers next to the notice which
|
|
||||||
states that this License applies to the Document. These Warranty
|
|
||||||
Disclaimers are considered to be included by reference in this
|
|
||||||
License, but only as regards disclaiming warranties: any other
|
|
||||||
implication that these Warranty Disclaimers may have is void and has
|
|
||||||
no effect on the meaning of this License.
|
|
||||||
|
|
||||||
@item
|
@item
|
||||||
VERBATIM COPYING
|
VERBATIM COPYING
|
||||||
|
|
||||||
@@ -146,10 +118,9 @@ you may publicly display copies.
|
|||||||
@item
|
@item
|
||||||
COPYING IN QUANTITY
|
COPYING IN QUANTITY
|
||||||
|
|
||||||
If you publish printed copies (or copies in media that commonly have
|
If you publish printed copies of the Document numbering more than 100,
|
||||||
printed covers) of the Document, numbering more than 100, and the
|
and the Document's license notice requires Cover Texts, you must enclose
|
||||||
Document's license notice requires Cover Texts, you must enclose the
|
the copies in covers that carry, clearly and legibly, all these Cover
|
||||||
copies in covers that carry, clearly and legibly, all these Cover
|
|
||||||
Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
|
Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
|
||||||
the back cover. Both covers must also clearly and legibly identify
|
the back cover. Both covers must also clearly and legibly identify
|
||||||
you as the publisher of these copies. The front cover must present
|
you as the publisher of these copies. The front cover must present
|
||||||
@@ -167,15 +138,16 @@ pages.
|
|||||||
If you publish or distribute Opaque copies of the Document numbering
|
If you publish or distribute Opaque copies of the Document numbering
|
||||||
more than 100, you must either include a machine-readable Transparent
|
more than 100, you must either include a machine-readable Transparent
|
||||||
copy along with each Opaque copy, or state in or with each Opaque copy
|
copy along with each Opaque copy, or state in or with each Opaque copy
|
||||||
a computer-network location from which the general network-using
|
a publicly-accessible computer-network location containing a complete
|
||||||
public has access to download using public-standard network protocols
|
Transparent copy of the Document, free of added material, which the
|
||||||
a complete Transparent copy of the Document, free of added material.
|
general network-using public has access to download anonymously at no
|
||||||
If you use the latter option, you must take reasonably prudent steps,
|
charge using public-standard network protocols. If you use the latter
|
||||||
when you begin distribution of Opaque copies in quantity, to ensure
|
option, you must take reasonably prudent steps, when you begin
|
||||||
that this Transparent copy will remain thus accessible at the stated
|
distribution of Opaque copies in quantity, to ensure that this
|
||||||
location until at least one year after the last time you distribute an
|
Transparent copy will remain thus accessible at the stated location
|
||||||
Opaque copy (directly or through your agents or retailers) of that
|
until at least one year after the last time you distribute an Opaque
|
||||||
edition to the public.
|
copy (directly or through your agents or retailers) of that edition to
|
||||||
|
the public.
|
||||||
|
|
||||||
It is requested, but not required, that you contact the authors of the
|
It is requested, but not required, that you contact the authors of the
|
||||||
Document well before redistributing any large number of copies, to give
|
Document well before redistributing any large number of copies, to give
|
||||||
@@ -203,8 +175,7 @@ if the original publisher of that version gives permission.
|
|||||||
List on the Title Page, as authors, one or more persons or entities
|
List on the Title Page, as authors, one or more persons or entities
|
||||||
responsible for authorship of the modifications in the Modified
|
responsible for authorship of the modifications in the Modified
|
||||||
Version, together with at least five of the principal authors of the
|
Version, together with at least five of the principal authors of the
|
||||||
Document (all of its principal authors, if it has fewer than five),
|
Document (all of its principal authors, if it has less than five).
|
||||||
unless they release you from this requirement.
|
|
||||||
|
|
||||||
@item
|
@item
|
||||||
State on the Title page the name of the publisher of the
|
State on the Title page the name of the publisher of the
|
||||||
@@ -230,10 +201,10 @@ and required Cover Texts given in the Document's license notice.
|
|||||||
Include an unaltered copy of this License.
|
Include an unaltered copy of this License.
|
||||||
|
|
||||||
@item
|
@item
|
||||||
Preserve the section Entitled ``History'', Preserve its Title, and add
|
Preserve the section entitled ``History'', and its title, and add to
|
||||||
to it an item stating at least the title, year, new authors, and
|
it an item stating at least the title, year, new authors, and
|
||||||
publisher of the Modified Version as given on the Title Page. If
|
publisher of the Modified Version as given on the Title Page. If
|
||||||
there is no section Entitled ``History'' in the Document, create one
|
there is no section entitled ``History'' in the Document, create one
|
||||||
stating the title, year, authors, and publisher of the Document as
|
stating the title, year, authors, and publisher of the Document as
|
||||||
given on its Title Page, then add an item describing the Modified
|
given on its Title Page, then add an item describing the Modified
|
||||||
Version as stated in the previous sentence.
|
Version as stated in the previous sentence.
|
||||||
@@ -248,10 +219,10 @@ least four years before the Document itself, or if the original
|
|||||||
publisher of the version it refers to gives permission.
|
publisher of the version it refers to gives permission.
|
||||||
|
|
||||||
@item
|
@item
|
||||||
For any section Entitled ``Acknowledgements'' or ``Dedications'', Preserve
|
In any section entitled ``Acknowledgments'' or ``Dedications'',
|
||||||
the Title of the section, and preserve in the section all the
|
preserve the section's title, and preserve in the section all the
|
||||||
substance and tone of each of the contributor acknowledgements and/or
|
substance and tone of each of the contributor acknowledgments
|
||||||
dedications given therein.
|
and/or dedications given therein.
|
||||||
|
|
||||||
@item
|
@item
|
||||||
Preserve all the Invariant Sections of the Document,
|
Preserve all the Invariant Sections of the Document,
|
||||||
@@ -259,15 +230,12 @@ unaltered in their text and in their titles. Section numbers
|
|||||||
or the equivalent are not considered part of the section titles.
|
or the equivalent are not considered part of the section titles.
|
||||||
|
|
||||||
@item
|
@item
|
||||||
Delete any section Entitled ``Endorsements''. Such a section
|
Delete any section entitled ``Endorsements''. Such a section
|
||||||
may not be included in the Modified Version.
|
may not be included in the Modified Version.
|
||||||
|
|
||||||
@item
|
@item
|
||||||
Do not retitle any existing section to be Entitled ``Endorsements'' or
|
Do not retitle any existing section as ``Endorsements''
|
||||||
to conflict in title with any Invariant Section.
|
or to conflict in title with any Invariant Section.
|
||||||
|
|
||||||
@item
|
|
||||||
Preserve any Warranty Disclaimers.
|
|
||||||
@end enumerate
|
@end enumerate
|
||||||
|
|
||||||
If the Modified Version includes new front-matter sections or
|
If the Modified Version includes new front-matter sections or
|
||||||
@@ -277,7 +245,7 @@ of these sections as invariant. To do this, add their titles to the
|
|||||||
list of Invariant Sections in the Modified Version's license notice.
|
list of Invariant Sections in the Modified Version's license notice.
|
||||||
These titles must be distinct from any other section titles.
|
These titles must be distinct from any other section titles.
|
||||||
|
|
||||||
You may add a section Entitled ``Endorsements'', provided it contains
|
You may add a section entitled ``Endorsements'', provided it contains
|
||||||
nothing but endorsements of your Modified Version by various
|
nothing but endorsements of your Modified Version by various
|
||||||
parties---for example, statements of peer review or that the text has
|
parties---for example, statements of peer review or that the text has
|
||||||
been approved by an organization as the authoritative definition of a
|
been approved by an organization as the authoritative definition of a
|
||||||
@@ -305,7 +273,7 @@ License, under the terms defined in section 4 above for modified
|
|||||||
versions, provided that you include in the combination all of the
|
versions, provided that you include in the combination all of the
|
||||||
Invariant Sections of all of the original documents, unmodified, and
|
Invariant Sections of all of the original documents, unmodified, and
|
||||||
list them all as Invariant Sections of your combined work in its
|
list them all as Invariant Sections of your combined work in its
|
||||||
license notice, and that you preserve all their Warranty Disclaimers.
|
license notice.
|
||||||
|
|
||||||
The combined work need only contain one copy of this License, and
|
The combined work need only contain one copy of this License, and
|
||||||
multiple identical Invariant Sections may be replaced with a single
|
multiple identical Invariant Sections may be replaced with a single
|
||||||
@@ -316,11 +284,11 @@ author or publisher of that section if known, or else a unique number.
|
|||||||
Make the same adjustment to the section titles in the list of
|
Make the same adjustment to the section titles in the list of
|
||||||
Invariant Sections in the license notice of the combined work.
|
Invariant Sections in the license notice of the combined work.
|
||||||
|
|
||||||
In the combination, you must combine any sections Entitled ``History''
|
In the combination, you must combine any sections entitled ``History''
|
||||||
in the various original documents, forming one section Entitled
|
in the various original documents, forming one section entitled
|
||||||
``History''; likewise combine any sections Entitled ``Acknowledgements'',
|
``History''; likewise combine any sections entitled ``Acknowledgments'',
|
||||||
and any sections Entitled ``Dedications''. You must delete all
|
and any sections entitled ``Dedications''. You must delete all sections
|
||||||
sections Entitled ``Endorsements.''
|
entitled ``Endorsements.''
|
||||||
|
|
||||||
@item
|
@item
|
||||||
COLLECTIONS OF DOCUMENTS
|
COLLECTIONS OF DOCUMENTS
|
||||||
@@ -341,20 +309,18 @@ AGGREGATION WITH INDEPENDENT WORKS
|
|||||||
|
|
||||||
A compilation of the Document or its derivatives with other separate
|
A compilation of the Document or its derivatives with other separate
|
||||||
and independent documents or works, in or on a volume of a storage or
|
and independent documents or works, in or on a volume of a storage or
|
||||||
distribution medium, is called an ``aggregate'' if the copyright
|
distribution medium, does not as a whole count as a Modified Version
|
||||||
resulting from the compilation is not used to limit the legal rights
|
of the Document, provided no compilation copyright is claimed for the
|
||||||
of the compilation's users beyond what the individual works permit.
|
compilation. Such a compilation is called an ``aggregate'', and this
|
||||||
When the Document is included in an aggregate, this License does not
|
License does not apply to the other self-contained works thus compiled
|
||||||
apply to the other works in the aggregate which are not themselves
|
with the Document, on account of their being thus compiled, if they
|
||||||
derivative works of the Document.
|
are not themselves derivative works of the Document.
|
||||||
|
|
||||||
If the Cover Text requirement of section 3 is applicable to these
|
If the Cover Text requirement of section 3 is applicable to these
|
||||||
copies of the Document, then if the Document is less than one half of
|
copies of the Document, then if the Document is less than one quarter
|
||||||
the entire aggregate, the Document's Cover Texts may be placed on
|
of the entire aggregate, the Document's Cover Texts may be placed on
|
||||||
covers that bracket the Document within the aggregate, or the
|
covers that surround only the Document within the aggregate.
|
||||||
electronic equivalent of covers if the Document is in electronic form.
|
Otherwise they must appear on covers around the whole aggregate.
|
||||||
Otherwise they must appear on printed covers that bracket the whole
|
|
||||||
aggregate.
|
|
||||||
|
|
||||||
@item
|
@item
|
||||||
TRANSLATION
|
TRANSLATION
|
||||||
@@ -365,17 +331,10 @@ Replacing Invariant Sections with translations requires special
|
|||||||
permission from their copyright holders, but you may include
|
permission from their copyright holders, but you may include
|
||||||
translations of some or all Invariant Sections in addition to the
|
translations of some or all Invariant Sections in addition to the
|
||||||
original versions of these Invariant Sections. You may include a
|
original versions of these Invariant Sections. You may include a
|
||||||
translation of this License, and all the license notices in the
|
translation of this License provided that you also include the
|
||||||
Document, and any Warranty Disclaimers, provided that you also include
|
original English version of this License. In case of a disagreement
|
||||||
the original English version of this License and the original versions
|
between the translation and the original English version of this
|
||||||
of those notices and disclaimers. In case of a disagreement between
|
License, the original English version will prevail.
|
||||||
the translation and the original version of this License or a notice
|
|
||||||
or disclaimer, the original version will prevail.
|
|
||||||
|
|
||||||
If a section in the Document is Entitled ``Acknowledgements'',
|
|
||||||
``Dedications'', or ``History'', the requirement (section 4) to Preserve
|
|
||||||
its Title (section 1) will typically require changing the actual
|
|
||||||
title.
|
|
||||||
|
|
||||||
@item
|
@item
|
||||||
TERMINATION
|
TERMINATION
|
||||||
@@ -418,28 +377,19 @@ license notices just after the title page:
|
|||||||
@group
|
@group
|
||||||
Copyright (C) @var{year} @var{your name}.
|
Copyright (C) @var{year} @var{your name}.
|
||||||
Permission is granted to copy, distribute and/or modify this document
|
Permission is granted to copy, distribute and/or modify this document
|
||||||
under the terms of the GNU Free Documentation License, Version 1.2
|
under the terms of the GNU Free Documentation License, Version 1.1
|
||||||
or any later version published by the Free Software Foundation;
|
or any later version published by the Free Software Foundation;
|
||||||
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
|
with the Invariant Sections being @var{list their titles}, with the
|
||||||
Texts. A copy of the license is included in the section entitled ``GNU
|
Front-Cover Texts being @var{list}, and with the Back-Cover Texts being @var{list}.
|
||||||
|
A copy of the license is included in the section entitled ``GNU
|
||||||
Free Documentation License''.
|
Free Documentation License''.
|
||||||
@end group
|
@end group
|
||||||
@end smallexample
|
@end smallexample
|
||||||
|
|
||||||
If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
|
If you have no Invariant Sections, write ``with no Invariant Sections''
|
||||||
replace the ``with...Texts.'' line with this:
|
instead of saying which ones are invariant. If you have no
|
||||||
|
Front-Cover Texts, write ``no Front-Cover Texts'' instead of
|
||||||
@smallexample
|
``Front-Cover Texts being @var{list}''; likewise for Back-Cover Texts.
|
||||||
@group
|
|
||||||
with the Invariant Sections being @var{list their titles}, with
|
|
||||||
the Front-Cover Texts being @var{list}, and with the Back-Cover Texts
|
|
||||||
being @var{list}.
|
|
||||||
@end group
|
|
||||||
@end smallexample
|
|
||||||
|
|
||||||
If you have Invariant Sections without Cover Texts, or some other
|
|
||||||
combination of the three, merge those two alternatives to suit the
|
|
||||||
situation.
|
|
||||||
|
|
||||||
If your document contains nontrivial examples of program code, we
|
If your document contains nontrivial examples of program code, we
|
||||||
recommend releasing these examples in parallel under your choice of
|
recommend releasing these examples in parallel under your choice of
|
||||||
@@ -449,4 +399,3 @@ to permit their use in free software.
|
|||||||
@c Local Variables:
|
@c Local Variables:
|
||||||
@c ispell-local-pdict: "ispell-dict"
|
@c ispell-local-pdict: "ispell-dict"
|
||||||
@c End:
|
@c End:
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
@display
|
@display
|
||||||
Copyright @copyright{} 1989, 1991 Free Software Foundation, Inc.
|
Copyright @copyright{} 1989, 1991 Free Software Foundation, Inc.
|
||||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
|
|
||||||
Everyone is permitted to copy and distribute verbatim copies
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
of this license document, but changing it is not allowed.
|
of this license document, but changing it is not allowed.
|
||||||
@@ -352,7 +352,7 @@ GNU General Public License for more details.
|
|||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
@end smallexample
|
@end smallexample
|
||||||
|
|
||||||
Also add information on how to contact you by electronic and paper mail.
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|||||||
+47
-53
@@ -6,7 +6,7 @@
|
|||||||
% This file can be printed with 1 or 2 columns per page (see below).
|
% This file can be printed with 1 or 2 columns per page (see below).
|
||||||
% Specify how many you want here. Nothing else needs to be changed
|
% Specify how many you want here. Nothing else needs to be changed
|
||||||
% unless you are maintaining the documentation.
|
% unless you are maintaining the documentation.
|
||||||
% For printing reference cards to use in books, specify one column
|
% For printing reference cards to use in books, specify one column
|
||||||
% per page and reduce to 80%.
|
% per page and reduce to 80%.
|
||||||
% Note that if columnsperpage is set to 2, there will be a few overfull
|
% Note that if columnsperpage is set to 2, there will be a few overfull
|
||||||
% boxes, but they are not serious. Just uncomment \finalout.
|
% boxes, but they are not serious. Just uncomment \finalout.
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
\def\finalout{\overfullrule=0pt}
|
\def\finalout{\overfullrule=0pt}
|
||||||
%\finalout
|
%\finalout
|
||||||
|
|
||||||
% Copyright (c) 1998, 2001 Free Software Foundation, Inc.
|
% Copyright (c) 1998 Free Software Foundation, Inc.
|
||||||
%
|
%
|
||||||
% This file is part of Bison.
|
% This file is part of Bison.
|
||||||
%
|
%
|
||||||
@@ -35,8 +35,8 @@
|
|||||||
%
|
%
|
||||||
% You should have received a copy of the GNU General Public License
|
% You should have received a copy of the GNU General Public License
|
||||||
% along with either Flex or Bison; see the file COPYING. If not, write
|
% along with either Flex or Bison; see the file COPYING. If not, write
|
||||||
% to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
% to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
% Boston, MA 02110-1301, USA.
|
% Boston, MA 02111-1307, USA.
|
||||||
%
|
%
|
||||||
% This file is intended to be processed by plain TeX (TeX82).
|
% This file is intended to be processed by plain TeX (TeX82).
|
||||||
%
|
%
|
||||||
@@ -51,11 +51,11 @@
|
|||||||
% Which mode to use is controlled by setting \columnsperpage above.
|
% Which mode to use is controlled by setting \columnsperpage above.
|
||||||
%
|
%
|
||||||
% Authors:
|
% Authors:
|
||||||
% Brendan Kehoe
|
% Brendan Kehoe
|
||||||
% UUCP: widener!brendan
|
% UUCP: widener!brendan
|
||||||
% Internet: [email protected]
|
% Internet: [email protected]
|
||||||
%
|
%
|
||||||
% Gavin Nicol
|
% Gavin Nicol
|
||||||
% Internet: [email protected]
|
% Internet: [email protected]
|
||||||
%
|
%
|
||||||
% This refcard format was created by Steve Gildea.
|
% This refcard format was created by Steve Gildea.
|
||||||
@@ -66,12 +66,12 @@
|
|||||||
% We only change the following to change the version numbers and
|
% We only change the following to change the version numbers and
|
||||||
% such.
|
% such.
|
||||||
|
|
||||||
\def\bisonversion{1.31} % the bison version
|
\def\bisonversion{1.20} % the bison version
|
||||||
|
|
||||||
\def\refcardversion{0.5} % reference card version
|
\def\refcardversion{0.4a} % reference card version
|
||||||
\def\month{November} % month
|
\def\month{August} % month
|
||||||
\def\year{2001} % year
|
\def\year{1998} % year
|
||||||
\def\version{\month\ \year, Bison Refcard Version \refcardversion}
|
\def\version{\month\ \year, Bison Refcard Version \refcardversion}
|
||||||
|
|
||||||
% for copyright notices
|
% for copyright notices
|
||||||
\def\small{\smallfont\textfont2=\smallsy\baselineskip=.8\baselineskip}
|
\def\small{\smallfont\textfont2=\smallsy\baselineskip=.8\baselineskip}
|
||||||
@@ -90,15 +90,15 @@
|
|||||||
|
|
||||||
Permission is granted to make and distribute copies of this card
|
Permission is granted to make and distribute copies of this card
|
||||||
provided the copyright notice and this permission notice
|
provided the copyright notice and this permission notice
|
||||||
are preserved on all copies.
|
are preserved on all copies.
|
||||||
\vskip .2\baselineskip
|
\vskip .2\baselineskip
|
||||||
For information, write to the:
|
For information, write to the:
|
||||||
\vskip .2\baselineskip
|
\vskip .2\baselineskip
|
||||||
\centerline{Free Software Foundation, Inc.}
|
\centerline{Free Software Foundation, Inc.}
|
||||||
\vskip .2\baselineskip
|
\vskip .2\baselineskip
|
||||||
\centerline{51 Franklin Street, Fifth Floor}
|
\centerline{59 Temple Place - Suite 330}
|
||||||
\vskip .2\baselineskip
|
\vskip .2\baselineskip
|
||||||
\centerline{Boston, MA 02110-1301 USA}
|
\centerline{Boston, MA 02111-1307 USA}
|
||||||
\endgroup}
|
\endgroup}
|
||||||
|
|
||||||
%%%% smallcopyrightnotice for two column printing on one page.
|
%%%% smallcopyrightnotice for two column printing on one page.
|
||||||
@@ -115,15 +115,15 @@ For information, write to the:
|
|||||||
|
|
||||||
Permission is granted to make and distribute copies of this card
|
Permission is granted to make and distribute copies of this card
|
||||||
provided the copyright notice and this permission notice
|
provided the copyright notice and this permission notice
|
||||||
are preserved on all copies.
|
are preserved on all copies.
|
||||||
\vskip .2\baselineskip
|
\vskip .2\baselineskip
|
||||||
For information, write to the:
|
For information, write to the:
|
||||||
\vskip .2\baselineskip
|
\vskip .2\baselineskip
|
||||||
\centerline{Free Software Foundation, Inc.}
|
\centerline{Free Software Foundation, Inc.}
|
||||||
\vskip .2\baselineskip
|
\vskip .2\baselineskip
|
||||||
\centerline{51 Franklin Street, Fifth Floor}
|
\centerline{59 Temple Place - Suite 330}
|
||||||
\vskip .2\baselineskip
|
\vskip .2\baselineskip
|
||||||
\centerline{Boston, MA 02110-1301 USA}
|
\centerline{Boston, MA 02111-1307 USA}
|
||||||
\endgroup}
|
\endgroup}
|
||||||
|
|
||||||
% make \bye not \outer so that the \def\bye in the \else clause below
|
% make \bye not \outer so that the \def\bye in the \else clause below
|
||||||
@@ -136,7 +136,7 @@ For information, write to the:
|
|||||||
|
|
||||||
\def\ncolumns{\the\columnsperpage}
|
\def\ncolumns{\the\columnsperpage}
|
||||||
|
|
||||||
\message{[\ncolumns\space
|
\message{[\ncolumns\space
|
||||||
column\if 1\ncolumns\else s\fi\space per page]}
|
column\if 1\ncolumns\else s\fi\space per page]}
|
||||||
|
|
||||||
\def\scaledmag#1{ scaled \magstep #1}
|
\def\scaledmag#1{ scaled \magstep #1}
|
||||||
@@ -227,7 +227,7 @@ For information, write to the:
|
|||||||
\def\bye{\par\vfill\supereject
|
\def\bye{\par\vfill\supereject
|
||||||
\if a\abc \else\null\vfill\eject\fi
|
\if a\abc \else\null\vfill\eject\fi
|
||||||
\if a\abc \else\null\vfill\eject\fi
|
\if a\abc \else\null\vfill\eject\fi
|
||||||
\end}
|
\end}
|
||||||
\fi
|
\fi
|
||||||
|
|
||||||
% we won't be using math mode much, so redefine some of the characters
|
% we won't be using math mode much, so redefine some of the characters
|
||||||
@@ -316,44 +316,41 @@ Options can be used as: \kbd{bison {\it options} {\it filename}}
|
|||||||
\section{Command Line Options}
|
\section{Command Line Options}
|
||||||
%*****************************
|
%*****************************
|
||||||
|
|
||||||
\key{Display usage information.} {-h}
|
|
||||||
\key{Display version information.} {-V}
|
|
||||||
\key{Generate token and {\tt YYSTYPE} definitions.} {-d}
|
\key{Generate token and {\tt YYSTYPE} definitions.} {-d}
|
||||||
\key{Prepend a prefix to external symbols.} {-p {\it prefix}}
|
|
||||||
\key{Don't put {\tt \#line} directives in the parser.} {-l}
|
\key{Don't put {\tt \#line} directives in the parser.} {-l}
|
||||||
\key{Specify the output file.} {-o {\it filename}}
|
\key{Specify the output file.} {-o {\it filename}}
|
||||||
\key{Debug or {\it trace} mode.} {-t}
|
\key{Debug or {\it trace} mode.} {-t}
|
||||||
\key{Verbose description of the parser.} {-v}
|
\key{Verbose description of the parser.} {-v}
|
||||||
\key{Emulate {\tt yacc} (generate {\tt y.tab.*} files).} {-y}
|
\key{Emulate {\tt yacc} (generate {\tt y.tab.*} files).} {-y}
|
||||||
|
|
||||||
\vskip .10truein
|
\vskip .10truein
|
||||||
{\bf Note:} The token and {\tt YYSTYPE} definitions are generated
|
{\bf Note:} The token and {\tt YYSTYPE} definitions are generated
|
||||||
to a file called {\tt y.tab.h} if the {\tt -y} option is used,
|
to a file called {\tt y.tab.h} if the {\tt -y} option is used,
|
||||||
otherwise it will have the format {\tt {\it name}.tab.h}, where
|
otherwise it will have the format {\tt {\it name}.tab.h}, where
|
||||||
{\it name} is the leading part of the parser definition filename.
|
{\it name} is the leading part of the parser definition filename.
|
||||||
|
|
||||||
\section{Definitions}
|
\section{Definitions}
|
||||||
%********************
|
%********************
|
||||||
|
|
||||||
\key{Declare a terminal symbol.}{\%token <{\it t\/}>
|
\key{Declare a terminal symbol.}{\%token <{\it t\/}>
|
||||||
{\it n}}
|
{\it n}}
|
||||||
|
|
||||||
\key{Declare a terminal symbol, and define its association.}
|
\key{Declare a terminal symbol, and define its association.}
|
||||||
{{\it association} <{\it t\/}> {\it n}}
|
{{\it association} <{\it t\/}> {\it n}}
|
||||||
|
|
||||||
\vskip .2\baselineskip
|
\vskip .2\baselineskip
|
||||||
\key{Generate a reentrant (pure) parser.}
|
\key{Generate a reentrant (pure) parser.}
|
||||||
{\%pure_parser}
|
{\%pure_parser}
|
||||||
|
|
||||||
\key{Define the union of all data types used in the parser.}
|
\key{Define the union of all data types used in the parser.}
|
||||||
{\%union\{{\it field list}\} }
|
{\%union\{{\it field list}\} }
|
||||||
|
|
||||||
\vskip .2\baselineskip
|
\vskip .2\baselineskip
|
||||||
\key{Tell {\tt bison} where to start parsing.}
|
\key{Tell {\tt bison} where to start parsing.}
|
||||||
{\%start {\it m}}
|
{\%start {\it m}}
|
||||||
|
|
||||||
\key{Tell {\tt bison} the data type of symbols.}
|
\key{Tell {\tt bison} the data type of symbols.}
|
||||||
{\%type <{\it t\/}> {\it s1}\dots{\it sn}}
|
{\%type <{\it t\/}> {\it s1}\dots{\it sn}}
|
||||||
|
|
||||||
\vskip .10truein
|
\vskip .10truein
|
||||||
|
|
||||||
@@ -365,8 +362,8 @@ definition, {\it n} is a {\it terminal} symbol name, {\it m} is a
|
|||||||
\vskip .10truein
|
\vskip .10truein
|
||||||
|
|
||||||
The {\tt <{\it t\/}>} after {\tt \%token, \%left, \%right} and {\tt
|
The {\tt <{\it t\/}>} after {\tt \%token, \%left, \%right} and {\tt
|
||||||
\%nonassoc} is optional. Additionally, precedence may be overridden
|
\%nonassoc} is optional. Additionally, precedence may be overridden with
|
||||||
in the rules with {\tt \%prec} commands.
|
embedded {\tt \%prec} commands.
|
||||||
|
|
||||||
\section{Parser Definition Files}
|
\section{Parser Definition Files}
|
||||||
%*********************************
|
%*********************************
|
||||||
@@ -382,7 +379,7 @@ The general form for a parser definition is:
|
|||||||
|
|
||||||
\%\%
|
\%\%
|
||||||
|
|
||||||
Rule definition 1
|
Rule definition 1
|
||||||
\vdots
|
\vdots
|
||||||
Rule definition {\it n}
|
Rule definition {\it n}
|
||||||
|
|
||||||
@@ -400,9 +397,8 @@ The general form for a parser definition is:
|
|||||||
|
|
||||||
Rules take the form:
|
Rules take the form:
|
||||||
|
|
||||||
\vskip -\baselineskip
|
|
||||||
\beginexample
|
\beginexample
|
||||||
non-terminal : {\it statement} 1
|
non-terminal : {\it statement} 1
|
||||||
| {\it statement} 2
|
| {\it statement} 2
|
||||||
\vdots
|
\vdots
|
||||||
| {\it statement n}
|
| {\it statement n}
|
||||||
@@ -410,12 +406,12 @@ Rules take the form:
|
|||||||
\endexample
|
\endexample
|
||||||
|
|
||||||
Where {\it statements} can be either empty, or contain
|
Where {\it statements} can be either empty, or contain
|
||||||
a mixture of C code (enclosed in {\tt \{...\}}), and the
|
a mixture of C code (enclosed in {\tt \{...\}}), and the
|
||||||
symbols that make up the non-terminal. For example:
|
symbols that make up the non-terminal. For example:
|
||||||
|
|
||||||
\vskip -\baselineskip
|
\vskip -\baselineskip
|
||||||
\beginexample
|
\beginexample
|
||||||
expression : number '$+$' number \{ \$\$ $=$ \$1 $+$ \$3 \}
|
expression : number '$+$' number \{ \$\$ $=$ \$1 $+$ \$3 \}
|
||||||
| number '$-$' number \{ \$\$ $=$ \$1 $-$ \$3 \}
|
| number '$-$' number \{ \$\$ $=$ \$1 $-$ \$3 \}
|
||||||
| number '$/$' number \{ \$\$ $=$ \$1 $/$ \$3 \}
|
| number '$/$' number \{ \$\$ $=$ \$1 $/$ \$3 \}
|
||||||
| number '$*$' number \{ \$\$ $=$ \$1 $*$ \$3 \}
|
| number '$*$' number \{ \$\$ $=$ \$1 $*$ \$3 \}
|
||||||
@@ -432,7 +428,7 @@ For altering the precedence of a symbol use:
|
|||||||
For example:
|
For example:
|
||||||
\vskip -\baselineskip
|
\vskip -\baselineskip
|
||||||
\beginexample
|
\beginexample
|
||||||
foo : gnu bar gnu \%prec bar
|
foo : gnu bar gnu \%prec bar
|
||||||
;
|
;
|
||||||
\endexample
|
\endexample
|
||||||
|
|
||||||
@@ -442,23 +438,21 @@ For example:
|
|||||||
\key{Recognize an error \& continue parsing.}{error}
|
\key{Recognize an error \& continue parsing.}{error}
|
||||||
\key{Access data associated with a symbol.} {\$\$, \$0\dots\${\it n}}
|
\key{Access data associated with a symbol.} {\$\$, \$0\dots\${\it n}}
|
||||||
\key{Access a field of the data union.} {\$\$.{\it t},
|
\key{Access a field of the data union.} {\$\$.{\it t},
|
||||||
\$0.{\it t}\dots\${\it n}.{\it t}}
|
\$0.{\it t}\dots\${\it n}.{\it t}}
|
||||||
\key{Access symbol's location.} {@\$, @0\dots@{\it n}}
|
\key{Access data's line position.} {@{\it n}.{\it line\_spec}}
|
||||||
\key{Access data's line location.} {@{\it x}.{\it line\_spec}}
|
\key{Access data's column position.} {@{\it n}.{\it column\_spec}}
|
||||||
\key{Access data's column location.} {@{\it x}.{\it column\_spec}}
|
|
||||||
|
|
||||||
|
|
||||||
\vskip .10truein
|
\vskip .10truein
|
||||||
%
|
|
||||||
Where {\it t} is a type defined in the {\tt \%union}, {\it n} is a
|
Where {\it t} is a type defined in the {\tt \%union}, {\it n} is a
|
||||||
number, {\it x} is a number or \$, {\it line\_spec} one of {\tt
|
number, {\it line\_spec} one of {\tt first_line} and {\tt last_line},
|
||||||
first_line} and {\tt last_line}, and {\it column\_spec} is specified
|
and {\it column\_spec} is specified as either {\tt first_column} or {\tt
|
||||||
as either {\tt first_column} or {\tt last_column}.
|
last_column}.
|
||||||
|
|
||||||
\section {Variables and Types}
|
\section {Variables and Types}
|
||||||
%*****************************
|
%*****************************
|
||||||
|
|
||||||
\key{Current lookahead token.} {yychar}
|
\key{Current look ahead token.} {yychar}
|
||||||
\key{Debug mode flag.} {yydebug}
|
\key{Debug mode flag.} {yydebug}
|
||||||
\key{Data associated with the current token.} {yylval}
|
\key{Data associated with the current token.} {yylval}
|
||||||
\key{Source position of current token.} {yylloc}
|
\key{Source position of current token.} {yylloc}
|
||||||
@@ -489,8 +483,8 @@ as either {\tt first_column} or {\tt last_column}.
|
|||||||
\key{Quit parsing immediately. Return 1.} {YYABORT}
|
\key{Quit parsing immediately. Return 1.} {YYABORT}
|
||||||
\key{Quit parsing immediately. Return 0.} {YYACCEPT}
|
\key{Quit parsing immediately. Return 0.} {YYACCEPT}
|
||||||
\key{Pretend a syntax error occurred.} {YYERROR}
|
\key{Pretend a syntax error occurred.} {YYERROR}
|
||||||
\key{Value in {\tt yychar} if no lookahead token.} {YYEMPTY}
|
\key{Value in {\tt yychar} if no look-ahead token.} {YYEMPTY}
|
||||||
\key{Clear previous lookahead token.} {yyclearin}
|
\key{Clear previous look ahead token.} {yyclearin}
|
||||||
\key{Recover normally from an error.} {yyerrok}
|
\key{Recover normally from an error.} {yyerrok}
|
||||||
|
|
||||||
% **************
|
% **************
|
||||||
|
|||||||
@@ -0,0 +1,4 @@
|
|||||||
|
@set UPDATED 20 September 2001
|
||||||
|
@set UPDATED-MONTH September 2001
|
||||||
|
@set EDITION 1.29f
|
||||||
|
@set VERSION 1.29f
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
@set UPDATED 20 September 2001
|
||||||
|
@set UPDATED-MONTH September 2001
|
||||||
|
@set EDITION 1.29f
|
||||||
|
@set VERSION 1.29f
|
||||||
-43
@@ -1,43 +0,0 @@
|
|||||||
A directory of tools provided to people using CVS Bison. None of
|
|
||||||
these is distributed.
|
|
||||||
|
|
||||||
* bench.pl
|
|
||||||
A primitive Perl script to run benches. Currently its only bench is
|
|
||||||
the usual calculator: it has a lightweight processing part (but not
|
|
||||||
null), so it is really emphasizing the cost of the whole parsing
|
|
||||||
(including scanning and I/O).
|
|
||||||
|
|
||||||
Set the envvars BISON and CC to the programs and flags you want to
|
|
||||||
use. They default to bison and gcc. To run a non-installed bison
|
|
||||||
from a tarball built in _build, I suggest the following.
|
|
||||||
|
|
||||||
BISON=_build/tests/bison CC='gcc -O2' ./bench.pl
|
|
||||||
|
|
||||||
(The _build/tests/bison wrapper makes sure that _build/src/bison will
|
|
||||||
use the tarballs' skeletons, not those already installed as a
|
|
||||||
straightforward use of _build/src/bison would.)
|
|
||||||
|
|
||||||
--
|
|
||||||
|
|
||||||
Copyright (C) 2006 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
This file is part of Bison, the GNU Compiler Compiler.
|
|
||||||
|
|
||||||
Bison is free software; you can 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, or (at your option)
|
|
||||||
any later version.
|
|
||||||
|
|
||||||
Bison 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 autoconf; see the file COPYING. If not, write to
|
|
||||||
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
||||||
Boston, MA 02110-1301, USA.
|
|
||||||
|
|
||||||
Local Variables:
|
|
||||||
mode: outline
|
|
||||||
End:
|
|
||||||
-413
File diff suppressed because one or more lines are too long
Executable
+300
@@ -0,0 +1,300 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
# clcommit version 0.9.5
|
||||||
|
|
||||||
|
# Copyright (C) 1999, 2000, Free Software Foundation
|
||||||
|
|
||||||
|
# This script is Free Software, and it can be copied, distributed and
|
||||||
|
# modified as defined in the GNU General Public License. A copy of
|
||||||
|
# its license can be downloaded from http://www.gnu.org/copyleft/gpl.html
|
||||||
|
|
||||||
|
# Originally by Gary V. Vaughan <[email protected]>
|
||||||
|
# Pretty much rewritten by Alexandre Oliva <[email protected]>
|
||||||
|
|
||||||
|
# This scripts eases checking in changes to CVS-maintained projects
|
||||||
|
# with ChangeLog files. It will check that there have been no
|
||||||
|
# conflicting commits in the CVS repository and print which files it
|
||||||
|
# is going to commit to stderr. A list of files to compare and to
|
||||||
|
# check in can be given in the command line. If it is not given, all
|
||||||
|
# files in the current directory (and below, unless `-l' is given) are
|
||||||
|
# considered for check in.
|
||||||
|
|
||||||
|
# The commit message will be extracted from the differences between a
|
||||||
|
# file named ChangeLog* in the commit list, or named after -C, and the
|
||||||
|
# one in the repository (unless a message was specified with `-m' or
|
||||||
|
# `-F'). An empty message is not accepted (but a blank line is). If
|
||||||
|
# the message is acceptable, it will be presented for verification
|
||||||
|
# (and possible edition) using the $PAGER environment variable (or
|
||||||
|
# `more', if it is not set, or `cat', if the `-f' switch is given).
|
||||||
|
# If $PAGER exits successfully, the modified files (at that moment)
|
||||||
|
# are checked in, unless `-n' was specified, in which case nothing is
|
||||||
|
# checked in.
|
||||||
|
|
||||||
|
# usage: clcommit [-v] [-h] [-f] [-l] [-n] [-q] [-z N] [-C ChangeLog_file]
|
||||||
|
# [-m msg|-F msg_file|-1] [--] [file|dir ...]
|
||||||
|
|
||||||
|
# -f --force don't check (unless *followed* by -n), and just
|
||||||
|
# display commit message instead of running $PAGER
|
||||||
|
# -l --local don't descend into subdirectories
|
||||||
|
# -m msg --message=msg set commit message
|
||||||
|
# --msg=msg same as -m
|
||||||
|
# -F file --file=file read commit message from file
|
||||||
|
# -1 --first extract first entry from ChangeLog, no cvs diff
|
||||||
|
# -C file --changelog=file extract commit message from specified ChangeLog
|
||||||
|
# --fast same as --force --first
|
||||||
|
# -n --dry-run don't commit anything
|
||||||
|
# -q --quiet run cvs in quiet mode
|
||||||
|
# -zN --compress=N set compression level (0-9, 0=none, 9=max)
|
||||||
|
# -v --version print version information
|
||||||
|
# -h,-? --help print short or long help message
|
||||||
|
|
||||||
|
name=clcommit
|
||||||
|
: ${CVS=cvs}
|
||||||
|
cvsopt=
|
||||||
|
updateopt=
|
||||||
|
commitopt=
|
||||||
|
dry_run=false
|
||||||
|
commit=:
|
||||||
|
update=:
|
||||||
|
log_file="${TMPDIR-/tmp}/commitlog.$$"
|
||||||
|
first=false
|
||||||
|
|
||||||
|
rm -f "$log_file"
|
||||||
|
trap 'rm -f "$log_file"; exit 1' 1 2 15
|
||||||
|
|
||||||
|
# this just eases exit handling
|
||||||
|
main_repeat=":"
|
||||||
|
while $main_repeat; do
|
||||||
|
|
||||||
|
repeat="test $# -gt 0"
|
||||||
|
while $repeat; do
|
||||||
|
case "$1" in
|
||||||
|
--fast)
|
||||||
|
shift
|
||||||
|
set fnord --force --first ${1+"$@"}
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-f|--force)
|
||||||
|
update=false
|
||||||
|
PAGER=cat
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-l|--local)
|
||||||
|
updateopt="$updateopt -l"
|
||||||
|
commitopt="$commitopt -l"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-m|--message|--msg)
|
||||||
|
if test $# = 1; then
|
||||||
|
echo "$name: missing argument for $1" >&2
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
if $first || test -f "$log_file"; then
|
||||||
|
echo "$name: you can have at most one of -m, -F and -1" >&2
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
shift
|
||||||
|
echo "$1" > "$log_file"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-F|--file)
|
||||||
|
if $first || test -f "$log_file"; then
|
||||||
|
echo "$name: you can have at most one of -m, -F and -1" >&2
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
if test $# = 1; then
|
||||||
|
echo "$name: missing argument for $1" >&2
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
shift
|
||||||
|
if cat < "$1" > "$log_file"; then :; else
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-1|--first)
|
||||||
|
if test -f "$log_File"; then
|
||||||
|
echo "$name: you can have at most one of -m, -F and -1" >&2
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
first=:
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-C|--[cC]hange[lL]og)
|
||||||
|
if test $# = 1; then
|
||||||
|
echo "$name: missing argument for $1" >&2
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
shift
|
||||||
|
if test ! -f "$1"; then
|
||||||
|
echo "$name: ChangeLog file \`$1' does not exist" >&2
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
ChangeLog="$1"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-n|--dry-run)
|
||||||
|
commit=false
|
||||||
|
update=true
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-q|--quiet)
|
||||||
|
cvsopt="$cvsopt -q"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-v|--verbose)
|
||||||
|
cvsopt="$cvsopt -t"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-z|--compress)
|
||||||
|
if test $# = 1; then
|
||||||
|
echo "$name: missing argument for $1" >&2
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
case "$2" in
|
||||||
|
[0-9]) :;;
|
||||||
|
*) echo "$name: invalid argument for $1" >&2
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
cvsopt="$cvsopt -z$2"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
|
||||||
|
-m*|-F*|-C*|-z*)
|
||||||
|
opt=`echo "$1" | sed '1s/^\(..\).*$/\1/;q'`
|
||||||
|
arg=`echo "$1" | sed '1s/^-[a-zA-Z0-9]//'`
|
||||||
|
shift
|
||||||
|
set -- "$opt" "$arg" ${1+"$@"}
|
||||||
|
;;
|
||||||
|
--message=*|--msg=*|--file=*|--[Cc]hange[Ll]og=*|--compress=*)
|
||||||
|
opt=`echo "$1" | sed '1s/^\(--[^=]*\)=.*/\1/;q'`
|
||||||
|
arg=`echo "$1" | sed '1s/^--[^=]*=//'`
|
||||||
|
shift
|
||||||
|
set -- "$opt" "$arg" ${1+"$@"}
|
||||||
|
;;
|
||||||
|
|
||||||
|
-v|--version)
|
||||||
|
sed '/^# '$name' version /,/^# Heavily modified by/ { s/^# //; p; }; d' < $0
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
-\?|-h)
|
||||||
|
sed '/^# usage:/,/# -h/ { s/^# //; p; }; d' < $0 &&
|
||||||
|
echo
|
||||||
|
echo "run \`$name --help | more' for full usage"
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
--help)
|
||||||
|
sed '/^# '$name' version /,/^[^#]/ { /^[^#]/ d; s/^# //; p; }; d' < $0
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
--)
|
||||||
|
shift
|
||||||
|
repeat=false
|
||||||
|
;;
|
||||||
|
-*)
|
||||||
|
echo "$name: invalid flag $1" >&2
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
repeat=false
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
# might have used break 2 within the previous loop, but so what
|
||||||
|
$repeat && break
|
||||||
|
|
||||||
|
$update && \
|
||||||
|
if echo "$name: checking for conflicts..." >&2
|
||||||
|
($CVS $cvsopt -q -n update $updateopt ${1+"$@"} 2>/dev/null \
|
||||||
|
| while read line; do
|
||||||
|
echo "$line"
|
||||||
|
echo "$line" >&3
|
||||||
|
done | grep '^C') 3>&1 >/dev/null; then
|
||||||
|
echo "$name: some conflicts were found, aborting..." >&2
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test ! -f "$log_file"; then
|
||||||
|
if test -z "$ChangeLog"; then
|
||||||
|
for f in ${1+"$@"}; do
|
||||||
|
case "$f" in
|
||||||
|
ChangeLog* | */ChangeLog*)
|
||||||
|
if test -z "$ChangeLog"; then
|
||||||
|
ChangeLog="$f"
|
||||||
|
else
|
||||||
|
echo "$name: multiple ChangeLog files: $ChangeLog and $f" >&2
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$name: checking commit message..." >&2
|
||||||
|
if $first; then
|
||||||
|
skipping=:
|
||||||
|
sed 's,^,+,' < ${ChangeLog-ChangeLog} |
|
||||||
|
while read line; do
|
||||||
|
case "$line" in
|
||||||
|
"+2"*) if $skipping; then skipping=false; else break; fi;;
|
||||||
|
"+ "*)
|
||||||
|
echo "$name: *** Warning: lines should start with tabs, not spaces; ignoring line:" >&2
|
||||||
|
echo "$line" | sed 's/^.//' >&2;;
|
||||||
|
"+ "*)
|
||||||
|
$skipping || echo "$line" ;;
|
||||||
|
esac
|
||||||
|
done |
|
||||||
|
sed 's,^\+ ,,' > "$log_file" || break
|
||||||
|
else
|
||||||
|
$CVS $cvsopt diff -u ${ChangeLog-ChangeLog} |
|
||||||
|
while read line; do
|
||||||
|
case $line in
|
||||||
|
"--- "*) :;;
|
||||||
|
"-"*)
|
||||||
|
echo "$name: *** Warning: the following line in ChangeLog diff is suspicious:" >&2
|
||||||
|
echo "$line" | sed 's/^.//' >&2;;
|
||||||
|
"+ "*)
|
||||||
|
echo "$name: *** Warning: lines should start with tabs, not spaces; ignoring line:" >&2
|
||||||
|
echo "$line" | sed 's/^.//' >&2;;
|
||||||
|
"+") echo;;
|
||||||
|
"+ "*) echo "$line";;
|
||||||
|
esac
|
||||||
|
done |
|
||||||
|
sed -e 's,\+ ,,' -e '/./p' -e '/./d' -e '1d' -e '$d' > "$log_file" \
|
||||||
|
|| break
|
||||||
|
fi
|
||||||
|
# The sed script above removes "+TAB" from the beginning of a line, then
|
||||||
|
# deletes the first and/or the last line, when they happen to be empty
|
||||||
|
fi
|
||||||
|
|
||||||
|
if grep '[^ ]' < "$log_file" > /dev/null; then :; else
|
||||||
|
echo "$name: empty commit message, aborting" >&2
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
|
if grep '^$' < "$log_file" > /dev/null; then
|
||||||
|
echo "$name: *** Warning: blank lines should not appear within commit messages." >&2
|
||||||
|
echo "$name: *** They should be used to separate distinct commits." >&2
|
||||||
|
fi
|
||||||
|
|
||||||
|
${PAGER-more} "$log_file" || break
|
||||||
|
|
||||||
|
sleep 1 # give the user some time for a ^C
|
||||||
|
|
||||||
|
# Do not check for empty $log_file again, even though the user might have
|
||||||
|
# zeroed it out. If s/he did, it was probably intentional.
|
||||||
|
|
||||||
|
if $commit; then
|
||||||
|
$CVS $cvsopt commit $commitopt -F $log_file ${1+"$@"} || break
|
||||||
|
fi
|
||||||
|
|
||||||
|
main_repeat=false
|
||||||
|
done
|
||||||
|
|
||||||
|
rm -f "$log_file"
|
||||||
|
|
||||||
|
# if main_repeat was not set to `false', we failed
|
||||||
|
$main_repeat && exit 1
|
||||||
|
exit 0
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
Makefile
|
|
||||||
Makefile.in
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
## Process this file with automake to produce Makefile.in -*-Makefile-*-
|
|
||||||
## Copyright (C) 2005 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
## 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
|
|
||||||
|
|
||||||
if BISON_CXX_WORKS
|
|
||||||
SUBDIRS = calc++
|
|
||||||
endif
|
|
||||||
|
|
||||||
dist_noinst_SCRIPTS = extexi
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
*.cc
|
|
||||||
*.hh
|
|
||||||
*.ll
|
|
||||||
*.output
|
|
||||||
*.stamp
|
|
||||||
*.tmp
|
|
||||||
*.yy
|
|
||||||
.deps
|
|
||||||
Makefile
|
|
||||||
Makefile.in
|
|
||||||
calc++
|
|
||||||
@@ -1,87 +0,0 @@
|
|||||||
## Process this file with automake to produce Makefile.in -*-Makefile-*-
|
|
||||||
## Copyright (C) 2005, 2006 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
## 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
|
|
||||||
|
|
||||||
## ------------------------------------- ##
|
|
||||||
## Running the bison from this tarball. ##
|
|
||||||
## ------------------------------------- ##
|
|
||||||
|
|
||||||
BISON = $(top_builddir)/tests/bison
|
|
||||||
BISON_IN = $(top_srcdir)/tests/bison.in
|
|
||||||
|
|
||||||
$(BISON): $(BISON_IN)
|
|
||||||
cd $(top_builddir)/tests && $(MAKE) $(AM_MAKEFLAGS) bison
|
|
||||||
|
|
||||||
## ------------ ##
|
|
||||||
## Extracting. ##
|
|
||||||
## ------------ ##
|
|
||||||
|
|
||||||
doc = $(top_srcdir)/doc/bison.texinfo
|
|
||||||
extexi = $(top_srcdir)/examples/extexi
|
|
||||||
# Extract in src.
|
|
||||||
$(calc_extracted): $(doc) $(extexi)
|
|
||||||
cd $(srcdir) && \
|
|
||||||
$(AWK) -f ../extexi ../../doc/bison.texinfo -- \
|
|
||||||
calc++-parser.yy \
|
|
||||||
calc++-scanner.ll calc++.cc calc++-driver.hh calc++-driver.cc
|
|
||||||
|
|
||||||
|
|
||||||
## ------------------- ##
|
|
||||||
## Parser generation. ##
|
|
||||||
## ------------------- ##
|
|
||||||
|
|
||||||
BUILT_SOURCES = $(calc_extracted) $(calc_sources_generated)
|
|
||||||
CLEANFILES = $(srcdir)/*.output *.tmp
|
|
||||||
MAINTAINERCLEANFILES = $(srcdir)/*.stamp $(BUILT_SOURCES)
|
|
||||||
|
|
||||||
# Compile the parser and save cycles.
|
|
||||||
# This code comes from "Handling Tools that Produce Many Outputs",
|
|
||||||
# from the Automake documentation.
|
|
||||||
EXTRA_DIST = $(srcdir)/calc++-parser.stamp $(srcdir)/calc++-parser.yy
|
|
||||||
# Don't depend on $(BISON) otherwise we would rebuild these files
|
|
||||||
# in srcdir, including during distcheck, which is forbidden.
|
|
||||||
$(srcdir)/calc++-parser.stamp: $(srcdir)/calc++-parser.yy $(BISON_IN)
|
|
||||||
@rm -f calc++-parser.tmp
|
|
||||||
@touch calc++-parser.tmp
|
|
||||||
$(BISON) -d -ra -S lalr1.cc -o $(srcdir)/calc++-parser.cc \
|
|
||||||
$(srcdir)/calc++-parser.yy
|
|
||||||
@mv -f calc++-parser.tmp $@
|
|
||||||
|
|
||||||
$(calc_sources_generated): $(srcdir)/calc++-parser.stamp
|
|
||||||
@if test -f $@; then :; else \
|
|
||||||
rm -f $(srcdir)/calc++-parser.stamp && \
|
|
||||||
$(MAKE) $(AM_MAKEFLAGS) $(srcdir)/calc++-parser.stamp; \
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
## --------------------------- ##
|
|
||||||
## Building & testing calc++. ##
|
|
||||||
## --------------------------- ##
|
|
||||||
|
|
||||||
check_PROGRAMS = calc++
|
|
||||||
|
|
||||||
calc_sources_extracted = $(srcdir)/calc++-scanner.ll $(srcdir)/calc++.cc \
|
|
||||||
$(srcdir)/calc++-driver.hh $(srcdir)/calc++-driver.cc
|
|
||||||
calc_extracted = $(calc_sources_extracted) $(srcdir)/calc++-parser.yy
|
|
||||||
calc_sources_generated = \
|
|
||||||
$(srcdir)/stack.hh $(srcdir)/position.hh $(srcdir)/location.hh \
|
|
||||||
$(srcdir)/calc++-parser.hh $(srcdir)/calc++-parser.cc
|
|
||||||
|
|
||||||
calc___SOURCES = $(calc_sources_extracted) $(calc_sources_generated)
|
|
||||||
|
|
||||||
TESTS = test
|
|
||||||
EXTRA_DIST += $(TESTS)
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
#! /bin/sh
|
|
||||||
|
|
||||||
test -z "$VERBOSE" && {
|
|
||||||
exec > /dev/null 2>&1
|
|
||||||
set -x
|
|
||||||
}
|
|
||||||
|
|
||||||
cat >input <<EOF
|
|
||||||
a := 1
|
|
||||||
b := 2
|
|
||||||
c := 3
|
|
||||||
d := a + b * c
|
|
||||||
d
|
|
||||||
EOF
|
|
||||||
|
|
||||||
./calc++ input
|
|
||||||
./calc++ -p input
|
|
||||||
|
|
||||||
cat >input <<EOF
|
|
||||||
a := 1
|
|
||||||
d := a + b * c
|
|
||||||
EOF
|
|
||||||
./calc++ input
|
|
||||||
|
|
||||||
cat >input <<EOF
|
|
||||||
toto := 1
|
|
||||||
toto
|
|
||||||
EOF
|
|
||||||
./calc++ -s input
|
|
||||||
|
|
||||||
rm input
|
|
||||||
-138
@@ -1,138 +0,0 @@
|
|||||||
# Extract all examples from the manual source. -*- AWK -*-
|
|
||||||
|
|
||||||
# This file is part of GNU Bison
|
|
||||||
# Copyright 1992, 2000, 2001, 2005, 2006 Free Software Foundation, Inc.
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation; either version 2 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program; if not, write to the Free Software
|
|
||||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
|
||||||
# 02111-1307 USA
|
|
||||||
|
|
||||||
# This script is for use with any Awk that conforms to POSIX.
|
|
||||||
# It was derived from a similar script tests/generate.awk in GNU m4.
|
|
||||||
#
|
|
||||||
# Usage: extexi input-file.texi ... -- [FILES to extract]
|
|
||||||
BEGIN {
|
|
||||||
if (!output_dir)
|
|
||||||
output_dir = ".";
|
|
||||||
for (argc = 1; argc < ARGC; ++argc)
|
|
||||||
if (ARGV[argc] == "--")
|
|
||||||
break;
|
|
||||||
for (i = argc + 1; i < ARGC; ++i)
|
|
||||||
file_wanted[ARGV[i]] = 1;
|
|
||||||
ARGC = argc;
|
|
||||||
}
|
|
||||||
|
|
||||||
/^@node / {
|
|
||||||
if (seq > 0)
|
|
||||||
print "AT_CLEANUP";
|
|
||||||
|
|
||||||
split ($0, tmp, ",");
|
|
||||||
node = substr(tmp[1], 7);
|
|
||||||
seq = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/^@comment file: / {
|
|
||||||
if (!file_wanted[$3])
|
|
||||||
message("ignoring " $3);
|
|
||||||
else
|
|
||||||
{
|
|
||||||
message("extracting " $3);
|
|
||||||
file = $3;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/^@example$/, /^@end example$/ {
|
|
||||||
if (!file)
|
|
||||||
next;
|
|
||||||
|
|
||||||
if ($0 ~ /^@example$/)
|
|
||||||
{
|
|
||||||
input = files_output[file] ? "\n" : "";
|
|
||||||
|
|
||||||
# FNR is starting at 0 instead of 1, and
|
|
||||||
# #line report the line number of the *next* line.
|
|
||||||
# => + 2.
|
|
||||||
# Note that recent Bison support it, but not Flex.
|
|
||||||
if (file ~ /\.[chy]*$/)
|
|
||||||
input = "#line " (FNR + 1) " \"" FILENAME "\"\n";
|
|
||||||
next;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($0 ~ /^@end example$/)
|
|
||||||
{
|
|
||||||
if (input == "")
|
|
||||||
fatal("no contents: " file);
|
|
||||||
|
|
||||||
input = normalize(input);
|
|
||||||
# No spurious end of line: use printf.
|
|
||||||
if (files_output[file])
|
|
||||||
# The parens around the output file seem to be required
|
|
||||||
# by awk on Mac OS X Tiger (darwin 8.4.6).
|
|
||||||
printf ("%s", input) >> (output_dir "/" file);
|
|
||||||
else
|
|
||||||
printf ("%s", input) > (output_dir "/" file);
|
|
||||||
close (output_dir "/" file);
|
|
||||||
files_output[file] = 1;
|
|
||||||
|
|
||||||
file = input = "";
|
|
||||||
next;
|
|
||||||
}
|
|
||||||
|
|
||||||
input = input $0 "\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# We have to handle CONTENTS line per line, since anchors in AWK are
|
|
||||||
# referring to the whole string, not the lines.
|
|
||||||
function normalize(contents, i, lines, n, line, res) {
|
|
||||||
# Remove the Texinfo tags.
|
|
||||||
n = split (contents, lines, "\n");
|
|
||||||
# We don't want the last field which empty: it's behind the last \n.
|
|
||||||
for (i = 1; i < n; ++i)
|
|
||||||
{
|
|
||||||
line = lines[i];
|
|
||||||
|
|
||||||
# Whole line commands.
|
|
||||||
if (line ~ /^@(c |comment|dots|end (ignore|group)|ignore|group)/)
|
|
||||||
# Gperf accepts empty lines as valid input!!!
|
|
||||||
if (file ~ /\.gperf$/)
|
|
||||||
continue;
|
|
||||||
else
|
|
||||||
line = "";
|
|
||||||
|
|
||||||
gsub (/^@result\{\}/, "", line);
|
|
||||||
gsub (/^@error\{\}/, "", line);
|
|
||||||
gsub ("@[{]", "{", line);
|
|
||||||
gsub ("@}", "}", line);
|
|
||||||
gsub ("@@", "@", line);
|
|
||||||
gsub ("@comment.*", "", line);
|
|
||||||
|
|
||||||
res = res line "\n";
|
|
||||||
}
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function message(msg) {
|
|
||||||
if (! message_printed[msg])
|
|
||||||
{
|
|
||||||
print "extexi: " msg > "/dev/stderr";
|
|
||||||
message_printed[msg] = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function fatal(msg) {
|
|
||||||
message(msg);
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Makefile
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
2001-09-13 GNU <[email protected]>
|
||||||
|
|
||||||
|
* Version 0.10.40 released.
|
||||||
|
|
||||||
@@ -0,0 +1,313 @@
|
|||||||
|
# Makefile for directory with message catalog handling in GNU NLS Utilities.
|
||||||
|
# Copyright (C) 1995-1998, 2000, 2001 Free Software Foundation, Inc.
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify it
|
||||||
|
# under the terms of the GNU Library General Public License as published
|
||||||
|
# by the Free Software Foundation; either version 2, 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
|
||||||
|
# Library General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Library General Public
|
||||||
|
# License along with this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
||||||
|
# USA.
|
||||||
|
|
||||||
|
PACKAGE = @PACKAGE@
|
||||||
|
VERSION = @VERSION@
|
||||||
|
|
||||||
|
SHELL = /bin/sh
|
||||||
|
|
||||||
|
srcdir = @srcdir@
|
||||||
|
top_srcdir = @top_srcdir@
|
||||||
|
top_builddir = ..
|
||||||
|
VPATH = @srcdir@
|
||||||
|
|
||||||
|
prefix = @prefix@
|
||||||
|
exec_prefix = @exec_prefix@
|
||||||
|
transform = @program_transform_name@
|
||||||
|
libdir = @libdir@
|
||||||
|
includedir = @includedir@
|
||||||
|
datadir = @datadir@
|
||||||
|
localedir = $(datadir)/locale
|
||||||
|
gettextsrcdir = $(datadir)/gettext/intl
|
||||||
|
aliaspath = $(localedir)
|
||||||
|
subdir = intl
|
||||||
|
|
||||||
|
INSTALL = @INSTALL@
|
||||||
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
|
MKINSTALLDIRS = @MKINSTALLDIRS@
|
||||||
|
mkinstalldirs = $(SHELL) `case "$(MKINSTALLDIRS)" in /*) echo "$(MKINSTALLDIRS)" ;; *) echo "$(top_builddir)/$(MKINSTALLDIRS)" ;; esac`
|
||||||
|
|
||||||
|
l = @INTL_LIBTOOL_SUFFIX_PREFIX@
|
||||||
|
|
||||||
|
AR = ar
|
||||||
|
CC = @CC@
|
||||||
|
LIBTOOL = @LIBTOOL@
|
||||||
|
RANLIB = @RANLIB@
|
||||||
|
YACC = @INTLBISON@ -y -d
|
||||||
|
YFLAGS = --name-prefix=__gettext
|
||||||
|
|
||||||
|
DEFS = -DLOCALEDIR=\"$(localedir)\" -DLOCALE_ALIAS_PATH=\"$(aliaspath)\" \
|
||||||
|
-DLIBDIR=\"$(libdir)\" @DEFS@
|
||||||
|
CPPFLAGS = @CPPFLAGS@
|
||||||
|
CFLAGS = @CFLAGS@
|
||||||
|
LDFLAGS = @LDFLAGS@
|
||||||
|
|
||||||
|
COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
|
||||||
|
|
||||||
|
HEADERS = $(COMHDRS) libgnuintl.h libgettext.h loadinfo.h
|
||||||
|
COMHDRS = gettext.h gettextP.h hash-string.h
|
||||||
|
SOURCES = $(COMSRCS) intl-compat.c
|
||||||
|
COMSRCS = bindtextdom.c dcgettext.c dgettext.c gettext.c \
|
||||||
|
finddomain.c loadmsgcat.c localealias.c textdomain.c l10nflist.c \
|
||||||
|
explodename.c dcigettext.c dcngettext.c dngettext.c ngettext.c plural.y \
|
||||||
|
localcharset.c
|
||||||
|
OBJECTS = @INTLOBJS@ bindtextdom.$lo dcgettext.$lo dgettext.$lo gettext.$lo \
|
||||||
|
finddomain.$lo loadmsgcat.$lo localealias.$lo textdomain.$lo l10nflist.$lo \
|
||||||
|
explodename.$lo dcigettext.$lo dcngettext.$lo dngettext.$lo ngettext.$lo \
|
||||||
|
plural.$lo localcharset.$lo
|
||||||
|
GETTOBJS = intl-compat.$lo
|
||||||
|
DISTFILES.common = Makefile.in \
|
||||||
|
config.charset locale.alias ref-add.sin ref-del.sin $(HEADERS) $(SOURCES)
|
||||||
|
DISTFILES.generated = plural.c
|
||||||
|
DISTFILES.normal = VERSION
|
||||||
|
DISTFILES.gettext = COPYING.LIB-2 COPYING.LIB-2.1 libintl.glibc
|
||||||
|
DISTFILES.obsolete = xopen-msg.sed linux-msg.sed po2tbl.sed.in cat-compat.c
|
||||||
|
|
||||||
|
# Libtool's library version information for libintl.
|
||||||
|
# Before making a gettext release, the gettext maintainer must change this
|
||||||
|
# according to the libtool documentation, section "Library interface versions".
|
||||||
|
# Maintainers of other packages that include the intl directory must *not*
|
||||||
|
# change these values.
|
||||||
|
LTV_CURRENT=1
|
||||||
|
LTV_REVISION=1
|
||||||
|
LTV_AGE=0
|
||||||
|
|
||||||
|
.SUFFIXES:
|
||||||
|
.SUFFIXES: .c .y .o .lo .sin .sed
|
||||||
|
.c.o:
|
||||||
|
$(COMPILE) $<
|
||||||
|
.c.lo:
|
||||||
|
$(LIBTOOL) --mode=compile $(COMPILE) $<
|
||||||
|
|
||||||
|
.y.c:
|
||||||
|
$(YACC) $(YFLAGS) --output $@ $<
|
||||||
|
rm -f $*.h
|
||||||
|
|
||||||
|
.sin.sed:
|
||||||
|
sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $< > t-$@
|
||||||
|
mv t-$@ $@
|
||||||
|
|
||||||
|
INCLUDES = -I.. -I. -I$(top_srcdir)/intl
|
||||||
|
|
||||||
|
all: all-@USE_INCLUDED_LIBINTL@
|
||||||
|
all-yes: libintl.$la libintl.h charset.alias ref-add.sed ref-del.sed
|
||||||
|
all-no: all-no-@BUILD_INCLUDED_LIBINTL@
|
||||||
|
all-no-yes: libgnuintl.$la
|
||||||
|
all-no-no:
|
||||||
|
|
||||||
|
libintl.a libgnuintl.a: $(OBJECTS)
|
||||||
|
rm -f $@
|
||||||
|
$(AR) cru $@ $(OBJECTS)
|
||||||
|
$(RANLIB) $@
|
||||||
|
|
||||||
|
libintl.la libgnuintl.la: $(OBJECTS)
|
||||||
|
$(LIBTOOL) --mode=link \
|
||||||
|
$(CC) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) $(LDFLAGS) -o $@ \
|
||||||
|
$(OBJECTS) @LIBICONV@ \
|
||||||
|
-version-info $(LTV_CURRENT):$(LTV_REVISION):$(LTV_AGE) \
|
||||||
|
-rpath $(libdir) \
|
||||||
|
-no-undefined
|
||||||
|
|
||||||
|
libintl.h: libgnuintl.h
|
||||||
|
cp $(srcdir)/libgnuintl.h libintl.h
|
||||||
|
|
||||||
|
charset.alias: config.charset
|
||||||
|
$(SHELL) $(srcdir)/config.charset '@host@' > t-$@
|
||||||
|
mv t-$@ $@
|
||||||
|
|
||||||
|
check: all
|
||||||
|
|
||||||
|
# This installation goal is only used in GNU gettext. Packages which
|
||||||
|
# only use the library should use install instead.
|
||||||
|
|
||||||
|
# We must not install the libintl.h/libintl.a files if we are on a
|
||||||
|
# system which has the GNU gettext() function in its C library or in a
|
||||||
|
# separate library.
|
||||||
|
# If you want to use the one which comes with this version of the
|
||||||
|
# package, you have to use `configure --with-included-gettext'.
|
||||||
|
install: install-exec install-data
|
||||||
|
install-exec: all
|
||||||
|
if test "$(PACKAGE)" = "gettext" \
|
||||||
|
&& test '@INTLOBJS@' = '$(GETTOBJS)'; then \
|
||||||
|
$(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir); \
|
||||||
|
$(INSTALL_DATA) libintl.h $(DESTDIR)$(includedir)/libintl.h; \
|
||||||
|
$(LIBTOOL) --mode=install \
|
||||||
|
$(INSTALL_DATA) libintl.$la $(DESTDIR)$(libdir)/libintl.$la; \
|
||||||
|
else \
|
||||||
|
: ; \
|
||||||
|
fi
|
||||||
|
if test '@USE_INCLUDED_LIBINTL@' = yes; then \
|
||||||
|
$(mkinstalldirs) $(DESTDIR)$(libdir); \
|
||||||
|
temp=$(DESTDIR)$(libdir)/t-charset.alias; \
|
||||||
|
dest=$(DESTDIR)$(libdir)/charset.alias; \
|
||||||
|
if test -f $(DESTDIR)$(libdir)/charset.alias; then \
|
||||||
|
orig=$(DESTDIR)$(libdir)/charset.alias; \
|
||||||
|
sed -f ref-add.sed $$orig > $$temp; \
|
||||||
|
$(INSTALL_DATA) $$temp $$dest; \
|
||||||
|
rm -f $$temp; \
|
||||||
|
else \
|
||||||
|
if test @GLIBC21@ = no; then \
|
||||||
|
orig=charset.alias; \
|
||||||
|
sed -f ref-add.sed $$orig > $$temp; \
|
||||||
|
$(INSTALL_DATA) $$temp $$dest; \
|
||||||
|
rm -f $$temp; \
|
||||||
|
fi; \
|
||||||
|
fi; \
|
||||||
|
$(mkinstalldirs) $(DESTDIR)$(localedir); \
|
||||||
|
test -f $(DESTDIR)$(localedir)/locale.alias \
|
||||||
|
&& orig=$(DESTDIR)$(localedir)/locale.alias \
|
||||||
|
|| orig=$(srcdir)/locale.alias; \
|
||||||
|
temp=$(DESTDIR)$(localedir)/t-locale.alias; \
|
||||||
|
dest=$(DESTDIR)$(localedir)/locale.alias; \
|
||||||
|
sed -f ref-add.sed $$orig > $$temp; \
|
||||||
|
$(INSTALL_DATA) $$temp $$dest; \
|
||||||
|
rm -f $$temp; \
|
||||||
|
else \
|
||||||
|
: ; \
|
||||||
|
fi
|
||||||
|
install-data: all
|
||||||
|
if test "$(PACKAGE)" = "gettext"; then \
|
||||||
|
$(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \
|
||||||
|
$(INSTALL_DATA) VERSION $(DESTDIR)$(gettextsrcdir)/VERSION; \
|
||||||
|
$(INSTALL_DATA) ChangeLog.inst $(DESTDIR)$(gettextsrcdir)/ChangeLog; \
|
||||||
|
dists="COPYING.LIB-2 COPYING.LIB-2.1 $(DISTFILES.common)"; \
|
||||||
|
for file in $$dists; do \
|
||||||
|
$(INSTALL_DATA) $(srcdir)/$$file \
|
||||||
|
$(DESTDIR)$(gettextsrcdir)/$$file; \
|
||||||
|
done; \
|
||||||
|
chmod a+x $(DESTDIR)$(gettextsrcdir)/config.charset; \
|
||||||
|
dists="$(DISTFILES.generated)"; \
|
||||||
|
for file in $$dists; do \
|
||||||
|
if test -f $$file; then dir=.; else dir=$(srcdir); fi; \
|
||||||
|
$(INSTALL_DATA) $$dir/$$file \
|
||||||
|
$(DESTDIR)$(gettextsrcdir)/$$file; \
|
||||||
|
done; \
|
||||||
|
dists="$(DISTFILES.obsolete)"; \
|
||||||
|
for file in $$dists; do \
|
||||||
|
rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
|
||||||
|
done; \
|
||||||
|
else \
|
||||||
|
: ; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Define this as empty until I found a useful application.
|
||||||
|
installcheck:
|
||||||
|
|
||||||
|
uninstall:
|
||||||
|
if test "$(PACKAGE)" = "gettext" \
|
||||||
|
&& test '@INTLOBJS@' = '$(GETTOBJS)'; then \
|
||||||
|
rm -f $(DESTDIR)$(includedir)/libintl.h; \
|
||||||
|
$(LIBTOOL) --mode=uninstall \
|
||||||
|
rm -f $(DESTDIR)$(libdir)/libintl.$la; \
|
||||||
|
else \
|
||||||
|
: ; \
|
||||||
|
fi
|
||||||
|
if test '@USE_INCLUDED_LIBINTL@' = yes; then \
|
||||||
|
if test -f $(DESTDIR)$(libdir)/charset.alias; then \
|
||||||
|
temp=$(DESTDIR)$(libdir)/t-charset.alias; \
|
||||||
|
dest=$(DESTDIR)$(libdir)/charset.alias; \
|
||||||
|
sed -f ref-del.sed $$dest > $$temp; \
|
||||||
|
if grep '^# Packages using this file: $$' $$temp > /dev/null; then \
|
||||||
|
rm -f $$dest; \
|
||||||
|
else \
|
||||||
|
$(INSTALL_DATA) $$temp $$dest; \
|
||||||
|
fi; \
|
||||||
|
rm -f $$temp; \
|
||||||
|
fi; \
|
||||||
|
if test -f $(DESTDIR)$(localedir)/locale.alias; then \
|
||||||
|
temp=$(DESTDIR)$(localedir)/t-locale.alias; \
|
||||||
|
dest=$(DESTDIR)$(localedir)/locale.alias; \
|
||||||
|
sed -f ref-del.sed $$dest > $$temp; \
|
||||||
|
if grep '^# Packages using this file: $$' $$temp > /dev/null; then \
|
||||||
|
rm -f $$dest; \
|
||||||
|
else \
|
||||||
|
$(INSTALL_DATA) $$temp $$dest; \
|
||||||
|
fi; \
|
||||||
|
rm -f $$temp; \
|
||||||
|
fi; \
|
||||||
|
else \
|
||||||
|
: ; \
|
||||||
|
fi
|
||||||
|
if test "$(PACKAGE)" = "gettext"; then \
|
||||||
|
for file in VERSION ChangeLog COPYING.LIB-2 COPYING.LIB-2.1 $(DISTFILES.common) $(DISTFILES.generated); do \
|
||||||
|
rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
|
||||||
|
done; \
|
||||||
|
else \
|
||||||
|
: ; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
info dvi:
|
||||||
|
|
||||||
|
$(OBJECTS): ../config.h libgnuintl.h
|
||||||
|
bindtextdom.$lo finddomain.$lo loadmsgcat.$lo: gettextP.h gettext.h loadinfo.h
|
||||||
|
dcgettext.$lo: gettextP.h gettext.h hash-string.h loadinfo.h
|
||||||
|
|
||||||
|
tags: TAGS
|
||||||
|
|
||||||
|
TAGS: $(HEADERS) $(SOURCES)
|
||||||
|
here=`pwd`; cd $(srcdir) && etags -o $$here/TAGS $(HEADERS) $(SOURCES)
|
||||||
|
|
||||||
|
id: ID
|
||||||
|
|
||||||
|
ID: $(HEADERS) $(SOURCES)
|
||||||
|
here=`pwd`; cd $(srcdir) && mkid -f$$here/ID $(HEADERS) $(SOURCES)
|
||||||
|
|
||||||
|
|
||||||
|
mostlyclean:
|
||||||
|
rm -f *.a *.la *.o *.lo core core.*
|
||||||
|
rm -f libintl.h charset.alias ref-add.sed ref-del.sed
|
||||||
|
rm -f -r .libs _libs
|
||||||
|
|
||||||
|
clean: mostlyclean
|
||||||
|
|
||||||
|
distclean: clean
|
||||||
|
rm -f Makefile ID TAGS
|
||||||
|
if test "$(PACKAGE)" = gettext; then \
|
||||||
|
rm -f ChangeLog.inst $(DISTFILES.normal); \
|
||||||
|
else \
|
||||||
|
: ; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
maintainer-clean: distclean
|
||||||
|
@echo "This command is intended for maintainers to use;"
|
||||||
|
@echo "it deletes files that may require special tools to rebuild."
|
||||||
|
|
||||||
|
|
||||||
|
# GNU gettext needs not contain the file `VERSION' but contains some
|
||||||
|
# other files which should not be distributed in other packages.
|
||||||
|
distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
|
||||||
|
dist distdir: Makefile
|
||||||
|
if test "$(PACKAGE)" = gettext; then \
|
||||||
|
additional="$(DISTFILES.gettext)"; \
|
||||||
|
else \
|
||||||
|
additional="$(DISTFILES.normal)"; \
|
||||||
|
fi; \
|
||||||
|
$(MAKE) $(DISTFILES.common) $(DISTFILES.generated) $$additional; \
|
||||||
|
for file in ChangeLog $(DISTFILES.common) $(DISTFILES.generated) $$additional; do \
|
||||||
|
if test -f $$file; then dir=.; else dir=$(srcdir); fi; \
|
||||||
|
ln $$dir/$$file $(distdir) 2> /dev/null \
|
||||||
|
|| cp -p $$dir/$$file $(distdir); \
|
||||||
|
done
|
||||||
|
|
||||||
|
Makefile: Makefile.in ../config.status
|
||||||
|
cd .. \
|
||||||
|
&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
|
||||||
|
|
||||||
|
# Tell versions [3.59,3.63) of GNU make not to export all variables.
|
||||||
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
|
.NOEXPORT:
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
GNU gettext library from gettext-0.10.40
|
||||||
@@ -0,0 +1,369 @@
|
|||||||
|
/* Implementation of the bindtextdomain(3) function
|
||||||
|
Copyright (C) 1995-1998, 2000, 2001 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU Library General Public License as published
|
||||||
|
by the Free Software Foundation; either version 2, 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
|
||||||
|
Library General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Library General Public
|
||||||
|
License along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
||||||
|
USA. */
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
# include <config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stddef.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#ifdef _LIBC
|
||||||
|
# include <libintl.h>
|
||||||
|
#else
|
||||||
|
# include "libgnuintl.h"
|
||||||
|
#endif
|
||||||
|
#include "gettextP.h"
|
||||||
|
|
||||||
|
#ifdef _LIBC
|
||||||
|
/* We have to handle multi-threaded applications. */
|
||||||
|
# include <bits/libc-lock.h>
|
||||||
|
#else
|
||||||
|
/* Provide dummy implementation if this is outside glibc. */
|
||||||
|
# define __libc_rwlock_define(CLASS, NAME)
|
||||||
|
# define __libc_rwlock_wrlock(NAME)
|
||||||
|
# define __libc_rwlock_unlock(NAME)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* The internal variables in the standalone libintl.a must have different
|
||||||
|
names than the internal variables in GNU libc, otherwise programs
|
||||||
|
using libintl.a cannot be linked statically. */
|
||||||
|
#if !defined _LIBC
|
||||||
|
# define _nl_default_dirname _nl_default_dirname__
|
||||||
|
# define _nl_domain_bindings _nl_domain_bindings__
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Some compilers, like SunOS4 cc, don't have offsetof in <stddef.h>. */
|
||||||
|
#ifndef offsetof
|
||||||
|
# define offsetof(type,ident) ((size_t)&(((type*)0)->ident))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* @@ end of prolog @@ */
|
||||||
|
|
||||||
|
/* Contains the default location of the message catalogs. */
|
||||||
|
extern const char _nl_default_dirname[];
|
||||||
|
|
||||||
|
/* List with bindings of specific domains. */
|
||||||
|
extern struct binding *_nl_domain_bindings;
|
||||||
|
|
||||||
|
/* Lock variable to protect the global data in the gettext implementation. */
|
||||||
|
__libc_rwlock_define (extern, _nl_state_lock)
|
||||||
|
|
||||||
|
|
||||||
|
/* Names for the libintl functions are a problem. They must not clash
|
||||||
|
with existing names and they should follow ANSI C. But this source
|
||||||
|
code is also used in GNU C Library where the names have a __
|
||||||
|
prefix. So we have to make a difference here. */
|
||||||
|
#ifdef _LIBC
|
||||||
|
# define BINDTEXTDOMAIN __bindtextdomain
|
||||||
|
# define BIND_TEXTDOMAIN_CODESET __bind_textdomain_codeset
|
||||||
|
# ifndef strdup
|
||||||
|
# define strdup(str) __strdup (str)
|
||||||
|
# endif
|
||||||
|
#else
|
||||||
|
# define BINDTEXTDOMAIN bindtextdomain__
|
||||||
|
# define BIND_TEXTDOMAIN_CODESET bind_textdomain_codeset__
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Prototypes for local functions. */
|
||||||
|
static void set_binding_values PARAMS ((const char *domainname,
|
||||||
|
const char **dirnamep,
|
||||||
|
const char **codesetp));
|
||||||
|
|
||||||
|
/* Specifies the directory name *DIRNAMEP and the output codeset *CODESETP
|
||||||
|
to be used for the DOMAINNAME message catalog.
|
||||||
|
If *DIRNAMEP or *CODESETP is NULL, the corresponding attribute is not
|
||||||
|
modified, only the current value is returned.
|
||||||
|
If DIRNAMEP or CODESETP is NULL, the corresponding attribute is neither
|
||||||
|
modified nor returned. */
|
||||||
|
static void
|
||||||
|
set_binding_values (domainname, dirnamep, codesetp)
|
||||||
|
const char *domainname;
|
||||||
|
const char **dirnamep;
|
||||||
|
const char **codesetp;
|
||||||
|
{
|
||||||
|
struct binding *binding;
|
||||||
|
int modified;
|
||||||
|
|
||||||
|
/* Some sanity checks. */
|
||||||
|
if (domainname == NULL || domainname[0] == '\0')
|
||||||
|
{
|
||||||
|
if (dirnamep)
|
||||||
|
*dirnamep = NULL;
|
||||||
|
if (codesetp)
|
||||||
|
*codesetp = NULL;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
__libc_rwlock_wrlock (_nl_state_lock);
|
||||||
|
|
||||||
|
modified = 0;
|
||||||
|
|
||||||
|
for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next)
|
||||||
|
{
|
||||||
|
int compare = strcmp (domainname, binding->domainname);
|
||||||
|
if (compare == 0)
|
||||||
|
/* We found it! */
|
||||||
|
break;
|
||||||
|
if (compare < 0)
|
||||||
|
{
|
||||||
|
/* It is not in the list. */
|
||||||
|
binding = NULL;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (binding != NULL)
|
||||||
|
{
|
||||||
|
if (dirnamep)
|
||||||
|
{
|
||||||
|
const char *dirname = *dirnamep;
|
||||||
|
|
||||||
|
if (dirname == NULL)
|
||||||
|
/* The current binding has be to returned. */
|
||||||
|
*dirnamep = binding->dirname;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* The domain is already bound. If the new value and the old
|
||||||
|
one are equal we simply do nothing. Otherwise replace the
|
||||||
|
old binding. */
|
||||||
|
char *result = binding->dirname;
|
||||||
|
if (strcmp (dirname, result) != 0)
|
||||||
|
{
|
||||||
|
if (strcmp (dirname, _nl_default_dirname) == 0)
|
||||||
|
result = (char *) _nl_default_dirname;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
#if defined _LIBC || defined HAVE_STRDUP
|
||||||
|
result = strdup (dirname);
|
||||||
|
#else
|
||||||
|
size_t len = strlen (dirname) + 1;
|
||||||
|
result = (char *) malloc (len);
|
||||||
|
if (__builtin_expect (result != NULL, 1))
|
||||||
|
memcpy (result, dirname, len);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
if (__builtin_expect (result != NULL, 1))
|
||||||
|
{
|
||||||
|
if (binding->dirname != _nl_default_dirname)
|
||||||
|
free (binding->dirname);
|
||||||
|
|
||||||
|
binding->dirname = result;
|
||||||
|
modified = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*dirnamep = result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (codesetp)
|
||||||
|
{
|
||||||
|
const char *codeset = *codesetp;
|
||||||
|
|
||||||
|
if (codeset == NULL)
|
||||||
|
/* The current binding has be to returned. */
|
||||||
|
*codesetp = binding->codeset;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* The domain is already bound. If the new value and the old
|
||||||
|
one are equal we simply do nothing. Otherwise replace the
|
||||||
|
old binding. */
|
||||||
|
char *result = binding->codeset;
|
||||||
|
if (result == NULL || strcmp (codeset, result) != 0)
|
||||||
|
{
|
||||||
|
#if defined _LIBC || defined HAVE_STRDUP
|
||||||
|
result = strdup (codeset);
|
||||||
|
#else
|
||||||
|
size_t len = strlen (codeset) + 1;
|
||||||
|
result = (char *) malloc (len);
|
||||||
|
if (__builtin_expect (result != NULL, 1))
|
||||||
|
memcpy (result, codeset, len);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (__builtin_expect (result != NULL, 1))
|
||||||
|
{
|
||||||
|
if (binding->codeset != NULL)
|
||||||
|
free (binding->codeset);
|
||||||
|
|
||||||
|
binding->codeset = result;
|
||||||
|
binding->codeset_cntr++;
|
||||||
|
modified = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*codesetp = result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if ((dirnamep == NULL || *dirnamep == NULL)
|
||||||
|
&& (codesetp == NULL || *codesetp == NULL))
|
||||||
|
{
|
||||||
|
/* Simply return the default values. */
|
||||||
|
if (dirnamep)
|
||||||
|
*dirnamep = _nl_default_dirname;
|
||||||
|
if (codesetp)
|
||||||
|
*codesetp = NULL;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* We have to create a new binding. */
|
||||||
|
size_t len = strlen (domainname) + 1;
|
||||||
|
struct binding *new_binding =
|
||||||
|
(struct binding *) malloc (offsetof (struct binding, domainname) + len);
|
||||||
|
|
||||||
|
if (__builtin_expect (new_binding == NULL, 0))
|
||||||
|
goto failed;
|
||||||
|
|
||||||
|
memcpy (new_binding->domainname, domainname, len);
|
||||||
|
|
||||||
|
if (dirnamep)
|
||||||
|
{
|
||||||
|
const char *dirname = *dirnamep;
|
||||||
|
|
||||||
|
if (dirname == NULL)
|
||||||
|
/* The default value. */
|
||||||
|
dirname = _nl_default_dirname;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (strcmp (dirname, _nl_default_dirname) == 0)
|
||||||
|
dirname = _nl_default_dirname;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
char *result;
|
||||||
|
#if defined _LIBC || defined HAVE_STRDUP
|
||||||
|
result = strdup (dirname);
|
||||||
|
if (__builtin_expect (result == NULL, 0))
|
||||||
|
goto failed_dirname;
|
||||||
|
#else
|
||||||
|
size_t len = strlen (dirname) + 1;
|
||||||
|
result = (char *) malloc (len);
|
||||||
|
if (__builtin_expect (result == NULL, 0))
|
||||||
|
goto failed_dirname;
|
||||||
|
memcpy (result, dirname, len);
|
||||||
|
#endif
|
||||||
|
dirname = result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*dirnamep = dirname;
|
||||||
|
new_binding->dirname = (char *) dirname;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
/* The default value. */
|
||||||
|
new_binding->dirname = (char *) _nl_default_dirname;
|
||||||
|
|
||||||
|
new_binding->codeset_cntr = 0;
|
||||||
|
|
||||||
|
if (codesetp)
|
||||||
|
{
|
||||||
|
const char *codeset = *codesetp;
|
||||||
|
|
||||||
|
if (codeset != NULL)
|
||||||
|
{
|
||||||
|
char *result;
|
||||||
|
|
||||||
|
#if defined _LIBC || defined HAVE_STRDUP
|
||||||
|
result = strdup (codeset);
|
||||||
|
if (__builtin_expect (result == NULL, 0))
|
||||||
|
goto failed_codeset;
|
||||||
|
#else
|
||||||
|
size_t len = strlen (codeset) + 1;
|
||||||
|
result = (char *) malloc (len);
|
||||||
|
if (__builtin_expect (result == NULL, 0))
|
||||||
|
goto failed_codeset;
|
||||||
|
memcpy (result, codeset, len);
|
||||||
|
#endif
|
||||||
|
codeset = result;
|
||||||
|
new_binding->codeset_cntr++;
|
||||||
|
}
|
||||||
|
*codesetp = codeset;
|
||||||
|
new_binding->codeset = (char *) codeset;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
new_binding->codeset = NULL;
|
||||||
|
|
||||||
|
/* Now enqueue it. */
|
||||||
|
if (_nl_domain_bindings == NULL
|
||||||
|
|| strcmp (domainname, _nl_domain_bindings->domainname) < 0)
|
||||||
|
{
|
||||||
|
new_binding->next = _nl_domain_bindings;
|
||||||
|
_nl_domain_bindings = new_binding;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
binding = _nl_domain_bindings;
|
||||||
|
while (binding->next != NULL
|
||||||
|
&& strcmp (domainname, binding->next->domainname) > 0)
|
||||||
|
binding = binding->next;
|
||||||
|
|
||||||
|
new_binding->next = binding->next;
|
||||||
|
binding->next = new_binding;
|
||||||
|
}
|
||||||
|
|
||||||
|
modified = 1;
|
||||||
|
|
||||||
|
/* Here we deal with memory allocation failures. */
|
||||||
|
if (0)
|
||||||
|
{
|
||||||
|
failed_codeset:
|
||||||
|
if (new_binding->dirname != _nl_default_dirname)
|
||||||
|
free (new_binding->dirname);
|
||||||
|
failed_dirname:
|
||||||
|
free (new_binding);
|
||||||
|
failed:
|
||||||
|
if (dirnamep)
|
||||||
|
*dirnamep = NULL;
|
||||||
|
if (codesetp)
|
||||||
|
*codesetp = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* If we modified any binding, we flush the caches. */
|
||||||
|
if (modified)
|
||||||
|
++_nl_msg_cat_cntr;
|
||||||
|
|
||||||
|
__libc_rwlock_unlock (_nl_state_lock);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Specify that the DOMAINNAME message catalog will be found
|
||||||
|
in DIRNAME rather than in the system locale data base. */
|
||||||
|
char *
|
||||||
|
BINDTEXTDOMAIN (domainname, dirname)
|
||||||
|
const char *domainname;
|
||||||
|
const char *dirname;
|
||||||
|
{
|
||||||
|
set_binding_values (domainname, &dirname, NULL);
|
||||||
|
return (char *) dirname;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Specify the character encoding in which the messages from the
|
||||||
|
DOMAINNAME message catalog will be returned. */
|
||||||
|
char *
|
||||||
|
BIND_TEXTDOMAIN_CODESET (domainname, codeset)
|
||||||
|
const char *domainname;
|
||||||
|
const char *codeset;
|
||||||
|
{
|
||||||
|
set_binding_values (domainname, NULL, &codeset);
|
||||||
|
return (char *) codeset;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef _LIBC
|
||||||
|
/* Aliases for function names in GNU C Library. */
|
||||||
|
weak_alias (__bindtextdomain, bindtextdomain);
|
||||||
|
weak_alias (__bind_textdomain_codeset, bind_textdomain_codeset);
|
||||||
|
#endif
|
||||||
Executable
+438
@@ -0,0 +1,438 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
# Output a system dependent table of character encoding aliases.
|
||||||
|
#
|
||||||
|
# Copyright (C) 2000-2001 Free Software Foundation, Inc.
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify it
|
||||||
|
# under the terms of the GNU Library General Public License as published
|
||||||
|
# by the Free Software Foundation; either version 2, 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
|
||||||
|
# Library General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Library General Public
|
||||||
|
# License along with this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
||||||
|
# USA.
|
||||||
|
#
|
||||||
|
# The table consists of lines of the form
|
||||||
|
# ALIAS CANONICAL
|
||||||
|
#
|
||||||
|
# ALIAS is the (system dependent) result of "nl_langinfo (CODESET)".
|
||||||
|
# ALIAS is compared in a case sensitive way.
|
||||||
|
#
|
||||||
|
# CANONICAL is the GNU canonical name for this character encoding.
|
||||||
|
# It must be an encoding supported by libiconv. Support by GNU libc is
|
||||||
|
# also desirable. CANONICAL is case insensitive. Usually an upper case
|
||||||
|
# MIME charset name is preferred.
|
||||||
|
# The current list of GNU canonical charset names is as follows.
|
||||||
|
#
|
||||||
|
# name used by which systems a MIME name?
|
||||||
|
# ASCII, ANSI_X3.4-1968 glibc solaris freebsd
|
||||||
|
# ISO-8859-1 glibc aix hpux irix osf solaris freebsd yes
|
||||||
|
# ISO-8859-2 glibc aix hpux irix osf solaris freebsd yes
|
||||||
|
# ISO-8859-3 glibc yes
|
||||||
|
# ISO-8859-4 osf solaris freebsd yes
|
||||||
|
# ISO-8859-5 glibc aix hpux irix osf solaris freebsd yes
|
||||||
|
# ISO-8859-6 glibc aix hpux solaris yes
|
||||||
|
# ISO-8859-7 glibc aix hpux irix osf solaris yes
|
||||||
|
# ISO-8859-8 glibc aix hpux osf solaris yes
|
||||||
|
# ISO-8859-9 glibc aix hpux irix osf solaris yes
|
||||||
|
# ISO-8859-13 glibc
|
||||||
|
# ISO-8859-15 glibc aix osf solaris freebsd
|
||||||
|
# KOI8-R glibc solaris freebsd yes
|
||||||
|
# KOI8-U glibc freebsd yes
|
||||||
|
# CP437 dos
|
||||||
|
# CP775 dos
|
||||||
|
# CP850 aix osf dos
|
||||||
|
# CP852 dos
|
||||||
|
# CP855 dos
|
||||||
|
# CP856 aix
|
||||||
|
# CP857 dos
|
||||||
|
# CP861 dos
|
||||||
|
# CP862 dos
|
||||||
|
# CP864 dos
|
||||||
|
# CP865 dos
|
||||||
|
# CP866 freebsd dos
|
||||||
|
# CP869 dos
|
||||||
|
# CP874 win32 dos
|
||||||
|
# CP922 aix
|
||||||
|
# CP932 aix win32 dos
|
||||||
|
# CP943 aix
|
||||||
|
# CP949 osf win32 dos
|
||||||
|
# CP950 win32 dos
|
||||||
|
# CP1046 aix
|
||||||
|
# CP1124 aix
|
||||||
|
# CP1129 aix
|
||||||
|
# CP1250 win32
|
||||||
|
# CP1251 glibc win32
|
||||||
|
# CP1252 aix win32
|
||||||
|
# CP1253 win32
|
||||||
|
# CP1254 win32
|
||||||
|
# CP1255 win32
|
||||||
|
# CP1256 win32
|
||||||
|
# CP1257 win32
|
||||||
|
# GB2312 glibc aix hpux irix solaris freebsd yes
|
||||||
|
# EUC-JP glibc aix hpux irix osf solaris freebsd yes
|
||||||
|
# EUC-KR glibc aix hpux irix osf solaris freebsd yes
|
||||||
|
# EUC-TW glibc aix hpux irix osf solaris
|
||||||
|
# BIG5 glibc aix hpux osf solaris freebsd yes
|
||||||
|
# BIG5-HKSCS glibc
|
||||||
|
# GBK aix osf win32 dos
|
||||||
|
# GB18030 glibc
|
||||||
|
# SHIFT_JIS hpux osf solaris freebsd yes
|
||||||
|
# JOHAB glibc win32
|
||||||
|
# TIS-620 glibc aix hpux osf solaris
|
||||||
|
# VISCII glibc yes
|
||||||
|
# HP-ROMAN8 hpux
|
||||||
|
# HP-ARABIC8 hpux
|
||||||
|
# HP-GREEK8 hpux
|
||||||
|
# HP-HEBREW8 hpux
|
||||||
|
# HP-TURKISH8 hpux
|
||||||
|
# HP-KANA8 hpux
|
||||||
|
# DEC-KANJI osf
|
||||||
|
# DEC-HANYU osf
|
||||||
|
# UTF-8 glibc aix hpux osf solaris yes
|
||||||
|
#
|
||||||
|
# Note: Names which are not marked as being a MIME name should not be used in
|
||||||
|
# Internet protocols for information interchange (mail, news, etc.).
|
||||||
|
#
|
||||||
|
# Note: ASCII and ANSI_X3.4-1968 are synonymous canonical names. Applications
|
||||||
|
# must understand both names and treat them as equivalent.
|
||||||
|
#
|
||||||
|
# The first argument passed to this file is the canonical host specification,
|
||||||
|
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
|
||||||
|
# or
|
||||||
|
# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
|
||||||
|
|
||||||
|
host="$1"
|
||||||
|
os=`echo "$host" | sed -e 's/^[^-]*-[^-]*-\(.*\)$/\1/'`
|
||||||
|
echo "# This file contains a table of character encoding aliases,"
|
||||||
|
echo "# suitable for operating system '${os}'."
|
||||||
|
echo "# It was automatically generated from config.charset."
|
||||||
|
# List of references, updated during installation:
|
||||||
|
echo "# Packages using this file: "
|
||||||
|
case "$os" in
|
||||||
|
linux* | *-gnu*)
|
||||||
|
# With glibc-2.1 or newer, we don't need any canonicalization,
|
||||||
|
# because glibc has iconv and both glibc and libiconv support all
|
||||||
|
# GNU canonical names directly. Therefore, the Makefile does not
|
||||||
|
# need to install the alias file at all.
|
||||||
|
# The following applies only to glibc-2.0.x and older libcs.
|
||||||
|
echo "ISO_646.IRV:1983 ASCII"
|
||||||
|
;;
|
||||||
|
aix*)
|
||||||
|
echo "ISO8859-1 ISO-8859-1"
|
||||||
|
echo "ISO8859-2 ISO-8859-2"
|
||||||
|
echo "ISO8859-5 ISO-8859-5"
|
||||||
|
echo "ISO8859-6 ISO-8859-6"
|
||||||
|
echo "ISO8859-7 ISO-8859-7"
|
||||||
|
echo "ISO8859-8 ISO-8859-8"
|
||||||
|
echo "ISO8859-9 ISO-8859-9"
|
||||||
|
echo "ISO8859-15 ISO-8859-15"
|
||||||
|
echo "IBM-850 CP850"
|
||||||
|
echo "IBM-856 CP856"
|
||||||
|
echo "IBM-921 ISO-8859-13"
|
||||||
|
echo "IBM-922 CP922"
|
||||||
|
echo "IBM-932 CP932"
|
||||||
|
echo "IBM-943 CP943"
|
||||||
|
echo "IBM-1046 CP1046"
|
||||||
|
echo "IBM-1124 CP1124"
|
||||||
|
echo "IBM-1129 CP1129"
|
||||||
|
echo "IBM-1252 CP1252"
|
||||||
|
echo "IBM-eucCN GB2312"
|
||||||
|
echo "IBM-eucJP EUC-JP"
|
||||||
|
echo "IBM-eucKR EUC-KR"
|
||||||
|
echo "IBM-eucTW EUC-TW"
|
||||||
|
echo "big5 BIG5"
|
||||||
|
echo "GBK GBK"
|
||||||
|
echo "TIS-620 TIS-620"
|
||||||
|
echo "UTF-8 UTF-8"
|
||||||
|
;;
|
||||||
|
hpux*)
|
||||||
|
echo "iso88591 ISO-8859-1"
|
||||||
|
echo "iso88592 ISO-8859-2"
|
||||||
|
echo "iso88595 ISO-8859-5"
|
||||||
|
echo "iso88596 ISO-8859-6"
|
||||||
|
echo "iso88597 ISO-8859-7"
|
||||||
|
echo "iso88598 ISO-8859-8"
|
||||||
|
echo "iso88599 ISO-8859-9"
|
||||||
|
echo "iso885915 ISO-8859-15"
|
||||||
|
echo "roman8 HP-ROMAN8"
|
||||||
|
echo "arabic8 HP-ARABIC8"
|
||||||
|
echo "greek8 HP-GREEK8"
|
||||||
|
echo "hebrew8 HP-HEBREW8"
|
||||||
|
echo "turkish8 HP-TURKISH8"
|
||||||
|
echo "kana8 HP-KANA8"
|
||||||
|
echo "tis620 TIS-620"
|
||||||
|
echo "big5 BIG5"
|
||||||
|
echo "eucJP EUC-JP"
|
||||||
|
echo "eucKR EUC-KR"
|
||||||
|
echo "eucTW EUC-TW"
|
||||||
|
echo "hp15CN GB2312"
|
||||||
|
#echo "ccdc ?" # what is this?
|
||||||
|
echo "SJIS SHIFT_JIS"
|
||||||
|
echo "utf8 UTF-8"
|
||||||
|
;;
|
||||||
|
irix*)
|
||||||
|
echo "ISO8859-1 ISO-8859-1"
|
||||||
|
echo "ISO8859-2 ISO-8859-2"
|
||||||
|
echo "ISO8859-5 ISO-8859-5"
|
||||||
|
echo "ISO8859-7 ISO-8859-7"
|
||||||
|
echo "ISO8859-9 ISO-8859-9"
|
||||||
|
echo "eucCN GB2312"
|
||||||
|
echo "eucJP EUC-JP"
|
||||||
|
echo "eucKR EUC-KR"
|
||||||
|
echo "eucTW EUC-TW"
|
||||||
|
;;
|
||||||
|
osf*)
|
||||||
|
echo "ISO8859-1 ISO-8859-1"
|
||||||
|
echo "ISO8859-2 ISO-8859-2"
|
||||||
|
echo "ISO8859-4 ISO-8859-4"
|
||||||
|
echo "ISO8859-5 ISO-8859-5"
|
||||||
|
echo "ISO8859-7 ISO-8859-7"
|
||||||
|
echo "ISO8859-8 ISO-8859-8"
|
||||||
|
echo "ISO8859-9 ISO-8859-9"
|
||||||
|
echo "ISO8859-15 ISO-8859-15"
|
||||||
|
echo "cp850 CP850"
|
||||||
|
echo "big5 BIG5"
|
||||||
|
echo "dechanyu DEC-HANYU"
|
||||||
|
echo "dechanzi GB2312"
|
||||||
|
echo "deckanji DEC-KANJI"
|
||||||
|
echo "deckorean EUC-KR"
|
||||||
|
echo "eucJP EUC-JP"
|
||||||
|
echo "eucKR EUC-KR"
|
||||||
|
echo "eucTW EUC-TW"
|
||||||
|
echo "GBK GBK"
|
||||||
|
echo "KSC5601 CP949"
|
||||||
|
echo "sdeckanji EUC-JP"
|
||||||
|
echo "SJIS SHIFT_JIS"
|
||||||
|
echo "TACTIS TIS-620"
|
||||||
|
echo "UTF-8 UTF-8"
|
||||||
|
;;
|
||||||
|
solaris*)
|
||||||
|
echo "646 ASCII"
|
||||||
|
echo "ISO8859-1 ISO-8859-1"
|
||||||
|
echo "ISO8859-2 ISO-8859-2"
|
||||||
|
echo "ISO8859-4 ISO-8859-4"
|
||||||
|
echo "ISO8859-5 ISO-8859-5"
|
||||||
|
echo "ISO8859-6 ISO-8859-6"
|
||||||
|
echo "ISO8859-7 ISO-8859-7"
|
||||||
|
echo "ISO8859-8 ISO-8859-8"
|
||||||
|
echo "ISO8859-9 ISO-8859-9"
|
||||||
|
echo "ISO8859-15 ISO-8859-15"
|
||||||
|
echo "koi8-r KOI8-R"
|
||||||
|
echo "BIG5 BIG5"
|
||||||
|
echo "gb2312 GB2312"
|
||||||
|
echo "cns11643 EUC-TW"
|
||||||
|
echo "5601 EUC-KR"
|
||||||
|
echo "eucJP EUC-JP"
|
||||||
|
echo "PCK SHIFT_JIS"
|
||||||
|
echo "TIS620.2533 TIS-620"
|
||||||
|
#echo "sun_eu_greek ?" # what is this?
|
||||||
|
echo "UTF-8 UTF-8"
|
||||||
|
;;
|
||||||
|
freebsd*)
|
||||||
|
# FreeBSD 4.2 doesn't have nl_langinfo(CODESET); therefore
|
||||||
|
# localcharset.c falls back to using the full locale name
|
||||||
|
# from the environment variables.
|
||||||
|
echo "C ASCII"
|
||||||
|
echo "US-ASCII ASCII"
|
||||||
|
for l in la_LN lt_LN; do
|
||||||
|
echo "$l.ASCII ASCII"
|
||||||
|
done
|
||||||
|
for l in da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES \
|
||||||
|
fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT la_LN \
|
||||||
|
lt_LN nl_BE nl_NL no_NO pt_PT sv_SE; do
|
||||||
|
echo "$l.ISO_8859-1 ISO-8859-1"
|
||||||
|
echo "$l.DIS_8859-15 ISO-8859-15"
|
||||||
|
done
|
||||||
|
for l in cs_CZ hr_HR hu_HU la_LN lt_LN pl_PL sl_SI; do
|
||||||
|
echo "$l.ISO_8859-2 ISO-8859-2"
|
||||||
|
done
|
||||||
|
for l in la_LN lt_LT; do
|
||||||
|
echo "$l.ISO_8859-4 ISO-8859-4"
|
||||||
|
done
|
||||||
|
for l in ru_RU ru_SU; do
|
||||||
|
echo "$l.KOI8-R KOI8-R"
|
||||||
|
echo "$l.ISO_8859-5 ISO-8859-5"
|
||||||
|
echo "$l.CP866 CP866"
|
||||||
|
done
|
||||||
|
echo "uk_UA.KOI8-U KOI8-U"
|
||||||
|
echo "zh_TW.BIG5 BIG5"
|
||||||
|
echo "zh_TW.Big5 BIG5"
|
||||||
|
echo "zh_CN.EUC GB2312"
|
||||||
|
echo "ja_JP.EUC EUC-JP"
|
||||||
|
echo "ja_JP.SJIS SHIFT_JIS"
|
||||||
|
echo "ja_JP.Shift_JIS SHIFT_JIS"
|
||||||
|
echo "ko_KR.EUC EUC-KR"
|
||||||
|
;;
|
||||||
|
beos*)
|
||||||
|
# BeOS has a single locale, and it has UTF-8 encoding.
|
||||||
|
echo "* UTF-8"
|
||||||
|
;;
|
||||||
|
msdosdjgpp*)
|
||||||
|
# DJGPP 2.03 doesn't have nl_langinfo(CODESET); therefore
|
||||||
|
# localcharset.c falls back to using the full locale name
|
||||||
|
# from the environment variables.
|
||||||
|
echo "#"
|
||||||
|
echo "# The encodings given here may not all be correct."
|
||||||
|
echo "# If you find that the encoding given for your language and"
|
||||||
|
echo "# country is not the one your DOS machine actually uses, just"
|
||||||
|
echo "# correct it in this file, and send a mail to"
|
||||||
|
echo "# Juan Manuel Guerrero <[email protected]>"
|
||||||
|
echo "# and Bruno Haible <[email protected]>."
|
||||||
|
echo "#"
|
||||||
|
echo "C ASCII"
|
||||||
|
# ISO-8859-1 languages
|
||||||
|
echo "ca CP850"
|
||||||
|
echo "ca_ES CP850"
|
||||||
|
echo "da CP865" # not CP850 ??
|
||||||
|
echo "da_DK CP865" # not CP850 ??
|
||||||
|
echo "de CP850"
|
||||||
|
echo "de_AT CP850"
|
||||||
|
echo "de_CH CP850"
|
||||||
|
echo "de_DE CP850"
|
||||||
|
echo "en CP850"
|
||||||
|
echo "en_AU CP850" # not CP437 ??
|
||||||
|
echo "en_CA CP850"
|
||||||
|
echo "en_GB CP850"
|
||||||
|
echo "en_NZ CP437"
|
||||||
|
echo "en_US CP437"
|
||||||
|
echo "en_ZA CP850" # not CP437 ??
|
||||||
|
echo "es CP850"
|
||||||
|
echo "es_AR CP850"
|
||||||
|
echo "es_BO CP850"
|
||||||
|
echo "es_CL CP850"
|
||||||
|
echo "es_CO CP850"
|
||||||
|
echo "es_CR CP850"
|
||||||
|
echo "es_CU CP850"
|
||||||
|
echo "es_DO CP850"
|
||||||
|
echo "es_EC CP850"
|
||||||
|
echo "es_ES CP850"
|
||||||
|
echo "es_GT CP850"
|
||||||
|
echo "es_HN CP850"
|
||||||
|
echo "es_MX CP850"
|
||||||
|
echo "es_NI CP850"
|
||||||
|
echo "es_PA CP850"
|
||||||
|
echo "es_PY CP850"
|
||||||
|
echo "es_PE CP850"
|
||||||
|
echo "es_SV CP850"
|
||||||
|
echo "es_UY CP850"
|
||||||
|
echo "es_VE CP850"
|
||||||
|
echo "et CP850"
|
||||||
|
echo "et_EE CP850"
|
||||||
|
echo "eu CP850"
|
||||||
|
echo "eu_ES CP850"
|
||||||
|
echo "fi CP850"
|
||||||
|
echo "fi_FI CP850"
|
||||||
|
echo "fr CP850"
|
||||||
|
echo "fr_BE CP850"
|
||||||
|
echo "fr_CA CP850"
|
||||||
|
echo "fr_CH CP850"
|
||||||
|
echo "fr_FR CP850"
|
||||||
|
echo "ga CP850"
|
||||||
|
echo "ga_IE CP850"
|
||||||
|
echo "gd CP850"
|
||||||
|
echo "gd_GB CP850"
|
||||||
|
echo "gl CP850"
|
||||||
|
echo "gl_ES CP850"
|
||||||
|
echo "id CP850" # not CP437 ??
|
||||||
|
echo "id_ID CP850" # not CP437 ??
|
||||||
|
echo "is CP861" # not CP850 ??
|
||||||
|
echo "is_IS CP861" # not CP850 ??
|
||||||
|
echo "it CP850"
|
||||||
|
echo "it_CH CP850"
|
||||||
|
echo "it_IT CP850"
|
||||||
|
echo "lt CP775"
|
||||||
|
echo "lt_LT CP775"
|
||||||
|
echo "lv CP775"
|
||||||
|
echo "lv_LV CP775"
|
||||||
|
echo "nb CP865" # not CP850 ??
|
||||||
|
echo "nb_NO CP865" # not CP850 ??
|
||||||
|
echo "nl CP850"
|
||||||
|
echo "nl_BE CP850"
|
||||||
|
echo "nl_NL CP850"
|
||||||
|
echo "nn CP865" # not CP850 ??
|
||||||
|
echo "nn_NO CP865" # not CP850 ??
|
||||||
|
echo "no CP865" # not CP850 ??
|
||||||
|
echo "no_NO CP865" # not CP850 ??
|
||||||
|
echo "pt CP850"
|
||||||
|
echo "pt_BR CP850"
|
||||||
|
echo "pt_PT CP850"
|
||||||
|
echo "sv CP850"
|
||||||
|
echo "sv_SE CP850"
|
||||||
|
# ISO-8859-2 languages
|
||||||
|
echo "cs CP852"
|
||||||
|
echo "cs_CZ CP852"
|
||||||
|
echo "hr CP852"
|
||||||
|
echo "hr_HR CP852"
|
||||||
|
echo "hu CP852"
|
||||||
|
echo "hu_HU CP852"
|
||||||
|
echo "pl CP852"
|
||||||
|
echo "pl_PL CP852"
|
||||||
|
echo "ro CP852"
|
||||||
|
echo "ro_RO CP852"
|
||||||
|
echo "sk CP852"
|
||||||
|
echo "sk_SK CP852"
|
||||||
|
echo "sl CP852"
|
||||||
|
echo "sl_SI CP852"
|
||||||
|
echo "sq CP852"
|
||||||
|
echo "sq_AL CP852"
|
||||||
|
echo "sr CP852" # CP852 or CP866 or CP855 ??
|
||||||
|
echo "sr_YU CP852" # CP852 or CP866 or CP855 ??
|
||||||
|
# ISO-8859-3 languages
|
||||||
|
echo "mt CP850"
|
||||||
|
echo "mt_MT CP850"
|
||||||
|
# ISO-8859-5 languages
|
||||||
|
echo "be CP866"
|
||||||
|
echo "be_BE CP866"
|
||||||
|
echo "bg CP866" # not CP855 ??
|
||||||
|
echo "bg_BG CP866" # not CP855 ??
|
||||||
|
echo "mk CP866" # not CP855 ??
|
||||||
|
echo "mk_MK CP866" # not CP855 ??
|
||||||
|
echo "ru KOI8-R" # not CP866 ??
|
||||||
|
echo "ru_RU KOI8-R" # not CP866 ??
|
||||||
|
# ISO-8859-6 languages
|
||||||
|
echo "ar CP864"
|
||||||
|
echo "ar_AE CP864"
|
||||||
|
echo "ar_DZ CP864"
|
||||||
|
echo "ar_EG CP864"
|
||||||
|
echo "ar_IQ CP864"
|
||||||
|
echo "ar_IR CP864"
|
||||||
|
echo "ar_JO CP864"
|
||||||
|
echo "ar_KW CP864"
|
||||||
|
echo "ar_MA CP864"
|
||||||
|
echo "ar_OM CP864"
|
||||||
|
echo "ar_QA CP864"
|
||||||
|
echo "ar_SA CP864"
|
||||||
|
echo "ar_SY CP864"
|
||||||
|
# ISO-8859-7 languages
|
||||||
|
echo "el CP869"
|
||||||
|
echo "el_GR CP869"
|
||||||
|
# ISO-8859-8 languages
|
||||||
|
echo "he CP862"
|
||||||
|
echo "he_IL CP862"
|
||||||
|
# ISO-8859-9 languages
|
||||||
|
echo "tr CP857"
|
||||||
|
echo "tr_TR CP857"
|
||||||
|
# Japanese
|
||||||
|
echo "ja CP932"
|
||||||
|
echo "ja_JP CP932"
|
||||||
|
# Chinese
|
||||||
|
echo "zh_CN GBK"
|
||||||
|
echo "zh_TW CP950" # not CP938 ??
|
||||||
|
# Korean
|
||||||
|
echo "kr CP949" # not CP934 ??
|
||||||
|
echo "kr_KR CP949" # not CP934 ??
|
||||||
|
# Thai
|
||||||
|
echo "th CP874"
|
||||||
|
echo "th_TH CP874"
|
||||||
|
# Other
|
||||||
|
echo "eo CP850"
|
||||||
|
echo "eo_EO CP850"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
/* Implementation of the dcgettext(3) function.
|
||||||
|
Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU Library General Public License as published
|
||||||
|
by the Free Software Foundation; either version 2, 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
|
||||||
|
Library General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Library General Public
|
||||||
|
License along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
||||||
|
USA. */
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
# include <config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "gettextP.h"
|
||||||
|
#ifdef _LIBC
|
||||||
|
# include <libintl.h>
|
||||||
|
#else
|
||||||
|
# include "libgnuintl.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* @@ end of prolog @@ */
|
||||||
|
|
||||||
|
/* Names for the libintl functions are a problem. They must not clash
|
||||||
|
with existing names and they should follow ANSI C. But this source
|
||||||
|
code is also used in GNU C Library where the names have a __
|
||||||
|
prefix. So we have to make a difference here. */
|
||||||
|
#ifdef _LIBC
|
||||||
|
# define DCGETTEXT __dcgettext
|
||||||
|
# define DCIGETTEXT __dcigettext
|
||||||
|
#else
|
||||||
|
# define DCGETTEXT dcgettext__
|
||||||
|
# define DCIGETTEXT dcigettext__
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
|
||||||
|
locale. */
|
||||||
|
char *
|
||||||
|
DCGETTEXT (domainname, msgid, category)
|
||||||
|
const char *domainname;
|
||||||
|
const char *msgid;
|
||||||
|
int category;
|
||||||
|
{
|
||||||
|
return DCIGETTEXT (domainname, msgid, NULL, 0, 0, category);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef _LIBC
|
||||||
|
/* Alias for function name in GNU C Library. */
|
||||||
|
weak_alias (__dcgettext, dcgettext);
|
||||||
|
#endif
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user