Merge lp:~davbo/ubuntu/trusty/jq/merge-debian-changes into lp:ubuntu/trusty/jq

Proposed by David King
Status: Rejected
Rejected by: Tyler Hicks
Proposed branch: lp:~davbo/ubuntu/trusty/jq/merge-debian-changes
Merge into: lp:ubuntu/trusty/jq
Diff against target: 56338 lines (+50308/-2769)
100 files modified
.pc/applied-patches (+0/-4)
.pc/disable-valgrind-tests.patch/configure.ac (+0/-65)
.pc/disable-valgrind-tests.patch/tests/run (+0/-3)
.pc/enable-full-manpages.patch/Makefile.am (+0/-123)
.pc/init-automake-once.patch/configure.ac (+0/-66)
.pc/remove-unecessary-rakefile-deps.patch/docs/Rakefile (+0/-146)
AUTHORS (+1/-0)
Makefile.am (+57/-25)
README (+35/-0)
README.md (+21/-9)
builtin.c (+207/-36)
builtin.h (+3/-14)
bytecode.c (+49/-17)
bytecode.h (+44/-4)
compile.c (+39/-45)
compile.h (+5/-8)
config.h.in (+0/-32)
config/ar-lib (+270/-0)
config/compile (+7/-3)
config/config.guess (+1558/-0)
config/config.sub (+1791/-0)
config/depcomp (+269/-186)
config/install-sh (+7/-7)
config/ltmain.sh (+9661/-0)
config/m4/find-func-no-libs.m4 (+8/-0)
config/m4/find-func-no-libs2.m4 (+62/-0)
config/m4/find-func.m4 (+9/-0)
config/m4/libtool.m4 (+7997/-0)
config/m4/ltoptions.m4 (+384/-0)
config/m4/ltsugar.m4 (+123/-0)
config/m4/ltversion.m4 (+23/-0)
config/m4/lt~obsolete.m4 (+98/-0)
config/m4/misc.m4 (+3/-0)
config/missing (+159/-275)
config/test-driver (+139/-0)
config/ylwrap (+115/-94)
configure (+15847/-0)
configure.ac (+65/-10)
debian/changelog (+7/-0)
debian/patches/big-endian-fix.patch (+42/-0)
debian/patches/disable-shared-lib.patch (+41/-0)
debian/patches/disable-valgrind-tests.patch (+7/-10)
debian/patches/enable-full-manpages.patch (+0/-46)
debian/patches/enable-manpages.patch (+18/-0)
debian/patches/heap-buffer-overflow.patch (+32/-0)
debian/patches/init-automake-once.patch (+0/-26)
debian/patches/patch-version-into-build.patch (+17/-0)
debian/patches/series (+6/-2)
debian/patches/stack-exhaustion.patch (+62/-0)
docs/Rakefile (+7/-2)
docs/content/1.tutorial/default.yml (+271/-190)
docs/content/2.download/default.yml (+1/-1)
docs/content/3.manual/manual.yml (+451/-49)
docs/content/index/index.yml (+6/-1)
docs/public/css/base.css (+77/-0)
docs/site.yml (+1/-1)
exec_stack.h (+82/-0)
execute.c (+359/-176)
execute.h (+0/-20)
forkable_stack.h (+0/-172)
frame_layout.h (+0/-104)
gen_utf8_tables.py (+0/-32)
jq.1 (+1937/-0)
jq.h (+23/-0)
jq.spec (+7/-2)
jq_parser.h (+2/-0)
jq_test.c (+38/-17)
jv.c (+544/-290)
jv.h (+57/-32)
jv_alloc.c (+118/-4)
jv_alloc.h (+2/-0)
jv_aux.c (+55/-27)
jv_aux.h (+0/-20)
jv_dtoa.c (+1/-1)
jv_dtoa.h (+1/-1)
jv_file.c (+46/-0)
jv_parse.c (+45/-5)
jv_parse.h (+0/-37)
jv_print.c (+44/-5)
jv_unicode.c (+43/-18)
jv_unicode.h (+1/-1)
jv_utf8_tables.h (+2/-0)
lexer.c (+2347/-0)
lexer.h (+362/-0)
lexer.l (+5/-1)
libm.h (+34/-0)
locfile.c (+103/-0)
locfile.h (+10/-62)
main.c (+91/-58)
opcode.c (+0/-31)
opcode.h (+0/-41)
opcode_list.h (+2/-0)
parser.c (+3235/-0)
parser.h (+174/-0)
parser.y (+181/-46)
scripts/crosscompile (+0/-31)
scripts/version (+5/-0)
setup.sh (+0/-32)
tests/all.test (+242/-1)
tests/run (+8/-2)
To merge this branch: bzr merge lp:~davbo/ubuntu/trusty/jq/merge-debian-changes
Reviewer Review Type Date Requested Status
Tyler Hicks Disapprove
Seth Arnold (community) Needs Fixing
Ubuntu Security Sponsors Team packaging security Pending
Review via email: mp+322510@code.launchpad.net

Description of the change

Merged the updated 1.4 jq package from Debian jessie and applied their patches which resolve the following CVEs:
 - CVE-2015-8863
 - CVE-2016-4074

Tested locally with the caveat that my machine is running 16.04 Xenial.

To post a comment you must log in.
9. By David King

Remove generated autotools files

Revision history for this message
Seth Arnold (seth-arnold) wrote :

Hello David,

Thanks for trying to address outstanding security issues in Ubuntu. However, this isn't really the best approach to take for these issues:

- Sadly this 'merge proposal' mechanism still exists even though it's entirely unused these days. Please prefer the method documented in https://wiki.ubuntu.com/SecurityTeam/UpdatePreparation#Packaging for security fixes.
- These changes are quite drastic for two security fixes; it's almost always better to find the smallest possible patches that address an issue rather than taking in wholesale new versions, because wholesale new versions are more likely to introduce bugs. Small security-only patches are also usually easier to review.

Thanks

review: Needs Fixing
Revision history for this message
Tyler Hicks (tyhicks) wrote :

Hello - I'm going to mark this merge as 'rejected' since there has been no progress since Seth's comment 3 months ago. We'd love for you to follow the instructions he provided and then we'd sponsor the resulting debdiff. Details are available here:

  https://wiki.ubuntu.com/SecurityTeam/SponsorsQueue#Notes_for_Contributors

review: Disapprove

Unmerged revisions

9. By David King

Remove generated autotools files

8. By David King

Update changelog

7. By David King

Pulled latest patch files from Debian jessie

6. By David King

New upstream release.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== removed file '.pc/applied-patches'
2--- .pc/applied-patches 2013-10-02 21:25:22 +0000
3+++ .pc/applied-patches 1970-01-01 00:00:00 +0000
4@@ -1,4 +0,0 @@
5-init-automake-once.patch
6-remove-unecessary-rakefile-deps.patch
7-enable-full-manpages.patch
8-disable-valgrind-tests.patch
9
10=== removed directory '.pc/disable-valgrind-tests.patch'
11=== removed file '.pc/disable-valgrind-tests.patch/configure.ac'
12--- .pc/disable-valgrind-tests.patch/configure.ac 2013-10-02 21:25:22 +0000
13+++ .pc/disable-valgrind-tests.patch/configure.ac 1970-01-01 00:00:00 +0000
14@@ -1,65 +0,0 @@
15-AC_INIT([jq], [1.3], [mu@netsoc.tcd.ie],
16- [jq], [http://stedolan.github.com/jq/])
17-
18-dnl Created autoconf implementation thompson@dtosolutions, 26NOV12
19-AC_PREREQ([2.61])
20-AC_CONFIG_AUX_DIR([config])
21-AM_INIT_AUTOMAKE([parallel-tests foreign -Wall])
22-AM_SILENT_RULES([yes])
23-AC_PROG_CC
24-AC_PROG_CC_STDC
25-AC_PROG_CPP_WERROR
26-AC_PROG_YACC
27-
28-AM_PROG_CC_C_O
29-
30-dnl couldn't use AM_PROG_LEX as it doesn't support header files like the
31-dnl AC_PROG_YACC macros...
32-
33-dnl
34-dnl these program checks should probably be deleted
35-dnl
36-
37-AC_PROG_LEX
38-if test "x$LEX" != xflex; then
39- LEX="$SHELL $missing_dir/missing flex"
40-fi
41-
42-
43-dnl Check for valgrind
44-AC_CHECK_PROGS(valgrind_cmd, valgrind)
45-if test "x$valgrind_cmd" = "x" ; then
46- AC_MSG_WARN([valgrind is required to test jq.])
47-fi
48-
49-
50-dnl Don't attempt to build docs if there's no Ruby lying around
51-AC_ARG_ENABLE([docs],
52- AC_HELP_STRING([--disable-docs], [don't build docs]))
53-
54-AS_IF([test "x$enable_docs" != "xno"],[
55- AC_CHECK_PROGS(bundle_cmd, bundle)
56- AS_IF([test "x$bundle_cmd" = "x" || \
57- ! ( cd ${srcdir}/docs; "$bundle_cmd" check 2>/dev/null )],[
58- AC_MSG_WARN([no bundler])
59- cat <<EOF
60-*****************************************************************
61-* Ruby dependencies for building jq documentation not found. *
62-* You can still build, install and hack on jq, but the manpage *
63-* will not be rebuilt and some of the tests won't run. *
64-* See docs/README.md for how to install the docs dependencies. *
65-*****************************************************************
66-EOF
67- enable_docs=no
68- ])
69-])
70-
71-AM_CONDITIONAL([ENABLE_DOCS], [test "x$enable_docs" != xno])
72-AC_SUBST([BUNDLER], ["$bundle_cmd"])
73-
74-dnl AC_CONFIG_MACRO_DIR([m4])
75-AC_CONFIG_HEADERS(config.h)
76-AC_CONFIG_FILES([Makefile])
77-AC_OUTPUT
78-
79-
80
81=== removed directory '.pc/disable-valgrind-tests.patch/tests'
82=== removed file '.pc/disable-valgrind-tests.patch/tests/run'
83--- .pc/disable-valgrind-tests.patch/tests/run 2013-10-02 21:25:22 +0000
84+++ .pc/disable-valgrind-tests.patch/tests/run 1970-01-01 00:00:00 +0000
85@@ -1,3 +0,0 @@
86-#!/bin/sh
87-
88-cat $@ | valgrind --error-exitcode=1 -q --leak-check=full ./jq --run-tests
89\ No newline at end of file
90
91=== removed directory '.pc/enable-full-manpages.patch'
92=== removed file '.pc/enable-full-manpages.patch/Makefile.am'
93--- .pc/enable-full-manpages.patch/Makefile.am 2013-10-02 21:25:22 +0000
94+++ .pc/enable-full-manpages.patch/Makefile.am 1970-01-01 00:00:00 +0000
95@@ -1,123 +0,0 @@
96-### C source files to be built and distributed.
97-
98-JQ_INCS = jq_parser.h builtin.h bytecode.h compile.h execute.h \
99- forkable_stack.h frame_layout.h jv.h jv_alloc.h jv_aux.h jv_dtoa.h \
100- jv_parse.h jv_unicode.h locfile.h opcode.h opcode_list.h parser.y \
101- jv_utf8_tables.h lexer.l
102-
103-JQ_SRC = opcode.c bytecode.c compile.c execute.c builtin.c jv.c \
104- jv_parse.c jv_print.c jv_dtoa.c jv_unicode.c jv_aux.c jv_alloc.c \
105- jq_test.c ${JQ_INCS}
106-
107-
108-### C build options
109-
110-AM_CFLAGS = -Wextra -Wall -Wno-missing-field-initializers \
111- -Wno-unused-parameter -Wno-unused-function
112-
113-
114-### Generating the lexer and parser
115-
116-# While there is some autoconf macro support for lex/flex, it doesn't support
117-# header file creation so we'll use good old make
118-BUILT_SOURCES = lexer.h lexer.c parser.h parser.c
119-lexer.c: lexer.l
120- flex -o lexer.c --header-file=lexer.h $<
121-lexer.h: lexer.c
122-
123-# Tell YACC (bison) autoconf macros that you want a header file created.
124-# If the --warnings=all fails, you probably have an old version of bison
125-# OSX ships an old bison, so update with homebrew or macports
126-AM_YFLAGS = --warnings=all -d
127-
128-
129-### Building the jq binary
130-
131-main.c: config.h
132-
133-bin_PROGRAMS = jq
134-jq_SOURCES = ${JQ_SRC} main.c
135-
136-
137-### Tests (make check)
138-
139-TESTS = tests/all.test
140-TEST_LOG_COMPILER = ${srcdir}/tests/run
141-
142-
143-### Building the manpage
144-
145-# If ENABLE_DOCS is not set, just copy jq.1.default to jq.1
146-# The real_docs target succeeds (possibly after building jq.1) only if ENABLE_DOCS is set
147-# Thus, making "dist" depend on "real_docs" ensures that we never build a tarball with
148-# a stub manpage.
149-
150-man_MANS = jq.1
151-.PHONY: real_docs
152-if ENABLE_DOCS
153-jq.1: $(srcdir)/docs/content/3.manual/manual.yml
154- ( cd ${abs_srcdir}/docs; '$(BUNDLER)' exec rake manpage ) > $@ || { rm -f $@; false; }
155-jq.1.default: $(srcdir)/docs/default_manpage.md
156- ( cd ${abs_srcdir}/docs; '$(BUNDLER)' exec rake manpage_default ) > $@ || { rm -f $@; false; }
157-real_docs: jq.1
158- if cmp jq.1 $(srcdir)/jq.1.default > /dev/null; then\
159- rm -f jq.1; $(MAKE) $(AM_MAKEFLAGS) jq.1;\
160- fi
161-else
162-jq.1: $(srcdir)/jq.1.default
163- cp $^ $@
164-real_docs:
165- @echo "Ruby dependencies not found, cannot build manpage." > /dev/stderr
166- @echo "Follow the instructions in docs/README.md to install them" > /dev/stderr
167- @echo "and then rerun ./configure" > /dev/stderr
168- false
169-endif
170-
171-
172-### Packaging
173-
174-docs/site.yml: configure.ac
175- sed 's/^jq_version: .*/jq_version: "$(VERSION)"/' $@ > $@.new
176- mv $@.new $@
177-
178-install-binaries: $(BUILT_SOURCES)
179- $(MAKE) $(AM_MAKEFLAGS) install-exec
180-
181-# Ensure "make dist" fails when we can't build the real manpage
182-dist-hook: real_docs
183-
184-DOC_FILES = docs/content docs/public docs/templates docs/site.yml \
185- docs/Gemfile docs/Gemfile.lock docs/Rakefile docs/README.md \
186- docs/default_manpage.md jq.1.default
187-
188-# setup is only used by distribution developers, not package developers.
189-# Still, as a matter of allowing patching, its not a bad idea to distribute
190-# the developer setup script in the tarball.
191-EXTRA_DIST = config.h.in $(BUILT_SOURCES) $(man_MANS) $(TESTS) \
192- $(TEST_LOG_COMPILER) gen_utf8_tables.py jq.spec \
193- $(DOC_FILES)
194-
195-# README.md is expected in Github projects, good stuff in it, so we'll
196-# distribute it and install it with the package in the doc directory.
197-docdir = ${datadir}/doc/${PACKAGE}
198-dist_doc_DATA = README.md COPYING AUTHORS README
199-
200-releasetag:
201- git tag -s "jq-$$(cat VERSION)" -m "jq release $$(cat VERSION)"
202-
203-RELEASE ?= 1
204-rpm: jq
205- @echo "Packaging jq as an RPM ..."
206- mkdir -p rpm/SOURCES rpm/BUILD rpm/BUILDROOT rpm/RPMS rpm/SPECS
207- cp jq-$$(cat VERSION).tar.gz rpm/SOURCES/
208- rpmbuild -tb --define "_topdir ${PWD}/rpm" --define "_prefix /usr" --define "myver $$(cat VERSION)" --define "myrel ${RELEASE}" rpm/SOURCES/jq-$$(cat VERSION).tar.gz
209- find rpm/RPMS/ -name "*.rpm" -exec mv {} ./ \;
210- rm -rf rpm
211-
212-dist-clean-local:
213- rm -f ${BUILT_SOURCES}
214-
215-# Not sure why this doesn't get cleaned up automatically, guess
216-# automake used to man pages which are hand coded?
217-clean-local:
218- rm -f jq.1
219
220=== removed directory '.pc/init-automake-once.patch'
221=== removed file '.pc/init-automake-once.patch/configure.ac'
222--- .pc/init-automake-once.patch/configure.ac 2013-10-02 21:25:22 +0000
223+++ .pc/init-automake-once.patch/configure.ac 1970-01-01 00:00:00 +0000
224@@ -1,66 +0,0 @@
225-AC_INIT([jq], [1.3], [mu@netsoc.tcd.ie],
226- [jq], [http://stedolan.github.com/jq/])
227-
228-dnl Created autoconf implementation thompson@dtosolutions, 26NOV12
229-AC_PREREQ([2.61])
230-AC_CONFIG_AUX_DIR([config])
231-AM_INIT_AUTOMAKE([parallel-tests foreign])
232-AM_SILENT_RULES([yes])
233-AC_PROG_CC
234-AC_PROG_CC_STDC
235-AC_PROG_CPP_WERROR
236-AC_PROG_YACC
237-
238-AM_PROG_CC_C_O
239-
240-dnl couldn't use AM_PROG_LEX as it doesn't support header files like the
241-dnl AC_PROG_YACC macros...
242-
243-dnl
244-dnl these program checks should probably be deleted
245-dnl
246-
247-AC_PROG_LEX
248-if test "x$LEX" != xflex; then
249- LEX="$SHELL $missing_dir/missing flex"
250-fi
251-
252-
253-dnl Check for valgrind
254-AC_CHECK_PROGS(valgrind_cmd, valgrind)
255-if test "x$valgrind_cmd" = "x" ; then
256- AC_MSG_WARN([valgrind is required to test jq.])
257-fi
258-
259-
260-dnl Don't attempt to build docs if there's no Ruby lying around
261-AC_ARG_ENABLE([docs],
262- AC_HELP_STRING([--disable-docs], [don't build docs]))
263-
264-AS_IF([test "x$enable_docs" != "xno"],[
265- AC_CHECK_PROGS(bundle_cmd, bundle)
266- AS_IF([test "x$bundle_cmd" = "x" || \
267- ! ( cd ${srcdir}/docs; "$bundle_cmd" check 2>/dev/null )],[
268- AC_MSG_WARN([no bundler])
269- cat <<EOF
270-*****************************************************************
271-* Ruby dependencies for building jq documentation not found. *
272-* You can still build, install and hack on jq, but the manpage *
273-* will not be rebuilt and some of the tests won't run. *
274-* See docs/README.md for how to install the docs dependencies. *
275-*****************************************************************
276-EOF
277- enable_docs=no
278- ])
279-])
280-
281-AM_CONDITIONAL([ENABLE_DOCS], [test "x$enable_docs" != xno])
282-AC_SUBST([BUNDLER], ["$bundle_cmd"])
283-
284-dnl AC_CONFIG_MACRO_DIR([m4])
285-AC_CONFIG_HEADERS(config.h)
286-AM_INIT_AUTOMAKE([-Wall])
287-AC_CONFIG_FILES([Makefile])
288-AC_OUTPUT
289-
290-
291
292=== removed directory '.pc/remove-unecessary-rakefile-deps.patch'
293=== removed directory '.pc/remove-unecessary-rakefile-deps.patch/docs'
294=== removed file '.pc/remove-unecessary-rakefile-deps.patch/docs/Rakefile'
295--- .pc/remove-unecessary-rakefile-deps.patch/docs/Rakefile 2013-10-02 21:25:22 +0000
296+++ .pc/remove-unecessary-rakefile-deps.patch/docs/Rakefile 1970-01-01 00:00:00 +0000
297@@ -1,146 +0,0 @@
298-require 'yaml'
299-require 'bonsai'
300-require 'liquid'
301-require 'maruku'
302-require 'json'
303-require 'ronn'
304-require 'tempfile'
305-require 'yaml'
306-
307-module ExtraFilters
308- def markdownify(input)
309- Maruku.new(input).to_html
310- end
311-
312- def sanitize(input)
313- input.gsub(/[^a-zA-Z0-9_]/,"")
314- end
315-
316- def json(input)
317- input.to_json
318- end
319-
320- def unique(input)
321- @n = (@n || 0) + 1
322- input + @n.to_s
323- end
324-end
325-
326-Liquid::Template.register_filter(ExtraFilters)
327-
328-
329-task :serve do
330- begin
331- Bonsai.log "Press Control+C to quit"
332-
333- require 'rack'
334- require 'sinatra'
335- require 'watch'
336- require 'launchy'
337-
338- Bonsai.root_dir = Dir.pwd
339-
340- server = fork {
341- app = Rack::Builder.app {
342- map "/jq" do
343- use Bonsai::StaticPassThrough, :root => Bonsai.root_dir + "/output", :urls => ["/"]
344- end
345- run Bonsai::DevelopmentServer
346- }
347- Rack::Handler.default.run(app, :Port => 5000) do
348- Launchy.open("http://localhost:5000/jq/")
349- end
350- }
351- Watch.new("{content,templates,public}/**/*") { Bonsai::Exporter.process! }
352- rescue Interrupt
353- Process.kill("QUIT", server)
354- Process.wait(server)
355- exit
356- end
357-end
358-
359-task :build do
360- Bonsai.root_dir = Dir.pwd
361- Bonsai::Exporter.publish!
362-end
363-
364-$BINARIES = {
365- :osx32 => "--host=i686-apple-darwin10 CFLAGS='-m32 -g -O'",
366- :osx64 => "--host=i686-apple-darwin10 CFLAGS='-m64 -g -O'",
367- :win32 => "--host=i686-w64-mingw32 CFLAGS='-g -O'",
368- :win64 => "--host=x86_64-w64-mingw32 CFLAGS='-g -O'",
369- :linux32 => "--host=x86_64-linux-gnu CFLAGS='-m32 -g -O'",
370- :linux64 => "--host=x86_64-linux-gnu CFLAGS='-m64 -g -O'"
371-}
372-
373-$BINARIES.each do |name, args|
374- file "../build/#{name}" do |t|
375- sh "MAKEFLAGS=-j4 ../scripts/crosscompile #{name} #{args}"
376- end
377- task :binaries => ["../build/#{name}"]
378-end
379-
380-task :binaries => ["output/download"] do
381- $BINARIES.each do |name, args|
382- FileUtils.cp_r "../build/#{name}", "output/download/"
383- end
384-end
385-
386-def load_manual
387- YAML::ENGINE.yamler = 'syck'
388- YAML::load(File.open("content/3.manual/manual.yml"))
389-end
390-
391-task :manpage do
392- Tempfile.open "manpage" do |f|
393- manual = load_manual
394- f.puts manual['manpage_intro']
395- f.puts manual['body']
396- manual['sections'].each do |section|
397-
398- f.puts "## #{section['title'].upcase}\n"
399- f.puts section['body']
400- f.puts ""
401- (section['entries'] || []).each do |entry|
402- f.puts "### #{entry['title']}\n"
403- f.puts entry['body']
404- f.puts ""
405- (entry['examples'] || []).each do |example|
406- f.puts " jq '#{example['program']}'"
407- f.puts " #{example['input']}"
408- f.puts " => #{example['output'].join(", ")}"
409- f.puts
410- end
411- end
412- f.puts ""
413- end
414- f.puts manual['manpage_epilogue']
415- f.close
416- puts Ronn::Document.new(f.path).convert('roff').gsub(/<\/?code>/,"")
417- end
418-end
419-
420-task :manpage_default => ["default_manpage.md"] do
421- puts Ronn::Document.new("default_manpage.md").convert('roff').gsub(/<\/?code>/,"")
422-end
423-
424-task :mantests do
425- load_manual['sections'].each do |section|
426- (section['entries'] || []).each do |entry|
427- (entry['examples'] || []).each do |example|
428- puts example['program'].gsub("\n", " ")
429- puts example['input']
430- example['output'].each do |s| puts s end
431- puts
432- end
433- end
434- end
435-end
436-
437-directory "output/download/source"
438-task :tarball => ["output/download/source"] do
439- sh "cd ..; ./configure && make dist && make distclean"
440- sh "cp ../jq-*.tar.gz output/download/source"
441-end
442-
443-task :dist => [:build, :binaries, :tarball]
444
445=== modified file 'AUTHORS'
446--- AUTHORS 2013-10-02 21:25:22 +0000
447+++ AUTHORS 2017-04-13 17:33:55 +0000
448@@ -4,3 +4,4 @@
449 Contributions by
450 Anthony Shortland <anthony.shortland@me.com> - rpmbuild target
451 Lee Thompson <stagr.lee@gmail.com> - autoconf stuff
452+Nicolas Williams <nico@cryptonector.com> - library-fication, autoconf stuff, misc
453
454=== modified file 'Makefile.am'
455--- Makefile.am 2013-10-02 21:25:22 +0000
456+++ Makefile.am 2017-04-13 17:33:55 +0000
457@@ -1,13 +1,12 @@
458 ### C source files to be built and distributed.
459
460-JQ_INCS = jq_parser.h builtin.h bytecode.h compile.h execute.h \
461- forkable_stack.h frame_layout.h jv.h jv_alloc.h jv_aux.h jv_dtoa.h \
462- jv_parse.h jv_unicode.h locfile.h opcode.h opcode_list.h parser.y \
463- jv_utf8_tables.h lexer.l
464+LIBJQ_INCS = jq_parser.h builtin.h bytecode.h compile.h exec_stack.h \
465+ libm.h jv_alloc.h jv_dtoa.h jv_unicode.h locfile.h \
466+ opcode_list.h parser.y jv_utf8_tables.h lexer.l
467
468-JQ_SRC = opcode.c bytecode.c compile.c execute.c builtin.c jv.c \
469- jv_parse.c jv_print.c jv_dtoa.c jv_unicode.c jv_aux.c jv_alloc.c \
470- jq_test.c ${JQ_INCS}
471+LIBJQ_SRC = locfile.c bytecode.c compile.c execute.c builtin.c jv.c \
472+ jv_parse.c jv_print.c jv_dtoa.c jv_unicode.c jv_aux.c jv_file.c \
473+ jv_alloc.c jq_test.c ${LIBJQ_INCS}
474
475
476 ### C build options
477@@ -15,14 +14,15 @@
478 AM_CFLAGS = -Wextra -Wall -Wno-missing-field-initializers \
479 -Wno-unused-parameter -Wno-unused-function
480
481+ACLOCAL_AMFLAGS = -I config/m4
482
483 ### Generating the lexer and parser
484
485 # While there is some autoconf macro support for lex/flex, it doesn't support
486 # header file creation so we'll use good old make
487-BUILT_SOURCES = lexer.h lexer.c parser.h parser.c
488+BUILT_SOURCES = lexer.h lexer.c parser.h parser.c version.h
489 lexer.c: lexer.l
490- flex -o lexer.c --header-file=lexer.h $<
491+ $(AM_V_LEX) flex -o lexer.c --header-file=lexer.h $<
492 lexer.h: lexer.c
493
494 # Tell YACC (bison) autoconf macros that you want a header file created.
495@@ -30,14 +30,31 @@
496 # OSX ships an old bison, so update with homebrew or macports
497 AM_YFLAGS = --warnings=all -d
498
499+### libjq
500+
501+lib_LTLIBRARIES = libjq.la
502+libjq_la_SOURCES = ${LIBJQ_SRC}
503+libjq_la_LIBADD = -lm
504+libjq_la_LDFLAGS = -export-symbols-regex '^j[qv]_' -version-info 1:4:0
505+
506+include_HEADERS = jv.h jq.h
507+
508
509 ### Building the jq binary
510
511-main.c: config.h
512+# Remake the version.h header file if, and only if, the git ID has changed
513+.PHONY: .FORCE
514+.FORCE:
515+generate_ver = ver="`{ $(srcdir)/scripts/version || echo '$(VERSION)' ; } | sed 's/.*/\#define JQ_VERSION \"&\"/'`"
516+.remake-version-h: .FORCE
517+ @ $(generate_ver); test "x`cat version.h 2>/dev/null`" = "x$$ver" || touch .remake-version-h
518+version.h: .remake-version-h
519+ $(AM_V_GEN) $(generate_ver); echo "$$ver" > $@
520
521 bin_PROGRAMS = jq
522-jq_SOURCES = ${JQ_SRC} main.c
523-
524+jq_SOURCES = main.c
525+jq_LDFLAGS = -static-libtool-libs
526+jq_LDADD = libjq.la -lm
527
528 ### Tests (make check)
529
530@@ -54,14 +71,25 @@
531
532 man_MANS = jq.1
533 .PHONY: real_docs
534+if ENABLE_DOCS
535 jq.1: $(srcdir)/docs/content/3.manual/manual.yml
536- ( cd ${abs_srcdir}/docs; exec rake manpage ) > $@ || { rm -f $@; false; }
537+ $(AM_V_GEN) ( cd ${abs_srcdir}/docs; '$(BUNDLER)' exec rake manpage ) > $@ || { rm -f $@; false; }
538 jq.1.default: $(srcdir)/docs/default_manpage.md
539- ( cd ${abs_srcdir}/docs; exec rake manpage_default ) > $@ || { rm -f $@; false; }
540+ $(AM_V_GEN) ( cd ${abs_srcdir}/docs; '$(BUNDLER)' exec rake manpage_default ) > $@ || { rm -f $@; false; }
541 real_docs: jq.1
542 if cmp jq.1 $(srcdir)/jq.1.default > /dev/null; then\
543 rm -f jq.1; $(MAKE) $(AM_MAKEFLAGS) jq.1;\
544 fi
545+else
546+jq.1: $(srcdir)/jq.1.default
547+ $(AM_V_GEN) cp $^ $@
548+real_docs:
549+ @echo "Ruby dependencies not found, cannot build manpage." > /dev/stderr
550+ @echo "Follow the instructions in docs/README.md to install them" > /dev/stderr
551+ @echo "and then rerun ./configure" > /dev/stderr
552+ false
553+endif
554+
555
556 ### Packaging
557
558@@ -82,24 +110,21 @@
559 # setup is only used by distribution developers, not package developers.
560 # Still, as a matter of allowing patching, its not a bad idea to distribute
561 # the developer setup script in the tarball.
562-EXTRA_DIST = config.h.in $(BUILT_SOURCES) $(man_MANS) $(TESTS) \
563- $(TEST_LOG_COMPILER) gen_utf8_tables.py jq.spec \
564- $(DOC_FILES)
565+EXTRA_DIST = $(man_MANS) $(TESTS) $(TEST_LOG_COMPILER) jq.spec \
566+ $(DOC_FILES) scripts/version parser.h parser.c lexer.h \
567+ lexer.c
568
569 # README.md is expected in Github projects, good stuff in it, so we'll
570 # distribute it and install it with the package in the doc directory.
571 docdir = ${datadir}/doc/${PACKAGE}
572-dist_doc_DATA = README.md AUTHORS
573-
574-releasetag:
575- git tag -s "jq-$$(cat VERSION)" -m "jq release $$(cat VERSION)"
576+dist_doc_DATA = README.md COPYING AUTHORS README
577
578 RELEASE ?= 1
579-rpm: jq
580+rpm: dist jq.spec
581 @echo "Packaging jq as an RPM ..."
582 mkdir -p rpm/SOURCES rpm/BUILD rpm/BUILDROOT rpm/RPMS rpm/SPECS
583- cp jq-$$(cat VERSION).tar.gz rpm/SOURCES/
584- rpmbuild -tb --define "_topdir ${PWD}/rpm" --define "_prefix /usr" --define "myver $$(cat VERSION)" --define "myrel ${RELEASE}" rpm/SOURCES/jq-$$(cat VERSION).tar.gz
585+ cp jq-$(VERSION).tar.gz rpm/SOURCES/
586+ rpmbuild -tb --define "_topdir ${PWD}/rpm" --define "_prefix /usr" --define "myver $(VERSION)" --define "myrel ${RELEASE}" rpm/SOURCES/jq-$(VERSION).tar.gz
587 find rpm/RPMS/ -name "*.rpm" -exec mv {} ./ \;
588 rm -rf rpm
589
590@@ -108,5 +133,12 @@
591
592 # Not sure why this doesn't get cleaned up automatically, guess
593 # automake used to man pages which are hand coded?
594-clean-local:
595+# 'make clean' doesn't delete the manpage if it can't be rebuilt
596+.PHONY: clean-local-docs
597+clean-local-docs:
598+if ENABLE_DOCS
599 rm -f jq.1
600+endif
601+
602+clean-local: clean-local-docs
603+ rm -f version.h .remake-version-h
604
605=== modified symlink 'README'
606=== target was u'README.md'
607--- README 1970-01-01 00:00:00 +0000
608+++ README 2017-04-13 17:33:55 +0000
609@@ -0,0 +1,35 @@
610+jq
611+==
612+
613+jq is a command-line JSON processor.
614+
615+If you want to learn to use jq, read the documentation at
616+[http://stedolan.github.io/jq](http://stedolan.github.io/jq). This
617+documentation is generated from the docs/ folder of this repository.
618+You can also try it online at [http://jqplay.herokuapp.com](http://jqplay.herokuapp.com).
619+
620+If you want to hack on jq, feel free, but be warned that its internals
621+are not well-documented at the moment. Bring a hard hat and a
622+shovel. Also, read the wiki: http://github.com/stedolan/jq/wiki
623+
624+If you're building directly from the latest git, you'll need flex and
625+bison installed. To build, run:
626+
627+ autoreconf -i
628+ ./configure
629+ make -j8
630+ make check
631+
632+After make finishes, you'll be able to use `./jq`. You can also
633+install it using:
634+
635+ sudo make install
636+
637+If you're not using the latest git version but instead building a
638+released tarball (available on the website), then you won't need to
639+run `autoreconf` (and shouldn't), and you won't need flex or bison.
640+
641+To cross-compile for OS X and Windows, see docs/Rakefile's build task
642+and scripts/crosscompile. You'll need a cross-compilation environment,
643+such as Mingw for cross-compiling for Windows.
644+
645
646=== modified file 'README.md'
647--- README.md 2013-10-02 21:25:22 +0000
648+++ README.md 2017-04-13 17:33:55 +0000
649@@ -4,20 +4,32 @@
650 jq is a command-line JSON processor.
651
652 If you want to learn to use jq, read the documentation at
653-[http://stedolan.github.com/jq](http://stedolan.github.com/jq). This
654+[http://stedolan.github.io/jq](http://stedolan.github.io/jq). This
655 documentation is generated from the docs/ folder of this repository.
656+You can also try it online at [http://jqplay.herokuapp.com](http://jqplay.herokuapp.com).
657
658 If you want to hack on jq, feel free, but be warned that its internals
659 are not well-documented at the moment. Bring a hard hat and a
660 shovel. Also, read the wiki: http://github.com/stedolan/jq/wiki
661
662-To build jq, run
663+If you're building directly from the latest git, you'll need flex and
664+bison installed. To build, run:
665
666+ autoreconf -i
667 ./configure
668- make
669- sudo make install (optionally)
670-
671-If you've just checked out the latest version from git (rather than
672-using a released source tarball) then you'll need to run this first:
673-
674- autoreconf
675+ make -j8
676+ make check
677+
678+After make finishes, you'll be able to use `./jq`. You can also
679+install it using:
680+
681+ sudo make install
682+
683+If you're not using the latest git version but instead building a
684+released tarball (available on the website), then you won't need to
685+run `autoreconf` (and shouldn't), and you won't need flex or bison.
686+
687+To cross-compile for OS X and Windows, see docs/Rakefile's build task
688+and scripts/crosscompile. You'll need a cross-compilation environment,
689+such as Mingw for cross-compiling for Windows.
690+
691
692=== removed directory 'build'
693=== modified file 'builtin.c'
694--- builtin.c 2013-10-02 21:25:22 +0000
695+++ builtin.c 2017-04-13 17:33:55 +0000
696@@ -1,29 +1,15 @@
697+#include <math.h>
698+#include <stdlib.h>
699 #include <string.h>
700+#include <assert.h>
701 #include "builtin.h"
702 #include "compile.h"
703 #include "jq_parser.h"
704+#include "bytecode.h"
705 #include "locfile.h"
706-#include "jv_aux.h"
707 #include "jv_unicode.h"
708
709
710-
711-typedef jv (*func_1)(jv);
712-typedef jv (*func_2)(jv,jv);
713-typedef jv (*func_3)(jv,jv,jv);
714-typedef jv (*func_4)(jv,jv,jv,jv);
715-typedef jv (*func_5)(jv,jv,jv,jv,jv);
716-jv cfunction_invoke(struct cfunction* function, jv input[]) {
717- switch (function->nargs) {
718- case 1: return ((func_1)function->fptr)(input[0]);
719- case 2: return ((func_2)function->fptr)(input[0], input[1]);
720- case 3: return ((func_3)function->fptr)(input[0], input[1], input[2]);
721- case 4: return ((func_4)function->fptr)(input[0], input[1], input[2], input[3]);
722- case 5: return ((func_5)function->fptr)(input[0], input[1], input[2], input[3], input[4]);
723- default: return jv_invalid_with_msg(jv_string("Function takes too many arguments"));
724- }
725-}
726-
727 static jv type_error(jv bad, const char* msg) {
728 jv err = jv_invalid_with_msg(jv_string_fmt("%s %s",
729 jv_kind_name(jv_get_kind(bad)),
730@@ -64,6 +50,18 @@
731 }
732 }
733
734+#define LIBM_DD(name) \
735+static jv f_ ## name(jv input) { \
736+ if (jv_get_kind(input) != JV_KIND_NUMBER) { \
737+ return type_error(input, "number required"); \
738+ } \
739+ jv ret = jv_number(name(jv_number_value(input))); \
740+ jv_free(input); \
741+ return ret; \
742+}
743+#include "libm.h"
744+#undef LIBM_DD
745+
746 static jv f_negate(jv input) {
747 if (jv_get_kind(input) != JV_KIND_NUMBER) {
748 return type_error(input, "cannot be negated");
749@@ -73,6 +71,64 @@
750 return ret;
751 }
752
753+static jv f_startswith(jv a, jv b) {
754+ int alen = jv_string_length_bytes(jv_copy(a));
755+ int blen = jv_string_length_bytes(jv_copy(b));
756+ jv ret;
757+
758+ if (blen <= alen && memcmp(jv_string_value(a), jv_string_value(b), blen) == 0)
759+ ret = jv_true();
760+ else
761+ ret = jv_false();
762+ jv_free(a);
763+ jv_free(b);
764+ return ret;
765+}
766+
767+static jv f_endswith(jv a, jv b) {
768+ const char *astr = jv_string_value(a);
769+ const char *bstr = jv_string_value(b);
770+ size_t alen = jv_string_length_bytes(jv_copy(a));
771+ size_t blen = jv_string_length_bytes(jv_copy(b));
772+ jv ret;;
773+
774+ if (alen < blen ||
775+ memcmp(astr + (alen - blen), bstr, blen) != 0)
776+ ret = jv_false();
777+ else
778+ ret = jv_true();
779+ jv_free(a);
780+ jv_free(b);
781+ return ret;
782+}
783+
784+static jv f_ltrimstr(jv input, jv left) {
785+ if (jv_get_kind(f_startswith(jv_copy(input), jv_copy(left))) != JV_KIND_TRUE) {
786+ jv_free(left);
787+ return input;
788+ }
789+ /*
790+ * FIXME It'd be better to share the suffix with the original input --
791+ * that we could do, we just can't share prefixes.
792+ */
793+ int prefixlen = jv_string_length_bytes(left);
794+ jv res = jv_string_sized(jv_string_value(input) + prefixlen,
795+ jv_string_length_bytes(jv_copy(input)) - prefixlen);
796+ jv_free(input);
797+ return res;
798+}
799+
800+static jv f_rtrimstr(jv input, jv right) {
801+ if (jv_get_kind(f_endswith(jv_copy(input), jv_copy(right))) == JV_KIND_TRUE) {
802+ jv res = jv_string_sized(jv_string_value(input),
803+ jv_string_length_bytes(jv_copy(input)) - jv_string_length_bytes(right));
804+ jv_free(input);
805+ return res;
806+ }
807+ jv_free(right);
808+ return input;
809+}
810+
811 static jv f_minus(jv input, jv a, jv b) {
812 jv_free(input);
813 if (jv_get_kind(a) == JV_KIND_NUMBER && jv_get_kind(b) == JV_KIND_NUMBER) {
814@@ -100,9 +156,34 @@
815 }
816
817 static jv f_multiply(jv input, jv a, jv b) {
818+ jv_kind ak = jv_get_kind(a);
819+ jv_kind bk = jv_get_kind(b);
820 jv_free(input);
821- if (jv_get_kind(a) == JV_KIND_NUMBER && jv_get_kind(b) == JV_KIND_NUMBER) {
822+ if (ak == JV_KIND_NUMBER && bk == JV_KIND_NUMBER) {
823 return jv_number(jv_number_value(a) * jv_number_value(b));
824+ } else if ((ak == JV_KIND_STRING && bk == JV_KIND_NUMBER) ||
825+ (ak == JV_KIND_NUMBER && bk == JV_KIND_STRING)) {
826+ jv str = a;
827+ jv num = b;
828+ if (ak == JV_KIND_NUMBER) {
829+ str = b;
830+ num = a;
831+ }
832+ int n;
833+ size_t alen = jv_string_length_bytes(jv_copy(str));
834+ jv res = str;
835+
836+ for (n = jv_number_value(num) - 1; n > 0; n--)
837+ res = jv_string_append_buf(res, jv_string_value(str), alen);
838+
839+ jv_free(num);
840+ if (n < 0) {
841+ jv_free(str);
842+ return jv_null();
843+ }
844+ return res;
845+ } else if (ak == JV_KIND_OBJECT && bk == JV_KIND_OBJECT) {
846+ return jv_object_merge_recursive(a, b);
847 } else {
848 return type_error2(a, b, "cannot be multiplied");
849 }
850@@ -112,6 +193,17 @@
851 jv_free(input);
852 if (jv_get_kind(a) == JV_KIND_NUMBER && jv_get_kind(b) == JV_KIND_NUMBER) {
853 return jv_number(jv_number_value(a) / jv_number_value(b));
854+ } else if (jv_get_kind(a) == JV_KIND_STRING && jv_get_kind(b) == JV_KIND_STRING) {
855+ return jv_string_split(a, b);
856+ } else {
857+ return type_error2(a, b, "cannot be divided");
858+ }
859+}
860+
861+static jv f_mod(jv input, jv a, jv b) {
862+ jv_free(input);
863+ if (jv_get_kind(a) == JV_KIND_NUMBER && jv_get_kind(b) == JV_KIND_NUMBER) {
864+ return jv_number((intmax_t)jv_number_value(a) % (intmax_t)jv_number_value(b));
865 } else {
866 return type_error2(a, b, "cannot be divided");
867 }
868@@ -167,6 +259,19 @@
869 }
870 }
871
872+static jv f_dump(jv input) {
873+ return jv_dump_string(input, 0);
874+}
875+
876+static jv f_json_parse(jv input) {
877+ if (jv_get_kind(input) != JV_KIND_STRING)
878+ return type_error(input, "only strings can be parsed");
879+ jv res = jv_parse_sized(jv_string_value(input),
880+ jv_string_length_bytes(jv_copy(input)));
881+ jv_free(input);
882+ return res;
883+}
884+
885 static jv f_tonumber(jv input) {
886 if (jv_get_kind(input) == JV_KIND_NUMBER) {
887 return input;
888@@ -188,6 +293,8 @@
889 return jv_number(jv_object_length(input));
890 } else if (jv_get_kind(input) == JV_KIND_STRING) {
891 return jv_number(jv_string_length_codepoints(input));
892+ } else if (jv_get_kind(input) == JV_KIND_NUMBER) {
893+ return jv_number(fabs(jv_number_value(input)));
894 } else if (jv_get_kind(input) == JV_KIND_NULL) {
895 jv_free(input);
896 return jv_number(0);
897@@ -468,15 +575,29 @@
898 return jv_invalid_with_msg(msg);
899 }
900
901+#define LIBM_DD(name) \
902+ {(cfunction_ptr)f_ ## name, "_" #name, 1},
903+
904 static const struct cfunction function_list[] = {
905+#include "libm.h"
906 {(cfunction_ptr)f_plus, "_plus", 3},
907 {(cfunction_ptr)f_negate, "_negate", 1},
908 {(cfunction_ptr)f_minus, "_minus", 3},
909 {(cfunction_ptr)f_multiply, "_multiply", 3},
910 {(cfunction_ptr)f_divide, "_divide", 3},
911+ {(cfunction_ptr)f_mod, "_mod", 3},
912+ {(cfunction_ptr)f_dump, "tojson", 1},
913+ {(cfunction_ptr)f_json_parse, "fromjson", 1},
914 {(cfunction_ptr)f_tonumber, "tonumber", 1},
915 {(cfunction_ptr)f_tostring, "tostring", 1},
916 {(cfunction_ptr)f_keys, "keys", 1},
917+ {(cfunction_ptr)f_startswith, "startswith", 2},
918+ {(cfunction_ptr)f_endswith, "endswith", 2},
919+ {(cfunction_ptr)f_ltrimstr, "ltrimstr", 2},
920+ {(cfunction_ptr)f_rtrimstr, "rtrimstr", 2},
921+ {(cfunction_ptr)jv_string_split, "split", 2},
922+ {(cfunction_ptr)jv_string_explode, "explode", 1},
923+ {(cfunction_ptr)jv_string_implode, "implode", 1},
924 {(cfunction_ptr)jv_setpath, "setpath", 3}, // FIXME typechecking
925 {(cfunction_ptr)jv_getpath, "getpath", 2},
926 {(cfunction_ptr)jv_delpaths, "delpaths", 2},
927@@ -500,6 +621,7 @@
928 {(cfunction_ptr)f_error, "error", 2},
929 {(cfunction_ptr)f_format, "format", 2},
930 };
931+#undef LIBM_DD
932
933 struct bytecoded_builtin { const char* name; block code; };
934 static block bind_bytecoded_builtins(block b) {
935@@ -526,56 +648,105 @@
936 };
937 for (unsigned i=0; i<sizeof(builtin_def_1arg)/sizeof(builtin_def_1arg[0]); i++) {
938 builtins = BLOCK(builtins, gen_function(builtin_def_1arg[i].name,
939- gen_op_block_unbound(CLOSURE_PARAM, "arg"),
940+ gen_param("arg"),
941 builtin_def_1arg[i].code));
942 }
943 }
944 {
945- block rangevar = block_bind(gen_op_var_unbound(STOREV, "rangevar"),
946- gen_noop(), OP_HAS_VARIABLE);
947+ block rangevar = gen_op_var_fresh(STOREV, "rangevar");
948 block init = BLOCK(gen_op_simple(DUP), gen_call("start", gen_noop()), rangevar);
949 block range = BLOCK(init,
950 gen_call("end", gen_noop()),
951- gen_op_var_bound(RANGE, rangevar));
952+ gen_op_bound(RANGE, rangevar));
953 builtins = BLOCK(builtins, gen_function("range",
954- BLOCK(gen_op_block_unbound(CLOSURE_PARAM, "start"),
955- gen_op_block_unbound(CLOSURE_PARAM, "end")),
956+ BLOCK(gen_param("start"), gen_param("end")),
957 range));
958 }
959
960 return block_bind_referenced(builtins, b, OP_IS_CALL_PSEUDO);
961 }
962
963+#define LIBM_DD(name) "def " #name ": _" #name ";",
964+
965 static const char* const jq_builtins[] = {
966 "def map(f): [.[] | f];",
967 "def select(f): if f then . else empty end;",
968 "def sort_by(f): _sort_by_impl(map([f]));",
969 "def group_by(f): _group_by_impl(map([f]));",
970 "def unique: group_by(.) | map(.[0]);",
971+ "def unique_by(f): group_by(f) | map(.[0]);",
972 "def max_by(f): _max_by_impl(map([f]));",
973 "def min_by(f): _min_by_impl(map([f]));",
974+#include "libm.h"
975 "def add: reduce .[] as $x (null; . + $x);",
976 "def del(f): delpaths([path(f)]);",
977 "def _assign(paths; value): value as $v | reduce path(paths) as $p (.; setpath($p; $v));",
978 "def _modify(paths; update): reduce path(paths) as $p (.; setpath($p; getpath($p) | update));",
979 "def recurse(f): ., (f | select(. != null) | recurse(f));",
980+ "def recurse_down: recurse(.[]?);",
981 "def to_entries: [keys[] as $k | {key: $k, value: .[$k]}];",
982 "def from_entries: map({(.key): .value}) | add;",
983 "def with_entries(f): to_entries | map(f) | from_entries;",
984 "def reverse: [.[length - 1 - range(0;length)]];",
985+ "def indices(i): if type == \"array\" and (i|type) == \"array\" then .[i] elif type == \"array\" then .[[i]] else .[i] end;",
986+ "def index(i): if type == \"array\" and (i|type) == \"array\" then .[i] elif type == \"array\" then .[[i]] else .[i] end | .[0];",
987+ "def rindex(i): if type == \"array\" and (i|type) == \"array\" then .[i] elif type == \"array\" then .[[i]] else .[i] end | .[-1:][0];",
988+ "def paths: path(recurse(if (type|. == \"array\" or . == \"object\") then .[] else empty end))|select(length > 0);",
989+ "def leaf_paths: . as $dot|paths|select(. as $p|$dot|getpath($p)|type|. != \"array\" and . != \"object\");",
990+ "def any: reduce .[] as $i (false; . or $i);",
991+ "def all: reduce .[] as $i (true; . and $i);",
992+ "def arrays: select(type == \"array\");",
993+ "def objects: select(type == \"object\");",
994+ "def iterables: arrays, objects;",
995+ "def booleans: select(type == \"boolean\");",
996+ "def numbers: select(type == \"number\");",
997+ "def strings: select(type == \"string\");",
998+ "def nulls: select(type == \"null\");",
999+ "def values: arrays, objects, booleans, numbers, strings;",
1000+ "def scalars: select(. == null or . == true or . == false or type == \"number\" or type == \"string\");",
1001+ "def join(x): reduce .[] as $i (\"\"; . + (if . == \"\" then $i else x + $i end));",
1002 };
1003-
1004-
1005-block builtins_bind(block b) {
1006+#undef LIBM_DD
1007+
1008+
1009+static int builtins_bind_one(jq_state *jq, block* bb, const char* code) {
1010+ struct locfile src;
1011+ locfile_init(&src, jq, code, strlen(code));
1012+ block funcs;
1013+ int nerrors = jq_parse_library(&src, &funcs);
1014+ if (nerrors == 0) {
1015+ *bb = block_bind_referenced(funcs, *bb, OP_IS_CALL_PSEUDO);
1016+ }
1017+ locfile_free(&src);
1018+ return nerrors;
1019+}
1020+
1021+static int slurp_lib(jq_state *jq, block* bb) {
1022+ int nerrors = 0;
1023+ char* home = getenv("HOME");
1024+ if (home) { // silently ignore no $HOME
1025+ jv filename = jv_string_append_str(jv_string(home), "/.jq");
1026+ jv data = jv_load_file(jv_string_value(filename), 1);
1027+ if (jv_is_valid(data)) {
1028+ nerrors = builtins_bind_one(jq, bb, jv_string_value(data) );
1029+ }
1030+ jv_free(filename);
1031+ jv_free(data);
1032+ }
1033+ return nerrors;
1034+}
1035+
1036+int builtins_bind(jq_state *jq, block* bb) {
1037+ int nerrors = slurp_lib(jq, bb);
1038+ if (nerrors) {
1039+ block_free(*bb);
1040+ return nerrors;
1041+ }
1042 for (int i=(int)(sizeof(jq_builtins)/sizeof(jq_builtins[0]))-1; i>=0; i--) {
1043- struct locfile src;
1044- locfile_init(&src, jq_builtins[i], strlen(jq_builtins[i]));
1045- block funcs;
1046- int nerrors = jq_parse_library(&src, &funcs);
1047+ nerrors = builtins_bind_one(jq, bb, jq_builtins[i]);
1048 assert(!nerrors);
1049- b = block_bind_referenced(funcs, b, OP_IS_CALL_PSEUDO);
1050- locfile_free(&src);
1051 }
1052- b = bind_bytecoded_builtins(b);
1053- return gen_cbinding(function_list, sizeof(function_list)/sizeof(function_list[0]), b);
1054+ *bb = bind_bytecoded_builtins(*bb);
1055+ *bb = gen_cbinding(function_list, sizeof(function_list)/sizeof(function_list[0]), *bb);
1056+ return nerrors;
1057 }
1058
1059=== modified file 'builtin.h'
1060--- builtin.h 2012-12-21 23:28:59 +0000
1061+++ builtin.h 2017-04-13 17:33:55 +0000
1062@@ -1,21 +1,10 @@
1063 #ifndef BUILTIN_H
1064 #define BUILTIN_H
1065
1066+#include "jq.h"
1067+#include "bytecode.h"
1068 #include "compile.h"
1069
1070-block builtins_bind(block);
1071-
1072-
1073-typedef void (*cfunction_ptr)(void);
1074-
1075-struct cfunction {
1076- cfunction_ptr fptr;
1077- const char* name;
1078- int nargs;
1079-};
1080-
1081-
1082-jv cfunction_invoke(struct cfunction* function, jv input[]);
1083-
1084+int builtins_bind(jq_state *, block*);
1085
1086 #endif
1087
1088=== modified file 'bytecode.c'
1089--- bytecode.c 2013-10-02 21:25:22 +0000
1090+++ bytecode.c 2017-04-13 17:33:55 +0000
1091@@ -3,9 +3,39 @@
1092 #include <stdlib.h>
1093
1094 #include "bytecode.h"
1095-#include "opcode.h"
1096 #include "jv_alloc.h"
1097
1098+// flags, length
1099+#define NONE 0, 1
1100+#define CONSTANT OP_HAS_CONSTANT, 2
1101+#define VARIABLE (OP_HAS_VARIABLE | OP_HAS_BINDING), 3
1102+#define BRANCH OP_HAS_BRANCH, 2
1103+#define CFUNC (OP_HAS_CFUNC | OP_HAS_BINDING), 3
1104+#define UFUNC (OP_HAS_UFUNC | OP_HAS_BINDING | OP_IS_CALL_PSEUDO), 4
1105+#define DEFINITION (OP_IS_CALL_PSEUDO | OP_HAS_BINDING), 0
1106+#define CLOSURE_REF_IMM (OP_IS_CALL_PSEUDO | OP_HAS_BINDING), 2
1107+
1108+#define OP(name, imm, in, out) \
1109+ {name, #name, imm, in, out},
1110+
1111+static const struct opcode_description opcode_descriptions[] = {
1112+#include "opcode_list.h"
1113+};
1114+
1115+static const struct opcode_description invalid_opcode_description = {
1116+ -1, "#INVALID", 0, 0, 0, 0
1117+};
1118+
1119+
1120+const struct opcode_description* opcode_describe(opcode op) {
1121+ if ((int)op >= 0 && (int)op < NUM_OPCODES) {
1122+ return &opcode_descriptions[op];
1123+ } else {
1124+ return &invalid_opcode_description;
1125+ }
1126+}
1127+
1128+
1129 static int bytecode_operation_length(uint16_t* codeptr) {
1130 int length = opcode_describe(*codeptr)->length;
1131 if (*codeptr == CALL_JQ) {
1132@@ -14,6 +44,22 @@
1133 return length;
1134 }
1135
1136+static void dump_code(int indent, struct bytecode* bc) {
1137+ int pc = 0;
1138+ while (pc < bc->codelen) {
1139+ printf("%*s", indent, "");
1140+ dump_operation(bc, bc->code + pc);
1141+ printf("\n");
1142+ pc += bytecode_operation_length(bc->code + pc);
1143+ }
1144+}
1145+
1146+static void symbol_table_free(struct symbol_table* syms) {
1147+ jv_mem_free(syms->cfunctions);
1148+ jv_free(syms->cfunc_names);
1149+ jv_mem_free(syms);
1150+}
1151+
1152 void dump_disassembly(int indent, struct bytecode* bc) {
1153 if (bc->nclosures > 0) {
1154 printf("%*s[params: ", indent, "");
1155@@ -37,16 +83,6 @@
1156 }
1157 }
1158
1159-void dump_code(int indent, struct bytecode* bc) {
1160- int pc = 0;
1161- while (pc < bc->codelen) {
1162- printf("%*s", indent, "");
1163- dump_operation(bc, bc->code + pc);
1164- printf("\n");
1165- pc += bytecode_operation_length(bc->code + pc);
1166- }
1167-}
1168-
1169 static struct bytecode* getlevel(struct bytecode* bc, int level) {
1170 while (level > 0) {
1171 bc = bc->parent;
1172@@ -109,13 +145,9 @@
1173 }
1174 }
1175
1176-void symbol_table_free(struct symbol_table* syms) {
1177- jv_mem_free(syms->cfunctions);
1178- jv_free(syms->cfunc_names);
1179- jv_mem_free(syms);
1180-}
1181-
1182 void bytecode_free(struct bytecode* bc) {
1183+ if (!bc)
1184+ return;
1185 jv_mem_free(bc->code);
1186 jv_free(bc->constants);
1187 for (int i=0; i<bc->nsubfunctions; i++)
1188
1189=== modified file 'bytecode.h'
1190--- bytecode.h 2013-10-02 21:25:22 +0000
1191+++ bytecode.h 2017-04-13 17:33:55 +0000
1192@@ -3,10 +3,52 @@
1193 #include <stdint.h>
1194
1195 #include "jv.h"
1196-#include "opcode.h"
1197-#include "builtin.h"
1198+
1199+typedef enum {
1200+#define OP(name, imm, in, out) name,
1201+#include "opcode_list.h"
1202+#undef OP
1203+} opcode;
1204+
1205+enum {
1206+ NUM_OPCODES =
1207+#define OP(name, imm, in, out) +1
1208+#include "opcode_list.h"
1209+#undef OP
1210+};
1211+
1212+enum {
1213+ OP_HAS_CONSTANT = 2,
1214+ OP_HAS_VARIABLE = 4,
1215+ OP_HAS_BRANCH = 8,
1216+ OP_HAS_CFUNC = 32,
1217+ OP_HAS_UFUNC = 64,
1218+ OP_IS_CALL_PSEUDO = 128,
1219+ OP_HAS_BINDING = 1024,
1220+};
1221+struct opcode_description {
1222+ opcode op;
1223+ const char* name;
1224+
1225+ int flags;
1226+
1227+ // length in 16-bit units
1228+ int length;
1229+
1230+ int stack_in, stack_out;
1231+};
1232+
1233+const struct opcode_description* opcode_describe(opcode op);
1234+
1235
1236 #define MAX_CFUNCTION_ARGS 10
1237+typedef void (*cfunction_ptr)();
1238+struct cfunction {
1239+ cfunction_ptr fptr;
1240+ const char* name;
1241+ int nargs;
1242+};
1243+
1244 struct symbol_table {
1245 struct cfunction* cfunctions;
1246 int ncfunctions;
1247@@ -39,10 +81,8 @@
1248 };
1249
1250 void dump_disassembly(int, struct bytecode* code);
1251-void dump_code(int, struct bytecode* code);
1252 void dump_operation(struct bytecode* bc, uint16_t* op);
1253
1254-void symbol_table_free(struct symbol_table* syms);
1255 void bytecode_free(struct bytecode* bc);
1256
1257 #endif
1258
1259=== modified file 'compile.c'
1260--- compile.c 2013-10-02 21:25:22 +0000
1261+++ compile.c 2017-04-13 17:33:55 +0000
1262@@ -1,8 +1,9 @@
1263+#ifndef _GNU_SOURCE
1264 #define _GNU_SOURCE // for strdup
1265+#endif
1266 #include <assert.h>
1267 #include <string.h>
1268 #include <stdlib.h>
1269-#include "opcode.h"
1270 #include "compile.h"
1271 #include "bytecode.h"
1272 #include "locfile.h"
1273@@ -153,33 +154,26 @@
1274 b.first->imm.target = target.last;
1275 }
1276
1277-block gen_op_var_unbound(opcode op, const char* name) {
1278+block gen_op_unbound(opcode op, const char* name) {
1279+ assert(opcode_describe(op)->flags & OP_HAS_BINDING);
1280+ inst* i = inst_new(op);
1281+ i->symbol = strdup(name);
1282+ return inst_block(i);
1283+}
1284+
1285+block gen_op_var_fresh(opcode op, const char* name) {
1286 assert(opcode_describe(op)->flags & OP_HAS_VARIABLE);
1287- inst* i = inst_new(op);
1288- i->symbol = strdup(name);
1289- return inst_block(i);
1290-}
1291-
1292-block gen_op_var_bound(opcode op, block binder) {
1293- assert(block_is_single(binder));
1294- block b = gen_op_var_unbound(op, binder.first->symbol);
1295- b.first->bound_by = binder.first;
1296- return b;
1297-}
1298-
1299-block gen_op_block_unbound(opcode op, const char* name) {
1300- assert(opcode_describe(op)->flags & OP_IS_CALL_PSEUDO);
1301- inst* i = inst_new(op);
1302- i->symbol = strdup(name);
1303- return inst_block(i);
1304-}
1305-
1306-block gen_op_block_bound(opcode op, block binder) {
1307- assert(block_is_single(binder));
1308- block b = gen_op_block_unbound(op, binder.first->symbol);
1309- b.first->bound_by = binder.first;
1310- return b;
1311-}
1312+ return block_bind(gen_op_unbound(op, name),
1313+ gen_noop(), OP_HAS_VARIABLE);
1314+}
1315+
1316+block gen_op_bound(opcode op, block binder) {
1317+ assert(block_is_single(binder));
1318+ block b = gen_op_unbound(op, binder.first->symbol);
1319+ b.first->bound_by = binder.first;
1320+ return b;
1321+}
1322+
1323
1324 static void inst_join(inst* a, inst* b) {
1325 assert(a && b);
1326@@ -280,12 +274,16 @@
1327 return b;
1328 }
1329
1330+block gen_param(const char* name) {
1331+ return gen_op_unbound(CLOSURE_PARAM, name);
1332+}
1333+
1334 block gen_lambda(block body) {
1335 return gen_function("@lambda", gen_noop(), body);
1336 }
1337
1338 block gen_call(const char* name, block args) {
1339- block b = gen_op_block_unbound(CALL_JQ, name);
1340+ block b = gen_op_unbound(CALL_JQ, name);
1341 b.first->arglist = args;
1342 return b;
1343 }
1344@@ -306,30 +304,27 @@
1345
1346
1347 block gen_collect(block expr) {
1348- block array_var = block_bind(gen_op_var_unbound(STOREV, "collect"),
1349- gen_noop(), OP_HAS_VARIABLE);
1350+ block array_var = gen_op_var_fresh(STOREV, "collect");
1351 block c = BLOCK(gen_op_simple(DUP), gen_const(jv_array()), array_var);
1352
1353- block tail = BLOCK(gen_op_var_bound(APPEND, array_var),
1354+ block tail = BLOCK(gen_op_bound(APPEND, array_var),
1355 gen_op_simple(BACKTRACK));
1356
1357 return BLOCK(c,
1358 gen_op_target(FORK, tail),
1359 expr,
1360 tail,
1361- gen_op_var_bound(LOADVN, array_var));
1362+ gen_op_bound(LOADVN, array_var));
1363 }
1364
1365 block gen_reduce(const char* varname, block source, block init, block body) {
1366- block res_var = block_bind(gen_op_var_unbound(STOREV, "reduce"),
1367- gen_noop(), OP_HAS_VARIABLE);
1368-
1369+ block res_var = gen_op_var_fresh(STOREV, "reduce");
1370 block loop = BLOCK(gen_op_simple(DUP),
1371 source,
1372- block_bind(gen_op_var_unbound(STOREV, varname),
1373- BLOCK(gen_op_var_bound(LOADVN, res_var),
1374+ block_bind(gen_op_unbound(STOREV, varname),
1375+ BLOCK(gen_op_bound(LOADVN, res_var),
1376 body,
1377- gen_op_var_bound(STOREV, res_var)),
1378+ gen_op_bound(STOREV, res_var)),
1379 OP_HAS_VARIABLE),
1380 gen_op_simple(BACKTRACK));
1381 return BLOCK(gen_op_simple(DUP),
1382@@ -337,19 +332,18 @@
1383 res_var,
1384 gen_op_target(FORK, loop),
1385 loop,
1386- gen_op_var_bound(LOADVN, res_var));
1387+ gen_op_bound(LOADVN, res_var));
1388 }
1389
1390 block gen_definedor(block a, block b) {
1391 // var found := false
1392- block found_var = block_bind(gen_op_var_unbound(STOREV, "found"),
1393- gen_noop(), OP_HAS_VARIABLE);
1394+ block found_var = gen_op_var_fresh(STOREV, "found");
1395 block init = BLOCK(gen_op_simple(DUP), gen_const(jv_false()), found_var);
1396
1397 // if found, backtrack. Otherwise execute b
1398 block backtrack = gen_op_simple(BACKTRACK);
1399 block tail = BLOCK(gen_op_simple(DUP),
1400- gen_op_var_bound(LOADV, found_var),
1401+ gen_op_bound(LOADV, found_var),
1402 gen_op_target(JUMP_F, backtrack),
1403 backtrack,
1404 gen_op_simple(POP),
1405@@ -361,7 +355,7 @@
1406 // found := true, produce result
1407 block if_found = BLOCK(gen_op_simple(DUP),
1408 gen_const(jv_true()),
1409- gen_op_var_bound(STOREV, found_var),
1410+ gen_op_bound(STOREV, found_var),
1411 gen_op_target(JUMP, tail));
1412
1413 return BLOCK(init,
1414@@ -400,7 +394,7 @@
1415
1416 block gen_var_binding(block var, const char* name, block body) {
1417 return BLOCK(gen_op_simple(DUP), var,
1418- block_bind(gen_op_var_unbound(STOREV, name),
1419+ block_bind(gen_op_unbound(STOREV, name),
1420 body, OP_HAS_VARIABLE));
1421 }
1422
1423@@ -475,7 +469,7 @@
1424 break;
1425 case CLOSURE_CREATE:
1426 block_append(&prelude, b);
1427- block_append(&callargs, gen_op_block_bound(CLOSURE_REF, b));
1428+ block_append(&callargs, gen_op_bound(CLOSURE_REF, b));
1429 break;
1430 }
1431 actual_args++;
1432
1433=== modified file 'compile.h'
1434--- compile.h 2013-10-02 21:25:22 +0000
1435+++ compile.h 2017-04-13 17:33:55 +0000
1436@@ -2,13 +2,9 @@
1437 #define COMPILE_H
1438 #include <stdint.h>
1439 #include "jv.h"
1440-#include "opcode.h"
1441+#include "bytecode.h"
1442 #include "locfile.h"
1443
1444-struct bytecode;
1445-struct symbol_table;
1446-struct cfunction;
1447-
1448 struct inst;
1449 typedef struct inst inst;
1450
1451@@ -24,11 +20,12 @@
1452 block gen_op_simple(opcode op);
1453 block gen_const(jv constant);
1454 block gen_op_target(opcode op, block target);
1455-block gen_op_var_unbound(opcode op, const char* name);
1456-block gen_op_var_bound(opcode op, block binder);
1457-block gen_op_block_unbound(opcode op, const char* name);
1458+block gen_op_unbound(opcode op, const char* name);
1459+block gen_op_bound(opcode op, block binder);
1460+block gen_op_var_fresh(opcode op, const char* name);
1461
1462 block gen_function(const char* name, block formals, block body);
1463+block gen_param(const char* name);
1464 block gen_lambda(block body);
1465 block gen_call(const char* name, block body);
1466 block gen_subexp(block a);
1467
1468=== removed file 'config.h.in'
1469--- config.h.in 2013-10-02 21:25:22 +0000
1470+++ config.h.in 1970-01-01 00:00:00 +0000
1471@@ -1,32 +0,0 @@
1472-/* config.h.in. Generated from configure.ac by autoheader. */
1473-
1474-/* Define to 1 if your C compiler doesn't accept -c and -o together. */
1475-#undef NO_MINUS_C_MINUS_O
1476-
1477-/* Name of package */
1478-#undef PACKAGE
1479-
1480-/* Define to the address where bug reports for this package should be sent. */
1481-#undef PACKAGE_BUGREPORT
1482-
1483-/* Define to the full name of this package. */
1484-#undef PACKAGE_NAME
1485-
1486-/* Define to the full name and version of this package. */
1487-#undef PACKAGE_STRING
1488-
1489-/* Define to the one symbol short name of this package. */
1490-#undef PACKAGE_TARNAME
1491-
1492-/* Define to the home page for this package. */
1493-#undef PACKAGE_URL
1494-
1495-/* Define to the version of this package. */
1496-#undef PACKAGE_VERSION
1497-
1498-/* Version number of package */
1499-#undef VERSION
1500-
1501-/* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a
1502- `char[]'. */
1503-#undef YYTEXT_POINTER
1504
1505=== added file 'config/ar-lib'
1506--- config/ar-lib 1970-01-01 00:00:00 +0000
1507+++ config/ar-lib 2017-04-13 17:33:55 +0000
1508@@ -0,0 +1,270 @@
1509+#! /bin/sh
1510+# Wrapper for Microsoft lib.exe
1511+
1512+me=ar-lib
1513+scriptversion=2012-03-01.08; # UTC
1514+
1515+# Copyright (C) 2010-2013 Free Software Foundation, Inc.
1516+# Written by Peter Rosin <peda@lysator.liu.se>.
1517+#
1518+# This program is free software; you can redistribute it and/or modify
1519+# it under the terms of the GNU General Public License as published by
1520+# the Free Software Foundation; either version 2, or (at your option)
1521+# any later version.
1522+#
1523+# This program is distributed in the hope that it will be useful,
1524+# but WITHOUT ANY WARRANTY; without even the implied warranty of
1525+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1526+# GNU General Public License for more details.
1527+#
1528+# You should have received a copy of the GNU General Public License
1529+# along with this program. If not, see <http://www.gnu.org/licenses/>.
1530+
1531+# As a special exception to the GNU General Public License, if you
1532+# distribute this file as part of a program that contains a
1533+# configuration script generated by Autoconf, you may include it under
1534+# the same distribution terms that you use for the rest of that program.
1535+
1536+# This file is maintained in Automake, please report
1537+# bugs to <bug-automake@gnu.org> or send patches to
1538+# <automake-patches@gnu.org>.
1539+
1540+
1541+# func_error message
1542+func_error ()
1543+{
1544+ echo "$me: $1" 1>&2
1545+ exit 1
1546+}
1547+
1548+file_conv=
1549+
1550+# func_file_conv build_file
1551+# Convert a $build file to $host form and store it in $file
1552+# Currently only supports Windows hosts.
1553+func_file_conv ()
1554+{
1555+ file=$1
1556+ case $file in
1557+ / | /[!/]*) # absolute file, and not a UNC file
1558+ if test -z "$file_conv"; then
1559+ # lazily determine how to convert abs files
1560+ case `uname -s` in
1561+ MINGW*)
1562+ file_conv=mingw
1563+ ;;
1564+ CYGWIN*)
1565+ file_conv=cygwin
1566+ ;;
1567+ *)
1568+ file_conv=wine
1569+ ;;
1570+ esac
1571+ fi
1572+ case $file_conv in
1573+ mingw)
1574+ file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
1575+ ;;
1576+ cygwin)
1577+ file=`cygpath -m "$file" || echo "$file"`
1578+ ;;
1579+ wine)
1580+ file=`winepath -w "$file" || echo "$file"`
1581+ ;;
1582+ esac
1583+ ;;
1584+ esac
1585+}
1586+
1587+# func_at_file at_file operation archive
1588+# Iterate over all members in AT_FILE performing OPERATION on ARCHIVE
1589+# for each of them.
1590+# When interpreting the content of the @FILE, do NOT use func_file_conv,
1591+# since the user would need to supply preconverted file names to
1592+# binutils ar, at least for MinGW.
1593+func_at_file ()
1594+{
1595+ operation=$2
1596+ archive=$3
1597+ at_file_contents=`cat "$1"`
1598+ eval set x "$at_file_contents"
1599+ shift
1600+
1601+ for member
1602+ do
1603+ $AR -NOLOGO $operation:"$member" "$archive" || exit $?
1604+ done
1605+}
1606+
1607+case $1 in
1608+ '')
1609+ func_error "no command. Try '$0 --help' for more information."
1610+ ;;
1611+ -h | --h*)
1612+ cat <<EOF
1613+Usage: $me [--help] [--version] PROGRAM ACTION ARCHIVE [MEMBER...]
1614+
1615+Members may be specified in a file named with @FILE.
1616+EOF
1617+ exit $?
1618+ ;;
1619+ -v | --v*)
1620+ echo "$me, version $scriptversion"
1621+ exit $?
1622+ ;;
1623+esac
1624+
1625+if test $# -lt 3; then
1626+ func_error "you must specify a program, an action and an archive"
1627+fi
1628+
1629+AR=$1
1630+shift
1631+while :
1632+do
1633+ if test $# -lt 2; then
1634+ func_error "you must specify a program, an action and an archive"
1635+ fi
1636+ case $1 in
1637+ -lib | -LIB \
1638+ | -ltcg | -LTCG \
1639+ | -machine* | -MACHINE* \
1640+ | -subsystem* | -SUBSYSTEM* \
1641+ | -verbose | -VERBOSE \
1642+ | -wx* | -WX* )
1643+ AR="$AR $1"
1644+ shift
1645+ ;;
1646+ *)
1647+ action=$1
1648+ shift
1649+ break
1650+ ;;
1651+ esac
1652+done
1653+orig_archive=$1
1654+shift
1655+func_file_conv "$orig_archive"
1656+archive=$file
1657+
1658+# strip leading dash in $action
1659+action=${action#-}
1660+
1661+delete=
1662+extract=
1663+list=
1664+quick=
1665+replace=
1666+index=
1667+create=
1668+
1669+while test -n "$action"
1670+do
1671+ case $action in
1672+ d*) delete=yes ;;
1673+ x*) extract=yes ;;
1674+ t*) list=yes ;;
1675+ q*) quick=yes ;;
1676+ r*) replace=yes ;;
1677+ s*) index=yes ;;
1678+ S*) ;; # the index is always updated implicitly
1679+ c*) create=yes ;;
1680+ u*) ;; # TODO: don't ignore the update modifier
1681+ v*) ;; # TODO: don't ignore the verbose modifier
1682+ *)
1683+ func_error "unknown action specified"
1684+ ;;
1685+ esac
1686+ action=${action#?}
1687+done
1688+
1689+case $delete$extract$list$quick$replace,$index in
1690+ yes,* | ,yes)
1691+ ;;
1692+ yesyes*)
1693+ func_error "more than one action specified"
1694+ ;;
1695+ *)
1696+ func_error "no action specified"
1697+ ;;
1698+esac
1699+
1700+if test -n "$delete"; then
1701+ if test ! -f "$orig_archive"; then
1702+ func_error "archive not found"
1703+ fi
1704+ for member
1705+ do
1706+ case $1 in
1707+ @*)
1708+ func_at_file "${1#@}" -REMOVE "$archive"
1709+ ;;
1710+ *)
1711+ func_file_conv "$1"
1712+ $AR -NOLOGO -REMOVE:"$file" "$archive" || exit $?
1713+ ;;
1714+ esac
1715+ done
1716+
1717+elif test -n "$extract"; then
1718+ if test ! -f "$orig_archive"; then
1719+ func_error "archive not found"
1720+ fi
1721+ if test $# -gt 0; then
1722+ for member
1723+ do
1724+ case $1 in
1725+ @*)
1726+ func_at_file "${1#@}" -EXTRACT "$archive"
1727+ ;;
1728+ *)
1729+ func_file_conv "$1"
1730+ $AR -NOLOGO -EXTRACT:"$file" "$archive" || exit $?
1731+ ;;
1732+ esac
1733+ done
1734+ else
1735+ $AR -NOLOGO -LIST "$archive" | sed -e 's/\\/\\\\/g' | while read member
1736+ do
1737+ $AR -NOLOGO -EXTRACT:"$member" "$archive" || exit $?
1738+ done
1739+ fi
1740+
1741+elif test -n "$quick$replace"; then
1742+ if test ! -f "$orig_archive"; then
1743+ if test -z "$create"; then
1744+ echo "$me: creating $orig_archive"
1745+ fi
1746+ orig_archive=
1747+ else
1748+ orig_archive=$archive
1749+ fi
1750+
1751+ for member
1752+ do
1753+ case $1 in
1754+ @*)
1755+ func_file_conv "${1#@}"
1756+ set x "$@" "@$file"
1757+ ;;
1758+ *)
1759+ func_file_conv "$1"
1760+ set x "$@" "$file"
1761+ ;;
1762+ esac
1763+ shift
1764+ shift
1765+ done
1766+
1767+ if test -n "$orig_archive"; then
1768+ $AR -NOLOGO -OUT:"$archive" "$orig_archive" "$@" || exit $?
1769+ else
1770+ $AR -NOLOGO -OUT:"$archive" "$@" || exit $?
1771+ fi
1772+
1773+elif test -n "$list"; then
1774+ if test ! -f "$orig_archive"; then
1775+ func_error "archive not found"
1776+ fi
1777+ $AR -NOLOGO -LIST "$archive" || exit $?
1778+fi
1779
1780=== modified file 'config/compile'
1781--- config/compile 2013-10-02 21:25:22 +0000
1782+++ config/compile 2017-04-13 17:33:55 +0000
1783@@ -1,10 +1,9 @@
1784 #! /bin/sh
1785 # Wrapper for compilers which do not understand '-c -o'.
1786
1787-scriptversion=2012-03-05.13; # UTC
1788+scriptversion=2012-10-14.11; # UTC
1789
1790-# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009, 2010, 2012 Free
1791-# Software Foundation, Inc.
1792+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
1793 # Written by Tom Tromey <tromey@cygnus.com>.
1794 #
1795 # This program is free software; you can redistribute it and/or modify
1796@@ -113,6 +112,11 @@
1797 lib=$dir/$lib.lib
1798 break
1799 fi
1800+ if test -f "$dir/lib$lib.a"; then
1801+ found=yes
1802+ lib=$dir/lib$lib.a
1803+ break
1804+ fi
1805 done
1806 IFS=$save_IFS
1807
1808
1809=== added file 'config/config.guess'
1810--- config/config.guess 1970-01-01 00:00:00 +0000
1811+++ config/config.guess 2017-04-13 17:33:55 +0000
1812@@ -0,0 +1,1558 @@
1813+#! /bin/sh
1814+# Attempt to guess a canonical system name.
1815+# Copyright 1992-2013 Free Software Foundation, Inc.
1816+
1817+timestamp='2013-06-10'
1818+
1819+# This file is free software; you can redistribute it and/or modify it
1820+# under the terms of the GNU General Public License as published by
1821+# the Free Software Foundation; either version 3 of the License, or
1822+# (at your option) any later version.
1823+#
1824+# This program is distributed in the hope that it will be useful, but
1825+# WITHOUT ANY WARRANTY; without even the implied warranty of
1826+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
1827+# General Public License for more details.
1828+#
1829+# You should have received a copy of the GNU General Public License
1830+# along with this program; if not, see <http://www.gnu.org/licenses/>.
1831+#
1832+# As a special exception to the GNU General Public License, if you
1833+# distribute this file as part of a program that contains a
1834+# configuration script generated by Autoconf, you may include it under
1835+# the same distribution terms that you use for the rest of that
1836+# program. This Exception is an additional permission under section 7
1837+# of the GNU General Public License, version 3 ("GPLv3").
1838+#
1839+# Originally written by Per Bothner.
1840+#
1841+# You can get the latest version of this script from:
1842+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
1843+#
1844+# Please send patches with a ChangeLog entry to config-patches@gnu.org.
1845+
1846+
1847+me=`echo "$0" | sed -e 's,.*/,,'`
1848+
1849+usage="\
1850+Usage: $0 [OPTION]
1851+
1852+Output the configuration name of the system \`$me' is run on.
1853+
1854+Operation modes:
1855+ -h, --help print this help, then exit
1856+ -t, --time-stamp print date of last modification, then exit
1857+ -v, --version print version number, then exit
1858+
1859+Report bugs and patches to <config-patches@gnu.org>."
1860+
1861+version="\
1862+GNU config.guess ($timestamp)
1863+
1864+Originally written by Per Bothner.
1865+Copyright 1992-2013 Free Software Foundation, Inc.
1866+
1867+This is free software; see the source for copying conditions. There is NO
1868+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
1869+
1870+help="
1871+Try \`$me --help' for more information."
1872+
1873+# Parse command line
1874+while test $# -gt 0 ; do
1875+ case $1 in
1876+ --time-stamp | --time* | -t )
1877+ echo "$timestamp" ; exit ;;
1878+ --version | -v )
1879+ echo "$version" ; exit ;;
1880+ --help | --h* | -h )
1881+ echo "$usage"; exit ;;
1882+ -- ) # Stop option processing
1883+ shift; break ;;
1884+ - ) # Use stdin as input.
1885+ break ;;
1886+ -* )
1887+ echo "$me: invalid option $1$help" >&2
1888+ exit 1 ;;
1889+ * )
1890+ break ;;
1891+ esac
1892+done
1893+
1894+if test $# != 0; then
1895+ echo "$me: too many arguments$help" >&2
1896+ exit 1
1897+fi
1898+
1899+trap 'exit 1' 1 2 15
1900+
1901+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
1902+# compiler to aid in system detection is discouraged as it requires
1903+# temporary files to be created and, as you can see below, it is a
1904+# headache to deal with in a portable fashion.
1905+
1906+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
1907+# use `HOST_CC' if defined, but it is deprecated.
1908+
1909+# Portable tmp directory creation inspired by the Autoconf team.
1910+
1911+set_cc_for_build='
1912+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
1913+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
1914+: ${TMPDIR=/tmp} ;
1915+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
1916+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
1917+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
1918+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
1919+dummy=$tmp/dummy ;
1920+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
1921+case $CC_FOR_BUILD,$HOST_CC,$CC in
1922+ ,,) echo "int x;" > $dummy.c ;
1923+ for c in cc gcc c89 c99 ; do
1924+ if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
1925+ CC_FOR_BUILD="$c"; break ;
1926+ fi ;
1927+ done ;
1928+ if test x"$CC_FOR_BUILD" = x ; then
1929+ CC_FOR_BUILD=no_compiler_found ;
1930+ fi
1931+ ;;
1932+ ,,*) CC_FOR_BUILD=$CC ;;
1933+ ,*,*) CC_FOR_BUILD=$HOST_CC ;;
1934+esac ; set_cc_for_build= ;'
1935+
1936+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
1937+# (ghazi@noc.rutgers.edu 1994-08-24)
1938+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
1939+ PATH=$PATH:/.attbin ; export PATH
1940+fi
1941+
1942+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
1943+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
1944+UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
1945+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
1946+
1947+case "${UNAME_SYSTEM}" in
1948+Linux|GNU|GNU/*)
1949+ # If the system lacks a compiler, then just pick glibc.
1950+ # We could probably try harder.
1951+ LIBC=gnu
1952+
1953+ eval $set_cc_for_build
1954+ cat <<-EOF > $dummy.c
1955+ #include <features.h>
1956+ #if defined(__UCLIBC__)
1957+ LIBC=uclibc
1958+ #elif defined(__dietlibc__)
1959+ LIBC=dietlibc
1960+ #else
1961+ LIBC=gnu
1962+ #endif
1963+ EOF
1964+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
1965+ ;;
1966+esac
1967+
1968+# Note: order is significant - the case branches are not exclusive.
1969+
1970+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
1971+ *:NetBSD:*:*)
1972+ # NetBSD (nbsd) targets should (where applicable) match one or
1973+ # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
1974+ # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
1975+ # switched to ELF, *-*-netbsd* would select the old
1976+ # object file format. This provides both forward
1977+ # compatibility and a consistent mechanism for selecting the
1978+ # object file format.
1979+ #
1980+ # Note: NetBSD doesn't particularly care about the vendor
1981+ # portion of the name. We always set it to "unknown".
1982+ sysctl="sysctl -n hw.machine_arch"
1983+ UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
1984+ /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
1985+ case "${UNAME_MACHINE_ARCH}" in
1986+ armeb) machine=armeb-unknown ;;
1987+ arm*) machine=arm-unknown ;;
1988+ sh3el) machine=shl-unknown ;;
1989+ sh3eb) machine=sh-unknown ;;
1990+ sh5el) machine=sh5le-unknown ;;
1991+ *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
1992+ esac
1993+ # The Operating System including object format, if it has switched
1994+ # to ELF recently, or will in the future.
1995+ case "${UNAME_MACHINE_ARCH}" in
1996+ arm*|i386|m68k|ns32k|sh3*|sparc|vax)
1997+ eval $set_cc_for_build
1998+ if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
1999+ | grep -q __ELF__
2000+ then
2001+ # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
2002+ # Return netbsd for either. FIX?
2003+ os=netbsd
2004+ else
2005+ os=netbsdelf
2006+ fi
2007+ ;;
2008+ *)
2009+ os=netbsd
2010+ ;;
2011+ esac
2012+ # The OS release
2013+ # Debian GNU/NetBSD machines have a different userland, and
2014+ # thus, need a distinct triplet. However, they do not need
2015+ # kernel version information, so it can be replaced with a
2016+ # suitable tag, in the style of linux-gnu.
2017+ case "${UNAME_VERSION}" in
2018+ Debian*)
2019+ release='-gnu'
2020+ ;;
2021+ *)
2022+ release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
2023+ ;;
2024+ esac
2025+ # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
2026+ # contains redundant information, the shorter form:
2027+ # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
2028+ echo "${machine}-${os}${release}"
2029+ exit ;;
2030+ *:Bitrig:*:*)
2031+ UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
2032+ echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
2033+ exit ;;
2034+ *:OpenBSD:*:*)
2035+ UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
2036+ echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
2037+ exit ;;
2038+ *:ekkoBSD:*:*)
2039+ echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
2040+ exit ;;
2041+ *:SolidBSD:*:*)
2042+ echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
2043+ exit ;;
2044+ macppc:MirBSD:*:*)
2045+ echo powerpc-unknown-mirbsd${UNAME_RELEASE}
2046+ exit ;;
2047+ *:MirBSD:*:*)
2048+ echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
2049+ exit ;;
2050+ alpha:OSF1:*:*)
2051+ case $UNAME_RELEASE in
2052+ *4.0)
2053+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
2054+ ;;
2055+ *5.*)
2056+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
2057+ ;;
2058+ esac
2059+ # According to Compaq, /usr/sbin/psrinfo has been available on
2060+ # OSF/1 and Tru64 systems produced since 1995. I hope that
2061+ # covers most systems running today. This code pipes the CPU
2062+ # types through head -n 1, so we only detect the type of CPU 0.
2063+ ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
2064+ case "$ALPHA_CPU_TYPE" in
2065+ "EV4 (21064)")
2066+ UNAME_MACHINE="alpha" ;;
2067+ "EV4.5 (21064)")
2068+ UNAME_MACHINE="alpha" ;;
2069+ "LCA4 (21066/21068)")
2070+ UNAME_MACHINE="alpha" ;;
2071+ "EV5 (21164)")
2072+ UNAME_MACHINE="alphaev5" ;;
2073+ "EV5.6 (21164A)")
2074+ UNAME_MACHINE="alphaev56" ;;
2075+ "EV5.6 (21164PC)")
2076+ UNAME_MACHINE="alphapca56" ;;
2077+ "EV5.7 (21164PC)")
2078+ UNAME_MACHINE="alphapca57" ;;
2079+ "EV6 (21264)")
2080+ UNAME_MACHINE="alphaev6" ;;
2081+ "EV6.7 (21264A)")
2082+ UNAME_MACHINE="alphaev67" ;;
2083+ "EV6.8CB (21264C)")
2084+ UNAME_MACHINE="alphaev68" ;;
2085+ "EV6.8AL (21264B)")
2086+ UNAME_MACHINE="alphaev68" ;;
2087+ "EV6.8CX (21264D)")
2088+ UNAME_MACHINE="alphaev68" ;;
2089+ "EV6.9A (21264/EV69A)")
2090+ UNAME_MACHINE="alphaev69" ;;
2091+ "EV7 (21364)")
2092+ UNAME_MACHINE="alphaev7" ;;
2093+ "EV7.9 (21364A)")
2094+ UNAME_MACHINE="alphaev79" ;;
2095+ esac
2096+ # A Pn.n version is a patched version.
2097+ # A Vn.n version is a released version.
2098+ # A Tn.n version is a released field test version.
2099+ # A Xn.n version is an unreleased experimental baselevel.
2100+ # 1.2 uses "1.2" for uname -r.
2101+ echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
2102+ # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
2103+ exitcode=$?
2104+ trap '' 0
2105+ exit $exitcode ;;
2106+ Alpha\ *:Windows_NT*:*)
2107+ # How do we know it's Interix rather than the generic POSIX subsystem?
2108+ # Should we change UNAME_MACHINE based on the output of uname instead
2109+ # of the specific Alpha model?
2110+ echo alpha-pc-interix
2111+ exit ;;
2112+ 21064:Windows_NT:50:3)
2113+ echo alpha-dec-winnt3.5
2114+ exit ;;
2115+ Amiga*:UNIX_System_V:4.0:*)
2116+ echo m68k-unknown-sysv4
2117+ exit ;;
2118+ *:[Aa]miga[Oo][Ss]:*:*)
2119+ echo ${UNAME_MACHINE}-unknown-amigaos
2120+ exit ;;
2121+ *:[Mm]orph[Oo][Ss]:*:*)
2122+ echo ${UNAME_MACHINE}-unknown-morphos
2123+ exit ;;
2124+ *:OS/390:*:*)
2125+ echo i370-ibm-openedition
2126+ exit ;;
2127+ *:z/VM:*:*)
2128+ echo s390-ibm-zvmoe
2129+ exit ;;
2130+ *:OS400:*:*)
2131+ echo powerpc-ibm-os400
2132+ exit ;;
2133+ arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
2134+ echo arm-acorn-riscix${UNAME_RELEASE}
2135+ exit ;;
2136+ arm*:riscos:*:*|arm*:RISCOS:*:*)
2137+ echo arm-unknown-riscos
2138+ exit ;;
2139+ SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
2140+ echo hppa1.1-hitachi-hiuxmpp
2141+ exit ;;
2142+ Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
2143+ # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
2144+ if test "`(/bin/universe) 2>/dev/null`" = att ; then
2145+ echo pyramid-pyramid-sysv3
2146+ else
2147+ echo pyramid-pyramid-bsd
2148+ fi
2149+ exit ;;
2150+ NILE*:*:*:dcosx)
2151+ echo pyramid-pyramid-svr4
2152+ exit ;;
2153+ DRS?6000:unix:4.0:6*)
2154+ echo sparc-icl-nx6
2155+ exit ;;
2156+ DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
2157+ case `/usr/bin/uname -p` in
2158+ sparc) echo sparc-icl-nx7; exit ;;
2159+ esac ;;
2160+ s390x:SunOS:*:*)
2161+ echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
2162+ exit ;;
2163+ sun4H:SunOS:5.*:*)
2164+ echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
2165+ exit ;;
2166+ sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
2167+ echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
2168+ exit ;;
2169+ i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
2170+ echo i386-pc-auroraux${UNAME_RELEASE}
2171+ exit ;;
2172+ i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
2173+ eval $set_cc_for_build
2174+ SUN_ARCH="i386"
2175+ # If there is a compiler, see if it is configured for 64-bit objects.
2176+ # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
2177+ # This test works for both compilers.
2178+ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
2179+ if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
2180+ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
2181+ grep IS_64BIT_ARCH >/dev/null
2182+ then
2183+ SUN_ARCH="x86_64"
2184+ fi
2185+ fi
2186+ echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
2187+ exit ;;
2188+ sun4*:SunOS:6*:*)
2189+ # According to config.sub, this is the proper way to canonicalize
2190+ # SunOS6. Hard to guess exactly what SunOS6 will be like, but
2191+ # it's likely to be more like Solaris than SunOS4.
2192+ echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
2193+ exit ;;
2194+ sun4*:SunOS:*:*)
2195+ case "`/usr/bin/arch -k`" in
2196+ Series*|S4*)
2197+ UNAME_RELEASE=`uname -v`
2198+ ;;
2199+ esac
2200+ # Japanese Language versions have a version number like `4.1.3-JL'.
2201+ echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
2202+ exit ;;
2203+ sun3*:SunOS:*:*)
2204+ echo m68k-sun-sunos${UNAME_RELEASE}
2205+ exit ;;
2206+ sun*:*:4.2BSD:*)
2207+ UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
2208+ test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
2209+ case "`/bin/arch`" in
2210+ sun3)
2211+ echo m68k-sun-sunos${UNAME_RELEASE}
2212+ ;;
2213+ sun4)
2214+ echo sparc-sun-sunos${UNAME_RELEASE}
2215+ ;;
2216+ esac
2217+ exit ;;
2218+ aushp:SunOS:*:*)
2219+ echo sparc-auspex-sunos${UNAME_RELEASE}
2220+ exit ;;
2221+ # The situation for MiNT is a little confusing. The machine name
2222+ # can be virtually everything (everything which is not
2223+ # "atarist" or "atariste" at least should have a processor
2224+ # > m68000). The system name ranges from "MiNT" over "FreeMiNT"
2225+ # to the lowercase version "mint" (or "freemint"). Finally
2226+ # the system name "TOS" denotes a system which is actually not
2227+ # MiNT. But MiNT is downward compatible to TOS, so this should
2228+ # be no problem.
2229+ atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
2230+ echo m68k-atari-mint${UNAME_RELEASE}
2231+ exit ;;
2232+ atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
2233+ echo m68k-atari-mint${UNAME_RELEASE}
2234+ exit ;;
2235+ *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
2236+ echo m68k-atari-mint${UNAME_RELEASE}
2237+ exit ;;
2238+ milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
2239+ echo m68k-milan-mint${UNAME_RELEASE}
2240+ exit ;;
2241+ hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
2242+ echo m68k-hades-mint${UNAME_RELEASE}
2243+ exit ;;
2244+ *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
2245+ echo m68k-unknown-mint${UNAME_RELEASE}
2246+ exit ;;
2247+ m68k:machten:*:*)
2248+ echo m68k-apple-machten${UNAME_RELEASE}
2249+ exit ;;
2250+ powerpc:machten:*:*)
2251+ echo powerpc-apple-machten${UNAME_RELEASE}
2252+ exit ;;
2253+ RISC*:Mach:*:*)
2254+ echo mips-dec-mach_bsd4.3
2255+ exit ;;
2256+ RISC*:ULTRIX:*:*)
2257+ echo mips-dec-ultrix${UNAME_RELEASE}
2258+ exit ;;
2259+ VAX*:ULTRIX*:*:*)
2260+ echo vax-dec-ultrix${UNAME_RELEASE}
2261+ exit ;;
2262+ 2020:CLIX:*:* | 2430:CLIX:*:*)
2263+ echo clipper-intergraph-clix${UNAME_RELEASE}
2264+ exit ;;
2265+ mips:*:*:UMIPS | mips:*:*:RISCos)
2266+ eval $set_cc_for_build
2267+ sed 's/^ //' << EOF >$dummy.c
2268+#ifdef __cplusplus
2269+#include <stdio.h> /* for printf() prototype */
2270+ int main (int argc, char *argv[]) {
2271+#else
2272+ int main (argc, argv) int argc; char *argv[]; {
2273+#endif
2274+ #if defined (host_mips) && defined (MIPSEB)
2275+ #if defined (SYSTYPE_SYSV)
2276+ printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
2277+ #endif
2278+ #if defined (SYSTYPE_SVR4)
2279+ printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
2280+ #endif
2281+ #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
2282+ printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
2283+ #endif
2284+ #endif
2285+ exit (-1);
2286+ }
2287+EOF
2288+ $CC_FOR_BUILD -o $dummy $dummy.c &&
2289+ dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
2290+ SYSTEM_NAME=`$dummy $dummyarg` &&
2291+ { echo "$SYSTEM_NAME"; exit; }
2292+ echo mips-mips-riscos${UNAME_RELEASE}
2293+ exit ;;
2294+ Motorola:PowerMAX_OS:*:*)
2295+ echo powerpc-motorola-powermax
2296+ exit ;;
2297+ Motorola:*:4.3:PL8-*)
2298+ echo powerpc-harris-powermax
2299+ exit ;;
2300+ Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
2301+ echo powerpc-harris-powermax
2302+ exit ;;
2303+ Night_Hawk:Power_UNIX:*:*)
2304+ echo powerpc-harris-powerunix
2305+ exit ;;
2306+ m88k:CX/UX:7*:*)
2307+ echo m88k-harris-cxux7
2308+ exit ;;
2309+ m88k:*:4*:R4*)
2310+ echo m88k-motorola-sysv4
2311+ exit ;;
2312+ m88k:*:3*:R3*)
2313+ echo m88k-motorola-sysv3
2314+ exit ;;
2315+ AViiON:dgux:*:*)
2316+ # DG/UX returns AViiON for all architectures
2317+ UNAME_PROCESSOR=`/usr/bin/uname -p`
2318+ if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
2319+ then
2320+ if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
2321+ [ ${TARGET_BINARY_INTERFACE}x = x ]
2322+ then
2323+ echo m88k-dg-dgux${UNAME_RELEASE}
2324+ else
2325+ echo m88k-dg-dguxbcs${UNAME_RELEASE}
2326+ fi
2327+ else
2328+ echo i586-dg-dgux${UNAME_RELEASE}
2329+ fi
2330+ exit ;;
2331+ M88*:DolphinOS:*:*) # DolphinOS (SVR3)
2332+ echo m88k-dolphin-sysv3
2333+ exit ;;
2334+ M88*:*:R3*:*)
2335+ # Delta 88k system running SVR3
2336+ echo m88k-motorola-sysv3
2337+ exit ;;
2338+ XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
2339+ echo m88k-tektronix-sysv3
2340+ exit ;;
2341+ Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
2342+ echo m68k-tektronix-bsd
2343+ exit ;;
2344+ *:IRIX*:*:*)
2345+ echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
2346+ exit ;;
2347+ ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
2348+ echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
2349+ exit ;; # Note that: echo "'`uname -s`'" gives 'AIX '
2350+ i*86:AIX:*:*)
2351+ echo i386-ibm-aix
2352+ exit ;;
2353+ ia64:AIX:*:*)
2354+ if [ -x /usr/bin/oslevel ] ; then
2355+ IBM_REV=`/usr/bin/oslevel`
2356+ else
2357+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
2358+ fi
2359+ echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
2360+ exit ;;
2361+ *:AIX:2:3)
2362+ if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
2363+ eval $set_cc_for_build
2364+ sed 's/^ //' << EOF >$dummy.c
2365+ #include <sys/systemcfg.h>
2366+
2367+ main()
2368+ {
2369+ if (!__power_pc())
2370+ exit(1);
2371+ puts("powerpc-ibm-aix3.2.5");
2372+ exit(0);
2373+ }
2374+EOF
2375+ if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
2376+ then
2377+ echo "$SYSTEM_NAME"
2378+ else
2379+ echo rs6000-ibm-aix3.2.5
2380+ fi
2381+ elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
2382+ echo rs6000-ibm-aix3.2.4
2383+ else
2384+ echo rs6000-ibm-aix3.2
2385+ fi
2386+ exit ;;
2387+ *:AIX:*:[4567])
2388+ IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
2389+ if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
2390+ IBM_ARCH=rs6000
2391+ else
2392+ IBM_ARCH=powerpc
2393+ fi
2394+ if [ -x /usr/bin/oslevel ] ; then
2395+ IBM_REV=`/usr/bin/oslevel`
2396+ else
2397+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
2398+ fi
2399+ echo ${IBM_ARCH}-ibm-aix${IBM_REV}
2400+ exit ;;
2401+ *:AIX:*:*)
2402+ echo rs6000-ibm-aix
2403+ exit ;;
2404+ ibmrt:4.4BSD:*|romp-ibm:BSD:*)
2405+ echo romp-ibm-bsd4.4
2406+ exit ;;
2407+ ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
2408+ echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
2409+ exit ;; # report: romp-ibm BSD 4.3
2410+ *:BOSX:*:*)
2411+ echo rs6000-bull-bosx
2412+ exit ;;
2413+ DPX/2?00:B.O.S.:*:*)
2414+ echo m68k-bull-sysv3
2415+ exit ;;
2416+ 9000/[34]??:4.3bsd:1.*:*)
2417+ echo m68k-hp-bsd
2418+ exit ;;
2419+ hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
2420+ echo m68k-hp-bsd4.4
2421+ exit ;;
2422+ 9000/[34678]??:HP-UX:*:*)
2423+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
2424+ case "${UNAME_MACHINE}" in
2425+ 9000/31? ) HP_ARCH=m68000 ;;
2426+ 9000/[34]?? ) HP_ARCH=m68k ;;
2427+ 9000/[678][0-9][0-9])
2428+ if [ -x /usr/bin/getconf ]; then
2429+ sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
2430+ sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
2431+ case "${sc_cpu_version}" in
2432+ 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
2433+ 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
2434+ 532) # CPU_PA_RISC2_0
2435+ case "${sc_kernel_bits}" in
2436+ 32) HP_ARCH="hppa2.0n" ;;
2437+ 64) HP_ARCH="hppa2.0w" ;;
2438+ '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
2439+ esac ;;
2440+ esac
2441+ fi
2442+ if [ "${HP_ARCH}" = "" ]; then
2443+ eval $set_cc_for_build
2444+ sed 's/^ //' << EOF >$dummy.c
2445+
2446+ #define _HPUX_SOURCE
2447+ #include <stdlib.h>
2448+ #include <unistd.h>
2449+
2450+ int main ()
2451+ {
2452+ #if defined(_SC_KERNEL_BITS)
2453+ long bits = sysconf(_SC_KERNEL_BITS);
2454+ #endif
2455+ long cpu = sysconf (_SC_CPU_VERSION);
2456+
2457+ switch (cpu)
2458+ {
2459+ case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
2460+ case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
2461+ case CPU_PA_RISC2_0:
2462+ #if defined(_SC_KERNEL_BITS)
2463+ switch (bits)
2464+ {
2465+ case 64: puts ("hppa2.0w"); break;
2466+ case 32: puts ("hppa2.0n"); break;
2467+ default: puts ("hppa2.0"); break;
2468+ } break;
2469+ #else /* !defined(_SC_KERNEL_BITS) */
2470+ puts ("hppa2.0"); break;
2471+ #endif
2472+ default: puts ("hppa1.0"); break;
2473+ }
2474+ exit (0);
2475+ }
2476+EOF
2477+ (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
2478+ test -z "$HP_ARCH" && HP_ARCH=hppa
2479+ fi ;;
2480+ esac
2481+ if [ ${HP_ARCH} = "hppa2.0w" ]
2482+ then
2483+ eval $set_cc_for_build
2484+
2485+ # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
2486+ # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
2487+ # generating 64-bit code. GNU and HP use different nomenclature:
2488+ #
2489+ # $ CC_FOR_BUILD=cc ./config.guess
2490+ # => hppa2.0w-hp-hpux11.23
2491+ # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
2492+ # => hppa64-hp-hpux11.23
2493+
2494+ if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
2495+ grep -q __LP64__
2496+ then
2497+ HP_ARCH="hppa2.0w"
2498+ else
2499+ HP_ARCH="hppa64"
2500+ fi
2501+ fi
2502+ echo ${HP_ARCH}-hp-hpux${HPUX_REV}
2503+ exit ;;
2504+ ia64:HP-UX:*:*)
2505+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
2506+ echo ia64-hp-hpux${HPUX_REV}
2507+ exit ;;
2508+ 3050*:HI-UX:*:*)
2509+ eval $set_cc_for_build
2510+ sed 's/^ //' << EOF >$dummy.c
2511+ #include <unistd.h>
2512+ int
2513+ main ()
2514+ {
2515+ long cpu = sysconf (_SC_CPU_VERSION);
2516+ /* The order matters, because CPU_IS_HP_MC68K erroneously returns
2517+ true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
2518+ results, however. */
2519+ if (CPU_IS_PA_RISC (cpu))
2520+ {
2521+ switch (cpu)
2522+ {
2523+ case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
2524+ case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
2525+ case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
2526+ default: puts ("hppa-hitachi-hiuxwe2"); break;
2527+ }
2528+ }
2529+ else if (CPU_IS_HP_MC68K (cpu))
2530+ puts ("m68k-hitachi-hiuxwe2");
2531+ else puts ("unknown-hitachi-hiuxwe2");
2532+ exit (0);
2533+ }
2534+EOF
2535+ $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
2536+ { echo "$SYSTEM_NAME"; exit; }
2537+ echo unknown-hitachi-hiuxwe2
2538+ exit ;;
2539+ 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
2540+ echo hppa1.1-hp-bsd
2541+ exit ;;
2542+ 9000/8??:4.3bsd:*:*)
2543+ echo hppa1.0-hp-bsd
2544+ exit ;;
2545+ *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
2546+ echo hppa1.0-hp-mpeix
2547+ exit ;;
2548+ hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
2549+ echo hppa1.1-hp-osf
2550+ exit ;;
2551+ hp8??:OSF1:*:*)
2552+ echo hppa1.0-hp-osf
2553+ exit ;;
2554+ i*86:OSF1:*:*)
2555+ if [ -x /usr/sbin/sysversion ] ; then
2556+ echo ${UNAME_MACHINE}-unknown-osf1mk
2557+ else
2558+ echo ${UNAME_MACHINE}-unknown-osf1
2559+ fi
2560+ exit ;;
2561+ parisc*:Lites*:*:*)
2562+ echo hppa1.1-hp-lites
2563+ exit ;;
2564+ C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
2565+ echo c1-convex-bsd
2566+ exit ;;
2567+ C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
2568+ if getsysinfo -f scalar_acc
2569+ then echo c32-convex-bsd
2570+ else echo c2-convex-bsd
2571+ fi
2572+ exit ;;
2573+ C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
2574+ echo c34-convex-bsd
2575+ exit ;;
2576+ C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
2577+ echo c38-convex-bsd
2578+ exit ;;
2579+ C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
2580+ echo c4-convex-bsd
2581+ exit ;;
2582+ CRAY*Y-MP:*:*:*)
2583+ echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
2584+ exit ;;
2585+ CRAY*[A-Z]90:*:*:*)
2586+ echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
2587+ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
2588+ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
2589+ -e 's/\.[^.]*$/.X/'
2590+ exit ;;
2591+ CRAY*TS:*:*:*)
2592+ echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
2593+ exit ;;
2594+ CRAY*T3E:*:*:*)
2595+ echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
2596+ exit ;;
2597+ CRAY*SV1:*:*:*)
2598+ echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
2599+ exit ;;
2600+ *:UNICOS/mp:*:*)
2601+ echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
2602+ exit ;;
2603+ F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
2604+ FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
2605+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
2606+ FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
2607+ echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
2608+ exit ;;
2609+ 5000:UNIX_System_V:4.*:*)
2610+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
2611+ FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
2612+ echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
2613+ exit ;;
2614+ i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
2615+ echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
2616+ exit ;;
2617+ sparc*:BSD/OS:*:*)
2618+ echo sparc-unknown-bsdi${UNAME_RELEASE}
2619+ exit ;;
2620+ *:BSD/OS:*:*)
2621+ echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
2622+ exit ;;
2623+ *:FreeBSD:*:*)
2624+ UNAME_PROCESSOR=`/usr/bin/uname -p`
2625+ case ${UNAME_PROCESSOR} in
2626+ amd64)
2627+ echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
2628+ *)
2629+ echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
2630+ esac
2631+ exit ;;
2632+ i*:CYGWIN*:*)
2633+ echo ${UNAME_MACHINE}-pc-cygwin
2634+ exit ;;
2635+ *:MINGW64*:*)
2636+ echo ${UNAME_MACHINE}-pc-mingw64
2637+ exit ;;
2638+ *:MINGW*:*)
2639+ echo ${UNAME_MACHINE}-pc-mingw32
2640+ exit ;;
2641+ i*:MSYS*:*)
2642+ echo ${UNAME_MACHINE}-pc-msys
2643+ exit ;;
2644+ i*:windows32*:*)
2645+ # uname -m includes "-pc" on this system.
2646+ echo ${UNAME_MACHINE}-mingw32
2647+ exit ;;
2648+ i*:PW*:*)
2649+ echo ${UNAME_MACHINE}-pc-pw32
2650+ exit ;;
2651+ *:Interix*:*)
2652+ case ${UNAME_MACHINE} in
2653+ x86)
2654+ echo i586-pc-interix${UNAME_RELEASE}
2655+ exit ;;
2656+ authenticamd | genuineintel | EM64T)
2657+ echo x86_64-unknown-interix${UNAME_RELEASE}
2658+ exit ;;
2659+ IA64)
2660+ echo ia64-unknown-interix${UNAME_RELEASE}
2661+ exit ;;
2662+ esac ;;
2663+ [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
2664+ echo i${UNAME_MACHINE}-pc-mks
2665+ exit ;;
2666+ 8664:Windows_NT:*)
2667+ echo x86_64-pc-mks
2668+ exit ;;
2669+ i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
2670+ # How do we know it's Interix rather than the generic POSIX subsystem?
2671+ # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
2672+ # UNAME_MACHINE based on the output of uname instead of i386?
2673+ echo i586-pc-interix
2674+ exit ;;
2675+ i*:UWIN*:*)
2676+ echo ${UNAME_MACHINE}-pc-uwin
2677+ exit ;;
2678+ amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
2679+ echo x86_64-unknown-cygwin
2680+ exit ;;
2681+ p*:CYGWIN*:*)
2682+ echo powerpcle-unknown-cygwin
2683+ exit ;;
2684+ prep*:SunOS:5.*:*)
2685+ echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
2686+ exit ;;
2687+ *:GNU:*:*)
2688+ # the GNU system
2689+ echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
2690+ exit ;;
2691+ *:GNU/*:*:*)
2692+ # other systems with GNU libc and userland
2693+ echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
2694+ exit ;;
2695+ i*86:Minix:*:*)
2696+ echo ${UNAME_MACHINE}-pc-minix
2697+ exit ;;
2698+ aarch64:Linux:*:*)
2699+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
2700+ exit ;;
2701+ aarch64_be:Linux:*:*)
2702+ UNAME_MACHINE=aarch64_be
2703+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
2704+ exit ;;
2705+ alpha:Linux:*:*)
2706+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
2707+ EV5) UNAME_MACHINE=alphaev5 ;;
2708+ EV56) UNAME_MACHINE=alphaev56 ;;
2709+ PCA56) UNAME_MACHINE=alphapca56 ;;
2710+ PCA57) UNAME_MACHINE=alphapca56 ;;
2711+ EV6) UNAME_MACHINE=alphaev6 ;;
2712+ EV67) UNAME_MACHINE=alphaev67 ;;
2713+ EV68*) UNAME_MACHINE=alphaev68 ;;
2714+ esac
2715+ objdump --private-headers /bin/sh | grep -q ld.so.1
2716+ if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
2717+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
2718+ exit ;;
2719+ arc:Linux:*:* | arceb:Linux:*:*)
2720+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
2721+ exit ;;
2722+ arm*:Linux:*:*)
2723+ eval $set_cc_for_build
2724+ if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
2725+ | grep -q __ARM_EABI__
2726+ then
2727+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
2728+ else
2729+ if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
2730+ | grep -q __ARM_PCS_VFP
2731+ then
2732+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
2733+ else
2734+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
2735+ fi
2736+ fi
2737+ exit ;;
2738+ avr32*:Linux:*:*)
2739+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
2740+ exit ;;
2741+ cris:Linux:*:*)
2742+ echo ${UNAME_MACHINE}-axis-linux-${LIBC}
2743+ exit ;;
2744+ crisv32:Linux:*:*)
2745+ echo ${UNAME_MACHINE}-axis-linux-${LIBC}
2746+ exit ;;
2747+ frv:Linux:*:*)
2748+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
2749+ exit ;;
2750+ hexagon:Linux:*:*)
2751+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
2752+ exit ;;
2753+ i*86:Linux:*:*)
2754+ echo ${UNAME_MACHINE}-pc-linux-${LIBC}
2755+ exit ;;
2756+ ia64:Linux:*:*)
2757+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
2758+ exit ;;
2759+ m32r*:Linux:*:*)
2760+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
2761+ exit ;;
2762+ m68*:Linux:*:*)
2763+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
2764+ exit ;;
2765+ mips:Linux:*:* | mips64:Linux:*:*)
2766+ eval $set_cc_for_build
2767+ sed 's/^ //' << EOF >$dummy.c
2768+ #undef CPU
2769+ #undef ${UNAME_MACHINE}
2770+ #undef ${UNAME_MACHINE}el
2771+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
2772+ CPU=${UNAME_MACHINE}el
2773+ #else
2774+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
2775+ CPU=${UNAME_MACHINE}
2776+ #else
2777+ CPU=
2778+ #endif
2779+ #endif
2780+EOF
2781+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
2782+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
2783+ ;;
2784+ or1k:Linux:*:*)
2785+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
2786+ exit ;;
2787+ or32:Linux:*:*)
2788+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
2789+ exit ;;
2790+ padre:Linux:*:*)
2791+ echo sparc-unknown-linux-${LIBC}
2792+ exit ;;
2793+ parisc64:Linux:*:* | hppa64:Linux:*:*)
2794+ echo hppa64-unknown-linux-${LIBC}
2795+ exit ;;
2796+ parisc:Linux:*:* | hppa:Linux:*:*)
2797+ # Look for CPU level
2798+ case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
2799+ PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
2800+ PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
2801+ *) echo hppa-unknown-linux-${LIBC} ;;
2802+ esac
2803+ exit ;;
2804+ ppc64:Linux:*:*)
2805+ echo powerpc64-unknown-linux-${LIBC}
2806+ exit ;;
2807+ ppc:Linux:*:*)
2808+ echo powerpc-unknown-linux-${LIBC}
2809+ exit ;;
2810+ ppc64le:Linux:*:*)
2811+ echo powerpc64le-unknown-linux-${LIBC}
2812+ exit ;;
2813+ ppcle:Linux:*:*)
2814+ echo powerpcle-unknown-linux-${LIBC}
2815+ exit ;;
2816+ s390:Linux:*:* | s390x:Linux:*:*)
2817+ echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
2818+ exit ;;
2819+ sh64*:Linux:*:*)
2820+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
2821+ exit ;;
2822+ sh*:Linux:*:*)
2823+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
2824+ exit ;;
2825+ sparc:Linux:*:* | sparc64:Linux:*:*)
2826+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
2827+ exit ;;
2828+ tile*:Linux:*:*)
2829+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
2830+ exit ;;
2831+ vax:Linux:*:*)
2832+ echo ${UNAME_MACHINE}-dec-linux-${LIBC}
2833+ exit ;;
2834+ x86_64:Linux:*:*)
2835+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
2836+ exit ;;
2837+ xtensa*:Linux:*:*)
2838+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
2839+ exit ;;
2840+ i*86:DYNIX/ptx:4*:*)
2841+ # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
2842+ # earlier versions are messed up and put the nodename in both
2843+ # sysname and nodename.
2844+ echo i386-sequent-sysv4
2845+ exit ;;
2846+ i*86:UNIX_SV:4.2MP:2.*)
2847+ # Unixware is an offshoot of SVR4, but it has its own version
2848+ # number series starting with 2...
2849+ # I am not positive that other SVR4 systems won't match this,
2850+ # I just have to hope. -- rms.
2851+ # Use sysv4.2uw... so that sysv4* matches it.
2852+ echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
2853+ exit ;;
2854+ i*86:OS/2:*:*)
2855+ # If we were able to find `uname', then EMX Unix compatibility
2856+ # is probably installed.
2857+ echo ${UNAME_MACHINE}-pc-os2-emx
2858+ exit ;;
2859+ i*86:XTS-300:*:STOP)
2860+ echo ${UNAME_MACHINE}-unknown-stop
2861+ exit ;;
2862+ i*86:atheos:*:*)
2863+ echo ${UNAME_MACHINE}-unknown-atheos
2864+ exit ;;
2865+ i*86:syllable:*:*)
2866+ echo ${UNAME_MACHINE}-pc-syllable
2867+ exit ;;
2868+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
2869+ echo i386-unknown-lynxos${UNAME_RELEASE}
2870+ exit ;;
2871+ i*86:*DOS:*:*)
2872+ echo ${UNAME_MACHINE}-pc-msdosdjgpp
2873+ exit ;;
2874+ i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
2875+ UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
2876+ if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
2877+ echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
2878+ else
2879+ echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
2880+ fi
2881+ exit ;;
2882+ i*86:*:5:[678]*)
2883+ # UnixWare 7.x, OpenUNIX and OpenServer 6.
2884+ case `/bin/uname -X | grep "^Machine"` in
2885+ *486*) UNAME_MACHINE=i486 ;;
2886+ *Pentium) UNAME_MACHINE=i586 ;;
2887+ *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
2888+ esac
2889+ echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
2890+ exit ;;
2891+ i*86:*:3.2:*)
2892+ if test -f /usr/options/cb.name; then
2893+ UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
2894+ echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
2895+ elif /bin/uname -X 2>/dev/null >/dev/null ; then
2896+ UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
2897+ (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
2898+ (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
2899+ && UNAME_MACHINE=i586
2900+ (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
2901+ && UNAME_MACHINE=i686
2902+ (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
2903+ && UNAME_MACHINE=i686
2904+ echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
2905+ else
2906+ echo ${UNAME_MACHINE}-pc-sysv32
2907+ fi
2908+ exit ;;
2909+ pc:*:*:*)
2910+ # Left here for compatibility:
2911+ # uname -m prints for DJGPP always 'pc', but it prints nothing about
2912+ # the processor, so we play safe by assuming i586.
2913+ # Note: whatever this is, it MUST be the same as what config.sub
2914+ # prints for the "djgpp" host, or else GDB configury will decide that
2915+ # this is a cross-build.
2916+ echo i586-pc-msdosdjgpp
2917+ exit ;;
2918+ Intel:Mach:3*:*)
2919+ echo i386-pc-mach3
2920+ exit ;;
2921+ paragon:*:*:*)
2922+ echo i860-intel-osf1
2923+ exit ;;
2924+ i860:*:4.*:*) # i860-SVR4
2925+ if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
2926+ echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
2927+ else # Add other i860-SVR4 vendors below as they are discovered.
2928+ echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
2929+ fi
2930+ exit ;;
2931+ mini*:CTIX:SYS*5:*)
2932+ # "miniframe"
2933+ echo m68010-convergent-sysv
2934+ exit ;;
2935+ mc68k:UNIX:SYSTEM5:3.51m)
2936+ echo m68k-convergent-sysv
2937+ exit ;;
2938+ M680?0:D-NIX:5.3:*)
2939+ echo m68k-diab-dnix
2940+ exit ;;
2941+ M68*:*:R3V[5678]*:*)
2942+ test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
2943+ 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
2944+ OS_REL=''
2945+ test -r /etc/.relid \
2946+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
2947+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
2948+ && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
2949+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
2950+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
2951+ 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
2952+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
2953+ && { echo i486-ncr-sysv4; exit; } ;;
2954+ NCR*:*:4.2:* | MPRAS*:*:4.2:*)
2955+ OS_REL='.3'
2956+ test -r /etc/.relid \
2957+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
2958+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
2959+ && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
2960+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
2961+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
2962+ /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
2963+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
2964+ m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
2965+ echo m68k-unknown-lynxos${UNAME_RELEASE}
2966+ exit ;;
2967+ mc68030:UNIX_System_V:4.*:*)
2968+ echo m68k-atari-sysv4
2969+ exit ;;
2970+ TSUNAMI:LynxOS:2.*:*)
2971+ echo sparc-unknown-lynxos${UNAME_RELEASE}
2972+ exit ;;
2973+ rs6000:LynxOS:2.*:*)
2974+ echo rs6000-unknown-lynxos${UNAME_RELEASE}
2975+ exit ;;
2976+ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
2977+ echo powerpc-unknown-lynxos${UNAME_RELEASE}
2978+ exit ;;
2979+ SM[BE]S:UNIX_SV:*:*)
2980+ echo mips-dde-sysv${UNAME_RELEASE}
2981+ exit ;;
2982+ RM*:ReliantUNIX-*:*:*)
2983+ echo mips-sni-sysv4
2984+ exit ;;
2985+ RM*:SINIX-*:*:*)
2986+ echo mips-sni-sysv4
2987+ exit ;;
2988+ *:SINIX-*:*:*)
2989+ if uname -p 2>/dev/null >/dev/null ; then
2990+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
2991+ echo ${UNAME_MACHINE}-sni-sysv4
2992+ else
2993+ echo ns32k-sni-sysv
2994+ fi
2995+ exit ;;
2996+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
2997+ # says <Richard.M.Bartel@ccMail.Census.GOV>
2998+ echo i586-unisys-sysv4
2999+ exit ;;
3000+ *:UNIX_System_V:4*:FTX*)
3001+ # From Gerald Hewes <hewes@openmarket.com>.
3002+ # How about differentiating between stratus architectures? -djm
3003+ echo hppa1.1-stratus-sysv4
3004+ exit ;;
3005+ *:*:*:FTX*)
3006+ # From seanf@swdc.stratus.com.
3007+ echo i860-stratus-sysv4
3008+ exit ;;
3009+ i*86:VOS:*:*)
3010+ # From Paul.Green@stratus.com.
3011+ echo ${UNAME_MACHINE}-stratus-vos
3012+ exit ;;
3013+ *:VOS:*:*)
3014+ # From Paul.Green@stratus.com.
3015+ echo hppa1.1-stratus-vos
3016+ exit ;;
3017+ mc68*:A/UX:*:*)
3018+ echo m68k-apple-aux${UNAME_RELEASE}
3019+ exit ;;
3020+ news*:NEWS-OS:6*:*)
3021+ echo mips-sony-newsos6
3022+ exit ;;
3023+ R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
3024+ if [ -d /usr/nec ]; then
3025+ echo mips-nec-sysv${UNAME_RELEASE}
3026+ else
3027+ echo mips-unknown-sysv${UNAME_RELEASE}
3028+ fi
3029+ exit ;;
3030+ BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
3031+ echo powerpc-be-beos
3032+ exit ;;
3033+ BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
3034+ echo powerpc-apple-beos
3035+ exit ;;
3036+ BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
3037+ echo i586-pc-beos
3038+ exit ;;
3039+ BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
3040+ echo i586-pc-haiku
3041+ exit ;;
3042+ x86_64:Haiku:*:*)
3043+ echo x86_64-unknown-haiku
3044+ exit ;;
3045+ SX-4:SUPER-UX:*:*)
3046+ echo sx4-nec-superux${UNAME_RELEASE}
3047+ exit ;;
3048+ SX-5:SUPER-UX:*:*)
3049+ echo sx5-nec-superux${UNAME_RELEASE}
3050+ exit ;;
3051+ SX-6:SUPER-UX:*:*)
3052+ echo sx6-nec-superux${UNAME_RELEASE}
3053+ exit ;;
3054+ SX-7:SUPER-UX:*:*)
3055+ echo sx7-nec-superux${UNAME_RELEASE}
3056+ exit ;;
3057+ SX-8:SUPER-UX:*:*)
3058+ echo sx8-nec-superux${UNAME_RELEASE}
3059+ exit ;;
3060+ SX-8R:SUPER-UX:*:*)
3061+ echo sx8r-nec-superux${UNAME_RELEASE}
3062+ exit ;;
3063+ Power*:Rhapsody:*:*)
3064+ echo powerpc-apple-rhapsody${UNAME_RELEASE}
3065+ exit ;;
3066+ *:Rhapsody:*:*)
3067+ echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
3068+ exit ;;
3069+ *:Darwin:*:*)
3070+ UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
3071+ eval $set_cc_for_build
3072+ if test "$UNAME_PROCESSOR" = unknown ; then
3073+ UNAME_PROCESSOR=powerpc
3074+ fi
3075+ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
3076+ if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
3077+ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
3078+ grep IS_64BIT_ARCH >/dev/null
3079+ then
3080+ case $UNAME_PROCESSOR in
3081+ i386) UNAME_PROCESSOR=x86_64 ;;
3082+ powerpc) UNAME_PROCESSOR=powerpc64 ;;
3083+ esac
3084+ fi
3085+ fi
3086+ echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
3087+ exit ;;
3088+ *:procnto*:*:* | *:QNX:[0123456789]*:*)
3089+ UNAME_PROCESSOR=`uname -p`
3090+ if test "$UNAME_PROCESSOR" = "x86"; then
3091+ UNAME_PROCESSOR=i386
3092+ UNAME_MACHINE=pc
3093+ fi
3094+ echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
3095+ exit ;;
3096+ *:QNX:*:4*)
3097+ echo i386-pc-qnx
3098+ exit ;;
3099+ NEO-?:NONSTOP_KERNEL:*:*)
3100+ echo neo-tandem-nsk${UNAME_RELEASE}
3101+ exit ;;
3102+ NSE-*:NONSTOP_KERNEL:*:*)
3103+ echo nse-tandem-nsk${UNAME_RELEASE}
3104+ exit ;;
3105+ NSR-?:NONSTOP_KERNEL:*:*)
3106+ echo nsr-tandem-nsk${UNAME_RELEASE}
3107+ exit ;;
3108+ *:NonStop-UX:*:*)
3109+ echo mips-compaq-nonstopux
3110+ exit ;;
3111+ BS2000:POSIX*:*:*)
3112+ echo bs2000-siemens-sysv
3113+ exit ;;
3114+ DS/*:UNIX_System_V:*:*)
3115+ echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
3116+ exit ;;
3117+ *:Plan9:*:*)
3118+ # "uname -m" is not consistent, so use $cputype instead. 386
3119+ # is converted to i386 for consistency with other x86
3120+ # operating systems.
3121+ if test "$cputype" = "386"; then
3122+ UNAME_MACHINE=i386
3123+ else
3124+ UNAME_MACHINE="$cputype"
3125+ fi
3126+ echo ${UNAME_MACHINE}-unknown-plan9
3127+ exit ;;
3128+ *:TOPS-10:*:*)
3129+ echo pdp10-unknown-tops10
3130+ exit ;;
3131+ *:TENEX:*:*)
3132+ echo pdp10-unknown-tenex
3133+ exit ;;
3134+ KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
3135+ echo pdp10-dec-tops20
3136+ exit ;;
3137+ XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
3138+ echo pdp10-xkl-tops20
3139+ exit ;;
3140+ *:TOPS-20:*:*)
3141+ echo pdp10-unknown-tops20
3142+ exit ;;
3143+ *:ITS:*:*)
3144+ echo pdp10-unknown-its
3145+ exit ;;
3146+ SEI:*:*:SEIUX)
3147+ echo mips-sei-seiux${UNAME_RELEASE}
3148+ exit ;;
3149+ *:DragonFly:*:*)
3150+ echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
3151+ exit ;;
3152+ *:*VMS:*:*)
3153+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
3154+ case "${UNAME_MACHINE}" in
3155+ A*) echo alpha-dec-vms ; exit ;;
3156+ I*) echo ia64-dec-vms ; exit ;;
3157+ V*) echo vax-dec-vms ; exit ;;
3158+ esac ;;
3159+ *:XENIX:*:SysV)
3160+ echo i386-pc-xenix
3161+ exit ;;
3162+ i*86:skyos:*:*)
3163+ echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
3164+ exit ;;
3165+ i*86:rdos:*:*)
3166+ echo ${UNAME_MACHINE}-pc-rdos
3167+ exit ;;
3168+ i*86:AROS:*:*)
3169+ echo ${UNAME_MACHINE}-pc-aros
3170+ exit ;;
3171+ x86_64:VMkernel:*:*)
3172+ echo ${UNAME_MACHINE}-unknown-esx
3173+ exit ;;
3174+esac
3175+
3176+eval $set_cc_for_build
3177+cat >$dummy.c <<EOF
3178+#ifdef _SEQUENT_
3179+# include <sys/types.h>
3180+# include <sys/utsname.h>
3181+#endif
3182+main ()
3183+{
3184+#if defined (sony)
3185+#if defined (MIPSEB)
3186+ /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
3187+ I don't know.... */
3188+ printf ("mips-sony-bsd\n"); exit (0);
3189+#else
3190+#include <sys/param.h>
3191+ printf ("m68k-sony-newsos%s\n",
3192+#ifdef NEWSOS4
3193+ "4"
3194+#else
3195+ ""
3196+#endif
3197+ ); exit (0);
3198+#endif
3199+#endif
3200+
3201+#if defined (__arm) && defined (__acorn) && defined (__unix)
3202+ printf ("arm-acorn-riscix\n"); exit (0);
3203+#endif
3204+
3205+#if defined (hp300) && !defined (hpux)
3206+ printf ("m68k-hp-bsd\n"); exit (0);
3207+#endif
3208+
3209+#if defined (NeXT)
3210+#if !defined (__ARCHITECTURE__)
3211+#define __ARCHITECTURE__ "m68k"
3212+#endif
3213+ int version;
3214+ version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
3215+ if (version < 4)
3216+ printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
3217+ else
3218+ printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
3219+ exit (0);
3220+#endif
3221+
3222+#if defined (MULTIMAX) || defined (n16)
3223+#if defined (UMAXV)
3224+ printf ("ns32k-encore-sysv\n"); exit (0);
3225+#else
3226+#if defined (CMU)
3227+ printf ("ns32k-encore-mach\n"); exit (0);
3228+#else
3229+ printf ("ns32k-encore-bsd\n"); exit (0);
3230+#endif
3231+#endif
3232+#endif
3233+
3234+#if defined (__386BSD__)
3235+ printf ("i386-pc-bsd\n"); exit (0);
3236+#endif
3237+
3238+#if defined (sequent)
3239+#if defined (i386)
3240+ printf ("i386-sequent-dynix\n"); exit (0);
3241+#endif
3242+#if defined (ns32000)
3243+ printf ("ns32k-sequent-dynix\n"); exit (0);
3244+#endif
3245+#endif
3246+
3247+#if defined (_SEQUENT_)
3248+ struct utsname un;
3249+
3250+ uname(&un);
3251+
3252+ if (strncmp(un.version, "V2", 2) == 0) {
3253+ printf ("i386-sequent-ptx2\n"); exit (0);
3254+ }
3255+ if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
3256+ printf ("i386-sequent-ptx1\n"); exit (0);
3257+ }
3258+ printf ("i386-sequent-ptx\n"); exit (0);
3259+
3260+#endif
3261+
3262+#if defined (vax)
3263+# if !defined (ultrix)
3264+# include <sys/param.h>
3265+# if defined (BSD)
3266+# if BSD == 43
3267+ printf ("vax-dec-bsd4.3\n"); exit (0);
3268+# else
3269+# if BSD == 199006
3270+ printf ("vax-dec-bsd4.3reno\n"); exit (0);
3271+# else
3272+ printf ("vax-dec-bsd\n"); exit (0);
3273+# endif
3274+# endif
3275+# else
3276+ printf ("vax-dec-bsd\n"); exit (0);
3277+# endif
3278+# else
3279+ printf ("vax-dec-ultrix\n"); exit (0);
3280+# endif
3281+#endif
3282+
3283+#if defined (alliant) && defined (i860)
3284+ printf ("i860-alliant-bsd\n"); exit (0);
3285+#endif
3286+
3287+ exit (1);
3288+}
3289+EOF
3290+
3291+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
3292+ { echo "$SYSTEM_NAME"; exit; }
3293+
3294+# Apollos put the system type in the environment.
3295+
3296+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
3297+
3298+# Convex versions that predate uname can use getsysinfo(1)
3299+
3300+if [ -x /usr/convex/getsysinfo ]
3301+then
3302+ case `getsysinfo -f cpu_type` in
3303+ c1*)
3304+ echo c1-convex-bsd
3305+ exit ;;
3306+ c2*)
3307+ if getsysinfo -f scalar_acc
3308+ then echo c32-convex-bsd
3309+ else echo c2-convex-bsd
3310+ fi
3311+ exit ;;
3312+ c34*)
3313+ echo c34-convex-bsd
3314+ exit ;;
3315+ c38*)
3316+ echo c38-convex-bsd
3317+ exit ;;
3318+ c4*)
3319+ echo c4-convex-bsd
3320+ exit ;;
3321+ esac
3322+fi
3323+
3324+cat >&2 <<EOF
3325+$0: unable to guess system type
3326+
3327+This script, last modified $timestamp, has failed to recognize
3328+the operating system you are using. It is advised that you
3329+download the most up to date version of the config scripts from
3330+
3331+ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
3332+and
3333+ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
3334+
3335+If the version you run ($0) is already up to date, please
3336+send the following data and any information you think might be
3337+pertinent to <config-patches@gnu.org> in order to provide the needed
3338+information to handle your system.
3339+
3340+config.guess timestamp = $timestamp
3341+
3342+uname -m = `(uname -m) 2>/dev/null || echo unknown`
3343+uname -r = `(uname -r) 2>/dev/null || echo unknown`
3344+uname -s = `(uname -s) 2>/dev/null || echo unknown`
3345+uname -v = `(uname -v) 2>/dev/null || echo unknown`
3346+
3347+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
3348+/bin/uname -X = `(/bin/uname -X) 2>/dev/null`
3349+
3350+hostinfo = `(hostinfo) 2>/dev/null`
3351+/bin/universe = `(/bin/universe) 2>/dev/null`
3352+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null`
3353+/bin/arch = `(/bin/arch) 2>/dev/null`
3354+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
3355+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
3356+
3357+UNAME_MACHINE = ${UNAME_MACHINE}
3358+UNAME_RELEASE = ${UNAME_RELEASE}
3359+UNAME_SYSTEM = ${UNAME_SYSTEM}
3360+UNAME_VERSION = ${UNAME_VERSION}
3361+EOF
3362+
3363+exit 1
3364+
3365+# Local variables:
3366+# eval: (add-hook 'write-file-hooks 'time-stamp)
3367+# time-stamp-start: "timestamp='"
3368+# time-stamp-format: "%:y-%02m-%02d"
3369+# time-stamp-end: "'"
3370+# End:
3371
3372=== added file 'config/config.sub'
3373--- config/config.sub 1970-01-01 00:00:00 +0000
3374+++ config/config.sub 2017-04-13 17:33:55 +0000
3375@@ -0,0 +1,1791 @@
3376+#! /bin/sh
3377+# Configuration validation subroutine script.
3378+# Copyright 1992-2013 Free Software Foundation, Inc.
3379+
3380+timestamp='2013-08-10'
3381+
3382+# This file is free software; you can redistribute it and/or modify it
3383+# under the terms of the GNU General Public License as published by
3384+# the Free Software Foundation; either version 3 of the License, or
3385+# (at your option) any later version.
3386+#
3387+# This program is distributed in the hope that it will be useful, but
3388+# WITHOUT ANY WARRANTY; without even the implied warranty of
3389+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
3390+# General Public License for more details.
3391+#
3392+# You should have received a copy of the GNU General Public License
3393+# along with this program; if not, see <http://www.gnu.org/licenses/>.
3394+#
3395+# As a special exception to the GNU General Public License, if you
3396+# distribute this file as part of a program that contains a
3397+# configuration script generated by Autoconf, you may include it under
3398+# the same distribution terms that you use for the rest of that
3399+# program. This Exception is an additional permission under section 7
3400+# of the GNU General Public License, version 3 ("GPLv3").
3401+
3402+
3403+# Please send patches with a ChangeLog entry to config-patches@gnu.org.
3404+#
3405+# Configuration subroutine to validate and canonicalize a configuration type.
3406+# Supply the specified configuration type as an argument.
3407+# If it is invalid, we print an error message on stderr and exit with code 1.
3408+# Otherwise, we print the canonical config type on stdout and succeed.
3409+
3410+# You can get the latest version of this script from:
3411+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
3412+
3413+# This file is supposed to be the same for all GNU packages
3414+# and recognize all the CPU types, system types and aliases
3415+# that are meaningful with *any* GNU software.
3416+# Each package is responsible for reporting which valid configurations
3417+# it does not support. The user should be able to distinguish
3418+# a failure to support a valid configuration from a meaningless
3419+# configuration.
3420+
3421+# The goal of this file is to map all the various variations of a given
3422+# machine specification into a single specification in the form:
3423+# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
3424+# or in some cases, the newer four-part form:
3425+# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
3426+# It is wrong to echo any other type of specification.
3427+
3428+me=`echo "$0" | sed -e 's,.*/,,'`
3429+
3430+usage="\
3431+Usage: $0 [OPTION] CPU-MFR-OPSYS
3432+ $0 [OPTION] ALIAS
3433+
3434+Canonicalize a configuration name.
3435+
3436+Operation modes:
3437+ -h, --help print this help, then exit
3438+ -t, --time-stamp print date of last modification, then exit
3439+ -v, --version print version number, then exit
3440+
3441+Report bugs and patches to <config-patches@gnu.org>."
3442+
3443+version="\
3444+GNU config.sub ($timestamp)
3445+
3446+Copyright 1992-2013 Free Software Foundation, Inc.
3447+
3448+This is free software; see the source for copying conditions. There is NO
3449+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
3450+
3451+help="
3452+Try \`$me --help' for more information."
3453+
3454+# Parse command line
3455+while test $# -gt 0 ; do
3456+ case $1 in
3457+ --time-stamp | --time* | -t )
3458+ echo "$timestamp" ; exit ;;
3459+ --version | -v )
3460+ echo "$version" ; exit ;;
3461+ --help | --h* | -h )
3462+ echo "$usage"; exit ;;
3463+ -- ) # Stop option processing
3464+ shift; break ;;
3465+ - ) # Use stdin as input.
3466+ break ;;
3467+ -* )
3468+ echo "$me: invalid option $1$help"
3469+ exit 1 ;;
3470+
3471+ *local*)
3472+ # First pass through any local machine types.
3473+ echo $1
3474+ exit ;;
3475+
3476+ * )
3477+ break ;;
3478+ esac
3479+done
3480+
3481+case $# in
3482+ 0) echo "$me: missing argument$help" >&2
3483+ exit 1;;
3484+ 1) ;;
3485+ *) echo "$me: too many arguments$help" >&2
3486+ exit 1;;
3487+esac
3488+
3489+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
3490+# Here we must recognize all the valid KERNEL-OS combinations.
3491+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
3492+case $maybe_os in
3493+ nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
3494+ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
3495+ knetbsd*-gnu* | netbsd*-gnu* | \
3496+ kopensolaris*-gnu* | \
3497+ storm-chaos* | os2-emx* | rtmk-nova*)
3498+ os=-$maybe_os
3499+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
3500+ ;;
3501+ android-linux)
3502+ os=-linux-android
3503+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
3504+ ;;
3505+ *)
3506+ basic_machine=`echo $1 | sed 's/-[^-]*$//'`
3507+ if [ $basic_machine != $1 ]
3508+ then os=`echo $1 | sed 's/.*-/-/'`
3509+ else os=; fi
3510+ ;;
3511+esac
3512+
3513+### Let's recognize common machines as not being operating systems so
3514+### that things like config.sub decstation-3100 work. We also
3515+### recognize some manufacturers as not being operating systems, so we
3516+### can provide default operating systems below.
3517+case $os in
3518+ -sun*os*)
3519+ # Prevent following clause from handling this invalid input.
3520+ ;;
3521+ -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
3522+ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
3523+ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
3524+ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
3525+ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
3526+ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
3527+ -apple | -axis | -knuth | -cray | -microblaze*)
3528+ os=
3529+ basic_machine=$1
3530+ ;;
3531+ -bluegene*)
3532+ os=-cnk
3533+ ;;
3534+ -sim | -cisco | -oki | -wec | -winbond)
3535+ os=
3536+ basic_machine=$1
3537+ ;;
3538+ -scout)
3539+ ;;
3540+ -wrs)
3541+ os=-vxworks
3542+ basic_machine=$1
3543+ ;;
3544+ -chorusos*)
3545+ os=-chorusos
3546+ basic_machine=$1
3547+ ;;
3548+ -chorusrdb)
3549+ os=-chorusrdb
3550+ basic_machine=$1
3551+ ;;
3552+ -hiux*)
3553+ os=-hiuxwe2
3554+ ;;
3555+ -sco6)
3556+ os=-sco5v6
3557+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
3558+ ;;
3559+ -sco5)
3560+ os=-sco3.2v5
3561+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
3562+ ;;
3563+ -sco4)
3564+ os=-sco3.2v4
3565+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
3566+ ;;
3567+ -sco3.2.[4-9]*)
3568+ os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
3569+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
3570+ ;;
3571+ -sco3.2v[4-9]*)
3572+ # Don't forget version if it is 3.2v4 or newer.
3573+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
3574+ ;;
3575+ -sco5v6*)
3576+ # Don't forget version if it is 3.2v4 or newer.
3577+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
3578+ ;;
3579+ -sco*)
3580+ os=-sco3.2v2
3581+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
3582+ ;;
3583+ -udk*)
3584+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
3585+ ;;
3586+ -isc)
3587+ os=-isc2.2
3588+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
3589+ ;;
3590+ -clix*)
3591+ basic_machine=clipper-intergraph
3592+ ;;
3593+ -isc*)
3594+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
3595+ ;;
3596+ -lynx*178)
3597+ os=-lynxos178
3598+ ;;
3599+ -lynx*5)
3600+ os=-lynxos5
3601+ ;;
3602+ -lynx*)
3603+ os=-lynxos
3604+ ;;
3605+ -ptx*)
3606+ basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
3607+ ;;
3608+ -windowsnt*)
3609+ os=`echo $os | sed -e 's/windowsnt/winnt/'`
3610+ ;;
3611+ -psos*)
3612+ os=-psos
3613+ ;;
3614+ -mint | -mint[0-9]*)
3615+ basic_machine=m68k-atari
3616+ os=-mint
3617+ ;;
3618+esac
3619+
3620+# Decode aliases for certain CPU-COMPANY combinations.
3621+case $basic_machine in
3622+ # Recognize the basic CPU types without company name.
3623+ # Some are omitted here because they have special meanings below.
3624+ 1750a | 580 \
3625+ | a29k \
3626+ | aarch64 | aarch64_be \
3627+ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
3628+ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
3629+ | am33_2.0 \
3630+ | arc | arceb \
3631+ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
3632+ | avr | avr32 \
3633+ | be32 | be64 \
3634+ | bfin \
3635+ | c4x | c8051 | clipper \
3636+ | d10v | d30v | dlx | dsp16xx \
3637+ | epiphany \
3638+ | fido | fr30 | frv \
3639+ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
3640+ | hexagon \
3641+ | i370 | i860 | i960 | ia64 \
3642+ | ip2k | iq2000 \
3643+ | le32 | le64 \
3644+ | lm32 \
3645+ | m32c | m32r | m32rle | m68000 | m68k | m88k \
3646+ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \
3647+ | mips | mipsbe | mipseb | mipsel | mipsle \
3648+ | mips16 \
3649+ | mips64 | mips64el \
3650+ | mips64octeon | mips64octeonel \
3651+ | mips64orion | mips64orionel \
3652+ | mips64r5900 | mips64r5900el \
3653+ | mips64vr | mips64vrel \
3654+ | mips64vr4100 | mips64vr4100el \
3655+ | mips64vr4300 | mips64vr4300el \
3656+ | mips64vr5000 | mips64vr5000el \
3657+ | mips64vr5900 | mips64vr5900el \
3658+ | mipsisa32 | mipsisa32el \
3659+ | mipsisa32r2 | mipsisa32r2el \
3660+ | mipsisa64 | mipsisa64el \
3661+ | mipsisa64r2 | mipsisa64r2el \
3662+ | mipsisa64sb1 | mipsisa64sb1el \
3663+ | mipsisa64sr71k | mipsisa64sr71kel \
3664+ | mipsr5900 | mipsr5900el \
3665+ | mipstx39 | mipstx39el \
3666+ | mn10200 | mn10300 \
3667+ | moxie \
3668+ | mt \
3669+ | msp430 \
3670+ | nds32 | nds32le | nds32be \
3671+ | nios | nios2 | nios2eb | nios2el \
3672+ | ns16k | ns32k \
3673+ | open8 \
3674+ | or1k | or32 \
3675+ | pdp10 | pdp11 | pj | pjl \
3676+ | powerpc | powerpc64 | powerpc64le | powerpcle \
3677+ | pyramid \
3678+ | rl78 | rx \
3679+ | score \
3680+ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
3681+ | sh64 | sh64le \
3682+ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
3683+ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
3684+ | spu \
3685+ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
3686+ | ubicom32 \
3687+ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
3688+ | we32k \
3689+ | x86 | xc16x | xstormy16 | xtensa \
3690+ | z8k | z80)
3691+ basic_machine=$basic_machine-unknown
3692+ ;;
3693+ c54x)
3694+ basic_machine=tic54x-unknown
3695+ ;;
3696+ c55x)
3697+ basic_machine=tic55x-unknown
3698+ ;;
3699+ c6x)
3700+ basic_machine=tic6x-unknown
3701+ ;;
3702+ m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
3703+ basic_machine=$basic_machine-unknown
3704+ os=-none
3705+ ;;
3706+ m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
3707+ ;;
3708+ ms1)
3709+ basic_machine=mt-unknown
3710+ ;;
3711+
3712+ strongarm | thumb | xscale)
3713+ basic_machine=arm-unknown
3714+ ;;
3715+ xgate)
3716+ basic_machine=$basic_machine-unknown
3717+ os=-none
3718+ ;;
3719+ xscaleeb)
3720+ basic_machine=armeb-unknown
3721+ ;;
3722+
3723+ xscaleel)
3724+ basic_machine=armel-unknown
3725+ ;;
3726+
3727+ # We use `pc' rather than `unknown'
3728+ # because (1) that's what they normally are, and
3729+ # (2) the word "unknown" tends to confuse beginning users.
3730+ i*86 | x86_64)
3731+ basic_machine=$basic_machine-pc
3732+ ;;
3733+ # Object if more than one company name word.
3734+ *-*-*)
3735+ echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
3736+ exit 1
3737+ ;;
3738+ # Recognize the basic CPU types with company name.
3739+ 580-* \
3740+ | a29k-* \
3741+ | aarch64-* | aarch64_be-* \
3742+ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
3743+ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
3744+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
3745+ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
3746+ | avr-* | avr32-* \
3747+ | be32-* | be64-* \
3748+ | bfin-* | bs2000-* \
3749+ | c[123]* | c30-* | [cjt]90-* | c4x-* \
3750+ | c8051-* | clipper-* | craynv-* | cydra-* \
3751+ | d10v-* | d30v-* | dlx-* \
3752+ | elxsi-* \
3753+ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
3754+ | h8300-* | h8500-* \
3755+ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
3756+ | hexagon-* \
3757+ | i*86-* | i860-* | i960-* | ia64-* \
3758+ | ip2k-* | iq2000-* \
3759+ | le32-* | le64-* \
3760+ | lm32-* \
3761+ | m32c-* | m32r-* | m32rle-* \
3762+ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
3763+ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
3764+ | microblaze-* | microblazeel-* \
3765+ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
3766+ | mips16-* \
3767+ | mips64-* | mips64el-* \
3768+ | mips64octeon-* | mips64octeonel-* \
3769+ | mips64orion-* | mips64orionel-* \
3770+ | mips64r5900-* | mips64r5900el-* \
3771+ | mips64vr-* | mips64vrel-* \
3772+ | mips64vr4100-* | mips64vr4100el-* \
3773+ | mips64vr4300-* | mips64vr4300el-* \
3774+ | mips64vr5000-* | mips64vr5000el-* \
3775+ | mips64vr5900-* | mips64vr5900el-* \
3776+ | mipsisa32-* | mipsisa32el-* \
3777+ | mipsisa32r2-* | mipsisa32r2el-* \
3778+ | mipsisa64-* | mipsisa64el-* \
3779+ | mipsisa64r2-* | mipsisa64r2el-* \
3780+ | mipsisa64sb1-* | mipsisa64sb1el-* \
3781+ | mipsisa64sr71k-* | mipsisa64sr71kel-* \
3782+ | mipsr5900-* | mipsr5900el-* \
3783+ | mipstx39-* | mipstx39el-* \
3784+ | mmix-* \
3785+ | mt-* \
3786+ | msp430-* \
3787+ | nds32-* | nds32le-* | nds32be-* \
3788+ | nios-* | nios2-* | nios2eb-* | nios2el-* \
3789+ | none-* | np1-* | ns16k-* | ns32k-* \
3790+ | open8-* \
3791+ | orion-* \
3792+ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
3793+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
3794+ | pyramid-* \
3795+ | rl78-* | romp-* | rs6000-* | rx-* \
3796+ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
3797+ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
3798+ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
3799+ | sparclite-* \
3800+ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
3801+ | tahoe-* \
3802+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
3803+ | tile*-* \
3804+ | tron-* \
3805+ | ubicom32-* \
3806+ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
3807+ | vax-* \
3808+ | we32k-* \
3809+ | x86-* | x86_64-* | xc16x-* | xps100-* \
3810+ | xstormy16-* | xtensa*-* \
3811+ | ymp-* \
3812+ | z8k-* | z80-*)
3813+ ;;
3814+ # Recognize the basic CPU types without company name, with glob match.
3815+ xtensa*)
3816+ basic_machine=$basic_machine-unknown
3817+ ;;
3818+ # Recognize the various machine names and aliases which stand
3819+ # for a CPU type and a company and sometimes even an OS.
3820+ 386bsd)
3821+ basic_machine=i386-unknown
3822+ os=-bsd
3823+ ;;
3824+ 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
3825+ basic_machine=m68000-att
3826+ ;;
3827+ 3b*)
3828+ basic_machine=we32k-att
3829+ ;;
3830+ a29khif)
3831+ basic_machine=a29k-amd
3832+ os=-udi
3833+ ;;
3834+ abacus)
3835+ basic_machine=abacus-unknown
3836+ ;;
3837+ adobe68k)
3838+ basic_machine=m68010-adobe
3839+ os=-scout
3840+ ;;
3841+ alliant | fx80)
3842+ basic_machine=fx80-alliant
3843+ ;;
3844+ altos | altos3068)
3845+ basic_machine=m68k-altos
3846+ ;;
3847+ am29k)
3848+ basic_machine=a29k-none
3849+ os=-bsd
3850+ ;;
3851+ amd64)
3852+ basic_machine=x86_64-pc
3853+ ;;
3854+ amd64-*)
3855+ basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
3856+ ;;
3857+ amdahl)
3858+ basic_machine=580-amdahl
3859+ os=-sysv
3860+ ;;
3861+ amiga | amiga-*)
3862+ basic_machine=m68k-unknown
3863+ ;;
3864+ amigaos | amigados)
3865+ basic_machine=m68k-unknown
3866+ os=-amigaos
3867+ ;;
3868+ amigaunix | amix)
3869+ basic_machine=m68k-unknown
3870+ os=-sysv4
3871+ ;;
3872+ apollo68)
3873+ basic_machine=m68k-apollo
3874+ os=-sysv
3875+ ;;
3876+ apollo68bsd)
3877+ basic_machine=m68k-apollo
3878+ os=-bsd
3879+ ;;
3880+ aros)
3881+ basic_machine=i386-pc
3882+ os=-aros
3883+ ;;
3884+ aux)
3885+ basic_machine=m68k-apple
3886+ os=-aux
3887+ ;;
3888+ balance)
3889+ basic_machine=ns32k-sequent
3890+ os=-dynix
3891+ ;;
3892+ blackfin)
3893+ basic_machine=bfin-unknown
3894+ os=-linux
3895+ ;;
3896+ blackfin-*)
3897+ basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
3898+ os=-linux
3899+ ;;
3900+ bluegene*)
3901+ basic_machine=powerpc-ibm
3902+ os=-cnk
3903+ ;;
3904+ c54x-*)
3905+ basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
3906+ ;;
3907+ c55x-*)
3908+ basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
3909+ ;;
3910+ c6x-*)
3911+ basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
3912+ ;;
3913+ c90)
3914+ basic_machine=c90-cray
3915+ os=-unicos
3916+ ;;
3917+ cegcc)
3918+ basic_machine=arm-unknown
3919+ os=-cegcc
3920+ ;;
3921+ convex-c1)
3922+ basic_machine=c1-convex
3923+ os=-bsd
3924+ ;;
3925+ convex-c2)
3926+ basic_machine=c2-convex
3927+ os=-bsd
3928+ ;;
3929+ convex-c32)
3930+ basic_machine=c32-convex
3931+ os=-bsd
3932+ ;;
3933+ convex-c34)
3934+ basic_machine=c34-convex
3935+ os=-bsd
3936+ ;;
3937+ convex-c38)
3938+ basic_machine=c38-convex
3939+ os=-bsd
3940+ ;;
3941+ cray | j90)
3942+ basic_machine=j90-cray
3943+ os=-unicos
3944+ ;;
3945+ craynv)
3946+ basic_machine=craynv-cray
3947+ os=-unicosmp
3948+ ;;
3949+ cr16 | cr16-*)
3950+ basic_machine=cr16-unknown
3951+ os=-elf
3952+ ;;
3953+ crds | unos)
3954+ basic_machine=m68k-crds
3955+ ;;
3956+ crisv32 | crisv32-* | etraxfs*)
3957+ basic_machine=crisv32-axis
3958+ ;;
3959+ cris | cris-* | etrax*)
3960+ basic_machine=cris-axis
3961+ ;;
3962+ crx)
3963+ basic_machine=crx-unknown
3964+ os=-elf
3965+ ;;
3966+ da30 | da30-*)
3967+ basic_machine=m68k-da30
3968+ ;;
3969+ decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
3970+ basic_machine=mips-dec
3971+ ;;
3972+ decsystem10* | dec10*)
3973+ basic_machine=pdp10-dec
3974+ os=-tops10
3975+ ;;
3976+ decsystem20* | dec20*)
3977+ basic_machine=pdp10-dec
3978+ os=-tops20
3979+ ;;
3980+ delta | 3300 | motorola-3300 | motorola-delta \
3981+ | 3300-motorola | delta-motorola)
3982+ basic_machine=m68k-motorola
3983+ ;;
3984+ delta88)
3985+ basic_machine=m88k-motorola
3986+ os=-sysv3
3987+ ;;
3988+ dicos)
3989+ basic_machine=i686-pc
3990+ os=-dicos
3991+ ;;
3992+ djgpp)
3993+ basic_machine=i586-pc
3994+ os=-msdosdjgpp
3995+ ;;
3996+ dpx20 | dpx20-*)
3997+ basic_machine=rs6000-bull
3998+ os=-bosx
3999+ ;;
4000+ dpx2* | dpx2*-bull)
4001+ basic_machine=m68k-bull
4002+ os=-sysv3
4003+ ;;
4004+ ebmon29k)
4005+ basic_machine=a29k-amd
4006+ os=-ebmon
4007+ ;;
4008+ elxsi)
4009+ basic_machine=elxsi-elxsi
4010+ os=-bsd
4011+ ;;
4012+ encore | umax | mmax)
4013+ basic_machine=ns32k-encore
4014+ ;;
4015+ es1800 | OSE68k | ose68k | ose | OSE)
4016+ basic_machine=m68k-ericsson
4017+ os=-ose
4018+ ;;
4019+ fx2800)
4020+ basic_machine=i860-alliant
4021+ ;;
4022+ genix)
4023+ basic_machine=ns32k-ns
4024+ ;;
4025+ gmicro)
4026+ basic_machine=tron-gmicro
4027+ os=-sysv
4028+ ;;
4029+ go32)
4030+ basic_machine=i386-pc
4031+ os=-go32
4032+ ;;
4033+ h3050r* | hiux*)
4034+ basic_machine=hppa1.1-hitachi
4035+ os=-hiuxwe2
4036+ ;;
4037+ h8300hms)
4038+ basic_machine=h8300-hitachi
4039+ os=-hms
4040+ ;;
4041+ h8300xray)
4042+ basic_machine=h8300-hitachi
4043+ os=-xray
4044+ ;;
4045+ h8500hms)
4046+ basic_machine=h8500-hitachi
4047+ os=-hms
4048+ ;;
4049+ harris)
4050+ basic_machine=m88k-harris
4051+ os=-sysv3
4052+ ;;
4053+ hp300-*)
4054+ basic_machine=m68k-hp
4055+ ;;
4056+ hp300bsd)
4057+ basic_machine=m68k-hp
4058+ os=-bsd
4059+ ;;
4060+ hp300hpux)
4061+ basic_machine=m68k-hp
4062+ os=-hpux
4063+ ;;
4064+ hp3k9[0-9][0-9] | hp9[0-9][0-9])
4065+ basic_machine=hppa1.0-hp
4066+ ;;
4067+ hp9k2[0-9][0-9] | hp9k31[0-9])
4068+ basic_machine=m68000-hp
4069+ ;;
4070+ hp9k3[2-9][0-9])
4071+ basic_machine=m68k-hp
4072+ ;;
4073+ hp9k6[0-9][0-9] | hp6[0-9][0-9])
4074+ basic_machine=hppa1.0-hp
4075+ ;;
4076+ hp9k7[0-79][0-9] | hp7[0-79][0-9])
4077+ basic_machine=hppa1.1-hp
4078+ ;;
4079+ hp9k78[0-9] | hp78[0-9])
4080+ # FIXME: really hppa2.0-hp
4081+ basic_machine=hppa1.1-hp
4082+ ;;
4083+ hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
4084+ # FIXME: really hppa2.0-hp
4085+ basic_machine=hppa1.1-hp
4086+ ;;
4087+ hp9k8[0-9][13679] | hp8[0-9][13679])
4088+ basic_machine=hppa1.1-hp
4089+ ;;
4090+ hp9k8[0-9][0-9] | hp8[0-9][0-9])
4091+ basic_machine=hppa1.0-hp
4092+ ;;
4093+ hppa-next)
4094+ os=-nextstep3
4095+ ;;
4096+ hppaosf)
4097+ basic_machine=hppa1.1-hp
4098+ os=-osf
4099+ ;;
4100+ hppro)
4101+ basic_machine=hppa1.1-hp
4102+ os=-proelf
4103+ ;;
4104+ i370-ibm* | ibm*)
4105+ basic_machine=i370-ibm
4106+ ;;
4107+ i*86v32)
4108+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
4109+ os=-sysv32
4110+ ;;
4111+ i*86v4*)
4112+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
4113+ os=-sysv4
4114+ ;;
4115+ i*86v)
4116+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
4117+ os=-sysv
4118+ ;;
4119+ i*86sol2)
4120+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
4121+ os=-solaris2
4122+ ;;
4123+ i386mach)
4124+ basic_machine=i386-mach
4125+ os=-mach
4126+ ;;
4127+ i386-vsta | vsta)
4128+ basic_machine=i386-unknown
4129+ os=-vsta
4130+ ;;
4131+ iris | iris4d)
4132+ basic_machine=mips-sgi
4133+ case $os in
4134+ -irix*)
4135+ ;;
4136+ *)
4137+ os=-irix4
4138+ ;;
4139+ esac
4140+ ;;
4141+ isi68 | isi)
4142+ basic_machine=m68k-isi
4143+ os=-sysv
4144+ ;;
4145+ m68knommu)
4146+ basic_machine=m68k-unknown
4147+ os=-linux
4148+ ;;
4149+ m68knommu-*)
4150+ basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
4151+ os=-linux
4152+ ;;
4153+ m88k-omron*)
4154+ basic_machine=m88k-omron
4155+ ;;
4156+ magnum | m3230)
4157+ basic_machine=mips-mips
4158+ os=-sysv
4159+ ;;
4160+ merlin)
4161+ basic_machine=ns32k-utek
4162+ os=-sysv
4163+ ;;
4164+ microblaze*)
4165+ basic_machine=microblaze-xilinx
4166+ ;;
4167+ mingw64)
4168+ basic_machine=x86_64-pc
4169+ os=-mingw64
4170+ ;;
4171+ mingw32)
4172+ basic_machine=i686-pc
4173+ os=-mingw32
4174+ ;;
4175+ mingw32ce)
4176+ basic_machine=arm-unknown
4177+ os=-mingw32ce
4178+ ;;
4179+ miniframe)
4180+ basic_machine=m68000-convergent
4181+ ;;
4182+ *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
4183+ basic_machine=m68k-atari
4184+ os=-mint
4185+ ;;
4186+ mips3*-*)
4187+ basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
4188+ ;;
4189+ mips3*)
4190+ basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
4191+ ;;
4192+ monitor)
4193+ basic_machine=m68k-rom68k
4194+ os=-coff
4195+ ;;
4196+ morphos)
4197+ basic_machine=powerpc-unknown
4198+ os=-morphos
4199+ ;;
4200+ msdos)
4201+ basic_machine=i386-pc
4202+ os=-msdos
4203+ ;;
4204+ ms1-*)
4205+ basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
4206+ ;;
4207+ msys)
4208+ basic_machine=i686-pc
4209+ os=-msys
4210+ ;;
4211+ mvs)
4212+ basic_machine=i370-ibm
4213+ os=-mvs
4214+ ;;
4215+ nacl)
4216+ basic_machine=le32-unknown
4217+ os=-nacl
4218+ ;;
4219+ ncr3000)
4220+ basic_machine=i486-ncr
4221+ os=-sysv4
4222+ ;;
4223+ netbsd386)
4224+ basic_machine=i386-unknown
4225+ os=-netbsd
4226+ ;;
4227+ netwinder)
4228+ basic_machine=armv4l-rebel
4229+ os=-linux
4230+ ;;
4231+ news | news700 | news800 | news900)
4232+ basic_machine=m68k-sony
4233+ os=-newsos
4234+ ;;
4235+ news1000)
4236+ basic_machine=m68030-sony
4237+ os=-newsos
4238+ ;;
4239+ news-3600 | risc-news)
4240+ basic_machine=mips-sony
4241+ os=-newsos
4242+ ;;
4243+ necv70)
4244+ basic_machine=v70-nec
4245+ os=-sysv
4246+ ;;
4247+ next | m*-next )
4248+ basic_machine=m68k-next
4249+ case $os in
4250+ -nextstep* )
4251+ ;;
4252+ -ns2*)
4253+ os=-nextstep2
4254+ ;;
4255+ *)
4256+ os=-nextstep3
4257+ ;;
4258+ esac
4259+ ;;
4260+ nh3000)
4261+ basic_machine=m68k-harris
4262+ os=-cxux
4263+ ;;
4264+ nh[45]000)
4265+ basic_machine=m88k-harris
4266+ os=-cxux
4267+ ;;
4268+ nindy960)
4269+ basic_machine=i960-intel
4270+ os=-nindy
4271+ ;;
4272+ mon960)
4273+ basic_machine=i960-intel
4274+ os=-mon960
4275+ ;;
4276+ nonstopux)
4277+ basic_machine=mips-compaq
4278+ os=-nonstopux
4279+ ;;
4280+ np1)
4281+ basic_machine=np1-gould
4282+ ;;
4283+ neo-tandem)
4284+ basic_machine=neo-tandem
4285+ ;;
4286+ nse-tandem)
4287+ basic_machine=nse-tandem
4288+ ;;
4289+ nsr-tandem)
4290+ basic_machine=nsr-tandem
4291+ ;;
4292+ op50n-* | op60c-*)
4293+ basic_machine=hppa1.1-oki
4294+ os=-proelf
4295+ ;;
4296+ openrisc | openrisc-*)
4297+ basic_machine=or32-unknown
4298+ ;;
4299+ os400)
4300+ basic_machine=powerpc-ibm
4301+ os=-os400
4302+ ;;
4303+ OSE68000 | ose68000)
4304+ basic_machine=m68000-ericsson
4305+ os=-ose
4306+ ;;
4307+ os68k)
4308+ basic_machine=m68k-none
4309+ os=-os68k
4310+ ;;
4311+ pa-hitachi)
4312+ basic_machine=hppa1.1-hitachi
4313+ os=-hiuxwe2
4314+ ;;
4315+ paragon)
4316+ basic_machine=i860-intel
4317+ os=-osf
4318+ ;;
4319+ parisc)
4320+ basic_machine=hppa-unknown
4321+ os=-linux
4322+ ;;
4323+ parisc-*)
4324+ basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
4325+ os=-linux
4326+ ;;
4327+ pbd)
4328+ basic_machine=sparc-tti
4329+ ;;
4330+ pbb)
4331+ basic_machine=m68k-tti
4332+ ;;
4333+ pc532 | pc532-*)
4334+ basic_machine=ns32k-pc532
4335+ ;;
4336+ pc98)
4337+ basic_machine=i386-pc
4338+ ;;
4339+ pc98-*)
4340+ basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
4341+ ;;
4342+ pentium | p5 | k5 | k6 | nexgen | viac3)
4343+ basic_machine=i586-pc
4344+ ;;
4345+ pentiumpro | p6 | 6x86 | athlon | athlon_*)
4346+ basic_machine=i686-pc
4347+ ;;
4348+ pentiumii | pentium2 | pentiumiii | pentium3)
4349+ basic_machine=i686-pc
4350+ ;;
4351+ pentium4)
4352+ basic_machine=i786-pc
4353+ ;;
4354+ pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
4355+ basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
4356+ ;;
4357+ pentiumpro-* | p6-* | 6x86-* | athlon-*)
4358+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
4359+ ;;
4360+ pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
4361+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
4362+ ;;
4363+ pentium4-*)
4364+ basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
4365+ ;;
4366+ pn)
4367+ basic_machine=pn-gould
4368+ ;;
4369+ power) basic_machine=power-ibm
4370+ ;;
4371+ ppc | ppcbe) basic_machine=powerpc-unknown
4372+ ;;
4373+ ppc-* | ppcbe-*)
4374+ basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
4375+ ;;
4376+ ppcle | powerpclittle | ppc-le | powerpc-little)
4377+ basic_machine=powerpcle-unknown
4378+ ;;
4379+ ppcle-* | powerpclittle-*)
4380+ basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
4381+ ;;
4382+ ppc64) basic_machine=powerpc64-unknown
4383+ ;;
4384+ ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
4385+ ;;
4386+ ppc64le | powerpc64little | ppc64-le | powerpc64-little)
4387+ basic_machine=powerpc64le-unknown
4388+ ;;
4389+ ppc64le-* | powerpc64little-*)
4390+ basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
4391+ ;;
4392+ ps2)
4393+ basic_machine=i386-ibm
4394+ ;;
4395+ pw32)
4396+ basic_machine=i586-unknown
4397+ os=-pw32
4398+ ;;
4399+ rdos | rdos64)
4400+ basic_machine=x86_64-pc
4401+ os=-rdos
4402+ ;;
4403+ rdos32)
4404+ basic_machine=i386-pc
4405+ os=-rdos
4406+ ;;
4407+ rom68k)
4408+ basic_machine=m68k-rom68k
4409+ os=-coff
4410+ ;;
4411+ rm[46]00)
4412+ basic_machine=mips-siemens
4413+ ;;
4414+ rtpc | rtpc-*)
4415+ basic_machine=romp-ibm
4416+ ;;
4417+ s390 | s390-*)
4418+ basic_machine=s390-ibm
4419+ ;;
4420+ s390x | s390x-*)
4421+ basic_machine=s390x-ibm
4422+ ;;
4423+ sa29200)
4424+ basic_machine=a29k-amd
4425+ os=-udi
4426+ ;;
4427+ sb1)
4428+ basic_machine=mipsisa64sb1-unknown
4429+ ;;
4430+ sb1el)
4431+ basic_machine=mipsisa64sb1el-unknown
4432+ ;;
4433+ sde)
4434+ basic_machine=mipsisa32-sde
4435+ os=-elf
4436+ ;;
4437+ sei)
4438+ basic_machine=mips-sei
4439+ os=-seiux
4440+ ;;
4441+ sequent)
4442+ basic_machine=i386-sequent
4443+ ;;
4444+ sh)
4445+ basic_machine=sh-hitachi
4446+ os=-hms
4447+ ;;
4448+ sh5el)
4449+ basic_machine=sh5le-unknown
4450+ ;;
4451+ sh64)
4452+ basic_machine=sh64-unknown
4453+ ;;
4454+ sparclite-wrs | simso-wrs)
4455+ basic_machine=sparclite-wrs
4456+ os=-vxworks
4457+ ;;
4458+ sps7)
4459+ basic_machine=m68k-bull
4460+ os=-sysv2
4461+ ;;
4462+ spur)
4463+ basic_machine=spur-unknown
4464+ ;;
4465+ st2000)
4466+ basic_machine=m68k-tandem
4467+ ;;
4468+ stratus)
4469+ basic_machine=i860-stratus
4470+ os=-sysv4
4471+ ;;
4472+ strongarm-* | thumb-*)
4473+ basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
4474+ ;;
4475+ sun2)
4476+ basic_machine=m68000-sun
4477+ ;;
4478+ sun2os3)
4479+ basic_machine=m68000-sun
4480+ os=-sunos3
4481+ ;;
4482+ sun2os4)
4483+ basic_machine=m68000-sun
4484+ os=-sunos4
4485+ ;;
4486+ sun3os3)
4487+ basic_machine=m68k-sun
4488+ os=-sunos3
4489+ ;;
4490+ sun3os4)
4491+ basic_machine=m68k-sun
4492+ os=-sunos4
4493+ ;;
4494+ sun4os3)
4495+ basic_machine=sparc-sun
4496+ os=-sunos3
4497+ ;;
4498+ sun4os4)
4499+ basic_machine=sparc-sun
4500+ os=-sunos4
4501+ ;;
4502+ sun4sol2)
4503+ basic_machine=sparc-sun
4504+ os=-solaris2
4505+ ;;
4506+ sun3 | sun3-*)
4507+ basic_machine=m68k-sun
4508+ ;;
4509+ sun4)
4510+ basic_machine=sparc-sun
4511+ ;;
4512+ sun386 | sun386i | roadrunner)
4513+ basic_machine=i386-sun
4514+ ;;
4515+ sv1)
4516+ basic_machine=sv1-cray
4517+ os=-unicos
4518+ ;;
4519+ symmetry)
4520+ basic_machine=i386-sequent
4521+ os=-dynix
4522+ ;;
4523+ t3e)
4524+ basic_machine=alphaev5-cray
4525+ os=-unicos
4526+ ;;
4527+ t90)
4528+ basic_machine=t90-cray
4529+ os=-unicos
4530+ ;;
4531+ tile*)
4532+ basic_machine=$basic_machine-unknown
4533+ os=-linux-gnu
4534+ ;;
4535+ tx39)
4536+ basic_machine=mipstx39-unknown
4537+ ;;
4538+ tx39el)
4539+ basic_machine=mipstx39el-unknown
4540+ ;;
4541+ toad1)
4542+ basic_machine=pdp10-xkl
4543+ os=-tops20
4544+ ;;
4545+ tower | tower-32)
4546+ basic_machine=m68k-ncr
4547+ ;;
4548+ tpf)
4549+ basic_machine=s390x-ibm
4550+ os=-tpf
4551+ ;;
4552+ udi29k)
4553+ basic_machine=a29k-amd
4554+ os=-udi
4555+ ;;
4556+ ultra3)
4557+ basic_machine=a29k-nyu
4558+ os=-sym1
4559+ ;;
4560+ v810 | necv810)
4561+ basic_machine=v810-nec
4562+ os=-none
4563+ ;;
4564+ vaxv)
4565+ basic_machine=vax-dec
4566+ os=-sysv
4567+ ;;
4568+ vms)
4569+ basic_machine=vax-dec
4570+ os=-vms
4571+ ;;
4572+ vpp*|vx|vx-*)
4573+ basic_machine=f301-fujitsu
4574+ ;;
4575+ vxworks960)
4576+ basic_machine=i960-wrs
4577+ os=-vxworks
4578+ ;;
4579+ vxworks68)
4580+ basic_machine=m68k-wrs
4581+ os=-vxworks
4582+ ;;
4583+ vxworks29k)
4584+ basic_machine=a29k-wrs
4585+ os=-vxworks
4586+ ;;
4587+ w65*)
4588+ basic_machine=w65-wdc
4589+ os=-none
4590+ ;;
4591+ w89k-*)
4592+ basic_machine=hppa1.1-winbond
4593+ os=-proelf
4594+ ;;
4595+ xbox)
4596+ basic_machine=i686-pc
4597+ os=-mingw32
4598+ ;;
4599+ xps | xps100)
4600+ basic_machine=xps100-honeywell
4601+ ;;
4602+ xscale-* | xscalee[bl]-*)
4603+ basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
4604+ ;;
4605+ ymp)
4606+ basic_machine=ymp-cray
4607+ os=-unicos
4608+ ;;
4609+ z8k-*-coff)
4610+ basic_machine=z8k-unknown
4611+ os=-sim
4612+ ;;
4613+ z80-*-coff)
4614+ basic_machine=z80-unknown
4615+ os=-sim
4616+ ;;
4617+ none)
4618+ basic_machine=none-none
4619+ os=-none
4620+ ;;
4621+
4622+# Here we handle the default manufacturer of certain CPU types. It is in
4623+# some cases the only manufacturer, in others, it is the most popular.
4624+ w89k)
4625+ basic_machine=hppa1.1-winbond
4626+ ;;
4627+ op50n)
4628+ basic_machine=hppa1.1-oki
4629+ ;;
4630+ op60c)
4631+ basic_machine=hppa1.1-oki
4632+ ;;
4633+ romp)
4634+ basic_machine=romp-ibm
4635+ ;;
4636+ mmix)
4637+ basic_machine=mmix-knuth
4638+ ;;
4639+ rs6000)
4640+ basic_machine=rs6000-ibm
4641+ ;;
4642+ vax)
4643+ basic_machine=vax-dec
4644+ ;;
4645+ pdp10)
4646+ # there are many clones, so DEC is not a safe bet
4647+ basic_machine=pdp10-unknown
4648+ ;;
4649+ pdp11)
4650+ basic_machine=pdp11-dec
4651+ ;;
4652+ we32k)
4653+ basic_machine=we32k-att
4654+ ;;
4655+ sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
4656+ basic_machine=sh-unknown
4657+ ;;
4658+ sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
4659+ basic_machine=sparc-sun
4660+ ;;
4661+ cydra)
4662+ basic_machine=cydra-cydrome
4663+ ;;
4664+ orion)
4665+ basic_machine=orion-highlevel
4666+ ;;
4667+ orion105)
4668+ basic_machine=clipper-highlevel
4669+ ;;
4670+ mac | mpw | mac-mpw)
4671+ basic_machine=m68k-apple
4672+ ;;
4673+ pmac | pmac-mpw)
4674+ basic_machine=powerpc-apple
4675+ ;;
4676+ *-unknown)
4677+ # Make sure to match an already-canonicalized machine name.
4678+ ;;
4679+ *)
4680+ echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
4681+ exit 1
4682+ ;;
4683+esac
4684+
4685+# Here we canonicalize certain aliases for manufacturers.
4686+case $basic_machine in
4687+ *-digital*)
4688+ basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
4689+ ;;
4690+ *-commodore*)
4691+ basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
4692+ ;;
4693+ *)
4694+ ;;
4695+esac
4696+
4697+# Decode manufacturer-specific aliases for certain operating systems.
4698+
4699+if [ x"$os" != x"" ]
4700+then
4701+case $os in
4702+ # First match some system type aliases
4703+ # that might get confused with valid system types.
4704+ # -solaris* is a basic system type, with this one exception.
4705+ -auroraux)
4706+ os=-auroraux
4707+ ;;
4708+ -solaris1 | -solaris1.*)
4709+ os=`echo $os | sed -e 's|solaris1|sunos4|'`
4710+ ;;
4711+ -solaris)
4712+ os=-solaris2
4713+ ;;
4714+ -svr4*)
4715+ os=-sysv4
4716+ ;;
4717+ -unixware*)
4718+ os=-sysv4.2uw
4719+ ;;
4720+ -gnu/linux*)
4721+ os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
4722+ ;;
4723+ # First accept the basic system types.
4724+ # The portable systems comes first.
4725+ # Each alternative MUST END IN A *, to match a version number.
4726+ # -sysv* is not here because it comes later, after sysvr4.
4727+ -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
4728+ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
4729+ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
4730+ | -sym* | -kopensolaris* | -plan9* \
4731+ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
4732+ | -aos* | -aros* \
4733+ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
4734+ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
4735+ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
4736+ | -bitrig* | -openbsd* | -solidbsd* \
4737+ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
4738+ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
4739+ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
4740+ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
4741+ | -chorusos* | -chorusrdb* | -cegcc* \
4742+ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
4743+ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
4744+ | -linux-newlib* | -linux-musl* | -linux-uclibc* \
4745+ | -uxpv* | -beos* | -mpeix* | -udk* \
4746+ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
4747+ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
4748+ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
4749+ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
4750+ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
4751+ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
4752+ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
4753+ # Remember, each alternative MUST END IN *, to match a version number.
4754+ ;;
4755+ -qnx*)
4756+ case $basic_machine in
4757+ x86-* | i*86-*)
4758+ ;;
4759+ *)
4760+ os=-nto$os
4761+ ;;
4762+ esac
4763+ ;;
4764+ -nto-qnx*)
4765+ ;;
4766+ -nto*)
4767+ os=`echo $os | sed -e 's|nto|nto-qnx|'`
4768+ ;;
4769+ -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
4770+ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
4771+ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
4772+ ;;
4773+ -mac*)
4774+ os=`echo $os | sed -e 's|mac|macos|'`
4775+ ;;
4776+ -linux-dietlibc)
4777+ os=-linux-dietlibc
4778+ ;;
4779+ -linux*)
4780+ os=`echo $os | sed -e 's|linux|linux-gnu|'`
4781+ ;;
4782+ -sunos5*)
4783+ os=`echo $os | sed -e 's|sunos5|solaris2|'`
4784+ ;;
4785+ -sunos6*)
4786+ os=`echo $os | sed -e 's|sunos6|solaris3|'`
4787+ ;;
4788+ -opened*)
4789+ os=-openedition
4790+ ;;
4791+ -os400*)
4792+ os=-os400
4793+ ;;
4794+ -wince*)
4795+ os=-wince
4796+ ;;
4797+ -osfrose*)
4798+ os=-osfrose
4799+ ;;
4800+ -osf*)
4801+ os=-osf
4802+ ;;
4803+ -utek*)
4804+ os=-bsd
4805+ ;;
4806+ -dynix*)
4807+ os=-bsd
4808+ ;;
4809+ -acis*)
4810+ os=-aos
4811+ ;;
4812+ -atheos*)
4813+ os=-atheos
4814+ ;;
4815+ -syllable*)
4816+ os=-syllable
4817+ ;;
4818+ -386bsd)
4819+ os=-bsd
4820+ ;;
4821+ -ctix* | -uts*)
4822+ os=-sysv
4823+ ;;
4824+ -nova*)
4825+ os=-rtmk-nova
4826+ ;;
4827+ -ns2 )
4828+ os=-nextstep2
4829+ ;;
4830+ -nsk*)
4831+ os=-nsk
4832+ ;;
4833+ # Preserve the version number of sinix5.
4834+ -sinix5.*)
4835+ os=`echo $os | sed -e 's|sinix|sysv|'`
4836+ ;;
4837+ -sinix*)
4838+ os=-sysv4
4839+ ;;
4840+ -tpf*)
4841+ os=-tpf
4842+ ;;
4843+ -triton*)
4844+ os=-sysv3
4845+ ;;
4846+ -oss*)
4847+ os=-sysv3
4848+ ;;
4849+ -svr4)
4850+ os=-sysv4
4851+ ;;
4852+ -svr3)
4853+ os=-sysv3
4854+ ;;
4855+ -sysvr4)
4856+ os=-sysv4
4857+ ;;
4858+ # This must come after -sysvr4.
4859+ -sysv*)
4860+ ;;
4861+ -ose*)
4862+ os=-ose
4863+ ;;
4864+ -es1800*)
4865+ os=-ose
4866+ ;;
4867+ -xenix)
4868+ os=-xenix
4869+ ;;
4870+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
4871+ os=-mint
4872+ ;;
4873+ -aros*)
4874+ os=-aros
4875+ ;;
4876+ -zvmoe)
4877+ os=-zvmoe
4878+ ;;
4879+ -dicos*)
4880+ os=-dicos
4881+ ;;
4882+ -nacl*)
4883+ ;;
4884+ -none)
4885+ ;;
4886+ *)
4887+ # Get rid of the `-' at the beginning of $os.
4888+ os=`echo $os | sed 's/[^-]*-//'`
4889+ echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
4890+ exit 1
4891+ ;;
4892+esac
4893+else
4894+
4895+# Here we handle the default operating systems that come with various machines.
4896+# The value should be what the vendor currently ships out the door with their
4897+# machine or put another way, the most popular os provided with the machine.
4898+
4899+# Note that if you're going to try to match "-MANUFACTURER" here (say,
4900+# "-sun"), then you have to tell the case statement up towards the top
4901+# that MANUFACTURER isn't an operating system. Otherwise, code above
4902+# will signal an error saying that MANUFACTURER isn't an operating
4903+# system, and we'll never get to this point.
4904+
4905+case $basic_machine in
4906+ score-*)
4907+ os=-elf
4908+ ;;
4909+ spu-*)
4910+ os=-elf
4911+ ;;
4912+ *-acorn)
4913+ os=-riscix1.2
4914+ ;;
4915+ arm*-rebel)
4916+ os=-linux
4917+ ;;
4918+ arm*-semi)
4919+ os=-aout
4920+ ;;
4921+ c4x-* | tic4x-*)
4922+ os=-coff
4923+ ;;
4924+ c8051-*)
4925+ os=-elf
4926+ ;;
4927+ hexagon-*)
4928+ os=-elf
4929+ ;;
4930+ tic54x-*)
4931+ os=-coff
4932+ ;;
4933+ tic55x-*)
4934+ os=-coff
4935+ ;;
4936+ tic6x-*)
4937+ os=-coff
4938+ ;;
4939+ # This must come before the *-dec entry.
4940+ pdp10-*)
4941+ os=-tops20
4942+ ;;
4943+ pdp11-*)
4944+ os=-none
4945+ ;;
4946+ *-dec | vax-*)
4947+ os=-ultrix4.2
4948+ ;;
4949+ m68*-apollo)
4950+ os=-domain
4951+ ;;
4952+ i386-sun)
4953+ os=-sunos4.0.2
4954+ ;;
4955+ m68000-sun)
4956+ os=-sunos3
4957+ ;;
4958+ m68*-cisco)
4959+ os=-aout
4960+ ;;
4961+ mep-*)
4962+ os=-elf
4963+ ;;
4964+ mips*-cisco)
4965+ os=-elf
4966+ ;;
4967+ mips*-*)
4968+ os=-elf
4969+ ;;
4970+ or1k-*)
4971+ os=-elf
4972+ ;;
4973+ or32-*)
4974+ os=-coff
4975+ ;;
4976+ *-tti) # must be before sparc entry or we get the wrong os.
4977+ os=-sysv3
4978+ ;;
4979+ sparc-* | *-sun)
4980+ os=-sunos4.1.1
4981+ ;;
4982+ *-be)
4983+ os=-beos
4984+ ;;
4985+ *-haiku)
4986+ os=-haiku
4987+ ;;
4988+ *-ibm)
4989+ os=-aix
4990+ ;;
4991+ *-knuth)
4992+ os=-mmixware
4993+ ;;
4994+ *-wec)
4995+ os=-proelf
4996+ ;;
4997+ *-winbond)
4998+ os=-proelf
4999+ ;;
5000+ *-oki)
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches

to all changes: