diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/.gitignore
diff --git a/.redhat-rpm-config.metadata b/.redhat-rpm-config.metadata
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/.redhat-rpm-config.metadata
diff --git a/SOURCES/brp-kmod-restore-perms b/SOURCES/brp-kmod-restore-perms
new file mode 100755
index 0000000..6ada4c5
--- /dev/null
+++ b/SOURCES/brp-kmod-restore-perms
@@ -0,0 +1,20 @@
+#! /bin/bash -f
+
+## A counterpart of brp-kmod-set-exec-bits that restores original kmod
+## file permissions
+
+# If using normal root, avoid changing anything.
+[ -n "$RPM_BUILD_ROOT" -a "$RPM_BUILD_ROOT" != "/" ] || exit 0
+
+# Checking for required programs
+which chmod >/dev/null || exit 0
+
+[ -r "$RPM_BUILD_ROOT/kmod-permissions.list" ] || exit 0
+
+while read perm path; do
+	[ -n "$perm" ] || continue
+
+	chmod "$perm" "$RPM_BUILD_ROOT/$path"
+done < "$RPM_BUILD_ROOT/kmod-permissions.list"
+
+rm -f "$RPM_BUILD_ROOT/kmod-permissions.list"
diff --git a/SOURCES/brp-kmod-set-exec-bit b/SOURCES/brp-kmod-set-exec-bit
new file mode 100755
index 0000000..68876cf
--- /dev/null
+++ b/SOURCES/brp-kmod-set-exec-bit
@@ -0,0 +1,14 @@
+#! /bin/bash -fx
+
+## A hack for making brp-strip taking into account kmod files
+
+# If using normal root, avoid changing anything.
+[ -n "$RPM_BUILD_ROOT" -a "$RPM_BUILD_ROOT" != "/" ] || exit 0
+
+# Checking for required programs
+which find chmod >/dev/null || exit 0
+
+find "$RPM_BUILD_ROOT" \
+	-name '*.ko' \
+	-printf '%#m %P\n' \
+	-exec chmod u+x '{}' \; > "$RPM_BUILD_ROOT/kmod-permissions.list"
diff --git a/SOURCES/brp-ldconfig b/SOURCES/brp-ldconfig
new file mode 100755
index 0000000..3cb3cc0
--- /dev/null
+++ b/SOURCES/brp-ldconfig
@@ -0,0 +1,10 @@
+#!/bin/sh -f
+# Force creating of DSO symlinks.
+
+# If using normal root, avoid changing anything.
+if [ -z "$RPM_BUILD_ROOT" -o "$RPM_BUILD_ROOT" = "/" ]; then
+  exit 0
+fi
+
+/sbin/ldconfig -N -r "$RPM_BUILD_ROOT"
+# TODO: warn if it created new symlinks and guide people.
diff --git a/SOURCES/brp-mangle-shebangs b/SOURCES/brp-mangle-shebangs
new file mode 100755
index 0000000..b4341a2
--- /dev/null
+++ b/SOURCES/brp-mangle-shebangs
@@ -0,0 +1,144 @@
+#!/bin/bash
+
+# If using normal root, avoid changing anything.
+if [ -z "$RPM_BUILD_ROOT" -o "$RPM_BUILD_ROOT" = "/" ]; then
+  exit 0
+fi
+
+exclude_files=""
+exclude_files_from=""
+exclude_shebangs=""
+exclude_shebangs_from=""
+
+usage() {
+  local verbose=$1 && shift
+  local outfile=$1 && shift
+  local status=$1 && shift
+
+  (
+    echo 'usage: brp-mangle-shebangs [--files <regexp>] [--files-from <file>] [--shebangs <regexp>] [--shebangs-from <file>]'
+    if [ "${verbose}" == "yes" ]; then
+      echo '  --files: extended regexp of files to ignore'
+      echo '  --files-from: file containing a list of extended regexps of files to ignore'
+      echo '  --shebangs: extended regexp of shebangs to ignore'
+      echo '  --shebangs-from: file containing a list of extended regexps of shebangs to ignore'
+    fi
+  ) >>${outfile}
+  exit ${status}
+}
+
+while [ $# -gt 0 ] ; do
+  case "$1" in
+    --files)
+      exclude_files="${2}"
+      shift
+      ;;
+    --files=*)
+      exclude_files="${1##--files=}"
+      ;;
+    --files-from)
+      exclude_files_from="${2}"
+      shift
+      ;;
+    --files-from=*)
+      exclude_files_from="${1##--files-from=}"
+      ;;
+    --shebangs)
+      exclude_shebangs="${2}"
+      shift
+      ;;
+    --shebangs=*)
+      exclude_shebangs="${1##--shebangs=}"
+      ;;
+    --shebangs-from)
+      exclude_shebangs_from="${2}"
+      shift
+      ;;
+    --shebangs-from=*)
+      exclude_shebangs_from="${1##--shebangs-from=}"
+      ;;
+    --help|--usage|"-?"|-h)
+      usage yes /dev/stdout 0
+      ;;
+    *)
+      echo "Unknown option \"${1}\"" 1>&2
+      usage no /dev/stderr 1
+      ;;
+  esac
+  shift
+done
+
+cd "$RPM_BUILD_ROOT"
+
+trim() {
+  printf '%s' "$*"
+}
+
+fail=0
+while IFS= read -r -d $'\0' f; do
+  file -N --mime-type "$f" | grep -q -P ".+(?=: text/)" || continue
+
+  # Remove the dot
+  path="${f#.}"
+
+  if [ -n "$exclude_files" ]; then
+    echo "$path" | grep -q -E "$exclude_files" && continue
+  fi
+  if [ -n "$exclude_files_from" ]; then
+    echo "$path" | grep -q -E -f "$exclude_files_from" && continue
+  fi
+
+  ts=$(stat -c %y "$f")
+
+  read shebang_line < "$f" || :
+  orig_shebang=$(trim $(echo "$shebang_line" | grep -Po "#!\K.*" || echo))
+  shebang="$orig_shebang"
+  if [ -n "$exclude_shebangs" ]; then
+    echo "$shebang" | grep -q -E "$exclude_shebangs" && continue
+  fi
+  if [ -n "$exclude_shebangs_from" ]; then
+    echo "$shebang" | grep -q -E -f "$exclude_shebangs_from" && continue
+  fi
+
+  if [ -z "$shebang" ]; then
+    echo >&2 "*** WARNING: $f is executable but has empty or no shebang, removing executable bit"
+    chmod -x "$f"
+    touch -d "$ts" "$f"
+    continue
+  elif [ -n "${shebang##/*}" ]; then
+    echo >&2 "*** ERROR: $f has shebang which doesn't start with '/' ($shebang)"
+    fail=1
+    continue
+  fi
+
+  if ! { echo "$shebang" | grep -q -P "^/(?:usr/)?(?:bin|sbin)/"; }; then
+    continue
+  fi
+
+  # Replace "special" env shebang:
+  # /whatsoever/env /whatever/foo → /whatever/foo
+  shebang=$(echo "$shebang" | sed -r -e 's@^(.+)/env /(.+)$@/\2@')
+  # /whatsoever/env foo → /whatsoever/foo
+  shebang=$(echo "$shebang" | sed -r -e 's@^(.+/)env (.+)$@\1\2@')
+
+  # Replace python3 with the desired Python 3 shebang,
+  # if passed as an non-empty environment variable PYTHON3
+  if [ -n "${PYTHON3:+x}" ]; then
+    shebang=$(echo "$shebang" | sed -r -e "s@/usr/bin/python3(\s|$)@${PYTHON3}\1@")
+  fi
+
+  # Replace ambiguous python with python2
+  py_shebang=$(echo "$shebang" | sed -r -e 's@/usr/bin/python(\s|$)@/usr/bin/python2\1@')
+
+  if [ "$shebang" != "$py_shebang" ]; then
+    echo >&2 "*** ERROR: ambiguous python shebang in $path: #!$orig_shebang. Change it to python3 (or python2) explicitly."
+    fail=1
+  elif [ "#!$shebang" != "#!$orig_shebang" ]; then
+    sed -i -e "1c #!$shebang" "$f"
+    echo "mangling shebang in $path from $orig_shebang to #!$shebang"
+  fi
+
+  touch -d "$ts" "$f"
+done < <(find -executable -type f -print0)
+
+exit $fail
diff --git a/SOURCES/buildflags.md b/SOURCES/buildflags.md
new file mode 100644
index 0000000..abcfcbb
--- /dev/null
+++ b/SOURCES/buildflags.md
@@ -0,0 +1,377 @@
+This document contains documentation of the individual compiler flags
+and how to use them.
+
+[TOC]
+
+# Using RPM build flags
+
+For packages which use autoconf to set up the build environment, use
+the `%configure` macro to obtain the full complement of flags, like
+this:
+
+    %configure
+
+This will invoke the `./configure` with arguments (such as
+`--prefix=/usr`) to adjust the paths to the packaging defaults.
+
+As a side effect, this will set the environment variables `CFLAGS`,
+`CXXFLAGS`, `FFLAGS`, `FCFLAGS`, and `LDFLAGS`, so they can be used by
+makefiles and other build tools.  (However, existing values for this
+variables are not overwritten.)
+
+If your package does not use autoconf, you can still set the same
+environment variables using
+
+    %set_build_flags
+
+early in the `%build` section.  (Again, existing environment variables
+are not overwritten.)
+
+Individual build flags are also available through RPM macros:
+
+* `%{build_cflags}` for the C compiler flags (also known as the
+  `CFLAGS` variable).  Also historically available as `%{optflags}`.
+  Furthermore, at the start of the `%build` section, the environment
+  variable `RPM_OPT_FLAGS` is set to this value.
+* `%{build_cxxflags}` for the C++ compiler flags (usually assigned to
+  the `CXXFLAGS` shell variable).
+* `%{build_fflags} for `FFLAGS` (the Fortran compiler flags, also
+  known as the `FCFLAGS` variable).
+* `%{build_ldflags}` for the link editor (ld) flags, usually known as
+  `LDFLAGS`.  Note that the contents quotes linker arguments using
+  `-Wl`, so this variable is intended for use with the `gcc` compiler
+  driver.  At the start of the `%build` section, the environment
+  variable `RPM_LD_FLAGS` is set to this value.
+
+These RPM macros do not alter shell environment variables.
+
+For some other build tools separate mechanisms exist:
+
+* CMake builds use the the `%cmake` macro from the `cmake-rpm-macros`
+  package.
+
+Care must be taking not to compile the current selection of compiler
+flags into any RPM package besides `redhat-rpm-config`, so that flag
+changes are picked up automatically once `redhat-rpm-config` is
+updated.
+
+# Flag selection for the build type
+
+The default flags are suitable for building applications.
+
+For building shared objects, you must compile with `-fPIC` in
+(`CFLAGS` or `CXXFLAGS`) and link with `-shared` (in `LDFLAGS`).
+
+For other considerations involving shared objects, see:
+
+* [Fedora Packaging Guidelines: Shared Libraries](https://fedoraproject.org/wiki/Packaging:Guidelines#Shared_Libraries)
+
+# Customizing compiler flags
+
+It is possible to set RPM macros to change some aspects of the
+compiler flags.  Changing these flags should be used as a last
+recourse if other workarunds are not available.
+
+### Lazy binding
+
+If your package depends on the semantics of lazy binding (e.g., it has
+plugins which load additional plugins to complete their dependencies,
+before which some referenced functions are undefined), you should put
+`-Wl,-z,lazy` at the end of the `LDFLAGS` setting when linking objects
+which have such requirements.  Under these circumstances, it is
+unnecessary to disable hardened builds (and thus lose full ASLR for
+executables), or link everything without `-Wl,z,now` (non-lazy
+binding).
+
+### Hardened builds
+
+By default, the build flags enable fully hardened builds.  To change
+this, include this in the RPM spec file:
+
+    %undefine _hardened_build
+
+This turns off certain hardening features, as described in detail
+below.  The main difference is that executables will be
+position-dependent (no full ASLR) and use lazy binding.
+
+### Annotated builds/watermarking
+
+By default, the build flags cause a special output section to be
+included in ELF files which describes certain aspects of the build.
+To change this for all compiler invocations, include this in the RPM
+spec file:
+
+    %undefine _annotated_build
+
+Be warned that this turns off watermarking, making it impossible to do
+full hardening coverage analysis for any binaries produced.
+
+It is possible to disable annotations for individual compiler
+invocations, using the `-fplugin-arg-annobin-disable` flag.  However,
+the annobin plugin must still be loaded for this flag to be
+recognized, so it has to come after the hardening flags on the command
+line (it has to be added at the end of `CFLAGS`, or specified after
+the `CFLAGS` variable contents).
+
+### Strict symbol checks in the link editor (ld)
+
+Optionally, the link editor will refuse to link shared objects which
+contain undefined symbols.  Such symbols lack symbol versioning
+information and can be bound to the wrong (compatibility) symbol
+version at run time, and not the actual (default) symbol version which
+would have been used if the symbol definition had been available at
+static link time.  Furthermore, at run time, the dynamic linker will
+not have complete dependency information (in the form of DT_NEEDED
+entries), which can lead to errors (crashes) if IFUNC resolvers are
+executed before the shared object containing them is fully relocated.
+
+To switch on these checks, define this macro in the RPM spec file:
+
+    %define _strict_symbol_defs_build 1
+
+If this RPM spec option is active, link failures will occur if the
+linker command line does not list all shared objects which are needed.
+In this case, you need to add the missing DSOs (with linker arguments
+such as `-lm`).  As a result, the link editor will also generated the
+necessary DT_NEEDED entries.
+
+In some cases (such as when a DSO is loaded as a plugin and is
+expected to bind to symbols in the main executable), undefined symbols
+are expected.  In this case, you can add
+
+    %undefine _strict_symbol_defs_build
+
+to the RPM spec file to disable these strict checks.  Alternatively,
+you can pass `-z undefs` to ld (written as `-Wl,-z,undefs` on the gcc
+command line).  The latter needs binutils 2.29.1-12.fc28 or later.
+
+# Individual compiler flags
+
+Compiler flags end up in the environment variables `CFLAGS`,
+`CXXFLAGS`, `FFLAGS`, and `FCFLAGS`.
+
+The general (architecture-independent) build flags are:
+
+* `-O2`: Turn on various GCC optimizations.  See the [GCC manual](https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-O2).
+  Optimization improves performance, the accuracy of warnings, and the
+  reach of toolchain-based hardening, but it makes debugging harder.
+* `-g`: Generate debugging information (DWARF).  In Fedora, this data
+  is separated into `-debuginfo` RPM packages whose installation is
+  optional, so debuging information does not increase the size of
+  installed binaries by default.
+* `-pipe`: Run compiler and assembler in parallel and do not use a
+  temporary file for the assembler input.  This can improve
+  compilation performance.  (This does not affect code generation.)
+* `-Wall`: Turn on various GCC warnings.
+  See the [GCC manual](https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wall).
+* `-Werror=format-security`: Turn on format string warnings and treat
+  them as errors.
+  See the [GCC manual](https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wformat-security).
+  This can occasionally result in compilation errors.  In this case,
+  the best option is to rewrite the source code so that only constant
+  format strings (string literals) are used.
+* `-Wp,-D_FORTIFY_SOURCE=2`: Source fortification activates various
+  hardening features in glibc:
+    * String functions such as `memcpy` attempt to detect buffer lengths
+      and terminate the process if a buffer overflow is detected.
+    * `printf` format strings may only contain the `%n` format specifier
+      if the format string resides in read-only memory.
+    * `open` and `openat` flags are checked for consistency with the
+      presence of a *mode* argument.
+    * Plus other minor hardening changes.
+  (These changes can occasionally break valid programs.)
+* `-fexceptions`: Provide exception unwinding support for C programs.
+  See the [`-fexceptions` option in the GCC
+  manual](https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#index-fexceptions)
+  and the [`cleanup` variable
+  attribute](https://gcc.gnu.org/onlinedocs/gcc/Common-Variable-Attributes.html#index-cleanup-variable-attribute).
+  This also hardens cancellation handling in C programs because
+  it is not required to use an on-stack jump buffer to install
+  a cancellation handler with `pthread_cleanup_push`.  It also makes
+  it possible to unwind the stack (using C++ `throw` or Rust panics)
+  from C callback functions if a C library supports non-local exits
+  from them (e.g., via `longjmp`).
+* `-Wp,-D_GLIBCXX_ASSERTIONS`: Enable lightweight assertions in the
+  C++ standard library, such as bounds checking for the subscription
+  operator on vectors.  (This flag is added to both `CFLAGS` and
+  `CXXFLAGS`; C compilations will simply ignore it.)
+* `-fstack-protector-strong`: Instrument functions to detect
+  stack-based buffer overflows before jumping to the return address on
+  the stack.  The *strong* variant only performs the instrumentation
+  for functions whose stack frame contains addressable local
+  variables.  (If the address of a variable is never taken, it is not
+  possible that a buffer overflow is caused by incorrect pointer
+  arithmetic involving a pointer to that variable.)
+* `-grecord-gcc-switches`: Include select GCC command line switches in
+  the DWARF debugging information.  This is useful for detecting the
+  presence of certain build flags and general hardening coverage.
+
+For hardened builds (which are enabled by default, see above for how
+to disable them), the flag
+`-specs=/usr/lib/rpm/redhat/redhat-hardened-cc1` is added to the
+command line.  It adds the following flag to the command line:
+
+*   `-fPIE`: Compile for a position-independent executable (PIE),
+    enabling full address space layout randomization (ASLR).  This is
+    similar to `-fPIC`, but avoids run-time indirections on certain
+    architectures, resulting in improved performance and slightly
+    smaller executables.  However, compared to position-dependent code
+    (the default generated by GCC), there is still a measurable
+    performance impact.
+
+    If the command line also contains `-r` (producing a relocatable
+    object file), `-fpic` or `-fPIC`, this flag is automatically
+    dropped.  (`-fPIE` can only be used for code which is linked into
+    the main program.) Code which goes into static libraries should be
+    compiled with `-fPIE`, except when this code is expected to be
+    linked into DSOs, when `-fPIC` must be used.
+
+    To be effective, `-fPIE` must be used with the `-pie` linker flag
+    when producing an executable, see below.
+
+To support [binary watermarks for ELF
+objects](https://fedoraproject.org/wiki/Toolchain/Watermark) using
+annobin, the `-specs=/usr/lib/rpm/redhat/redhat-annobin-cc1` flag is
+added by default.  This can be switched off by undefining the
+`%_annotated_build` RPM macro (see above).
+
+### Architecture-specific compiler flags
+
+These compiler flags are enabled for all builds (hardened/annotated or
+not), but their selection depends on the architecture:
+
+*   `-fstack-clash-protection`: Turn on instrumentation to avoid
+    skipping the guard page in large stack frames.  (Without this flag,
+    vulnerabilities can result where the stack overlaps with the heap,
+    or thread stacks spill into other regions of memory.)  This flag is
+    fully ABI-compatible and has adds very little run-time overhead, but
+    is only available on certain architectures (currently aarch64, i386,
+    ppc64, ppc64le, s390x, x86_64).
+*   `-fcf-protection`: Instrument binaries to guard against
+    ROP/JOP attacks.  Used on i686 and x86_64.
+*   `-m64` and `-m32`: Some GCC builds support both 32-bit and 64-bit in
+    the same compilation.  For such architectures, the RPM build process
+    explicitly selects the architecture variant by passing this compiler
+    flag.
+*   `-fasynchronous-unwind-tables`: Generate full unwind information
+    covering all program points.  This is required for support of
+    asynchronous cancellation and proper unwinding from signal
+    handlers.  It also makes performance and debugging tools more
+    useful because unwind information is available without having to
+    install (and load) debugging ienformation.
+    Asynchronous unwind tables are enabled for aarch64, i686, s390x,
+    and x86_64.  They are not needed on armhfp, ppc64 and ppc64le due
+    to architectural differences in stack management.  On these
+    architectures, `-fexceptions` (see above) still enables regular
+    unwind tables (or they are enabled by default even without this
+    option).
+*   `-funwind-tables`: A subset of the unwind information restricted
+    to actual call sites.  Used on ppc64, ppc64le.  Also implied by
+    `-fexceptions`.
+
+In addition, `redhat-rpm-config` re-selects the built-in default
+tuning in the `gcc` package.  These settings are:
+
+*   **armhfp**: `-march=armv7-a -mfpu=vfpv3-d16  -mfloat-abi=hard`
+    selects an Arm subarchitecture based on the ARMv7-A architecture
+    with 16 64-bit floating point registers.  `-mtune=cortex-8a` selects
+    tuning for the Cortex-A8 implementation (while preserving compatibility
+    with other ARMv7-A implementations).  `-mabi=aapcs-linux` switches to
+    the AAPCS ABI for GNU/Linux.
+*   **i686**: `-march=x86-64` is used to select a minimum supported
+    CPU level matching the baseline for the x86_64 architecture.
+    `-mtune=generic` activates tuning for a current blend of CPUs.
+    `-mfpmath=sse` uses the SSE2 unit for floating point math,
+    instead of the legacy i387 FPU, avoiding issues related to excess
+    precision.  `-mstackrealign` ensures that the generated code
+    does not assume 16-byte stack alignment (as required by the current
+    i386 ABI), but stays compatible with application code compiled
+    before the introduction of 16-byte stack alignment along with SSE2
+    support.
+*   **ppc64le**: `-mcpu=power8 -mtune=power8` selects a minimum supported
+    CPU level of POWER8 (the first CPU with ppc64le support) and tunes
+    for POWER8.
+*   **s390x**: `-march=z13 -mtune=z14` specifies a minimum supported CPU
+    level of z13, while optimizing for a subsequent CPU generation
+    (z14).
+*   **x86_64**: `-mtune=generic` selects tuning which is expected to
+     beneficial for a broad range of current CPUs.
+*   **ppc64** and **aarch64** do not have any architecture-specific tuning.
+
+# Individual linker flags
+
+Linker flags end up in the environment variable `LDFLAGS`.
+
+The linker flags listed below are injected.  Note that they are
+prefixed with `-Wl` because it is expected that these flags are passed
+to the compiler driver `gcc`, and not directly to the link editor
+`ld`.
+
+* `-z relro`: Activate the *read-only after relocation* feature.
+  Constant data and relocations are placed on separate pages, and the
+  dynamic linker is instructed to revoke write permissions after
+  dynamic linking.  Full protection of relocation data requires the
+  `-z now` flag (see below).
+* `-z defs`: Refuse to link shared objects (DSOs) with undefined symbols
+  (optional, see above).
+
+For hardened builds, the
+`-specs=/usr/lib/rpm/redhat/redhat-hardened-ld` flag is added to the
+compiler driver command line.  (This can be disabled by undefining the
+`%_hardened_build` macro; see above) This activates the following
+linker flags:
+
+* `-pie`: Produce a PIE binary.  This is only activated for the main
+  executable, and only if it is dynamically linked.  This requires
+  that all objects which are linked in the main executable have been
+  compiled with `-fPIE` or `-fPIC` (or `-fpie` or `-fpic`; see above).
+  By itself, `-pie` has only a slight performance impact because it
+  disables some link editor optimization, however the `-fPIE` compiler
+  flag has some overhead.
+* `-z now`: Disable lazy binding and turn on the `BIND_NOW` dynamic
+  linker feature.  Lazy binding involves an array of function pointers
+  which is writable at run time (which could be overwritten as part of
+  security exploits, redirecting execution).  Therefore, it is
+  preferable to turn of lazy binding, although it increases startup
+  time.
+
+# Support for extension builders
+
+Some packages include extension builders that allow users to build
+extension modules (which are usually written in C and C++) under the
+control of a special-purpose build system.  This is a common
+functionality provided by scripting languages such as Python and Perl.
+Traditionally, such extension builders captured the Fedora build flags
+when these extension were built.  However, these compiler flags are
+adjusted for a specific Fedora release and toolchain version and
+therefore do not work with a custom toolchain (e.g., different C/C++
+compilers), and users might want to build their own extension modules
+with such toolchains.
+
+The macros `%{extension_cflags}`, `%{extension_cxxflags}`,
+`%{extension_fflags}`, `%{extension_ldflags}` contain a subset of
+flags that have been adjusted for compatibility with alternative
+toolchains, while still preserving some of the compile-time security
+hardening that the standard Fedora build flags provide.
+
+The current set of differences are:
+
+* No GCC plugins (such as annobin) are activated.
+* No GCC spec files (`-specs=` arguments) are used.
+
+Additional flags may be removed in the future if they prove to be
+incompatible with alternative toolchains.
+
+Extension builders should detect whether they are performing a regular
+RPM build (e.g., by looking for an `RPM_OPT_FLAGS` variable).  In this
+case, they should use the *current* set of Fedora build flags (that
+is, the output from `rpm --eval '%{build_cflags}'` and related
+commands).  Otherwise, when not performing an RPM build, they can
+either use hard-coded extension builder flags (thus avoiding a
+run-time dependency on `redhat-rpm-config`), or use the current
+extension builder flags (with a run-time dependency on
+`redhat-rpm-config`).
+
+As a result, extension modules built for Fedora will use the official
+Fedora build flags, while users will still be able to build their own
+extension modules with custom toolchains.
diff --git a/SOURCES/config.guess b/SOURCES/config.guess
new file mode 100644
index 0000000..2e9ad7f
--- /dev/null
+++ b/SOURCES/config.guess
@@ -0,0 +1,1462 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+#   Copyright 1992-2016 Free Software Foundation, Inc.
+
+timestamp='2016-10-02'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that
+# program.  This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
+#
+# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
+#
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
+#
+# Please send patches to <config-patches@gnu.org>.
+
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright 1992-2016 Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit ;;
+    --version | -v )
+       echo "$version" ; exit ;;
+    --help | --h* | -h )
+       echo "$usage"; exit ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )	# Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help" >&2
+       exit 1 ;;
+    * )
+       break ;;
+  esac
+done
+
+if test $# != 0; then
+  echo "$me: too many arguments$help" >&2
+  exit 1
+fi
+
+trap 'exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# Portable tmp directory creation inspired by the Autoconf team.
+
+set_cc_for_build='
+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+: ${TMPDIR=/tmp} ;
+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+dummy=$tmp/dummy ;
+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,)    echo "int x;" > $dummy.c ;
+	for c in cc gcc c89 c99 ; do
+	  if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+	     CC_FOR_BUILD="$c"; break ;
+	  fi ;
+	done ;
+	if test x"$CC_FOR_BUILD" = x ; then
+	  CC_FOR_BUILD=no_compiler_found ;
+	fi
+	;;
+ ,,*)   CC_FOR_BUILD=$CC ;;
+ ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
+esac ; set_cc_for_build= ;'
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi@noc.rutgers.edu 1994-08-24)
+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+	PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+case "${UNAME_SYSTEM}" in
+Linux|GNU|GNU/*)
+	# If the system lacks a compiler, then just pick glibc.
+	# We could probably try harder.
+	LIBC=gnu
+
+	eval $set_cc_for_build
+	cat <<-EOF > $dummy.c
+	#include <features.h>
+	#if defined(__UCLIBC__)
+	LIBC=uclibc
+	#elif defined(__dietlibc__)
+	LIBC=dietlibc
+	#else
+	LIBC=gnu
+	#endif
+	EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
+	;;
+esac
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+    *:NetBSD:*:*)
+	# NetBSD (nbsd) targets should (where applicable) match one or
+	# more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
+	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
+	# switched to ELF, *-*-netbsd* would select the old
+	# object file format.  This provides both forward
+	# compatibility and a consistent mechanism for selecting the
+	# object file format.
+	#
+	# Note: NetBSD doesn't particularly care about the vendor
+	# portion of the name.  We always set it to "unknown".
+	sysctl="sysctl -n hw.machine_arch"
+	UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
+	    /sbin/$sysctl 2>/dev/null || \
+	    /usr/sbin/$sysctl 2>/dev/null || \
+	    echo unknown)`
+	case "${UNAME_MACHINE_ARCH}" in
+	    armeb) machine=armeb-unknown ;;
+	    arm*) machine=arm-unknown ;;
+	    sh3el) machine=shl-unknown ;;
+	    sh3eb) machine=sh-unknown ;;
+	    sh5el) machine=sh5le-unknown ;;
+	    earmv*)
+		arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
+		endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'`
+		machine=${arch}${endian}-unknown
+		;;
+	    *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+	esac
+	# The Operating System including object format, if it has switched
+	# to ELF recently (or will in the future) and ABI.
+	case "${UNAME_MACHINE_ARCH}" in
+	    earm*)
+		os=netbsdelf
+		;;
+	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+		eval $set_cc_for_build
+		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+			| grep -q __ELF__
+		then
+		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+		    # Return netbsd for either.  FIX?
+		    os=netbsd
+		else
+		    os=netbsdelf
+		fi
+		;;
+	    *)
+		os=netbsd
+		;;
+	esac
+	# Determine ABI tags.
+	case "${UNAME_MACHINE_ARCH}" in
+	    earm*)
+		expr='s/^earmv[0-9]/-eabi/;s/eb$//'
+		abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"`
+		;;
+	esac
+	# The OS release
+	# Debian GNU/NetBSD machines have a different userland, and
+	# thus, need a distinct triplet. However, they do not need
+	# kernel version information, so it can be replaced with a
+	# suitable tag, in the style of linux-gnu.
+	case "${UNAME_VERSION}" in
+	    Debian*)
+		release='-gnu'
+		;;
+	    *)
+		release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2`
+		;;
+	esac
+	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+	# contains redundant information, the shorter form:
+	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+	echo "${machine}-${os}${release}${abi}"
+	exit ;;
+    *:Bitrig:*:*)
+	UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
+	echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
+	exit ;;
+    *:OpenBSD:*:*)
+	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+	exit ;;
+    *:LibertyBSD:*:*)
+	UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
+	echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE}
+	exit ;;
+    *:ekkoBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+	exit ;;
+    *:SolidBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
+	exit ;;
+    macppc:MirBSD:*:*)
+	echo powerpc-unknown-mirbsd${UNAME_RELEASE}
+	exit ;;
+    *:MirBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+	exit ;;
+    *:Sortix:*:*)
+	echo ${UNAME_MACHINE}-unknown-sortix
+	exit ;;
+    alpha:OSF1:*:*)
+	case $UNAME_RELEASE in
+	*4.0)
+		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+		;;
+	*5.*)
+		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+		;;
+	esac
+	# According to Compaq, /usr/sbin/psrinfo has been available on
+	# OSF/1 and Tru64 systems produced since 1995.  I hope that
+	# covers most systems running today.  This code pipes the CPU
+	# types through head -n 1, so we only detect the type of CPU 0.
+	ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+	case "$ALPHA_CPU_TYPE" in
+	    "EV4 (21064)")
+		UNAME_MACHINE=alpha ;;
+	    "EV4.5 (21064)")
+		UNAME_MACHINE=alpha ;;
+	    "LCA4 (21066/21068)")
+		UNAME_MACHINE=alpha ;;
+	    "EV5 (21164)")
+		UNAME_MACHINE=alphaev5 ;;
+	    "EV5.6 (21164A)")
+		UNAME_MACHINE=alphaev56 ;;
+	    "EV5.6 (21164PC)")
+		UNAME_MACHINE=alphapca56 ;;
+	    "EV5.7 (21164PC)")
+		UNAME_MACHINE=alphapca57 ;;
+	    "EV6 (21264)")
+		UNAME_MACHINE=alphaev6 ;;
+	    "EV6.7 (21264A)")
+		UNAME_MACHINE=alphaev67 ;;
+	    "EV6.8CB (21264C)")
+		UNAME_MACHINE=alphaev68 ;;
+	    "EV6.8AL (21264B)")
+		UNAME_MACHINE=alphaev68 ;;
+	    "EV6.8CX (21264D)")
+		UNAME_MACHINE=alphaev68 ;;
+	    "EV6.9A (21264/EV69A)")
+		UNAME_MACHINE=alphaev69 ;;
+	    "EV7 (21364)")
+		UNAME_MACHINE=alphaev7 ;;
+	    "EV7.9 (21364A)")
+		UNAME_MACHINE=alphaev79 ;;
+	esac
+	# A Pn.n version is a patched version.
+	# A Vn.n version is a released version.
+	# A Tn.n version is a released field test version.
+	# A Xn.n version is an unreleased experimental baselevel.
+	# 1.2 uses "1.2" for uname -r.
+	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
+	# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
+	exitcode=$?
+	trap '' 0
+	exit $exitcode ;;
+    Alpha\ *:Windows_NT*:*)
+	# How do we know it's Interix rather than the generic POSIX subsystem?
+	# Should we change UNAME_MACHINE based on the output of uname instead
+	# of the specific Alpha model?
+	echo alpha-pc-interix
+	exit ;;
+    21064:Windows_NT:50:3)
+	echo alpha-dec-winnt3.5
+	exit ;;
+    Amiga*:UNIX_System_V:4.0:*)
+	echo m68k-unknown-sysv4
+	exit ;;
+    *:[Aa]miga[Oo][Ss]:*:*)
+	echo ${UNAME_MACHINE}-unknown-amigaos
+	exit ;;
+    *:[Mm]orph[Oo][Ss]:*:*)
+	echo ${UNAME_MACHINE}-unknown-morphos
+	exit ;;
+    *:OS/390:*:*)
+	echo i370-ibm-openedition
+	exit ;;
+    *:z/VM:*:*)
+	echo s390-ibm-zvmoe
+	exit ;;
+    *:OS400:*:*)
+	echo powerpc-ibm-os400
+	exit ;;
+    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+	echo arm-acorn-riscix${UNAME_RELEASE}
+	exit ;;
+    arm*:riscos:*:*|arm*:RISCOS:*:*)
+	echo arm-unknown-riscos
+	exit ;;
+    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+	echo hppa1.1-hitachi-hiuxmpp
+	exit ;;
+    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+	# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+	if test "`(/bin/universe) 2>/dev/null`" = att ; then
+		echo pyramid-pyramid-sysv3
+	else
+		echo pyramid-pyramid-bsd
+	fi
+	exit ;;
+    NILE*:*:*:dcosx)
+	echo pyramid-pyramid-svr4
+	exit ;;
+    DRS?6000:unix:4.0:6*)
+	echo sparc-icl-nx6
+	exit ;;
+    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+	case `/usr/bin/uname -p` in
+	    sparc) echo sparc-icl-nx7; exit ;;
+	esac ;;
+    s390x:SunOS:*:*)
+	echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4H:SunOS:5.*:*)
+	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
+	echo i386-pc-auroraux${UNAME_RELEASE}
+	exit ;;
+    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
+	eval $set_cc_for_build
+	SUN_ARCH=i386
+	# If there is a compiler, see if it is configured for 64-bit objects.
+	# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
+	# This test works for both compilers.
+	if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
+	    if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
+		(CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+		grep IS_64BIT_ARCH >/dev/null
+	    then
+		SUN_ARCH=x86_64
+	    fi
+	fi
+	echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4*:SunOS:6*:*)
+	# According to config.sub, this is the proper way to canonicalize
+	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
+	# it's likely to be more like Solaris than SunOS4.
+	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4*:SunOS:*:*)
+	case "`/usr/bin/arch -k`" in
+	    Series*|S4*)
+		UNAME_RELEASE=`uname -v`
+		;;
+	esac
+	# Japanese Language versions have a version number like `4.1.3-JL'.
+	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+	exit ;;
+    sun3*:SunOS:*:*)
+	echo m68k-sun-sunos${UNAME_RELEASE}
+	exit ;;
+    sun*:*:4.2BSD:*)
+	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+	test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3
+	case "`/bin/arch`" in
+	    sun3)
+		echo m68k-sun-sunos${UNAME_RELEASE}
+		;;
+	    sun4)
+		echo sparc-sun-sunos${UNAME_RELEASE}
+		;;
+	esac
+	exit ;;
+    aushp:SunOS:*:*)
+	echo sparc-auspex-sunos${UNAME_RELEASE}
+	exit ;;
+    # The situation for MiNT is a little confusing.  The machine name
+    # can be virtually everything (everything which is not
+    # "atarist" or "atariste" at least should have a processor
+    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
+    # to the lowercase version "mint" (or "freemint").  Finally
+    # the system name "TOS" denotes a system which is actually not
+    # MiNT.  But MiNT is downward compatible to TOS, so this should
+    # be no problem.
+    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+	echo m68k-atari-mint${UNAME_RELEASE}
+	exit ;;
+    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+	echo m68k-atari-mint${UNAME_RELEASE}
+	exit ;;
+    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+	echo m68k-atari-mint${UNAME_RELEASE}
+	exit ;;
+    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+	echo m68k-milan-mint${UNAME_RELEASE}
+	exit ;;
+    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+	echo m68k-hades-mint${UNAME_RELEASE}
+	exit ;;
+    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+	echo m68k-unknown-mint${UNAME_RELEASE}
+	exit ;;
+    m68k:machten:*:*)
+	echo m68k-apple-machten${UNAME_RELEASE}
+	exit ;;
+    powerpc:machten:*:*)
+	echo powerpc-apple-machten${UNAME_RELEASE}
+	exit ;;
+    RISC*:Mach:*:*)
+	echo mips-dec-mach_bsd4.3
+	exit ;;
+    RISC*:ULTRIX:*:*)
+	echo mips-dec-ultrix${UNAME_RELEASE}
+	exit ;;
+    VAX*:ULTRIX*:*:*)
+	echo vax-dec-ultrix${UNAME_RELEASE}
+	exit ;;
+    2020:CLIX:*:* | 2430:CLIX:*:*)
+	echo clipper-intergraph-clix${UNAME_RELEASE}
+	exit ;;
+    mips:*:*:UMIPS | mips:*:*:RISCos)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h>  /* for printf() prototype */
+	int main (int argc, char *argv[]) {
+#else
+	int main (argc, argv) int argc; char *argv[]; {
+#endif
+	#if defined (host_mips) && defined (MIPSEB)
+	#if defined (SYSTYPE_SYSV)
+	  printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+	#endif
+	#if defined (SYSTYPE_SVR4)
+	  printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+	#endif
+	#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+	  printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+	#endif
+	#endif
+	  exit (-1);
+	}
+EOF
+	$CC_FOR_BUILD -o $dummy $dummy.c &&
+	  dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+	  SYSTEM_NAME=`$dummy $dummyarg` &&
+	    { echo "$SYSTEM_NAME"; exit; }
+	echo mips-mips-riscos${UNAME_RELEASE}
+	exit ;;
+    Motorola:PowerMAX_OS:*:*)
+	echo powerpc-motorola-powermax
+	exit ;;
+    Motorola:*:4.3:PL8-*)
+	echo powerpc-harris-powermax
+	exit ;;
+    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+	echo powerpc-harris-powermax
+	exit ;;
+    Night_Hawk:Power_UNIX:*:*)
+	echo powerpc-harris-powerunix
+	exit ;;
+    m88k:CX/UX:7*:*)
+	echo m88k-harris-cxux7
+	exit ;;
+    m88k:*:4*:R4*)
+	echo m88k-motorola-sysv4
+	exit ;;
+    m88k:*:3*:R3*)
+	echo m88k-motorola-sysv3
+	exit ;;
+    AViiON:dgux:*:*)
+	# DG/UX returns AViiON for all architectures
+	UNAME_PROCESSOR=`/usr/bin/uname -p`
+	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+	then
+	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+	       [ ${TARGET_BINARY_INTERFACE}x = x ]
+	    then
+		echo m88k-dg-dgux${UNAME_RELEASE}
+	    else
+		echo m88k-dg-dguxbcs${UNAME_RELEASE}
+	    fi
+	else
+	    echo i586-dg-dgux${UNAME_RELEASE}
+	fi
+	exit ;;
+    M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
+	echo m88k-dolphin-sysv3
+	exit ;;
+    M88*:*:R3*:*)
+	# Delta 88k system running SVR3
+	echo m88k-motorola-sysv3
+	exit ;;
+    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+	echo m88k-tektronix-sysv3
+	exit ;;
+    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+	echo m68k-tektronix-bsd
+	exit ;;
+    *:IRIX*:*:*)
+	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+	exit ;;
+    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
+	exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
+    i*86:AIX:*:*)
+	echo i386-ibm-aix
+	exit ;;
+    ia64:AIX:*:*)
+	if [ -x /usr/bin/oslevel ] ; then
+		IBM_REV=`/usr/bin/oslevel`
+	else
+		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+	fi
+	echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+	exit ;;
+    *:AIX:2:3)
+	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+		eval $set_cc_for_build
+		sed 's/^		//' << EOF >$dummy.c
+		#include <sys/systemcfg.h>
+
+		main()
+			{
+			if (!__power_pc())
+				exit(1);
+			puts("powerpc-ibm-aix3.2.5");
+			exit(0);
+			}
+EOF
+		if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+		then
+			echo "$SYSTEM_NAME"
+		else
+			echo rs6000-ibm-aix3.2.5
+		fi
+	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+		echo rs6000-ibm-aix3.2.4
+	else
+		echo rs6000-ibm-aix3.2
+	fi
+	exit ;;
+    *:AIX:*:[4567])
+	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+		IBM_ARCH=rs6000
+	else
+		IBM_ARCH=powerpc
+	fi
+	if [ -x /usr/bin/lslpp ] ; then
+		IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
+			   awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
+	else
+		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+	fi
+	echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+	exit ;;
+    *:AIX:*:*)
+	echo rs6000-ibm-aix
+	exit ;;
+    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+	echo romp-ibm-bsd4.4
+	exit ;;
+    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
+	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
+	exit ;;                             # report: romp-ibm BSD 4.3
+    *:BOSX:*:*)
+	echo rs6000-bull-bosx
+	exit ;;
+    DPX/2?00:B.O.S.:*:*)
+	echo m68k-bull-sysv3
+	exit ;;
+    9000/[34]??:4.3bsd:1.*:*)
+	echo m68k-hp-bsd
+	exit ;;
+    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+	echo m68k-hp-bsd4.4
+	exit ;;
+    9000/[34678]??:HP-UX:*:*)
+	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+	case "${UNAME_MACHINE}" in
+	    9000/31? )            HP_ARCH=m68000 ;;
+	    9000/[34]?? )         HP_ARCH=m68k ;;
+	    9000/[678][0-9][0-9])
+		if [ -x /usr/bin/getconf ]; then
+		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+		    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+		    case "${sc_cpu_version}" in
+		      523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
+		      528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
+		      532)                      # CPU_PA_RISC2_0
+			case "${sc_kernel_bits}" in
+			  32) HP_ARCH=hppa2.0n ;;
+			  64) HP_ARCH=hppa2.0w ;;
+			  '') HP_ARCH=hppa2.0 ;;   # HP-UX 10.20
+			esac ;;
+		    esac
+		fi
+		if [ "${HP_ARCH}" = "" ]; then
+		    eval $set_cc_for_build
+		    sed 's/^		//' << EOF >$dummy.c
+
+		#define _HPUX_SOURCE
+		#include <stdlib.h>
+		#include <unistd.h>
+
+		int main ()
+		{
+		#if defined(_SC_KERNEL_BITS)
+		    long bits = sysconf(_SC_KERNEL_BITS);
+		#endif
+		    long cpu  = sysconf (_SC_CPU_VERSION);
+
+		    switch (cpu)
+			{
+			case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+			case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+			case CPU_PA_RISC2_0:
+		#if defined(_SC_KERNEL_BITS)
+			    switch (bits)
+				{
+				case 64: puts ("hppa2.0w"); break;
+				case 32: puts ("hppa2.0n"); break;
+				default: puts ("hppa2.0"); break;
+				} break;
+		#else  /* !defined(_SC_KERNEL_BITS) */
+			    puts ("hppa2.0"); break;
+		#endif
+			default: puts ("hppa1.0"); break;
+			}
+		    exit (0);
+		}
+EOF
+		    (CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+		    test -z "$HP_ARCH" && HP_ARCH=hppa
+		fi ;;
+	esac
+	if [ ${HP_ARCH} = hppa2.0w ]
+	then
+	    eval $set_cc_for_build
+
+	    # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
+	    # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
+	    # generating 64-bit code.  GNU and HP use different nomenclature:
+	    #
+	    # $ CC_FOR_BUILD=cc ./config.guess
+	    # => hppa2.0w-hp-hpux11.23
+	    # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
+	    # => hppa64-hp-hpux11.23
+
+	    if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) |
+		grep -q __LP64__
+	    then
+		HP_ARCH=hppa2.0w
+	    else
+		HP_ARCH=hppa64
+	    fi
+	fi
+	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+	exit ;;
+    ia64:HP-UX:*:*)
+	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+	echo ia64-hp-hpux${HPUX_REV}
+	exit ;;
+    3050*:HI-UX:*:*)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#include <unistd.h>
+	int
+	main ()
+	{
+	  long cpu = sysconf (_SC_CPU_VERSION);
+	  /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+	     true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
+	     results, however.  */
+	  if (CPU_IS_PA_RISC (cpu))
+	    {
+	      switch (cpu)
+		{
+		  case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+		  case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+		  case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+		  default: puts ("hppa-hitachi-hiuxwe2"); break;
+		}
+	    }
+	  else if (CPU_IS_HP_MC68K (cpu))
+	    puts ("m68k-hitachi-hiuxwe2");
+	  else puts ("unknown-hitachi-hiuxwe2");
+	  exit (0);
+	}
+EOF
+	$CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+		{ echo "$SYSTEM_NAME"; exit; }
+	echo unknown-hitachi-hiuxwe2
+	exit ;;
+    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+	echo hppa1.1-hp-bsd
+	exit ;;
+    9000/8??:4.3bsd:*:*)
+	echo hppa1.0-hp-bsd
+	exit ;;
+    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+	echo hppa1.0-hp-mpeix
+	exit ;;
+    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+	echo hppa1.1-hp-osf
+	exit ;;
+    hp8??:OSF1:*:*)
+	echo hppa1.0-hp-osf
+	exit ;;
+    i*86:OSF1:*:*)
+	if [ -x /usr/sbin/sysversion ] ; then
+	    echo ${UNAME_MACHINE}-unknown-osf1mk
+	else
+	    echo ${UNAME_MACHINE}-unknown-osf1
+	fi
+	exit ;;
+    parisc*:Lites*:*:*)
+	echo hppa1.1-hp-lites
+	exit ;;
+    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+	echo c1-convex-bsd
+	exit ;;
+    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+	if getsysinfo -f scalar_acc
+	then echo c32-convex-bsd
+	else echo c2-convex-bsd
+	fi
+	exit ;;
+    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+	echo c34-convex-bsd
+	exit ;;
+    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+	echo c38-convex-bsd
+	exit ;;
+    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+	echo c4-convex-bsd
+	exit ;;
+    CRAY*Y-MP:*:*:*)
+	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*[A-Z]90:*:*:*)
+	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+	      -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*TS:*:*:*)
+	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*T3E:*:*:*)
+	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*SV1:*:*:*)
+	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    *:UNICOS/mp:*:*)
+	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+	FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
+	FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
+	FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+	echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+	exit ;;
+    5000:UNIX_System_V:4.*:*)
+	FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
+	FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`
+	echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+	exit ;;
+    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+	exit ;;
+    sparc*:BSD/OS:*:*)
+	echo sparc-unknown-bsdi${UNAME_RELEASE}
+	exit ;;
+    *:BSD/OS:*:*)
+	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+	exit ;;
+    *:FreeBSD:*:*)
+	UNAME_PROCESSOR=`/usr/bin/uname -p`
+	case ${UNAME_PROCESSOR} in
+	    amd64)
+		echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+	    *)
+		echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+	esac
+	exit ;;
+    i*:CYGWIN*:*)
+	echo ${UNAME_MACHINE}-pc-cygwin
+	exit ;;
+    *:MINGW64*:*)
+	echo ${UNAME_MACHINE}-pc-mingw64
+	exit ;;
+    *:MINGW*:*)
+	echo ${UNAME_MACHINE}-pc-mingw32
+	exit ;;
+    *:MSYS*:*)
+	echo ${UNAME_MACHINE}-pc-msys
+	exit ;;
+    i*:windows32*:*)
+	# uname -m includes "-pc" on this system.
+	echo ${UNAME_MACHINE}-mingw32
+	exit ;;
+    i*:PW*:*)
+	echo ${UNAME_MACHINE}-pc-pw32
+	exit ;;
+    *:Interix*:*)
+	case ${UNAME_MACHINE} in
+	    x86)
+		echo i586-pc-interix${UNAME_RELEASE}
+		exit ;;
+	    authenticamd | genuineintel | EM64T)
+		echo x86_64-unknown-interix${UNAME_RELEASE}
+		exit ;;
+	    IA64)
+		echo ia64-unknown-interix${UNAME_RELEASE}
+		exit ;;
+	esac ;;
+    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+	echo i${UNAME_MACHINE}-pc-mks
+	exit ;;
+    8664:Windows_NT:*)
+	echo x86_64-pc-mks
+	exit ;;
+    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+	# How do we know it's Interix rather than the generic POSIX subsystem?
+	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+	# UNAME_MACHINE based on the output of uname instead of i386?
+	echo i586-pc-interix
+	exit ;;
+    i*:UWIN*:*)
+	echo ${UNAME_MACHINE}-pc-uwin
+	exit ;;
+    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+	echo x86_64-unknown-cygwin
+	exit ;;
+    p*:CYGWIN*:*)
+	echo powerpcle-unknown-cygwin
+	exit ;;
+    prep*:SunOS:5.*:*)
+	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    *:GNU:*:*)
+	# the GNU system
+	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+	exit ;;
+    *:GNU/*:*:*)
+	# other systems with GNU libc and userland
+	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
+	exit ;;
+    i*86:Minix:*:*)
+	echo ${UNAME_MACHINE}-pc-minix
+	exit ;;
+    aarch64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    aarch64_be:Linux:*:*)
+	UNAME_MACHINE=aarch64_be
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    alpha:Linux:*:*)
+	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+	  EV5)   UNAME_MACHINE=alphaev5 ;;
+	  EV56)  UNAME_MACHINE=alphaev56 ;;
+	  PCA56) UNAME_MACHINE=alphapca56 ;;
+	  PCA57) UNAME_MACHINE=alphapca56 ;;
+	  EV6)   UNAME_MACHINE=alphaev6 ;;
+	  EV67)  UNAME_MACHINE=alphaev67 ;;
+	  EV68*) UNAME_MACHINE=alphaev68 ;;
+	esac
+	objdump --private-headers /bin/sh | grep -q ld.so.1
+	if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    arc:Linux:*:* | arceb:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    arm*:Linux:*:*)
+	eval $set_cc_for_build
+	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
+	    | grep -q __ARM_EABI__
+	then
+	    echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	else
+	    if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+		| grep -q __ARM_PCS_VFP
+	    then
+		echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
+	    else
+		echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
+	    fi
+	fi
+	exit ;;
+    avr32*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    cris:Linux:*:*)
+	echo ${UNAME_MACHINE}-axis-linux-${LIBC}
+	exit ;;
+    crisv32:Linux:*:*)
+	echo ${UNAME_MACHINE}-axis-linux-${LIBC}
+	exit ;;
+    e2k:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    frv:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    hexagon:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    i*86:Linux:*:*)
+	echo ${UNAME_MACHINE}-pc-linux-${LIBC}
+	exit ;;
+    ia64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    k1om:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    m32r*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    m68*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    mips:Linux:*:* | mips64:Linux:*:*)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#undef CPU
+	#undef ${UNAME_MACHINE}
+	#undef ${UNAME_MACHINE}el
+	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+	CPU=${UNAME_MACHINE}el
+	#else
+	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+	CPU=${UNAME_MACHINE}
+	#else
+	CPU=
+	#endif
+	#endif
+EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
+	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
+	;;
+    mips64el:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    openrisc*:Linux:*:*)
+	echo or1k-unknown-linux-${LIBC}
+	exit ;;
+    or32:Linux:*:* | or1k*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    padre:Linux:*:*)
+	echo sparc-unknown-linux-${LIBC}
+	exit ;;
+    parisc64:Linux:*:* | hppa64:Linux:*:*)
+	echo hppa64-unknown-linux-${LIBC}
+	exit ;;
+    parisc:Linux:*:* | hppa:Linux:*:*)
+	# Look for CPU level
+	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+	  PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
+	  PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
+	  *)    echo hppa-unknown-linux-${LIBC} ;;
+	esac
+	exit ;;
+    ppc64:Linux:*:*)
+	echo powerpc64-unknown-linux-${LIBC}
+	exit ;;
+    ppc:Linux:*:*)
+	echo powerpc-unknown-linux-${LIBC}
+	exit ;;
+    ppc64le:Linux:*:*)
+	echo powerpc64le-unknown-linux-${LIBC}
+	exit ;;
+    ppcle:Linux:*:*)
+	echo powerpcle-unknown-linux-${LIBC}
+	exit ;;
+    riscv32:Linux:*:* | riscv64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    s390:Linux:*:* | s390x:Linux:*:*)
+	echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
+	exit ;;
+    sh64*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    sh*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    sparc:Linux:*:* | sparc64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    tile*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    vax:Linux:*:*)
+	echo ${UNAME_MACHINE}-dec-linux-${LIBC}
+	exit ;;
+    x86_64:Linux:*:*)
+	echo ${UNAME_MACHINE}-pc-linux-${LIBC}
+	exit ;;
+    xtensa*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    i*86:DYNIX/ptx:4*:*)
+	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+	# earlier versions are messed up and put the nodename in both
+	# sysname and nodename.
+	echo i386-sequent-sysv4
+	exit ;;
+    i*86:UNIX_SV:4.2MP:2.*)
+	# Unixware is an offshoot of SVR4, but it has its own version
+	# number series starting with 2...
+	# I am not positive that other SVR4 systems won't match this,
+	# I just have to hope.  -- rms.
+	# Use sysv4.2uw... so that sysv4* matches it.
+	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+	exit ;;
+    i*86:OS/2:*:*)
+	# If we were able to find `uname', then EMX Unix compatibility
+	# is probably installed.
+	echo ${UNAME_MACHINE}-pc-os2-emx
+	exit ;;
+    i*86:XTS-300:*:STOP)
+	echo ${UNAME_MACHINE}-unknown-stop
+	exit ;;
+    i*86:atheos:*:*)
+	echo ${UNAME_MACHINE}-unknown-atheos
+	exit ;;
+    i*86:syllable:*:*)
+	echo ${UNAME_MACHINE}-pc-syllable
+	exit ;;
+    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
+	echo i386-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    i*86:*DOS:*:*)
+	echo ${UNAME_MACHINE}-pc-msdosdjgpp
+	exit ;;
+    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+		echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+	else
+		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+	fi
+	exit ;;
+    i*86:*:5:[678]*)
+	# UnixWare 7.x, OpenUNIX and OpenServer 6.
+	case `/bin/uname -X | grep "^Machine"` in
+	    *486*)	     UNAME_MACHINE=i486 ;;
+	    *Pentium)	     UNAME_MACHINE=i586 ;;
+	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+	esac
+	echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+	exit ;;
+    i*86:*:3.2:*)
+	if test -f /usr/options/cb.name; then
+		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+		echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+	elif /bin/uname -X 2>/dev/null >/dev/null ; then
+		UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+		(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+		(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+			&& UNAME_MACHINE=i586
+		(/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+			&& UNAME_MACHINE=i686
+		(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+			&& UNAME_MACHINE=i686
+		echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+	else
+		echo ${UNAME_MACHINE}-pc-sysv32
+	fi
+	exit ;;
+    pc:*:*:*)
+	# Left here for compatibility:
+	# uname -m prints for DJGPP always 'pc', but it prints nothing about
+	# the processor, so we play safe by assuming i586.
+	# Note: whatever this is, it MUST be the same as what config.sub
+	# prints for the "djgpp" host, or else GDB configure will decide that
+	# this is a cross-build.
+	echo i586-pc-msdosdjgpp
+	exit ;;
+    Intel:Mach:3*:*)
+	echo i386-pc-mach3
+	exit ;;
+    paragon:*:*:*)
+	echo i860-intel-osf1
+	exit ;;
+    i860:*:4.*:*) # i860-SVR4
+	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+	  echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+	else # Add other i860-SVR4 vendors below as they are discovered.
+	  echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
+	fi
+	exit ;;
+    mini*:CTIX:SYS*5:*)
+	# "miniframe"
+	echo m68010-convergent-sysv
+	exit ;;
+    mc68k:UNIX:SYSTEM5:3.51m)
+	echo m68k-convergent-sysv
+	exit ;;
+    M680?0:D-NIX:5.3:*)
+	echo m68k-diab-dnix
+	exit ;;
+    M68*:*:R3V[5678]*:*)
+	test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
+    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)
+	OS_REL=''
+	test -r /etc/.relid \
+	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+	  && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+	  && { echo i486-ncr-sysv4; exit; } ;;
+    NCR*:*:4.2:* | MPRAS*:*:4.2:*)
+	OS_REL='.3'
+	test -r /etc/.relid \
+	    && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+	    && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
+	/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
+	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+	echo m68k-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    mc68030:UNIX_System_V:4.*:*)
+	echo m68k-atari-sysv4
+	exit ;;
+    TSUNAMI:LynxOS:2.*:*)
+	echo sparc-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    rs6000:LynxOS:2.*:*)
+	echo rs6000-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
+	echo powerpc-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    SM[BE]S:UNIX_SV:*:*)
+	echo mips-dde-sysv${UNAME_RELEASE}
+	exit ;;
+    RM*:ReliantUNIX-*:*:*)
+	echo mips-sni-sysv4
+	exit ;;
+    RM*:SINIX-*:*:*)
+	echo mips-sni-sysv4
+	exit ;;
+    *:SINIX-*:*:*)
+	if uname -p 2>/dev/null >/dev/null ; then
+		UNAME_MACHINE=`(uname -p) 2>/dev/null`
+		echo ${UNAME_MACHINE}-sni-sysv4
+	else
+		echo ns32k-sni-sysv
+	fi
+	exit ;;
+    PENTIUM:*:4.0*:*)	# Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+			# says <Richard.M.Bartel@ccMail.Census.GOV>
+	echo i586-unisys-sysv4
+	exit ;;
+    *:UNIX_System_V:4*:FTX*)
+	# From Gerald Hewes <hewes@openmarket.com>.
+	# How about differentiating between stratus architectures? -djm
+	echo hppa1.1-stratus-sysv4
+	exit ;;
+    *:*:*:FTX*)
+	# From seanf@swdc.stratus.com.
+	echo i860-stratus-sysv4
+	exit ;;
+    i*86:VOS:*:*)
+	# From Paul.Green@stratus.com.
+	echo ${UNAME_MACHINE}-stratus-vos
+	exit ;;
+    *:VOS:*:*)
+	# From Paul.Green@stratus.com.
+	echo hppa1.1-stratus-vos
+	exit ;;
+    mc68*:A/UX:*:*)
+	echo m68k-apple-aux${UNAME_RELEASE}
+	exit ;;
+    news*:NEWS-OS:6*:*)
+	echo mips-sony-newsos6
+	exit ;;
+    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+	if [ -d /usr/nec ]; then
+		echo mips-nec-sysv${UNAME_RELEASE}
+	else
+		echo mips-unknown-sysv${UNAME_RELEASE}
+	fi
+	exit ;;
+    BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
+	echo powerpc-be-beos
+	exit ;;
+    BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.
+	echo powerpc-apple-beos
+	exit ;;
+    BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
+	echo i586-pc-beos
+	exit ;;
+    BePC:Haiku:*:*)	# Haiku running on Intel PC compatible.
+	echo i586-pc-haiku
+	exit ;;
+    x86_64:Haiku:*:*)
+	echo x86_64-unknown-haiku
+	exit ;;
+    SX-4:SUPER-UX:*:*)
+	echo sx4-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-5:SUPER-UX:*:*)
+	echo sx5-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-6:SUPER-UX:*:*)
+	echo sx6-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-7:SUPER-UX:*:*)
+	echo sx7-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-8:SUPER-UX:*:*)
+	echo sx8-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-8R:SUPER-UX:*:*)
+	echo sx8r-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-ACE:SUPER-UX:*:*)
+	echo sxace-nec-superux${UNAME_RELEASE}
+	exit ;;
+    Power*:Rhapsody:*:*)
+	echo powerpc-apple-rhapsody${UNAME_RELEASE}
+	exit ;;
+    *:Rhapsody:*:*)
+	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+	exit ;;
+    *:Darwin:*:*)
+	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+	eval $set_cc_for_build
+	if test "$UNAME_PROCESSOR" = unknown ; then
+	    UNAME_PROCESSOR=powerpc
+	fi
+	if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
+	    if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
+		if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+		    (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+		    grep IS_64BIT_ARCH >/dev/null
+		then
+		    case $UNAME_PROCESSOR in
+			i386) UNAME_PROCESSOR=x86_64 ;;
+			powerpc) UNAME_PROCESSOR=powerpc64 ;;
+		    esac
+		fi
+	    fi
+	elif test "$UNAME_PROCESSOR" = i386 ; then
+	    # Avoid executing cc on OS X 10.9, as it ships with a stub
+	    # that puts up a graphical alert prompting to install
+	    # developer tools.  Any system running Mac OS X 10.7 or
+	    # later (Darwin 11 and later) is required to have a 64-bit
+	    # processor. This is not true of the ARM version of Darwin
+	    # that Apple uses in portable devices.
+	    UNAME_PROCESSOR=x86_64
+	fi
+	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+	exit ;;
+    *:procnto*:*:* | *:QNX:[0123456789]*:*)
+	UNAME_PROCESSOR=`uname -p`
+	if test "$UNAME_PROCESSOR" = x86; then
+		UNAME_PROCESSOR=i386
+		UNAME_MACHINE=pc
+	fi
+	echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+	exit ;;
+    *:QNX:*:4*)
+	echo i386-pc-qnx
+	exit ;;
+    NEO-?:NONSTOP_KERNEL:*:*)
+	echo neo-tandem-nsk${UNAME_RELEASE}
+	exit ;;
+    NSE-*:NONSTOP_KERNEL:*:*)
+	echo nse-tandem-nsk${UNAME_RELEASE}
+	exit ;;
+    NSR-?:NONSTOP_KERNEL:*:*)
+	echo nsr-tandem-nsk${UNAME_RELEASE}
+	exit ;;
+    *:NonStop-UX:*:*)
+	echo mips-compaq-nonstopux
+	exit ;;
+    BS2000:POSIX*:*:*)
+	echo bs2000-siemens-sysv
+	exit ;;
+    DS/*:UNIX_System_V:*:*)
+	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+	exit ;;
+    *:Plan9:*:*)
+	# "uname -m" is not consistent, so use $cputype instead. 386
+	# is converted to i386 for consistency with other x86
+	# operating systems.
+	if test "$cputype" = 386; then
+	    UNAME_MACHINE=i386
+	else
+	    UNAME_MACHINE="$cputype"
+	fi
+	echo ${UNAME_MACHINE}-unknown-plan9
+	exit ;;
+    *:TOPS-10:*:*)
+	echo pdp10-unknown-tops10
+	exit ;;
+    *:TENEX:*:*)
+	echo pdp10-unknown-tenex
+	exit ;;
+    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+	echo pdp10-dec-tops20
+	exit ;;
+    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+	echo pdp10-xkl-tops20
+	exit ;;
+    *:TOPS-20:*:*)
+	echo pdp10-unknown-tops20
+	exit ;;
+    *:ITS:*:*)
+	echo pdp10-unknown-its
+	exit ;;
+    SEI:*:*:SEIUX)
+	echo mips-sei-seiux${UNAME_RELEASE}
+	exit ;;
+    *:DragonFly:*:*)
+	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+	exit ;;
+    *:*VMS:*:*)
+	UNAME_MACHINE=`(uname -p) 2>/dev/null`
+	case "${UNAME_MACHINE}" in
+	    A*) echo alpha-dec-vms ; exit ;;
+	    I*) echo ia64-dec-vms ; exit ;;
+	    V*) echo vax-dec-vms ; exit ;;
+	esac ;;
+    *:XENIX:*:SysV)
+	echo i386-pc-xenix
+	exit ;;
+    i*86:skyos:*:*)
+	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'`
+	exit ;;
+    i*86:rdos:*:*)
+	echo ${UNAME_MACHINE}-pc-rdos
+	exit ;;
+    i*86:AROS:*:*)
+	echo ${UNAME_MACHINE}-pc-aros
+	exit ;;
+    x86_64:VMkernel:*:*)
+	echo ${UNAME_MACHINE}-unknown-esx
+	exit ;;
+    amd64:Isilon\ OneFS:*:*)
+	echo x86_64-unknown-onefs
+	exit ;;
+esac
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script (version $timestamp), has failed to recognize the
+operating system you are using. If your script is old, overwrite
+config.guess and config.sub with the latest versions from:
+
+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
+and
+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
+
+If $0 has already been updated, send the following data and any
+information you think might be pertinent to config-patches@gnu.org to
+provide the necessary information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo               = `(hostinfo) 2>/dev/null`
+/bin/universe          = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch              = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM  = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/SOURCES/config.sub b/SOURCES/config.sub
new file mode 100644
index 0000000..cc69b06
--- /dev/null
+++ b/SOURCES/config.sub
@@ -0,0 +1,1823 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+#   Copyright 1992-2016 Free Software Foundation, Inc.
+
+timestamp='2016-09-05'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that
+# program.  This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
+
+
+# Please send patches to <config-patches@gnu.org>.
+#
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support.  The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright 1992-2016 Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit ;;
+    --version | -v )
+       echo "$version" ; exit ;;
+    --help | --h* | -h )
+       echo "$usage"; exit ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )	# Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help"
+       exit 1 ;;
+
+    *local*)
+       # First pass through any local machine types.
+       echo $1
+       exit ;;
+
+    * )
+       break ;;
+  esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+    exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+    exit 1;;
+esac
+
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+  nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
+  linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
+  knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \
+  kopensolaris*-gnu* | cloudabi*-eabi* | \
+  storm-chaos* | os2-emx* | rtmk-nova*)
+    os=-$maybe_os
+    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+    ;;
+  android-linux)
+    os=-linux-android
+    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
+    ;;
+  *)
+    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+    if [ $basic_machine != $1 ]
+    then os=`echo $1 | sed 's/.*-/-/'`
+    else os=; fi
+    ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work.  We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+	-sun*os*)
+		# Prevent following clause from handling this invalid input.
+		;;
+	-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+	-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+	-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+	-apple | -axis | -knuth | -cray | -microblaze*)
+		os=
+		basic_machine=$1
+		;;
+	-bluegene*)
+		os=-cnk
+		;;
+	-sim | -cisco | -oki | -wec | -winbond)
+		os=
+		basic_machine=$1
+		;;
+	-scout)
+		;;
+	-wrs)
+		os=-vxworks
+		basic_machine=$1
+		;;
+	-chorusos*)
+		os=-chorusos
+		basic_machine=$1
+		;;
+	-chorusrdb)
+		os=-chorusrdb
+		basic_machine=$1
+		;;
+	-hiux*)
+		os=-hiuxwe2
+		;;
+	-sco6)
+		os=-sco5v6
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco5)
+		os=-sco3.2v5
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco4)
+		os=-sco3.2v4
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco3.2.[4-9]*)
+		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco3.2v[4-9]*)
+		# Don't forget version if it is 3.2v4 or newer.
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco5v6*)
+		# Don't forget version if it is 3.2v4 or newer.
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco*)
+		os=-sco3.2v2
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-udk*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-isc)
+		os=-isc2.2
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-clix*)
+		basic_machine=clipper-intergraph
+		;;
+	-isc*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-lynx*178)
+		os=-lynxos178
+		;;
+	-lynx*5)
+		os=-lynxos5
+		;;
+	-lynx*)
+		os=-lynxos
+		;;
+	-ptx*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+		;;
+	-windowsnt*)
+		os=`echo $os | sed -e 's/windowsnt/winnt/'`
+		;;
+	-psos*)
+		os=-psos
+		;;
+	-mint | -mint[0-9]*)
+		basic_machine=m68k-atari
+		os=-mint
+		;;
+esac
+
+# Decode aliases for certain CPU-COMPANY combinations.
+case $basic_machine in
+	# Recognize the basic CPU types without company name.
+	# Some are omitted here because they have special meanings below.
+	1750a | 580 \
+	| a29k \
+	| aarch64 | aarch64_be \
+	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+	| am33_2.0 \
+	| arc | arceb \
+	| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
+	| avr | avr32 \
+	| ba \
+	| be32 | be64 \
+	| bfin \
+	| c4x | c8051 | clipper \
+	| d10v | d30v | dlx | dsp16xx \
+	| e2k | epiphany \
+	| fido | fr30 | frv | ft32 \
+	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+	| hexagon \
+	| i370 | i860 | i960 | ia64 \
+	| ip2k | iq2000 \
+	| k1om \
+	| le32 | le64 \
+	| lm32 \
+	| m32c | m32r | m32rle | m68000 | m68k | m88k \
+	| maxq | mb | microblaze | microblazeel | mcore | mep | metag \
+	| mips | mipsbe | mipseb | mipsel | mipsle \
+	| mips16 \
+	| mips64 | mips64el \
+	| mips64octeon | mips64octeonel \
+	| mips64orion | mips64orionel \
+	| mips64r5900 | mips64r5900el \
+	| mips64vr | mips64vrel \
+	| mips64vr4100 | mips64vr4100el \
+	| mips64vr4300 | mips64vr4300el \
+	| mips64vr5000 | mips64vr5000el \
+	| mips64vr5900 | mips64vr5900el \
+	| mipsisa32 | mipsisa32el \
+	| mipsisa32r2 | mipsisa32r2el \
+	| mipsisa32r6 | mipsisa32r6el \
+	| mipsisa64 | mipsisa64el \
+	| mipsisa64r2 | mipsisa64r2el \
+	| mipsisa64r6 | mipsisa64r6el \
+	| mipsisa64sb1 | mipsisa64sb1el \
+	| mipsisa64sr71k | mipsisa64sr71kel \
+	| mipsr5900 | mipsr5900el \
+	| mipstx39 | mipstx39el \
+	| mn10200 | mn10300 \
+	| moxie \
+	| mt \
+	| msp430 \
+	| nds32 | nds32le | nds32be \
+	| nios | nios2 | nios2eb | nios2el \
+	| ns16k | ns32k \
+	| open8 | or1k | or1knd | or32 \
+	| pdp10 | pdp11 | pj | pjl \
+	| powerpc | powerpc64 | powerpc64le | powerpcle \
+	| pyramid \
+	| riscv32 | riscv64 \
+	| rl78 | rx \
+	| score \
+	| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+	| sh64 | sh64le \
+	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
+	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
+	| spu \
+	| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
+	| ubicom32 \
+	| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
+	| visium \
+	| we32k \
+	| x86 | xc16x | xstormy16 | xtensa \
+	| z8k | z80)
+		basic_machine=$basic_machine-unknown
+		;;
+	c54x)
+		basic_machine=tic54x-unknown
+		;;
+	c55x)
+		basic_machine=tic55x-unknown
+		;;
+	c6x)
+		basic_machine=tic6x-unknown
+		;;
+	leon|leon[3-9])
+		basic_machine=sparc-$basic_machine
+		;;
+	m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
+		basic_machine=$basic_machine-unknown
+		os=-none
+		;;
+	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+		;;
+	ms1)
+		basic_machine=mt-unknown
+		;;
+
+	strongarm | thumb | xscale)
+		basic_machine=arm-unknown
+		;;
+	xgate)
+		basic_machine=$basic_machine-unknown
+		os=-none
+		;;
+	xscaleeb)
+		basic_machine=armeb-unknown
+		;;
+
+	xscaleel)
+		basic_machine=armel-unknown
+		;;
+
+	# We use `pc' rather than `unknown'
+	# because (1) that's what they normally are, and
+	# (2) the word "unknown" tends to confuse beginning users.
+	i*86 | x86_64)
+	  basic_machine=$basic_machine-pc
+	  ;;
+	# Object if more than one company name word.
+	*-*-*)
+		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+		exit 1
+		;;
+	# Recognize the basic CPU types with company name.
+	580-* \
+	| a29k-* \
+	| aarch64-* | aarch64_be-* \
+	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
+	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
+	| avr-* | avr32-* \
+	| ba-* \
+	| be32-* | be64-* \
+	| bfin-* | bs2000-* \
+	| c[123]* | c30-* | [cjt]90-* | c4x-* \
+	| c8051-* | clipper-* | craynv-* | cydra-* \
+	| d10v-* | d30v-* | dlx-* \
+	| e2k-* | elxsi-* \
+	| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
+	| h8300-* | h8500-* \
+	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+	| hexagon-* \
+	| i*86-* | i860-* | i960-* | ia64-* \
+	| ip2k-* | iq2000-* \
+	| k1om-* \
+	| le32-* | le64-* \
+	| lm32-* \
+	| m32c-* | m32r-* | m32rle-* \
+	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+	| m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
+	| microblaze-* | microblazeel-* \
+	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+	| mips16-* \
+	| mips64-* | mips64el-* \
+	| mips64octeon-* | mips64octeonel-* \
+	| mips64orion-* | mips64orionel-* \
+	| mips64r5900-* | mips64r5900el-* \
+	| mips64vr-* | mips64vrel-* \
+	| mips64vr4100-* | mips64vr4100el-* \
+	| mips64vr4300-* | mips64vr4300el-* \
+	| mips64vr5000-* | mips64vr5000el-* \
+	| mips64vr5900-* | mips64vr5900el-* \
+	| mipsisa32-* | mipsisa32el-* \
+	| mipsisa32r2-* | mipsisa32r2el-* \
+	| mipsisa32r6-* | mipsisa32r6el-* \
+	| mipsisa64-* | mipsisa64el-* \
+	| mipsisa64r2-* | mipsisa64r2el-* \
+	| mipsisa64r6-* | mipsisa64r6el-* \
+	| mipsisa64sb1-* | mipsisa64sb1el-* \
+	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
+	| mipsr5900-* | mipsr5900el-* \
+	| mipstx39-* | mipstx39el-* \
+	| mmix-* \
+	| mt-* \
+	| msp430-* \
+	| nds32-* | nds32le-* | nds32be-* \
+	| nios-* | nios2-* | nios2eb-* | nios2el-* \
+	| none-* | np1-* | ns16k-* | ns32k-* \
+	| open8-* \
+	| or1k*-* \
+	| orion-* \
+	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
+	| pyramid-* \
+	| riscv32-* | riscv64-* \
+	| rl78-* | romp-* | rs6000-* | rx-* \
+	| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
+	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
+	| sparclite-* \
+	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \
+	| tahoe-* \
+	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+	| tile*-* \
+	| tron-* \
+	| ubicom32-* \
+	| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
+	| vax-* \
+	| visium-* \
+	| we32k-* \
+	| x86-* | x86_64-* | xc16x-* | xps100-* \
+	| xstormy16-* | xtensa*-* \
+	| ymp-* \
+	| z8k-* | z80-*)
+		;;
+	# Recognize the basic CPU types without company name, with glob match.
+	xtensa*)
+		basic_machine=$basic_machine-unknown
+		;;
+	# Recognize the various machine names and aliases which stand
+	# for a CPU type and a company and sometimes even an OS.
+	386bsd)
+		basic_machine=i386-unknown
+		os=-bsd
+		;;
+	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+		basic_machine=m68000-att
+		;;
+	3b*)
+		basic_machine=we32k-att
+		;;
+	a29khif)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	abacus)
+		basic_machine=abacus-unknown
+		;;
+	adobe68k)
+		basic_machine=m68010-adobe
+		os=-scout
+		;;
+	alliant | fx80)
+		basic_machine=fx80-alliant
+		;;
+	altos | altos3068)
+		basic_machine=m68k-altos
+		;;
+	am29k)
+		basic_machine=a29k-none
+		os=-bsd
+		;;
+	amd64)
+		basic_machine=x86_64-pc
+		;;
+	amd64-*)
+		basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	amdahl)
+		basic_machine=580-amdahl
+		os=-sysv
+		;;
+	amiga | amiga-*)
+		basic_machine=m68k-unknown
+		;;
+	amigaos | amigados)
+		basic_machine=m68k-unknown
+		os=-amigaos
+		;;
+	amigaunix | amix)
+		basic_machine=m68k-unknown
+		os=-sysv4
+		;;
+	apollo68)
+		basic_machine=m68k-apollo
+		os=-sysv
+		;;
+	apollo68bsd)
+		basic_machine=m68k-apollo
+		os=-bsd
+		;;
+	aros)
+		basic_machine=i386-pc
+		os=-aros
+		;;
+	asmjs)
+		basic_machine=asmjs-unknown
+		;;
+	aux)
+		basic_machine=m68k-apple
+		os=-aux
+		;;
+	balance)
+		basic_machine=ns32k-sequent
+		os=-dynix
+		;;
+	blackfin)
+		basic_machine=bfin-unknown
+		os=-linux
+		;;
+	blackfin-*)
+		basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
+		os=-linux
+		;;
+	bluegene*)
+		basic_machine=powerpc-ibm
+		os=-cnk
+		;;
+	c54x-*)
+		basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	c55x-*)
+		basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	c6x-*)
+		basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	c90)
+		basic_machine=c90-cray
+		os=-unicos
+		;;
+	cegcc)
+		basic_machine=arm-unknown
+		os=-cegcc
+		;;
+	convex-c1)
+		basic_machine=c1-convex
+		os=-bsd
+		;;
+	convex-c2)
+		basic_machine=c2-convex
+		os=-bsd
+		;;
+	convex-c32)
+		basic_machine=c32-convex
+		os=-bsd
+		;;
+	convex-c34)
+		basic_machine=c34-convex
+		os=-bsd
+		;;
+	convex-c38)
+		basic_machine=c38-convex
+		os=-bsd
+		;;
+	cray | j90)
+		basic_machine=j90-cray
+		os=-unicos
+		;;
+	craynv)
+		basic_machine=craynv-cray
+		os=-unicosmp
+		;;
+	cr16 | cr16-*)
+		basic_machine=cr16-unknown
+		os=-elf
+		;;
+	crds | unos)
+		basic_machine=m68k-crds
+		;;
+	crisv32 | crisv32-* | etraxfs*)
+		basic_machine=crisv32-axis
+		;;
+	cris | cris-* | etrax*)
+		basic_machine=cris-axis
+		;;
+	crx)
+		basic_machine=crx-unknown
+		os=-elf
+		;;
+	da30 | da30-*)
+		basic_machine=m68k-da30
+		;;
+	decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+		basic_machine=mips-dec
+		;;
+	decsystem10* | dec10*)
+		basic_machine=pdp10-dec
+		os=-tops10
+		;;
+	decsystem20* | dec20*)
+		basic_machine=pdp10-dec
+		os=-tops20
+		;;
+	delta | 3300 | motorola-3300 | motorola-delta \
+	      | 3300-motorola | delta-motorola)
+		basic_machine=m68k-motorola
+		;;
+	delta88)
+		basic_machine=m88k-motorola
+		os=-sysv3
+		;;
+	dicos)
+		basic_machine=i686-pc
+		os=-dicos
+		;;
+	djgpp)
+		basic_machine=i586-pc
+		os=-msdosdjgpp
+		;;
+	dpx20 | dpx20-*)
+		basic_machine=rs6000-bull
+		os=-bosx
+		;;
+	dpx2* | dpx2*-bull)
+		basic_machine=m68k-bull
+		os=-sysv3
+		;;
+	e500v[12])
+		basic_machine=powerpc-unknown
+		os=$os"spe"
+		;;
+	e500v[12]-*)
+		basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+		os=$os"spe"
+		;;
+	ebmon29k)
+		basic_machine=a29k-amd
+		os=-ebmon
+		;;
+	elxsi)
+		basic_machine=elxsi-elxsi
+		os=-bsd
+		;;
+	encore | umax | mmax)
+		basic_machine=ns32k-encore
+		;;
+	es1800 | OSE68k | ose68k | ose | OSE)
+		basic_machine=m68k-ericsson
+		os=-ose
+		;;
+	fx2800)
+		basic_machine=i860-alliant
+		;;
+	genix)
+		basic_machine=ns32k-ns
+		;;
+	gmicro)
+		basic_machine=tron-gmicro
+		os=-sysv
+		;;
+	go32)
+		basic_machine=i386-pc
+		os=-go32
+		;;
+	h3050r* | hiux*)
+		basic_machine=hppa1.1-hitachi
+		os=-hiuxwe2
+		;;
+	h8300hms)
+		basic_machine=h8300-hitachi
+		os=-hms
+		;;
+	h8300xray)
+		basic_machine=h8300-hitachi
+		os=-xray
+		;;
+	h8500hms)
+		basic_machine=h8500-hitachi
+		os=-hms
+		;;
+	harris)
+		basic_machine=m88k-harris
+		os=-sysv3
+		;;
+	hp300-*)
+		basic_machine=m68k-hp
+		;;
+	hp300bsd)
+		basic_machine=m68k-hp
+		os=-bsd
+		;;
+	hp300hpux)
+		basic_machine=m68k-hp
+		os=-hpux
+		;;
+	hp3k9[0-9][0-9] | hp9[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hp9k2[0-9][0-9] | hp9k31[0-9])
+		basic_machine=m68000-hp
+		;;
+	hp9k3[2-9][0-9])
+		basic_machine=m68k-hp
+		;;
+	hp9k6[0-9][0-9] | hp6[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hp9k7[0-79][0-9] | hp7[0-79][0-9])
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k78[0-9] | hp78[0-9])
+		# FIXME: really hppa2.0-hp
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+		# FIXME: really hppa2.0-hp
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[0-9][13679] | hp8[0-9][13679])
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[0-9][0-9] | hp8[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hppa-next)
+		os=-nextstep3
+		;;
+	hppaosf)
+		basic_machine=hppa1.1-hp
+		os=-osf
+		;;
+	hppro)
+		basic_machine=hppa1.1-hp
+		os=-proelf
+		;;
+	i370-ibm* | ibm*)
+		basic_machine=i370-ibm
+		;;
+	i*86v32)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv32
+		;;
+	i*86v4*)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv4
+		;;
+	i*86v)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv
+		;;
+	i*86sol2)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-solaris2
+		;;
+	i386mach)
+		basic_machine=i386-mach
+		os=-mach
+		;;
+	i386-vsta | vsta)
+		basic_machine=i386-unknown
+		os=-vsta
+		;;
+	iris | iris4d)
+		basic_machine=mips-sgi
+		case $os in
+		    -irix*)
+			;;
+		    *)
+			os=-irix4
+			;;
+		esac
+		;;
+	isi68 | isi)
+		basic_machine=m68k-isi
+		os=-sysv
+		;;
+	leon-*|leon[3-9]-*)
+		basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'`
+		;;
+	m68knommu)
+		basic_machine=m68k-unknown
+		os=-linux
+		;;
+	m68knommu-*)
+		basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
+		os=-linux
+		;;
+	m88k-omron*)
+		basic_machine=m88k-omron
+		;;
+	magnum | m3230)
+		basic_machine=mips-mips
+		os=-sysv
+		;;
+	merlin)
+		basic_machine=ns32k-utek
+		os=-sysv
+		;;
+	microblaze*)
+		basic_machine=microblaze-xilinx
+		;;
+	mingw64)
+		basic_machine=x86_64-pc
+		os=-mingw64
+		;;
+	mingw32)
+		basic_machine=i686-pc
+		os=-mingw32
+		;;
+	mingw32ce)
+		basic_machine=arm-unknown
+		os=-mingw32ce
+		;;
+	miniframe)
+		basic_machine=m68000-convergent
+		;;
+	*mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+		basic_machine=m68k-atari
+		os=-mint
+		;;
+	mips3*-*)
+		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+		;;
+	mips3*)
+		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+		;;
+	monitor)
+		basic_machine=m68k-rom68k
+		os=-coff
+		;;
+	morphos)
+		basic_machine=powerpc-unknown
+		os=-morphos
+		;;
+	moxiebox)
+		basic_machine=moxie-unknown
+		os=-moxiebox
+		;;
+	msdos)
+		basic_machine=i386-pc
+		os=-msdos
+		;;
+	ms1-*)
+		basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
+		;;
+	msys)
+		basic_machine=i686-pc
+		os=-msys
+		;;
+	mvs)
+		basic_machine=i370-ibm
+		os=-mvs
+		;;
+	nacl)
+		basic_machine=le32-unknown
+		os=-nacl
+		;;
+	ncr3000)
+		basic_machine=i486-ncr
+		os=-sysv4
+		;;
+	netbsd386)
+		basic_machine=i386-unknown
+		os=-netbsd
+		;;
+	netwinder)
+		basic_machine=armv4l-rebel
+		os=-linux
+		;;
+	news | news700 | news800 | news900)
+		basic_machine=m68k-sony
+		os=-newsos
+		;;
+	news1000)
+		basic_machine=m68030-sony
+		os=-newsos
+		;;
+	news-3600 | risc-news)
+		basic_machine=mips-sony
+		os=-newsos
+		;;
+	necv70)
+		basic_machine=v70-nec
+		os=-sysv
+		;;
+	next | m*-next )
+		basic_machine=m68k-next
+		case $os in
+		    -nextstep* )
+			;;
+		    -ns2*)
+		      os=-nextstep2
+			;;
+		    *)
+		      os=-nextstep3
+			;;
+		esac
+		;;
+	nh3000)
+		basic_machine=m68k-harris
+		os=-cxux
+		;;
+	nh[45]000)
+		basic_machine=m88k-harris
+		os=-cxux
+		;;
+	nindy960)
+		basic_machine=i960-intel
+		os=-nindy
+		;;
+	mon960)
+		basic_machine=i960-intel
+		os=-mon960
+		;;
+	nonstopux)
+		basic_machine=mips-compaq
+		os=-nonstopux
+		;;
+	np1)
+		basic_machine=np1-gould
+		;;
+	neo-tandem)
+		basic_machine=neo-tandem
+		;;
+	nse-tandem)
+		basic_machine=nse-tandem
+		;;
+	nsr-tandem)
+		basic_machine=nsr-tandem
+		;;
+	op50n-* | op60c-*)
+		basic_machine=hppa1.1-oki
+		os=-proelf
+		;;
+	openrisc | openrisc-*)
+		basic_machine=or32-unknown
+		;;
+	os400)
+		basic_machine=powerpc-ibm
+		os=-os400
+		;;
+	OSE68000 | ose68000)
+		basic_machine=m68000-ericsson
+		os=-ose
+		;;
+	os68k)
+		basic_machine=m68k-none
+		os=-os68k
+		;;
+	pa-hitachi)
+		basic_machine=hppa1.1-hitachi
+		os=-hiuxwe2
+		;;
+	paragon)
+		basic_machine=i860-intel
+		os=-osf
+		;;
+	parisc)
+		basic_machine=hppa-unknown
+		os=-linux
+		;;
+	parisc-*)
+		basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
+		os=-linux
+		;;
+	pbd)
+		basic_machine=sparc-tti
+		;;
+	pbb)
+		basic_machine=m68k-tti
+		;;
+	pc532 | pc532-*)
+		basic_machine=ns32k-pc532
+		;;
+	pc98)
+		basic_machine=i386-pc
+		;;
+	pc98-*)
+		basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentium | p5 | k5 | k6 | nexgen | viac3)
+		basic_machine=i586-pc
+		;;
+	pentiumpro | p6 | 6x86 | athlon | athlon_*)
+		basic_machine=i686-pc
+		;;
+	pentiumii | pentium2 | pentiumiii | pentium3)
+		basic_machine=i686-pc
+		;;
+	pentium4)
+		basic_machine=i786-pc
+		;;
+	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+		basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentiumpro-* | p6-* | 6x86-* | athlon-*)
+		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentium4-*)
+		basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pn)
+		basic_machine=pn-gould
+		;;
+	power)	basic_machine=power-ibm
+		;;
+	ppc | ppcbe)	basic_machine=powerpc-unknown
+		;;
+	ppc-* | ppcbe-*)
+		basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppcle | powerpclittle)
+		basic_machine=powerpcle-unknown
+		;;
+	ppcle-* | powerpclittle-*)
+		basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppc64)	basic_machine=powerpc64-unknown
+		;;
+	ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppc64le | powerpc64little)
+		basic_machine=powerpc64le-unknown
+		;;
+	ppc64le-* | powerpc64little-*)
+		basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ps2)
+		basic_machine=i386-ibm
+		;;
+	pw32)
+		basic_machine=i586-unknown
+		os=-pw32
+		;;
+	rdos | rdos64)
+		basic_machine=x86_64-pc
+		os=-rdos
+		;;
+	rdos32)
+		basic_machine=i386-pc
+		os=-rdos
+		;;
+	rom68k)
+		basic_machine=m68k-rom68k
+		os=-coff
+		;;
+	rm[46]00)
+		basic_machine=mips-siemens
+		;;
+	rtpc | rtpc-*)
+		basic_machine=romp-ibm
+		;;
+	s390 | s390-*)
+		basic_machine=s390-ibm
+		;;
+	s390x | s390x-*)
+		basic_machine=s390x-ibm
+		;;
+	sa29200)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	sb1)
+		basic_machine=mipsisa64sb1-unknown
+		;;
+	sb1el)
+		basic_machine=mipsisa64sb1el-unknown
+		;;
+	sde)
+		basic_machine=mipsisa32-sde
+		os=-elf
+		;;
+	sei)
+		basic_machine=mips-sei
+		os=-seiux
+		;;
+	sequent)
+		basic_machine=i386-sequent
+		;;
+	sh)
+		basic_machine=sh-hitachi
+		os=-hms
+		;;
+	sh5el)
+		basic_machine=sh5le-unknown
+		;;
+	sh64)
+		basic_machine=sh64-unknown
+		;;
+	sparclite-wrs | simso-wrs)
+		basic_machine=sparclite-wrs
+		os=-vxworks
+		;;
+	sps7)
+		basic_machine=m68k-bull
+		os=-sysv2
+		;;
+	spur)
+		basic_machine=spur-unknown
+		;;
+	st2000)
+		basic_machine=m68k-tandem
+		;;
+	stratus)
+		basic_machine=i860-stratus
+		os=-sysv4
+		;;
+	strongarm-* | thumb-*)
+		basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	sun2)
+		basic_machine=m68000-sun
+		;;
+	sun2os3)
+		basic_machine=m68000-sun
+		os=-sunos3
+		;;
+	sun2os4)
+		basic_machine=m68000-sun
+		os=-sunos4
+		;;
+	sun3os3)
+		basic_machine=m68k-sun
+		os=-sunos3
+		;;
+	sun3os4)
+		basic_machine=m68k-sun
+		os=-sunos4
+		;;
+	sun4os3)
+		basic_machine=sparc-sun
+		os=-sunos3
+		;;
+	sun4os4)
+		basic_machine=sparc-sun
+		os=-sunos4
+		;;
+	sun4sol2)
+		basic_machine=sparc-sun
+		os=-solaris2
+		;;
+	sun3 | sun3-*)
+		basic_machine=m68k-sun
+		;;
+	sun4)
+		basic_machine=sparc-sun
+		;;
+	sun386 | sun386i | roadrunner)
+		basic_machine=i386-sun
+		;;
+	sv1)
+		basic_machine=sv1-cray
+		os=-unicos
+		;;
+	symmetry)
+		basic_machine=i386-sequent
+		os=-dynix
+		;;
+	t3e)
+		basic_machine=alphaev5-cray
+		os=-unicos
+		;;
+	t90)
+		basic_machine=t90-cray
+		os=-unicos
+		;;
+	tile*)
+		basic_machine=$basic_machine-unknown
+		os=-linux-gnu
+		;;
+	tx39)
+		basic_machine=mipstx39-unknown
+		;;
+	tx39el)
+		basic_machine=mipstx39el-unknown
+		;;
+	toad1)
+		basic_machine=pdp10-xkl
+		os=-tops20
+		;;
+	tower | tower-32)
+		basic_machine=m68k-ncr
+		;;
+	tpf)
+		basic_machine=s390x-ibm
+		os=-tpf
+		;;
+	udi29k)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	ultra3)
+		basic_machine=a29k-nyu
+		os=-sym1
+		;;
+	v810 | necv810)
+		basic_machine=v810-nec
+		os=-none
+		;;
+	vaxv)
+		basic_machine=vax-dec
+		os=-sysv
+		;;
+	vms)
+		basic_machine=vax-dec
+		os=-vms
+		;;
+	vpp*|vx|vx-*)
+		basic_machine=f301-fujitsu
+		;;
+	vxworks960)
+		basic_machine=i960-wrs
+		os=-vxworks
+		;;
+	vxworks68)
+		basic_machine=m68k-wrs
+		os=-vxworks
+		;;
+	vxworks29k)
+		basic_machine=a29k-wrs
+		os=-vxworks
+		;;
+	w65*)
+		basic_machine=w65-wdc
+		os=-none
+		;;
+	w89k-*)
+		basic_machine=hppa1.1-winbond
+		os=-proelf
+		;;
+	xbox)
+		basic_machine=i686-pc
+		os=-mingw32
+		;;
+	xps | xps100)
+		basic_machine=xps100-honeywell
+		;;
+	xscale-* | xscalee[bl]-*)
+		basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
+		;;
+	ymp)
+		basic_machine=ymp-cray
+		os=-unicos
+		;;
+	z8k-*-coff)
+		basic_machine=z8k-unknown
+		os=-sim
+		;;
+	z80-*-coff)
+		basic_machine=z80-unknown
+		os=-sim
+		;;
+	none)
+		basic_machine=none-none
+		os=-none
+		;;
+
+# Here we handle the default manufacturer of certain CPU types.  It is in
+# some cases the only manufacturer, in others, it is the most popular.
+	w89k)
+		basic_machine=hppa1.1-winbond
+		;;
+	op50n)
+		basic_machine=hppa1.1-oki
+		;;
+	op60c)
+		basic_machine=hppa1.1-oki
+		;;
+	romp)
+		basic_machine=romp-ibm
+		;;
+	mmix)
+		basic_machine=mmix-knuth
+		;;
+	rs6000)
+		basic_machine=rs6000-ibm
+		;;
+	vax)
+		basic_machine=vax-dec
+		;;
+	pdp10)
+		# there are many clones, so DEC is not a safe bet
+		basic_machine=pdp10-unknown
+		;;
+	pdp11)
+		basic_machine=pdp11-dec
+		;;
+	we32k)
+		basic_machine=we32k-att
+		;;
+	sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
+		basic_machine=sh-unknown
+		;;
+	sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
+		basic_machine=sparc-sun
+		;;
+	cydra)
+		basic_machine=cydra-cydrome
+		;;
+	orion)
+		basic_machine=orion-highlevel
+		;;
+	orion105)
+		basic_machine=clipper-highlevel
+		;;
+	mac | mpw | mac-mpw)
+		basic_machine=m68k-apple
+		;;
+	pmac | pmac-mpw)
+		basic_machine=powerpc-apple
+		;;
+	*-unknown)
+		# Make sure to match an already-canonicalized machine name.
+		;;
+	*)
+		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+		exit 1
+		;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $basic_machine in
+	*-digital*)
+		basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+		;;
+	*-commodore*)
+		basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+		;;
+	*)
+		;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x"$os" != x"" ]
+then
+case $os in
+	# First match some system type aliases
+	# that might get confused with valid system types.
+	# -solaris* is a basic system type, with this one exception.
+	-auroraux)
+		os=-auroraux
+		;;
+	-solaris1 | -solaris1.*)
+		os=`echo $os | sed -e 's|solaris1|sunos4|'`
+		;;
+	-solaris)
+		os=-solaris2
+		;;
+	-svr4*)
+		os=-sysv4
+		;;
+	-unixware*)
+		os=-sysv4.2uw
+		;;
+	-gnu/linux*)
+		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+		;;
+	# First accept the basic system types.
+	# The portable systems comes first.
+	# Each alternative MUST END IN A *, to match a version number.
+	# -sysv* is not here because it comes later, after sysvr4.
+	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
+	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
+	      | -sym* | -kopensolaris* | -plan9* \
+	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+	      | -aos* | -aros* | -cloudabi* | -sortix* \
+	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
+	      | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \
+	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+	      | -chorusos* | -chorusrdb* | -cegcc* \
+	      | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+	      | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
+	      | -linux-newlib* | -linux-musl* | -linux-uclibc* \
+	      | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
+	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \
+	      | -onefs* | -tirtos* | -phoenix*)
+	# Remember, each alternative MUST END IN *, to match a version number.
+		;;
+	-qnx*)
+		case $basic_machine in
+		    x86-* | i*86-*)
+			;;
+		    *)
+			os=-nto$os
+			;;
+		esac
+		;;
+	-nto-qnx*)
+		;;
+	-nto*)
+		os=`echo $os | sed -e 's|nto|nto-qnx|'`
+		;;
+	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
+	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+		;;
+	-mac*)
+		os=`echo $os | sed -e 's|mac|macos|'`
+		;;
+	-linux-dietlibc)
+		os=-linux-dietlibc
+		;;
+	-linux*)
+		os=`echo $os | sed -e 's|linux|linux-gnu|'`
+		;;
+	-sunos5*)
+		os=`echo $os | sed -e 's|sunos5|solaris2|'`
+		;;
+	-sunos6*)
+		os=`echo $os | sed -e 's|sunos6|solaris3|'`
+		;;
+	-opened*)
+		os=-openedition
+		;;
+	-os400*)
+		os=-os400
+		;;
+	-wince*)
+		os=-wince
+		;;
+	-osfrose*)
+		os=-osfrose
+		;;
+	-osf*)
+		os=-osf
+		;;
+	-utek*)
+		os=-bsd
+		;;
+	-dynix*)
+		os=-bsd
+		;;
+	-acis*)
+		os=-aos
+		;;
+	-atheos*)
+		os=-atheos
+		;;
+	-syllable*)
+		os=-syllable
+		;;
+	-386bsd)
+		os=-bsd
+		;;
+	-ctix* | -uts*)
+		os=-sysv
+		;;
+	-nova*)
+		os=-rtmk-nova
+		;;
+	-ns2 )
+		os=-nextstep2
+		;;
+	-nsk*)
+		os=-nsk
+		;;
+	# Preserve the version number of sinix5.
+	-sinix5.*)
+		os=`echo $os | sed -e 's|sinix|sysv|'`
+		;;
+	-sinix*)
+		os=-sysv4
+		;;
+	-tpf*)
+		os=-tpf
+		;;
+	-triton*)
+		os=-sysv3
+		;;
+	-oss*)
+		os=-sysv3
+		;;
+	-svr4)
+		os=-sysv4
+		;;
+	-svr3)
+		os=-sysv3
+		;;
+	-sysvr4)
+		os=-sysv4
+		;;
+	# This must come after -sysvr4.
+	-sysv*)
+		;;
+	-ose*)
+		os=-ose
+		;;
+	-es1800*)
+		os=-ose
+		;;
+	-xenix)
+		os=-xenix
+		;;
+	-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+		os=-mint
+		;;
+	-aros*)
+		os=-aros
+		;;
+	-zvmoe)
+		os=-zvmoe
+		;;
+	-dicos*)
+		os=-dicos
+		;;
+	-nacl*)
+		;;
+	-ios)
+		;;
+	-none)
+		;;
+	*)
+		# Get rid of the `-' at the beginning of $os.
+		os=`echo $os | sed 's/[^-]*-//'`
+		echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+		exit 1
+		;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system.  Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+	score-*)
+		os=-elf
+		;;
+	spu-*)
+		os=-elf
+		;;
+	*-acorn)
+		os=-riscix1.2
+		;;
+	arm*-rebel)
+		os=-linux
+		;;
+	arm*-semi)
+		os=-aout
+		;;
+	c4x-* | tic4x-*)
+		os=-coff
+		;;
+	c8051-*)
+		os=-elf
+		;;
+	hexagon-*)
+		os=-elf
+		;;
+	tic54x-*)
+		os=-coff
+		;;
+	tic55x-*)
+		os=-coff
+		;;
+	tic6x-*)
+		os=-coff
+		;;
+	# This must come before the *-dec entry.
+	pdp10-*)
+		os=-tops20
+		;;
+	pdp11-*)
+		os=-none
+		;;
+	*-dec | vax-*)
+		os=-ultrix4.2
+		;;
+	m68*-apollo)
+		os=-domain
+		;;
+	i386-sun)
+		os=-sunos4.0.2
+		;;
+	m68000-sun)
+		os=-sunos3
+		;;
+	m68*-cisco)
+		os=-aout
+		;;
+	mep-*)
+		os=-elf
+		;;
+	mips*-cisco)
+		os=-elf
+		;;
+	mips*-*)
+		os=-elf
+		;;
+	or32-*)
+		os=-coff
+		;;
+	*-tti)	# must be before sparc entry or we get the wrong os.
+		os=-sysv3
+		;;
+	sparc-* | *-sun)
+		os=-sunos4.1.1
+		;;
+	*-be)
+		os=-beos
+		;;
+	*-haiku)
+		os=-haiku
+		;;
+	*-ibm)
+		os=-aix
+		;;
+	*-knuth)
+		os=-mmixware
+		;;
+	*-wec)
+		os=-proelf
+		;;
+	*-winbond)
+		os=-proelf
+		;;
+	*-oki)
+		os=-proelf
+		;;
+	*-hp)
+		os=-hpux
+		;;
+	*-hitachi)
+		os=-hiux
+		;;
+	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+		os=-sysv
+		;;
+	*-cbm)
+		os=-amigaos
+		;;
+	*-dg)
+		os=-dgux
+		;;
+	*-dolphin)
+		os=-sysv3
+		;;
+	m68k-ccur)
+		os=-rtu
+		;;
+	m88k-omron*)
+		os=-luna
+		;;
+	*-next )
+		os=-nextstep
+		;;
+	*-sequent)
+		os=-ptx
+		;;
+	*-crds)
+		os=-unos
+		;;
+	*-ns)
+		os=-genix
+		;;
+	i370-*)
+		os=-mvs
+		;;
+	*-next)
+		os=-nextstep3
+		;;
+	*-gould)
+		os=-sysv
+		;;
+	*-highlevel)
+		os=-bsd
+		;;
+	*-encore)
+		os=-bsd
+		;;
+	*-sgi)
+		os=-irix
+		;;
+	*-siemens)
+		os=-sysv4
+		;;
+	*-masscomp)
+		os=-rtu
+		;;
+	f30[01]-fujitsu | f700-fujitsu)
+		os=-uxpv
+		;;
+	*-rom68k)
+		os=-coff
+		;;
+	*-*bug)
+		os=-coff
+		;;
+	*-apple)
+		os=-macos
+		;;
+	*-atari*)
+		os=-mint
+		;;
+	*)
+		os=-none
+		;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer.  We pick the logical manufacturer.
+vendor=unknown
+case $basic_machine in
+	*-unknown)
+		case $os in
+			-riscix*)
+				vendor=acorn
+				;;
+			-sunos*)
+				vendor=sun
+				;;
+			-cnk*|-aix*)
+				vendor=ibm
+				;;
+			-beos*)
+				vendor=be
+				;;
+			-hpux*)
+				vendor=hp
+				;;
+			-mpeix*)
+				vendor=hp
+				;;
+			-hiux*)
+				vendor=hitachi
+				;;
+			-unos*)
+				vendor=crds
+				;;
+			-dgux*)
+				vendor=dg
+				;;
+			-luna*)
+				vendor=omron
+				;;
+			-genix*)
+				vendor=ns
+				;;
+			-mvs* | -opened*)
+				vendor=ibm
+				;;
+			-os400*)
+				vendor=ibm
+				;;
+			-ptx*)
+				vendor=sequent
+				;;
+			-tpf*)
+				vendor=ibm
+				;;
+			-vxsim* | -vxworks* | -windiss*)
+				vendor=wrs
+				;;
+			-aux*)
+				vendor=apple
+				;;
+			-hms*)
+				vendor=hitachi
+				;;
+			-mpw* | -macos*)
+				vendor=apple
+				;;
+			-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+				vendor=atari
+				;;
+			-vos*)
+				vendor=stratus
+				;;
+		esac
+		basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+		;;
+esac
+
+echo $basic_machine$os
+exit
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/SOURCES/dist.sh b/SOURCES/dist.sh
new file mode 100755
index 0000000..db6c053
--- /dev/null
+++ b/SOURCES/dist.sh
@@ -0,0 +1,66 @@
+#!/bin/bash
+# dist.sh
+# Author: Tom "spot" Callaway <tcallawa@redhat.com>
+# License: GPL
+# This is a script to output the value for the %{dist}
+# tag. The dist tag takes the following format: .$type$num
+# Where $type is one of: el, fc, rh
+# (for RHEL, Fedora Core, and RHL, respectively)
+# And $num is the version number of the distribution.
+# NOTE: We can't detect Rawhide or Fedora Test builds properly.
+# If we successfully detect the version number, we output the
+# dist tag. Otherwise, we exit with no output.
+
+RELEASEFILE=/etc/redhat-release
+
+function check_num {
+    MAINVER=`cut -d "(" -f 1 < $RELEASEFILE | \
+	sed -e "s/[^0-9.]//g" -e "s/$//g" | cut -d "." -f 1`
+
+    echo $MAINVER | grep -q '[0-9]' && echo $MAINVER
+}
+
+function check_rhl {
+    grep -q "Red Hat Linux" $RELEASEFILE && ! grep -q "Advanced" $RELEASEFILE && echo $DISTNUM
+}
+
+function check_rhel {
+    egrep -q "(Enterprise|Advanced)" $RELEASEFILE && echo $DISTNUM
+}
+
+function check_fedora {
+    grep -q Fedora $RELEASEFILE && echo $DISTNUM
+}
+
+DISTNUM=`check_num`
+DISTFC=`check_fedora`
+DISTRHL=`check_rhl`
+DISTRHEL=`check_rhel`
+if [ -n "$DISTNUM" ]; then
+    if [ -n "$DISTFC" ]; then
+	DISTTYPE=fc
+    elif [ -n "$DISTRHEL" ]; then
+	DISTTYPE=el
+    elif [ -n "$DISTRHL" ]; then
+	DISTTYPE=rhl
+    fi
+fi
+[ -n "$DISTTYPE" -a -n "$DISTNUM" ] && DISTTAG=".${DISTTYPE}${DISTNUM}"
+
+case "$1" in
+    --el) echo -n "$DISTRHEL" ;;
+    --fc) echo -n "$DISTFC" ;;
+    --rhl) echo -n "$DISTRHL" ;;
+    --distnum) echo -n "$DISTNUM" ;;
+    --disttype) echo -n "$DISTTYPE" ;;
+    --help)
+	printf "Usage: $0 [OPTIONS]\n"
+	printf " Default mode is --dist. Possible options:\n"
+	printf " --el\t\tfor RHEL version (if RHEL)\n"
+	printf " --fc\t\tfor Fedora version (if Fedora)\n"
+	printf " --rhl\t\tfor RHL version (if RHL)\n"
+	printf " --dist\t\tfor distribution tag\n"
+	printf " --distnum\tfor distribution number (major)\n"
+	printf " --disttype\tfor distribution type\n" ;;
+    *) echo -n "$DISTTAG" ;;
+esac
diff --git a/SOURCES/find-provides b/SOURCES/find-provides
new file mode 100755
index 0000000..9d3bd73
--- /dev/null
+++ b/SOURCES/find-provides
@@ -0,0 +1,50 @@
+#!/bin/bash
+
+# This script reads filenames from STDIN and outputs any relevant provides
+# information that needs to be included in the package.
+
+if [ "$1" ]
+then
+   package_name="$1"
+fi
+
+filelist=`sed "s/['\"]/\\\&/g"`
+
+[ -x /usr/lib/rpm/rpmdeps -a -n "$filelist" ] &&
+    echo $filelist | tr '[:blank:]' \\n | /usr/lib/rpm/rpmdeps --provides
+
+#
+# --- any other extra find-provides scripts
+for i in /usr/lib/rpm/redhat/find-provides.d/*.prov
+do
+    [ -x $i ] &&
+        (echo $filelist | tr '[:blank:]' \\n | $i | sort -u)
+done
+
+#
+# --- Kernel module imported symbols
+#
+# Since we don't (yet) get passed the name of the package being built, we
+# cheat a little here by looking first for a kernel, then for a kmod.
+#
+
+is_kmod=1
+for f in $filelist; do
+    if [ $(echo "$f" | sed -r -ne 's:^.*/lib/modules/(.*)/(.*)\.ko(\.gz|\.bz2|\.xz)?$:\2:p') ]
+    then
+        is_kernel=1;
+    fi
+    if [ $(echo "$f" | sed -r -ne 's:^.*/boot/(.*):\1:p') ]
+    then
+	unset is_kmod;
+    fi
+done
+if [ ! "$is_kernel" ] || [ "$package_name" == "kernel" ]
+then
+    unset is_kmod
+fi
+
+[ -x /usr/lib/rpm/redhat/find-provides.ksyms ] && [ "$is_kmod" ] &&
+    printf "%s\n" "${filelist[@]}" | /usr/lib/rpm/redhat/find-provides.ksyms
+
+exit 0
diff --git a/SOURCES/find-provides.ksyms b/SOURCES/find-provides.ksyms
new file mode 100755
index 0000000..a58978b
--- /dev/null
+++ b/SOURCES/find-provides.ksyms
@@ -0,0 +1,48 @@
+#! /bin/bash
+
+IFS=$'\n'
+
+for module in $(grep -E '/lib/modules/.+\.ko(\.gz|\.bz2|\.xz)?$'); do
+    tmpfile=""
+    if [ "x${module%.ko}" = "x${module}" ]; then
+        tmpfile=$(mktemp -t ${0##*/}.XXXXXX.ko)
+        proc_bin=
+        case "${module##*.}" in
+        xz)
+                proc_bin=xz
+                ;;
+        bz2)
+                proc_bin=bzip2
+                ;;
+        gz)
+                proc_bin=gzip
+                ;;
+        esac
+
+        [ -n "$proc_bin" ] || continue
+
+        "$proc_bin" -d -c - < "$module" > "$tmpfile" || continue
+        module="$tmpfile"
+    fi
+
+    if [[ -n $(nm $module | sed -r -ne 's:^0*([0-9a-f]+) A __crc_(.+):0x\1 \2:p') ]]; then
+        nm $module \
+        | sed -r -ne 's:^0*([0-9a-f]+) A __crc_(.+):0x\1 \2:p' \
+        | awk --non-decimal-data '{printf("ksym(%s) = 0x%08x\n", $2, $1)}' \
+        | LC_ALL=C sort -u
+    else
+        ELFRODATA=$(readelf -R .rodata $module | awk '/0x/{printf $2$3$4$5}')
+        if [[ -n $(readelf -h $module | grep "little endian") ]]; then
+            RODATA=$(echo $ELFRODATA | sed 's/\(..\)\(..\)\(..\)\(..\)/\4\3\2\1/g')
+        else
+            RODATA=$ELFRODATA
+        fi
+        for sym in $(nm $module | sed -r -ne 's:^0*([0-9a-f]+) R __crc_(.+):0x\1 \2:p'); do
+            echo $sym $RODATA
+        done \
+        | awk --non-decimal-data '{printf("ksym(%s) = 0x%08s\n", $2, substr($3,($1*2)+1,8))}' \
+        | LC_ALL=C sort -u
+    fi
+
+    [ -z "$tmpfile" ] || rm -f -- "$tmpfile"
+done
diff --git a/SOURCES/find-requires b/SOURCES/find-requires
new file mode 100755
index 0000000..3c427d8
--- /dev/null
+++ b/SOURCES/find-requires
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+#
+# Auto-generate requirements for executables (both ELF and a.out) and library
+# sonames, script interpreters, and perl modules.
+#
+
+ulimit -c 0
+
+filelist=`sed "s/[]['\"*?{}]/\\\\\&/g"`
+
+[ -x /usr/lib/rpm/rpmdeps -a -n "$filelist" ] && \
+    echo $filelist | tr '[:blank:]' \\n | /usr/lib/rpm/rpmdeps --requires
+
+#
+# --- Kernel module imported symbols
+#
+# Since we don't (yet) get passed the name of the package being built, we
+# cheat a little here by looking first for a kernel, then for a kmod.
+#
+
+unset is_kmod
+
+for f in $filelist; do
+    if [ $(echo "$f" | sed -r -ne 's:^.*/lib/modules/(.*)/(.*)\.ko(\.gz|\.bz2|\.xz)?$:\2:p') ]
+    then
+        is_kmod=1;
+    elif [ $(echo "$f" | sed -r -ne 's:^.*/boot/(.*):\1:p') ]
+    then
+	unset is_kmod;
+	break;
+    fi
+done
+
+[ -x /usr/lib/rpm/redhat/find-requires.ksyms ] && [ "$is_kmod" ] &&
+    printf "%s\n" "${filelist[@]}" | /usr/lib/rpm/redhat/find-requires.ksyms
+
+exit 0
diff --git a/SOURCES/find-requires.ksyms b/SOURCES/find-requires.ksyms
new file mode 100755
index 0000000..0681e11
--- /dev/null
+++ b/SOURCES/find-requires.ksyms
@@ -0,0 +1,155 @@
+#! /bin/bash
+#
+# This script is called during external module building to create dependencies
+# both upon the RHEL kernel, and on additional external modules. Symbols that
+# cannot be reconciled against those provided by the kernel are assumed to be
+# provided by an external module and "ksym" replaces th regular "kernel" dep.
+
+IFS=$'\n'
+
+# Extract all of the symbols provided by this module.
+all_provides() {
+    for module in "$@"; do
+        tmpfile=""
+        if [ "x${module%.ko}" = "x${module}" ]; then
+            tmpfile=$(mktemp -t ${0##*/}.XXXXXX.ko)
+            proc_bin=
+            case "${module##*.}" in
+            xz)
+                    proc_bin=xz
+                    ;;
+            bz2)
+                    proc_bin=bzip2
+                    ;;
+            gz)
+                    proc_bin=gzip
+                    ;;
+            esac
+
+            [ -n "$proc_bin" ] || continue
+
+            "$proc_bin" -d -c - < "$module" > "$tmpfile" || continue
+            module="$tmpfile"
+        fi
+
+        if [[ -n $(nm "$module" | sed -r -ne 's:^0*([0-9a-f]+) A __crc_(.+):0x\1 \2:p') ]]; then
+            nm "$module" \
+            | sed -r -ne 's:^0*([0-9a-f]+) A __crc_(.+):0x\1 \2:p' \
+            | awk --non-decimal-data '{printf("%s:0x%08x\n", $2, $1)}'
+        else
+            ELFRODATA=$(readelf -R .rodata "$module" | awk '/0x/{printf $2$3$4$5}')
+            if [[ -n $(readelf -h "$module" | grep "little endian") ]]; then
+                RODATA=$(echo $ELFRODATA | sed 's/\(..\)\(..\)\(..\)\(..\)/\4\3\2\1/g')
+            else
+                RODATA=$ELFRODATA
+            fi
+            for sym in $(nm "$module" | sed -r -ne 's:^0*([0-9a-f]+) R __crc_(.+):0x\1 \2:p'); do
+                echo $sym $RODATA
+            done \
+            | awk --non-decimal-data '{printf("%s:0x%08s\n", $2, substr($3,($1*2)+1,8))}'
+        fi
+
+        [ -z "$tmpfile" ] || rm -f -- "$tmpfile"
+    done \
+    | LC_ALL=C sort -k1,1 -u
+}
+
+# Extract all of the requirements of this module.
+all_requires() {
+    for module in "$@"; do
+        set -- $(/sbin/modinfo -F vermagic "$module" | sed -e 's: .*::' -e q)
+        /sbin/modprobe --dump-modversions "$module" \
+        | awk --non-decimal-data '
+            BEGIN { FS = "\t" ; OFS = "\t" }
+            {printf("%s:0x%08x\n", $2, $1)}' \
+        | sed -r -e 's:$:\t'"$1"':'
+    done \
+    | LC_ALL=C sort -k1,1 -u
+}
+
+# Filter out requirements fulfilled by the module itself.
+mod_requires() {
+    LC_ALL=C join -t $'\t' -j 1 -v 1 \
+        <(all_requires "$@") \
+        <(all_provides "$@") \
+    | LC_ALL=C sort -k1,1 -u
+}
+
+if ! [ -e /sbin/modinfo -a -e /sbin/modprobe ]; then
+    cat > /dev/null
+    exit 0
+fi
+
+check_kabi() {
+    arch=$(uname -m)
+    kabi_file="/lib/modules/kabi-current/kabi_whitelist_$arch"
+
+    # If not installed, output a warning and return (continue)
+    if [ ! -f "$kabi_file" ]; then
+        echo "" >&2
+        echo "********************************************************************************" >&2
+        echo "*********************** KERNEL ABI COMPATIBILITY WARNING ***********************" >&2
+        echo "********************************************************************************" >&2
+        echo "The kernel ABI reference files (provided by "kabi-whitelists") were not found." >&2
+        echo "No compatibility check was performed. Please install the kABI reference files" >&2
+        echo "and rebuild if you would like to verify compatibility with kernel ABI." >&2
+        echo "" >&2
+        return
+    fi
+
+    unset non_kabi
+    for symbol in "$@"; do
+        if ! egrep "^[[:space:]]$symbol\$" $kabi_file >/dev/null; then
+            non_kabi=("${non_kabi[@]}" "$symbol")
+        fi
+    done
+
+    if [ ${#non_kabi[@]} -gt 0 ]; then
+        echo "" >&2
+        echo "********************************************************************************" >&2
+        echo "*********************** KERNEL ABI COMPATIBILITY WARNING ***********************" >&2
+        echo "********************************************************************************" >&2
+        echo "The following kernel symbols are not guaranteed to remain compatible with" >&2
+        echo "future kernel updates to this RHEL release:" >&2
+        echo "" >&2
+        for symbol in "${non_kabi[@]}"; do
+            printf "\t$symbol\n" >&2
+        done
+        echo "" >&2
+        echo "Red Hat recommends that you consider using only official kernel ABI symbols" >&2
+        echo "where possible. Requests for additions to the kernel ABI can be filed with" >&2
+        echo "your partner or customer representative (component: driver-update-program)." >&2
+        echo "" >&2
+    fi
+}
+
+modules=($(grep -E '/lib/modules/.+\.ko(\.gz|\.bz2|\.xz)?$'))
+if [ ${#modules[@]} -gt 0 ]; then
+    kernel=$(/sbin/modinfo -F vermagic "${modules[0]}" | sed -e 's: .*::' -e q)
+
+    # get all that kernel provides
+    symvers=$(mktemp -t ${0##*/}.XXXXX)
+
+    cat /usr/src/kernels/$kernel/Module.symvers | awk '
+        BEGIN { FS = "\t" ; OFS = "\t" }
+        { print $2 ":" $1 }
+    ' \
+    | sed -r -e 's:$:\t'"$kernel"':' \
+    | LC_ALL=C sort -k1,1 -u > $symvers
+
+    # Symbols matching with the kernel get a "kernel" dependency
+    mod_req=$(mktemp -t mod_req.XXXXX)
+    mod_requires "${modules[@]}" > "$mod_req"
+    LC_ALL=C join -t $'\t' -j 1 $symvers "$mod_req" | LC_ALL=C sort -u \
+    | awk 'BEGIN { FS = "[\t:]" ; OFS = "\t" } { print "kernel(" $1 ") = " $2 }'
+
+    # Symbols from elsewhere get a "ksym" dependency
+    LC_ALL=C join -t $'\t' -j 1 -v 2 $symvers "$mod_req" | LC_ALL=C sort -u \
+    | awk 'BEGIN { FS = "[\t:]" ; OFS = "\t" } { print "ksym(" $1 ") = " $2 }'
+
+    # Check kABI if the kabi-whitelists package is installed
+    # Do this last so we can try to output this error at the end
+    kabi_check_symbols=($(LC_ALL=C join -t $'\t' -j 1 $symvers "$mod_req" | LC_ALL=C sort -u \
+    | awk 'BEGIN { FS = "[\t:]" ; OFS = "\t" } { print $1 }'))
+    check_kabi "${kabi_check_symbols[@]}"
+fi
diff --git a/SOURCES/firmware.prov b/SOURCES/firmware.prov
new file mode 100644
index 0000000..c4aa26f
--- /dev/null
+++ b/SOURCES/firmware.prov
@@ -0,0 +1,14 @@
+#!/bin/sh
+#
+# firmware.prov - Automatically extract any and all firmware dependencies from
+#                 kernel object (.ko) files and add to RPM deps.
+
+IFS=$'\n'
+
+for module in $(grep -E '/lib/modules/.+\.ko(\.gz|\.bz2|\.xz)?$') $*;
+do
+    for firmware in `/sbin/modinfo -F firmware $module`;
+    do
+        echo "firmware($firmware)"
+    done
+done
diff --git a/SOURCES/kabi.attr b/SOURCES/kabi.attr
new file mode 100644
index 0000000..2d81387
--- /dev/null
+++ b/SOURCES/kabi.attr
@@ -0,0 +1,2 @@
+%__kabi_provides	%{_rpmconfigdir}/kabi.sh
+%__kabi_path            ^(/boot/symvers-.*|/lib/modules/[1-9].*/symvers)\.gz$
diff --git a/SOURCES/kabi.sh b/SOURCES/kabi.sh
new file mode 100644
index 0000000..59b2b86
--- /dev/null
+++ b/SOURCES/kabi.sh
@@ -0,0 +1,13 @@
+#!/bin/bash +x
+#
+# kabi.sh - Automatically extract any kernel symbol checksum from the
+#           symvers file and add to RPM deps.  This is used to move the
+#           checksum checking from modprobe to rpm install for 3rd party
+#           modules (so they can fail during install and not at load).
+
+IFS=$'\n'
+
+for symvers in $(grep -E '(/boot/symvers-.*|/lib/modules/[1-9].*/symvers)\.gz') "$@";
+do
+    zcat $symvers | awk ' {print "kernel(" $2 ") = " $1 }'
+done
diff --git a/SOURCES/kmod.attr b/SOURCES/kmod.attr
new file mode 100644
index 0000000..f2a50d0
--- /dev/null
+++ b/SOURCES/kmod.attr
@@ -0,0 +1,2 @@
+%__kmod_provides       %{_rpmconfigdir}/kmod.prov
+%__kmod_path           ^/lib/modules/.*$
diff --git a/SOURCES/kmod.prov b/SOURCES/kmod.prov
new file mode 100644
index 0000000..f02d8a0
--- /dev/null
+++ b/SOURCES/kmod.prov
@@ -0,0 +1,17 @@
+#!/bin/sh +x
+
+IFS=$'\n'
+
+for i in $(grep -E '(/lib/modules/.*\.ko|/lib/modules/.*/modules.builtin)');
+do
+	kmod=$(basename $i | sed -e 's/.[xg]z//');
+
+	if [ $kmod == "modules.builtin" ]; then
+		for j in $(cat $i); do
+			j=$(basename $j);
+			echo "kmod($j)"
+		done
+	else
+		echo "kmod($kmod)"
+	fi
+done
diff --git a/SOURCES/kmodtool b/SOURCES/kmodtool
new file mode 100755
index 0000000..4796530
--- /dev/null
+++ b/SOURCES/kmodtool
@@ -0,0 +1,349 @@
+#!/bin/bash
+
+# kmodtool - Helper script for building kernel module RPMs
+#            An original version appeared in Fedora. This version is
+#            generally called only by the %kernel_module_package RPM macro
+#            during the process of building Driver Update Packages (which
+#            are also known as "kmods" in the Fedora community).
+#
+# Copyright (c) 2003-2010 Ville Skyttä <ville.skytta@iki.fi>,
+#                         Thorsten Leemhuis <fedora@leemhuis.info>
+#                         Jon Masters <jcm@redhat.com>
+#
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be
+# included in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+# Changelog:
+#
+#            2010/07/28 - Add fixes for filelists in line with LF standard
+#			- Remove now defunct "framepointer" kernel variant
+#			- Change version to "rhel6-rh2" as a consequence.
+#
+#            2010/01/10 - Simplified for RHEL6. We are working on upstream
+#                         moving to a newer format and in any case do not
+#                         need to retain support for really old systems.
+
+shopt -s extglob
+
+myprog="kmodtool"
+myver="0.10.10_rhel8"
+knownvariants=@(debug|kdump|zfcpdump)
+kmod_name=
+kver=
+verrel=
+variant=
+
+get_verrel ()
+{
+  verrel=${1:-$(uname -r)}
+  verrel=${verrel/%[.+]$knownvariants/}
+}
+
+print_verrel ()
+{
+  get_verrel "$@"
+  echo "${verrel}"
+}
+
+get_variant ()
+{
+  get_verrel "$@"
+  variant=${1:-$(uname -r)}
+  variant=${variant/#$verrel?(.+)/}
+  variant=${variant:-'""'}
+}
+
+print_variant ()
+{
+  get_variant $@
+  echo "${variant}"
+}
+
+# Detect flavor separator character. We have to do that due to
+# a systemd-tailored patch for kernel spec[1][2] introduced in Fedora and then
+# imported in RHEL 8 that broke all OOT kmod infrastructure for the flavored
+# kernels.
+#
+# [1] https://lists.fedoraproject.org/pipermail/kernel/2013-June/004262.html
+# [2] https://src.fedoraproject.org/rpms/kernel/c/faf25207dc86666a611c45ae3ffaf385c170bd2a
+#
+# $1 - kver
+# $2 - variant
+get_variant_char ()
+{
+  variant="$2"
+  [ "$variant" != "default" ] || variant=""
+
+  get_verrel "$1"
+
+  variant_char=""
+  [ -n "$variant" ] || return 0
+
+  # We expect that the flavored kernel is already installed in the buildroot
+  variant_char="+"
+  [ -e "/usr/src/kernels/${verrel}+${variant}" ] && return 0
+
+  variant_char="."
+}
+
+print_variant_char ()
+{
+  get_variant_char "$@"
+  echo "${variant_char}"
+}
+
+print_kernel_source ()
+{
+  get_variant_char "$@"
+  echo "/usr/src/kernels/${verrel}${variant_char}${variant}"
+}
+
+get_filelist() {
+	local IFS=$'\n'
+	filelist=($(cat))
+
+	if [ ${#filelist[@]} -gt 0 ];
+	then
+		for ((n = 0; n < ${#filelist[@]}; n++));
+		do
+			line="${filelist[n]}"
+			line=$(echo "$line" \
+				| sed -e "s/%verrel/$verrel/g" \
+				| sed -e "s/%variant/$variant/g" \
+				| sed -e "s/%dashvariant/$dashvariant/g" \
+				| sed -e "s/%dotvariant/$dotvariant/g" \
+				| sed -e "s/\+%1/$dotvariant/g" \
+				| sed -e "s/\.%1/$dotvariant/g" \
+				| sed -e "s/\-%1/$dotvariant/g" \
+				| sed -e "s/%2/$verrel/g")
+			echo "$line"
+		done
+	else
+		echo "%defattr(644,root,root,755)"
+		echo "/lib/modules/${verrel}${dotvariant}"
+	fi
+}
+
+
+get_rpmtemplate ()
+{
+    local variant="${1}"
+
+    get_variant_char "${verrel}" "${variant}"
+
+    local dashvariant="${variant:+-${variant}}"
+    local dotvariant="${variant:+${variant_char}${variant}}"
+
+    echo "%package       -n kmod-${kmod_name}${dashvariant}"
+
+    if [ -z "$kmod_provides_summary" ]; then
+        echo "Summary:          ${kmod_name} kernel module(s)"
+    fi
+
+    if [ -z "$kmod_provides_group" ]; then
+        echo "Group:            System Environment/Kernel"
+    fi
+
+    if [ ! -z "$kmod_version" ]; then
+        echo "Version: %{kmod_version}"
+    fi
+
+    if [ ! -z "$kmod_release" ]; then
+        echo "Release: %{kmod_release}"
+    fi
+
+    # Turn of the internal dep generator so we will use the kmod scripts.
+    echo "%global _use_internal_dependency_generator 0"
+
+    cat <<EOF
+Provides:         kernel-modules >= ${verrel}${dotvariant}
+Provides:         kernel${dashvariant}-modules >= ${verrel}
+Provides:         ${kmod_name}-kmod = %{?epoch:%{epoch}:}%{version}-%{release}
+Requires(post):   /usr/sbin/depmod
+Requires(postun): /usr/sbin/depmod
+Requires(post):   /usr/sbin/weak-modules
+Requires(postun): /usr/sbin/weak-modules
+EOF
+
+    if [ "yes" != "$nobuildreqs" ]
+    then
+        cat <<EOF
+BuildRequires:    kernel${dashvariant}-devel
+BuildRequires:    kernel-abi-whitelists
+BuildRequires:    redhat-rpm-config kernel-rpm-macros
+BuildRequires:    elfutils-libelf-devel kmod
+EOF
+    fi
+
+    if [ "" != "$override_preamble" ]
+    then
+        cat "$override_preamble"
+    fi
+
+cat <<EOF
+%description   -n kmod-${kmod_name}${dashvariant}
+This package provides the ${kmod_name} kernel modules built for
+the Linux kernel ${verrel}${dotvariant} for the %{_target_cpu}
+family of processors.
+EOF
+
+##############################################################################
+## The following are not part of this script directly, they are scripts     ##
+## that will be executed by RPM during various stages of package processing ##
+##############################################################################
+
+cat <<EOF
+%post          -n kmod-${kmod_name}${dashvariant}
+if [ -e "/boot/System.map-${verrel}${dotvariant}" ]; then
+    /usr/sbin/depmod -aeF "/boot/System.map-${verrel}${dotvariant}" "${verrel}${dotvariant}" > /dev/null || :
+fi
+
+modules=( \$(find /lib/modules/${verrel}${dotvariant}/extra/${kmod_name} | grep '\.ko$') )
+if [ -x "/usr/sbin/weak-modules" ]; then
+    printf '%s\n' "\${modules[@]}" \
+    | /usr/sbin/weak-modules --add-modules
+fi
+EOF
+
+cat <<EOF
+%preun         -n kmod-${kmod_name}${dashvariant}
+rpm -ql kmod-${kmod_name}${dashvariant}-%{kmod_version}-%{kmod_release}.$(arch) | grep '\.ko$' > /var/run/rpm-kmod-${kmod_name}${dashvariant}-modules
+EOF
+
+cat <<EOF
+%postun        -n kmod-${kmod_name}${dashvariant}
+if [ -e "/boot/System.map-${verrel}${dotvariant}" ]; then
+    /usr/sbin/depmod -aeF "/boot/System.map-${verrel}${dotvariant}" "${verrel}${dotvariant}" > /dev/null || :
+fi
+
+modules=( \$(cat /var/run/rpm-kmod-${kmod_name}${dashvariant}-modules) )
+rm /var/run/rpm-kmod-${kmod_name}${dashvariant}-modules
+if [ -x "/usr/sbin/weak-modules" ]; then
+    printf '%s\n' "\${modules[@]}" \
+    | /usr/sbin/weak-modules --remove-modules
+fi
+EOF
+
+echo "%files         -n kmod-${kmod_name}${dashvariant}"
+
+if [ "" == "$override_filelist" ];
+then
+    echo "%defattr(644,root,root,755)"
+    echo "/lib/modules/${verrel}${dotvariant}"
+else
+    cat "$override_filelist" | get_filelist
+fi
+}
+
+print_rpmtemplate ()
+{
+  kmod_name="${1}"
+  shift
+  kver="${1}"
+  get_verrel "${1}"
+  shift
+  if [ -z "${kmod_name}" ] ; then
+    echo "Please provide the kmodule-name as first parameter." >&2
+    exit 2
+  elif [ -z "${kver}" ] ; then
+    echo "Please provide the kver as second parameter." >&2
+    exit 2
+  elif [ -z "${verrel}" ] ; then
+    echo "Couldn't find out the verrel." >&2
+    exit 2
+  fi
+
+  for variant in "$@" ; do
+      if [ "default" == "$variant" ];
+      then
+            get_rpmtemplate ""
+      else
+            get_rpmtemplate "${variant}"
+      fi
+  done
+}
+
+usage ()
+{
+  cat <<EOF
+You called: ${invocation}
+
+Usage: ${myprog} <command> <option>+
+ Commands:
+  verrel <uname>
+    - Get "base" version-release.
+  variant <uname>
+    - Get variant from uname.
+  variant_char <uname> <variant>
+    - Get kernel variant separator character.
+  kernel_source <uname> <variant>
+    - Get path to kernel source directory.
+  rpmtemplate <mainpgkname> <uname> <variants>
+    - Return a template for use in a source RPM
+  version
+    - Output version number and exit.
+EOF
+}
+
+invocation="$(basename ${0}) $@"
+while [ "${1}" ] ; do
+  case "${1}" in
+    verrel)
+      shift
+      print_verrel "$@"
+      exit $?
+      ;;
+    variant)
+      shift
+      print_variant "$@"
+      exit $?
+      ;;
+    variant_char)
+      shift
+      print_variant_char "$@"
+      exit $?
+      ;;
+    kernel_source)
+      shift
+      print_kernel_source "$@"
+      exit $?
+      ;;
+    rpmtemplate)
+      shift
+      print_rpmtemplate "$@"
+      exit $?
+      ;;
+    version)
+      echo "${myprog} ${myver}"
+      exit 0
+      ;;
+    *)
+      echo "Error: Unknown option '${1}'." >&2
+      usage >&2
+      exit 2
+      ;;
+  esac
+done
+
+# Local variables:
+# mode: sh
+# sh-indentation: 2
+# indent-tabs-mode: nil
+# End:
+# ex: ts=2 sw=2 et
diff --git a/SOURCES/libsymlink.attr b/SOURCES/libsymlink.attr
new file mode 100644
index 0000000..4e4981f
--- /dev/null
+++ b/SOURCES/libsymlink.attr
@@ -0,0 +1,5 @@
+# Make libfoo.so symlinks require the soname-provide of the target library
+%__libsymlink_requires		%{_rpmconfigdir}/elfdeps --provides --soname-only
+%__libsymlink_magic		^symbolic link to .*lib.*\.so\..*$
+%__libsymlink_path	^.*\.so$
+%__libsymlink_flags	magic_and_path
diff --git a/SOURCES/macros b/SOURCES/macros
new file mode 100644
index 0000000..2cbb14e
--- /dev/null
+++ b/SOURCES/macros
@@ -0,0 +1,268 @@
+# Per-platform rpm configuration file.
+
+#==============================================================================
+# ---- per-platform macros.
+#
+%_vendor		redhat
+%_os			linux
+%_target_platform	%{_target_cpu}-%{_vendor}-%{_target_os}%{?_gnu}
+
+#==============================================================================
+# ---- configure macros.  note that most of these are inherited
+#      from the defaults.
+#
+%_localstatedir		/var
+
+%_pkgdocdir             %{_docdir}/%{name}
+%_docdir_fmt            %%{NAME}
+
+%_fmoddir		%{_libdir}/gfortran/modules
+
+%_enable_debug_packages 1
+%_include_minidebuginfo 1
+%_include_gdb_index     1
+%_debugsource_packages  1
+%_debuginfo_subpackages 1
+
+#==============================================================================
+# ---- compiler flags.
+
+# C compiler flags.  This is traditionally called CFLAGS in makefiles.
+# Historically also available as %%{optflags}, and %%build sets the
+# environment variable RPM_OPT_FLAGS to this value.
+%build_cflags %{optflags}
+
+# C++ compiler flags.  This is traditionally called CXXFLAGS in makefiles.
+%build_cxxflags %{optflags}
+
+# Fortran compiler flags.  Makefiles use both FFLAGS and FCFLAGS as
+# the corresponding variable names.
+%build_fflags %{optflags} -I%{_fmoddir}
+
+# Link editor flags.  This is usually called LDFLAGS in makefiles.
+# (Some makefiles use LFLAGS instead.)  The default value assumes that
+# the flags, while intended for ld, are still passed through the gcc
+# compiler driver.  At the beginning of %%build, the environment
+# variable RPM_LD_FLAGS to this value.
+%build_ldflags -Wl,-z,relro %{_ld_symbols_flags} %{_hardened_ldflags}
+
+# Expands to shell code to seot the compiler/linker environment
+# variables CFLAGS, CXXFLAGS, FFLAGS, FCFLAGS, LDFLAGS if they have
+# not been set already.  RPM_OPT_FLAGS and RPM_LD_FLAGS have already
+# been set implicitly at the start of the %%build section.
+%set_build_flags \
+  CFLAGS="${CFLAGS:-%{build_cflags}}" ; export CFLAGS ; \
+  CXXFLAGS="${CXXFLAGS:-%{build_cxxflags}}" ; export CXXFLAGS ; \
+  FFLAGS="${FFLAGS:-%{build_fflags}}" ; export FFLAGS ; \
+  FCFLAGS="${FCFLAGS:-%{build_fflags}}" ; export FCFLAGS ; \
+  LDFLAGS="${LDFLAGS:-%{build_ldflags}}" ; export LDFLAGS
+
+# Internal-only.  Do not use.  Expand a variable and strip the flags
+# not suitable to extension builders.
+%__extension_strip_flags() %{lua:
+local name = rpm.expand("%{1}")
+local value = " " .. rpm.expand("%{build_" .. name .. "}")
+local result = string.gsub(value, "%s+-specs=[^%s]+", " ")
+print(result)
+}
+
+# Variants of CFLAGS, CXXFLAGS, FFLAGS, LDFLAGS for use within
+# extension builders.
+%extension_cflags %{__extension_strip_flags cflags}
+%extension_cxxflags %{__extension_strip_flags cxxflags}
+%extension_fflags %{__extension_strip_flags fflags}
+%extension_ldflags %{__extension_strip_flags ldflags}
+
+# Deprecated names.  For backwards compatibility only.
+%__global_cflags %{build_cflags}
+%__global_cxxflags %{build_cxxflags}
+%__global_fflags %{build_fflags}
+%__global_fcflags %{build_fflags}
+%__global_ldflags %{build_ldflags}
+
+#==============================================================================
+# ---- configure and makeinstall.
+#
+%_configure_gnuconfig_hack	1
+%_configure_libtool_hardening_hack	1
+# If defined, _configure_disable_silent_rules will cause --disable-silent-rules
+# to be added to the list of options passed to the configure script.
+# Eventually we'll want to turn this on by default, but this gives packagers a
+# way to turn it back off.
+# %_configure_disable_silent_rules 1
+%configure \
+  %{set_build_flags}; \
+  [ "%_configure_gnuconfig_hack" = 1 ] && for i in $(find $(dirname %{_configure}) -name config.guess -o -name config.sub) ; do \
+      [ -f /usr/lib/rpm/redhat/$(basename $i) ] && %{__rm} -f $i && %{__cp} -fv /usr/lib/rpm/redhat/$(basename $i) $i ; \
+  done ; \
+  [ "%_configure_libtool_hardening_hack" = 1 ] && [ x != "x%{_hardened_ldflags}" ] && \
+      for i in $(find . -name ltmain.sh) ; do \
+        %{__sed} -i.backup -e 's~compiler_flags=$~compiler_flags="%{_hardened_ldflags}"~' $i \
+      done ; \
+  %{_configure} --build=%{_build} --host=%{_host} \\\
+	--program-prefix=%{?_program_prefix} \\\
+	--disable-dependency-tracking \\\
+	%{?_configure_disable_silent_rules:--disable-silent-rules} \\\
+	--prefix=%{_prefix} \\\
+	--exec-prefix=%{_exec_prefix} \\\
+	--bindir=%{_bindir} \\\
+	--sbindir=%{_sbindir} \\\
+	--sysconfdir=%{_sysconfdir} \\\
+	--datadir=%{_datadir} \\\
+	--includedir=%{_includedir} \\\
+	--libdir=%{_libdir} \\\
+	--libexecdir=%{_libexecdir} \\\
+	--localstatedir=%{_localstatedir} \\\
+	--sharedstatedir=%{_sharedstatedir} \\\
+	--mandir=%{_mandir} \\\
+	--infodir=%{_infodir}
+
+# Maximum number of CPU's to use when building, 0 for unlimited.
+#
+# This was for some time capped at 16.  Please see
+# https://bugzilla.redhat.com/show_bug.cgi?id=669638 and
+# https://bugzilla.redhat.com/show_bug.cgi?id=1384938 for the situation
+# surrounding this.
+#%_smp_ncpus_max 0
+%_smp_mflags %([ -z "$RPM_BUILD_NCPUS" ] \\\
+	&& RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`"; \\\
+        ncpus_max=%{?_smp_ncpus_max}; \\\
+        if [ -n "$ncpus_max" ] && [ "$ncpus_max" -gt 0 ] && [ "$RPM_BUILD_NCPUS" -gt "$ncpus_max" ]; then RPM_BUILD_NCPUS="$ncpus_max"; fi; \\\
+        if [ "$RPM_BUILD_NCPUS" -gt 1 ]; then echo "-j$RPM_BUILD_NCPUS"; fi)
+
+#==============================================================================
+# ---- Build policy macros.
+#
+#
+#---------------------------------------------------------------------
+#	Expanded at beginning of %install scriptlet.
+#
+
+%__spec_install_pre %{___build_pre}\
+    [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf "${RPM_BUILD_ROOT}"\
+    mkdir -p `dirname "$RPM_BUILD_ROOT"`\
+    mkdir "$RPM_BUILD_ROOT"\
+%{nil}
+
+#---------------------------------------------------------------------
+#	Expanded at end of %install scriptlet.
+#
+
+%__arch_install_post   /usr/lib/rpm/check-buildroot
+
+# Build root policy macros. Standard naming:
+# convert all '-' in basename to '_', add two leading underscores.
+%__brp_ldconfig /usr/lib/rpm/redhat/brp-ldconfig
+%__brp_compress /usr/lib/rpm/brp-compress
+%__brp_strip /usr/lib/rpm/brp-strip %{__strip}
+%__brp_strip_comment_note /usr/lib/rpm/brp-strip-comment-note %{__strip} %{__objdump}
+%__brp_strip_static_archive /usr/lib/rpm/brp-strip-static-archive %{__strip}
+%__brp_python_bytecompile /usr/lib/rpm/brp-python-bytecompile "" %{?_python_bytecompile_errors_terminate_build}
+%__brp_python_hardlink /usr/lib/rpm/brp-python-hardlink
+# __brp_mangle_shebangs_exclude - shebangs to exclude
+# __brp_mangle_shebangs_exclude_file - file from which to get shebangs to exclude
+# __brp_mangle_shebangs_exclude_from - files to ignore
+# __brp_mangle_shebangs_exclude_from_file - file from which to get files to ignore
+%__brp_mangle_shebangs PYTHON3="%{__python3}" /usr/lib/rpm/redhat/brp-mangle-shebangs %{?__brp_mangle_shebangs_exclude:--shebangs "%{?__brp_mangle_shebangs_exclude}"} %{?__brp_mangle_shebangs_exclude_file:--shebangs-from "%{__brp_mangle_shebangs_exclude_file}"} %{?__brp_mangle_shebangs_exclude_from:--files "%{?__brp_mangle_shebangs_exclude_from}"} %{?__brp_mangle_shebangs_exclude_from_file:--files-from "%{__brp_mangle_shebangs_exclude_from_file}"}
+
+%__os_install_post    \
+    %{?__brp_ldconfig} \
+    %{?__brp_compress} \
+    %{!?__debug_package:\
+    %{?__brp_strip} \
+    %{?__brp_strip_comment_note} \
+    } \
+    %{?__brp_strip_static_archive} \
+    %{?py_auto_byte_compile:%{?__brp_python_bytecompile}} \
+    %{?__brp_python_hardlink} \
+    %{?__brp_mangle_shebangs} \
+%{nil}
+
+%__spec_install_post\
+    %{?__debug_package:%{__debug_install_post}}\
+    %{__arch_install_post}\
+    %{__os_install_post}\
+%{nil}
+
+%install %{?_enable_debug_packages:%{?buildsubdir:%{debug_package}}}\
+%%install\
+%{nil}
+
+#
+# Should missing buildids terminate a build?
+%_missing_build_ids_terminate_build    1
+
+#
+## Automatically compile python files
+%py_auto_byte_compile 1
+
+#
+## Should python bytecompilation errors terminate a build?
+%_python_bytecompile_errors_terminate_build 1
+
+# Use SHA-256 for FILEDIGESTS instead of default MD5
+%_source_filedigest_algorithm 8
+%_binary_filedigest_algorithm 8
+
+# Use XZ compression for binary payloads
+%_binary_payload w2.xzdio
+
+%_hardening_cflags	-specs=/usr/lib/rpm/redhat/redhat-hardened-cc1
+# we don't escape symbols '~', '"', etc. so be careful when changing this
+%_hardening_ldflags	-Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld
+
+# Harden packages by default for Fedora 23:
+# https://fedorahosted.org/fesco/ticket/1384 (accepted on 2014-02-11)
+# Use "%undefine _hardened_build" to disable.
+%_hardened_build	1
+%_hardened_cflags	%{?_hardened_build:%{_hardening_cflags}}
+%_hardened_ldflags	%{?_hardened_build:%{_hardening_ldflags}}
+
+%_annobin_cflags	-specs=/usr/lib/rpm/redhat/redhat-annobin-cc1
+
+# Add extra information to binary objects created by gcc for Fedora 28:
+# https://pagure.io/fesco/issue/1780 (accepted on 2017-10-30)
+# Use "%undefine _annotated_build" to disable.
+%_annotated_build	1
+%_annotated_cflags	%{?_annotated_build:%{_annobin_cflags}}
+
+# Fail linking if there are undefined symbols.  Required for proper
+# ELF symbol versioning support.  Disabled by default.
+# Use "%define _strict_symbol_defs_build 1" to enable.
+#%_strict_symbol_defs_build	1
+%_ld_symbols_flags		%{?_strict_symbol_defs_build:-Wl,-z,defs}
+
+%__global_compiler_flags	-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches %{_hardened_cflags} %{_annotated_cflags}
+
+#==============================================================================
+# ---- Generic auto req/prov filtering macros
+#
+# http://fedoraproject.org/wiki/PackagingDrafts/AutoProvidesAndRequiresFiltering
+
+# prevent anything matching from being scanned for provides
+%filter_provides_in(P) %{expand: \
+%global __filter_prov_cmd %{?__filter_prov_cmd} %{__grep} -v %{-P} '%*' | \
+}
+
+# prevent anything matching from being scanned for requires
+%filter_requires_in(P) %{expand: \
+%global __filter_req_cmd %{?__filter_req_cmd} %{__grep} -v %{-P} '%*' | \
+}
+
+# filter anything matching out of the provides stream
+%filter_from_provides() %{expand: \
+%global __filter_from_prov %{?__filter_from_prov} | %{__sed} -e '%*' \
+}
+
+# filter anything matching out of the requires stream
+%filter_from_requires() %{expand: \
+%global __filter_from_req %{?__filter_from_req} | %{__sed} -e '%*' \
+}
+
+# actually set up the filtering bits
+%filter_setup %{expand: \
+%global _use_internal_dependency_generator 0 \
+%global __deploop() while read FILE; do echo "${FILE}" | /usr/lib/rpm/rpmdeps -%{1}; done | /bin/sort -u \
+%global __find_provides /bin/sh -c "%{?__filter_prov_cmd} %{__deploop P} %{?__filter_from_prov}" \
+%global __find_requires /bin/sh -c "%{?__filter_req_cmd}  %{__deploop R} %{?__filter_from_req}" \
+}
diff --git a/SOURCES/macros.dwz b/SOURCES/macros.dwz
new file mode 100644
index 0000000..f1e4813
--- /dev/null
+++ b/SOURCES/macros.dwz
@@ -0,0 +1,39 @@
+# Macros for reducing debug info size using dwz(1) utility.
+
+# The two default values below should result in dwz taking at most
+# 3GB of RAM or so on 64-bit hosts and 2.5GB on 32-bit hosts
+# on the largest *.debug files  (in mid 2012 those are
+# libreoffice-debuginfo, debuginfos containing
+# libxul.so.debug and libwebkitgtk-*.so.*.debug).
+# This needs to be tuned based on the amount of available RAM
+# on build boxes for each architecture as well as virtual address
+# space limitations if dwz is 32-bit program.  While it needs less
+# memory than 64-bit program because pointers are smaller, it can
+# never have more than 4GB-epsilon of RAM and on some architecture
+# even less than that (e.g. 2GB).
+
+# Number of debugging information entries (DIEs) above which
+# dwz will stop considering file for multifile optimizations
+# and enter a low memory mode, in which it will optimize
+# in about half the memory needed otherwise.
+%_dwz_low_mem_die_limit		 10000000
+# Number of DIEs above which dwz will stop processing
+# a file altogether.
+%_dwz_max_die_limit     	 50000000
+
+# On x86_64 increase the higher limit to make libwebkit* optimizable.
+# libwebkit* in mid 2012 contains roughly 87mil DIEs, and 64-bit
+# dwz is able to optimize it from ~1.1GB to ~410MB using 5.2GB of RAM.
+%_dwz_max_die_limit_x86_64	110000000
+
+# On ARM, build boxes often have only 512MB of RAM and are very slow.
+# Lower both the limits.
+%_dwz_low_mem_die_limit_armv5tel  4000000
+%_dwz_low_mem_die_limit_armv7hl	  4000000
+%_dwz_max_die_limit_armv5tel	 10000000
+%_dwz_max_die_limit_armv7hl	 10000000
+
+%_dwz_limit() %{expand:%%{?%{1}_%{_arch}}%%{!?%{1}_%{_arch}:%%%{1}}}
+%_find_debuginfo_dwz_opts --run-dwz\\\
+   --dwz-low-mem-die-limit %{_dwz_limit _dwz_low_mem_die_limit}\\\
+   --dwz-max-die-limit %{_dwz_limit _dwz_max_die_limit}
diff --git a/SOURCES/macros.fedora-misc-srpm b/SOURCES/macros.fedora-misc-srpm
new file mode 100644
index 0000000..1dc5779
--- /dev/null
+++ b/SOURCES/macros.fedora-misc-srpm
@@ -0,0 +1,8 @@
+# Some miscellaneous Fedora-related macros
+
+# A directory for rpm macros
+%rpmmacrodir /usr/lib/rpm/macros.d
+
+# A directory for appdata metainfo.  This has changed between releases so a
+# macro is useful.
+%_metainfodir %{_datadir}/metainfo
diff --git a/SOURCES/macros.forge b/SOURCES/macros.forge
new file mode 100644
index 0000000..1bec610
--- /dev/null
+++ b/SOURCES/macros.forge
@@ -0,0 +1,282 @@
+# Map forge information to rpm metadata. This macro will compute default spec
+# variable values.
+#
+# The following spec variables SHOULD be set before calling the macro:
+#
+#   forgeurl  the project url on the forge, strongly recommended;
+#             alternatively, use -u <url>
+#   Version   if applicable, set it with Version: <version>
+#   tag       if applicable
+#   commit    if applicable
+#
+# The macro will attempt to compute and set the following variables if they are
+# not already set by the packager:
+#
+#   forgesource    an URL that can be used as SourceX: value
+#   forgesetupargs the correct arguments to pass to %setup for this source
+#                  used by %forgesetup and %forgeautosetup
+#   archivename    the source archive filename, without extentions
+#   archiveext     the source archive filename extensions, without leading dot
+#   archiveurl     the url that can be used to download the source archive,
+#                  without renaming
+#   scm            the scm type, when packaging code snapshots: commits or tags
+#
+# If the macro is unable to parse your forgeurl value set at least archivename
+# and archiveurl before calling it.
+#
+# Most of the computed variables are both overridable and optional. However,
+# the macro WILL REDEFINE %{dist} when packaging a snapshot (commit or tag).
+# The previous %{dist} value will be lost. Don’t call the macro if you don’t
+# wish %{dist} to be changed.
+#
+# Optional parameters:
+#   -u <url>  Ignore forgeurl even if it exists and use <url> instead. Note
+#             that the macro will still end up setting <url> as the forgeurl
+#             spec variable if it manages to parse it.
+#   -s  Silently ignore problems in forgeurl, use it if it can be parsed,
+#       ignore it otherwise.
+#   -p  Restore problem handling, override -s.
+#   -v  Be verbose and print every spec variable the macro sets.
+#   -i  Print some info about the state of spec variables the macro may use or
+#       set at the end of the processing.
+%forgemeta(u:spvi) %{lua:
+local forgeurl    = rpm.expand("%{?-u*}")
+if (forgeurl == "") then
+  forgeurl        = rpm.expand("%{?forgeurl}")
+end
+local silent      = false
+local verbose     = false
+local informative = false
+if (rpm.expand("%{?-s}") ~= "") then
+  silent          = true
+end
+if (rpm.expand("%{?-p}") ~= "") then
+  silent          = false
+end
+if (rpm.expand("%{?-v}") ~= "") then
+  verbose         = true
+end
+if (rpm.expand("%{?-i}") ~= "") then
+  informative     = true
+end
+local tag         = rpm.expand("%{?tag}")
+local commit      = rpm.expand("%{?commit}")
+-- Be explicit about the spec variables we’re setting
+local function explicitset(rpmvariable,value)
+  rpm.define(rpmvariable .. " " .. value)
+  if verbose then
+    rpm.expand("%{echo:Setting %%{" .. rpmvariable .. "} = " .. value .. "\\n}")
+  end
+end
+-- Never ever stomp on a spec variable the packager already set
+local function safeset(rpmvariable,value)
+  if (rpm.expand("%{?" .. rpmvariable .. "}") == "") then
+    explicitset(rpmvariable,value)
+  end
+end
+-- Set spec variable values for each known software publishing service
+if (forgeurl ~= "") then
+  local forge          = string.match(forgeurl, "^[^:]+://([^/]+)/")
+  if (forge == nil) then
+    if not silent then
+      rpm.expand("%{error:URLs must include a protocol such as https:// and a path starting with / !\\n}")
+    end
+  else
+    if (string.match(forge, "^gitlab[%.-]") or string.match(forge, "[%.-]gitlab[%.]")) then
+      forgeurl = string.match(forgeurl, "https://[^/]+/[^/]+/[^/#?]+")
+      if (forgeurl == nil) then
+        if not silent then
+          rpm.expand("%{error:Gitlab URLs must match https://(…[-.])gitlab[-.]…/owner/repo !\\n}")
+        end
+      else
+        explicitset("forgeurl",   forgeurl)
+        if (commit == "") then
+          rpm.expand("%{error:All Gitlab URLs require commit value knowledge: you need to define %{commit}!\\nPlease vote on https://gitlab.com/gitlab-org/gitlab-ce/issues/38830\\n}")
+        end
+        safeset("archiveext",     "tar.bz2")
+        safeset("forgesetupargs", "-n %{archivename}")
+        if (commit ~= "") or (tag ~= "") then
+          safeset("scm", "git")
+        end
+        local owner   = string.match(forgeurl, "^[^:]+://[^/]+/([^/]+)")
+        local repo    = string.match(forgeurl, "^[^:]+://[^/]+/[^/]+/([^/]+)")
+        local version = rpm.expand("%{?version}")
+        if (version ~= "") and (version ~= "0") and (tag == "") then
+          -- GitLab does not have strong versionning semantics
+          -- Some projects use "version" as release tag, others "v" + "version"
+          -- Tag value needs to be explicitly declared before calling the macro
+          -- in the second case
+          tag = version
+          safeset("tag", tag)
+        end
+        if (tag ~= "") then
+          safeset("archivename", repo .. "-%{tag}-%{commit}")
+          safeset("archiveurl",  "%{forgeurl}/repository/%{tag}/archive.%{archiveext}")
+        else
+          safeset("archivename", repo .. "-%{commit}")
+          safeset("archiveurl",  "%{forgeurl}/repository/%{commit}/archive.%{archiveext}")
+        end
+      end
+    end
+    if (string.match(forge, "^github[%.-]") or string.match(forge, "[%.-]github[%.]")) then
+      forgeurl = string.match(forgeurl, "https://[^/]+/[^/]+/[^/#?]+")
+      if (forgeurl == nil) then
+        if not silent then
+          rpm.expand("%{error:GitHub URLs must match https://(…[-.])github[-.]…/owner/repo !\\n}")
+        end
+      else
+        explicitset("forgeurl",   forgeurl)
+        safeset("archiveext",     "tar.gz")
+        local forgesetupargs = "-n %{archivename}"
+        if (commit ~= "") or (tag ~= "") then
+          safeset("scm", "git")
+        end
+        local owner = string.match(forgeurl, "^[^:]+://[^/]+/([^/]+)")
+        local repo  = string.match(forgeurl, "^[^:]+://[^/]+/[^/]+/([^/]+)")
+        if (tag ~= "") then
+          -- if upstream used a version suffix such as -rc1 or -beta it will not
+          -- be a valid version string for rpm but github will accept it fine and
+          -- use the same naming as for other versions: v prefix in the tag and
+          -- archivename, no v prefix in the topdir naming inside the archive
+          local version = rpm.expand("%{?version}")
+          if version ~= "" and
+             (string.match(tag, "^v" .. version .. "[^%d]") or
+              string.match(tag, "^v" .. version .. "$"))    then
+            forgesetupargs = "-n " .. repo .. "-" .. string.gsub(tag, "^v", "")
+          end
+          safeset("archivename",   repo .. "-%{tag}")
+          safeset("archiveurl",    "%{forgeurl}/archive/%{tag}.%{archiveext}")
+        else
+          if (commit ~= "") then
+            safeset("archivename", repo .. "-%{commit}")
+            safeset("archiveurl",  "%{forgeurl}/archive/%{commit}/" .. repo .. "-%{commit}.%{archiveext}")
+          else
+            safeset("archivename", repo .. "-%{version}")
+            safeset("archiveurl",   "%{forgeurl}/archive/v%{version}.%{archiveext}")
+          end
+        end
+        safeset("forgesetupargs", forgesetupargs)
+      end
+    end
+    if (forge == "code.googlesource.com") then
+      forgeurl = string.match(forgeurl, "https://code.googlesource.com/[^#?]*[^/#?]+")
+      if (forgeurl == nil) then
+        if not silent then
+          rpm.expand("%{error:Googlesource URLs must match https://code.googlesource.com/…/repo !\\n}")
+        end
+      else
+        explicitset("forgeurl",   forgeurl)
+        safeset("archiveext",     "tar.gz")
+        safeset("forgesetupargs", "-c")
+        if (commit ~= "") or (tag ~= "") then
+          safeset("scm", "git")
+        end
+        local repo = string.match(forgeurl, "^[^:]+://.+/([^/?#]+)")
+        if (tag ~= "") then
+          safeset("archivename",   repo .. "-%{tag}")
+          safeset("archiveurl",    "%{forgeurl}/+archive/%{tag}.%{archiveext}")
+        else
+          if (commit ~= "") then
+            safeset("archivename", repo .. "-%{commit}")
+            safeset("archiveurl",  "%{forgeurl}/+archive/%{commit}.%{archiveext}")
+          else
+            safeset("archivename", repo .. "-v%{version}")
+            safeset("archiveurl",  "%{forgeurl}/+archive/v%{version}.%{archiveext}")
+          end
+        end
+      end
+    end
+    if (forge == "bitbucket.org") then
+      forgeurl = string.match(forgeurl, "https://[^/]+/[^/]+/[^/#?]+")
+      if (forgeurl == nil) then
+        if not silent then
+          rpm.expand("%{error:BitBucket URLs must match https://bitbucket.org/owner/repo !\\n}")
+        end
+      else
+        explicitset("forgeurl",   forgeurl)
+        if (commit == "") then
+          rpm.expand("%{error:All BitBucket URLs require commit value knowledge: you need to define %{commit}!\\n}")
+        end
+        local shortcommit = string.sub(commit, 1, 12)
+        safeset("archiveext", "tar.bz2")
+        -- Default to git even though BitBucket allows choosing between several SCMs
+        -- Set scm to hg for example before calling the macro if your project does not use git
+        safeset("scm", "git")
+        local owner = string.match(forgeurl, "^[^:]+://[^/]+/([^/]+)")
+        local repo  = string.match(forgeurl, "^[^:]+://[^/]+/[^/]+/([^/]+)")
+        safeset("archivename",    owner .. "-" .. repo .. "-" .. shortcommit)
+        safeset("forgesetupargs", "-n %{archivename}")
+        if (tag ~= "") then
+          safeset("archiveurl",  "%{forgeurl}/get/%{tag}.%{archiveext}")
+        else
+          safeset("archiveurl",  "%{forgeurl}/get/%{commit}.%{archiveext}")
+        end
+      end
+    end
+    if (forge == "pagure.io") then
+      if not silent then
+        rpm.expand("%{error:https://pagure.io/pagure/issue/861 needs to be resolved before the “pagure.io”\\nsoftware publishing service can be supported.\\n}")
+      end
+    end
+    -- Final tests to check forgeurl was successfuly parsed
+    if not silent then
+      if (rpm.expand("%{?archivename}") == "") or (rpm.expand("%{?archiveurl}") == "") then
+        rpm.expand("%{error:Automation for the “" .. forge .. "”\\nsoftware publishing service is not implemented yet.\\nPlease extend the %%forgemeta macro!\\n}")
+      end
+    end
+  end
+end
+-- Set defaults if forgeurl is missing or does not parse
+local archivename = rpm.expand("%{?archivename}")
+safeset("archiveext",       "tar.gz")
+if (archivename ~= "") then
+  safeset("forgesetupargs", "-n %{archivename}")
+end
+if (commit ~= "") or (tag ~= "") then
+  safeset("scm",            "git")
+end
+-- Source URL processing (computing the forgesource spec variable)
+local archiveurl  = rpm.expand("%{?archiveurl}")
+local archiveext  = rpm.expand("%{?archiveext}")
+if (archivename ~= "") and (archiveurl ~= "") then
+  if (string.match(archiveurl, "/([^/]+)$") == archivename .. "." .. archiveext) then
+    safeset("forgesource", "%{archiveurl}")
+  else
+    safeset("forgesource", "%{?archiveurl}#/%{?archivename}.%{archiveext}")
+  end
+end
+-- dist processing (computing the correct pefix for snapshots)
+local distprefix = rpm.expand("%{?tag}")
+local version    = rpm.expand("%{?version}")
+if (distprefix == version) or (distprefix == "v" .. version) then
+  distprefix = ""
+end
+if (distprefix == "") then
+  distprefix = string.sub(rpm.expand("%{?commit}"), 1, 7)
+end
+if (distprefix ~= "") then
+  local dist = ".%([ -r %{_sourcedir}/%{archivename}.%{archiveext} ] && date +%Y%m%d -u -r %{_sourcedir}/%{archivename}.%{archiveext})%{scm}" .. string.gsub(distprefix, "-",".") .. rpm.expand("%{?dist}")
+  explicitset("dist", dist)
+end
+-- Final spec variable summary if the macro was called with -i
+if informative then
+  rpm.expand("%{echo:Forge-specific packaging variables\\n}")
+  rpm.expand("%{echo:  forgeurl:        %{?forgeurl}\\n}")
+  rpm.expand("%{echo:  forgesource:     %{?forgesource}\\n}")
+  rpm.expand("%{echo:  forgesetupargs:  %{?forgesetupargs}\\n}")
+  rpm.expand("%{echo:Generic variables\\n}")
+  rpm.expand("%{echo:  archivename:     %{?archivename}\\n}")
+  rpm.expand("%{echo:  archiveext:      %{?archiveext}\\n}")
+  rpm.expand("%{echo:  archiveurl:      %{?archiveurl}\\n}")
+  rpm.expand("%{echo:  scm:             %{?scm}\\n}")
+  rpm.expand("%{echo:  tag:             %{?tag}\\n}")
+  rpm.expand("%{echo:  commit:          %{?commit}\\n}")
+  rpm.expand("%{echo:  dist:            %{?dist} (snapshot date is computed once %%{_sourcedir}/%%{archivename}.%%{archiveext} is available)\\n}")
+end
+}
+
+# Convenience macro to relay computed arguments to %setup
+%forgesetup(a:b:cDn:Tq) %setup %{?forgesetupargs} %{-a} %{-b} %{-c} %{-D} %{-n} %{-T} %{-q}
+
+# Convenience macro to relay computed arguments to %autosetup
+%forgeautosetup(a:b:cDn:TvNS:p:) %autosetup %{?forgesetupargs} %{-a} %{-b} %{-c} %{-D} %{-n} %{-T} %{-v} %{-N} %{-S} %{-p}
diff --git a/SOURCES/macros.kmp b/SOURCES/macros.kmp
new file mode 100644
index 0000000..a765547
--- /dev/null
+++ b/SOURCES/macros.kmp
@@ -0,0 +1,97 @@
+# Use these macros to differentiate between RH and other KMP implementation(s).
+%global redhat_kernel_module_package	1
+%global kernel_module_package_release	1
+
+%global redhat_kmp_has_post_hooks	1
+
+%__brp_kmod_set_exec_bit  /usr/lib/rpm/redhat/brp-kmod-set-exec-bit
+%__brp_kmod_restore_perms /usr/lib/rpm/redhat/brp-kmod-restore-perms
+
+%__kmod_brps_added 0
+
+%__find_provides        /usr/lib/rpm/redhat/find-provides
+%__find_requires        /usr/lib/rpm/redhat/find-requires
+
+#kernel_module_package [ -n name ] [ -v version ] [ -r release ] [ -s script ]
+#                      [ -f filelist] [ -x ] [ -p preamble ] flavor flavor ...
+
+%kernel_module_package_buildreqs	%global kmodtool_generate_buildreqs 1 \
+					kernel-devel kernel-abi-whitelists redhat-rpm-config kernel-rpm-macros elfutils-libelf-devel kmod
+
+%kernel_module_package(n:v:r:s:f:xp:) %{expand:%( \
+	## An ugly hack: we want kmods to be processed by find-debuginfo,
+	## but it processes only files with executable permission set.
+	## It is important now since, as of now, if debuginfo package
+	## is enabled (and it is enabled), there's an RPM build error
+	## as a result of lack of ether absence or emptiness of
+	## debugsourcefiles.list (which is likely a bug in RPM, but it looks
+	## like that there's no obvious fix and apparently no one have
+	## any issues with this).
+	## In order to minimise intrusiveness, usually (in Red Hat-built kmod
+	## RPMs) *.ko files just have executable permission being set as a part
+	## of %build section. There are two caveats with kmp, however:
+	##  * We have no control over %build section itself (and it wasn't
+	##    required previously)
+	##  * Changing the criteria used in find-debuginfo.sh/brp-strip
+	##    for selecting files that have to undergo debug section separation
+	##    may introduce regression.
+	## As a result, we insert additional hooks in __spec_install_post
+	## (__brp_kmod_set_exec_bit in the beginning and
+	## __brp_kmod_restore_perms in the end) that (temporarily) set
+	## executable permission for *.ko files so find-debuginfo.sh will pick
+	## them up.
+	## Unfortunately, __spec_install_post's body is copied here since
+	## we want that __debug_package macro expansion has been performed
+	## lazily and  it looks like RPM has no ability to provide a body
+	## of a macro verbatim.
+	if [ 0 = "%{__kmod_brps_added}" ]; then \
+		echo "%%global __spec_install_post \\\\" \
+		echo "	%%{?__brp_kmod_set_exec_bit} \\\\" \
+		echo "	%%%%{?__debug_package:%%%%{__debug_install_post}} \\\\" \
+		echo "	%%{__arch_install_post} \\\\" \
+		echo "	%%{__os_install_post} \\\\" \
+		echo "	%%{?__brp_kmod_pre_sign_process} \\\\" \
+		echo "	%%{?__brp_kmod_sign} \\\\" \
+		echo "	%%{?__brp_kmod_post_sign_process} \\\\" \
+		echo "	%%{?__brp_kmod_compress} \\\\" \
+		echo "	%%{?__brp_kmod_post_compress_process} \\\\" \
+		echo "	%%{?__brp_kmod_restore_perms} \\\\" \
+		echo "%%{nil}" \
+	fi \
+	%global __kmod_brps_added 1 \
+	%global kmodtool %{-s*}%{!-s:/usr/lib/rpm/redhat/kmodtool} \
+	%global kmod_version %{-v*}%{!-v:%{version}} \
+	%global kmod_release %{-r*}%{!-r:%{release}} \
+	%global latest_kernel %({ rpm -q --qf '%%{VERSION}-%%{RELEASE}.%%{ARCH}\\\\n' `rpm -qa | egrep "^kernel(-rt|-aarch64)?-devel" | /usr/lib/rpm/redhat/rpmsort -r | head -n 1`; echo '%%%%{nil}'; } | head -n 1) \
+	%{!?kernel_version:%{expand:%%global kernel_version %{latest_kernel}}} \
+	%global kverrel %(%{kmodtool} verrel %{?kernel_version} 2>/dev/null) \
+	flavors="default" \
+	if [ -z "%*" ]; then \
+		flavors_to_build=$flavors \
+	elif [ -z "%{-x}" ]; then \
+		flavors_to_build="%*" \
+	else \
+		flavors_to_build=" $flavors "\
+		for i in %* \
+		do \
+			flavors_to_build=${flavors_to_build//$i /}
+		done \
+	fi \
+	echo "%%global flavors_to_build ${flavors_to_build:-%%nil}" \
+	echo "%%global kernel_source() \\\$([ default = \"%%%%{1}\" ] && echo \"/usr/src/kernels//%%%%kverrel\" || %{kmodtool} kernel_source \"%%%%{kverrel}\" \"%%%%{1}\" 2>/dev/null || { ls -Ud \"/usr/src/kernels///%%%%{kverrel}\"[.+]\"%%%%{1}\" | sort -V | tail -n 1; } || echo \"/usr/src/kernels////%%%%kverrel.%%%%1\")" \
+	echo "%%global kernel_module_package_moddir() extra" \
+	if [ ! -z "%{-f*}" ] \
+	then \
+		filelist="%{-f*}" \
+	fi \
+	if [ ! -z "%{-p*}" ] \
+	then \
+		preamble="%{-p*}" \
+	fi \
+	nobuildreqs="yes" \
+	if [ "x%{kmodtool_generate_buildreqs}" != "x1" ] \
+	then \
+		nobuildreqs="no" \
+	fi \
+	override_filelist="$filelist" override_preamble="$preamble" nobuildreqs="$nobuildreqs" kmod_version=%kmod_version kmod_release=%kmod_release %{kmodtool} rpmtemplate %{-n*}%{!-n:%name} %{kverrel} $flavors_to_build 2>/dev/null \
+)}
diff --git a/SOURCES/macros.ldc-srpm b/SOURCES/macros.ldc-srpm
new file mode 100644
index 0000000..5718d0c
--- /dev/null
+++ b/SOURCES/macros.ldc-srpm
@@ -0,0 +1,2 @@
+# arches that ldc builds on
+%ldc_arches %{ix86} x86_64 %{arm} %{power64}
diff --git a/SOURCES/macros.ldconfig b/SOURCES/macros.ldconfig
new file mode 100644
index 0000000..2e491db
--- /dev/null
+++ b/SOURCES/macros.ldconfig
@@ -0,0 +1,9 @@
+#%ldconfig /sbin/ldconfig
+%ldconfig_post(n:) %{?ldconfig:%post -p %ldconfig %{?*} %{-n:-n %{-n*}}\
+%end}
+%ldconfig_postun(n:) %{?ldconfig:%postun -p %ldconfig %{?*} %{-n:-n %{-n*}}\
+%end}
+%ldconfig_scriptlets(n:) %{?ldconfig:\
+%ldconfig_post %{?*} %{-n:-n %{-n*}}\
+%ldconfig_postun %{?*} %{-n:-n %{-n*}}\
+}
diff --git a/SOURCES/macros.mono-srpm b/SOURCES/macros.mono-srpm
new file mode 100644
index 0000000..c5862c8
--- /dev/null
+++ b/SOURCES/macros.mono-srpm
@@ -0,0 +1,5 @@
+# arches that mono builds on
+%mono_arches %{ix86} x86_64 sparc sparcv9 ia64 %{arm} aarch64 alpha s390x ppc ppc64 ppc64le
+
+%_monodir %{_prefix}/lib/mono
+%_monogacdir %{_monodir}/gac
diff --git a/SOURCES/macros.nodejs-srpm b/SOURCES/macros.nodejs-srpm
new file mode 100644
index 0000000..faf03a7
--- /dev/null
+++ b/SOURCES/macros.nodejs-srpm
@@ -0,0 +1,7 @@
+# nodejs_arches lists what arches Node.js and dependent packages run on.
+#
+# Enabling Node.js on other arches requires porting the V8 JavaScript JIT to
+# those arches. Support for POWER and aarch64 arrived in nodejs v4. Support
+# for s390x arrived in nodejs v6
+
+%nodejs_arches %{ix86} x86_64 %{arm} aarch64 %{power64} s390x
diff --git a/SOURCES/macros.valgrind-srpm b/SOURCES/macros.valgrind-srpm
new file mode 100644
index 0000000..50b9828
--- /dev/null
+++ b/SOURCES/macros.valgrind-srpm
@@ -0,0 +1,3 @@
+# valgrind_arches lists what arches Valgrind works on
+
+%valgrind_arches %{ix86} x86_64 ppc ppc64 ppc64le armv7hl aarch64 s390x
diff --git a/SOURCES/macros.vpath b/SOURCES/macros.vpath
new file mode 100644
index 0000000..a37f1f9
--- /dev/null
+++ b/SOURCES/macros.vpath
@@ -0,0 +1,7 @@
+# ---- VPATH default settings
+
+# directory where CMakeLists.txt/meson.build/etc. are placed
+%_vpath_srcdir .
+
+# directory (doesn't need to exist) where all generated build files will be placed
+%_vpath_builddir %_target_platform
diff --git a/SOURCES/modalias.prov b/SOURCES/modalias.prov
new file mode 100644
index 0000000..c5eda32
--- /dev/null
+++ b/SOURCES/modalias.prov
@@ -0,0 +1,76 @@
+#! /bin/sh
+
+# heavily based upon find-suggests.ksyms by Andreas Gruenbacher <agruen@suse.de>.
+# with modifications by Michael Brown <Michael_E_Brown@dell.com>
+#
+# -- added module versioning info to modalias() symbols
+# -- removed code which inspects spec files.
+
+IFS=$'\n'
+
+#
+# Initially, dont generate modalias() lines for kernel package. This needs
+# additional discussion. Would like to eventually add them for
+# completeness, so that we can determine when drivers are folded into
+# mainline kernel.
+#
+case "$1" in
+kernel-module-*)    ;; # Fedora kernel module package names start with
+		       # kernel-module.
+kernel*)	   is_kernel_package=1 ;;
+esac
+
+if ! [ -z "$is_kernel_package" ]; then
+    cat > /dev/null
+    exit 0
+fi
+
+print_modaliases() {
+    declare class=$1 variants=$2 pos=$3
+    if [ -n "$variants" ]; then
+	echo "${class:0:pos}[$variants]${class:pos+1}"
+    else
+	[ -z "$class" ] || echo "$class"
+    fi
+}
+
+combine_modaliases() {
+    declare tag class variants pos n
+    read class
+    while read tag; do
+	for ((n=0; n<${#class}; n++)); do
+	    if [ "*" != "${class:n:1}" -a \
+		 "${class:0:n}" = "${tag:0:n}" -a \
+		 "${class:n+1}" = "${tag:n+1}" ] &&
+	       ( [ -z "$pos" ] || [ $n = $pos ] ); then
+		variants="${variants:-${class:n:1}}${tag:n:1}"
+		pos=$n
+		break
+	    fi
+	done
+	if [ $n -eq ${#class} ]; then
+	    print_modaliases "$class" "$variants" "$pos"
+	    variants=
+	    pos=
+	    class=$tag
+	fi
+    done
+    print_modaliases "$class" "$variants" "$pos"
+}
+
+for module in $(grep -E '/lib/modules/.+\.ko$') $*; do
+    # | head -n1 because some modules have *two* version tags. *cough*b44*cough*
+    modver=$(/sbin/modinfo -F version "$module"| head -n1)
+    modver=${modver// /_}
+
+    # only add version tag if it has a version
+    if [ -n "$modver" ]; then
+        /sbin/modinfo -F alias "$module" \
+        | sed -nre "s,(.+),modalias(\\1) = $modver,p"
+    else
+        /sbin/modinfo -F alias "$module" \
+        | sed -nre "s,(.+),modalias(\\1),p"
+    fi
+done \
+| sort -u \
+| combine_modaliases
diff --git a/SOURCES/redhat-annobin-cc1 b/SOURCES/redhat-annobin-cc1
new file mode 100644
index 0000000..edb8245
--- /dev/null
+++ b/SOURCES/redhat-annobin-cc1
@@ -0,0 +1,2 @@
+*cc1_options:
++ %{!-fno-use-annobin:%{!iplugindir*:%:find-plugindir()} -fplugin=annobin}
diff --git a/SOURCES/redhat-hardened-cc1 b/SOURCES/redhat-hardened-cc1
new file mode 100644
index 0000000..fc54bcb
--- /dev/null
+++ b/SOURCES/redhat-hardened-cc1
@@ -0,0 +1,2 @@
+*cc1_options:
++ %{!r:%{!fpie:%{!fPIE:%{!fpic:%{!fPIC:%{!fno-pic:-fPIE}}}}}}
diff --git a/SOURCES/redhat-hardened-ld b/SOURCES/redhat-hardened-ld
new file mode 100644
index 0000000..bd6b907
--- /dev/null
+++ b/SOURCES/redhat-hardened-ld
@@ -0,0 +1,2 @@
+*self_spec:
++ %{!static:%{!shared:%{!r:-pie}}}
diff --git a/SOURCES/rpmrc b/SOURCES/rpmrc
new file mode 100644
index 0000000..264f90f
--- /dev/null
+++ b/SOURCES/rpmrc
@@ -0,0 +1,97 @@
+include: /usr/lib/rpm/rpmrc
+
+optflags: i386 %{__global_compiler_flags} -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection
+optflags: i486 %{__global_compiler_flags} -m32 -march=i486 -fasynchronous-unwind-tables -fstack-clash-protection
+optflags: i586 %{__global_compiler_flags} -m32 -march=i586 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection
+optflags: i686 %{__global_compiler_flags} -m32 -march=x86-64 -mtune=generic -mfpmath=sse -mstackrealign -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection
+optflags: athlon %{__global_compiler_flags} -m32 -march=athlon -fasynchronous-unwind-tables -fstack-clash-protection
+optflags: ia64 %{__global_compiler_flags}
+optflags: x86_64 %{__global_compiler_flags} -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection
+
+optflags: alpha %{__global_compiler_flags} -mieee
+optflags: alphaev5 %{__global_compiler_flags} -mieee -mcpu=ev5
+optflags: alphaev56 %{__global_compiler_flags} -mieee -mcpu=ev56
+optflags: alphapca56 %{__global_compiler_flags} -mieee -mcpu=pca56
+optflags: alphaev6 %{__global_compiler_flags} -mieee -mcpu=ev6
+optflags: alphaev67 %{__global_compiler_flags} -mieee -mcpu=ev67
+
+optflags: sparc %{__global_compiler_flags} -m32 -mcpu=v7 -mtune=ultrasparc
+optflags: sparcv8 %{__global_compiler_flags} -m32 -mcpu=v8
+optflags: sparcv9 %{__global_compiler_flags} -m32 -mcpu=ultrasparc
+optflags: sparcv9v %{__global_compiler_flags} -m32 -mcpu=niagara
+optflags: sparc64 %{__global_compiler_flags} -m64 -mcpu=ultrasparc
+optflags: sparc64v %{__global_compiler_flags} -m64 -mcpu=niagara
+
+optflags: m68k %{__global_compiler_flags}
+
+optflags: ppc %{__global_compiler_flags} -m32 -funwind-tables
+optflags: ppciseries %{__global_compiler_flags} -m32
+optflags: ppcpseries %{__global_compiler_flags} -m32
+optflags: ppc64 %{__global_compiler_flags} -m64 -funwind-tables -fstack-clash-protection
+optflags: ppc64p7 %{__global_compiler_flags} -m64 -O3 -mcpu=power7 -mtune=power7 -funwind-tables -fstack-clash-protection
+optflags: ppc64le %{__global_compiler_flags} -m64 -mcpu=power8 -mtune=power8 -funwind-tables -fstack-clash-protection
+optflags: ppc64iseries %{__global_compiler_flags} -m64
+optflags: ppc64pseries %{__global_compiler_flags} -m64
+optflags: ppc8260 %{__global_compiler_flags} -m32
+optflags: ppc8560 %{__global_compiler_flags} -m32
+
+optflags: parisc %{__global_compiler_flags} -mpa-risc-1-0
+optflags: hppa1.0 %{__global_compiler_flags} -mpa-risc-1-0
+optflags: hppa1.1 %{__global_compiler_flags} -mpa-risc-1-0
+optflags: hppa1.2 %{__global_compiler_flags} -mpa-risc-1-0
+optflags: hppa2.0 %{__global_compiler_flags} -mpa-risc-1-0
+
+optflags: mips %{__global_compiler_flags} -march=mips32r2 -mfpxx
+optflags: mipsel %{__global_compiler_flags} -march=mips32r2 -mfpxx
+optflags: mips64 %{__global_compiler_flags} -march=mips64r2 -mabi=64
+optflags: mips64el %{__global_compiler_flags} -march=mips64r2 -mabi=64
+optflags: mipsr6 %{__global_compiler_flags} -march=mips32r6
+optflags: mipsr6el %{__global_compiler_flags} -march=mips32r6
+optflags: mips64r6 %{__global_compiler_flags} -march=mips64r6
+optflags: mips64r6el %{__global_compiler_flags} -march=mips64r6
+
+optflags: armv3l %{__global_compiler_flags} -fsigned-char -march=armv3
+optflags: armv4b %{__global_compiler_flags} -fsigned-char -march=armv4
+optflags: armv4l %{__global_compiler_flags} -fsigned-char -march=armv4
+optflags: armv4tl %{__global_compiler_flags} -march=armv4t
+optflags: armv5tel %{__global_compiler_flags} -march=armv5te -mfloat-abi=soft
+optflags: armv5tejl %{__global_compiler_flags} -march=armv5te -mfloat-abi=soft
+optflags: armv6l %{__global_compiler_flags} -march=armv6 -mfloat-abi=soft
+optflags: armv6hl %{__global_compiler_flags} -march=armv6 -mfpu=vfp -mfloat-abi=hard
+optflags: armv6hnl %{__global_compiler_flags} -march=armv6 -mfpu=neon -mfloat-abi=hard
+optflags: armv7l %{__global_compiler_flags} -march=armv7-a -mfloat-abi=soft
+optflags: armv7hl %{__global_compiler_flags} -march=armv7-a -mfpu=vfpv3-d16 -mtune=generic-armv7-a -mabi=aapcs-linux -mfloat-abi=hard
+optflags: armv7hnl %{__global_compiler_flags} -march=armv7-a -mfpu=neon  -mfloat-abi=hard
+
+optflags: atarist %{__global_compiler_flags}
+optflags: atariste %{__global_compiler_flags}
+optflags: ataritt %{__global_compiler_flags}
+optflags: falcon %{__global_compiler_flags}
+optflags: atariclone %{__global_compiler_flags}
+optflags: milan %{__global_compiler_flags}
+optflags: hades %{__global_compiler_flags}
+
+optflags: s390 %{__global_compiler_flags} -m31 -march=z13 -mtune=z14 -fasynchronous-unwind-tables
+optflags: s390x %{__global_compiler_flags} -m64 -march=z13 -mtune=z14 -fasynchronous-unwind-tables -fstack-clash-protection
+
+optflags: aarch64 %{__global_compiler_flags} -fasynchronous-unwind-tables -fstack-clash-protection
+
+optflags: riscv64 %{__global_compiler_flags}
+
+# set build arch to fedora buildarches on hardware capable of running it
+# saves having to do rpmbuild --target=
+buildarchtranslate: athlon: i686
+buildarchtranslate: geode: i686
+buildarchtranslate: pentium4: i686
+buildarchtranslate: pentium3: i686
+buildarchtranslate: i686: i686
+buildarchtranslate: i586: i586
+
+buildarchtranslate: sparcv9: sparcv9
+buildarchtranslate: sparcv9v: sparcv9
+
+buildarchtranslate: armv5tejl: armv5tel
+buildarchtranslate: armv6l: armv5tel
+buildarchtranslate: armv7l: armv5tel
+buildarchtranslate: armv7hl: armv7hl
+buildarchtranslate: armv7hnl: armv7hl
diff --git a/SOURCES/rpmsort b/SOURCES/rpmsort
new file mode 100755
index 0000000..c8ae298
--- /dev/null
+++ b/SOURCES/rpmsort
@@ -0,0 +1,76 @@
+#! /usr/bin/perl -w
+
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,
+# USA.
+
+use Getopt::Long qw(:config gnu_getopt);
+
+sub rpm_cmp_versions {
+    my ($evr1, $evr2) = @_;
+
+    sub _rpm_cmp {
+	my ($s1, $s2) = @_;
+
+	return defined $s1 <=> defined $s2
+	    unless defined $s1 && defined $s2;
+
+	my ($r, $x1, $x2);
+	do {
+	    $s1 =~ s/^[^a-zA-Z0-9]+//;
+	    $s2 =~ s/^[^a-zA-Z0-9]+//;
+	    if ($s1 =~ /^\d/ || $s2 =~ /^\d/) {
+		$s1 =~ s/^0*(\d*)//;  $x1 = $1;
+		$s2 =~ s/^0*(\d*)//;  $x2 = $1;
+		$r = length $x1 <=> length $x2 || $x1 cmp $x2;
+	    } else {
+		$s1 =~ s/^([a-zA-Z]*)//;  $x1 = $1;
+		$s2 =~ s/^([a-zA-Z]*)//;  $x2 = $1;
+		return 0
+		    if $x1 eq '' && $x2 eq '';
+		$r = $x1 cmp $x2;
+	    }
+	} until $r;
+	return $r;
+    }
+
+    my ($e1, $v1, $r1) = $evr1 =~ /^(?:(\d*):)?(.*?)(?:-([^-]*))?$/;
+    my ($e2, $v2, $r2) = $evr2 =~ /^(?:(\d*):)?(.*?)(?:-([^-]*))?$/;
+    my $r = _rpm_cmp($e1 || 0, $e2 || 0);
+    $r = _rpm_cmp($v1, $v2)
+	unless $r;
+    $r = _rpm_cmp($r1, $r2)
+	unless $r;
+    return $r;
+}
+
+my $reorder = sub { return @_ };
+my $key = 0;
+
+GetOptions ("r|reverse"	    => sub { $reorder = sub { return reverse @_ } },
+	    "k|key=i"	    => \$key)
+or do {
+    print STDERR "Usage\n";
+    exit 1;
+};
+
+if ($key == 0) {
+    # Sort by entire lines
+    map { print } &$reorder(sort { rpm_cmp_versions($a, $b) } <>);
+} else {
+    # Sort by field $key
+    my @data = map { [(split)[$key-1], $_] } <>;
+    map { print } &$reorder(map { $_->[1] }
+        sort { rpm_cmp_versions($a->[0], $b->[0]) } @data);
+}
diff --git a/SOURCES/symset-table b/SOURCES/symset-table
new file mode 100755
index 0000000..acc00c3
--- /dev/null
+++ b/SOURCES/symset-table
@@ -0,0 +1,40 @@
+#! /bin/sh
+
+# Create a table of all symbol sets defined in all /boot/symsets*.tar.gz
+# files.
+#
+# Format:
+#   kernelrelease/modver/symbol <tab> symset <tab> symset_hash
+#
+# This table is needed for computing the appropriate Requires: tags for
+# kernel module packages.
+
+tmpdir=$(mktemp -t -d ${0##*/}.XXXXXX)
+trap "cd / ; rm -rf $tmpdir" EXIT
+cd $tmpdir
+
+shopt -s nullglob
+for symsets in /boot/symsets-*.tar.gz; do
+    zcat $symsets \
+    | tar xf -
+done
+
+for symsets in /usr/src/kernels/*/symsets-*.tar.gz; do
+    zcat $symsets \
+    | tar xf -
+done
+
+for symsets in *; do
+    krel=${symsets#symsets-}
+    for symset in $symsets/*; do
+	class=${symset##*/} ; class=${class%.*}
+	hash=${symset##*.}
+	awk '
+	BEGIN { FS = "\t" ; OFS = "\t" }
+	{ sub(/0x0*/, "", $1)
+	  print krel "/" $1 "/" $2, class, hash }
+	' krel="$krel" class="$class" hash="$hash" $symset
+    done
+done
+
+# vim:shiftwidth=4 softtabstop=4
diff --git a/SPECS/redhat-rpm-config.spec b/SPECS/redhat-rpm-config.spec
new file mode 100644
index 0000000..4bec78e
--- /dev/null
+++ b/SPECS/redhat-rpm-config.spec
@@ -0,0 +1,1120 @@
+#                        TO WHOM IT MAY CONCERN
+#
+# 1) Don't add patches, dist-git is the upstream repository for this package.
+# 2) When making changes, update version by +1, leave release alone.
+#
+
+Summary: Red Hat specific rpm configuration files
+Name: redhat-rpm-config
+Version: 122
+Release: 1%{?dist}
+# No version specified.
+License: GPL+
+Group: Development/System
+URL: https://src.fedoraproject.org/rpms/redhat-rpm-config
+
+# Core rpm settings
+Source0: macros
+Source1: rpmrc
+
+# kabi provides generator
+Source20: kabi.attr
+Source21: kabi.sh
+
+# gcc specs files for hardened builds
+Source50: redhat-hardened-cc1
+Source51: redhat-hardened-ld
+
+# gcc specs files for annobin builds
+Source52: redhat-annobin-cc1
+
+# The macros defined by these files are for things that need to be defined
+# at srpm creation time when it is not feasible to require the base packages
+# that would otherwise be providing the macros. other language/arch specific
+# macros should not be defined here but instead in the base packages that can
+# be pulled in at rpm build time, this is specific for srpm creation.
+Source100: macros.fedora-misc-srpm
+Source102: macros.mono-srpm
+Source103: macros.nodejs-srpm
+Source104: macros.ldc-srpm
+Source105: macros.valgrind-srpm
+
+# Other misc macros
+Source150: macros.dwz
+Source151: macros.kmp
+Source152: macros.vpath
+Source153: macros.forge
+Source154: macros.ldconfig
+
+# Build policy scripts
+# this comes from https://github.com/rpm-software-management/rpm/pull/344
+# added a python -> python2 conversion for fedora with warning
+# and an echo when the mangling happens
+Source201: brp-mangle-shebangs
+
+# Dependency generator scripts (deprecated)
+Source300: find-provides
+Source301: find-provides.ksyms
+Source304: find-requires
+Source305: find-requires.ksyms
+Source308: firmware.prov
+Source309: modalias.prov
+
+# Misc helper scripts
+Source400: dist.sh
+Source401: rpmsort
+Source402: symset-table
+Source403: kmodtool
+
+# 2016-10-02 snapshots from http://git.savannah.gnu.org/gitweb/?p=config.git
+Source500: config.guess
+Source501: config.sub
+
+# Dependency generators & their rules
+Source600: kmod.attr
+Source601: kmod.prov
+Source602: libsymlink.attr
+
+# BRPs
+Source700: brp-ldconfig
+Source701: brp-kmod-set-exec-bit
+Source702: brp-kmod-restore-perms
+
+# Documentation
+Source900: buildflags.md
+
+BuildArch: noarch
+BuildRequires: perl-generators
+Requires: coreutils
+
+Requires: efi-srpm-macros
+Requires: ghc-srpm-macros
+Requires: go-srpm-macros
+Requires: ocaml-srpm-macros
+Requires: openblas-srpm-macros
+Requires: perl-srpm-macros
+Requires: python-srpm-macros
+Requires: python3-rpm-macros
+Requires: rust-srpm-macros
+Requires: qt5-srpm-macros
+
+Requires: rpm >= 4.11.0
+Requires: dwz >= 0.4
+Requires: zip
+Requires: (annobin if gcc)
+
+# for brp-mangle-shebangs
+Requires: %{_bindir}/find
+Requires: %{_bindir}/file
+Requires: %{_bindir}/grep
+Requires: %{_bindir}/sed
+Requires: %{_bindir}/xargs
+
+# -fstack-clash-protection and -fcf-protection require GCC 8.
+Conflicts: gcc < 8
+
+Provides: system-rpm-config = %{version}-%{release}
+
+%global rrcdir /usr/lib/rpm/redhat
+
+%description
+Red Hat specific rpm configuration files.
+
+%package -n kernel-rpm-macros
+Summary: Macros and scripts for building kernel module packages.
+Requires: redhat-rpm-config >= 13
+
+# for brp-kmod-set-exec-bit
+Requires: %{_bindir}/find
+
+%description -n kernel-rpm-macros
+Macros and scripts for building kernel module packages.
+
+%prep
+# Not strictly necessary but allows working on file names instead
+# of source numbers in install section
+%setup -c -T
+cp -p %{sources} .
+
+%install
+mkdir -p %{buildroot}%{rrcdir}
+install -p -m 644 -t %{buildroot}%{rrcdir} macros rpmrc
+install -p -m 444 -t %{buildroot}%{rrcdir} redhat-hardened-*
+install -p -m 444 -t %{buildroot}%{rrcdir} redhat-annobin-*
+install -p -m 755 -t %{buildroot}%{rrcdir} config.*
+install -p -m 755 -t %{buildroot}%{rrcdir} dist.sh rpmsort symset-table kmodtool
+install -p -m 755 -t %{buildroot}%{rrcdir} brp-*
+
+install -p -m 755 -t %{buildroot}%{rrcdir} find-*
+mkdir -p %{buildroot}%{rrcdir}/find-provides.d
+install -p -m 755 -t %{buildroot}%{rrcdir}/find-provides.d firmware.prov modalias.prov
+
+install -p -m 755 -t %{buildroot}%{rrcdir} brp-*
+
+mkdir -p %{buildroot}%{_rpmconfigdir}/macros.d
+install -p -m 644 -t %{buildroot}%{_rpmconfigdir}/macros.d macros.*
+
+mkdir -p %{buildroot}%{_fileattrsdir}
+install -p -m 644 -t %{buildroot}%{_fileattrsdir} *.attr
+install -p -m 755 -t %{buildroot}%{_rpmconfigdir} kmod.prov
+
+install -p -m 644 %{SOURCE20} %{buildroot}%{_fileattrsdir}/kabi.attr
+install -p -m 755 %{SOURCE21} %{buildroot}%{_rpmconfigdir}/kabi.sh
+
+%files
+%dir %{rrcdir}
+%{rrcdir}/macros
+%{rrcdir}/rpmrc
+%{rrcdir}/brp-mangle-shebangs
+%{rrcdir}/brp-ldconfig
+%{rrcdir}/dist.sh
+%{rrcdir}/redhat-hardened-*
+%{rrcdir}/redhat-annobin-*
+%{rrcdir}/config.*
+%{rrcdir}/find-provides
+%{rrcdir}/find-requires
+%{rrcdir}/brp-ldconfig
+%{_fileattrsdir}/*.attr
+%{_rpmconfigdir}/kmod.prov
+%{_rpmconfigdir}/macros.d/macros.*-srpm
+%{_rpmconfigdir}/macros.d/macros.dwz
+%{_rpmconfigdir}/macros.d/macros.forge
+%{_rpmconfigdir}/macros.d/macros.ldconfig
+%{_rpmconfigdir}/macros.d/macros.vpath
+%{_rpmconfigdir}/kabi.sh
+%doc buildflags.md
+
+%files -n kernel-rpm-macros
+%dir %{rrcdir}/find-provides.d
+%{rrcdir}/brp-kmod-set-exec-bit
+%{rrcdir}/brp-kmod-restore-perms
+%{rrcdir}/kmodtool
+%{rrcdir}/rpmsort
+%{rrcdir}/symset-table
+%{rrcdir}/find-provides.ksyms
+%{rrcdir}/find-requires.ksyms
+%{rrcdir}/find-provides.d/firmware.prov
+%{rrcdir}/find-provides.d/modalias.prov
+%{_rpmconfigdir}/macros.d/macros.kmp
+
+%changelog
+* Mon Feb 24 2020 Michal Domonkos <mdomonko@redhat.com> - 122-1
+- Fix argument shift in %%__brp_python_bytecompile (#1724567)
+
+* Tue Nov 26 2019 Eugene Syromiatnikov <esyr@redhat.com> - 121-1
+- macros.kmp: add post-install hooks for kmod processing (#1664478, #1673200)
+
+* Thu Jul 04 2019 Florian Festi <ffesti@redhat.com> - 120-1
+- Fix permission for various build scripts (#1719363)
+
+* Tue Jun 04 2019 Florian Festi <ffesti@redhat.com> - 119-1
+- Remove -eu param from shell scripts (#1686413)
+
+* Mon May 20 2019 Florian Weimer <fweimer@redhat.com> - 118-1
+- Build flags: Add support for extension builders (#1661186)
+
+* Wed Apr 17 2019 Panu Matilainen <pmatilai@redhat.com> - 117-1
+- Add s390x to valgrind supported architectures (#1659106)
+
+* Wed Feb 06 2019 Eugene Syromiatnikov <esyr@redhat.com> - 116-1
+- Forward-port RHEL-specific kmodtool/macros.kmp changes from RHEL 7,
+  update kmodtool script for RHEL 8 (#1658414, #1666162)
+
+* Sat Sep 15 2018 Eugene Syromiatnikov <esyr@redhat.com> - 115-1
+- Revert back to usage of join in find-requires.ksym:mod_requires()
+  as generated "Requires:" and "Provides:" lists have different format
+  and unsuitable for processing with comm (#1622016)
+
+* Fri Aug 24 2018 Eugene Syromiatnikov <esyr@redhat.com> - 114-1
+- Add support for compressed kernel modules to find-provides,
+  find-provides.ksyms, find-requires, find-requires.ksyms, firmware.prov
+  (#1622019)
+
+* Mon Aug 20 2018 Eugene Syromiatnikov <esyr@redhat.com> - 113-1
+- Fix generation for kernel module symbol version dependencies for the case
+  when module depends on the symbol with the same name as one present in kernel
+  but a different version (#1622016)
+
+* Mon Aug 13 2018 Eugene Syromiatnikov <esyr@redhat.com> - 112-1
+- Re-instantiate support for old symvers path (#1571186)
+
+* Mon Aug 13 2018 Eugene Syromiatnikov <esyr@redhat.com> - 111-1
+- Add dependency generator for kABI provides (#1571186)
+
+* Thu Aug  9 2018 Marek Polacek <polacek@redhat.com> - 110-1
+- Use -march=z13 -mtune=z14 for s390{,x} (#1573944)
+- Drop s390x from %%{valgrind_arches}
+
+* Mon Jul 23 2018 Peter Jones <pjones@redhat.com> - 109-1
+- Add Requires: efi-srpm-macros for %%{efi}
+- brp-mangle-shebangs: add %%{__brp_mangle_shebangs_exclude_file} and
+  %%{__brp_mangle_shebangs_exclude_from_file} to allow you to specify files
+  containing the shebangs to be ignore and files to be ignored regexps,
+  respectively, so that they can be generated during the package build.
+
+* Mon Jul 09 2018 Tomas Orsava <torsava@redhat.com> - 108-1
+- Impement changing python3 shebangs in brp-mangle-shebangs
+- Added a dependency on python3-rpm-macros
+
+* Tue Jul 03 2018 Tomas Orsava <torsava@redhat.com> - 107.3-3.1
+- Bump release
+
+* Thu Jun 28 2018 Tomas Orsava <torsava@redhat.com> - 107.3-3
+- The brp-python-bytecompile script no longer accepts two arguments, as the
+  first argument has been obsoleted
+- Modified the definition of %%__brp_python_bytecompile to match the new scheme
+
+* Thu Jun 28 2018 Florian Festi <ffesti@redhat.com> - 107.3-2
+- Replace find-provides.ksyms and find-requires.ksyms by RHEL 7.6 versions (#1571186)
+
+* Thu Jun 07 2018 Florian Festi <ffesti@redhat.com> - 107.3-1
+- Remove dependencies to fpc-srpm-macros, gnat-srpm-macros and nim-srpm-macros
+
+* Fri Jun  1 2018 Florian Weimer <fweimer@redhat.com> - 107.2-1
+- i686: Build with -mstackrealign (#1478332)
+- Update documentation for i686 build flags (#1554855)
+
+* Fri May  4 2018 Florian Weimer <fweimer@redhat.com> - 107.1-1
+- Use plain -fcf-protection compiler flag, without -mcet (#1574937)
+
+* Fri Apr 20 2018 Jason L Tibbitts III <tibbs@math.uh.edu> - 107-1
+- Add %%_metainfodir macro.
+- %%forgeautosetup tweak to fix patch application.
+
+* Mon Mar 05 2018 Jason L Tibbitts III <tibbs@math.uh.edu> - 106-1
+- Update forge macros.
+
+* Wed Feb 28 2018 Florian Weimer <fweimer@redhat.com> - 105-1
+- Make -fasynchronous-unwind-tables explicit on aarch64 (#1536431)
+
+* Wed Feb 28 2018 Florian Weimer <fweimer@redhat.com> - 104-1
+- Use -funwind-tables on POWER (#1536431, #1548847)
+
+* Sun Feb 25 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 103-1
+- Make %%ldconfig_post/%%ldconfig_postun parameterized
+
+* Sat Feb 24 2018 Florian Weimer <fweimer@redhat.com> - 102-1
+- Second step of -z now move: removal from GCC specs file (#1548397)
+
+* Sat Feb 24 2018 Florian Weimer <fweimer@redhat.com> - 101-1
+- First step of moving -z now to the gcc command line (#1548397)
+
+* Thu Feb 22 2018 Miro Hrončok <mhroncok@redhat.com> - 100-1
+- Don't mangle shebangs with whitespace only changes (#1546993)
+
+* Thu Feb 22 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 99-1
+- Move %%end to %%ldconfig_scriptlets
+
+* Sat Feb 17 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 98-1
+- Explicitly close scriptlets with %%end (ldconfig)
+
+* Wed Feb 14 2018 Miro Hrončok <mhroncok@redhat.com> - 97-1
+- Allow to opt-out from shebang mangling for specific paths/shebangs
+
+* Thu Feb 08 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 96-1
+- Simplify/Fix check for shebang starting with "/"
+
+* Wed Feb 07 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 95-1
+- Fix mangling env shebangs with absolute paths
+
+* Sun Feb  4 2018 Florian Weimer <fweimer@redhat.com> - 94-1
+- Add RPM macros for compiler/linker flags
+
+* Sat Feb 03 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 93-1
+- Use newly available /usr/bin/grep
+
+* Wed Jan 31 2018 Peter Robinson <pbrobinson@fedoraproject.org> 92-1
+- Use generic tuning for ARMv7
+
+* Tue Jan 30 2018 Jason L Tibbitts III <tibbs@math.uh.edu> - 91-1
+- The grep package only provides /bin/grep, not /usr/bin/grep.
+
+* Mon Jan 29 2018 Miro Hrončok <mhroncok@redhat.com> - 90-1
+- Add brp-mangle-shebangs
+
+* Mon Jan 29 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 89-1
+- Add macros.ldconfig
+
+* Mon Jan 29 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 88-1
+- Create DSO symlinks automatically
+
+* Mon Jan 29 2018 Florian Weimer <fweimer@redhat.com> - 87-1
+- Build flags: Disable -z defs again (#1535422)
+
+* Mon Jan 29 2018 Florian Weimer <fweimer@redhat.com> - 86-1
+- Build flags: Enable CET on i686, x86_64 (#1538725)
+
+* Thu Jan 25 2018 Florian Weimer <fweimer@redhat.com> - 85-1
+- Build flags: Switch to generic tuning on i686 (#1538693)
+
+* Mon Jan 22 2018 Florian Weimer <fweimer@redhat.com> - 84-1
+- Link with -z defs by default (#1535422)
+
+* Mon Jan 22 2018 Florian Weimer <fweimer@redhat.com> - 83-1
+- Make armhfp flags consistent with GCC defaults
+
+* Mon Jan 22 2018 Florian Weimer <fweimer@redhat.com> - 82-1
+- Make use of -fasynchronous-unwind-tables more explicit (#1536431)
+
+* Mon Jan 22 2018 Florian Weimer <fweimer@redhat.com> - 81-1
+- Remove --param=ssp-buffer-size=4
+
+* Mon Jan 22 2018 Florian Weimer <fweimer@redhat.com> - 80-1
+- Document build flags
+
+* Fri Jan 19 2018 Panu Matilainen <pmatilai@redhat.com> - 79-1
+- Document how to disable hardened and annotated build (#1211296)
+
+* Wed Jan 17 2018 Panu Matilainen <pmatilai@redhat.com> - 78-1
+- Fix the inevitable embarrassing typo in 77, doh
+
+* Wed Jan 17 2018 Panu Matilainen <pmatilai@redhat.com> - 77-1
+- Macroize build root policies for consistent disable/override ability
+
+* Wed Jan 17 2018 Florian Weimer <fweimer@redhat.com> - 76-1
+- Add -fstack-clash-protection for supported architectures (#1515865)
+
+* Wed Jan 17 2018 Florian Weimer <fweimer@redhat.com> - 75-1
+- Add _GLIBCXX_ASSERTIONS to CFLAGS/CXXFLAGS (#1515858)
+
+* Mon Jan 15 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 74-1
+- Remove Requires: cmake-rpm-macros
+
+* Thu Jan 11 2018 Jason L Tibbitts III <tibbs@math.uh.edu> - 73-1
+- Add macros.forge for simplifying packaging of forge-hosted packages.  See
+  https://fedoraproject.org/wiki/Forge-hosted_projects_packaging_automation and
+  https://bugzilla.redhat.com/show_bug.cgi?id=1523779
+
+* Wed Jan 03 2018 Sergey Avseyev <sergey.avseyev@gmail.com> - 72-1
+- Add Requires: nim-srpm-macros for %%nim_arches
+
+* Tue Jan 02 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 71-1
+- Require annobin only if gcc is installed
+
+* Thu Dec 21 2017 Björn Esser <besser82@fedoraproject.org> - 70-2
+- Add Requires: cmake-rpm-macros for CMake auto-{provides,requires} (#1498894)
+
+* Fri Dec 08 2017 Panu Matilainen <pmatilai@redhat.com> - 70-1
+- Update URL to current location at src.fedoraproject.org
+
+* Wed Nov 22 2017 Nick Clifton <nickc@redhat.com> - 69-1
+- Enable binary annotations in compiler flags
+
+* Thu Oct 26 2017 Troy Dawson <tdawson@redhat.com> - 68-1
+- Remove Requires: fedora-rpm-macros
+
+* Mon Jul 31 2017 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 67-1
+- Define _include_gdb_index (RHBZ #1476722)
+- Move _debuginfo_subpackages and _debugsource_packages from rpm (RHBZ #1476735)
+
+* Tue Jul 18 2017 Florian Festi <ffesti@redhat.com> - 66-1
+- Honor %%kmodtool_generate_buildreqs (#1472201)
+
+* Thu Jul 13 2017 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 65-1
+- Add Requires: rust-srpm-macros for %%rust_arches
+
+* Wed Mar 15 2017 Orion Poplawski <orion@cora.nwra.com> - 64-1
+- Add Requires: openblas-srpm-macros for %%openblas_arches
+
+* Thu Feb 02 2017 Dan Horák <dan[at]danny.cz> - 63-1
+- set zEC12 as minimum architecture level for s390(x) (#1404991)
+
+* Thu Dec 15 2016 Jason L Tibbitts III <tibbs@math.uh.edu> - 62-1
+- Add macros.vpath (https://fedorahosted.org/fpc/attachment/ticket/655)
+
+* Tue Dec 06 2016 Adam Williamson <awilliam@redhat.com> - 61-1
+- revert changes from 60, they break far too much stuff (#1401231)
+
+* Wed Nov 30 2016 Panu Matilainen <pmatilai@redhat.com> - 60-1
+- Error on implicit function declaration and -return type for C (#1393492)
+
+* Wed Nov 30 2016 Panu Matilainen <pmatilai@redhat.com> - 59-1
+- Move global compiler flags to __global_compiler_flags macro
+- Introduce separate __global_fooflags for C, C++ and Fortran
+
+* Tue Nov 29 2016 Panu Matilainen <pmatilai@redhat.com> - 58-1
+- Drop atom optimization on i686 (#1393492)
+
+* Tue Nov 15 2016 Dan Horák <dan[at]danny.cz> - 57-1
+- set z10 as minimum architecture level for s390(x)
+
+* Fri Nov 11 2016 Panu Matilainen <pmatilai@redhat.com> - 56-1
+- Fix directory name mismatch in kernel_source macro (#648996)
+
+* Tue Nov 08 2016 Michal Toman <mtoman@fedoraproject.org> - 55-1
+- Add default compiler flags for various MIPS architectures (#1366735)
+
+* Tue Nov 08 2016 Panu Matilainen <pmatilai@redhat.com> - 54-1
+- -pie is incompatible with static linkage (#1343892, #1287743)
+
+* Mon Nov 07 2016 Panu Matilainen <pmatilai@redhat.com> - 53-1
+- Drop brp-java-repack-jars by request (#1235770)
+- Drop brp-implant-ident-static, unused for 13 years and counting
+
+* Mon Nov 07 2016 Lubomir Rintel <lkundrak@v3.sk> - 52-1
+- Add valgrind_arches macro for BuildRequires of valgrind
+
+* Fri Nov 04 2016 Stephen Gallagher <sgallagh@redhat.com> - 51-1
+- Add s390x build target for Node.js packages
+
+* Mon Oct 31 2016 Kalev Lember <klember@redhat.com> - 50-1
+- Add ldc_arches macro
+
+* Mon Oct 17 2016 Jason L Tibbitts III <tibbs@math.uh.edu> - 49-1
+- Remove hardcoded limit of 16 CPUs for makefile parallelism.
+- See https://bugzilla.redhat.com/show_bug.cgi?id=1384938
+
+* Thu Oct 13 2016 Richard W.M. Jones <rjones@redhat.com> 48-1
+- Add support for riscv64.
+  This also updates config.sub/config.guess to the latest upstream versions.
+
+* Wed Oct 12 2016 Peter Robinson <pbrobinson@fedoraproject.org> 47-1
+- Enable aarch64 for mono arches
+
+* Mon Oct 03 2016 Jason L Tibbitts III <tibbs@math.uh.edu> - 46-1
+- Allow %%configure to optionally pass --disable-silent-rules.  Define
+  %%_configure_disable_silent_rules (defaulting to 0) to control this.
+
+* Wed Sep 14 2016 Jason L Tibbitts III <tibbs@math.uh.edu> - 45-1
+- Add dependency on qt5-srpm-macros.
+
+* Fri Aug 12 2016 Jason L Tibbitts III <tibbs@math.uh.edu> - 44-1
+- And somehow I managed to make a typo in that dependency.
+
+* Fri Aug 12 2016 Jason L Tibbitts III <tibbs@math.uh.edu> - 43-1
+- Add dependency on fedora-rpm-macros.
+
+* Tue Apr 12 2016 Jason L Tibbitts III <tibbs@math.uh.edu> - 42-1
+- Add dependency on fpc-srpm-macros.
+
+* Mon Apr 11 2016 Jason L Tibbitts III <tibbs@math.uh.edu> - 41-1
+- Add a file for miscellaneous macros, currently containing just %%rpmmacrodir.
+
+* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 40-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
+
+* Tue Feb 02 2016 Dan Horák <dan[at]danny.cz> 40-1
+- switch to -mcpu=power8 for ppc64le default compiler flags
+
+* Wed Jan 13 2016 Orion Poplawski <orion@cora.nwra.com> 39-1
+- Add Requires: python-srpm-macros
+
+* Fri Jan  8 2016 Peter Robinson <pbrobinson@fedoraproject.org> 38-1
+- Add missing ARMv6 optflags
+
+* Wed Dec  2 2015 Peter Robinson <pbrobinson@fedoraproject.org> 37-1
+- nodejs 4+ now supports aarch64 and power64
+
+* Fri Jul 17 2015 Florian Festi <ffesti@redhat.com> 36-1
+- Add Requires: go-srpm-macros (#1243922)
+
+* Thu Jul 09 2015 Sandro Mani <manisandro@gmail.com> 35-1
+- Use %%__libsymlink_path instead of %%__libsymlink_exclude_path in libsymlink.attr
+
+* Wed Jul 08 2015 Adam Jackson <ajax@redhat.com> 34-1
+- Fix cc1 specs mishandling of incremental linking
+
+* Thu Jun 18 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 33-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
+
+* Fri Jun 05 2015 Dan Horák <dan[at]danny.cz> 33-1
+- Mono 4 adds support for ppc64le
+
+* Fri May 29 2015 Florian Festi <ffesti@redhat.com> 32-1
+- Support out of source builds for %%_configure_gnuconfig_hack (#1191788)
+- Fix typo in %%kernel_module_package (#1159361)
+
+* Tue May 19 2015 Florian Festi <ffesti@redhat.com> 31-1
+- Add %%py_auto_byte_compile macro controlling Python bytecompilation
+(#976651)
+
+* Wed Apr 29 2015 Florian Festi <ffesti@redhat.com> 30-1
+- Fix libsymlink.attr for new magic pattern for symlinks (#1207945)
+
+* Wed Apr 08 2015 Adam Jackson <ajax@redhat.com> 29-1
+- Fix ld specs mishandling of incremental linking
+
+* Thu Feb 19 2015 Till Maas <opensource@till.name> - 28-1
+- Enable harden flags by default (#1192183)
+
+* Wed Dec 10 2014 Dan Horák <dan[at]danny.cz> - 27-1
+- Explicitly set -mcpu/-mtune for ppc64p7 and ppc64le to override rpm defaults
+
+* Mon Sep 22 2014 Panu Matilainen <pmatilai@redhat.com> - 26-1
+- Gnat macros are now in a package of their own (#1133632)
+
+* Fri Sep 19 2014 Dan Horák <dan[at]danny.cz> - 25-1
+- there is still no properly packaged Mono for ppc64le
+
+* Sun Jun 08 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 24-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
+
+* Thu Jun  5 2014 Peter Robinson <pbrobinson@fedoraproject.org> 24-1
+- ARMv7 has Ada so add it to GNAT_arches
+
+* Sat May 24 2014 Brent Baude <baude@us.ibm.com> - 23-2
+- Changed ppc64 to power64 macro for mono_archs
+
+* Tue May 13 2014 Peter Robinson <pbrobinson@fedoraproject.org>
+- aarch64 has Ada so add it to GNAT_arches
+
+* Mon May 12 2014 Josh Boyer <jwboyer@fedoraproject.org> - 22-1
+- Fix kmod.prov to deal with compressed modules (#1096349)
+
+* Wed Apr 30 2014 Jens Petersen <petersen@redhat.com> - 21-1
+- macros.ghc-srpm moved to ghc-rpm-macros package (#1089102)
+- add requires ghc-srpm-macros
+
+* Tue Apr 29 2014 Peter Robinson <pbrobinson@fedoraproject.org> 20-1
+- With gcc 4.9 aarch64 now supports stack-protector
+
+* Sun Apr 27 2014 Ville Skyttä <ville.skytta@iki.fi> - 19-1
+- Drop bunch of duplicated-with-rpm macro definitions and brp-* scripts
+
+* Tue Apr 15 2014  Panu Matilainen <pmatilai@redhat.com> - 18-1
+- Temporarily bring back find-requires and -provides scripts to rrc-side
+
+* Tue Apr 15 2014  Panu Matilainen <pmatilai@redhat.com> - 17-1
+- Let OCaml handle its own arch macros (#1087794)
+
+* Tue Apr 15 2014  Panu Matilainen <pmatilai@redhat.com> - 16-1
+- Move kmod and libsymlink dependency generators here from rpm
+
+* Thu Apr 10 2014  Panu Matilainen <pmatilai@redhat.com> - 15-1
+- Drop most of the script-based dependency generation bits
+
+* Tue Apr 08 2014  Panu Matilainen <pmatilai@redhat.com> - 14-1
+- Add Mono path macros (#1070936)
+- Allow opting out of config.{guess,sub} replacement hack (#991613)
+
+* Tue Apr 08 2014  Panu Matilainen <pmatilai@redhat.com> - 13-1
+- Move the remaining dependency generator stuff to the kmp macro package
+- Stop overriding rpm external dependency generator settings by default
+
+* Mon Apr 07 2014  Panu Matilainen <pmatilai@redhat.com> - 12-1
+- Be more explicit about the package contents
+- Split kernel module macros to a separate file
+- Split kernel module scripts and macros to a separate package
+
+* Wed Apr 02 2014  Panu Matilainen <pmatilai@redhat.com> - 11-1
+- Stop pretending this package is relocatable, its not
+- Require rpm >= 4.11 for /usr/lib/rpm/macros.d support etc
+- Move our macros out of from /etc, they're not configuration
+
+* Wed Apr 02 2014  Panu Matilainen <pmatilai@redhat.com> - 10-1
+- Make fedora dist-git the upstream of this package and its sources
+- Add maintainer comments to spec wrt versioning and changes
+
+* Mon Mar 24 2014 Dan Horák <dan[at]danny.cz> - 9.1.0-58
+- enable ppc64le otherwise default rpm cflags will be used
+
+* Fri Feb 07 2014 Panu Matilainen <pmatilai@redhat.com> - 9.1.0-57
+- config.guess/sub don't need to be group-writable (#1061762)
+
+* Sun Jan 12 2014 Kevin Fenzi <kevin@scrye.com> 9.1.0-56
+- Update libtool hardening hack and re-enable (#978949)
+
+* Wed Dec 18 2013 Dhiru Kholia <dhiru@openwall.com> - 9.1.0-55
+- Enable "-Werror=format-security" by default (#1043495)
+
+* Wed Sep 04 2013 Karsten Hopp <karsten@redhat.com> 9.1.0-54
+- update config.sub with ppc64p7 support (from Fedora automake)
+
+* Fri Aug 16 2013 Panu Matilainen <pmatilai@redhat.com> - 9.1.0-53
+- updated config.guess/sub from upstream for little-endian ppc archs
+
+* Mon Jul 29 2013 Petr Pisar <ppisar@redhat.com> - 9.1.0-52
+- Perl 5.18 rebuild
+
+* Thu Jul 25 2013 Tomas Mraz <tmraz@redhat.com> 9.1.0-51
+- Disable the libtool hack as it is breaking builds
+
+* Wed Jul 24 2013 Kevin Fenzi <kevin@scrye.com> 9.1.0-50
+- Make docdirs unversioned on Fedora 20+ (#986871)
+- Hack around libtool issue for hardened build for now (#978949)
+
+* Wed Jul 17 2013 Petr Pisar <ppisar@redhat.com> - 9.1.0-49
+- Perl 5.18 rebuild
+
+* Fri Jul 05 2013 Panu Matilainen <pmatilai@redhat.com> - 9.1.0-48
+- fix brp-java-repack-jars failing on strange permissions (#905573)
+
+* Thu Jul 04 2013 Panu Matilainen <pmatilai@redhat.com> - 9.1.0-47
+- switch from -fstack-protector to -fstack-protector-strong (#978763)
+
+* Thu Jun 27 2013 Panu Matilainen <pmatilai@redhat.com> - - 9.1.0-46
+- make cpu limit for building configurable through _smp_ncpus_max macro
+
+* Tue May 21 2013 T.C. Hollingsworth <tchollingsworth@gmail.com> - 9.1.0-45
+- add nodejs_arches macro for ExclusiveArch for Node.js packages
+
+* Mon May 13 2013 Adam Jackson <ajax@redhat.com> 9.1.0-44
+- redhat-config-*: Use + to append rather than %%rename, to protect against
+  multiple -specs= ending up in the command line. (#892837)
+
+* Tue Apr 23 2013 Panu Matilainen <pmatilai@redhat.com> - 9.1.0-43
+- Add optflags stack protector override for AArch64 (#909788)
+- Also set FCFLAGS from %%configure (#914831)
+
+* Mon Apr 22 2013 Panu Matilainen <pmatilai@redhat.com> - 9.1.0-42
+- Switch back to manual config.guess/sub copies for reproducability
+- Replace config.guess/sub from %%configure again (#951442)
+
+* Mon Apr 22 2013 Panu Matilainen <pmatilai@redhat.com> - 9.1.0-41
+- Add -grecord-gcc-switches to global CFLAGS (#951669)
+
+* Mon Mar 25 2013 Panu Matilainen <pmatilai@redhat.com> - 9.1.0-40
+- Add virtual system-rpm-config provide
+
+* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 9.1.0-39
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
+
+* Sat Nov 17 2012 Jens Petersen <petersen@redhat.com> - 9.1.0-38
+- add ARM to ghc_arches_with_ghci for ghc-7.4.2 ghci support
+  (NB this change should not be backported before ghc-7.4.2)
+
+* Fri Nov  9 2012 Toshio Kuratomi <toshio@fedoraproject.org> - 9.1.0-37
+- Patch to fix spaces in java jar files
+  https://bugzilla.redhat.com/show_bug.cgi?id=872737
+
+* Fri Nov  9 2012 Toshio Kuratomi <toshio@fedoraproject.org> - 9.1.0-36
+- Patch to fix spaces in files used in filtering macros
+  https://bugzilla.redhat.com/show_bug.cgi?id=783932
+
+* Wed Oct  3 2012 Ville Skyttä <ville.skytta@iki.fi> - 9.1.0-35
+- Drop (un)setting LANG and DISPLAY in build stages, require rpm >= 4.8.0.
+
+* Wed Oct  3 2012 Toshio Kuratomi <toshio@fedoraproject.org> - 9.1.0-34
+- Add patch from https://bugzilla.redhat.com/show_bug.cgi?id=783433
+  to fix spaces in files and directories that are fed to the
+  brp-python-hardlink script
+- Require zip since java repack jars requires it
+  https://bugzilla.redhat.com/show_bug.cgi?id=857479
+- Java jars need the MANIFEST.MF file to be first in the archive
+  https://bugzilla.redhat.com/show_bug.cgi?id=465664
+- Fix kernel_source macro to match the directory that kernel sources are installed in
+  https://bugzilla.redhat.com/show_bug.cgi?id=648996
+- Patch _mandir, _infodir, and _defaultocdir to use _prefix
+  https://bugzilla.redhat.com/show_bug.cgi?id=853216
+
+* Sat Jul 21 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 9.1.0-33
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
+
+* Wed Jun 27 2012 Panu Matilainen <pmatilai@redhat.com> - 9.1.0-32
+- enable minidebuginfo generation (#834073)
+
+* Mon Jun 25 2012 Panu Matilainen <pmatilai@redhat.com> - 9.1.0-31
+- revert back to plain -g, -g3 seems to cancel dwz size improvements
+
+* Mon Jun 25 2012 Panu Matilainen <pmatilai@redhat.com> - 9.1.0-30
+- require dwz, enable dwarf compression for debuginfo packages (#833311)
+
+* Wed Jun 06 2012 Petr Pisar <ppisar@redhat.com> - 9.1.0-29
+- Pull in dependency with macros specific for building Perl source packages
+
+* Sat Mar  3 2012 Jens Petersen <petersen@redhat.com> - 9.1.0-28
+- add s390 and s390x to ghc_arches
+
+* Wed Feb 22 2012 Panu Matilainen <pmatilai@redhat.com> - 9.1.0-27
+- add GNAT arch definitions
+
+* Sun Jan 15 2012 Dennis Gilmore <dennis@ausil.us> - 9.1.0-26
+- per ppc team request drop -mminimal-toc on ppc64
+
+* Sat Jan 14 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 9.1.0-25
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
+
+* Tue Dec 27 2011 Jens Petersen <petersen@redhat.com> - 9.1.0-24
+- add ghc_arches_with_ghci
+
+* Wed Nov 09 2011 Dennis Gilmore <dennis@ausil.us> - 9.1.0-23
+- remove patch that forces --disable-silent-rules to configure
+- it breaks anything set to not ignore unknown configure options
+
+* Tue Oct 18 2011 Jens Petersen <petersen@redhat.com> - 9.1.0-22
+- add armv5tel to ghc_arches
+
+* Wed Sep 28 2011 Dennis Gilmore <dennis@ausil.us> - 9.1.0-21
+- build armv5tel on armv7l since they are the same abi armv7hl is
+  an incompatible ABI
+
+* Wed Sep 28 2011 Jens Petersen <petersen@redhat.com> - 9.1.0-20
+- add armv7hl to ghc_arches
+
+* Sun Sep 25 2011 Ville Skyttä <ville.skytta@iki.fi> - 9.1.0-19
+- Fix URL.
+
+* Thu Sep 22 2011 Adam Jackson <ajax@redhat.com> 9.1.0-18
+- redhat-hardened-cc1: Inject -fPIE, not -fPIC.
+  cf. http://lists.fedoraproject.org/pipermail/devel/2011-September/157365.html
+
+* Fri Sep 16 2011 Adam Jackson <ajax@redhat.com> 9.1.0-17
+- Expose %%_hardening_{c,ld}flags independently to make it easier for
+  packages to apply them to selected components
+
+* Wed Aug 10 2011 Colin Walters <walters@verbum.org> - 9.1.0-16
+- Globally disable silent rules
+
+* Wed Aug 03 2011 Adam Jackson <ajax@redhat.com> 9.1.0-15
+- redhat-hardened-{cc1,ld}: Move some of the rewrite magic to gcc specs so
+  we don't end up with both -fPIC and -fPIE on the command line
+
+* Mon Aug 01 2011 Adam Jackson <ajax@redhat.com> 9.1.0-14
+- redhat-rpm-config-9.1.0-hardened.patch: Add macro magic for %%_hardened_build
+
+* Thu Jul 07 2011 Adam Jackson <ajax@redhat.com> 9.1.0-13
+- redhat-rpm-config-9.1.0-relro.patch: LDFLAGS, not CFLAGS.
+
+* Sat Jul 02 2011 Jon Masters <jcm@jonmasters.org> - 9.1.0-12
+- redhat-rpm-config-9.1.0-arm.patch: Make armv7hl default on all v7 ARM
+
+* Mon Jun 27 2011 Adam Jackson <ajax@redhat.com> - 9.1.0-11
+- redhat-rpm-config-9.1.0-relro.patch: Add -Wl,-z,relro to __global_cflags
+
+* Tue Jun 21 2011 Jens Petersen <petersen@redhat.com> - 9.1.0-10
+- revert last build since releng prefers exclusivearch here
+
+* Sat Jun 18 2011 Jens Petersen <petersen@redhat.com> - 9.1.0-9
+- replace ghc_archs with ghc_excluded_archs
+
+* Mon Jun 13 2011 Dennis Gilmore <dennis@ausil.us> - 9.1.0-8
+- add arm hardware float macros, fix up armv7l
+
+* Mon May 30 2011 Dennis Gilmore <dennis@ausil.us> - 9.1.0-7
+- add -srpm to the arches files so that the base language macros can
+  be parallel installable with these
+
+* Fri May 27 2011 Dennis Gilmore <dennis@ausil.us> - 9.1.0-6
+- add some specific macros needed at srpm creation time
+
+* Thu May 27 2010 Panu Matilainen <pmatilai@redhat.com> - 9.1.0-5
+- adjust to new pkg-config behavior wrt private dependencies (#596433)
+
+* Mon Mar 01 2010 Panu Matilainen <pmatilai@redhat.com> - 9.1.0-4
+- avoid unnecessarily running brp-strip-comment-note (#568924)
+
+* Mon Feb 15 2010 Panu Matilainen <pmatilai@redhat.com> - 9.1.0-3
+- unbreak find-requires again, doh (#564527)
+
+* Wed Feb 3 2010 Panu Matilainen <pmatilai@redhat.com> - 9.1.0-2
+- python byte-compilation errors abort the build by default
+
+* Tue Feb 2 2010 Panu Matilainen <pmatilai@redhat.com> - 9.1.0-1
+- new version, lose merged patches (fixes #521141, #455279, #496522, #458648)
+- require rpm for parent dir, version >= 4.6.0 for sane keyserver behavior
+- buildrequire libtool to grab copies of config.guess and config.sub
+- add URL to the git repo and upstream changelog as documentation
+
+* Mon Nov 23 2009 Orion Poplawski <orion@cora.nwra.com> - 9.0.3-19
+- Change configure macro to use _configure to allow override (bug #489942)
+
+* Mon Sep 28 2009 Bill Nottingham <notting@redhat.com>
+- Drop xz compression level to 2
+
+* Thu Sep 03 2009 Adam Jackson <ajax@redhat.com>
+- Delete *.orig in %%install
+
+* Thu Sep 03 2009 Paul Howarth <paul@city-fan.org> 9.0.3-17
+- redhat-rpm-config-9.0.3-filtering-macros.patch: Rediff so we don't ship a .orig file
+- add (empty) %%build section
+- fix unescaped macros in changelog
+
+* Tue Aug 18 2009 Chris Weyl <cweyl@alumni.drew.edu> 9.0.3-16
+- add the filtering framework approved by the FPC/FESCo. (#516240)
+
+* Thu Aug 13 2009 Adam Jackson <ajax@redhat.com> 9.0.3-15
+- redhat-rpm-config-9.0.4-brpssa-speedup.patch: When looking for static
+  archives, only run file(1) on files named *.a. (#517101)
+
+* Wed Aug 12 2009 Adam Jackson <ajax@redhat.com> 9.0.3-14
+- redhat-rpm-config-9.0.3-jars-with-spaces.patch: Handle repacking jars
+  whose filenames contain spaces. (#461854)
+
+* Sun Jul 26 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 9.0.3-13
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
+
+* Wed Jul 22 2009 Bill Nottingham <notting@redhat.com> 9.0.3-12
+- use XZ payload compression for binary packages
+
+* Tue Jul 21 2009 Tom "spot" Callaway <tcallawa@redhat.com> - 9.0.3-10
+- always delete %%buildroot as first step of %%install (as long as %%buildroot is not /)
+
+* Fri Jul 17 2009 Bill Nottingham <notting@redhat.com> 9.0.3-10
+- apply fedora 12 default buildflags
+
+* Wed Jun 03 2009 Adam Jackson <ajax@redhat.com> 9.0.3-9
+- limit-smp-16-threads.patch: Rediff so we don't ship a .orig file (#500316)
+
+* Wed Feb 25 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 9.0.3-8
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
+
+* Mon Feb 23 2009 Jon Masters <jcm@redhat.com> - 9.0.3-7
+- Change default hashing algorithm in file digests to SHA-256
+- Resolves: #485826.
+
+* Tue Feb 17 2009 Dennis Gilmore <dennis@ausil.us> - 9.0.3-6
+- add missing armv7l arch
+- set the default build arch to match fedora arm build target
+
+* Mon Feb 16 2009 Dennis Gilmore <dennis@ausil.us> - 9.0.3-5
+- apply fedora 11 default buildflags
+- set 32 bit intel build arch to i586 on compatible hardware
+- set 32 bit sparc build arch to sparcv9 on compatible hardware
+
+* Mon Feb 16 2009 Dennis Gilmore <dennis@ausil.us> - 9.0.3-4
+- limit _smp_flags to -j16
+
+* Wed Sep  3 2008 Tom "spot" Callaway <tcallawa@redhat.com> - 9.0.3-3
+- fix license tag
+- nuke ancient conflicts
+
+* Mon Aug 11 2008 Panu Matilainen <pmatilai@redhat.com> - 9.0.3-2
+- Unbreak find-requires (#443015)
+
+* Tue May 06 2008 Jon Masters <jcm@redhat.com> - 9.0.3-1
+- Ensure Java Jar files have readable files within.
+- Remove overwritten config.guess|sub files (testing).
+- Fix Fortran flags for building using _fmoddir.
+- Pull in objdump fix to upstream find-requires.
+
+* Thu Apr 03 2008 Jon Masters <jcm@redhat.com> - 9.0.2-1
+- Remove smp dependencies
+- Update config.guess|sub files
+- Don't call find-requires.ksyms for kmod packages (kernel kABI scripts).
+
+* Thu Jul 05 2007 Jesse Keating <jkeating@redhat.com> - 9.0.1-1
+- Remove dist defines, fedora-release does that now
+- Enable post-build buildroot checking by default
+
+* Tue Jun 19 2007 Jeremy Katz <katzj@redhat.com> - 9.0.0-1
+- use stock find-lang.sh (#213041)
+- arm fixes (Lennert Buytenhek, #243523)
+- allow jar repacking to be disabled (#219731)
+- fix running dist.sh --fc (#223651)
+- hardlink identical .pyc and .pyo files to save space (Ville Skyttä)
+- fix TMPDIR usage (Matthew Miller, #235614)
+
+* Tue Jun 19 2007 Jeremy Katz <katzj@redhat.com> - 8.1.0-1
+- add modalias tags to kmod packages and other kmod changes (jcm)
+- recompress jars to avoid multilib conflicts (bkonrath)
+
+* Fri May 18 2007 Jesse Keating <jkeating@redhat.com> 8.0.45-16
+- Update macros for F8
+- hardcode dist in release string, as we provide it.  chicken/egg.
+
+* Wed Apr 11 2007 Jon Masters <jcm@redhat.com> 8.0.45-15
+- Add modalias tags to kernel module packages (kmods) for tracking.
+- Further information is available at http://www.kerneldrivers.org/.
+
+* Tue Apr 03 2007 Jon Masters <jcm@redhat.com> 8.0.45-14
+- Rebased all previous patches (since java fix introduced offset).
+- Added Fedora per-release macros to platforms section of macros.
+  Further debate may see these move elsewhere in the ordering.
+
+* Tue Mar 13 2007 Ben Konrath <bkonrath@redhat.com> 8.0.45-13
+- Update brp-java-repack-jars to fix issue with tomcat.
+
+* Wed Oct 18 2006 Jon Masters <jcm@redhat.com> 8.0.45-12
+- Synced kernel_module_package semantics with SuSE.
+- Updated kmodtool.
+
+* Tue Oct 17 2006 Jon Masters <jcm@redhat.com> 8.0.45-10
+- Updated kernel_module_package.
+
+* Mon Oct 16 2006 Jon Masters <jcm@redhat.com> 8.0.45-9
+- Added kernel_module_package macro. Working on unified packaging.
+
+* Thu Oct 12 2006 Jon Masters <jcm@redhat.com> 8.0.45-8
+- Added patch for find-requires. Waiting on write access to public CVS.
+
+* Tue Sep 12 2006 Deepak Bhole <dbhole@redhat.com> 8.0.45-6
+- Fix brp-java-repack-jars to work with builddirs that aren't %%name-%%version
+
+* Mon Sep 11 2006 Fernando Nasser <fnasser@redhat.com> - 8.0.45-5
+- Fix order of tokens in find command (thanks mikeb@redhat.com)
+
+* Thu Sep  7 2006 Ben Konrath <bkonrath@redhat.com> - 8.0.45-4
+- Fix bug in repack jars script.
+
+* Wed Sep  6 2006 Jeremy Katz <katzj@redhat.com> - 8.0.45-3
+- path fix
+
+* Tue Sep  5 2006 Jeremy Katz <katzj@redhat.com> - 8.0.45-2
+- Add script from Ben Konrath <bkonrath@redhat.com> to repack jars to
+  avoid multilib conflicts
+
+* Sun Jul 30 2006 Jon Masters <jcm@redhat.com> - 8.0.45-1
+- Fix inverted kernel test.
+
+* Sun Jul 30 2006 Jon Masters <jcm@redhat.com> - 8.0.44-1
+- Add a better check for a kernel vs. kmod.
+
+* Thu Jun 15 2006 Jon Masters <jcm@redhat.com> - 8.0.43-1
+- Workaround bug in find-requires/find-provides for kmods.
+
+* Thu Jun 15 2006 Jon Masters <jcm@redhat.com> - 8.0.42-1
+- Fix a typo in KMP find-requires.
+
+* Tue Jun 13 2006 Jon Masters <jcm@redhat.com> - 8.0.41-1
+- Add support for KMP Fedora Extras packaging.
+
+* Fri Feb  3 2006 Jeremy Katz <katzj@redhat.com> - 8.0.40-1
+- use -mtune=generic for x86 and x86_64
+
+* Tue Aug 16 2005 Elliot Lee <sopwith@redhat.com> - 8.0.39-1
+- Fix #165416
+
+* Mon Aug 01 2005 Elliot Lee <sopwith@redhat.com> - 8.0.38-1
+- Add -Wall into cflags
+
+* Mon Aug 01 2005 Elliot Lee <sopwith@redhat.com> - 8.0.37-1
+- Patch from Uli: enable stack protector, fix sparc & ppc cflags
+
+* Thu Jun 16 2005 Elliot Lee <sopwith@redhat.com> - 8.0.36-1
+- Fix the fix
+
+* Wed Apr  6 2005 Elliot Lee <sopwith@redhat.com> - 8.0.35-1
+- Fix #129025 (enable python byte compilation)
+
+* Wed Mar 23 2005 Elliot Lee <sopwith@redhat.com> 8.0.34-1
+- Bug fixes
+- Cflags change by drepper
+
+* Wed Feb 9 2005 Elliot Lee <sopwith@redhat.com> 8.0.33-1
+- Change -D to -Wp,-D to make java happy
+- Add -D_FORTIFY_SOURCE=2 to global cflags (as per Jakub & Arjan's request)
+
+* Fri Oct  1 2004 Bill Nottingham <notting@redhat.com> 8.0.32-1
+- allow all symbol versioning in find_requires - matches RPM internal
+  behavior
+
+* Mon Jun 28 2004 Elliot Lee <sopwith@redhat.com> 8.0.31-1
+- Add ppc8[25]60 to rpmrc optflags
+
+* Fri Jun 25 2004 Elliot Lee <sopwith@redhat.com> 8.0.29-1
+- rpmrc patch from jakub to change optflags.
+
+* Wed Sep 17 2003 Elliot Lee <sopwith@redhat.com> 8.0.28-1
+- Change brp-compress to pass -n flag to gzip (per msw's request)
+
+* Tue Jul 15 2003 Elliot Lee <sopwith@redhat.com> 8.0.27-1
+- Fix broken configure macro find for config.guess/config.sub
+- Put host/target/build back for now
+
+* Mon Jul  7 2003 Jens Petersen <petersen@redhat.com> - 8.0.26-1
+- preserve the vendor field when VENDOR not set
+- put VENDOR in the final i386-libc line, not the tentative one
+
+* Mon Jul  7 2003 Jens Petersen <petersen@redhat.com> - 8.0.25-1
+- update config.{guess,sub} to 2003-06-17
+- define VENDOR to be redhat only when /etc/redhat-release present
+  [suggested by jbj]
+- put VENDOR in vendor field in our config.guess file for
+  ia64, ppc, ppc64, s390, s390x, x86_64 and elf32-i386 Linux
+- drop the --host, --build, --target and --program-prefix configure options
+  from %%configure, since this causes far too many problems
+
+* Fri May  2 2003 Jens Petersen <petersen@redhat.com> - 8.0.24-3
+- make config.{guess,sub} executable
+
+* Thu May  1 2003 Jens Petersen <petersen@redhat.com> - 8.0.22-2
+- add config.guess and config.sub (2003-02-22) with s390 patch on config.sub
+- make %%configure use them
+
+* Mon Mar 03 2003 Elliot Lee <sopwith@redhat.com>
+- Unset $DISPLAY in macros
+
+* Mon Feb 24 2003 Elliot Lee <sopwith@redhat.com> 8.0.21-1
+- Just turn on -g unconditionally for now
+
+* Thu Feb 13 2003 Elliot Lee <sopwith@redhat.com> 8.0.20-1
+- Reorganize rpmrc/macros to set cflags in a nicer manner.
+
+* Wed Jan 22 2003 Elliot Lee <sopwith@redhat.com> 8.0.19-1
+- Disable brp-implant-ident-static until it works everywhere
+
+* Thu Jan 16 2003 Nalin Dahyabhai <nalin@redhat.com> 8.0.18-1
+- add brp-implant-ident-static, which requires mktemp
+
+* Thu Jan  9 2003 Bill Nottingham <notting@redhat.com> 8.0.17-1
+- add brp-strip-static-archive from rpm-4.2-0.54
+
+* Tue Dec 17 2002 Bill Nottingham <notting@redhat.com> 8.0.16-1
+- make -g in rpmrc conditional on debug_package
+
+* Mon Dec 16 2002 Elliot Lee <sopwith@redhat.com> 8.0.15-1
+- Rename -debug subpackages to -debuginfo
+
+* Sat Dec 14 2002 Tim Powers <timp@redhat.com> 8.0.14-1
+- tweak debug package stuff so that we are overloading %%install
+  instead of %%post
+
+* Sat Dec 14 2002 Tim Powers <timp@redhat.com> 8.0.13-1
+- turn on internal rpm dep generation by default
+
+* Fri Dec 13 2002 Elliot Lee <sopwith@redhat.com> 8.0.12-1
+- New release with debug packages on
+
+* Tue Dec  3 2002 Bill Nottingham <notting@redhat.com> 8.0.8-1
+- turn debug packages off
+- override optflags with no -g
+
+* Fri Nov 22 2002 Elliot Lee <sopwith@redhat.com> 8.0.7-1
+- turn on debug packages
+
+* Thu Nov 21 2002 Elliot Lee <sopwith@redhat.com> 8.0.6-1
+- Pass __strip and __objdump macros
+
+* Thu Nov 21 2002 Elliot Lee <sopwith@redhat.com> 8.0.5-1
+- Update macros to specify find-provides/find-requires
+
+* Thu Oct 31 2002 Elliot Lee <sopwith@redhat.com> 8.0.4-1
+- Remove tracking dependency
+
+* Wed Oct 16 2002 Phil Knirsch <pknirsch@redhat.com> 8.0.3-2
+- Added fix for outdated config.[sub|guess] files in %%configure section
+
+* Wed Oct 16 2002 Elliot Lee <sopwith@redhat.com> 8.0.3-1
+- New release that blows up on unpackaged files and missing doc files.
+
+* Thu Oct  3 2002 Jeremy Katz <katzj@redhat.com> 8.0.2
+- don't redefine everything in macros, just what we need to
+
+* Mon Sep 16 2002 Alexander Larsson <alexl@redhat.com> 8.0.1
+- Add debug package support to %%__spec_install_post
+
+* Tue Sep  3 2002 Bill Nottingham <notting@redhat.com> 8.0-1
+- bump version
+
+* Wed Aug 28 2002 Elliot Lee <sopwith@redhat.com> 7.3.94-1
+- Update macrofiles
+
+* Wed Jul 31 2002 Elliot Lee <sopwith@redhat.com> 7.3.93-1
+- Add _unpackaged_files_terminate_build and
+_missing_doc_files_terminate_build to macros
+
+* Thu Jul 11 2002 Elliot Lee <sopwith@redhat.com> 7.3.92-6
+- find-lang.sh fix from 67368
+- find-requires fix from 67325
+
+* Thu Jul 11 2002 Elliot Lee <sopwith@redhat.com> 7.3.92-5
+- Add /etc/rpm/macros back to make #67951 go away
+
+* Wed Jun 26 2002 Jens Petersen <petersen@redhat.com> 7.3.92-4
+- fix %%configure targeting for autoconf-2.5x (#58468)
+- include ~/.rpmmacros in macrofiles file path again
+
+* Fri Jun 21 2002 Tim Powers <timp@redhat.com> 7.3.92-3
+- automated rebuild
+
+* Fri Jun 21 2002 Elliot Lee <sopwith@redhat.com> 7.3.92-2
+- Don't define _arch
+
+* Thu Jun 20 2002 Elliot Lee <sopwith@redhat.com> 7.3.92-1
+- find-lang error detection from Havoc
+
+* Wed Jun 12 2002 Elliot Lee <sopwith@redhat.com> 7.3.91-1
+- Update
+
+* Sun Jun  9 2002 Jeff Johnson <jbj@redhat.com>
+- create.