vrtc / pjass (public) (License: BSD) (since 2023-08-03) (hash sha1)
pjass is a free Jass scripting language parser. This repository is a fork of lep/pjass. The goal is to add Debian packaging. As of the time of this writing, it works for current stable, that is Debian 12 (bookworm).
List of commits:
Subject Hash Author Date (UTC)
pjass 10f e6893a0480e2b1c9bb22f39a897a86e8d05123a6 PitzerMike 2007-04-28 08:26:00
Fake commit to cleanup the cvs-import of the pjass sourceforge repo. 7f2ea341ebf2ed939f99ec3b14403025446e25f5 lep 2017-01-11 14:07:30
Fixed some errors on Debian and removed some warnings. 28b8a48ff580cb1c06343b4f51194b9a18f0901c cilibrar 2004-08-15 07:15:22
Works under Linux, removed debug messages. 60be798cd6b6e8ad3432feecf3418c7d2662807f cilibrar 2004-08-15 07:10:44
*** empty log message *** e8d4118415a91b81e924c78fc26c9c48eddefd5f cilibrar 2004-08-15 07:07:53
Fixed -mno-cygwin option to work under just cygwin host_os 1190fdc75012f9b55c597cc46f9b1c814ca5b8c7 cilibrar 2004-08-15 07:06:56
More configuration guessing scripts. d738f380f0324e5ca4ecdde5b79af99e1a783f24 cilibrar 2004-08-15 07:03:34
More adjustments. 0e72fd7fb1af1faaea69beb731b3d675583c2d2f cilibrar 2004-08-15 07:02:02
Fixed options to compile under RedHat. 12c7b48712fcdd84a2b36ecd6f2d4979a19dc7be cilibrar 2004-08-15 06:38:26
Some boilerplate files. 3b14c4d0fd37d9b2d4ddd443a6f74a67793eb338 cilibrar 2004-08-15 06:19:21
Converted to autoconf, automake. 06b0d83604e6316c9e086af0ce08ac3f2d4e7b8a cilibrar 2004-08-15 06:13:25
*** empty log message *** 3a61644cba31faab849c60b0aaeba6e5ae6e0fbb cilibrar 2003-06-22 18:00:46
Fix error message for implicit redirection parameter. 547f94e18885bdb7d0a61908691268987ef03a0f cilibrar 2003-06-09 08:51:53
*** empty log message *** cef95bf6a7aec8b05ceaa325e0b7cafe0e0fb616 cilibrar 2003-06-08 22:13:41
*** empty log message *** c6a48acc98a4580e1dc9560b26b3adf579569319 cilibrar 2003-06-08 17:08:25
*** empty log message *** a9084c6a8897b38d209f2f3839ed9fd8c17a5eb4 cilibrar 2003-06-08 15:59:21
*** empty log message *** 594b07b664e8da134328e2099107f836c4783d22 cilibrar 2003-06-08 14:19:39
A makefile for cygwin. 7114936321546139b5512821e3d868b21c0b89f1 cilibrar 2003-06-08 10:38:31
Added \n, \r, \t in double-quotes. Added debug keyword handling. Now it parses everything in the Scripts directory except demo.ai, which looks like it could never work anyway. a76d8de5a85768c58297ad05dcc3bd361e3c8d69 cilibrar 2003-06-08 10:12:17
Make downcasting bug a bit more restrictive to minimize future problems. 3bef4ca2d62e1de3fe70986de71a3da2b68ff25f cilibrar 2003-06-08 09:52:03
Commit e6893a0480e2b1c9bb22f39a897a86e8d05123a6 - pjass 10f
Author: PitzerMike
Author date (UTC): 2007-04-28 08:26
Committer name: lep
Committer date (UTC): 2015-02-01 13:14
Parent(s): 7f2ea341ebf2ed939f99ec3b14403025446e25f5
Signer:
Signing key:
Signing status: N
Tree: 73e53168d43063b7126cb7c4203d2176bf886648
File Lines added Lines deleted
.cvsignore 0 13
AUTHORS 0 1
COPYING 0 340
ChangeLog 0 0
INSTALL 0 231
Makefile 36 0
Makefile.Whatever 25 0
Makefile.am 0 1
Makefile.cygwin 25 0
NEWS 0 2
README 0 1
config.guess 0 1410
config.sub 0 1508
configure.ac 0 20
depcomp 0 479
grammar.y 458 99
install-sh 0 294
misc.c 197 49
misc.h 15 5
missing 0 336
mkinstalldirs 0 111
notes.txt 27 0
pjass.res 0 0
readme.txt 23 23
src/.cvsignore 0 11
src/Makefile.am 0 23
src/config.h.in 0 26
token.l 67 39
File .cvsignore deleted (index 6b86cef..0000000)
1 .cvsignore
2 ? AUTHORS
3 ? ChangeLog
4 ? NEWS
5 ? README
6 Makefile
7 Makefile.in
8 aclocal.m4
9 autom4te.cache
10 config.log
11 config.status
12 configure
13 o
File AUTHORS deleted (index 70b3e86..0000000)
1 Rudi Cilibrasi (cilibrar@gmail.com)
File COPYING deleted (index d60c31a..0000000)
1 GNU GENERAL PUBLIC LICENSE
2 Version 2, June 1991
3
4 Copyright (C) 1989, 1991 Free Software Foundation, Inc.
5 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
6 Everyone is permitted to copy and distribute verbatim copies
7 of this license document, but changing it is not allowed.
8
9 Preamble
10
11 The licenses for most software are designed to take away your
12 freedom to share and change it. By contrast, the GNU General Public
13 License is intended to guarantee your freedom to share and change free
14 software--to make sure the software is free for all its users. This
15 General Public License applies to most of the Free Software
16 Foundation's software and to any other program whose authors commit to
17 using it. (Some other Free Software Foundation software is covered by
18 the GNU Library General Public License instead.) You can apply it to
19 your programs, too.
20
21 When we speak of free software, we are referring to freedom, not
22 price. Our General Public Licenses are designed to make sure that you
23 have the freedom to distribute copies of free software (and charge for
24 this service if you wish), that you receive source code or can get it
25 if you want it, that you can change the software or use pieces of it
26 in new free programs; and that you know you can do these things.
27
28 To protect your rights, we need to make restrictions that forbid
29 anyone to deny you these rights or to ask you to surrender the rights.
30 These restrictions translate to certain responsibilities for you if you
31 distribute copies of the software, or if you modify it.
32
33 For example, if you distribute copies of such a program, whether
34 gratis or for a fee, you must give the recipients all the rights that
35 you have. You must make sure that they, too, receive or can get the
36 source code. And you must show them these terms so they know their
37 rights.
38
39 We protect your rights with two steps: (1) copyright the software, and
40 (2) offer you this license which gives you legal permission to copy,
41 distribute and/or modify the software.
42
43 Also, for each author's protection and ours, we want to make certain
44 that everyone understands that there is no warranty for this free
45 software. If the software is modified by someone else and passed on, we
46 want its recipients to know that what they have is not the original, so
47 that any problems introduced by others will not reflect on the original
48 authors' reputations.
49
50 Finally, any free program is threatened constantly by software
51 patents. We wish to avoid the danger that redistributors of a free
52 program will individually obtain patent licenses, in effect making the
53 program proprietary. To prevent this, we have made it clear that any
54 patent must be licensed for everyone's free use or not licensed at all.
55
56 The precise terms and conditions for copying, distribution and
57 modification follow.
58
59 GNU GENERAL PUBLIC LICENSE
60 TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
61
62 0. This License applies to any program or other work which contains
63 a notice placed by the copyright holder saying it may be distributed
64 under the terms of this General Public License. The "Program", below,
65 refers to any such program or work, and a "work based on the Program"
66 means either the Program or any derivative work under copyright law:
67 that is to say, a work containing the Program or a portion of it,
68 either verbatim or with modifications and/or translated into another
69 language. (Hereinafter, translation is included without limitation in
70 the term "modification".) Each licensee is addressed as "you".
71
72 Activities other than copying, distribution and modification are not
73 covered by this License; they are outside its scope. The act of
74 running the Program is not restricted, and the output from the Program
75 is covered only if its contents constitute a work based on the
76 Program (independent of having been made by running the Program).
77 Whether that is true depends on what the Program does.
78
79 1. You may copy and distribute verbatim copies of the Program's
80 source code as you receive it, in any medium, provided that you
81 conspicuously and appropriately publish on each copy an appropriate
82 copyright notice and disclaimer of warranty; keep intact all the
83 notices that refer to this License and to the absence of any warranty;
84 and give any other recipients of the Program a copy of this License
85 along with the Program.
86
87 You may charge a fee for the physical act of transferring a copy, and
88 you may at your option offer warranty protection in exchange for a fee.
89
90 2. You may modify your copy or copies of the Program or any portion
91 of it, thus forming a work based on the Program, and copy and
92 distribute such modifications or work under the terms of Section 1
93 above, provided that you also meet all of these conditions:
94
95 a) You must cause the modified files to carry prominent notices
96 stating that you changed the files and the date of any change.
97
98 b) You must cause any work that you distribute or publish, that in
99 whole or in part contains or is derived from the Program or any
100 part thereof, to be licensed as a whole at no charge to all third
101 parties under the terms of this License.
102
103 c) If the modified program normally reads commands interactively
104 when run, you must cause it, when started running for such
105 interactive use in the most ordinary way, to print or display an
106 announcement including an appropriate copyright notice and a
107 notice that there is no warranty (or else, saying that you provide
108 a warranty) and that users may redistribute the program under
109 these conditions, and telling the user how to view a copy of this
110 License. (Exception: if the Program itself is interactive but
111 does not normally print such an announcement, your work based on
112 the Program is not required to print an announcement.)
113
114 These requirements apply to the modified work as a whole. If
115 identifiable sections of that work are not derived from the Program,
116 and can be reasonably considered independent and separate works in
117 themselves, then this License, and its terms, do not apply to those
118 sections when you distribute them as separate works. But when you
119 distribute the same sections as part of a whole which is a work based
120 on the Program, the distribution of the whole must be on the terms of
121 this License, whose permissions for other licensees extend to the
122 entire whole, and thus to each and every part regardless of who wrote it.
123
124 Thus, it is not the intent of this section to claim rights or contest
125 your rights to work written entirely by you; rather, the intent is to
126 exercise the right to control the distribution of derivative or
127 collective works based on the Program.
128
129 In addition, mere aggregation of another work not based on the Program
130 with the Program (or with a work based on the Program) on a volume of
131 a storage or distribution medium does not bring the other work under
132 the scope of this License.
133
134 3. You may copy and distribute the Program (or a work based on it,
135 under Section 2) in object code or executable form under the terms of
136 Sections 1 and 2 above provided that you also do one of the following:
137
138 a) Accompany it with the complete corresponding machine-readable
139 source code, which must be distributed under the terms of Sections
140 1 and 2 above on a medium customarily used for software interchange; or,
141
142 b) Accompany it with a written offer, valid for at least three
143 years, to give any third party, for a charge no more than your
144 cost of physically performing source distribution, a complete
145 machine-readable copy of the corresponding source code, to be
146 distributed under the terms of Sections 1 and 2 above on a medium
147 customarily used for software interchange; or,
148
149 c) Accompany it with the information you received as to the offer
150 to distribute corresponding source code. (This alternative is
151 allowed only for noncommercial distribution and only if you
152 received the program in object code or executable form with such
153 an offer, in accord with Subsection b above.)
154
155 The source code for a work means the preferred form of the work for
156 making modifications to it. For an executable work, complete source
157 code means all the source code for all modules it contains, plus any
158 associated interface definition files, plus the scripts used to
159 control compilation and installation of the executable. However, as a
160 special exception, the source code distributed need not include
161 anything that is normally distributed (in either source or binary
162 form) with the major components (compiler, kernel, and so on) of the
163 operating system on which the executable runs, unless that component
164 itself accompanies the executable.
165
166 If distribution of executable or object code is made by offering
167 access to copy from a designated place, then offering equivalent
168 access to copy the source code from the same place counts as
169 distribution of the source code, even though third parties are not
170 compelled to copy the source along with the object code.
171
172 4. You may not copy, modify, sublicense, or distribute the Program
173 except as expressly provided under this License. Any attempt
174 otherwise to copy, modify, sublicense or distribute the Program is
175 void, and will automatically terminate your rights under this License.
176 However, parties who have received copies, or rights, from you under
177 this License will not have their licenses terminated so long as such
178 parties remain in full compliance.
179
180 5. You are not required to accept this License, since you have not
181 signed it. However, nothing else grants you permission to modify or
182 distribute the Program or its derivative works. These actions are
183 prohibited by law if you do not accept this License. Therefore, by
184 modifying or distributing the Program (or any work based on the
185 Program), you indicate your acceptance of this License to do so, and
186 all its terms and conditions for copying, distributing or modifying
187 the Program or works based on it.
188
189 6. Each time you redistribute the Program (or any work based on the
190 Program), the recipient automatically receives a license from the
191 original licensor to copy, distribute or modify the Program subject to
192 these terms and conditions. You may not impose any further
193 restrictions on the recipients' exercise of the rights granted herein.
194 You are not responsible for enforcing compliance by third parties to
195 this License.
196
197 7. If, as a consequence of a court judgment or allegation of patent
198 infringement or for any other reason (not limited to patent issues),
199 conditions are imposed on you (whether by court order, agreement or
200 otherwise) that contradict the conditions of this License, they do not
201 excuse you from the conditions of this License. If you cannot
202 distribute so as to satisfy simultaneously your obligations under this
203 License and any other pertinent obligations, then as a consequence you
204 may not distribute the Program at all. For example, if a patent
205 license would not permit royalty-free redistribution of the Program by
206 all those who receive copies directly or indirectly through you, then
207 the only way you could satisfy both it and this License would be to
208 refrain entirely from distribution of the Program.
209
210 If any portion of this section is held invalid or unenforceable under
211 any particular circumstance, the balance of the section is intended to
212 apply and the section as a whole is intended to apply in other
213 circumstances.
214
215 It is not the purpose of this section to induce you to infringe any
216 patents or other property right claims or to contest validity of any
217 such claims; this section has the sole purpose of protecting the
218 integrity of the free software distribution system, which is
219 implemented by public license practices. Many people have made
220 generous contributions to the wide range of software distributed
221 through that system in reliance on consistent application of that
222 system; it is up to the author/donor to decide if he or she is willing
223 to distribute software through any other system and a licensee cannot
224 impose that choice.
225
226 This section is intended to make thoroughly clear what is believed to
227 be a consequence of the rest of this License.
228
229 8. If the distribution and/or use of the Program is restricted in
230 certain countries either by patents or by copyrighted interfaces, the
231 original copyright holder who places the Program under this License
232 may add an explicit geographical distribution limitation excluding
233 those countries, so that distribution is permitted only in or among
234 countries not thus excluded. In such case, this License incorporates
235 the limitation as if written in the body of this License.
236
237 9. The Free Software Foundation may publish revised and/or new versions
238 of the General Public License from time to time. Such new versions will
239 be similar in spirit to the present version, but may differ in detail to
240 address new problems or concerns.
241
242 Each version is given a distinguishing version number. If the Program
243 specifies a version number of this License which applies to it and "any
244 later version", you have the option of following the terms and conditions
245 either of that version or of any later version published by the Free
246 Software Foundation. If the Program does not specify a version number of
247 this License, you may choose any version ever published by the Free Software
248 Foundation.
249
250 10. If you wish to incorporate parts of the Program into other free
251 programs whose distribution conditions are different, write to the author
252 to ask for permission. For software which is copyrighted by the Free
253 Software Foundation, write to the Free Software Foundation; we sometimes
254 make exceptions for this. Our decision will be guided by the two goals
255 of preserving the free status of all derivatives of our free software and
256 of promoting the sharing and reuse of software generally.
257
258 NO WARRANTY
259
260 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
261 FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
262 OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
263 PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
264 OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
265 MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
266 TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
267 PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
268 REPAIR OR CORRECTION.
269
270 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
271 WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
272 REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
273 INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
274 OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
275 TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
276 YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
277 PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
278 POSSIBILITY OF SUCH DAMAGES.
279
280 END OF TERMS AND CONDITIONS
281
282 How to Apply These Terms to Your New Programs
283
284 If you develop a new program, and you want it to be of the greatest
285 possible use to the public, the best way to achieve this is to make it
286 free software which everyone can redistribute and change under these terms.
287
288 To do so, attach the following notices to the program. It is safest
289 to attach them to the start of each source file to most effectively
290 convey the exclusion of warranty; and each file should have at least
291 the "copyright" line and a pointer to where the full notice is found.
292
293 <one line to give the program's name and a brief idea of what it does.>
294 Copyright (C) <year> <name of author>
295
296 This program is free software; you can redistribute it and/or modify
297 it under the terms of the GNU General Public License as published by
298 the Free Software Foundation; either version 2 of the License, or
299 (at your option) any later version.
300
301 This program is distributed in the hope that it will be useful,
302 but WITHOUT ANY WARRANTY; without even the implied warranty of
303 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
304 GNU General Public License for more details.
305
306 You should have received a copy of the GNU General Public License
307 along with this program; if not, write to the Free Software
308 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
309
310
311 Also add information on how to contact you by electronic and paper mail.
312
313 If the program is interactive, make it output a short notice like this
314 when it starts in an interactive mode:
315
316 Gnomovision version 69, Copyright (C) year name of author
317 Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
318 This is free software, and you are welcome to redistribute it
319 under certain conditions; type `show c' for details.
320
321 The hypothetical commands `show w' and `show c' should show the appropriate
322 parts of the General Public License. Of course, the commands you use may
323 be called something other than `show w' and `show c'; they could even be
324 mouse-clicks or menu items--whatever suits your program.
325
326 You should also get your employer (if you work as a programmer) or your
327 school, if any, to sign a "copyright disclaimer" for the program, if
328 necessary. Here is a sample; alter the names:
329
330 Yoyodyne, Inc., hereby disclaims all copyright interest in the program
331 `Gnomovision' (which makes passes at compilers) written by James Hacker.
332
333 <signature of Ty Coon>, 1 April 1989
334 Ty Coon, President of Vice
335
336 This General Public License does not permit incorporating your program into
337 proprietary programs. If your program is a subroutine library, you may
338 consider it more useful to permit linking proprietary applications with the
339 library. If this is what you want to do, use the GNU Library General
340 Public License instead of this License.
File ChangeLog deleted (index e69de29..0000000)
File INSTALL deleted (index 9d3feae..0000000)
1 Please see the doc/ directory for more specific installation instructions.
2
3 Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software
4 Foundation, Inc.
5
6 This file is free documentation; the Free Software Foundation gives
7 unlimited permission to copy, distribute and modify it.
8
9 Basic Installation
10 ==================
11
12 These are generic installation instructions.
13
14 The `configure' shell script attempts to guess correct values for
15 various system-dependent variables used during compilation. It uses
16 those values to create a `Makefile' in each directory of the package.
17 It may also create one or more `.h' files containing system-dependent
18 definitions. Finally, it creates a shell script `config.status' that
19 you can run in the future to recreate the current configuration, and a
20 file `config.log' containing compiler output (useful mainly for
21 debugging `configure').
22
23 It can also use an optional file (typically called `config.cache'
24 and enabled with `--cache-file=config.cache' or simply `-C') that saves
25 the results of its tests to speed up reconfiguring. (Caching is
26 disabled by default to prevent problems with accidental use of stale
27 cache files.)
28
29 If you need to do unusual things to compile the package, please try
30 to figure out how `configure' could check whether to do them, and mail
31 diffs or instructions to the address given in the `README' so they can
32 be considered for the next release. If you are using the cache, and at
33 some point `config.cache' contains results you don't want to keep, you
34 may remove or edit it.
35
36 The file `configure.ac' (or `configure.in') is used to create
37 `configure' by a program called `autoconf'. You only need
38 `configure.ac' if you want to change it or regenerate `configure' using
39 a newer version of `autoconf'.
40
41 The simplest way to compile this package is:
42
43 1. `cd' to the directory containing the package's source code and type
44 `./configure' to configure the package for your system. If you're
45 using `csh' on an old version of System V, you might need to type
46 `sh ./configure' instead to prevent `csh' from trying to execute
47 `configure' itself.
48
49 Running `configure' takes awhile. While running, it prints some
50 messages telling which features it is checking for.
51
52 2. Type `make' to compile the package.
53
54 3. Optionally, type `make check' to run any self-tests that come with
55 the package.
56
57 4. Type `make install' to install the programs and any data files and
58 documentation.
59
60 5. You can remove the program binaries and object files from the
61 source code directory by typing `make clean'. To also remove the
62 files that `configure' created (so you can compile the package for
63 a different kind of computer), type `make distclean'. There is
64 also a `make maintainer-clean' target, but that is intended mainly
65 for the package's developers. If you use it, you may have to get
66 all sorts of other programs in order to regenerate files that came
67 with the distribution.
68
69 Compilers and Options
70 =====================
71
72 Some systems require unusual options for compilation or linking that
73 the `configure' script does not know about. Run `./configure --help'
74 for details on some of the pertinent environment variables.
75
76 You can give `configure' initial values for configuration parameters
77 by setting variables in the command line or in the environment. Here
78 is an example:
79
80 ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
81
82 *Note Defining Variables::, for more details.
83
84 Compiling For Multiple Architectures
85 ====================================
86
87 You can compile the package for more than one kind of computer at the
88 same time, by placing the object files for each architecture in their
89 own directory. To do this, you must use a version of `make' that
90 supports the `VPATH' variable, such as GNU `make'. `cd' to the
91 directory where you want the object files and executables to go and run
92 the `configure' script. `configure' automatically checks for the
93 source code in the directory that `configure' is in and in `..'.
94
95 If you have to use a `make' that does not support the `VPATH'
96 variable, you have to compile the package for one architecture at a
97 time in the source code directory. After you have installed the
98 package for one architecture, use `make distclean' before reconfiguring
99 for another architecture.
100
101 Installation Names
102 ==================
103
104 By default, `make install' will install the package's files in
105 `/usr/local/bin', `/usr/local/man', etc. You can specify an
106 installation prefix other than `/usr/local' by giving `configure' the
107 option `--prefix=PATH'.
108
109 You can specify separate installation prefixes for
110 architecture-specific files and architecture-independent files. If you
111 give `configure' the option `--exec-prefix=PATH', the package will use
112 PATH as the prefix for installing programs and libraries.
113 Documentation and other data files will still use the regular prefix.
114
115 In addition, if you use an unusual directory layout you can give
116 options like `--bindir=PATH' to specify different values for particular
117 kinds of files. Run `configure --help' for a list of the directories
118 you can set and what kinds of files go in them.
119
120 If the package supports it, you can cause programs to be installed
121 with an extra prefix or suffix on their names by giving `configure' the
122 option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
123
124 Optional Features
125 =================
126
127 Some packages pay attention to `--enable-FEATURE' options to
128 `configure', where FEATURE indicates an optional part of the package.
129 They may also pay attention to `--with-PACKAGE' options, where PACKAGE
130 is something like `gnu-as' or `x' (for the X Window System). The
131 `README' should mention any `--enable-' and `--with-' options that the
132 package recognizes.
133
134 For packages that use the X Window System, `configure' can usually
135 find the X include and library files automatically, but if it doesn't,
136 you can use the `configure' options `--x-includes=DIR' and
137 `--x-libraries=DIR' to specify their locations.
138
139 Specifying the System Type
140 ==========================
141
142 There may be some features `configure' cannot figure out
143 automatically, but needs to determine by the type of machine the package
144 will run on. Usually, assuming the package is built to be run on the
145 _same_ architectures, `configure' can figure that out, but if it prints
146 a message saying it cannot guess the machine type, give it the
147 `--build=TYPE' option. TYPE can either be a short name for the system
148 type, such as `sun4', or a canonical name which has the form:
149
150 CPU-COMPANY-SYSTEM
151
152 where SYSTEM can have one of these forms:
153
154 OS KERNEL-OS
155
156 See the file `config.sub' for the possible values of each field. If
157 `config.sub' isn't included in this package, then this package doesn't
158 need to know the machine type.
159
160 If you are _building_ compiler tools for cross-compiling, you should
161 use the `--target=TYPE' option to select the type of system they will
162 produce code for.
163
164 If you want to _use_ a cross compiler, that generates code for a
165 platform different from the build platform, you should specify the
166 "host" platform (i.e., that on which the generated programs will
167 eventually be run) with `--host=TYPE'.
168
169 Sharing Defaults
170 ================
171
172 If you want to set default values for `configure' scripts to share,
173 you can create a site shell script called `config.site' that gives
174 default values for variables like `CC', `cache_file', and `prefix'.
175 `configure' looks for `PREFIX/share/config.site' if it exists, then
176 `PREFIX/etc/config.site' if it exists. Or, you can set the
177 `CONFIG_SITE' environment variable to the location of the site script.
178 A warning: not all `configure' scripts look for a site script.
179
180 Defining Variables
181 ==================
182
183 Variables not defined in a site shell script can be set in the
184 environment passed to `configure'. However, some packages may run
185 configure again during the build, and the customized values of these
186 variables may be lost. In order to avoid this problem, you should set
187 them in the `configure' command line, using `VAR=value'. For example:
188
189 ./configure CC=/usr/local2/bin/gcc
190
191 will cause the specified gcc to be used as the C compiler (unless it is
192 overridden in the site shell script).
193
194 `configure' Invocation
195 ======================
196
197 `configure' recognizes the following options to control how it
198 operates.
199
200 `--help'
201 `-h'
202 Print a summary of the options to `configure', and exit.
203
204 `--version'
205 `-V'
206 Print the version of Autoconf used to generate the `configure'
207 script, and exit.
208
209 `--cache-file=FILE'
210 Enable the cache: use and save the results of the tests in FILE,
211 traditionally `config.cache'. FILE defaults to `/dev/null' to
212 disable caching.
213
214 `--config-cache'
215 `-C'
216 Alias for `--cache-file=config.cache'.
217
218 `--quiet'
219 `--silent'
220 `-q'
221 Do not print messages saying which checks are being made. To
222 suppress all normal output, redirect it to `/dev/null' (any error
223 messages will still be shown).
224
225 `--srcdir=DIR'
226 Look for the package's source code in directory DIR. Usually
227 `configure' can determine that directory automatically.
228
229 `configure' also accepts some other, not widely useful, options. Run
230 `configure --help' for more details.
231
File Makefile added (mode: 100644) (index 0000000..3bdeeba)
1 CC=C:\MinGW\bin\gcc.exe
2 RESHCK=D:\ResHacker\ResHacker.exe
3
4 all: pjass
5
6 pjass: lex.yy.c grammar.tab.c grammar.tab.h misc.o
7 $(CC) lex.yy.c grammar.tab.c misc.c -o $@ -O2 -mno-cygwin
8 $(RESHCK) -addskip $@.exe, $@.exe, pjass.res ,,,
9
10 lex.yy.c: token.l
11 flex $<
12
13 grammar.tab.c: grammar.y
14 bison $<
15
16 grammar.tab.h: grammar.y
17 bison -d $<
18
19 %.o: %.c
20 $(CC) $< -c
21
22 clean:
23 del grammar.tab.h
24 del grammar.tab.c
25 del lex.yy.c
26 del pjass.exe
27
28 t:
29 ./pjass <t.txt
30
31 package:
32 tar Ccvfz ../ jass2.tar.gz jass2/Makefile jass2/grammar.y jass2/token.l jass2/misc.c jass2/misc.h jass2/readme.txt
33
34 binpackage:
35 rm -f PJASS.zip ; pkzip -a pjass.zip ../doc/readme.txt ./pjass.exe ; mv -f PJASS.zip pjass-bin-091-win32.zip
36
File Makefile.Whatever added (mode: 100644) (index 0000000..04f5f4c)
1 all: pjass
2
3 pjass: lex.yy.c grammar.tab.c grammar.tab.h misc.o
4 gcc -O2 lex.yy.c grammar.tab.c misc.c -lfl -o $@
5
6 lex.yy.c: token.l
7 flex $<
8
9 grammar.tab.c: grammar.y
10 bison $<
11
12 grammar.tab.h: grammar.y
13 bison -d $<
14
15 clean:
16 del grammar.tab.h
17 del grammar.tab.c
18 del lex.yy.c
19 del pjass.exe
20
21 t:
22 ./pjass <t.txt
23
24 package:
25 tar Ccvfz ../ jass2.tar.gz jass2/Makefile jass2/grammar.y jass2/token.l jass2/misc.c jass2/misc.h jass2/readme.txt
File Makefile.am deleted (index af437a6..0000000)
1 SUBDIRS = src
File Makefile.cygwin added (mode: 100644) (index 0000000..2da1e03)
1 all: pjass
2
3 pjass: lex.yy.c grammar.tab.c grammar.tab.h misc.o
4 gcc lex.yy.c grammar.tab.c misc.c -o $@ -O2 -mno-cygwin -lfl
5
6 lex.yy.c: token.l
7 flex $<
8
9 grammar.tab.c: grammar.y
10 bison $<
11
12 grammar.tab.h: grammar.y
13 bison -d $<
14
15 clean:
16 rm grammar.tab.h grammar.tab.c lex.yy.c pjass.exe pjass
17
18 t:
19 ./pjass <t.txt
20
21 package:
22 tar Ccvfz ../ jass2.tar.gz jass2/Makefile jass2/grammar.y jass2/token.l jass2/misc.c jass2/misc.h jass2/readme.txt
23
24 binpackage:
25 rm -f PJASS.zip ; pkzip -a pjass.zip ../doc/readme.txt ./pjass.exe ; mv -f PJASS.zip pjass-bin-091-win32.zip
File NEWS deleted (index 4f7e946..0000000)
1 Sun Aug 15 08:01:40 CEST 2004
2 Just converted to autoconf.
File README deleted (index fde9fe4..0000000)
1 pjass, a jass parser for command lines or scripting. See doc/readme.txt
File config.guess deleted (index d56c46d..0000000)
1 #! /bin/sh
2 # Attempt to guess a canonical system name.
3 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
4 # 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
5
6 timestamp='2003-08-18'
7
8 # This file is free software; you can redistribute it and/or modify it
9 # under the terms of the GNU General Public License as published by
10 # the Free Software Foundation; either version 2 of the License, or
11 # (at your option) any later version.
12 #
13 # This program is distributed in the hope that it will be useful, but
14 # WITHOUT ANY WARRANTY; without even the implied warranty of
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 # General Public License for more details.
17 #
18 # You should have received a copy of the GNU General Public License
19 # along with this program; if not, write to the Free Software
20 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21 #
22 # As a special exception to the GNU General Public License, if you
23 # distribute this file as part of a program that contains a
24 # configuration script generated by Autoconf, you may include it under
25 # the same distribution terms that you use for the rest of that program.
26
27 # Originally written by Per Bothner <per@bothner.com>.
28 # Please send patches to <config-patches@gnu.org>. Submit a context
29 # diff and a properly formatted ChangeLog entry.
30 #
31 # This script attempts to guess a canonical system name similar to
32 # config.sub. If it succeeds, it prints the system name on stdout, and
33 # exits with 0. Otherwise, it exits with 1.
34 #
35 # The plan is that this can be called by configure scripts if you
36 # don't specify an explicit build system type.
37
38 me=`echo "$0" | sed -e 's,.*/,,'`
39
40 usage="\
41 Usage: $0 [OPTION]
42
43 Output the configuration name of the system \`$me' is run on.
44
45 Operation modes:
46 -h, --help print this help, then exit
47 -t, --time-stamp print date of last modification, then exit
48 -v, --version print version number, then exit
49
50 Report bugs and patches to <config-patches@gnu.org>."
51
52 version="\
53 GNU config.guess ($timestamp)
54
55 Originally written by Per Bothner.
56 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
57 Free Software Foundation, Inc.
58
59 This is free software; see the source for copying conditions. There is NO
60 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
61
62 help="
63 Try \`$me --help' for more information."
64
65 # Parse command line
66 while test $# -gt 0 ; do
67 case $1 in
68 --time-stamp | --time* | -t )
69 echo "$timestamp" ; exit 0 ;;
70 --version | -v )
71 echo "$version" ; exit 0 ;;
72 --help | --h* | -h )
73 echo "$usage"; exit 0 ;;
74 -- ) # Stop option processing
75 shift; break ;;
76 - ) # Use stdin as input.
77 break ;;
78 -* )
79 echo "$me: invalid option $1$help" >&2
80 exit 1 ;;
81 * )
82 break ;;
83 esac
84 done
85
86 if test $# != 0; then
87 echo "$me: too many arguments$help" >&2
88 exit 1
89 fi
90
91 trap 'exit 1' 1 2 15
92
93 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a
94 # compiler to aid in system detection is discouraged as it requires
95 # temporary files to be created and, as you can see below, it is a
96 # headache to deal with in a portable fashion.
97
98 # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
99 # use `HOST_CC' if defined, but it is deprecated.
100
101 # Portable tmp directory creation inspired by the Autoconf team.
102
103 set_cc_for_build='
104 trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
105 trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
106 : ${TMPDIR=/tmp} ;
107 { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
108 { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
109 { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
110 { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
111 dummy=$tmp/dummy ;
112 tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
113 case $CC_FOR_BUILD,$HOST_CC,$CC in
114 ,,) echo "int x;" > $dummy.c ;
115 for c in cc gcc c89 c99 ; do
116 if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
117 CC_FOR_BUILD="$c"; break ;
118 fi ;
119 done ;
120 if test x"$CC_FOR_BUILD" = x ; then
121 CC_FOR_BUILD=no_compiler_found ;
122 fi
123 ;;
124 ,,*) CC_FOR_BUILD=$CC ;;
125 ,*,*) CC_FOR_BUILD=$HOST_CC ;;
126 esac ;'
127
128 # This is needed to find uname on a Pyramid OSx when run in the BSD universe.
129 # (ghazi@noc.rutgers.edu 1994-08-24)
130 if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
131 PATH=$PATH:/.attbin ; export PATH
132 fi
133
134 UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
135 UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
136 UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
137 UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
138
139 # Note: order is significant - the case branches are not exclusive.
140
141 case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
142 *:NetBSD:*:*)
143 # NetBSD (nbsd) targets should (where applicable) match one or
144 # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
145 # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
146 # switched to ELF, *-*-netbsd* would select the old
147 # object file format. This provides both forward
148 # compatibility and a consistent mechanism for selecting the
149 # object file format.
150 #
151 # Note: NetBSD doesn't particularly care about the vendor
152 # portion of the name. We always set it to "unknown".
153 sysctl="sysctl -n hw.machine_arch"
154 UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
155 /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
156 case "${UNAME_MACHINE_ARCH}" in
157 armeb) machine=armeb-unknown ;;
158 arm*) machine=arm-unknown ;;
159 sh3el) machine=shl-unknown ;;
160 sh3eb) machine=sh-unknown ;;
161 *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
162 esac
163 # The Operating System including object format, if it has switched
164 # to ELF recently, or will in the future.
165 case "${UNAME_MACHINE_ARCH}" in
166 arm*|i386|m68k|ns32k|sh3*|sparc|vax)
167 eval $set_cc_for_build
168 if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
169 | grep __ELF__ >/dev/null
170 then
171 # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
172 # Return netbsd for either. FIX?
173 os=netbsd
174 else
175 os=netbsdelf
176 fi
177 ;;
178 *)
179 os=netbsd
180 ;;
181 esac
182 # The OS release
183 # Debian GNU/NetBSD machines have a different userland, and
184 # thus, need a distinct triplet. However, they do not need
185 # kernel version information, so it can be replaced with a
186 # suitable tag, in the style of linux-gnu.
187 case "${UNAME_VERSION}" in
188 Debian*)
189 release='-gnu'
190 ;;
191 *)
192 release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
193 ;;
194 esac
195 # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
196 # contains redundant information, the shorter form:
197 # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
198 echo "${machine}-${os}${release}"
199 exit 0 ;;
200 amiga:OpenBSD:*:*)
201 echo m68k-unknown-openbsd${UNAME_RELEASE}
202 exit 0 ;;
203 arc:OpenBSD:*:*)
204 echo mipsel-unknown-openbsd${UNAME_RELEASE}
205 exit 0 ;;
206 hp300:OpenBSD:*:*)
207 echo m68k-unknown-openbsd${UNAME_RELEASE}
208 exit 0 ;;
209 mac68k:OpenBSD:*:*)
210 echo m68k-unknown-openbsd${UNAME_RELEASE}
211 exit 0 ;;
212 macppc:OpenBSD:*:*)
213 echo powerpc-unknown-openbsd${UNAME_RELEASE}
214 exit 0 ;;
215 mvme68k:OpenBSD:*:*)
216 echo m68k-unknown-openbsd${UNAME_RELEASE}
217 exit 0 ;;
218 mvme88k:OpenBSD:*:*)
219 echo m88k-unknown-openbsd${UNAME_RELEASE}
220 exit 0 ;;
221 mvmeppc:OpenBSD:*:*)
222 echo powerpc-unknown-openbsd${UNAME_RELEASE}
223 exit 0 ;;
224 pmax:OpenBSD:*:*)
225 echo mipsel-unknown-openbsd${UNAME_RELEASE}
226 exit 0 ;;
227 sgi:OpenBSD:*:*)
228 echo mipseb-unknown-openbsd${UNAME_RELEASE}
229 exit 0 ;;
230 sun3:OpenBSD:*:*)
231 echo m68k-unknown-openbsd${UNAME_RELEASE}
232 exit 0 ;;
233 wgrisc:OpenBSD:*:*)
234 echo mipsel-unknown-openbsd${UNAME_RELEASE}
235 exit 0 ;;
236 *:OpenBSD:*:*)
237 echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
238 exit 0 ;;
239 alpha:OSF1:*:*)
240 if test $UNAME_RELEASE = "V4.0"; then
241 UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
242 fi
243 # According to Compaq, /usr/sbin/psrinfo has been available on
244 # OSF/1 and Tru64 systems produced since 1995. I hope that
245 # covers most systems running today. This code pipes the CPU
246 # types through head -n 1, so we only detect the type of CPU 0.
247 ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
248 case "$ALPHA_CPU_TYPE" in
249 "EV4 (21064)")
250 UNAME_MACHINE="alpha" ;;
251 "EV4.5 (21064)")
252 UNAME_MACHINE="alpha" ;;
253 "LCA4 (21066/21068)")
254 UNAME_MACHINE="alpha" ;;
255 "EV5 (21164)")
256 UNAME_MACHINE="alphaev5" ;;
257 "EV5.6 (21164A)")
258 UNAME_MACHINE="alphaev56" ;;
259 "EV5.6 (21164PC)")
260 UNAME_MACHINE="alphapca56" ;;
261 "EV5.7 (21164PC)")
262 UNAME_MACHINE="alphapca57" ;;
263 "EV6 (21264)")
264 UNAME_MACHINE="alphaev6" ;;
265 "EV6.7 (21264A)")
266 UNAME_MACHINE="alphaev67" ;;
267 "EV6.8CB (21264C)")
268 UNAME_MACHINE="alphaev68" ;;
269 "EV6.8AL (21264B)")
270 UNAME_MACHINE="alphaev68" ;;
271 "EV6.8CX (21264D)")
272 UNAME_MACHINE="alphaev68" ;;
273 "EV6.9A (21264/EV69A)")
274 UNAME_MACHINE="alphaev69" ;;
275 "EV7 (21364)")
276 UNAME_MACHINE="alphaev7" ;;
277 "EV7.9 (21364A)")
278 UNAME_MACHINE="alphaev79" ;;
279 esac
280 # A Vn.n version is a released version.
281 # A Tn.n version is a released field test version.
282 # A Xn.n version is an unreleased experimental baselevel.
283 # 1.2 uses "1.2" for uname -r.
284 echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
285 exit 0 ;;
286 Alpha*:OpenVMS:*:*)
287 echo alpha-hp-vms
288 exit 0 ;;
289 Alpha\ *:Windows_NT*:*)
290 # How do we know it's Interix rather than the generic POSIX subsystem?
291 # Should we change UNAME_MACHINE based on the output of uname instead
292 # of the specific Alpha model?
293 echo alpha-pc-interix
294 exit 0 ;;
295 21064:Windows_NT:50:3)
296 echo alpha-dec-winnt3.5
297 exit 0 ;;
298 Amiga*:UNIX_System_V:4.0:*)
299 echo m68k-unknown-sysv4
300 exit 0;;
301 *:[Aa]miga[Oo][Ss]:*:*)
302 echo ${UNAME_MACHINE}-unknown-amigaos
303 exit 0 ;;
304 *:[Mm]orph[Oo][Ss]:*:*)
305 echo ${UNAME_MACHINE}-unknown-morphos
306 exit 0 ;;
307 *:OS/390:*:*)
308 echo i370-ibm-openedition
309 exit 0 ;;
310 arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
311 echo arm-acorn-riscix${UNAME_RELEASE}
312 exit 0;;
313 SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
314 echo hppa1.1-hitachi-hiuxmpp
315 exit 0;;
316 Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
317 # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
318 if test "`(/bin/universe) 2>/dev/null`" = att ; then
319 echo pyramid-pyramid-sysv3
320 else
321 echo pyramid-pyramid-bsd
322 fi
323 exit 0 ;;
324 NILE*:*:*:dcosx)
325 echo pyramid-pyramid-svr4
326 exit 0 ;;
327 DRS?6000:unix:4.0:6*)
328 echo sparc-icl-nx6
329 exit 0 ;;
330 DRS?6000:UNIX_SV:4.2*:7*)
331 case `/usr/bin/uname -p` in
332 sparc) echo sparc-icl-nx7 && exit 0 ;;
333 esac ;;
334 sun4H:SunOS:5.*:*)
335 echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
336 exit 0 ;;
337 sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
338 echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
339 exit 0 ;;
340 i86pc:SunOS:5.*:*)
341 echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
342 exit 0 ;;
343 sun4*:SunOS:6*:*)
344 # According to config.sub, this is the proper way to canonicalize
345 # SunOS6. Hard to guess exactly what SunOS6 will be like, but
346 # it's likely to be more like Solaris than SunOS4.
347 echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
348 exit 0 ;;
349 sun4*:SunOS:*:*)
350 case "`/usr/bin/arch -k`" in
351 Series*|S4*)
352 UNAME_RELEASE=`uname -v`
353 ;;
354 esac
355 # Japanese Language versions have a version number like `4.1.3-JL'.
356 echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
357 exit 0 ;;
358 sun3*:SunOS:*:*)
359 echo m68k-sun-sunos${UNAME_RELEASE}
360 exit 0 ;;
361 sun*:*:4.2BSD:*)
362 UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
363 test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
364 case "`/bin/arch`" in
365 sun3)
366 echo m68k-sun-sunos${UNAME_RELEASE}
367 ;;
368 sun4)
369 echo sparc-sun-sunos${UNAME_RELEASE}
370 ;;
371 esac
372 exit 0 ;;
373 aushp:SunOS:*:*)
374 echo sparc-auspex-sunos${UNAME_RELEASE}
375 exit 0 ;;
376 # The situation for MiNT is a little confusing. The machine name
377 # can be virtually everything (everything which is not
378 # "atarist" or "atariste" at least should have a processor
379 # > m68000). The system name ranges from "MiNT" over "FreeMiNT"
380 # to the lowercase version "mint" (or "freemint"). Finally
381 # the system name "TOS" denotes a system which is actually not
382 # MiNT. But MiNT is downward compatible to TOS, so this should
383 # be no problem.
384 atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
385 echo m68k-atari-mint${UNAME_RELEASE}
386 exit 0 ;;
387 atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
388 echo m68k-atari-mint${UNAME_RELEASE}
389 exit 0 ;;
390 *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
391 echo m68k-atari-mint${UNAME_RELEASE}
392 exit 0 ;;
393 milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
394 echo m68k-milan-mint${UNAME_RELEASE}
395 exit 0 ;;
396 hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
397 echo m68k-hades-mint${UNAME_RELEASE}
398 exit 0 ;;
399 *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
400 echo m68k-unknown-mint${UNAME_RELEASE}
401 exit 0 ;;
402 powerpc:machten:*:*)
403 echo powerpc-apple-machten${UNAME_RELEASE}
404 exit 0 ;;
405 RISC*:Mach:*:*)
406 echo mips-dec-mach_bsd4.3
407 exit 0 ;;
408 RISC*:ULTRIX:*:*)
409 echo mips-dec-ultrix${UNAME_RELEASE}
410 exit 0 ;;
411 VAX*:ULTRIX*:*:*)
412 echo vax-dec-ultrix${UNAME_RELEASE}
413 exit 0 ;;
414 2020:CLIX:*:* | 2430:CLIX:*:*)
415 echo clipper-intergraph-clix${UNAME_RELEASE}
416 exit 0 ;;
417 mips:*:*:UMIPS | mips:*:*:RISCos)
418 eval $set_cc_for_build
419 sed 's/^ //' << EOF >$dummy.c
420 #ifdef __cplusplus
421 #include <stdio.h> /* for printf() prototype */
422 int main (int argc, char *argv[]) {
423 #else
424 int main (argc, argv) int argc; char *argv[]; {
425 #endif
426 #if defined (host_mips) && defined (MIPSEB)
427 #if defined (SYSTYPE_SYSV)
428 printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
429 #endif
430 #if defined (SYSTYPE_SVR4)
431 printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
432 #endif
433 #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
434 printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
435 #endif
436 #endif
437 exit (-1);
438 }
439 EOF
440 $CC_FOR_BUILD -o $dummy $dummy.c \
441 && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
442 && exit 0
443 echo mips-mips-riscos${UNAME_RELEASE}
444 exit 0 ;;
445 Motorola:PowerMAX_OS:*:*)
446 echo powerpc-motorola-powermax
447 exit 0 ;;
448 Motorola:*:4.3:PL8-*)
449 echo powerpc-harris-powermax
450 exit 0 ;;
451 Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
452 echo powerpc-harris-powermax
453 exit 0 ;;
454 Night_Hawk:Power_UNIX:*:*)
455 echo powerpc-harris-powerunix
456 exit 0 ;;
457 m88k:CX/UX:7*:*)
458 echo m88k-harris-cxux7
459 exit 0 ;;
460 m88k:*:4*:R4*)
461 echo m88k-motorola-sysv4
462 exit 0 ;;
463 m88k:*:3*:R3*)
464 echo m88k-motorola-sysv3
465 exit 0 ;;
466 AViiON:dgux:*:*)
467 # DG/UX returns AViiON for all architectures
468 UNAME_PROCESSOR=`/usr/bin/uname -p`
469 if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
470 then
471 if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
472 [ ${TARGET_BINARY_INTERFACE}x = x ]
473 then
474 echo m88k-dg-dgux${UNAME_RELEASE}
475 else
476 echo m88k-dg-dguxbcs${UNAME_RELEASE}
477 fi
478 else
479 echo i586-dg-dgux${UNAME_RELEASE}
480 fi
481 exit 0 ;;
482 M88*:DolphinOS:*:*) # DolphinOS (SVR3)
483 echo m88k-dolphin-sysv3
484 exit 0 ;;
485 M88*:*:R3*:*)
486 # Delta 88k system running SVR3
487 echo m88k-motorola-sysv3
488 exit 0 ;;
489 XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
490 echo m88k-tektronix-sysv3
491 exit 0 ;;
492 Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
493 echo m68k-tektronix-bsd
494 exit 0 ;;
495 *:IRIX*:*:*)
496 echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
497 exit 0 ;;
498 ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
499 echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
500 exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX '
501 i*86:AIX:*:*)
502 echo i386-ibm-aix
503 exit 0 ;;
504 ia64:AIX:*:*)
505 if [ -x /usr/bin/oslevel ] ; then
506 IBM_REV=`/usr/bin/oslevel`
507 else
508 IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
509 fi
510 echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
511 exit 0 ;;
512 *:AIX:2:3)
513 if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
514 eval $set_cc_for_build
515 sed 's/^ //' << EOF >$dummy.c
516 #include <sys/systemcfg.h>
517
518 main()
519 {
520 if (!__power_pc())
521 exit(1);
522 puts("powerpc-ibm-aix3.2.5");
523 exit(0);
524 }
525 EOF
526 $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
527 echo rs6000-ibm-aix3.2.5
528 elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
529 echo rs6000-ibm-aix3.2.4
530 else
531 echo rs6000-ibm-aix3.2
532 fi
533 exit 0 ;;
534 *:AIX:*:[45])
535 IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
536 if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
537 IBM_ARCH=rs6000
538 else
539 IBM_ARCH=powerpc
540 fi
541 if [ -x /usr/bin/oslevel ] ; then
542 IBM_REV=`/usr/bin/oslevel`
543 else
544 IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
545 fi
546 echo ${IBM_ARCH}-ibm-aix${IBM_REV}
547 exit 0 ;;
548 *:AIX:*:*)
549 echo rs6000-ibm-aix
550 exit 0 ;;
551 ibmrt:4.4BSD:*|romp-ibm:BSD:*)
552 echo romp-ibm-bsd4.4
553 exit 0 ;;
554 ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
555 echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
556 exit 0 ;; # report: romp-ibm BSD 4.3
557 *:BOSX:*:*)
558 echo rs6000-bull-bosx
559 exit 0 ;;
560 DPX/2?00:B.O.S.:*:*)
561 echo m68k-bull-sysv3
562 exit 0 ;;
563 9000/[34]??:4.3bsd:1.*:*)
564 echo m68k-hp-bsd
565 exit 0 ;;
566 hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
567 echo m68k-hp-bsd4.4
568 exit 0 ;;
569 9000/[34678]??:HP-UX:*:*)
570 HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
571 case "${UNAME_MACHINE}" in
572 9000/31? ) HP_ARCH=m68000 ;;
573 9000/[34]?? ) HP_ARCH=m68k ;;
574 9000/[678][0-9][0-9])
575 if [ -x /usr/bin/getconf ]; then
576 sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
577 sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
578 case "${sc_cpu_version}" in
579 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
580 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
581 532) # CPU_PA_RISC2_0
582 case "${sc_kernel_bits}" in
583 32) HP_ARCH="hppa2.0n" ;;
584 64) HP_ARCH="hppa2.0w" ;;
585 '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
586 esac ;;
587 esac
588 fi
589 if [ "${HP_ARCH}" = "" ]; then
590 eval $set_cc_for_build
591 sed 's/^ //' << EOF >$dummy.c
592
593 #define _HPUX_SOURCE
594 #include <stdlib.h>
595 #include <unistd.h>
596
597 int main ()
598 {
599 #if defined(_SC_KERNEL_BITS)
600 long bits = sysconf(_SC_KERNEL_BITS);
601 #endif
602 long cpu = sysconf (_SC_CPU_VERSION);
603
604 switch (cpu)
605 {
606 case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
607 case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
608 case CPU_PA_RISC2_0:
609 #if defined(_SC_KERNEL_BITS)
610 switch (bits)
611 {
612 case 64: puts ("hppa2.0w"); break;
613 case 32: puts ("hppa2.0n"); break;
614 default: puts ("hppa2.0"); break;
615 } break;
616 #else /* !defined(_SC_KERNEL_BITS) */
617 puts ("hppa2.0"); break;
618 #endif
619 default: puts ("hppa1.0"); break;
620 }
621 exit (0);
622 }
623 EOF
624 (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
625 test -z "$HP_ARCH" && HP_ARCH=hppa
626 fi ;;
627 esac
628 if [ ${HP_ARCH} = "hppa2.0w" ]
629 then
630 # avoid double evaluation of $set_cc_for_build
631 test -n "$CC_FOR_BUILD" || eval $set_cc_for_build
632 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null
633 then
634 HP_ARCH="hppa2.0w"
635 else
636 HP_ARCH="hppa64"
637 fi
638 fi
639 echo ${HP_ARCH}-hp-hpux${HPUX_REV}
640 exit 0 ;;
641 ia64:HP-UX:*:*)
642 HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
643 echo ia64-hp-hpux${HPUX_REV}
644 exit 0 ;;
645 3050*:HI-UX:*:*)
646 eval $set_cc_for_build
647 sed 's/^ //' << EOF >$dummy.c
648 #include <unistd.h>
649 int
650 main ()
651 {
652 long cpu = sysconf (_SC_CPU_VERSION);
653 /* The order matters, because CPU_IS_HP_MC68K erroneously returns
654 true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
655 results, however. */
656 if (CPU_IS_PA_RISC (cpu))
657 {
658 switch (cpu)
659 {
660 case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
661 case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
662 case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
663 default: puts ("hppa-hitachi-hiuxwe2"); break;
664 }
665 }
666 else if (CPU_IS_HP_MC68K (cpu))
667 puts ("m68k-hitachi-hiuxwe2");
668 else puts ("unknown-hitachi-hiuxwe2");
669 exit (0);
670 }
671 EOF
672 $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
673 echo unknown-hitachi-hiuxwe2
674 exit 0 ;;
675 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
676 echo hppa1.1-hp-bsd
677 exit 0 ;;
678 9000/8??:4.3bsd:*:*)
679 echo hppa1.0-hp-bsd
680 exit 0 ;;
681 *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
682 echo hppa1.0-hp-mpeix
683 exit 0 ;;
684 hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
685 echo hppa1.1-hp-osf
686 exit 0 ;;
687 hp8??:OSF1:*:*)
688 echo hppa1.0-hp-osf
689 exit 0 ;;
690 i*86:OSF1:*:*)
691 if [ -x /usr/sbin/sysversion ] ; then
692 echo ${UNAME_MACHINE}-unknown-osf1mk
693 else
694 echo ${UNAME_MACHINE}-unknown-osf1
695 fi
696 exit 0 ;;
697 parisc*:Lites*:*:*)
698 echo hppa1.1-hp-lites
699 exit 0 ;;
700 C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
701 echo c1-convex-bsd
702 exit 0 ;;
703 C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
704 if getsysinfo -f scalar_acc
705 then echo c32-convex-bsd
706 else echo c2-convex-bsd
707 fi
708 exit 0 ;;
709 C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
710 echo c34-convex-bsd
711 exit 0 ;;
712 C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
713 echo c38-convex-bsd
714 exit 0 ;;
715 C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
716 echo c4-convex-bsd
717 exit 0 ;;
718 CRAY*Y-MP:*:*:*)
719 echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
720 exit 0 ;;
721 CRAY*[A-Z]90:*:*:*)
722 echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
723 | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
724 -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
725 -e 's/\.[^.]*$/.X/'
726 exit 0 ;;
727 CRAY*TS:*:*:*)
728 echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
729 exit 0 ;;
730 CRAY*T3E:*:*:*)
731 echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
732 exit 0 ;;
733 CRAY*SV1:*:*:*)
734 echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
735 exit 0 ;;
736 *:UNICOS/mp:*:*)
737 echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
738 exit 0 ;;
739 F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
740 FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
741 FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
742 FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
743 echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
744 exit 0 ;;
745 i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
746 echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
747 exit 0 ;;
748 sparc*:BSD/OS:*:*)
749 echo sparc-unknown-bsdi${UNAME_RELEASE}
750 exit 0 ;;
751 *:BSD/OS:*:*)
752 echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
753 exit 0 ;;
754 *:FreeBSD:*:*|*:GNU/FreeBSD:*:*)
755 # Determine whether the default compiler uses glibc.
756 eval $set_cc_for_build
757 sed 's/^ //' << EOF >$dummy.c
758 #include <features.h>
759 #if __GLIBC__ >= 2
760 LIBC=gnu
761 #else
762 LIBC=
763 #endif
764 EOF
765 eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
766 # GNU/FreeBSD systems have a "k" prefix to indicate we are using
767 # FreeBSD's kernel, but not the complete OS.
768 case ${LIBC} in gnu) kernel_only='k' ;; esac
769 echo ${UNAME_MACHINE}-unknown-${kernel_only}freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC}
770 exit 0 ;;
771 i*:CYGWIN*:*)
772 echo ${UNAME_MACHINE}-pc-cygwin
773 exit 0 ;;
774 i*:MINGW*:*)
775 echo ${UNAME_MACHINE}-pc-mingw32
776 exit 0 ;;
777 i*:PW*:*)
778 echo ${UNAME_MACHINE}-pc-pw32
779 exit 0 ;;
780 x86:Interix*:[34]*)
781 echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//'
782 exit 0 ;;
783 [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
784 echo i${UNAME_MACHINE}-pc-mks
785 exit 0 ;;
786 i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
787 # How do we know it's Interix rather than the generic POSIX subsystem?
788 # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
789 # UNAME_MACHINE based on the output of uname instead of i386?
790 echo i586-pc-interix
791 exit 0 ;;
792 i*:UWIN*:*)
793 echo ${UNAME_MACHINE}-pc-uwin
794 exit 0 ;;
795 p*:CYGWIN*:*)
796 echo powerpcle-unknown-cygwin
797 exit 0 ;;
798 prep*:SunOS:5.*:*)
799 echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
800 exit 0 ;;
801 *:GNU:*:*)
802 echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
803 exit 0 ;;
804 i*86:Minix:*:*)
805 echo ${UNAME_MACHINE}-pc-minix
806 exit 0 ;;
807 arm*:Linux:*:*)
808 echo ${UNAME_MACHINE}-unknown-linux-gnu
809 exit 0 ;;
810 cris:Linux:*:*)
811 echo cris-axis-linux-gnu
812 exit 0 ;;
813 ia64:Linux:*:*)
814 echo ${UNAME_MACHINE}-unknown-linux-gnu
815 exit 0 ;;
816 m68*:Linux:*:*)
817 echo ${UNAME_MACHINE}-unknown-linux-gnu
818 exit 0 ;;
819 mips:Linux:*:*)
820 eval $set_cc_for_build
821 sed 's/^ //' << EOF >$dummy.c
822 #undef CPU
823 #undef mips
824 #undef mipsel
825 #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
826 CPU=mipsel
827 #else
828 #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
829 CPU=mips
830 #else
831 CPU=
832 #endif
833 #endif
834 EOF
835 eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
836 test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
837 ;;
838 mips64:Linux:*:*)
839 eval $set_cc_for_build
840 sed 's/^ //' << EOF >$dummy.c
841 #undef CPU
842 #undef mips64
843 #undef mips64el
844 #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
845 CPU=mips64el
846 #else
847 #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
848 CPU=mips64
849 #else
850 CPU=
851 #endif
852 #endif
853 EOF
854 eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
855 test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
856 ;;
857 ppc:Linux:*:*)
858 echo powerpc-unknown-linux-gnu
859 exit 0 ;;
860 ppc64:Linux:*:*)
861 echo powerpc64-unknown-linux-gnu
862 exit 0 ;;
863 alpha:Linux:*:*)
864 case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
865 EV5) UNAME_MACHINE=alphaev5 ;;
866 EV56) UNAME_MACHINE=alphaev56 ;;
867 PCA56) UNAME_MACHINE=alphapca56 ;;
868 PCA57) UNAME_MACHINE=alphapca56 ;;
869 EV6) UNAME_MACHINE=alphaev6 ;;
870 EV67) UNAME_MACHINE=alphaev67 ;;
871 EV68*) UNAME_MACHINE=alphaev68 ;;
872 esac
873 objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
874 if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
875 echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
876 exit 0 ;;
877 parisc:Linux:*:* | hppa:Linux:*:*)
878 # Look for CPU level
879 case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
880 PA7*) echo hppa1.1-unknown-linux-gnu ;;
881 PA8*) echo hppa2.0-unknown-linux-gnu ;;
882 *) echo hppa-unknown-linux-gnu ;;
883 esac
884 exit 0 ;;
885 parisc64:Linux:*:* | hppa64:Linux:*:*)
886 echo hppa64-unknown-linux-gnu
887 exit 0 ;;
888 s390:Linux:*:* | s390x:Linux:*:*)
889 echo ${UNAME_MACHINE}-ibm-linux
890 exit 0 ;;
891 sh64*:Linux:*:*)
892 echo ${UNAME_MACHINE}-unknown-linux-gnu
893 exit 0 ;;
894 sh*:Linux:*:*)
895 echo ${UNAME_MACHINE}-unknown-linux-gnu
896 exit 0 ;;
897 sparc:Linux:*:* | sparc64:Linux:*:*)
898 echo ${UNAME_MACHINE}-unknown-linux-gnu
899 exit 0 ;;
900 x86_64:Linux:*:*)
901 echo x86_64-unknown-linux-gnu
902 exit 0 ;;
903 i*86:Linux:*:*)
904 # The BFD linker knows what the default object file format is, so
905 # first see if it will tell us. cd to the root directory to prevent
906 # problems with other programs or directories called `ld' in the path.
907 # Set LC_ALL=C to ensure ld outputs messages in English.
908 ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
909 | sed -ne '/supported targets:/!d
910 s/[ ][ ]*/ /g
911 s/.*supported targets: *//
912 s/ .*//
913 p'`
914 case "$ld_supported_targets" in
915 elf32-i386)
916 TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
917 ;;
918 a.out-i386-linux)
919 echo "${UNAME_MACHINE}-pc-linux-gnuaout"
920 exit 0 ;;
921 coff-i386)
922 echo "${UNAME_MACHINE}-pc-linux-gnucoff"
923 exit 0 ;;
924 "")
925 # Either a pre-BFD a.out linker (linux-gnuoldld) or
926 # one that does not give us useful --help.
927 echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
928 exit 0 ;;
929 esac
930 # Determine whether the default compiler is a.out or elf
931 eval $set_cc_for_build
932 sed 's/^ //' << EOF >$dummy.c
933 #include <features.h>
934 #ifdef __ELF__
935 # ifdef __GLIBC__
936 # if __GLIBC__ >= 2
937 LIBC=gnu
938 # else
939 LIBC=gnulibc1
940 # endif
941 # else
942 LIBC=gnulibc1
943 # endif
944 #else
945 #ifdef __INTEL_COMPILER
946 LIBC=gnu
947 #else
948 LIBC=gnuaout
949 #endif
950 #endif
951 #ifdef __dietlibc__
952 LIBC=dietlibc
953 #endif
954 EOF
955 eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
956 test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
957 test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
958 ;;
959 i*86:DYNIX/ptx:4*:*)
960 # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
961 # earlier versions are messed up and put the nodename in both
962 # sysname and nodename.
963 echo i386-sequent-sysv4
964 exit 0 ;;
965 i*86:UNIX_SV:4.2MP:2.*)
966 # Unixware is an offshoot of SVR4, but it has its own version
967 # number series starting with 2...
968 # I am not positive that other SVR4 systems won't match this,
969 # I just have to hope. -- rms.
970 # Use sysv4.2uw... so that sysv4* matches it.
971 echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
972 exit 0 ;;
973 i*86:OS/2:*:*)
974 # If we were able to find `uname', then EMX Unix compatibility
975 # is probably installed.
976 echo ${UNAME_MACHINE}-pc-os2-emx
977 exit 0 ;;
978 i*86:XTS-300:*:STOP)
979 echo ${UNAME_MACHINE}-unknown-stop
980 exit 0 ;;
981 i*86:atheos:*:*)
982 echo ${UNAME_MACHINE}-unknown-atheos
983 exit 0 ;;
984 i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
985 echo i386-unknown-lynxos${UNAME_RELEASE}
986 exit 0 ;;
987 i*86:*DOS:*:*)
988 echo ${UNAME_MACHINE}-pc-msdosdjgpp
989 exit 0 ;;
990 i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
991 UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
992 if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
993 echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
994 else
995 echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
996 fi
997 exit 0 ;;
998 i*86:*:5:[78]*)
999 case `/bin/uname -X | grep "^Machine"` in
1000 *486*) UNAME_MACHINE=i486 ;;
1001 *Pentium) UNAME_MACHINE=i586 ;;
1002 *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
1003 esac
1004 echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
1005 exit 0 ;;
1006 i*86:*:3.2:*)
1007 if test -f /usr/options/cb.name; then
1008 UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
1009 echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
1010 elif /bin/uname -X 2>/dev/null >/dev/null ; then
1011 UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
1012 (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
1013 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
1014 && UNAME_MACHINE=i586
1015 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
1016 && UNAME_MACHINE=i686
1017 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
1018 && UNAME_MACHINE=i686
1019 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
1020 else
1021 echo ${UNAME_MACHINE}-pc-sysv32
1022 fi
1023 exit 0 ;;
1024 pc:*:*:*)
1025 # Left here for compatibility:
1026 # uname -m prints for DJGPP always 'pc', but it prints nothing about
1027 # the processor, so we play safe by assuming i386.
1028 echo i386-pc-msdosdjgpp
1029 exit 0 ;;
1030 Intel:Mach:3*:*)
1031 echo i386-pc-mach3
1032 exit 0 ;;
1033 paragon:*:*:*)
1034 echo i860-intel-osf1
1035 exit 0 ;;
1036 i860:*:4.*:*) # i860-SVR4
1037 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
1038 echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
1039 else # Add other i860-SVR4 vendors below as they are discovered.
1040 echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
1041 fi
1042 exit 0 ;;
1043 mini*:CTIX:SYS*5:*)
1044 # "miniframe"
1045 echo m68010-convergent-sysv
1046 exit 0 ;;
1047 mc68k:UNIX:SYSTEM5:3.51m)
1048 echo m68k-convergent-sysv
1049 exit 0 ;;
1050 M680?0:D-NIX:5.3:*)
1051 echo m68k-diab-dnix
1052 exit 0 ;;
1053 M68*:*:R3V[567]*:*)
1054 test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
1055 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0)
1056 OS_REL=''
1057 test -r /etc/.relid \
1058 && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
1059 /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
1060 && echo i486-ncr-sysv4.3${OS_REL} && exit 0
1061 /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
1062 && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;;
1063 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
1064 /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
1065 && echo i486-ncr-sysv4 && exit 0 ;;
1066 m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
1067 echo m68k-unknown-lynxos${UNAME_RELEASE}
1068 exit 0 ;;
1069 mc68030:UNIX_System_V:4.*:*)
1070 echo m68k-atari-sysv4
1071 exit 0 ;;
1072 TSUNAMI:LynxOS:2.*:*)
1073 echo sparc-unknown-lynxos${UNAME_RELEASE}
1074 exit 0 ;;
1075 rs6000:LynxOS:2.*:*)
1076 echo rs6000-unknown-lynxos${UNAME_RELEASE}
1077 exit 0 ;;
1078 PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
1079 echo powerpc-unknown-lynxos${UNAME_RELEASE}
1080 exit 0 ;;
1081 SM[BE]S:UNIX_SV:*:*)
1082 echo mips-dde-sysv${UNAME_RELEASE}
1083 exit 0 ;;
1084 RM*:ReliantUNIX-*:*:*)
1085 echo mips-sni-sysv4
1086 exit 0 ;;
1087 RM*:SINIX-*:*:*)
1088 echo mips-sni-sysv4
1089 exit 0 ;;
1090 *:SINIX-*:*:*)
1091 if uname -p 2>/dev/null >/dev/null ; then
1092 UNAME_MACHINE=`(uname -p) 2>/dev/null`
1093 echo ${UNAME_MACHINE}-sni-sysv4
1094 else
1095 echo ns32k-sni-sysv
1096 fi
1097 exit 0 ;;
1098 PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
1099 # says <Richard.M.Bartel@ccMail.Census.GOV>
1100 echo i586-unisys-sysv4
1101 exit 0 ;;
1102 *:UNIX_System_V:4*:FTX*)
1103 # From Gerald Hewes <hewes@openmarket.com>.
1104 # How about differentiating between stratus architectures? -djm
1105 echo hppa1.1-stratus-sysv4
1106 exit 0 ;;
1107 *:*:*:FTX*)
1108 # From seanf@swdc.stratus.com.
1109 echo i860-stratus-sysv4
1110 exit 0 ;;
1111 *:VOS:*:*)
1112 # From Paul.Green@stratus.com.
1113 echo hppa1.1-stratus-vos
1114 exit 0 ;;
1115 mc68*:A/UX:*:*)
1116 echo m68k-apple-aux${UNAME_RELEASE}
1117 exit 0 ;;
1118 news*:NEWS-OS:6*:*)
1119 echo mips-sony-newsos6
1120 exit 0 ;;
1121 R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
1122 if [ -d /usr/nec ]; then
1123 echo mips-nec-sysv${UNAME_RELEASE}
1124 else
1125 echo mips-unknown-sysv${UNAME_RELEASE}
1126 fi
1127 exit 0 ;;
1128 BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
1129 echo powerpc-be-beos
1130 exit 0 ;;
1131 BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
1132 echo powerpc-apple-beos
1133 exit 0 ;;
1134 BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
1135 echo i586-pc-beos
1136 exit 0 ;;
1137 SX-4:SUPER-UX:*:*)
1138 echo sx4-nec-superux${UNAME_RELEASE}
1139 exit 0 ;;
1140 SX-5:SUPER-UX:*:*)
1141 echo sx5-nec-superux${UNAME_RELEASE}
1142 exit 0 ;;
1143 SX-6:SUPER-UX:*:*)
1144 echo sx6-nec-superux${UNAME_RELEASE}
1145 exit 0 ;;
1146 Power*:Rhapsody:*:*)
1147 echo powerpc-apple-rhapsody${UNAME_RELEASE}
1148 exit 0 ;;
1149 *:Rhapsody:*:*)
1150 echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
1151 exit 0 ;;
1152 *:Darwin:*:*)
1153 case `uname -p` in
1154 *86) UNAME_PROCESSOR=i686 ;;
1155 powerpc) UNAME_PROCESSOR=powerpc ;;
1156 esac
1157 echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
1158 exit 0 ;;
1159 *:procnto*:*:* | *:QNX:[0123456789]*:*)
1160 UNAME_PROCESSOR=`uname -p`
1161 if test "$UNAME_PROCESSOR" = "x86"; then
1162 UNAME_PROCESSOR=i386
1163 UNAME_MACHINE=pc
1164 fi
1165 echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
1166 exit 0 ;;
1167 *:QNX:*:4*)
1168 echo i386-pc-qnx
1169 exit 0 ;;
1170 NSR-[DGKLNPTVW]:NONSTOP_KERNEL:*:*)
1171 echo nsr-tandem-nsk${UNAME_RELEASE}
1172 exit 0 ;;
1173 *:NonStop-UX:*:*)
1174 echo mips-compaq-nonstopux
1175 exit 0 ;;
1176 BS2000:POSIX*:*:*)
1177 echo bs2000-siemens-sysv
1178 exit 0 ;;
1179 DS/*:UNIX_System_V:*:*)
1180 echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
1181 exit 0 ;;
1182 *:Plan9:*:*)
1183 # "uname -m" is not consistent, so use $cputype instead. 386
1184 # is converted to i386 for consistency with other x86
1185 # operating systems.
1186 if test "$cputype" = "386"; then
1187 UNAME_MACHINE=i386
1188 else
1189 UNAME_MACHINE="$cputype"
1190 fi
1191 echo ${UNAME_MACHINE}-unknown-plan9
1192 exit 0 ;;
1193 *:TOPS-10:*:*)
1194 echo pdp10-unknown-tops10
1195 exit 0 ;;
1196 *:TENEX:*:*)
1197 echo pdp10-unknown-tenex
1198 exit 0 ;;
1199 KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
1200 echo pdp10-dec-tops20
1201 exit 0 ;;
1202 XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
1203 echo pdp10-xkl-tops20
1204 exit 0 ;;
1205 *:TOPS-20:*:*)
1206 echo pdp10-unknown-tops20
1207 exit 0 ;;
1208 *:ITS:*:*)
1209 echo pdp10-unknown-its
1210 exit 0 ;;
1211 SEI:*:*:SEIUX)
1212 echo mips-sei-seiux${UNAME_RELEASE}
1213 exit 0 ;;
1214 esac
1215
1216 #echo '(No uname command or uname output not recognized.)' 1>&2
1217 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
1218
1219 eval $set_cc_for_build
1220 cat >$dummy.c <<EOF
1221 #ifdef _SEQUENT_
1222 # include <sys/types.h>
1223 # include <sys/utsname.h>
1224 #endif
1225 main ()
1226 {
1227 #if defined (sony)
1228 #if defined (MIPSEB)
1229 /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
1230 I don't know.... */
1231 printf ("mips-sony-bsd\n"); exit (0);
1232 #else
1233 #include <sys/param.h>
1234 printf ("m68k-sony-newsos%s\n",
1235 #ifdef NEWSOS4
1236 "4"
1237 #else
1238 ""
1239 #endif
1240 ); exit (0);
1241 #endif
1242 #endif
1243
1244 #if defined (__arm) && defined (__acorn) && defined (__unix)
1245 printf ("arm-acorn-riscix"); exit (0);
1246 #endif
1247
1248 #if defined (hp300) && !defined (hpux)
1249 printf ("m68k-hp-bsd\n"); exit (0);
1250 #endif
1251
1252 #if defined (NeXT)
1253 #if !defined (__ARCHITECTURE__)
1254 #define __ARCHITECTURE__ "m68k"
1255 #endif
1256 int version;
1257 version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
1258 if (version < 4)
1259 printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
1260 else
1261 printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
1262 exit (0);
1263 #endif
1264
1265 #if defined (MULTIMAX) || defined (n16)
1266 #if defined (UMAXV)
1267 printf ("ns32k-encore-sysv\n"); exit (0);
1268 #else
1269 #if defined (CMU)
1270 printf ("ns32k-encore-mach\n"); exit (0);
1271 #else
1272 printf ("ns32k-encore-bsd\n"); exit (0);
1273 #endif
1274 #endif
1275 #endif
1276
1277 #if defined (__386BSD__)
1278 printf ("i386-pc-bsd\n"); exit (0);
1279 #endif
1280
1281 #if defined (sequent)
1282 #if defined (i386)
1283 printf ("i386-sequent-dynix\n"); exit (0);
1284 #endif
1285 #if defined (ns32000)
1286 printf ("ns32k-sequent-dynix\n"); exit (0);
1287 #endif
1288 #endif
1289
1290 #if defined (_SEQUENT_)
1291 struct utsname un;
1292
1293 uname(&un);
1294
1295 if (strncmp(un.version, "V2", 2) == 0) {
1296 printf ("i386-sequent-ptx2\n"); exit (0);
1297 }
1298 if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
1299 printf ("i386-sequent-ptx1\n"); exit (0);
1300 }
1301 printf ("i386-sequent-ptx\n"); exit (0);
1302
1303 #endif
1304
1305 #if defined (vax)
1306 # if !defined (ultrix)
1307 # include <sys/param.h>
1308 # if defined (BSD)
1309 # if BSD == 43
1310 printf ("vax-dec-bsd4.3\n"); exit (0);
1311 # else
1312 # if BSD == 199006
1313 printf ("vax-dec-bsd4.3reno\n"); exit (0);
1314 # else
1315 printf ("vax-dec-bsd\n"); exit (0);
1316 # endif
1317 # endif
1318 # else
1319 printf ("vax-dec-bsd\n"); exit (0);
1320 # endif
1321 # else
1322 printf ("vax-dec-ultrix\n"); exit (0);
1323 # endif
1324 #endif
1325
1326 #if defined (alliant) && defined (i860)
1327 printf ("i860-alliant-bsd\n"); exit (0);
1328 #endif
1329
1330 exit (1);
1331 }
1332 EOF
1333
1334 $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0
1335
1336 # Apollos put the system type in the environment.
1337
1338 test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; }
1339
1340 # Convex versions that predate uname can use getsysinfo(1)
1341
1342 if [ -x /usr/convex/getsysinfo ]
1343 then
1344 case `getsysinfo -f cpu_type` in
1345 c1*)
1346 echo c1-convex-bsd
1347 exit 0 ;;
1348 c2*)
1349 if getsysinfo -f scalar_acc
1350 then echo c32-convex-bsd
1351 else echo c2-convex-bsd
1352 fi
1353 exit 0 ;;
1354 c34*)
1355 echo c34-convex-bsd
1356 exit 0 ;;
1357 c38*)
1358 echo c38-convex-bsd
1359 exit 0 ;;
1360 c4*)
1361 echo c4-convex-bsd
1362 exit 0 ;;
1363 esac
1364 fi
1365
1366 cat >&2 <<EOF
1367 $0: unable to guess system type
1368
1369 This script, last modified $timestamp, has failed to recognize
1370 the operating system you are using. It is advised that you
1371 download the most up to date version of the config scripts from
1372
1373 ftp://ftp.gnu.org/pub/gnu/config/
1374
1375 If the version you run ($0) is already up to date, please
1376 send the following data and any information you think might be
1377 pertinent to <config-patches@gnu.org> in order to provide the needed
1378 information to handle your system.
1379
1380 config.guess timestamp = $timestamp
1381
1382 uname -m = `(uname -m) 2>/dev/null || echo unknown`
1383 uname -r = `(uname -r) 2>/dev/null || echo unknown`
1384 uname -s = `(uname -s) 2>/dev/null || echo unknown`
1385 uname -v = `(uname -v) 2>/dev/null || echo unknown`
1386
1387 /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
1388 /bin/uname -X = `(/bin/uname -X) 2>/dev/null`
1389
1390 hostinfo = `(hostinfo) 2>/dev/null`
1391 /bin/universe = `(/bin/universe) 2>/dev/null`
1392 /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null`
1393 /bin/arch = `(/bin/arch) 2>/dev/null`
1394 /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
1395 /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
1396
1397 UNAME_MACHINE = ${UNAME_MACHINE}
1398 UNAME_RELEASE = ${UNAME_RELEASE}
1399 UNAME_SYSTEM = ${UNAME_SYSTEM}
1400 UNAME_VERSION = ${UNAME_VERSION}
1401 EOF
1402
1403 exit 1
1404
1405 # Local variables:
1406 # eval: (add-hook 'write-file-hooks 'time-stamp)
1407 # time-stamp-start: "timestamp='"
1408 # time-stamp-format: "%:y-%02m-%02d"
1409 # time-stamp-end: "'"
1410 # End:
File config.sub deleted (index 6890099..0000000)
1 #! /bin/sh
2 # Configuration validation subroutine script.
3 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
4 # 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
5
6 timestamp='2003-08-18'
7
8 # This file is (in principle) common to ALL GNU software.
9 # The presence of a machine in this file suggests that SOME GNU software
10 # can handle that machine. It does not imply ALL GNU software can.
11 #
12 # This file is free software; you can redistribute it and/or modify
13 # it under the terms of the GNU General Public License as published by
14 # the Free Software Foundation; either version 2 of the License, or
15 # (at your option) any later version.
16 #
17 # This program is distributed in the hope that it will be useful,
18 # but WITHOUT ANY WARRANTY; without even the implied warranty of
19 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 # GNU General Public License for more details.
21 #
22 # You should have received a copy of the GNU General Public License
23 # along with this program; if not, write to the Free Software
24 # Foundation, Inc., 59 Temple Place - Suite 330,
25 # Boston, MA 02111-1307, USA.
26
27 # As a special exception to the GNU General Public License, if you
28 # distribute this file as part of a program that contains a
29 # configuration script generated by Autoconf, you may include it under
30 # the same distribution terms that you use for the rest of that program.
31
32 # Please send patches to <config-patches@gnu.org>. Submit a context
33 # diff and a properly formatted ChangeLog entry.
34 #
35 # Configuration subroutine to validate and canonicalize a configuration type.
36 # Supply the specified configuration type as an argument.
37 # If it is invalid, we print an error message on stderr and exit with code 1.
38 # Otherwise, we print the canonical config type on stdout and succeed.
39
40 # This file is supposed to be the same for all GNU packages
41 # and recognize all the CPU types, system types and aliases
42 # that are meaningful with *any* GNU software.
43 # Each package is responsible for reporting which valid configurations
44 # it does not support. The user should be able to distinguish
45 # a failure to support a valid configuration from a meaningless
46 # configuration.
47
48 # The goal of this file is to map all the various variations of a given
49 # machine specification into a single specification in the form:
50 # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
51 # or in some cases, the newer four-part form:
52 # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
53 # It is wrong to echo any other type of specification.
54
55 me=`echo "$0" | sed -e 's,.*/,,'`
56
57 usage="\
58 Usage: $0 [OPTION] CPU-MFR-OPSYS
59 $0 [OPTION] ALIAS
60
61 Canonicalize a configuration name.
62
63 Operation modes:
64 -h, --help print this help, then exit
65 -t, --time-stamp print date of last modification, then exit
66 -v, --version print version number, then exit
67
68 Report bugs and patches to <config-patches@gnu.org>."
69
70 version="\
71 GNU config.sub ($timestamp)
72
73 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
74 Free Software Foundation, Inc.
75
76 This is free software; see the source for copying conditions. There is NO
77 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
78
79 help="
80 Try \`$me --help' for more information."
81
82 # Parse command line
83 while test $# -gt 0 ; do
84 case $1 in
85 --time-stamp | --time* | -t )
86 echo "$timestamp" ; exit 0 ;;
87 --version | -v )
88 echo "$version" ; exit 0 ;;
89 --help | --h* | -h )
90 echo "$usage"; exit 0 ;;
91 -- ) # Stop option processing
92 shift; break ;;
93 - ) # Use stdin as input.
94 break ;;
95 -* )
96 echo "$me: invalid option $1$help"
97 exit 1 ;;
98
99 *local*)
100 # First pass through any local machine types.
101 echo $1
102 exit 0;;
103
104 * )
105 break ;;
106 esac
107 done
108
109 case $# in
110 0) echo "$me: missing argument$help" >&2
111 exit 1;;
112 1) ;;
113 *) echo "$me: too many arguments$help" >&2
114 exit 1;;
115 esac
116
117 # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
118 # Here we must recognize all the valid KERNEL-OS combinations.
119 maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
120 case $maybe_os in
121 nto-qnx* | linux-gnu* | linux-dietlibc | kfreebsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
122 os=-$maybe_os
123 basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
124 ;;
125 *)
126 basic_machine=`echo $1 | sed 's/-[^-]*$//'`
127 if [ $basic_machine != $1 ]
128 then os=`echo $1 | sed 's/.*-/-/'`
129 else os=; fi
130 ;;
131 esac
132
133 ### Let's recognize common machines as not being operating systems so
134 ### that things like config.sub decstation-3100 work. We also
135 ### recognize some manufacturers as not being operating systems, so we
136 ### can provide default operating systems below.
137 case $os in
138 -sun*os*)
139 # Prevent following clause from handling this invalid input.
140 ;;
141 -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
142 -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
143 -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
144 -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
145 -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
146 -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
147 -apple | -axis)
148 os=
149 basic_machine=$1
150 ;;
151 -sim | -cisco | -oki | -wec | -winbond)
152 os=
153 basic_machine=$1
154 ;;
155 -scout)
156 ;;
157 -wrs)
158 os=-vxworks
159 basic_machine=$1
160 ;;
161 -chorusos*)
162 os=-chorusos
163 basic_machine=$1
164 ;;
165 -chorusrdb)
166 os=-chorusrdb
167 basic_machine=$1
168 ;;
169 -hiux*)
170 os=-hiuxwe2
171 ;;
172 -sco5)
173 os=-sco3.2v5
174 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
175 ;;
176 -sco4)
177 os=-sco3.2v4
178 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
179 ;;
180 -sco3.2.[4-9]*)
181 os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
182 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
183 ;;
184 -sco3.2v[4-9]*)
185 # Don't forget version if it is 3.2v4 or newer.
186 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
187 ;;
188 -sco*)
189 os=-sco3.2v2
190 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
191 ;;
192 -udk*)
193 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
194 ;;
195 -isc)
196 os=-isc2.2
197 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
198 ;;
199 -clix*)
200 basic_machine=clipper-intergraph
201 ;;
202 -isc*)
203 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
204 ;;
205 -lynx*)
206 os=-lynxos
207 ;;
208 -ptx*)
209 basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
210 ;;
211 -windowsnt*)
212 os=`echo $os | sed -e 's/windowsnt/winnt/'`
213 ;;
214 -psos*)
215 os=-psos
216 ;;
217 -mint | -mint[0-9]*)
218 basic_machine=m68k-atari
219 os=-mint
220 ;;
221 esac
222
223 # Decode aliases for certain CPU-COMPANY combinations.
224 case $basic_machine in
225 # Recognize the basic CPU types without company name.
226 # Some are omitted here because they have special meanings below.
227 1750a | 580 \
228 | a29k \
229 | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
230 | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
231 | am33_2.0 \
232 | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
233 | c4x | clipper \
234 | d10v | d30v | dlx | dsp16xx \
235 | fr30 | frv \
236 | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
237 | i370 | i860 | i960 | ia64 \
238 | ip2k | iq2000 \
239 | m32r | m68000 | m68k | m88k | mcore \
240 | mips | mipsbe | mipseb | mipsel | mipsle \
241 | mips16 \
242 | mips64 | mips64el \
243 | mips64vr | mips64vrel \
244 | mips64orion | mips64orionel \
245 | mips64vr4100 | mips64vr4100el \
246 | mips64vr4300 | mips64vr4300el \
247 | mips64vr5000 | mips64vr5000el \
248 | mipsisa32 | mipsisa32el \
249 | mipsisa32r2 | mipsisa32r2el \
250 | mipsisa64 | mipsisa64el \
251 | mipsisa64sb1 | mipsisa64sb1el \
252 | mipsisa64sr71k | mipsisa64sr71kel \
253 | mipstx39 | mipstx39el \
254 | mn10200 | mn10300 \
255 | msp430 \
256 | ns16k | ns32k \
257 | openrisc | or32 \
258 | pdp10 | pdp11 | pj | pjl \
259 | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
260 | pyramid \
261 | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
262 | sh64 | sh64le \
263 | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \
264 | strongarm \
265 | tahoe | thumb | tic4x | tic80 | tron \
266 | v850 | v850e \
267 | we32k \
268 | x86 | xscale | xstormy16 | xtensa \
269 | z8k)
270 basic_machine=$basic_machine-unknown
271 ;;
272 m6811 | m68hc11 | m6812 | m68hc12)
273 # Motorola 68HC11/12.
274 basic_machine=$basic_machine-unknown
275 os=-none
276 ;;
277 m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
278 ;;
279
280 # We use `pc' rather than `unknown'
281 # because (1) that's what they normally are, and
282 # (2) the word "unknown" tends to confuse beginning users.
283 i*86 | x86_64)
284 basic_machine=$basic_machine-pc
285 ;;
286 # Object if more than one company name word.
287 *-*-*)
288 echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
289 exit 1
290 ;;
291 # Recognize the basic CPU types with company name.
292 580-* \
293 | a29k-* \
294 | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
295 | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
296 | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
297 | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
298 | avr-* \
299 | bs2000-* \
300 | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
301 | clipper-* | cydra-* \
302 | d10v-* | d30v-* | dlx-* \
303 | elxsi-* \
304 | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
305 | h8300-* | h8500-* \
306 | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
307 | i*86-* | i860-* | i960-* | ia64-* \
308 | ip2k-* | iq2000-* \
309 | m32r-* \
310 | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
311 | m88110-* | m88k-* | mcore-* \
312 | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
313 | mips16-* \
314 | mips64-* | mips64el-* \
315 | mips64vr-* | mips64vrel-* \
316 | mips64orion-* | mips64orionel-* \
317 | mips64vr4100-* | mips64vr4100el-* \
318 | mips64vr4300-* | mips64vr4300el-* \
319 | mips64vr5000-* | mips64vr5000el-* \
320 | mipsisa32-* | mipsisa32el-* \
321 | mipsisa32r2-* | mipsisa32r2el-* \
322 | mipsisa64-* | mipsisa64el-* \
323 | mipsisa64sb1-* | mipsisa64sb1el-* \
324 | mipsisa64sr71k-* | mipsisa64sr71kel-* \
325 | mipstx39-* | mipstx39el-* \
326 | msp430-* \
327 | none-* | np1-* | nv1-* | ns16k-* | ns32k-* \
328 | orion-* \
329 | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
330 | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
331 | pyramid-* \
332 | romp-* | rs6000-* \
333 | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \
334 | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
335 | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
336 | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
337 | tahoe-* | thumb-* \
338 | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
339 | tron-* \
340 | v850-* | v850e-* | vax-* \
341 | we32k-* \
342 | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \
343 | xtensa-* \
344 | ymp-* \
345 | z8k-*)
346 ;;
347 # Recognize the various machine names and aliases which stand
348 # for a CPU type and a company and sometimes even an OS.
349 386bsd)
350 basic_machine=i386-unknown
351 os=-bsd
352 ;;
353 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
354 basic_machine=m68000-att
355 ;;
356 3b*)
357 basic_machine=we32k-att
358 ;;
359 a29khif)
360 basic_machine=a29k-amd
361 os=-udi
362 ;;
363 adobe68k)
364 basic_machine=m68010-adobe
365 os=-scout
366 ;;
367 alliant | fx80)
368 basic_machine=fx80-alliant
369 ;;
370 altos | altos3068)
371 basic_machine=m68k-altos
372 ;;
373 am29k)
374 basic_machine=a29k-none
375 os=-bsd
376 ;;
377 amd64)
378 basic_machine=x86_64-pc
379 ;;
380 amdahl)
381 basic_machine=580-amdahl
382 os=-sysv
383 ;;
384 amiga | amiga-*)
385 basic_machine=m68k-unknown
386 ;;
387 amigaos | amigados)
388 basic_machine=m68k-unknown
389 os=-amigaos
390 ;;
391 amigaunix | amix)
392 basic_machine=m68k-unknown
393 os=-sysv4
394 ;;
395 apollo68)
396 basic_machine=m68k-apollo
397 os=-sysv
398 ;;
399 apollo68bsd)
400 basic_machine=m68k-apollo
401 os=-bsd
402 ;;
403 aux)
404 basic_machine=m68k-apple
405 os=-aux
406 ;;
407 balance)
408 basic_machine=ns32k-sequent
409 os=-dynix
410 ;;
411 c90)
412 basic_machine=c90-cray
413 os=-unicos
414 ;;
415 convex-c1)
416 basic_machine=c1-convex
417 os=-bsd
418 ;;
419 convex-c2)
420 basic_machine=c2-convex
421 os=-bsd
422 ;;
423 convex-c32)
424 basic_machine=c32-convex
425 os=-bsd
426 ;;
427 convex-c34)
428 basic_machine=c34-convex
429 os=-bsd
430 ;;
431 convex-c38)
432 basic_machine=c38-convex
433 os=-bsd
434 ;;
435 cray | j90)
436 basic_machine=j90-cray
437 os=-unicos
438 ;;
439 crds | unos)
440 basic_machine=m68k-crds
441 ;;
442 cris | cris-* | etrax*)
443 basic_machine=cris-axis
444 ;;
445 da30 | da30-*)
446 basic_machine=m68k-da30
447 ;;
448 decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
449 basic_machine=mips-dec
450 ;;
451 decsystem10* | dec10*)
452 basic_machine=pdp10-dec
453 os=-tops10
454 ;;
455 decsystem20* | dec20*)
456 basic_machine=pdp10-dec
457 os=-tops20
458 ;;
459 delta | 3300 | motorola-3300 | motorola-delta \
460 | 3300-motorola | delta-motorola)
461 basic_machine=m68k-motorola
462 ;;
463 delta88)
464 basic_machine=m88k-motorola
465 os=-sysv3
466 ;;
467 dpx20 | dpx20-*)
468 basic_machine=rs6000-bull
469 os=-bosx
470 ;;
471 dpx2* | dpx2*-bull)
472 basic_machine=m68k-bull
473 os=-sysv3
474 ;;
475 ebmon29k)
476 basic_machine=a29k-amd
477 os=-ebmon
478 ;;
479 elxsi)
480 basic_machine=elxsi-elxsi
481 os=-bsd
482 ;;
483 encore | umax | mmax)
484 basic_machine=ns32k-encore
485 ;;
486 es1800 | OSE68k | ose68k | ose | OSE)
487 basic_machine=m68k-ericsson
488 os=-ose
489 ;;
490 fx2800)
491 basic_machine=i860-alliant
492 ;;
493 genix)
494 basic_machine=ns32k-ns
495 ;;
496 gmicro)
497 basic_machine=tron-gmicro
498 os=-sysv
499 ;;
500 go32)
501 basic_machine=i386-pc
502 os=-go32
503 ;;
504 h3050r* | hiux*)
505 basic_machine=hppa1.1-hitachi
506 os=-hiuxwe2
507 ;;
508 h8300hms)
509 basic_machine=h8300-hitachi
510 os=-hms
511 ;;
512 h8300xray)
513 basic_machine=h8300-hitachi
514 os=-xray
515 ;;
516 h8500hms)
517 basic_machine=h8500-hitachi
518 os=-hms
519 ;;
520 harris)
521 basic_machine=m88k-harris
522 os=-sysv3
523 ;;
524 hp300-*)
525 basic_machine=m68k-hp
526 ;;
527 hp300bsd)
528 basic_machine=m68k-hp
529 os=-bsd
530 ;;
531 hp300hpux)
532 basic_machine=m68k-hp
533 os=-hpux
534 ;;
535 hp3k9[0-9][0-9] | hp9[0-9][0-9])
536 basic_machine=hppa1.0-hp
537 ;;
538 hp9k2[0-9][0-9] | hp9k31[0-9])
539 basic_machine=m68000-hp
540 ;;
541 hp9k3[2-9][0-9])
542 basic_machine=m68k-hp
543 ;;
544 hp9k6[0-9][0-9] | hp6[0-9][0-9])
545 basic_machine=hppa1.0-hp
546 ;;
547 hp9k7[0-79][0-9] | hp7[0-79][0-9])
548 basic_machine=hppa1.1-hp
549 ;;
550 hp9k78[0-9] | hp78[0-9])
551 # FIXME: really hppa2.0-hp
552 basic_machine=hppa1.1-hp
553 ;;
554 hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
555 # FIXME: really hppa2.0-hp
556 basic_machine=hppa1.1-hp
557 ;;
558 hp9k8[0-9][13679] | hp8[0-9][13679])
559 basic_machine=hppa1.1-hp
560 ;;
561 hp9k8[0-9][0-9] | hp8[0-9][0-9])
562 basic_machine=hppa1.0-hp
563 ;;
564 hppa-next)
565 os=-nextstep3
566 ;;
567 hppaosf)
568 basic_machine=hppa1.1-hp
569 os=-osf
570 ;;
571 hppro)
572 basic_machine=hppa1.1-hp
573 os=-proelf
574 ;;
575 i370-ibm* | ibm*)
576 basic_machine=i370-ibm
577 ;;
578 # I'm not sure what "Sysv32" means. Should this be sysv3.2?
579 i*86v32)
580 basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
581 os=-sysv32
582 ;;
583 i*86v4*)
584 basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
585 os=-sysv4
586 ;;
587 i*86v)
588 basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
589 os=-sysv
590 ;;
591 i*86sol2)
592 basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
593 os=-solaris2
594 ;;
595 i386mach)
596 basic_machine=i386-mach
597 os=-mach
598 ;;
599 i386-vsta | vsta)
600 basic_machine=i386-unknown
601 os=-vsta
602 ;;
603 iris | iris4d)
604 basic_machine=mips-sgi
605 case $os in
606 -irix*)
607 ;;
608 *)
609 os=-irix4
610 ;;
611 esac
612 ;;
613 isi68 | isi)
614 basic_machine=m68k-isi
615 os=-sysv
616 ;;
617 m88k-omron*)
618 basic_machine=m88k-omron
619 ;;
620 magnum | m3230)
621 basic_machine=mips-mips
622 os=-sysv
623 ;;
624 merlin)
625 basic_machine=ns32k-utek
626 os=-sysv
627 ;;
628 mingw32)
629 basic_machine=i386-pc
630 os=-mingw32
631 ;;
632 miniframe)
633 basic_machine=m68000-convergent
634 ;;
635 *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
636 basic_machine=m68k-atari
637 os=-mint
638 ;;
639 mips3*-*)
640 basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
641 ;;
642 mips3*)
643 basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
644 ;;
645 mmix*)
646 basic_machine=mmix-knuth
647 os=-mmixware
648 ;;
649 monitor)
650 basic_machine=m68k-rom68k
651 os=-coff
652 ;;
653 morphos)
654 basic_machine=powerpc-unknown
655 os=-morphos
656 ;;
657 msdos)
658 basic_machine=i386-pc
659 os=-msdos
660 ;;
661 mvs)
662 basic_machine=i370-ibm
663 os=-mvs
664 ;;
665 ncr3000)
666 basic_machine=i486-ncr
667 os=-sysv4
668 ;;
669 netbsd386)
670 basic_machine=i386-unknown
671 os=-netbsd
672 ;;
673 netwinder)
674 basic_machine=armv4l-rebel
675 os=-linux
676 ;;
677 news | news700 | news800 | news900)
678 basic_machine=m68k-sony
679 os=-newsos
680 ;;
681 news1000)
682 basic_machine=m68030-sony
683 os=-newsos
684 ;;
685 news-3600 | risc-news)
686 basic_machine=mips-sony
687 os=-newsos
688 ;;
689 necv70)
690 basic_machine=v70-nec
691 os=-sysv
692 ;;
693 next | m*-next )
694 basic_machine=m68k-next
695 case $os in
696 -nextstep* )
697 ;;
698 -ns2*)
699 os=-nextstep2
700 ;;
701 *)
702 os=-nextstep3
703 ;;
704 esac
705 ;;
706 nh3000)
707 basic_machine=m68k-harris
708 os=-cxux
709 ;;
710 nh[45]000)
711 basic_machine=m88k-harris
712 os=-cxux
713 ;;
714 nindy960)
715 basic_machine=i960-intel
716 os=-nindy
717 ;;
718 mon960)
719 basic_machine=i960-intel
720 os=-mon960
721 ;;
722 nonstopux)
723 basic_machine=mips-compaq
724 os=-nonstopux
725 ;;
726 np1)
727 basic_machine=np1-gould
728 ;;
729 nv1)
730 basic_machine=nv1-cray
731 os=-unicosmp
732 ;;
733 nsr-tandem)
734 basic_machine=nsr-tandem
735 ;;
736 op50n-* | op60c-*)
737 basic_machine=hppa1.1-oki
738 os=-proelf
739 ;;
740 or32 | or32-*)
741 basic_machine=or32-unknown
742 os=-coff
743 ;;
744 OSE68000 | ose68000)
745 basic_machine=m68000-ericsson
746 os=-ose
747 ;;
748 os68k)
749 basic_machine=m68k-none
750 os=-os68k
751 ;;
752 pa-hitachi)
753 basic_machine=hppa1.1-hitachi
754 os=-hiuxwe2
755 ;;
756 paragon)
757 basic_machine=i860-intel
758 os=-osf
759 ;;
760 pbd)
761 basic_machine=sparc-tti
762 ;;
763 pbb)
764 basic_machine=m68k-tti
765 ;;
766 pc532 | pc532-*)
767 basic_machine=ns32k-pc532
768 ;;
769 pentium | p5 | k5 | k6 | nexgen | viac3)
770 basic_machine=i586-pc
771 ;;
772 pentiumpro | p6 | 6x86 | athlon | athlon_*)
773 basic_machine=i686-pc
774 ;;
775 pentiumii | pentium2 | pentiumiii | pentium3)
776 basic_machine=i686-pc
777 ;;
778 pentium4)
779 basic_machine=i786-pc
780 ;;
781 pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
782 basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
783 ;;
784 pentiumpro-* | p6-* | 6x86-* | athlon-*)
785 basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
786 ;;
787 pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
788 basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
789 ;;
790 pentium4-*)
791 basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
792 ;;
793 pn)
794 basic_machine=pn-gould
795 ;;
796 power) basic_machine=power-ibm
797 ;;
798 ppc) basic_machine=powerpc-unknown
799 ;;
800 ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
801 ;;
802 ppcle | powerpclittle | ppc-le | powerpc-little)
803 basic_machine=powerpcle-unknown
804 ;;
805 ppcle-* | powerpclittle-*)
806 basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
807 ;;
808 ppc64) basic_machine=powerpc64-unknown
809 ;;
810 ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
811 ;;
812 ppc64le | powerpc64little | ppc64-le | powerpc64-little)
813 basic_machine=powerpc64le-unknown
814 ;;
815 ppc64le-* | powerpc64little-*)
816 basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
817 ;;
818 ps2)
819 basic_machine=i386-ibm
820 ;;
821 pw32)
822 basic_machine=i586-unknown
823 os=-pw32
824 ;;
825 rom68k)
826 basic_machine=m68k-rom68k
827 os=-coff
828 ;;
829 rm[46]00)
830 basic_machine=mips-siemens
831 ;;
832 rtpc | rtpc-*)
833 basic_machine=romp-ibm
834 ;;
835 s390 | s390-*)
836 basic_machine=s390-ibm
837 ;;
838 s390x | s390x-*)
839 basic_machine=s390x-ibm
840 ;;
841 sa29200)
842 basic_machine=a29k-amd
843 os=-udi
844 ;;
845 sb1)
846 basic_machine=mipsisa64sb1-unknown
847 ;;
848 sb1el)
849 basic_machine=mipsisa64sb1el-unknown
850 ;;
851 sei)
852 basic_machine=mips-sei
853 os=-seiux
854 ;;
855 sequent)
856 basic_machine=i386-sequent
857 ;;
858 sh)
859 basic_machine=sh-hitachi
860 os=-hms
861 ;;
862 sh64)
863 basic_machine=sh64-unknown
864 ;;
865 sparclite-wrs | simso-wrs)
866 basic_machine=sparclite-wrs
867 os=-vxworks
868 ;;
869 sps7)
870 basic_machine=m68k-bull
871 os=-sysv2
872 ;;
873 spur)
874 basic_machine=spur-unknown
875 ;;
876 st2000)
877 basic_machine=m68k-tandem
878 ;;
879 stratus)
880 basic_machine=i860-stratus
881 os=-sysv4
882 ;;
883 sun2)
884 basic_machine=m68000-sun
885 ;;
886 sun2os3)
887 basic_machine=m68000-sun
888 os=-sunos3
889 ;;
890 sun2os4)
891 basic_machine=m68000-sun
892 os=-sunos4
893 ;;
894 sun3os3)
895 basic_machine=m68k-sun
896 os=-sunos3
897 ;;
898 sun3os4)
899 basic_machine=m68k-sun
900 os=-sunos4
901 ;;
902 sun4os3)
903 basic_machine=sparc-sun
904 os=-sunos3
905 ;;
906 sun4os4)
907 basic_machine=sparc-sun
908 os=-sunos4
909 ;;
910 sun4sol2)
911 basic_machine=sparc-sun
912 os=-solaris2
913 ;;
914 sun3 | sun3-*)
915 basic_machine=m68k-sun
916 ;;
917 sun4)
918 basic_machine=sparc-sun
919 ;;
920 sun386 | sun386i | roadrunner)
921 basic_machine=i386-sun
922 ;;
923 sv1)
924 basic_machine=sv1-cray
925 os=-unicos
926 ;;
927 symmetry)
928 basic_machine=i386-sequent
929 os=-dynix
930 ;;
931 t3e)
932 basic_machine=alphaev5-cray
933 os=-unicos
934 ;;
935 t90)
936 basic_machine=t90-cray
937 os=-unicos
938 ;;
939 tic54x | c54x*)
940 basic_machine=tic54x-unknown
941 os=-coff
942 ;;
943 tic55x | c55x*)
944 basic_machine=tic55x-unknown
945 os=-coff
946 ;;
947 tic6x | c6x*)
948 basic_machine=tic6x-unknown
949 os=-coff
950 ;;
951 tx39)
952 basic_machine=mipstx39-unknown
953 ;;
954 tx39el)
955 basic_machine=mipstx39el-unknown
956 ;;
957 toad1)
958 basic_machine=pdp10-xkl
959 os=-tops20
960 ;;
961 tower | tower-32)
962 basic_machine=m68k-ncr
963 ;;
964 udi29k)
965 basic_machine=a29k-amd
966 os=-udi
967 ;;
968 ultra3)
969 basic_machine=a29k-nyu
970 os=-sym1
971 ;;
972 v810 | necv810)
973 basic_machine=v810-nec
974 os=-none
975 ;;
976 vaxv)
977 basic_machine=vax-dec
978 os=-sysv
979 ;;
980 vms)
981 basic_machine=vax-dec
982 os=-vms
983 ;;
984 vpp*|vx|vx-*)
985 basic_machine=f301-fujitsu
986 ;;
987 vxworks960)
988 basic_machine=i960-wrs
989 os=-vxworks
990 ;;
991 vxworks68)
992 basic_machine=m68k-wrs
993 os=-vxworks
994 ;;
995 vxworks29k)
996 basic_machine=a29k-wrs
997 os=-vxworks
998 ;;
999 w65*)
1000 basic_machine=w65-wdc
1001 os=-none
1002 ;;
1003 w89k-*)
1004 basic_machine=hppa1.1-winbond
1005 os=-proelf
1006 ;;
1007 xps | xps100)
1008 basic_machine=xps100-honeywell
1009 ;;
1010 ymp)
1011 basic_machine=ymp-cray
1012 os=-unicos
1013 ;;
1014 z8k-*-coff)
1015 basic_machine=z8k-unknown
1016 os=-sim
1017 ;;
1018 none)
1019 basic_machine=none-none
1020 os=-none
1021 ;;
1022
1023 # Here we handle the default manufacturer of certain CPU types. It is in
1024 # some cases the only manufacturer, in others, it is the most popular.
1025 w89k)
1026 basic_machine=hppa1.1-winbond
1027 ;;
1028 op50n)
1029 basic_machine=hppa1.1-oki
1030 ;;
1031 op60c)
1032 basic_machine=hppa1.1-oki
1033 ;;
1034 romp)
1035 basic_machine=romp-ibm
1036 ;;
1037 rs6000)
1038 basic_machine=rs6000-ibm
1039 ;;
1040 vax)
1041 basic_machine=vax-dec
1042 ;;
1043 pdp10)
1044 # there are many clones, so DEC is not a safe bet
1045 basic_machine=pdp10-unknown
1046 ;;
1047 pdp11)
1048 basic_machine=pdp11-dec
1049 ;;
1050 we32k)
1051 basic_machine=we32k-att
1052 ;;
1053 sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele)
1054 basic_machine=sh-unknown
1055 ;;
1056 sh64)
1057 basic_machine=sh64-unknown
1058 ;;
1059 sparc | sparcv9 | sparcv9b)
1060 basic_machine=sparc-sun
1061 ;;
1062 cydra)
1063 basic_machine=cydra-cydrome
1064 ;;
1065 orion)
1066 basic_machine=orion-highlevel
1067 ;;
1068 orion105)
1069 basic_machine=clipper-highlevel
1070 ;;
1071 mac | mpw | mac-mpw)
1072 basic_machine=m68k-apple
1073 ;;
1074 pmac | pmac-mpw)
1075 basic_machine=powerpc-apple
1076 ;;
1077 *-unknown)
1078 # Make sure to match an already-canonicalized machine name.
1079 ;;
1080 *)
1081 echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
1082 exit 1
1083 ;;
1084 esac
1085
1086 # Here we canonicalize certain aliases for manufacturers.
1087 case $basic_machine in
1088 *-digital*)
1089 basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
1090 ;;
1091 *-commodore*)
1092 basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
1093 ;;
1094 *)
1095 ;;
1096 esac
1097
1098 # Decode manufacturer-specific aliases for certain operating systems.
1099
1100 if [ x"$os" != x"" ]
1101 then
1102 case $os in
1103 # First match some system type aliases
1104 # that might get confused with valid system types.
1105 # -solaris* is a basic system type, with this one exception.
1106 -solaris1 | -solaris1.*)
1107 os=`echo $os | sed -e 's|solaris1|sunos4|'`
1108 ;;
1109 -solaris)
1110 os=-solaris2
1111 ;;
1112 -svr4*)
1113 os=-sysv4
1114 ;;
1115 -unixware*)
1116 os=-sysv4.2uw
1117 ;;
1118 -gnu/linux*)
1119 os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
1120 ;;
1121 # First accept the basic system types.
1122 # The portable systems comes first.
1123 # Each alternative MUST END IN A *, to match a version number.
1124 # -sysv* is not here because it comes later, after sysvr4.
1125 -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
1126 | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
1127 | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
1128 | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
1129 | -aos* \
1130 | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
1131 | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
1132 | -hiux* | -386bsd* | -netbsd* | -openbsd* | -kfreebsd* | -freebsd* | -riscix* \
1133 | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
1134 | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
1135 | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
1136 | -chorusos* | -chorusrdb* \
1137 | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
1138 | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
1139 | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
1140 | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
1141 | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
1142 | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
1143 | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
1144 | -powermax* | -dnix* | -nx6 | -nx7 | -sei*)
1145 # Remember, each alternative MUST END IN *, to match a version number.
1146 ;;
1147 -qnx*)
1148 case $basic_machine in
1149 x86-* | i*86-*)
1150 ;;
1151 *)
1152 os=-nto$os
1153 ;;
1154 esac
1155 ;;
1156 -nto-qnx*)
1157 ;;
1158 -nto*)
1159 os=`echo $os | sed -e 's|nto|nto-qnx|'`
1160 ;;
1161 -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
1162 | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
1163 | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
1164 ;;
1165 -mac*)
1166 os=`echo $os | sed -e 's|mac|macos|'`
1167 ;;
1168 -linux-dietlibc)
1169 os=-linux-dietlibc
1170 ;;
1171 -linux*)
1172 os=`echo $os | sed -e 's|linux|linux-gnu|'`
1173 ;;
1174 -sunos5*)
1175 os=`echo $os | sed -e 's|sunos5|solaris2|'`
1176 ;;
1177 -sunos6*)
1178 os=`echo $os | sed -e 's|sunos6|solaris3|'`
1179 ;;
1180 -opened*)
1181 os=-openedition
1182 ;;
1183 -wince*)
1184 os=-wince
1185 ;;
1186 -osfrose*)
1187 os=-osfrose
1188 ;;
1189 -osf*)
1190 os=-osf
1191 ;;
1192 -utek*)
1193 os=-bsd
1194 ;;
1195 -dynix*)
1196 os=-bsd
1197 ;;
1198 -acis*)
1199 os=-aos
1200 ;;
1201 -atheos*)
1202 os=-atheos
1203 ;;
1204 -386bsd)
1205 os=-bsd
1206 ;;
1207 -ctix* | -uts*)
1208 os=-sysv
1209 ;;
1210 -nova*)
1211 os=-rtmk-nova
1212 ;;
1213 -ns2 )
1214 os=-nextstep2
1215 ;;
1216 -nsk*)
1217 os=-nsk
1218 ;;
1219 # Preserve the version number of sinix5.
1220 -sinix5.*)
1221 os=`echo $os | sed -e 's|sinix|sysv|'`
1222 ;;
1223 -sinix*)
1224 os=-sysv4
1225 ;;
1226 -triton*)
1227 os=-sysv3
1228 ;;
1229 -oss*)
1230 os=-sysv3
1231 ;;
1232 -svr4)
1233 os=-sysv4
1234 ;;
1235 -svr3)
1236 os=-sysv3
1237 ;;
1238 -sysvr4)
1239 os=-sysv4
1240 ;;
1241 # This must come after -sysvr4.
1242 -sysv*)
1243 ;;
1244 -ose*)
1245 os=-ose
1246 ;;
1247 -es1800*)
1248 os=-ose
1249 ;;
1250 -xenix)
1251 os=-xenix
1252 ;;
1253 -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
1254 os=-mint
1255 ;;
1256 -aros*)
1257 os=-aros
1258 ;;
1259 -kaos*)
1260 os=-kaos
1261 ;;
1262 -none)
1263 ;;
1264 *)
1265 # Get rid of the `-' at the beginning of $os.
1266 os=`echo $os | sed 's/[^-]*-//'`
1267 echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
1268 exit 1
1269 ;;
1270 esac
1271 else
1272
1273 # Here we handle the default operating systems that come with various machines.
1274 # The value should be what the vendor currently ships out the door with their
1275 # machine or put another way, the most popular os provided with the machine.
1276
1277 # Note that if you're going to try to match "-MANUFACTURER" here (say,
1278 # "-sun"), then you have to tell the case statement up towards the top
1279 # that MANUFACTURER isn't an operating system. Otherwise, code above
1280 # will signal an error saying that MANUFACTURER isn't an operating
1281 # system, and we'll never get to this point.
1282
1283 case $basic_machine in
1284 *-acorn)
1285 os=-riscix1.2
1286 ;;
1287 arm*-rebel)
1288 os=-linux
1289 ;;
1290 arm*-semi)
1291 os=-aout
1292 ;;
1293 c4x-* | tic4x-*)
1294 os=-coff
1295 ;;
1296 # This must come before the *-dec entry.
1297 pdp10-*)
1298 os=-tops20
1299 ;;
1300 pdp11-*)
1301 os=-none
1302 ;;
1303 *-dec | vax-*)
1304 os=-ultrix4.2
1305 ;;
1306 m68*-apollo)
1307 os=-domain
1308 ;;
1309 i386-sun)
1310 os=-sunos4.0.2
1311 ;;
1312 m68000-sun)
1313 os=-sunos3
1314 # This also exists in the configure program, but was not the
1315 # default.
1316 # os=-sunos4
1317 ;;
1318 m68*-cisco)
1319 os=-aout
1320 ;;
1321 mips*-cisco)
1322 os=-elf
1323 ;;
1324 mips*-*)
1325 os=-elf
1326 ;;
1327 or32-*)
1328 os=-coff
1329 ;;
1330 *-tti) # must be before sparc entry or we get the wrong os.
1331 os=-sysv3
1332 ;;
1333 sparc-* | *-sun)
1334 os=-sunos4.1.1
1335 ;;
1336 *-be)
1337 os=-beos
1338 ;;
1339 *-ibm)
1340 os=-aix
1341 ;;
1342 *-wec)
1343 os=-proelf
1344 ;;
1345 *-winbond)
1346 os=-proelf
1347 ;;
1348 *-oki)
1349 os=-proelf
1350 ;;
1351 *-hp)
1352 os=-hpux
1353 ;;
1354 *-hitachi)
1355 os=-hiux
1356 ;;
1357 i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
1358 os=-sysv
1359 ;;
1360 *-cbm)
1361 os=-amigaos
1362 ;;
1363 *-dg)
1364 os=-dgux
1365 ;;
1366 *-dolphin)
1367 os=-sysv3
1368 ;;
1369 m68k-ccur)
1370 os=-rtu
1371 ;;
1372 m88k-omron*)
1373 os=-luna
1374 ;;
1375 *-next )
1376 os=-nextstep
1377 ;;
1378 *-sequent)
1379 os=-ptx
1380 ;;
1381 *-crds)
1382 os=-unos
1383 ;;
1384 *-ns)
1385 os=-genix
1386 ;;
1387 i370-*)
1388 os=-mvs
1389 ;;
1390 *-next)
1391 os=-nextstep3
1392 ;;
1393 *-gould)
1394 os=-sysv
1395 ;;
1396 *-highlevel)
1397 os=-bsd
1398 ;;
1399 *-encore)
1400 os=-bsd
1401 ;;
1402 *-sgi)
1403 os=-irix
1404 ;;
1405 *-siemens)
1406 os=-sysv4
1407 ;;
1408 *-masscomp)
1409 os=-rtu
1410 ;;
1411 f30[01]-fujitsu | f700-fujitsu)
1412 os=-uxpv
1413 ;;
1414 *-rom68k)
1415 os=-coff
1416 ;;
1417 *-*bug)
1418 os=-coff
1419 ;;
1420 *-apple)
1421 os=-macos
1422 ;;
1423 *-atari*)
1424 os=-mint
1425 ;;
1426 *)
1427 os=-none
1428 ;;
1429 esac
1430 fi
1431
1432 # Here we handle the case where we know the os, and the CPU type, but not the
1433 # manufacturer. We pick the logical manufacturer.
1434 vendor=unknown
1435 case $basic_machine in
1436 *-unknown)
1437 case $os in
1438 -riscix*)
1439 vendor=acorn
1440 ;;
1441 -sunos*)
1442 vendor=sun
1443 ;;
1444 -aix*)
1445 vendor=ibm
1446 ;;
1447 -beos*)
1448 vendor=be
1449 ;;
1450 -hpux*)
1451 vendor=hp
1452 ;;
1453 -mpeix*)
1454 vendor=hp
1455 ;;
1456 -hiux*)
1457 vendor=hitachi
1458 ;;
1459 -unos*)
1460 vendor=crds
1461 ;;
1462 -dgux*)
1463 vendor=dg
1464 ;;
1465 -luna*)
1466 vendor=omron
1467 ;;
1468 -genix*)
1469 vendor=ns
1470 ;;
1471 -mvs* | -opened*)
1472 vendor=ibm
1473 ;;
1474 -ptx*)
1475 vendor=sequent
1476 ;;
1477 -vxsim* | -vxworks* | -windiss*)
1478 vendor=wrs
1479 ;;
1480 -aux*)
1481 vendor=apple
1482 ;;
1483 -hms*)
1484 vendor=hitachi
1485 ;;
1486 -mpw* | -macos*)
1487 vendor=apple
1488 ;;
1489 -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
1490 vendor=atari
1491 ;;
1492 -vos*)
1493 vendor=stratus
1494 ;;
1495 esac
1496 basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
1497 ;;
1498 esac
1499
1500 echo $basic_machine$os
1501 exit 0
1502
1503 # Local variables:
1504 # eval: (add-hook 'write-file-hooks 'time-stamp)
1505 # time-stamp-start: "timestamp='"
1506 # time-stamp-format: "%:y-%02m-%02d"
1507 # time-stamp-end: "'"
1508 # End:
File configure.ac deleted (index 574dcd9..0000000)
1 AC_INIT(pjass, 1.03, cilibrar@gmail.com)
2 AC_CONFIG_SRCDIR([src/misc.c])
3 AM_INIT_AUTOMAKE
4 AM_CONFIG_HEADER([src/config.h])
5 AC_CANONICAL_HOST
6 case $host_os in
7 cygwin ) CYGOPTS=-mno-cygwin ;;
8 * ) CYGOPTS=;;
9 esac
10 AC_SUBST(CYGOPTS)
11 AC_LANG(C)
12 AC_PROG_CC
13 AM_PROG_LEX
14 AC_PROG_YACC
15 AC_PROG_INSTALL
16 AC_CONFIG_FILES([
17 Makefile
18 src/Makefile
19 ])
20 AC_OUTPUT
File depcomp deleted (index edb5d38..0000000)
1 #! /bin/sh
2
3 # depcomp - compile a program generating dependencies as side-effects
4 # Copyright 1999, 2000, 2003 Free Software Foundation, Inc.
5
6 # This program is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 2, or (at your option)
9 # any later version.
10
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
15
16 # You should have received a copy of the GNU General Public License
17 # along with this program; if not, write to the Free Software
18 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
19 # 02111-1307, USA.
20
21 # As a special exception to the GNU General Public License, if you
22 # distribute this file as part of a program that contains a
23 # configuration script generated by Autoconf, you may include it under
24 # the same distribution terms that you use for the rest of that program.
25
26 # Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
27
28 if test -z "$depmode" || test -z "$source" || test -z "$object"; then
29 echo "depcomp: Variables source, object and depmode must be set" 1>&2
30 exit 1
31 fi
32 # `libtool' can also be set to `yes' or `no'.
33
34 if test -z "$depfile"; then
35 base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'`
36 dir=`echo "$object" | sed 's,/.*$,/,'`
37 if test "$dir" = "$object"; then
38 dir=
39 fi
40 # FIXME: should be _deps on DOS.
41 depfile="$dir.deps/$base"
42 fi
43
44 tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
45
46 rm -f "$tmpdepfile"
47
48 # Some modes work just like other modes, but use different flags. We
49 # parameterize here, but still list the modes in the big case below,
50 # to make depend.m4 easier to write. Note that we *cannot* use a case
51 # here, because this file can only contain one case statement.
52 if test "$depmode" = hp; then
53 # HP compiler uses -M and no extra arg.
54 gccflag=-M
55 depmode=gcc
56 fi
57
58 if test "$depmode" = dashXmstdout; then
59 # This is just like dashmstdout with a different argument.
60 dashmflag=-xM
61 depmode=dashmstdout
62 fi
63
64 case "$depmode" in
65 gcc3)
66 ## gcc 3 implements dependency tracking that does exactly what
67 ## we want. Yay! Note: for some reason libtool 1.4 doesn't like
68 ## it if -MD -MP comes after the -MF stuff. Hmm.
69 "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
70 stat=$?
71 if test $stat -eq 0; then :
72 else
73 rm -f "$tmpdepfile"
74 exit $stat
75 fi
76 mv "$tmpdepfile" "$depfile"
77 ;;
78
79 gcc)
80 ## There are various ways to get dependency output from gcc. Here's
81 ## why we pick this rather obscure method:
82 ## - Don't want to use -MD because we'd like the dependencies to end
83 ## up in a subdir. Having to rename by hand is ugly.
84 ## (We might end up doing this anyway to support other compilers.)
85 ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
86 ## -MM, not -M (despite what the docs say).
87 ## - Using -M directly means running the compiler twice (even worse
88 ## than renaming).
89 if test -z "$gccflag"; then
90 gccflag=-MD,
91 fi
92 "$@" -Wp,"$gccflag$tmpdepfile"
93 stat=$?
94 if test $stat -eq 0; then :
95 else
96 rm -f "$tmpdepfile"
97 exit $stat
98 fi
99 rm -f "$depfile"
100 echo "$object : \\" > "$depfile"
101 alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
102 ## The second -e expression handles DOS-style file names with drive letters.
103 sed -e 's/^[^:]*: / /' \
104 -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
105 ## This next piece of magic avoids the `deleted header file' problem.
106 ## The problem is that when a header file which appears in a .P file
107 ## is deleted, the dependency causes make to die (because there is
108 ## typically no way to rebuild the header). We avoid this by adding
109 ## dummy dependencies for each header file. Too bad gcc doesn't do
110 ## this for us directly.
111 tr ' ' '
112 ' < "$tmpdepfile" |
113 ## Some versions of gcc put a space before the `:'. On the theory
114 ## that the space means something, we add a space to the output as
115 ## well.
116 ## Some versions of the HPUX 10.20 sed can't process this invocation
117 ## correctly. Breaking it into two sed invocations is a workaround.
118 sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
119 rm -f "$tmpdepfile"
120 ;;
121
122 hp)
123 # This case exists only to let depend.m4 do its work. It works by
124 # looking at the text of this script. This case will never be run,
125 # since it is checked for above.
126 exit 1
127 ;;
128
129 sgi)
130 if test "$libtool" = yes; then
131 "$@" "-Wp,-MDupdate,$tmpdepfile"
132 else
133 "$@" -MDupdate "$tmpdepfile"
134 fi
135 stat=$?
136 if test $stat -eq 0; then :
137 else
138 rm -f "$tmpdepfile"
139 exit $stat
140 fi
141 rm -f "$depfile"
142
143 if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
144 echo "$object : \\" > "$depfile"
145
146 # Clip off the initial element (the dependent). Don't try to be
147 # clever and replace this with sed code, as IRIX sed won't handle
148 # lines with more than a fixed number of characters (4096 in
149 # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
150 # the IRIX cc adds comments like `#:fec' to the end of the
151 # dependency line.
152 tr ' ' '
153 ' < "$tmpdepfile" \
154 | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
155 tr '
156 ' ' ' >> $depfile
157 echo >> $depfile
158
159 # The second pass generates a dummy entry for each header file.
160 tr ' ' '
161 ' < "$tmpdepfile" \
162 | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
163 >> $depfile
164 else
165 # The sourcefile does not contain any dependencies, so just
166 # store a dummy comment line, to avoid errors with the Makefile
167 # "include basename.Plo" scheme.
168 echo "#dummy" > "$depfile"
169 fi
170 rm -f "$tmpdepfile"
171 ;;
172
173 aix)
174 # The C for AIX Compiler uses -M and outputs the dependencies
175 # in a .u file. In older versions, this file always lives in the
176 # current directory. Also, the AIX compiler puts `$object:' at the
177 # start of each line; $object doesn't have directory information.
178 # Version 6 uses the directory in both cases.
179 stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
180 tmpdepfile="$stripped.u"
181 if test "$libtool" = yes; then
182 "$@" -Wc,-M
183 else
184 "$@" -M
185 fi
186 stat=$?
187
188 if test -f "$tmpdepfile"; then :
189 else
190 stripped=`echo "$stripped" | sed 's,^.*/,,'`
191 tmpdepfile="$stripped.u"
192 fi
193
194 if test $stat -eq 0; then :
195 else
196 rm -f "$tmpdepfile"
197 exit $stat
198 fi
199
200 if test -f "$tmpdepfile"; then
201 outname="$stripped.o"
202 # Each line is of the form `foo.o: dependent.h'.
203 # Do two passes, one to just change these to
204 # `$object: dependent.h' and one to simply `dependent.h:'.
205 sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
206 sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
207 else
208 # The sourcefile does not contain any dependencies, so just
209 # store a dummy comment line, to avoid errors with the Makefile
210 # "include basename.Plo" scheme.
211 echo "#dummy" > "$depfile"
212 fi
213 rm -f "$tmpdepfile"
214 ;;
215
216 icc)
217 # Intel's C compiler understands `-MD -MF file'. However on
218 # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
219 # ICC 7.0 will fill foo.d with something like
220 # foo.o: sub/foo.c
221 # foo.o: sub/foo.h
222 # which is wrong. We want:
223 # sub/foo.o: sub/foo.c
224 # sub/foo.o: sub/foo.h
225 # sub/foo.c:
226 # sub/foo.h:
227 # ICC 7.1 will output
228 # foo.o: sub/foo.c sub/foo.h
229 # and will wrap long lines using \ :
230 # foo.o: sub/foo.c ... \
231 # sub/foo.h ... \
232 # ...
233
234 "$@" -MD -MF "$tmpdepfile"
235 stat=$?
236 if test $stat -eq 0; then :
237 else
238 rm -f "$tmpdepfile"
239 exit $stat
240 fi
241 rm -f "$depfile"
242 # Each line is of the form `foo.o: dependent.h',
243 # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
244 # Do two passes, one to just change these to
245 # `$object: dependent.h' and one to simply `dependent.h:'.
246 sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
247 # Some versions of the HPUX 10.20 sed can't process this invocation
248 # correctly. Breaking it into two sed invocations is a workaround.
249 sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
250 sed -e 's/$/ :/' >> "$depfile"
251 rm -f "$tmpdepfile"
252 ;;
253
254 tru64)
255 # The Tru64 compiler uses -MD to generate dependencies as a side
256 # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
257 # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
258 # dependencies in `foo.d' instead, so we check for that too.
259 # Subdirectories are respected.
260 dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
261 test "x$dir" = "x$object" && dir=
262 base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
263
264 if test "$libtool" = yes; then
265 tmpdepfile1="$dir.libs/$base.lo.d"
266 tmpdepfile2="$dir.libs/$base.d"
267 "$@" -Wc,-MD
268 else
269 tmpdepfile1="$dir$base.o.d"
270 tmpdepfile2="$dir$base.d"
271 "$@" -MD
272 fi
273
274 stat=$?
275 if test $stat -eq 0; then :
276 else
277 rm -f "$tmpdepfile1" "$tmpdepfile2"
278 exit $stat
279 fi
280
281 if test -f "$tmpdepfile1"; then
282 tmpdepfile="$tmpdepfile1"
283 else
284 tmpdepfile="$tmpdepfile2"
285 fi
286 if test -f "$tmpdepfile"; then
287 sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
288 # That's a tab and a space in the [].
289 sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
290 else
291 echo "#dummy" > "$depfile"
292 fi
293 rm -f "$tmpdepfile"
294 ;;
295
296 #nosideeffect)
297 # This comment above is used by automake to tell side-effect
298 # dependency tracking mechanisms from slower ones.
299
300 dashmstdout)
301 # Important note: in order to support this mode, a compiler *must*
302 # always write the preprocessed file to stdout, regardless of -o.
303 "$@" || exit $?
304
305 # Remove the call to Libtool.
306 if test "$libtool" = yes; then
307 while test $1 != '--mode=compile'; do
308 shift
309 done
310 shift
311 fi
312
313 # Remove `-o $object'.
314 IFS=" "
315 for arg
316 do
317 case $arg in
318 -o)
319 shift
320 ;;
321 $object)
322 shift
323 ;;
324 *)
325 set fnord "$@" "$arg"
326 shift # fnord
327 shift # $arg
328 ;;
329 esac
330 done
331
332 test -z "$dashmflag" && dashmflag=-M
333 # Require at least two characters before searching for `:'
334 # in the target name. This is to cope with DOS-style filenames:
335 # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
336 "$@" $dashmflag |
337 sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
338 rm -f "$depfile"
339 cat < "$tmpdepfile" > "$depfile"
340 tr ' ' '
341 ' < "$tmpdepfile" | \
342 ## Some versions of the HPUX 10.20 sed can't process this invocation
343 ## correctly. Breaking it into two sed invocations is a workaround.
344 sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
345 rm -f "$tmpdepfile"
346 ;;
347
348 dashXmstdout)
349 # This case only exists to satisfy depend.m4. It is never actually
350 # run, as this mode is specially recognized in the preamble.
351 exit 1
352 ;;
353
354 makedepend)
355 "$@" || exit $?
356 # Remove any Libtool call
357 if test "$libtool" = yes; then
358 while test $1 != '--mode=compile'; do
359 shift
360 done
361 shift
362 fi
363 # X makedepend
364 shift
365 cleared=no
366 for arg in "$@"; do
367 case $cleared in
368 no)
369 set ""; shift
370 cleared=yes ;;
371 esac
372 case "$arg" in
373 -D*|-I*)
374 set fnord "$@" "$arg"; shift ;;
375 # Strip any option that makedepend may not understand. Remove
376 # the object too, otherwise makedepend will parse it as a source file.
377 -*|$object)
378 ;;
379 *)
380 set fnord "$@" "$arg"; shift ;;
381 esac
382 done
383 obj_suffix="`echo $object | sed 's/^.*\././'`"
384 touch "$tmpdepfile"
385 ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
386 rm -f "$depfile"
387 cat < "$tmpdepfile" > "$depfile"
388 sed '1,2d' "$tmpdepfile" | tr ' ' '
389 ' | \
390 ## Some versions of the HPUX 10.20 sed can't process this invocation
391 ## correctly. Breaking it into two sed invocations is a workaround.
392 sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
393 rm -f "$tmpdepfile" "$tmpdepfile".bak
394 ;;
395
396 cpp)
397 # Important note: in order to support this mode, a compiler *must*
398 # always write the preprocessed file to stdout.
399 "$@" || exit $?
400
401 # Remove the call to Libtool.
402 if test "$libtool" = yes; then
403 while test $1 != '--mode=compile'; do
404 shift
405 done
406 shift
407 fi
408
409 # Remove `-o $object'.
410 IFS=" "
411 for arg
412 do
413 case $arg in
414 -o)
415 shift
416 ;;
417 $object)
418 shift
419 ;;
420 *)
421 set fnord "$@" "$arg"
422 shift # fnord
423 shift # $arg
424 ;;
425 esac
426 done
427
428 "$@" -E |
429 sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
430 sed '$ s: \\$::' > "$tmpdepfile"
431 rm -f "$depfile"
432 echo "$object : \\" > "$depfile"
433 cat < "$tmpdepfile" >> "$depfile"
434 sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
435 rm -f "$tmpdepfile"
436 ;;
437
438 msvisualcpp)
439 # Important note: in order to support this mode, a compiler *must*
440 # always write the preprocessed file to stdout, regardless of -o,
441 # because we must use -o when running libtool.
442 "$@" || exit $?
443 IFS=" "
444 for arg
445 do
446 case "$arg" in
447 "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
448 set fnord "$@"
449 shift
450 shift
451 ;;
452 *)
453 set fnord "$@" "$arg"
454 shift
455 shift
456 ;;
457 esac
458 done
459 "$@" -E |
460 sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
461 rm -f "$depfile"
462 echo "$object : \\" > "$depfile"
463 . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
464 echo " " >> "$depfile"
465 . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
466 rm -f "$tmpdepfile"
467 ;;
468
469 none)
470 exec "$@"
471 ;;
472
473 *)
474 echo "Unknown depmode $depmode" 1>&2
475 exit 1
476 ;;
477 esac
478
479 exit 0
File grammar.y changed (mode: 100644) (index edde71a..a196771)
9 9 #include <string.h> #include <string.h>
10 10 #include "misc.h" #include "misc.h"
11 11
12 #define YYMAXDEPTH 25000
13
14 int yyerrorline (int errorlevel, int line, char *s)
15 {
16 if (showerrorlevel[errorlevel]) {
17 haderrors++;
18 printf ("%s:%d: %s\n", curfile, line, s);
19 return 0;
20 }
21 else
22 ignorederrors++;
23 }
24
25 int yyerrorex (int errorlevel, char *s)
26 {
27 if (showerrorlevel[errorlevel]) {
28 haderrors++;
29 printf ("%s:%d: %s\n", curfile, lineno, s);
30 return 0;
31 }
32 else
33 ignorederrors++;
34 }
35
12 36 int yyerror (char *s) /* Called by yyparse on error */ int yyerror (char *s) /* Called by yyparse on error */
13 37 { {
14 haderrors++;
15 printf ("%s:%d: %s\n", curfile, lineno, s);
16 return 0;
38 yyerrorex(0, s);
17 39 } }
18 40
19 41 int main(int argc, char **argv) int main(int argc, char **argv)
 
... ... int main(int argc, char **argv)
31 53 } }
32 54 if (!haderrors && didparse) { if (!haderrors && didparse) {
33 55 printf("Parse successful: %8d lines: %s\n", totlines, "<total>"); printf("Parse successful: %8d lines: %s\n", totlines, "<total>");
56 if (ignorederrors)
57 printf("%d errors ignored", ignorederrors);
58
34 59 return 0; return 0;
35 60 } }
36 61 else { else {
 
... ... int main(int argc, char **argv)
38 63 printf("Parse failed: %d error%s total\n", haderrors, haderrors == 1 ? "" : "s"); printf("Parse failed: %d error%s total\n", haderrors, haderrors == 1 ? "" : "s");
39 64 else else
40 65 printf("Parse failed\n"); printf("Parse failed\n");
66 if (ignorederrors)
67 printf("%d errors ignored", ignorederrors);
41 68 return 1; return 1;
42 69 } }
43 70 } }
 
... ... int main(int argc, char **argv)
112 139
113 140 %right EQUALS %right EQUALS
114 141 %left AND OR %left AND OR
115 %left NOT
116 142 %left LESS GREATER EQCOMP NEQ LEQ GEQ %left LESS GREATER EQCOMP NEQ LEQ GEQ
143 %left NOT
117 144 %left MINUS PLUS %left MINUS PLUS
118 145 %left TIMES DIV %left TIMES DIV
119 146
120 147 %% %%
121 148
122 program: topscope
123 | program topscope
149 program: topscopes globdefs topscopes funcdefns
150 ;
151
152 topscopes: topscope
153 | topscopes topscope
154 ;
155
156 topscope: typedefs
157 | funcdecls
124 158 ; ;
125 159
126 topscope: typedefs
127 | globdefs
128 | funcdecls
129 | funcdefn
160 funcdefns: /* empty */
161 | funcdefns funcdefn
130 162 ; ;
131 163
132 164 globdefs: /* empty */ globdefs: /* empty */
133 | GLOBALS vardecls ENDGLOBALS
165 | GLOBALS NEWLINE vardecls ENDGLOBALS endglobalsmarker
166 | GLOBALS vardecls ENDGLOBALS endglobalsmarker {yyerrorline(0, lineno - 1, "Missing linebreak before global declaration");}
167 ;
168
169 endglobalsmarker: /* empty */ {afterendglobals = 1}
134 170 ; ;
135 171
136 172 vardecls: /* empty */ vardecls: /* empty */
 
... ... expr: intexpr { $$.ty = gInteger; }
162 198 | realexpr { $$.ty = gReal; } | realexpr { $$.ty = gReal; }
163 199 | stringexpr { $$.ty = gString; } | stringexpr { $$.ty = gString; }
164 200 | boolexpr { $$.ty = gBoolean; } | boolexpr { $$.ty = gBoolean; }
165 | FUNCTION rid { if (lookup(&functions, $2.str) == NULL)
166 yyerror("Undefined function.");
201 | FUNCTION rid { if (lookup(&functions, $2.str) == NULL) {
202 char ebuf[1024];
203 sprintf(ebuf, "Undefined function %s", $2.str);
204 yyerrorex(3, ebuf);
205 }
167 206 $$.ty = gCode; $$.ty = gCode;
168 207 } }
169 208 | TNULL { $$.ty = gNull; } | TNULL { $$.ty = gNull; }
 
... ... expr: intexpr { $$.ty = gInteger; }
173 212 | expr GREATER expr { checkcomparison($1.ty, $3.ty); $$.ty = gBoolean; } | expr GREATER expr { checkcomparison($1.ty, $3.ty); $$.ty = gBoolean; }
174 213 | expr EQCOMP expr { checkeqtest($1.ty, $3.ty); $$.ty = gBoolean; } | expr EQCOMP expr { checkeqtest($1.ty, $3.ty); $$.ty = gBoolean; }
175 214 | expr NEQ expr { checkeqtest($1.ty, $3.ty); $$.ty = gBoolean; } | expr NEQ expr { checkeqtest($1.ty, $3.ty); $$.ty = gBoolean; }
176 | expr AND expr { canconvert($1.ty, gBoolean); canconvert($3.ty, gBoolean); $$.ty = gBoolean; }
177 | expr OR expr { canconvert($1.ty, gBoolean); canconvert($3.ty, gBoolean); $$.ty = gBoolean; }
178 | NOT expr { canconvert($2.ty, gBoolean); $$.ty = gBoolean; }
215 | expr AND expr { canconvert($1.ty, gBoolean, 0); canconvert($3.ty, gBoolean, 0); $$.ty = gBoolean; }
216 | expr OR expr { canconvert($1.ty, gBoolean, 0); canconvert($3.ty, gBoolean, 0); $$.ty = gBoolean; }
217 | NOT expr { canconvert($2.ty, gBoolean, 0); $$.ty = gBoolean; }
179 218 | expr TIMES expr { $$.ty = binop($1.ty, $3.ty); } | expr TIMES expr { $$.ty = binop($1.ty, $3.ty); }
180 219 | expr DIV expr { $$.ty = binop($1.ty, $3.ty); } | expr DIV expr { $$.ty = binop($1.ty, $3.ty); }
181 220 | expr MINUS expr { $$.ty = binop($1.ty, $3.ty); } | expr MINUS expr { $$.ty = binop($1.ty, $3.ty); }
 
... ... expr: intexpr { $$.ty = gInteger; }
186 225 $$.ty = binop($1.ty, $3.ty); } $$.ty = binop($1.ty, $3.ty); }
187 226 | MINUS expr { isnumeric($2.ty); $$.ty = $2.ty; } | MINUS expr { isnumeric($2.ty); $$.ty = $2.ty; }
188 227 | LPAREN expr RPAREN { $$.ty = $2.ty; } | LPAREN expr RPAREN { $$.ty = $2.ty; }
189 | funccall { $$.ty = $1.ty; }
228 | funccall { $$.ty = $1.ty }
190 229 | rid LBRACKET expr RBRACKET { | rid LBRACKET expr RBRACKET {
191 230 const struct typeandname *tan = getVariable($1.str); const struct typeandname *tan = getVariable($1.str);
192 if (!tan->isarray) {
193 char ebuf[1024];
194 sprintf(ebuf, "%s not an array", $1.str);
195 yyerror(ebuf);
196 $$.ty = tan->ty;
197 }
198 else {
199 canconvert($3.ty, gInteger);
200 $$.ty = tan->ty;
231 if (tan->ty != gAny) {
232 if (!tan->isarray) {
233 char ebuf[1024];
234 sprintf(ebuf, "%s not an array", $1.str);
235 yyerrorex(3, ebuf);
236 }
237 else {
238 canconvert($3.ty, gInteger, 0);
239 }
201 240 } }
241 $$.ty = tan->ty;
202 242 } }
203 243 | rid { | rid {
204 $$.ty = getVariable($1.str)->ty;
244 const struct typeandname *tan = getVariable($1.str);
245 if (tan->lineno == lineno && tan->fn == fno) {
246 char ebuf[1024];
247 sprintf(ebuf, "Use of variable %s before its declaration", $1.str);
248 yyerrorex(3, ebuf);
249 } else if (islinebreak && tan->lineno == lineno - 1 && tan->fn == fno) {
250 char ebuf[1024];
251 sprintf(ebuf, "Use of variable %s before its declaration", $1.str);
252 yyerrorline(3, lineno - 1, ebuf);
253 } else if (tan->isarray) {
254 char ebuf[1024];
255 sprintf(ebuf, "Index missing for array variable %s", $1.str);
256 yyerrorex(3, ebuf);
257 }
258 $$.ty = tan->ty;
205 259 } }
206 ;
207
208 funccall: rid LPAREN exprlist RPAREN {
260 | expr EQUALS expr {yyerrorex(0, "Single = in expression, should probably be =="); checkeqtest($1.ty, $3.ty); $$.ty = gBoolean;}
261 | LPAREN expr {yyerrorex(0, "Mssing ')'"); $$.ty = $2.ty;}
262
263 // incomplete expressions
264 | expr LEQ { checkcomparisonsimple($1.ty); yyerrorex(3, "Missing expression for comparison"); $$.ty = gBoolean; }
265 | expr GEQ { checkcomparisonsimple($1.ty); yyerrorex(3, "Missing expression for comparison"); $$.ty = gBoolean; }
266 | expr LESS { checkcomparisonsimple($1.ty); yyerrorex(3, "Missing expression for comparison"); $$.ty = gBoolean; }
267 | expr GREATER { checkcomparisonsimple($1.ty); yyerrorex(3, "Missing expression for comparison"); $$.ty = gBoolean; }
268 | expr EQCOMP { yyerrorex(3, "Missing expression for comparison"); $$.ty = gBoolean; }
269 | expr NEQ { yyerrorex(3, "Missing expression for comparison"); $$.ty = gBoolean; }
270 | expr AND { canconvert($1.ty, gBoolean, 0); yyerrorex(3, "Missing expression for logical and"); $$.ty = gBoolean; }
271 | expr OR { canconvert($1.ty, gBoolean, 0); yyerrorex(3, "Missing expression for logical or"); $$.ty = gBoolean; }
272 | NOT { yyerrorex(3, "Missing expression for logical negation"); $$.ty = gBoolean; }
273 ;
274
275 funccall: rid LPAREN exprlistcompl RPAREN {
209 276 struct funcdecl *fd = lookup(&functions, $1.str); struct funcdecl *fd = lookup(&functions, $1.str);
210 277 if (fd == NULL) { if (fd == NULL) {
211 278 char ebuf[1024]; char ebuf[1024];
212 279 sprintf(ebuf, "Undeclared function %s", $1.str); sprintf(ebuf, "Undeclared function %s", $1.str);
213 yyerror(ebuf);
280 yyerrorex(3, ebuf);
214 281 $$.ty = gNull; $$.ty = gNull;
282 } else {
283 if (inconstant && !(fd->isconst)) {
284 char ebuf[1024];
285 sprintf(ebuf, "Call to non-constant function %s in constant function", $1.str);
286 yyerrorex(3, ebuf);
287 }
288 checkParameters(fd->p, $3.pl);
289 $$.ty = fd->ret;
215 290 } }
216 else {
291 }
292 | rid LPAREN exprlistcompl NEWLINE{
293 yyerrorex(0, "Missing ')'");
294 struct funcdecl *fd = lookup(&functions, $1.str);
295 if (fd == NULL) {
296 char ebuf[1024];
297 sprintf(ebuf, "Undeclared function %s", $1.str);
298 yyerrorex(3, ebuf);
299 $$.ty = gNull;
300 } else if (inconstant && !(fd->isconst)) {
301 char ebuf[1024];
302 sprintf(ebuf, "Call to non-constant function %s in constant function", $1.str);
303 yyerrorex(3, ebuf);
304 $$.ty = gNull;
305 } else {
217 306 checkParameters(fd->p, $3.pl); checkParameters(fd->p, $3.pl);
218 307 $$.ty = fd->ret; $$.ty = fd->ret;
219 }
308 }
220 309 } }
221 310 ; ;
222 311
223 exprlist: /* empty */ { $$.pl = newparamlist(); }
224 | expr { $$.pl = newparamlist(); addParam($$.pl, newtypeandname($1.ty, "")); }
225 | expr COMMA exprlist { $$.pl = $3.pl; addParam($$.pl, newtypeandname($1.ty, "")); }
312 exprlistcompl: /* empty */ { $$.pl = newparamlist(); }
313 | exprlist { $$.pl = $1.pl; }
314 ;
315
316 exprlist: expr { $$.pl = newparamlist(); addParam($$.pl, newtypeandname($1.ty, "")); }
317 | expr COMMA exprlist { $$.pl = $3.pl; addParam($$.pl, newtypeandname($1.ty, "")); }
226 318 ; ;
227 319
228 320
 
... ... intexpr: INTLIT { $$.ty = gInteger; }
246 338
247 339 funcdecl: nativefuncdecl { $$.fd = $1.fd; } funcdecl: nativefuncdecl { $$.fd = $1.fd; }
248 340 | CONSTANT nativefuncdecl { $$.fd = $2.fd; } | CONSTANT nativefuncdecl { $$.fd = $2.fd; }
341 | funcdefncore { $$.fd = $1.fd; }
249 342 ; ;
250 343
251 344 nativefuncdecl: NATIVE rid TAKES optparam_list RETURNS opttype nativefuncdecl: NATIVE rid TAKES optparam_list RETURNS opttype
252 {
253 $$.fd = newfuncdecl();
345 {
346 if (lookup(&locals, $2.str) || lookup(&params, $2.str) || lookup(&globals, $2.str)) {
347 char buf[1024];
348 sprintf(buf, "%s already defined as variable", $2.str);
349 yyerrorex(3, buf);
350 } else if (lookup(&types, $2.str)) {
351 char buf[1024];
352 sprintf(buf, "%s already defined as type", $2.str);
353 yyerrorex(3, buf);
354 }
355 $$.fd = newfuncdecl();
254 356 $$.fd->name = strdup($2.str); $$.fd->name = strdup($2.str);
255 357 $$.fd->p = $4.pl; $$.fd->p = $4.pl;
256 358 $$.fd->ret = $6.ty; $$.fd->ret = $6.ty;
359 //printf("***** %s = %s\n", $2.str, $$.fd->ret->typename);
360 $$.fd->isconst = isconstant;
257 361 put(&functions, $$.fd->name, $$.fd); put(&functions, $$.fd->name, $$.fd);
258 362 //showfuncdecl($$.fd); //showfuncdecl($$.fd);
259 363 } }
260 364 ; ;
261 365
262 funcdefn: funcbegin localblock codeblock funcend
366 funcdefn: NEWLINE
367 | funcdefncore
368 | statement { yyerrorex(0, "Statement outside of function"); }
263 369 ; ;
264 370
265 funcend: ENDFUNCTION { clear(&params); clear(&locals); curtab = &globals; }
371 funcdefncore: funcbegin localblock codeblock funcend { if(retval != gNothing) { if ($3.ty == gAny || $3.ty == gNone) yyerrorline(1, lineno - 1, "Missing return"); else canconvertreturn($3.ty, retval, -1); } }
372 | funcbegin localblock codeblock {yyerrorex(0, "Missing endfunction"); clear(&params); clear(&locals); curtab = &globals;}
266 373 ; ;
267 374
268 funcbegin: FUNCTION rid TAKES optparam_list RETURNS opttype {
269 struct typeandname *tan;
375 funcend: ENDFUNCTION { clear(&params); clear(&locals); curtab = &globals; inblock = 0; inconstant = 0; }
376 ;
377
378 returnorreturns: RETURNS
379 | RETURN {yyerrorex(3,"Expected \"returns\" instead of \"return\"");}
380 ;
381
382 funcbegin: FUNCTION rid TAKES optparam_list returnorreturns opttype {
383 if (lookup(&locals, $2.str) || lookup(&params, $2.str) || lookup(&globals, $2.str)) {
384 char buf[1024];
385 sprintf(buf, "%s already defined as variable", $2.str);
386 yyerrorex(3, buf);
387 } else if (lookup(&types, $2.str)) {
388 char buf[1024];
389 sprintf(buf, "%s already defined as type", $2.str);
390 yyerrorex(3, buf);
391 }
392 inconstant = 0;
270 393 curtab = &locals; curtab = &locals;
271 $$.fd = newfuncdecl();
394 $$.fd = newfuncdecl();
272 395 $$.fd->name = strdup($2.str); $$.fd->name = strdup($2.str);
273 396 $$.fd->p = $4.pl; $$.fd->p = $4.pl;
274 397 $$.fd->ret = $6.ty; $$.fd->ret = $6.ty;
398 $$.fd->isconst = 0;
275 399 put(&functions, $$.fd->name, $$.fd); put(&functions, $$.fd->name, $$.fd);
276 tan = $4.pl->head;
277 for (;tan; tan=tan->next)
400 struct typeandname *tan = $4.pl->head;
401 for (;tan; tan=tan->next) {
402 tan->lineno = lineno;
403 tan->fn = fno;
278 404 put(&params, strdup(tan->name), newtypeandname(tan->ty, tan->name)); put(&params, strdup(tan->name), newtypeandname(tan->ty, tan->name));
405 if (lookup(&functions, tan->name)) {
406 char buf[1024];
407 sprintf(buf, "%s already defined as function", tan->name);
408 yyerrorex(3, buf);
409 } else if (lookup(&types, tan->name)) {
410 char buf[1024];
411 sprintf(buf, "%s already defined as type", tan->name);
412 yyerrorex(3, buf);
413 }
414 }
279 415 retval = $$.fd->ret; retval = $$.fd->ret;
416 inblock = 1;
417 inloop = 0;
280 418 //showfuncdecl($$.fd); //showfuncdecl($$.fd);
281 419 } }
282 ;
283
284 codeblock: /* empty */
285 | statement codeblock
286 ;
287
288 statement: NEWLINE
289 | CALL funccall
290 | IF expr THEN codeblock elsifseq elseseq ENDIF { canconvert($2.ty, gBoolean); }
291 | SET rid EQUALS expr NEWLINE { canconvert($4.ty, getVariable($2.str)->ty); if (getVariable($2.str)->isconst) { char ebuf[1024];
292 sprintf(ebuf, "Cannot assign to constant %s\n", $2.str);
293 yyerror(ebuf);
294 }
420 | CONSTANT FUNCTION rid TAKES optparam_list returnorreturns opttype {
421 if (lookup(&locals, $3.str) || lookup(&params, $3.str) || lookup(&globals, $3.str)) {
422 char buf[1024];
423 sprintf(buf, "%s already defined as variable", $3.str);
424 yyerrorex(3, buf);
425 } else if (lookup(&types, $3.str)) {
426 char buf[1024];
427 sprintf(buf, "%s already defined as type", $3.str);
428 yyerrorex(3, buf);
429 }
430 inconstant = 1;
431 curtab = &locals;
432 $$.fd = newfuncdecl();
433 $$.fd->name = strdup($3.str);
434 $$.fd->p = $5.pl;
435 $$.fd->ret = $7.ty;
436 $$.fd->isconst = 1;
437 put(&functions, $$.fd->name, $$.fd);
438 struct typeandname *tan = $5.pl->head;
439 for (;tan; tan=tan->next) {
440 tan->lineno = lineno;
441 tan->fn = fno;
442 put(&params, strdup(tan->name), newtypeandname(tan->ty, tan->name));
443 if (lookup(&functions, tan->name)) {
444 char buf[1024];
445 sprintf(buf, "%s already defined as function", tan->name);
446 yyerrorex(3, buf);
447 } else if (lookup(&types, tan->name)) {
448 char buf[1024];
449 sprintf(buf, "%s already defined as type", tan->name);
450 yyerrorex(3, buf);
451 }
452 }
453 retval = $$.fd->ret;
454 inblock = 1;
455 inloop = 0;
456 //showfuncdecl($$.fd);
295 457 } }
296 | SET rid LBRACKET expr RBRACKET EQUALS expr {
297 canconvert($4.ty, gInteger);
298 canconvert($7.ty, getVariable($2.str)->ty); }
299 | LOOP loopbody ENDLOOP
300 | RETURN expr { canconvert($2.ty, retval); }
301 | RETURN { if (retval != gNothing) yyerror("Cannot return value from function that returns nothing"); }
302 | DEBUG statement
303 | error
304 ;
305
306 loopbody: /* empty */
307 | loopstatement loopbody
308 ;
309
310 loopstatement: statement
311 | EXITWHEN expr { canconvert($2.ty, gBoolean); }
312 ;
313
314 elseseq: /* empty */
315 | ELSE codeblock
316 458 ; ;
317 459
318 elsifseq: /* empty */
319 | ELSEIF expr THEN codeblock elsifseq { canconvert($2.ty, gBoolean); }
460 codeblock: /* empty */ {$$.ty = gAny;}
461 | statement codeblock { if($2.ty == gAny) $$.ty = $1.ty; else $$.ty = $2.ty;}
462 ;
463
464 statement: NEWLINE {$$.ty = gAny;}
465 | CALL funccall NEWLINE{ $$.ty = gNone;}
466 | IF expr THEN NEWLINE codeblock elsifseq elseseq ENDIF NEWLINE { canconvert($2.ty, gBoolean, -1); $$.ty = combinetype($6.ty!=gAny?combinetype($5.ty, $6.ty):$5.ty, $7.ty);}
467 | SET rid EQUALS expr NEWLINE { if (getVariable($2.str)->isarray) {
468 char ebuf[1024];
469 sprintf(ebuf, "Index missing for array variable %s", $2.str);
470 yyerrorline(3, lineno - 1, ebuf);
471 }
472 canconvert($4.ty, getVariable($2.str)->ty, -1);
473 $$.ty = gNone;
474 if (getVariable($2.str)->isconst) {
475 char ebuf[1024];
476 sprintf(ebuf, "Cannot assign to constant %s", $2.str);
477 yyerrorline(3, lineno - 1, ebuf);
478 }
479 if (inconstant)
480 validateGlobalAssignment($2.str);
481 }
482 | SET rid LBRACKET expr RBRACKET EQUALS expr NEWLINE{
483 const struct typeandname *tan = getVariable($2.str);
484 if (tan->ty != gAny) {
485 canconvert($4.ty, gInteger, -1); $$.ty = gNone;
486 if (!tan->isarray) {
487 char ebuf[1024];
488 sprintf(ebuf, "%s is not an array", $2.str);
489 yyerrorline(3, lineno - 1, ebuf);
490 }
491 canconvert($7.ty, tan->ty, -1);
492 if (inconstant)
493 validateGlobalAssignment($2.str);
494 }
495 }
496 | loopstart NEWLINE codeblock loopend NEWLINE {$$.ty = $3.ty;}
497 | loopstart NEWLINE codeblock {$$.ty = $3.ty; yyerrorex(0, "Missing endloop");}
498 | EXITWHEN expr NEWLINE { canconvert($2.ty, gBoolean, -1); if (!inloop) yyerrorline(0, lineno - 1, "Exitwhen outside of loop"); $$.ty = gNone;}
499 | RETURN expr NEWLINE { $$.ty = $2.ty; if(retval == gNothing) yyerrorline(1, lineno - 1, "Cannot return value from function that returns nothing");}
500 | RETURN NEWLINE { if (retval != gNothing) yyerrorline(1, lineno - 1, "Return nothing in function that should return value"); $$.ty = gNone;}
501 | DEBUG statement {$$.ty = gNone;}
502 | IF expr THEN NEWLINE codeblock elsifseq elseseq {canconvert($2.ty, gBoolean, 0); $$.ty = combinetype($6.ty!=gAny?combinetype($5.ty, $6.ty):$5.ty, $7.ty); yyerrorex(0, "Missing endif");}
503 | IF expr NEWLINE{canconvert($2.ty, gBoolean, -1); $$.ty = gAny; yyerrorex(0, "Missing then or non valid expression");}
504 | SET funccall NEWLINE{$$.ty = gNone; yyerrorline(0, lineno - 1, "Call expected instead of set");}
505 | lvardecl {yyerrorex(0, "Local declaration after first statement");}
506 | error {$$.ty = gNone; }
507 ;
508
509 loopstart: LOOP {inloop++;}
510 ;
511
512 loopend: ENDLOOP {inloop--;}
513 ;
514
515 elseseq: /* empty */ {$$.ty = gNone;}
516 | ELSE NEWLINE codeblock {$$.ty = $3.ty;}
517 ;
518
519 elsifseq: /* empty */ {$$.ty = gAny;}
520 | ELSEIF expr THEN NEWLINE codeblock elsifseq { canconvert($2.ty, gBoolean, -1); $$.ty = $6.ty!=gAny?combinetype($5.ty, $6.ty):$5.ty;}
320 521 ; ;
321 522
322 523 optparam_list: param_list { $$.pl = $1.pl; } optparam_list: param_list { $$.pl = $1.pl; }
 
... ... rid: ID
336 537 ; ;
337 538
338 539 vartypedecl: type rid { vartypedecl: type rid {
540 if (lookup(&functions, $2.str)) {
541 char buf[1024];
542 sprintf(buf, "Symbol %s already defined as function", $2.str);
543 yyerrorex(3, buf);
544 } else if (lookup(&types, $2.str)) {
545 char buf[1024];
546 sprintf(buf, "Symbol %s already defined as type", $2.str);
547 yyerrorex(3, buf);
548 }
339 549 struct typeandname *tan = newtypeandname($1.ty, $2.str); struct typeandname *tan = newtypeandname($1.ty, $2.str);
340 put(curtab, $2.str, tan);
341 $$.ty = tan->ty; }
342 | CONSTANT type rid {
550 $$.str = $2.str;
551 struct typeandname *existing = lookup(&locals, $2.str);
552 if (!existing) {
553 existing = lookup(&params, $2.str);
554 if (!existing)
555 existing = lookup(&globals, $2.str);
556 }
557 if (existing) {
558 tan->lineno = existing->lineno;
559 tan->fn = existing->fn;
560 } else {
561 tan->lineno = lineno;
562 tan->fn = fno;
563 }
564 put(curtab, $2.str, tan); }
565 | CONSTANT type rid {
566 if (afterendglobals) {
567 yyerrorex(3, "Local constants are not allowed");
568 }
569 if (lookup(&functions, $3.str)) {
570 char buf[1024];
571 sprintf(buf, "Symbol %s already defined as function", $3.str);
572 yyerrorex(3, buf);
573 } else if (lookup(&types, $3.str)) {
574 char buf[1024];
575 sprintf(buf, "Symbol %s already defined as type", $3.str);
576 yyerrorex(3, buf);
577 }
343 578 struct typeandname *tan = newtypeandname($2.ty, $3.str); struct typeandname *tan = newtypeandname($2.ty, $3.str);
579 $$.str = $3.str;
344 580 tan->isconst = 1; tan->isconst = 1;
345 put(curtab, $3.str, tan);
346 $$.ty = tan->ty; }
581 struct typeandname *existing = lookup(&locals, $3.str);
582 if (!existing) {
583 existing = lookup(&params, $3.str);
584 if (!existing)
585 existing = lookup(&globals, $3.str);
586 }
587 if (existing) {
588 tan->lineno = existing->lineno;
589 tan->fn = existing->fn;
590 } else {
591 tan->lineno = lineno;
592 tan->fn = fno;
593 }
594 put(curtab, $3.str, tan); }
347 595 | type ARRAY rid { | type ARRAY rid {
596 if (lookup(&functions, $3.str)) {
597 char buf[1024];
598 sprintf(buf, "Symbol %s already defined as function", $3.str);
599 yyerrorex(3, buf);
600 } else if (lookup(&types, $3.str)) {
601 char buf[1024];
602 sprintf(buf, "Symbol %s already defined as type", $3.str);
603 yyerrorex(3, buf);
604 }
605 if (getPrimitiveAncestor($1.ty) == gCode)
606 yyerrorex(3, "Code arrays are not allowed");
348 607 struct typeandname *tan = newtypeandname($1.ty, $3.str); struct typeandname *tan = newtypeandname($1.ty, $3.str);
608 $$.str = $3.str;
349 609 tan->isarray = 1; tan->isarray = 1;
350 put(curtab, $3.str, tan);
351 $$.ty = tan->ty; }
610 struct typeandname *existing = lookup(&locals, $3.str);
611 if (!existing) {
612 char buf[1024];
613 existing = lookup(&params, $3.str);
614 if (afterendglobals && existing) {
615 sprintf(buf, "Symbol %s already defined as function parameter", $3.str);
616 yyerrorex(3, buf);
617 }
618 if (!existing) {
619 existing = lookup(&globals, $3.str);
620 if (afterendglobals && existing) {
621 sprintf(buf, "Symbol %s already defined as global variable", $3.str);
622 yyerrorex(3, buf);
623 }
624 }
625 }
626 if (existing) {
627 tan->lineno = existing->lineno;
628 tan->fn = existing->fn;
629 } else {
630 tan->lineno = lineno;
631 tan->fn = fno;
632 }
633 put(curtab, $3.str, tan); }
634
635 // using "type" as variable name
636 | type TYPE {
637 yyerrorex(3, "Invalid variable name \"type\"");
638 struct typeandname *tan = newtypeandname($1.ty, "type");
639 $$.str = "type";
640 struct typeandname *existing = lookup(&locals, "type");
641 if (!existing) {
642 existing = lookup(&params, "type");
643 if (!existing)
644 existing = lookup(&globals, "type");
645 }
646 if (existing) {
647 tan->lineno = existing->lineno;
648 tan->fn = existing->fn;
649 } else {
650 tan->lineno = lineno;
651 tan->fn = fno;
652 }
653 put(curtab, "type", tan); }
654 | CONSTANT type TYPE {
655 if (afterendglobals) {
656 yyerrorex(3, "Local constants are not allowed");
657 }
658 yyerrorex(3, "Invalid variable name \"type\"");
659 struct typeandname *tan = newtypeandname($2.ty, "type");
660 $$.str = "type";
661 tan->isconst = 1;
662 struct typeandname *existing = lookup(&locals, "type");
663 if (!existing) {
664 existing = lookup(&params, "type");
665 if (!existing)
666 existing = lookup(&globals, "type");
667 }
668 if (existing) {
669 tan->lineno = existing->lineno;
670 tan->fn = existing->fn;
671 } else {
672 tan->lineno = lineno;
673 tan->fn = fno;
674 }
675 put(curtab, "type", tan); }
676 | type ARRAY TYPE {
677 yyerrorex(3, "Invalid variable name \"type\"");
678 struct typeandname *tan = newtypeandname($1.ty, "type");
679 $$.str = "type";
680 tan->isarray = 1;
681 struct typeandname *existing = lookup(&locals, "type");
682 if (!existing) {
683 existing = lookup(&params, "type");
684 if (!existing)
685 existing = lookup(&globals, "type");
686 }
687 if (existing) {
688 tan->lineno = existing->lineno;
689 tan->fn = existing->fn;
690 } else {
691 tan->lineno = lineno;
692 tan->fn = fno;
693 }
694 put(curtab, "type", tan); }
352 695 ; ;
353 696
354 697 localblock: /* empty */ localblock: /* empty */
355 698 | lvardecl localblock | lvardecl localblock
699 | NEWLINE localblock
356 700 ; ;
357 701
358 702 lvardecl: LOCAL vardecl { } lvardecl: LOCAL vardecl { }
359 | NEWLINE
360 ;
361
362 vardecl: vartypedecl { $$.ty = gNothing; }
363 | vartypedecl EQUALS expr {
364 canconvert($3.ty, $1.ty);
365 $$.ty = gNothing;
366 }
703 | CONSTANT LOCAL vardecl { yyerrorex(3, "Local variables can not be declared constant"); }
704 | typedef { yyerrorex(3,"Types can not be extended inside functions"); }
705 ;
706
707 vardecl: vartypedecl NEWLINE {
708 const struct typeandname *tan = getVariable($1.str);
709 if (tan->isconst) {
710 yyerrorline(3, lineno - 1, "Constants must be initialized");
711 }
712 $$.ty = gNothing;
713 }
714 | vartypedecl EQUALS expr NEWLINE {
715 const struct typeandname *tan = getVariable($1.str);
716 if (tan->isarray) {
717 yyerrorex(3, "Arrays cannot be directly initialized");
718 }
719 canconvert($3.ty, tan->ty, -1);
720 $$.ty = gNothing;
721 }
367 722 | error | error
368 723 ; ;
369 724
370 725 typedef: TYPE rid EXTENDS type { typedef: TYPE rid EXTENDS type {
371 726 if (lookup(&types, $2.str)) { if (lookup(&types, $2.str)) {
372 727 char buf[1024]; char buf[1024];
373 sprintf(buf, "Multiply defined type: %s", $2.str);
374 yyerror(buf);
728 sprintf(buf, "Multiply defined type %s", $2.str);
729 yyerrorex(3, buf);
730 } else if (lookup(&functions, $2.str)) {
731 char buf[1024];
732 sprintf(buf, "%s already defined as function", $2.str);
733 yyerrorex(3, buf);
375 734 } }
376 735 else else
377 736 put(&types, $2.str, newtypenode($2.str, $4.ty)); put(&types, $2.str, newtypenode($2.str, $4.ty));
 
... ... type: primtype { $$.ty = $1.ty; }
385 744 | rid { | rid {
386 745 if (lookup(&types, $1.str) == NULL) { if (lookup(&types, $1.str) == NULL) {
387 746 char buf[1024]; char buf[1024];
388 sprintf(buf, "Undefined type: %s", $1.str);
389 yyerror(buf);
747 sprintf(buf, "Undefined type %s", $1.str);
748 yyerrorex(3, buf);
390 749 $$.ty = gNull; $$.ty = gNull;
391 750 } }
392 751 else else
File install-sh deleted (index 6ce63b9..0000000)
1 #!/bin/sh
2 #
3 # install - install a program, script, or datafile
4 #
5 # This originates from X11R5 (mit/util/scripts/install.sh), which was
6 # later released in X11R6 (xc/config/util/install.sh) with the
7 # following copyright and license.
8 #
9 # Copyright (C) 1994 X Consortium
10 #
11 # Permission is hereby granted, free of charge, to any person obtaining a copy
12 # of this software and associated documentation files (the "Software"), to
13 # deal in the Software without restriction, including without limitation the
14 # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
15 # sell copies of the Software, and to permit persons to whom the Software is
16 # furnished to do so, subject to the following conditions:
17 #
18 # The above copyright notice and this permission notice shall be included in
19 # all copies or substantial portions of the Software.
20 #
21 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22 # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23 # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24 # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
25 # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
26 # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27 #
28 # Except as contained in this notice, the name of the X Consortium shall not
29 # be used in advertising or otherwise to promote the sale, use or other deal-
30 # ings in this Software without prior written authorization from the X Consor-
31 # tium.
32 #
33 #
34 # FSF changes to this file are in the public domain.
35 #
36 # Calling this script install-sh is preferred over install.sh, to prevent
37 # `make' implicit rules from creating a file called install from it
38 # when there is no Makefile.
39 #
40 # This script is compatible with the BSD install script, but was written
41 # from scratch. It can only install one file at a time, a restriction
42 # shared with many OS's install programs.
43
44
45 # set DOITPROG to echo to test this script
46
47 # Don't use :- since 4.3BSD and earlier shells don't like it.
48 doit="${DOITPROG-}"
49
50
51 # put in absolute paths if you don't have them in your path; or use env. vars.
52
53 mvprog="${MVPROG-mv}"
54 cpprog="${CPPROG-cp}"
55 chmodprog="${CHMODPROG-chmod}"
56 chownprog="${CHOWNPROG-chown}"
57 chgrpprog="${CHGRPPROG-chgrp}"
58 stripprog="${STRIPPROG-strip}"
59 rmprog="${RMPROG-rm}"
60 mkdirprog="${MKDIRPROG-mkdir}"
61
62 transformbasename=""
63 transform_arg=""
64 instcmd="$mvprog"
65 chmodcmd="$chmodprog 0755"
66 chowncmd=""
67 chgrpcmd=""
68 stripcmd=""
69 rmcmd="$rmprog -f"
70 mvcmd="$mvprog"
71 src=""
72 dst=""
73 dir_arg=""
74
75 while [ x"$1" != x ]; do
76 case $1 in
77 -c) instcmd=$cpprog
78 shift
79 continue;;
80
81 -d) dir_arg=true
82 shift
83 continue;;
84
85 -m) chmodcmd="$chmodprog $2"
86 shift
87 shift
88 continue;;
89
90 -o) chowncmd="$chownprog $2"
91 shift
92 shift
93 continue;;
94
95 -g) chgrpcmd="$chgrpprog $2"
96 shift
97 shift
98 continue;;
99
100 -s) stripcmd=$stripprog
101 shift
102 continue;;
103
104 -t=*) transformarg=`echo $1 | sed 's/-t=//'`
105 shift
106 continue;;
107
108 -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
109 shift
110 continue;;
111
112 *) if [ x"$src" = x ]
113 then
114 src=$1
115 else
116 # this colon is to work around a 386BSD /bin/sh bug
117 :
118 dst=$1
119 fi
120 shift
121 continue;;
122 esac
123 done
124
125 if [ x"$src" = x ]
126 then
127 echo "$0: no input file specified" >&2
128 exit 1
129 else
130 :
131 fi
132
133 if [ x"$dir_arg" != x ]; then
134 dst=$src
135 src=""
136
137 if [ -d "$dst" ]; then
138 instcmd=:
139 chmodcmd=""
140 else
141 instcmd=$mkdirprog
142 fi
143 else
144
145 # Waiting for this to be detected by the "$instcmd $src $dsttmp" command
146 # might cause directories to be created, which would be especially bad
147 # if $src (and thus $dsttmp) contains '*'.
148
149 if [ -f "$src" ] || [ -d "$src" ]
150 then
151 :
152 else
153 echo "$0: $src does not exist" >&2
154 exit 1
155 fi
156
157 if [ x"$dst" = x ]
158 then
159 echo "$0: no destination specified" >&2
160 exit 1
161 else
162 :
163 fi
164
165 # If destination is a directory, append the input filename; if your system
166 # does not like double slashes in filenames, you may need to add some logic
167
168 if [ -d "$dst" ]
169 then
170 dst=$dst/`basename "$src"`
171 else
172 :
173 fi
174 fi
175
176 ## this sed command emulates the dirname command
177 dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
178
179 # Make sure that the destination directory exists.
180 # this part is taken from Noah Friedman's mkinstalldirs script
181
182 # Skip lots of stat calls in the usual case.
183 if [ ! -d "$dstdir" ]; then
184 defaultIFS='
185 '
186 IFS="${IFS-$defaultIFS}"
187
188 oIFS=$IFS
189 # Some sh's can't handle IFS=/ for some reason.
190 IFS='%'
191 set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
192 IFS=$oIFS
193
194 pathcomp=''
195
196 while [ $# -ne 0 ] ; do
197 pathcomp=$pathcomp$1
198 shift
199
200 if [ ! -d "$pathcomp" ] ;
201 then
202 $mkdirprog "$pathcomp"
203 else
204 :
205 fi
206
207 pathcomp=$pathcomp/
208 done
209 fi
210
211 if [ x"$dir_arg" != x ]
212 then
213 $doit $instcmd "$dst" &&
214
215 if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dst"; else : ; fi &&
216 if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dst"; else : ; fi &&
217 if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dst"; else : ; fi &&
218 if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dst"; else : ; fi
219 else
220
221 # If we're going to rename the final executable, determine the name now.
222
223 if [ x"$transformarg" = x ]
224 then
225 dstfile=`basename "$dst"`
226 else
227 dstfile=`basename "$dst" $transformbasename |
228 sed $transformarg`$transformbasename
229 fi
230
231 # don't allow the sed command to completely eliminate the filename
232
233 if [ x"$dstfile" = x ]
234 then
235 dstfile=`basename "$dst"`
236 else
237 :
238 fi
239
240 # Make a couple of temp file names in the proper directory.
241
242 dsttmp=$dstdir/_inst.$$_
243 rmtmp=$dstdir/_rm.$$_
244
245 # Trap to clean up temp files at exit.
246
247 trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0
248 trap '(exit $?); exit' 1 2 13 15
249
250 # Move or copy the file name to the temp name
251
252 $doit $instcmd "$src" "$dsttmp" &&
253
254 # and set any options; do chmod last to preserve setuid bits
255
256 # If any of these fail, we abort the whole thing. If we want to
257 # ignore errors from any of these, just make sure not to ignore
258 # errors from the above "$doit $instcmd $src $dsttmp" command.
259
260 if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp"; else :;fi &&
261 if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp"; else :;fi &&
262 if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dsttmp"; else :;fi &&
263 if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp"; else :;fi &&
264
265 # Now remove or move aside any old file at destination location. We try this
266 # two ways since rm can't unlink itself on some systems and the destination
267 # file might be busy for other reasons. In this case, the final cleanup
268 # might fail but the new file should still install successfully.
269
270 {
271 if [ -f "$dstdir/$dstfile" ]
272 then
273 $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null ||
274 $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null ||
275 {
276 echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
277 (exit 1); exit
278 }
279 else
280 :
281 fi
282 } &&
283
284 # Now rename the file to the real destination.
285
286 $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
287
288 fi &&
289
290 # The final little trick to "correctly" pass the exit status to the exit trap.
291
292 {
293 (exit 0); exit
294 }
File misc.c changed (mode: 100644) (index 450dca9..bb24b4a)
11 11 #include "grammar.tab.h" #include "grammar.tab.h"
12 12 #include "misc.h" #include "misc.h"
13 13
14 #define VERSIONSTR "0.91"
14 #define VERSIONSTR "1.0f"
15 #define ERRORLEVELNUM 4
15 16
17 int fno;
16 18 int lineno; int lineno;
17 19 int haderrors; int haderrors;
20 int ignorederrors;
18 21 int totlines; int totlines;
22 int islinebreak;
23 int isconstant;
24 int inconstant;
25 int inblock;
26 int strict;
19 27 int didparse; int didparse;
28 int inloop;
29 int afterendglobals;
30 int *showerrorlevel;
20 31
21 32 int hashfunc(const char *name); int hashfunc(const char *name);
22 33 struct hashtable functions, globals, locals, params, types; struct hashtable functions, globals, locals, params, types;
23 34 struct hashtable *curtab; struct hashtable *curtab;
24 struct typenode *retval;
35 struct typenode *retval, *retcheck;
25 36 char *curfile; char *curfile;
26 struct typenode *gInteger, *gReal, *gBoolean, *gString, *gCode, *gHandle, *gNothing, *gNull;
37 struct typenode *gInteger, *gReal, *gBoolean, *gString, *gCode, *gHandle, *gNothing, *gNull, *gAny, *gNone;
27 38
28 39 void addPrimitiveType(const char *name, struct typenode **toSave) void addPrimitiveType(const char *name, struct typenode **toSave)
29 40 { {
 
... ... void addPrimitiveType(const char *name, struct typenode **toSave)
32 43
33 44 void init(int argc, char **argv) void init(int argc, char **argv)
34 45 { {
46 int i;
35 47 addPrimitiveType("handle", &gHandle); addPrimitiveType("handle", &gHandle);
36 48 addPrimitiveType("integer", &gInteger); addPrimitiveType("integer", &gInteger);
37 49 addPrimitiveType("real", &gReal); addPrimitiveType("real", &gReal);
 
... ... void init(int argc, char **argv)
40 52 addPrimitiveType("code", &gCode); addPrimitiveType("code", &gCode);
41 53 gNothing = newtypenode("nothing", NULL); gNothing = newtypenode("nothing", NULL);
42 54 gNull = newtypenode("null", NULL); gNull = newtypenode("null", NULL);
55 gAny = newtypenode("any", NULL);
56 gNone = newtypenode("none", NULL);
43 57 curtab = &globals; curtab = &globals;
58 fno = 0;
59 strict = 0;
60 haderrors = 0;
61 ignorederrors = 0;
62 islinebreak = 1;
63 inblock = 0;
64 isconstant = 0;
65 inconstant = 0;
66 showerrorlevel = malloc(ERRORLEVELNUM*sizeof(int));
67 for(i=0;i<ERRORLEVELNUM;i++)
68 showerrorlevel[i] = 1;
44 69 if (lookup(&functions, "ConvertRace") != NULL) { if (lookup(&functions, "ConvertRace") != NULL) {
45 70 printf("Major error!!\n"); printf("Major error!!\n");
46 71 exit(0); exit(0);
 
... ... struct typenode *getFunctionType(const char *funcname)
53 78 struct funcdecl *result; struct funcdecl *result;
54 79 result = lookup(&functions, funcname); result = lookup(&functions, funcname);
55 80 if (result) return result->ret; if (result) return result->ret;
56 sprintf(ebuf, "Undeclared function: %s\n", funcname);
57 yyerror(ebuf);
81 sprintf(ebuf, "Undeclared function: %s", funcname);
82 yyerrorline(3, islinebreak ? lineno - 1 : lineno, ebuf);
58 83 } }
59 84
60 85 const struct typeandname *getVariable(const char *varname) const struct typeandname *getVariable(const char *varname)
 
... ... const struct typeandname *getVariable(const char *varname)
67 92 if (result) return result; if (result) return result;
68 93 result = lookup(&globals, varname); result = lookup(&globals, varname);
69 94 if (result) return result; if (result) return result;
70 sprintf(ebuf, "Undeclared variable: %s\n", varname);
71 yyerror(ebuf);
72 // Assume it's an int
73 put(curtab, varname, newtypeandname(gInteger, varname));
95 sprintf(ebuf, "Undeclared variable %s", varname);
96 yyerrorline(2, islinebreak ? lineno - 1 : lineno, ebuf);
97 // Store it as unidentified variable
98 put(curtab, varname, newtypeandname(gAny, varname));
74 99 return getVariable(varname); return getVariable(varname);
75 100 } }
76 101
102 void validateGlobalAssignment(const char *varname) {
103 char ebuf[1024];
104 struct typeandname *result;
105 result = lookup(&globals, varname);
106 if (result) {
107 sprintf(ebuf, "Assignment to global variable %s in constant function", varname);
108 yyerrorline(2, lineno - 1, ebuf);
109 }
110 }
111
77 112 struct typeandname *newtypeandname(const struct typenode *ty, const char *name) struct typeandname *newtypeandname(const struct typenode *ty, const char *name)
78 113 { {
79 114 struct typeandname *tan = calloc(sizeof(struct typeandname), 1); struct typeandname *tan = calloc(sizeof(struct typeandname), 1);
 
... ... void put(struct hashtable *h, const char *name, void *val)
197 232 if (lookup(h, name) != NULL) { if (lookup(h, name) != NULL) {
198 233 char ebuf[1024]; char ebuf[1024];
199 234 sprintf(ebuf, "Symbol %s multiply defined", name); sprintf(ebuf, "Symbol %s multiply defined", name);
200 yyerror(ebuf);
235 yyerrorline(3, islinebreak ? lineno - 1 : lineno, ebuf);
201 236 return; return;
202 237 } }
203 238 hf = hashfunc(name); hf = hashfunc(name);
 
... ... struct typenode *binop(const struct typenode *a, const struct typenode *b)
230 265 b = getPrimitiveAncestor(b); b = getPrimitiveAncestor(b);
231 266 if (a == gInteger && b == gInteger) if (a == gInteger && b == gInteger)
232 267 return gInteger; return gInteger;
268 if (a == gAny)
269 return b;
270 if (b == gAny)
271 return a;
233 272 if ((a != gInteger && a != gReal) || (b != gInteger && b != gReal)) { if ((a != gInteger && a != gReal) || (b != gInteger && b != gReal)) {
234 yyerror("Bad types for binary operator");
273 yyerrorline(3, islinebreak ? lineno - 1 : lineno, "Bad types for binary operator");
235 274 } }
236 275 return gReal; return gReal;
237 276 } }
238 277
239 int canconvert(const struct typenode *ufrom, const struct typenode *uto)
278 int canconvert(const struct typenode *ufrom, const struct typenode *uto, const int linemod)
240 279 { {
241 280 const struct typenode *from = ufrom, *to = uto; const struct typenode *from = ufrom, *to = uto;
242 281 char ebuf[1024]; char ebuf[1024];
243 #if 0
244 if (lineno > 2400 && lineno < 2500) {
245 yydebug = 1;
246 fprintf(stderr, "LINE: %d\n", lineno);
282
283 if (from == NULL || to == NULL) return 0;
284 if (from == gAny || to == gAny) return 1;
285 if (isDerivedFrom(from, to))
286 return 1;
287 //bug allows downcasting erroneously
288 //if (isDerivedFrom(to, from))
289 // return 1;
290 if (from->typename == NULL || to->typename == NULL) return 0;
291 if (from == gNone || to == gNone) return 0;
292 from = getPrimitiveAncestor(from);
293 to = getPrimitiveAncestor(to);
294 if ((from == gNull) && (to != gInteger) && (to != gReal) && (to != gBoolean))
295 return 1;
296 if (strict) {
297 if (ufrom == gInteger && (to == gReal || to == gInteger))
298 return 1;
299 if (ufrom == to && (ufrom == gBoolean || ufrom == gString || ufrom == gReal || ufrom == gInteger || ufrom == gCode))
300 return 1;
301 } else {
302 if (from == gInteger && (to == gReal || to == gInteger))
303 return 1;
304 if (from == to && (from == gBoolean || from == gString || from == gReal || from == gInteger || from == gCode))
305 return 1;
247 306 } }
248 else
249 yydebug = 0;
250 #endif
307
308 sprintf(ebuf, "Cannot convert %s to %s", ufrom->typename, uto->typename);
309 yyerrorline(3, lineno + linemod, ebuf);
310 }
311
312 int canconvertreturn(const struct typenode *ufrom, const struct typenode *uto, const int linemod)
313 {
314 const struct typenode *from = ufrom, *to = uto;
315 char ebuf[1024];
251 316 if (from == NULL || to == NULL) return 0; if (from == NULL || to == NULL) return 0;
317 if (from == gAny || to == gAny) return 1;
252 318 if (isDerivedFrom(from, to)) if (isDerivedFrom(from, to))
253 319 return 1; return 1;
254 320 /* Blizzard bug: allows downcasting erroneously */ /* Blizzard bug: allows downcasting erroneously */
255 321 /* TODO: get Blizzard to fix this in Blizzard.j and the language */ /* TODO: get Blizzard to fix this in Blizzard.j and the language */
256 if (isDerivedFrom(to, from))
257 return 1;
322 // if (isDerivedFrom(to, from))
323 // return 1;
258 324 if (from->typename == NULL || to->typename == NULL) return 0; if (from->typename == NULL || to->typename == NULL) return 0;
325 if (from == gNone || to == gNone) return 0;
259 326 from = getPrimitiveAncestor(from); from = getPrimitiveAncestor(from);
260 327 to = getPrimitiveAncestor(to); to = getPrimitiveAncestor(to);
261 if (from == gNull && (to == gHandle || to == gString || to == gCode))
328
329 // can't return integer when it expects a real (added 9.5.2005)
330 if ((to == gReal) && (from == gInteger)) {
331 sprintf(ebuf, "Cannot convert returned value from %s to %s", from->typename, to->typename);
332 yyerrorline(1, lineno + linemod, ebuf);
333 return 0;
334 }
335
336 // can't return null when it expects integer, real or boolean (added 9.5.2005)
337 if ((from == gNull) && (to != gInteger) && (to != gReal) && (to != gBoolean))
262 338 return 1; return 1;
263 if ((from == gInteger || from == gReal) &&
264 (to == gInteger || to == gReal))
339
340 if (strict) {
341 if (isDerivedFrom(uto, ufrom))
342 return 1;
343 } else if (from == to)
265 344 return 1; return 1;
266 sprintf(ebuf, "Cannot convert %s to %s", ufrom->typename, uto->typename);
267 yyerror(ebuf);
345
346 sprintf(ebuf, "Cannot convert returned value from %s to %s", ufrom->typename, uto->typename);
347 yyerrorline(1, lineno + linemod, ebuf);
348 }
349
350 struct typenode *combinetype(struct typenode *n1, struct typenode *n2) {
351 if ((n1 == gNone) || (n2 == gNone)) return gNone;
352 if (n1 == n2) return n1;
353 if (n1 == gNull)
354 return n2;
355 if (n2 == gNull)
356 return n1;
357 n1 = getPrimitiveAncestor(n1);
358 n2 = getPrimitiveAncestor(n2);
359 if (n1 == n2) return n1;
360 if (n1 == gNull)
361 return n2;
362 if (n2 == gNull)
363 return n1;
364 if ((n1 == gInteger) && (n2 == gReal))
365 return gReal;
366 if ((n1 == gReal) && (n2 == gInteger))
367 return gInteger;
368 // printf("Cannot convert %s to %s", n1->typename, n2->typename);
369 return gNone;
268 370 } }
269 371
270 372 void checkParameters(const struct paramlist *func, const struct paramlist *inp) void checkParameters(const struct paramlist *func, const struct paramlist *inp)
 
... ... void checkParameters(const struct paramlist *func, const struct paramlist *inp)
275 377 for (;;) { for (;;) {
276 378 if (fi == NULL && pi == NULL) if (fi == NULL && pi == NULL)
277 379 return; return;
278 if (fi == NULL && pi != NULL)
279 yyerror("Too many arguments passed to function");
280 if (fi != NULL && pi == NULL)
281 yyerror("Not enough arguments passed to function");
282 canconvert(pi->ty, fi->ty);
380 if (fi == NULL && pi != NULL) {
381 yyerrorex(3, "Too many arguments passed to function");
382 return;
383 }
384 if (fi != NULL && pi == NULL) {
385 yyerrorex(3, "Not enough arguments passed to function");
386 return;
387 }
388 canconvert(pi->ty, fi->ty, 0);
283 389 pi = pi->next; pi = pi->next;
284 390 fi = fi->next; fi = fi->next;
285 391 } }
 
... ... void checkParameters(const struct paramlist *func, const struct paramlist *inp)
288 394 void isnumeric(const struct typenode *ty) void isnumeric(const struct typenode *ty)
289 395 { {
290 396 ty = getPrimitiveAncestor(ty); ty = getPrimitiveAncestor(ty);
291 if (!(ty == gInteger || ty == gReal))
292 yyerror("Cannot be converted to numeric type");
397 if (!(ty == gInteger || ty == gReal || ty == gAny))
398 yyerrorline(3, islinebreak ? lineno - 1 : lineno, "Cannot be converted to numeric type");
399 }
400
401 void checkcomparisonsimple(const struct typenode *a) {
402 const struct typenode *pa;
403 pa = getPrimitiveAncestor(a);
404 if (pa == gString || pa == gHandle || pa == gCode || pa == gBoolean) {
405 yyerrorex(3, "Comparing the order/size of 2 variables only works on reals and integers");
406 return;
407 }
408 if (pa == gNull)
409 yyerrorex(3, "Comparing null is not allowed");
293 410 } }
294 411
295 412 void checkcomparison(const struct typenode *a, const struct typenode *b) void checkcomparison(const struct typenode *a, const struct typenode *b)
 
... ... void checkcomparison(const struct typenode *a, const struct typenode *b)
297 414 const struct typenode *pa, *pb; const struct typenode *pa, *pb;
298 415 pa = getPrimitiveAncestor(a); pa = getPrimitiveAncestor(a);
299 416 pb = getPrimitiveAncestor(b); pb = getPrimitiveAncestor(b);
300 if (((pa == gString || pa == gHandle || pa == gCode) && pb == gNull) ||
301 (pa == gNull && (pb == gString || pb == gCode || pb == gHandle)) ||
302 (pa == gNull && pb == gNull))
303 return;
304 if ((pa == gReal || pa == gInteger) &&
305 (pb == gReal || pb == gInteger))
417 if (pa == gString || pa == gHandle || pa == gCode || pa == gBoolean || pb == gString || pb == gCode || pb == gHandle || pb == gBoolean) {
418 yyerrorex(3, "Comparing the order/size of 2 variables only works on reals and integers");
306 419 return; return;
307 if (a != b) {
308 yyerror("Objects being compared are not the same type.");
309 420 } }
421 if (pa == gNull && pb == gNull)
422 yyerrorex(3, "Comparing null is not allowed");
310 423 } }
311 424
312 425 void checkeqtest(const struct typenode *a, const struct typenode *b) void checkeqtest(const struct typenode *a, const struct typenode *b)
313 426 { {
314 checkcomparison(a, b);
427 const struct typenode *pa, *pb;
428 pa = getPrimitiveAncestor(a);
429 pb = getPrimitiveAncestor(b);
430 if ((pa == gInteger || pa == gReal) && (pb == gInteger || pb == gReal))
431 return;
432 if (pa == gNull || pb == gNull)
433 return;
434 if (pa != pb) {
435 yyerrorex(3, "Comparing two variables of different primitive types (except real and integer) is not allowed");
436 return;
437 }
315 438 } }
316 439
317 440 void dofile(FILE *fp, const char *name) void dofile(FILE *fp, const char *name)
318 441 { {
319 442 void *cur; void *cur;
320 int olderrs;
321 443 lineno = 1; lineno = 1;
322 olderrs = haderrors;
323 cur = (void *) yy_create_buffer(fp, BUFSIZE);
444 islinebreak = 1;
445 isconstant = 0;
446 inconstant = 0;
447 inblock = 0;
448 afterendglobals = 0;
449 int olderrs = haderrors;
450 cur = yy_create_buffer(fp, BUFSIZE);
324 451 yy_switch_to_buffer(cur); yy_switch_to_buffer(cur);
325 curfile = (char *) name;
452 curfile = name;
326 453 while (yyparse()) while (yyparse())
327 454 ; ;
328 455 if (olderrs == haderrors) if (olderrs == haderrors)
329 456 printf("Parse successful: %8d lines: %s\n", lineno, curfile); printf("Parse successful: %8d lines: %s\n", lineno, curfile);
330 457 else else
331 458 printf("%s failed with %d error%s\n", curfile, haderrors - olderrs,(haderrors == olderrs + 1) ? "" : "s"); printf("%s failed with %d error%s\n", curfile, haderrors - olderrs,(haderrors == olderrs + 1) ? "" : "s");
332 totlines += lineno;
459 totlines += lineno;
460 fno++;
333 461 } }
334 462
335 463 void printversion() void printversion()
336 464 { {
337 printf("pjass version %s by Rudi Cilibrasi\n", VERSIONSTR);
465 printf("Pjass version %s by Rudi Cilibrasi, modified by AIAndy and PitzerMike\n", VERSIONSTR);
338 466 } }
339 467
340 468 void doparse(int argc, char **argv) void doparse(int argc, char **argv)
341 469 { {
342 FILE *fp;
343 470 int i; int i;
344 471 for (i = 1; i < argc; ++i) { for (i = 1; i < argc; ++i) {
345 472 if (argv[i][0] == '-' && argv[i][1] == 0) { if (argv[i][0] == '-' && argv[i][1] == 0) {
 
... ... printf(
359 486 "pjass accepts some options:\n" "pjass accepts some options:\n"
360 487 "pjass -h Display this help\n" "pjass -h Display this help\n"
361 488 "pjass -v Display version information and exit\n" "pjass -v Display version information and exit\n"
489 "pjass -e1 Ignores error level 1\n"
490 "pjass +e2 Undo Ignore of error level 2\n"
491 "pjass +s Enable strict downcast evaluation\n"
492 "pjass -s Disable strict downcast evaluation\n"
362 493 "pjass - Read from standard input (may appear in a list)\n" "pjass - Read from standard input (may appear in a list)\n"
363 494 ); );
364 495 exit(0); exit(0);
 
... ... printf(
369 500 exit(0); exit(0);
370 501 continue; continue;
371 502 } }
503 if (strcmp(argv[i], "+s") == 0) {
504 strict = 1;
505 continue;
506 }
507 if (strcmp(argv[i], "-s") == 0) {
508 strict = 0;
509 continue;
510 }
511 if (argv[i][0] == '-' && argv[i][1] == 'e' && argv[i][2] >= '0' && argv[i][2] < ('0' + ERRORLEVELNUM)) {
512 showerrorlevel[argv[i][2]-'0'] = 0;
513 continue;
514 }
515 if (argv[i][0] == '+' && argv[i][1] == 'e' && argv[i][2] >= '0' && argv[i][2] < ('0' + ERRORLEVELNUM)) {
516 showerrorlevel[argv[i][2]-'0'] = 1;
517 continue;
518 }
519 FILE *fp;
372 520 fp = fopen(argv[i], "rb"); fp = fopen(argv[i], "rb");
373 521 if (fp == NULL) { if (fp == NULL) {
374 522 printf("Error: Cannot open %s\n", argv[i]); printf("Error: Cannot open %s\n", argv[i]);
File misc.h changed (mode: 100644) (index e75a46a..7cc4f38)
... ... struct typenode {
18 18 struct typeandname { struct typeandname {
19 19 const struct typenode *ty; const struct typenode *ty;
20 20 const char *name; const char *name;
21 int isarray, isconst;
21 int isarray, isconst, lineno, fn;
22 22 struct typeandname *next; struct typeandname *next;
23 23 }; };
24 24
 
... ... struct paramlist {
29 29
30 30 struct funcdecl { struct funcdecl {
31 31 char *name; char *name;
32 int isconst;
32 33 struct paramlist *p; struct paramlist *p;
33 34 struct typenode *ret; struct typenode *ret;
34 35 }; };
 
... ... void addParam(struct paramlist *tl, struct typeandname *tan);
68 69 struct funcdecl *newfuncdecl(); struct funcdecl *newfuncdecl();
69 70 void showfuncdecl(struct funcdecl *fd); void showfuncdecl(struct funcdecl *fd);
70 71 struct typenode *binop(const struct typenode *a, const struct typenode *b); struct typenode *binop(const struct typenode *a, const struct typenode *b);
71 int canconvert(const struct typenode *from, const struct typenode *to);
72 int canconvert(const struct typenode *from, const struct typenode *to, const int linemod);
73 int canconvertreturn(const struct typenode *from, const struct typenode *to, const int linemod);
74 struct typenode *combinetype(struct typenode *n1, struct typenode *n2);
72 75 void checkParameters(const struct paramlist *func, const struct paramlist *inp); void checkParameters(const struct paramlist *func, const struct paramlist *inp);
73
74 extern int lineno, totlines;
76 void validateGlobalAssignment(const char *varname);
77 void checkcomparisonsimple(const struct typenode *a);
78
79 extern int fno, lineno, totlines, islinebreak, isconstant, inblock, inconstant;
75 80 extern int haderrors; extern int haderrors;
81 extern int ignorederrors;
76 82 extern int didparse; extern int didparse;
83 extern int inloop;
84 extern int strict;
85 extern int afterendglobals;
77 86 extern char *yytext, *curfile; extern char *yytext, *curfile;
78 87 extern int yydebug; extern int yydebug;
88 int *showerrorlevel;
79 89 extern struct hashtable functions, globals, locals, params, types, *curtab; extern struct hashtable functions, globals, locals, params, types, *curtab;
80 extern struct typenode *gInteger, *gReal, *gBoolean, *gString, *gCode, *gHandle, *gNothing, *gNull;
90 extern struct typenode *gInteger, *gReal, *gBoolean, *gString, *gCode, *gHandle, *gNothing, *gNull, *gAny, *gNone;
81 91 extern struct typenode *retval; extern struct typenode *retval;
82 92 const struct typeandname *getVariable(const char *varname); const struct typeandname *getVariable(const char *varname);
83 93 void isnumeric(const struct typenode *ty); void isnumeric(const struct typenode *ty);
File missing deleted (index fc54c64..0000000)
1 #! /bin/sh
2 # Common stub for a few missing GNU programs while installing.
3 # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
4 # Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
5
6 # This program is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 2, or (at your option)
9 # any later version.
10
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
15
16 # You should have received a copy of the GNU General Public License
17 # along with this program; if not, write to the Free Software
18 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
19 # 02111-1307, USA.
20
21 # As a special exception to the GNU General Public License, if you
22 # distribute this file as part of a program that contains a
23 # configuration script generated by Autoconf, you may include it under
24 # the same distribution terms that you use for the rest of that program.
25
26 if test $# -eq 0; then
27 echo 1>&2 "Try \`$0 --help' for more information"
28 exit 1
29 fi
30
31 run=:
32
33 # In the cases where this matters, `missing' is being run in the
34 # srcdir already.
35 if test -f configure.ac; then
36 configure_ac=configure.ac
37 else
38 configure_ac=configure.in
39 fi
40
41 case "$1" in
42 --run)
43 # Try to run requested program, and just exit if it succeeds.
44 run=
45 shift
46 "$@" && exit 0
47 ;;
48 esac
49
50 # If it does not exist, or fails to run (possibly an outdated version),
51 # try to emulate it.
52 case "$1" in
53
54 -h|--h|--he|--hel|--help)
55 echo "\
56 $0 [OPTION]... PROGRAM [ARGUMENT]...
57
58 Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
59 error status if there is no known handling for PROGRAM.
60
61 Options:
62 -h, --help display this help and exit
63 -v, --version output version information and exit
64 --run try to run the given command, and emulate it if it fails
65
66 Supported PROGRAM values:
67 aclocal touch file \`aclocal.m4'
68 autoconf touch file \`configure'
69 autoheader touch file \`config.h.in'
70 automake touch all \`Makefile.in' files
71 bison create \`y.tab.[ch]', if possible, from existing .[ch]
72 flex create \`lex.yy.c', if possible, from existing .c
73 help2man touch the output file
74 lex create \`lex.yy.c', if possible, from existing .c
75 makeinfo touch the output file
76 tar try tar, gnutar, gtar, then tar without non-portable flags
77 yacc create \`y.tab.[ch]', if possible, from existing .[ch]"
78 ;;
79
80 -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
81 echo "missing 0.4 - GNU automake"
82 ;;
83
84 -*)
85 echo 1>&2 "$0: Unknown \`$1' option"
86 echo 1>&2 "Try \`$0 --help' for more information"
87 exit 1
88 ;;
89
90 aclocal*)
91 if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
92 # We have it, but it failed.
93 exit 1
94 fi
95
96 echo 1>&2 "\
97 WARNING: \`$1' is missing on your system. You should only need it if
98 you modified \`acinclude.m4' or \`${configure_ac}'. You might want
99 to install the \`Automake' and \`Perl' packages. Grab them from
100 any GNU archive site."
101 touch aclocal.m4
102 ;;
103
104 autoconf)
105 if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
106 # We have it, but it failed.
107 exit 1
108 fi
109
110 echo 1>&2 "\
111 WARNING: \`$1' is missing on your system. You should only need it if
112 you modified \`${configure_ac}'. You might want to install the
113 \`Autoconf' and \`GNU m4' packages. Grab them from any GNU
114 archive site."
115 touch configure
116 ;;
117
118 autoheader)
119 if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
120 # We have it, but it failed.
121 exit 1
122 fi
123
124 echo 1>&2 "\
125 WARNING: \`$1' is missing on your system. You should only need it if
126 you modified \`acconfig.h' or \`${configure_ac}'. You might want
127 to install the \`Autoconf' and \`GNU m4' packages. Grab them
128 from any GNU archive site."
129 files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
130 test -z "$files" && files="config.h"
131 touch_files=
132 for f in $files; do
133 case "$f" in
134 *:*) touch_files="$touch_files "`echo "$f" |
135 sed -e 's/^[^:]*://' -e 's/:.*//'`;;
136 *) touch_files="$touch_files $f.in";;
137 esac
138 done
139 touch $touch_files
140 ;;
141
142 automake*)
143 if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
144 # We have it, but it failed.
145 exit 1
146 fi
147
148 echo 1>&2 "\
149 WARNING: \`$1' is missing on your system. You should only need it if
150 you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
151 You might want to install the \`Automake' and \`Perl' packages.
152 Grab them from any GNU archive site."
153 find . -type f -name Makefile.am -print |
154 sed 's/\.am$/.in/' |
155 while read f; do touch "$f"; done
156 ;;
157
158 autom4te)
159 if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
160 # We have it, but it failed.
161 exit 1
162 fi
163
164 echo 1>&2 "\
165 WARNING: \`$1' is needed, and you do not seem to have it handy on your
166 system. You might have modified some files without having the
167 proper tools for further handling them.
168 You can get \`$1' as part of \`Autoconf' from any GNU
169 archive site."
170
171 file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
172 test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
173 if test -f "$file"; then
174 touch $file
175 else
176 test -z "$file" || exec >$file
177 echo "#! /bin/sh"
178 echo "# Created by GNU Automake missing as a replacement of"
179 echo "# $ $@"
180 echo "exit 0"
181 chmod +x $file
182 exit 1
183 fi
184 ;;
185
186 bison|yacc)
187 echo 1>&2 "\
188 WARNING: \`$1' is missing on your system. You should only need it if
189 you modified a \`.y' file. You may need the \`Bison' package
190 in order for those modifications to take effect. You can get
191 \`Bison' from any GNU archive site."
192 rm -f y.tab.c y.tab.h
193 if [ $# -ne 1 ]; then
194 eval LASTARG="\${$#}"
195 case "$LASTARG" in
196 *.y)
197 SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
198 if [ -f "$SRCFILE" ]; then
199 cp "$SRCFILE" y.tab.c
200 fi
201 SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
202 if [ -f "$SRCFILE" ]; then
203 cp "$SRCFILE" y.tab.h
204 fi
205 ;;
206 esac
207 fi
208 if [ ! -f y.tab.h ]; then
209 echo >y.tab.h
210 fi
211 if [ ! -f y.tab.c ]; then
212 echo 'main() { return 0; }' >y.tab.c
213 fi
214 ;;
215
216 lex|flex)
217 echo 1>&2 "\
218 WARNING: \`$1' is missing on your system. You should only need it if
219 you modified a \`.l' file. You may need the \`Flex' package
220 in order for those modifications to take effect. You can get
221 \`Flex' from any GNU archive site."
222 rm -f lex.yy.c
223 if [ $# -ne 1 ]; then
224 eval LASTARG="\${$#}"
225 case "$LASTARG" in
226 *.l)
227 SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
228 if [ -f "$SRCFILE" ]; then
229 cp "$SRCFILE" lex.yy.c
230 fi
231 ;;
232 esac
233 fi
234 if [ ! -f lex.yy.c ]; then
235 echo 'main() { return 0; }' >lex.yy.c
236 fi
237 ;;
238
239 help2man)
240 if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
241 # We have it, but it failed.
242 exit 1
243 fi
244
245 echo 1>&2 "\
246 WARNING: \`$1' is missing on your system. You should only need it if
247 you modified a dependency of a manual page. You may need the
248 \`Help2man' package in order for those modifications to take
249 effect. You can get \`Help2man' from any GNU archive site."
250
251 file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
252 if test -z "$file"; then
253 file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
254 fi
255 if [ -f "$file" ]; then
256 touch $file
257 else
258 test -z "$file" || exec >$file
259 echo ".ab help2man is required to generate this page"
260 exit 1
261 fi
262 ;;
263
264 makeinfo)
265 if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then
266 # We have makeinfo, but it failed.
267 exit 1
268 fi
269
270 echo 1>&2 "\
271 WARNING: \`$1' is missing on your system. You should only need it if
272 you modified a \`.texi' or \`.texinfo' file, or any other file
273 indirectly affecting the aspect of the manual. The spurious
274 call might also be the consequence of using a buggy \`make' (AIX,
275 DU, IRIX). You might want to install the \`Texinfo' package or
276 the \`GNU make' package. Grab either from any GNU archive site."
277 file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
278 if test -z "$file"; then
279 file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
280 file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
281 fi
282 touch $file
283 ;;
284
285 tar)
286 shift
287 if test -n "$run"; then
288 echo 1>&2 "ERROR: \`tar' requires --run"
289 exit 1
290 fi
291
292 # We have already tried tar in the generic part.
293 # Look for gnutar/gtar before invocation to avoid ugly error
294 # messages.
295 if (gnutar --version > /dev/null 2>&1); then
296 gnutar "$@" && exit 0
297 fi
298 if (gtar --version > /dev/null 2>&1); then
299 gtar "$@" && exit 0
300 fi
301 firstarg="$1"
302 if shift; then
303 case "$firstarg" in
304 *o*)
305 firstarg=`echo "$firstarg" | sed s/o//`
306 tar "$firstarg" "$@" && exit 0
307 ;;
308 esac
309 case "$firstarg" in
310 *h*)
311 firstarg=`echo "$firstarg" | sed s/h//`
312 tar "$firstarg" "$@" && exit 0
313 ;;
314 esac
315 fi
316
317 echo 1>&2 "\
318 WARNING: I can't seem to be able to run \`tar' with the given arguments.
319 You may want to install GNU tar or Free paxutils, or check the
320 command line arguments."
321 exit 1
322 ;;
323
324 *)
325 echo 1>&2 "\
326 WARNING: \`$1' is needed, and you do not seem to have it handy on your
327 system. You might have modified some files without having the
328 proper tools for further handling them. Check the \`README' file,
329 it often tells you about the needed prerequisites for installing
330 this package. You may also peek at any GNU archive site, in case
331 some other package would contain this missing \`$1' program."
332 exit 1
333 ;;
334 esac
335
336 exit 0
File mkinstalldirs deleted (index d2d5f21..0000000)
1 #! /bin/sh
2 # mkinstalldirs --- make directory hierarchy
3 # Author: Noah Friedman <friedman@prep.ai.mit.edu>
4 # Created: 1993-05-16
5 # Public domain
6
7 errstatus=0
8 dirmode=""
9
10 usage="\
11 Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
12
13 # process command line arguments
14 while test $# -gt 0 ; do
15 case $1 in
16 -h | --help | --h*) # -h for help
17 echo "$usage" 1>&2
18 exit 0
19 ;;
20 -m) # -m PERM arg
21 shift
22 test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
23 dirmode=$1
24 shift
25 ;;
26 --) # stop option processing
27 shift
28 break
29 ;;
30 -*) # unknown option
31 echo "$usage" 1>&2
32 exit 1
33 ;;
34 *) # first non-opt arg
35 break
36 ;;
37 esac
38 done
39
40 for file
41 do
42 if test -d "$file"; then
43 shift
44 else
45 break
46 fi
47 done
48
49 case $# in
50 0) exit 0 ;;
51 esac
52
53 case $dirmode in
54 '')
55 if mkdir -p -- . 2>/dev/null; then
56 echo "mkdir -p -- $*"
57 exec mkdir -p -- "$@"
58 fi
59 ;;
60 *)
61 if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
62 echo "mkdir -m $dirmode -p -- $*"
63 exec mkdir -m "$dirmode" -p -- "$@"
64 fi
65 ;;
66 esac
67
68 for file
69 do
70 set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
71 shift
72
73 pathcomp=
74 for d
75 do
76 pathcomp="$pathcomp$d"
77 case $pathcomp in
78 -*) pathcomp=./$pathcomp ;;
79 esac
80
81 if test ! -d "$pathcomp"; then
82 echo "mkdir $pathcomp"
83
84 mkdir "$pathcomp" || lasterr=$?
85
86 if test ! -d "$pathcomp"; then
87 errstatus=$lasterr
88 else
89 if test ! -z "$dirmode"; then
90 echo "chmod $dirmode $pathcomp"
91 lasterr=""
92 chmod "$dirmode" "$pathcomp" || lasterr=$?
93
94 if test ! -z "$lasterr"; then
95 errstatus=$lasterr
96 fi
97 fi
98 fi
99 fi
100
101 pathcomp="$pathcomp/"
102 done
103 done
104
105 exit $errstatus
106
107 # Local Variables:
108 # mode: shell-script
109 # sh-indentation: 2
110 # End:
111 # mkinstalldirs ends here
File notes.txt added (mode: 100644) (index 0000000..c9b2063)
1 To compile it get MinGW, which contains the gcc and install it as described here:
2
3 http://csjava.occ.cccd.edu/~gilberts/mingw/
4
5 After having added the mingw/bin directory to the PATH variable simply switch to your pjass development directory
6 in the command prompt and type mingw32-make to compile the executable.
7 You'll only want to edit misc.c, token.l, grammar.y, and pjass.res - all other files are generated.
8 If you're going to change token.l or grammar.y, you'll need flex/bison. Those are not included in MinGW.
9 You'll better get those from here: http://www.monmouth.com/~wstreett/lex-yacc/lex-yacc.html
10 Alternatively you can get Cygwin and add the cygwin/bin directory to your PATH variable.
11 Last but not least I've added version information to the executable, for compilation under Windows that is.
12 You'll need ResourceHacker which you can obtain here:
13
14 http://www.angusj.com/resourcehacker/
15
16 Extract it to a directory and update the RESHCK definition in the makefile to match that path.
17 If you're not compiling under Windows, remove the following line from the makefile:
18
19 $(RESHCK) -addskip $@.exe, $@.exe, resource.res ,,,
20
21 Current version is 1.0f, defined in pjass.res.
22
23 Additionally UPX is used to pack the executable. You can get it here:
24
25 http://upx.sourceforge.net
26
27 Good luck, PitzerMike
File pjass.res added (mode: 100644) (index 0000000..78a979f)
File readme.txt renamed from doc/readme.txt (similarity 87%) (mode: 100644) (index 89a12a0..135d265)
1 pjass
2 A lightweight and fast Jass2 parser for bison/yacc
3 by Rudi Cilibrasi
4 Sun Jun 8 00:51:53 CEST 2003
5 thanks to Jeff Pang for the handy documentation that this was based
6 on at http://jass.sourceforge.net/
7 Released under the BSD license
8
9 To use this program, list the files you would like to parse in order.
10 If you would like to parse from standard input (the keyboard), then
11 use - as an argument. If you supply no arguments to pjass, it will
12 parse the console standard input by default.
13
14 To test this program:
15 pjass common.j common.ai Blizzard.j
16
17 You can find news about this program and updates at
18 http://jass.sourceforge.net/
19
20 Please send comments to
21 Rudi Cilibrasi
22 cilibrar@gmail.com
23
1 pjass 17.01.2007 (v 1.0f)
2 A lightweight and fast Jass2 parser for bison/yacc
3 by Rudi Cilibrasi
4 Sun Jun 8 00:51:53 CEST 2003
5 thanks to Jeff Pang for the handy documentation that this was based
6 on at http://jass.sourceforge.net/
7 Released under the BSD license
8
9 To use this program, list the files you would like to parse in order.
10 If you would like to parse from standard input (the keyboard), then
11 use - as an argument. If you supply no arguments to pjass, it will
12 parse the console standard input by default.
13
14 To test this program:
15 pjass common.j common.ai Blizzard.j
16
17 You can find news about this program and updates at
18 http://www.wc3campaigns.net/showthread.php?t=75239 and
19 http://jass.sourceforge.net/
20
21 Please send comments to
22 Rudi Cilibrasi
23 cilibrar@ofb.net
File src/.cvsignore deleted (index e34017b..0000000)
1 .cvsignore
2 o
3 .deps
4 Makefile.in
5 Makefile
6 config.h
7 grammar.c
8 grammar.tab.c
9 grammar.tab.h
10 stamp-h1
11 token.c
File src/Makefile.am deleted (index 03e0bb9..0000000)
1
2 bin_PROGRAMS = pjass
3
4 AM_CFLAGS = @CYGOPTS@ -O2 -I.
5
6 pjass_SOURCES = \
7 grammar.y \
8 token.l \
9 misc.c \
10 misc.h
11
12 pjass_DEPENDENCIES = grammar.tab.h grammar.tab.c token.c token.o misc.o
13
14 token.c: token.l grammar.tab.h
15
16 grammar.tab.c: grammar.y
17 bison grammar.y
18
19 grammar.tab.h: grammar.y
20 bison -d grammar.y
21
22 clean:
23 -rm grammar.tab.c grammar.tab.h token.c misc.o grammar.o token.o grammar.c
File src/config.h.in deleted (index 2d7cd1d..0000000)
1 /* src/config.h.in. Generated from configure.ac by autoheader. */
2
3 /* Name of package */
4 #undef PACKAGE
5
6 /* Define to the address where bug reports for this package should be sent. */
7 #undef PACKAGE_BUGREPORT
8
9 /* Define to the full name of this package. */
10 #undef PACKAGE_NAME
11
12 /* Define to the full name and version of this package. */
13 #undef PACKAGE_STRING
14
15 /* Define to the one symbol short name of this package. */
16 #undef PACKAGE_TARNAME
17
18 /* Define to the version of this package. */
19 #undef PACKAGE_VERSION
20
21 /* Version number of package */
22 #undef VERSION
23
24 /* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a
25 `char[]'. */
26 #undef YYTEXT_POINTER
File token.l changed (mode: 100644) (index 7a81516..91ad22c)
... ... int yywrap()
18 18
19 19 %} %}
20 20
21 COMMENT [/][/].*\r?\n
22 NEWLINE \r?\n
21 COMMENT [/][/].*\r*\n
22 NEWLINE (\r*\n)|\r*
23 OCTDIGIT [0-7]
23 24 DIGIT [0-9] DIGIT [0-9]
24 ID [a-zA-Z_][a-zA-Z0-9_]*
25 HEXDIGIT [0-9a-fA-F]
26 ID [a-zA-Z]([a-zA-Z0-9_]*[a-zA-Z0-9])?
25 27 SPACE [ \t] SPACE [ \t]
28 TABS [\x01-\x09\x0B\x0C\x0E-\x1F]
26 29 CSTART [/][*] CSTART [/][*]
27 30 CEND [*][/] CEND [*][/]
28 31 STRINGSTART ["] STRINGSTART ["]
29 STILLSTRINGA [^"\\]
30 STILLSTRINGB [\\]["nrt]
31 STILLSTRINGC [\\][\\]
32 STILLSTRINGA [^"\\\r]
33 STILLSTRINGB [\\][btrnf"\\]
32 34 STRINGDONE ["] STRINGDONE ["]
33 UNITTYPEINT ['][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][']
35 FSTRINGSTART ["]
36 FSTILLSTRINGA [^"\\]
37 FSTILLSTRINGB [\\].
38 FSTRINGDONE ["]
39 UNITTYPEINT (['][\x01-\x26\x29-\x5B\x5D-\x7F]([\x01-\x26\x29-\x5B\x5D-\x7F][\x01-\x26\x29-\x5B\x5D-\x7F][\x01-\x26\x29-\x5B\x5D-\x7F])?['])
34 40
35 41 %% %%
36 42
37 {STRINGSTART}({STILLSTRINGA}|{STILLSTRINGB}|{STILLSTRINGC})*{STRINGDONE} { return STRINGLIT; }
38 {COMMENT} lineno++; return NEWLINE;
39 {CSTART}.*{CEND} { }
40 {NEWLINE} lineno++; return NEWLINE;
41 43
42 {DIGIT}+"."{DIGIT}* return REALLIT;
44 {STRINGSTART} { int prevChar = 0;
45 int curChar = input();
46 islinebreak = 0;
47 for (;;) {
48 if (prevChar == '\r' && curChar != '\r') {
49 lineno++; isconstant = 0;
50 }
51 if (curChar == EOF)
52 break;
53 else if (prevChar == '\\') {
54 if (curChar != 'b' && curChar != 't' && curChar != 'r' && curChar != 'n' && curChar != 'f' && curChar != '\"' && curChar != '\\')
55 yyerrorline(3, lineno, "Invalid escape character sequence");
56 curChar = 0;
57 } else if (curChar == '\"') {
58 break;
59 }
60 prevChar = curChar;
61 curChar = input();
62 }
63 return STRINGLIT;
64 }
65 {COMMENT} lineno++; islinebreak=1; isconstant=0; return NEWLINE;
66 {CSTART}.*{CEND} { }
67 {NEWLINE} lineno++; islinebreak=1; isconstant=0; return NEWLINE;
43 68
44 {DIGIT}+ return INTLIT;
69 {DIGIT}*"."{DIGIT}* return REALLIT;
70 "0"({OCTDIGIT}*("8"|"9"){OCTDIGIT}*)+ yyerrorline(3, lineno, "Invalid digit in octal integer notation"); return INTLIT;
71 ({DIGIT}+)|("0x"{HEXDIGIT}+) return INTLIT;
45 72
46 "if" return IF;
73 "if" if (!islinebreak) yyerrorline(3, lineno, "Missing linebreak before if"); islinebreak=0; return IF;
47 74 "not" return NOT; "not" return NOT;
48 75 "then" return THEN; "then" return THEN;
49 "type" return TYPE;
76 "type" if (!islinebreak) { char ebuf[1024]; sprintf(ebuf, "Missing linebreak before type declaration"); yyerrorline(3, lineno, ebuf); } islinebreak=0; return TYPE;
50 77 "extends" return EXTENDS; "extends" return EXTENDS;
51 "handle" return HANDLE;
52 "globals" return GLOBALS;
53 "endglobals" return ENDGLOBALS;
54 "constant" return CONSTANT;
55 "native" return NATIVE;
78 "handle" islinebreak=0; return HANDLE;
79 "globals" if (!islinebreak) { char ebuf[1024]; sprintf(ebuf, "Missing linebreak before globals block"); yyerrorline(3, lineno, ebuf); } islinebreak=0; inblock=1; return GLOBALS;
80 "endglobals" islinebreak=0; inblock=0; return ENDGLOBALS;
81 "constant" isconstant = islinebreak; islinebreak=0; return CONSTANT;
82 "native" if (!islinebreak && !isconstant) { char ebuf[1024]; sprintf(ebuf, "Missing linebreak before native declaration"); yyerrorline(3, lineno, ebuf); } islinebreak=0; return NATIVE;
56 83 "takes" return TAKES; "takes" return TAKES;
57 84 "returns" return RETURNS; "returns" return RETURNS;
58 "function" return FUNCTION;
59 "endfunction" return ENDFUNCTION;
60 "local" return LOCAL;
85 "function" if (!islinebreak && !isconstant && !inblock) { char ebuf[1024]; sprintf(ebuf, "Missing linebreak before function declaration"); yyerrorline(3, lineno, ebuf); } islinebreak=0; return FUNCTION;
86 "endfunction" islinebreak=0; return ENDFUNCTION;
87 "local" if (!islinebreak) { char ebuf[1024]; sprintf(ebuf, "Missing linebreak before local declaration"); yyerrorline(3, lineno, ebuf); } islinebreak=0; return LOCAL;
61 88 "array" return ARRAY; "array" return ARRAY;
62 "set" return SET;
63 "call" return CALL;
64 "else" return ELSE;
65 "elseif" return ELSEIF;
66 "endif" return ENDIF;
67 "loop" return LOOP;
68 "exitwhen" return EXITWHEN;
69 "return" return RETURN;
89 "set" if (!islinebreak) yyerrorline(3, lineno, "Missing linebreak before assignment"); islinebreak=0; return SET;
90 "call" if (!islinebreak) yyerrorline(3, lineno, "Missing linebreak before function call"); islinebreak=0; return CALL;
91 "else" if (!islinebreak) yyerrorline(3, lineno, "Missing linebreak before else"); islinebreak=0; return ELSE;
92 "elseif" if (!islinebreak) yyerrorline(3, lineno, "Missing linebreak before elseif"); islinebreak=0; return ELSEIF;
93 "endif" if (!islinebreak) yyerrorline(3, lineno, "Missing linebreak before endif"); islinebreak=0; return ENDIF;
94 "loop" if (!islinebreak) yyerrorline(3, lineno, "Missing linebreak before loop"); islinebreak=0; return LOOP;
95 "exitwhen" if (!islinebreak) yyerrorline(3, lineno, "Missing linebreak before exitwhen"); islinebreak=0; return EXITWHEN;
96 "return" if (!islinebreak) yyerrorline(3, lineno, "Missing linebreak before return"); islinebreak=0; return RETURN;
70 97 "debug" return DEBUG; "debug" return DEBUG;
71 "endloop" return ENDLOOP;
98 "endloop" if (!islinebreak) yyerrorline(3, lineno, "Missing linebreak before endloop"); islinebreak=0; return ENDLOOP;
72 99 "null" return TNULL; "null" return TNULL;
73 100 "true" return TTRUE; "true" return TTRUE;
74 101 "false" return TFALSE; "false" return TFALSE;
75 "code" return CODE;
76 "string" return STRING;
77 "integer" return INTEGER;
78 "real" return REAL;
79 "boolean" return BOOLEAN;
102 "code" islinebreak=0; return CODE;
103 "string" islinebreak=0; return STRING;
104 "integer" islinebreak=0; return INTEGER;
105 "real" islinebreak=0; return REAL;
106 "boolean" islinebreak=0; return BOOLEAN;
80 107 "nothing" return NOTHING; "nothing" return NOTHING;
81 108 "and" return AND; "and" return AND;
82 109 "or" return OR; "or" return OR;
 
... ... UNITTYPEINT ['][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][']
97 124 ">=" return GEQ; ">=" return GEQ;
98 125 "!=" return NEQ; "!=" return NEQ;
99 126
100 {ID} return ID;
127 {ID} islinebreak=0; return ID;
101 128 {UNITTYPEINT} return UNITTYPEINT; {UNITTYPEINT} return UNITTYPEINT;
102 129
103 130 "<"|">"|"!"|"["|"]"|"("|")"|"+"|"-"|"*"|"/"|"." return TNULL; "<"|">"|"!"|"["|"]"|"("|")"|"+"|"-"|"*"|"/"|"." return TNULL;
104 131
105 132 [ \t]+ /* eat up whitespace */ [ \t]+ /* eat up whitespace */
133 [\x01-\x09\x0B\x0C\x0E-\x1F]+ /* eat up tabs */
106 134
107 . printf( "Unrecognized character: %s\n", yytext );
135 . if (1) { char ebuf[1024]; sprintf(ebuf, "Unrecognized character %s (ASCII %d)", yytext, yytext[0] ); yyerrorline(3, lineno, ebuf); }
108 136
109 137 %% %%
110 138
Hints:
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://rocketgit.com/user/vrtc/pjass

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@ssh.rocketgit.com/user/vrtc/pjass

Clone this repository using git:
git clone git://git.rocketgit.com/user/vrtc/pjass

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a merge request:
... clone the repository ...
... make some changes and some commits ...
git push origin main