]> git.ipfire.org Git - thirdparty/ccache.git/commitdiff
Switch to CMake (#573)
authorAlexander Lanin <alex@lanin.de>
Sun, 14 Jun 2020 07:59:00 +0000 (09:59 +0200)
committerGitHub <noreply@github.com>
Sun, 14 Jun 2020 07:59:00 +0000 (09:59 +0200)
Co-authored-by: Cristian Adam <cristian.adam@gmail.com>
Co-authored-by: Joel Rosdahl <joel@rosdahl.net>
54 files changed:
.cmake-format [new file with mode: 0644]
.gitignore
.travis.sh [deleted file]
.travis.yml
CMakeLists.txt [new file with mode: 0644]
Makefile.in [deleted file]
autogen.sh [deleted file]
buildenv/debian-10-buster/Dockerfile
buildenv/debian-9-stretch/Dockerfile
buildenv/ubuntu-14-trusty/Dockerfile [new file with mode: 0644]
buildenv/ubuntu-16-xenial/Dockerfile
buildenv/ubuntu-20-focal/Dockerfile [new file with mode: 0644]
ci/build.sh [new file with mode: 0755]
ci/build_and_verify_package.sh [new file with mode: 0755]
ci/build_and_verify_package_source.sh [new file with mode: 0755]
cmake/CCachePackConfig.cmake [new file with mode: 0644]
cmake/CodeAnalysis.cmake [new file with mode: 0644]
cmake/DefaultBuildType.cmake [new file with mode: 0644]
cmake/Findlibb2.cmake [new file with mode: 0644]
cmake/Findzstd.cmake [new file with mode: 0644]
cmake/GenerateConfigurationFile.cmake [new file with mode: 0644]
cmake/GenerateVersionFile.cmake [new file with mode: 0644]
cmake/StandardSettings.cmake [new file with mode: 0644]
cmake/StandardWarnings.cmake [new file with mode: 0644]
cmake/Version.cpp.in [new file with mode: 0644]
cmake/config.h.in [new file with mode: 0644]
config.guess [deleted file]
config.sub [deleted file]
configure.ac [deleted file]
dev.mk.in [deleted file]
doc/CMakeLists.txt [new file with mode: 0644]
doc/DEVELOPER.md
doc/INSTALL-from-release-archive.md [deleted file]
doc/INSTALL.md
doc/NEWS.adoc
docker.sh [new file with mode: 0755]
install-sh [deleted file]
m4/ax_check_compile_flag.m4 [deleted file]
m4/ax_cxx_compile_stdcxx.m4 [deleted file]
m4/ax_pthread.m4 [deleted file]
m4/clang.m4 [deleted file]
m4/feature_macros.m4 [deleted file]
misc/build.sh [deleted file]
misc/check_format.sh
misc/format.sh
misc/freebsd/README [deleted file]
misc/freebsd/Vagrantfile [deleted file]
src/CMakeLists.txt [new file with mode: 0644]
src/Util.cpp
src/third_party/CMakeLists.txt [new file with mode: 0644]
test-all-systems.sh [new file with mode: 0755]
test/CMakeLists.txt [new file with mode: 0644]
test/run
unittest/CMakeLists.txt [new file with mode: 0644]

diff --git a/.cmake-format b/.cmake-format
new file mode 100644 (file)
index 0000000..e0ce1c8
--- /dev/null
@@ -0,0 +1,21 @@
+# This is for cmake-format.
+# See https://github.com/cheshirekow/cmake_format
+# for GUI integration and more details.
+
+# Installation: pip3 install cmake-format
+
+# cmake-format
+# Execution: cmake-format CMakeLists.txt cmake/*.cmake src/CMakeLists.txt unittest/CMakeLists.txt -i
+bullet_char: '*'
+dangle_parens: false
+enum_char: .
+line_ending: unix
+line_width: 80
+separate_ctrl_name_with_space: false
+separate_fn_name_with_space: false
+tab_size: 2
+max_subgroups_hwrap: 3 # default is 2 which prevents trivial set(key value PARENT_SCOPE)
+
+# cmake-lint
+# Execution: cmake-lint CMakeLists.txt cmake/*.cmake src/CMakeLists.txt unittest/CMakeLists.txt
+max_statement_spacing: 2
index e2cc6e565b14bcad6ed0ce8b8990a40345718c6b..9b7a5a31c54294889bfaf7f995c3b13b943e309f 100644 (file)
@@ -7,36 +7,18 @@
 *~
 .DS_Store
 .deps
-Makefile
-autom4te.cache
-ccache
 ccache-*.tar.*
-compile_commands.json
-config.cache
-config.h
-config.h.in
-config.log
-config.status
-configure
-dev.mk
-dev_mode_disabled
-doc/ccache.1
-libb2-*.tar.gz
 perfdir.*
-src/third_party/libb2
-src/third_party/zstd
-src/version.cpp
 testdir.*
-unittest/run
-zstd-*.tar.gz
 
 # Version is generated into src, because it should be included into src packages
 /src/Version.cpp
 
 # Typical build directories
-/build/
-/build-*
-/build_*
+/build*
+
+# Unignore buildenv directory matched by the pattern above
+!/buildenv/
 
 # Visual Studio
 /.vs/
diff --git a/.travis.sh b/.travis.sh
deleted file mode 100755 (executable)
index 8bed7e9..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh -ex
-
-make clean
-make travis CC=gcc CXX=g++
-make travis CC=clang CXX=clang++
-make travis CC=gcc CFLAGS="-m32 -g -O2" CXX=g++ CXXFLAGS="-m32 -g -O2" LDFLAGS="-m32" CONFIGURE="--host=i386-linux-gnu --with-libzstd-from-internet --with-libb2-from-internet"
-make travis CC=i686-w64-mingw32-gcc-posix CXX=i686-w64-mingw32-g++-posix CONFIGURE="--host=i686-w64-mingw32 --with-libzstd-from-internet --with-libb2-from-internet" TEST="unittest/run.exe"
-make travis CC=clang CXX=clang++ CFLAGS="-fsanitize=undefined" LDFLAGS="-fsanitize=undefined" ASAN_OPTIONS="detect_leaks=0"
-make travis CC=clang CXX=clang++ CFLAGS="-fsanitize=address -g" LDFLAGS="-fsanitize=address" ASAN_OPTIONS="detect_leaks=0"
-make travis CC=/usr/bin/clang CXX=/usr/bin/clang++ TEST=analyze
-make travis CC=/usr/bin/clang CXX=/usr/bin/clang++ TEST=tidy
-make travis CC=/usr/bin/clang CXX=/usr/bin/clang++ TEST=check_format
index af0cbb24fe437c3457d4f79b1a7ac3ffb3355982..f7119d60a2bc3c02c1ece2a5c281116db607ed0f 100644 (file)
@@ -1,20 +1,15 @@
 language: cpp
 dist: bionic
 
-script:
-  - ./autogen.sh
-  - test -z $BUILD_DIR || { mkdir -p $BUILD_DIR; cd $BUILD_DIR; }
-  - ${SRC_DIR:-.}/configure $CONFIGURE
-  - test "$NO_COMPILE" || make
-  - make ${TEST:-test}
-
-matrix:
+script: ci/build.sh
+
+jobs:
   include:
 
-  # Job 1: Build (in separate build directory) on Linux with native GCC
+  # Job 1: Build (in source directory) on Linux with native GCC
   - os: linux
     compiler: gcc
-    env: T="Linux GCC, separate build directory" V=1 ENABLE_CACHE_CLEANUP_TESTS=1 BUILD_DIR=build SRC_DIR=..
+    env: T="Linux GCC" VERBOSE=1 ENABLE_CACHE_CLEANUP_TESTS=1 BUILDDIR=. CCACHE_LOC=.
     addons:
       apt:
         packages:
@@ -25,7 +20,7 @@ matrix:
   # Job 2: Build on Linux with native 32-bit GCC
   - os: linux
     compiler: gcc
-    env: T="Linux GCC 32-bit" V=1 CFLAGS="-m32 -g -O2" CXXFLAGS="-m32 -g -O2" LDFLAGS="-m32" CONFIGURE="--host=i386-linux-gnu --with-libzstd-from-internet --with-libb2-from-internet" ENABLE_CACHE_CLEANUP_TESTS=1
+    env: T="Linux GCC 32-bit" VERBOSE=1 CFLAGS="-m32 -g -O2" CXXFLAGS="-m32 -g -O2" LDFLAGS="-m32" CMAKE_PARAMS="-DUSE_LIBZSTD_FROM_INTERNET=ON -DUSE_LIBB2_FROM_INTERNET=ON" ENABLE_CACHE_CLEANUP_TESTS=1
     addons:
       apt:
         packages:
@@ -36,7 +31,7 @@ matrix:
   # Job 3: Build on Linux with native Clang
   - os: linux
     compiler: clang
-    env: T="Linux Clang" V=1 ENABLE_CACHE_CLEANUP_TESTS=1
+    env: T="Linux Clang" VERBOSE=1 ENABLE_CACHE_CLEANUP_TESTS=1
     addons:
       apt:
         packages:
@@ -47,8 +42,7 @@ matrix:
   # Job 4: Build on Linux with native GCC and CUDA compiler
   - os: linux
     compiler: gcc
-    env: T="Linux GCC CUDA" V=1 CUDA=10.1.243-1 ENABLE_CACHE_CLEANUP_TESTS=1
-    sudo: required
+    env: T="Linux GCC CUDA" VERBOSE=1 CUDA=10.1.243-1 ENABLE_CACHE_CLEANUP_TESTS=1
     addons:
       apt:
         packages:
@@ -61,7 +55,7 @@ matrix:
   # Job 5: Build on Linux with 32-bit MinGW cross-compiler
   - os: linux
     compiler: i686-w64-mingw32-g++-posix
-    env: T="Linux MinGW 32-bit" V=1 CC=i686-w64-mingw32-gcc-posix CXX=i686-w64-mingw32-g++-posix CONFIGURE="--host=i686-w64-mingw32 --with-libzstd-from-internet --with-libb2-from-internet" TEST="unittest/run.exe" ENABLE_CACHE_CLEANUP_TESTS=1
+    env: T="Linux MinGW 32-bit" VERBOSE=1 CC=i686-w64-mingw32-gcc-posix CXX=i686-w64-mingw32-g++-posix CMAKE_PARAMS="-DCMAKE_SYSTEM_NAME=Windows -DUSE_LIBZSTD_FROM_INTERNET=ON -DUSE_LIBB2_FROM_INTERNET=ON" RUN_TESTS=0 ENABLE_CACHE_CLEANUP_TESTS=1
     addons:
       apt:
         packages:
@@ -70,7 +64,7 @@ matrix:
   # Job 6: Build on Linux with 64-bit MinGW cross-compiler
   - os: linux
     compiler: x86_64-w64-mingw32-g++
-    env: T="Linux MinGW 64-bit" V=1 CC=x86_64-w64-mingw32-gcc-posix CXX=x86_64-w64-mingw32-g++-posix CONFIGURE="--host=x86_64-w64-mingw32 --with-libzstd-from-internet --with-libb2-from-internet" TEST="unittest/run.exe" ENABLE_CACHE_CLEANUP_TESTS=1
+    env: T="Linux MinGW 64-bit" VERBOSE=1 CC=x86_64-w64-mingw32-gcc-posix CXX=x86_64-w64-mingw32-g++-posix CMAKE_PARAMS="-DCMAKE_SYSTEM_NAME=Windows -DUSE_LIBZSTD_FROM_INTERNET=ON -DUSE_LIBB2_FROM_INTERNET=ON" RUN_TESTS=0 ENABLE_CACHE_CLEANUP_TESTS=1
     addons:
       apt:
         packages:
@@ -79,12 +73,12 @@ matrix:
   # Job 7: Build on MacOS with native Clang
   - os: osx
     compiler: clang
-    env: T="MacOS Clang" V=1 CONFIGURE="--with-libzstd-from-internet --with-libb2-from-internet" ENABLE_CACHE_CLEANUP_TESTS=1
+    env: T="MacOS Clang" VERBOSE=1 CMAKE_PARAMS="-DUSE_LIBZSTD_FROM_INTERNET=ON -DUSE_LIBB2_FROM_INTERNET=ON" ENABLE_CACHE_CLEANUP_TESTS=1
 
   # Job 8: Run Clang's undefined behavior sanitizer
   - os: linux
     compiler: clang
-    env: T="Clang UB sanitizer" V=1 CFLAGS="-fsanitize=undefined" CXXFLAGS="-fsanitize=undefined" LDFLAGS="-fsanitize=undefined" ASAN_OPTIONS="detect_leaks=0"
+    env: T="Clang UB sanitizer" VERBOSE=1 CMAKE_PARAMS="-DENABLE_SANITIZER_UNDEFINED_BEHAVIOR=ON" ASAN_OPTIONS="detect_leaks=0"
     addons:
       apt:
         packages:
@@ -95,7 +89,7 @@ matrix:
   # Job 9: Run Clang's address sanitizer
   - os: linux
     compiler: clang
-    env: T="Clang address sanitizer" V=1 CFLAGS="-fsanitize=address -g" CXXFLAGS="-fsanitize=address -g" LDFLAGS="-fsanitize=address" ASAN_OPTIONS="detect_leaks=0"
+    env: T="Clang address sanitizer" VERBOSE=1 CMAKE_PARAMS="-DENABLE_SANITIZER_ADDRESS=ON" ASAN_OPTIONS="detect_leaks=0"
     addons:
       apt:
         packages:
@@ -106,7 +100,7 @@ matrix:
   # Job 10: Run Clang's static analyzer
   - os: linux
     compiler: clang
-    env: T="Clang static analyzer" V=1 PATH="/usr/bin:$PATH" SCAN_BUILD=scan-build-7 TEST=analyze
+    env: T="Clang static analyzer" VERBOSE=1 PATH="/usr/bin:$PATH" CMAKE_PREFIX=scan-build RUN_TESTS=0
     addons:
       apt:
         packages:
@@ -115,19 +109,29 @@ matrix:
 
   # Job 11: Run Clang-Tidy
   - os: linux
-    env: T="Clang-Tidy" TEST=tidy V=1 PATH="/usr/bin:$PATH" NO_COMPILE=1
+    compiler: clang
+    env: T="Clang-Tidy" VERBOSE=1 CMAKE_PARAMS="-DENABLE_CLANG_TIDY=ON" RUN_TESTS=0
+    addons:
+      apt:
+        packages:
+        - libzstd1-dev
+        - libb2-dev
+
+  # Job 12: Run Clang-Format amd CMake-Format check mode
+  - os: linux
+    compiler: clang
+    env: T="Clang-Format" VERBOSE=1 BUILDEXTRAFLAGS="--target check_format" RUN_TESTS=0
     addons:
       apt:
         packages:
-        - elfutils
         - libzstd1-dev
         - libb2-dev
     before_install:
-    - pip install --user compiledb
+    - pip install --user cmake_format
 
-  # Job 12: Run Clang-Format
+  # Job 13: Build binary package, extract it out of source, run tests.
   - os: linux
-    env: T="Clang-Format" V=1 PATH="/usr/bin:$PATH" NO_COMPILE=1 TEST=check_format
+    env: T="Build binary and verify" VERBOSE=1 SPECIAL=build_and_verify_package
     addons:
       apt:
         packages:
@@ -135,27 +139,60 @@ matrix:
         - libzstd1-dev
         - libb2-dev
 
-  # New jobs go here until they are established for some weeks
-  allow_failures:
+  # Job 14: Build source package, extract it out of source, run tests.
+  - os: linux
+    env: T="Build source package and verify" VERBOSE=1 SPECIAL=build_and_verify_package_source
+    addons:
+      apt:
+        packages:
+        - elfutils
+        - libzstd1-dev
+        - libb2-dev
 
-  # Job 11: Clang-Tidy
+  # Job 15: Build documentation
   - os: linux
-    env: T="Clang-Tidy" V=1 PATH="/usr/bin:$PATH" NO_COMPILE=1 TEST=tidy
+    env: T="Build documentation" VERBOSE=1 BUILDEXTRAFLAGS="--target documentation" RUN_TESTS=0
     addons:
       apt:
         packages:
         - elfutils
         - libzstd1-dev
         - libb2-dev
-    before_install:
-    - pip install --user compiledb
+        - asciidoc
 
-  # Job 12: Clang-Format
+  # Job 16: Build manpage
   - os: linux
-    env: T="Clang-Format" V=1 PATH="/usr/bin:$PATH" NO_COMPILE=1 TEST=check_format
+    env: T="Build manpage" VERBOSE=1 BUILDEXTRAFLAGS="--target manpage" RUN_TESTS=0
     addons:
       apt:
         packages:
         - elfutils
         - libzstd1-dev
         - libb2-dev
+        - asciidoc
+        - xsltproc
+
+  # New jobs go here until they are established for some weeks
+  allow_failures:
+
+  # Job 11: Run Clang-Tidy
+  - os: linux
+    compiler: clang
+    env: T="Clang-Tidy" VERBOSE=1 CMAKE_PARAMS="-DENABLE_CLANG_TIDY=ON" RUN_TESTS=0
+    addons:
+      apt:
+        packages:
+        - libzstd1-dev
+        - libb2-dev
+
+  # Job 12: Run Clang-Format amd CMake-Format check mode
+  - os: linux
+    compiler: clang
+    env: T="Clang-Format" VERBOSE=1 BUILDEXTRAFLAGS="--target check_format" RUN_TESTS=0
+    addons:
+      apt:
+        packages:
+        - libzstd1-dev
+        - libb2-dev
+    before_install:
+    - pip install --user cmake_format
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644 (file)
index 0000000..c124fd4
--- /dev/null
@@ -0,0 +1,141 @@
+# Building upon same version as llvm. Let's assume they did their homework and
+# it's a good version. Compare:
+# ~~~
+# https://repology.org/badge/vertical-allrepos/cmake.svg?minversion=3.4.3
+# ~~~
+cmake_minimum_required(VERSION 3.4.3)
+
+project(ccache LANGUAGES C CXX)
+set(CMAKE_PROJECT_DESCRIPTION "a fast C/C++ compiler cache")
+
+set(CMAKE_CXX_STANDARD 11)
+set(CMAKE_CXX_STANDARD_REQUIRED YES)
+set(CMAKE_CXX_EXTENSIONS NO)
+
+set(CMAKE_C_STANDARD 99)
+set(CMAKE_C_STANDARD_REQUIRED YES)
+set(CMAKE_C_EXTENSIONS NO)
+
+# Always export compile_commands.json as it's useful for so many tools.
+set(CMAKE_EXPORT_COMPILE_COMMANDS TRUE)
+
+list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
+
+#
+# Settings
+#
+include(StandardSettings)
+include(StandardWarnings)
+include(DefaultBuildType)
+
+#
+# Configuration
+#
+include(GenerateConfigurationFile)
+include(GenerateVersionFile)
+
+#
+# 3rd party
+#
+option(USE_LIBZSTD_FROM_INTERNET "Download and use libzstd from the Internet"
+       OFF)
+find_package(zstd 1.1.2 REQUIRED)
+
+option(USE_LIBB2_FROM_INTERNET "Download and use libb2 from the Internet" OFF)
+find_package(libb2 0.98 REQUIRED)
+
+#
+# special flags
+#
+# Note: cppcheck will scan everything after this point. Zstd and libb2 are above
+# so they don't get scanned.
+#
+include(CodeAnalysis)
+option(ENABLE_TRACING "Enable possibility to use internal ccache tracing" OFF)
+
+#
+# ccache_lib
+#
+add_subdirectory(src)
+
+#
+# ccache
+#
+add_executable(ccache src/main.cpp)
+target_link_libraries(ccache PRIVATE standard_settings standard_warnings
+                                     ccache_lib)
+
+add_subdirectory(doc)
+
+#
+# installation
+#
+include(GNUInstallDirs)
+install(TARGETS ccache DESTINATION ${CMAKE_INSTALL_BINDIR})
+
+# before adding documentation to package run misc/update_authors.sh
+#
+# install(TARGETS documentation DESTINATION ${CMAKE_INSTALL_DOCDIR})
+
+#
+# packaging
+#
+include(CCachePackConfig)
+
+#
+# test and unittest
+#
+option(ENABLE_TESTING "Enable Tests" ON)
+if(ENABLE_TESTING)
+  enable_testing()
+  add_subdirectory(unittest)
+  add_subdirectory(test)
+
+  # Note: VERSION_GREATER_EQUAL requires cmake 3.17
+  if(NOT ${CMAKE_VERSION} VERSION_LESS "3.17")
+    list(APPEND CMAKE_CTEST_ARGUMENTS "--output-on-failure")
+  endif()
+
+  # Add 'check' target which will compile & run tests
+  if(CMAKE_CONFIGURATION_TYPES)
+    add_custom_target(
+      check
+      COMMAND ${CMAKE_CTEST_COMMAND} --force-new-ctest-process
+              --output-on-failure --build-config "$<CONFIGURATION>"
+      WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+      DEPENDS ccache unittest)
+  else()
+    add_custom_target(
+      check
+      COMMAND ${CMAKE_CTEST_COMMAND} --force-new-ctest-process
+              --output-on-failure
+      WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+      DEPENDS ccache unittest)
+  endif()
+endif()
+
+#
+# Special formatting targets. You can also run the scripts without cmake/make!
+#
+
+find_program(CLANG_FORMAT_EXE NAMES "clang-format"
+             DOC "Path to clang-format executable")
+mark_as_advanced(CLANG_FORMAT_EXE) # don't show in ccmake
+
+if(NOT CLANG_FORMAT_EXE)
+  message(WARNING "clang-format not found.")
+else()
+  add_custom_target(
+    format
+    COMMAND misc/format.sh
+    COMMENT "Formatting code"
+    USES_TERMINAL
+    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
+
+  add_custom_target(
+    check_format
+    COMMAND misc/check_format.sh
+    COMMENT "Checking correctly formatted code"
+    USES_TERMINAL
+    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
+endif()
diff --git a/Makefile.in b/Makefile.in
deleted file mode 100644 (file)
index 2b2bb9e..0000000
+++ /dev/null
@@ -1,219 +0,0 @@
-srcdir = @srcdir@
-builddir = @builddir@
-VPATH = @srcdir@
-
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-bindir = @bindir@
-mandir = @mandir@
-datarootdir = @datarootdir@
-sysconfdir = @sysconfdir@
-installcmd = @INSTALL@
-
-BASH = @BASH@
-CC = @CC@
-CFLAGS = @CFLAGS@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXFLAGS = @CXXFLAGS@
-EXEEXT = @EXEEXT@
-LDFLAGS = @LDFLAGS@
-LIBS = @LIBS@
-
-all_cflags = $(CFLAGS)
-all_cxxflags = $(CXXFLAGS)
-all_cppflags = @DEFS@ -DSYSCONFDIR=$(sysconfdir) -I. -I$(srcdir)/src -I$(builddir)/unittest $(CPPFLAGS)
-extra_libs = @extra_libs@
-
-v_at_0 = yes
-v_at_ = $(v_at_0)
-quiet := $(v_at_$(V))
-Q=$(if $(quiet),@)
-
-non_third_party_sources = \
-    src/Args.cpp \
-    src/AtomicFile.cpp \
-    src/CacheEntryReader.cpp \
-    src/CacheEntryWriter.cpp \
-    src/CacheFile.cpp \
-    src/Compression.cpp \
-    src/Compressor.cpp \
-    src/Config.cpp \
-    src/Context.cpp \
-    src/Counters.cpp \
-    src/Decompressor.cpp \
-    src/InodeCache.cpp \
-    src/Lockfile.cpp \
-    src/MiniTrace.cpp \
-    src/NullCompressor.cpp \
-    src/NullDecompressor.cpp \
-    src/ProgressBar.cpp \
-    src/SignalHandler.cpp \
-    src/Stat.cpp \
-    src/ThreadPool.cpp \
-    src/Util.cpp \
-    src/ZstdCompressor.cpp \
-    src/ZstdDecompressor.cpp \
-    src/argprocessing.cpp \
-    src/ccache.cpp \
-    src/cleanup.cpp \
-    src/compopt.cpp \
-    src/compress.cpp \
-    src/execute.cpp \
-    src/hash.cpp \
-    src/hashutil.cpp \
-    src/language.cpp \
-    src/legacy_util.cpp \
-    src/logging.cpp \
-    src/manifest.cpp \
-    src/result.cpp \
-    src/stats.cpp \
-    src/win32compat.cpp
-generated_sources = \
-    src/version.cpp
-third_party_sources = \
-    src/third_party/format.cpp \
-    src/third_party/getopt_long.c \
-    src/third_party/xxhash.c
-extra_sources = @extra_sources@
-base_sources = $(non_third_party_sources) $(generated_sources) $(third_party_sources) $(extra_sources)
-base_objs = $(patsubst %.c, %.o, $(patsubst %.cpp, %.o, $(base_sources)))
-
-non_third_party_objs = $(patsubst %.c, %.o, $(patsubst %.cpp, %.o, $(non_third_party_sources)))
-
-ccache_sources = src/main.cpp $(base_sources)
-ccache_objs = $(patsubst %.c, %.o, $(patsubst %.cpp, %.o, $(ccache_sources)))
-
-test_suites += unittest/test_Args.cpp
-test_suites += unittest/test_AtomicFile.cpp
-test_suites += unittest/test_Checksum.cpp
-test_suites += unittest/test_Compression.cpp
-test_suites += unittest/test_Config.cpp
-test_suites += unittest/test_FormatNonstdStringView.cpp
-test_suites += unittest/test_InodeCache.cpp
-test_suites += unittest/test_Lockfile.cpp
-test_suites += unittest/test_NullCompression.cpp
-test_suites += unittest/test_Stat.cpp
-test_suites += unittest/test_Util.cpp
-test_suites += unittest/test_ZstdCompression.cpp
-test_suites += unittest/test_argprocessing.cpp
-test_suites += unittest/test_compopt.cpp
-test_suites += unittest/test_hash.cpp
-test_suites += unittest/test_hashutil.cpp
-test_suites += unittest/test_legacy_util.cpp
-
-test_sources += unittest/TestUtil.cpp
-test_sources += unittest/catch2_tests.cpp
-test_sources += unittest/main.cpp
-test_sources += $(test_suites)
-test_objs = $(test_sources:.cpp=.o)
-
-all_sources = $(ccache_sources) $(test_sources)
-all_objs = $(ccache_objs) $(test_objs)
-
-files_to_clean = \
-    $(all_objs) \
-    ccache$(EXEEXT) \
-    src/*~ \
-    testdir.* \
-    unittest/run$(EXEEXT) \
-    *~
-
-files_to_distclean = Makefile config.h config.log config.status
-
-.PHONY: all
-all: ccache$(EXEEXT)
-
-ccache$(EXEEXT): $(ccache_objs) $(extra_libs)
-       $(if $(quiet),@echo "  LD       $@")
-       $(Q)$(CXX) -o $@ $(ccache_objs) $(LDFLAGS) $(extra_libs) $(LIBS)
-
-ccache.1: doc/ccache.1
-       $(if $(quiet),@echo "  CP       $@")
-       $(Q)cp $< $@
-
-.PHONY: install
-install: ccache$(EXEEXT) @disable_man@ccache.1
-       $(if $(quiet),@echo "  INSTALL  ccache$(EXEEXT)")
-       $(Q)$(installcmd) -d $(DESTDIR)$(bindir)
-       $(Q)$(installcmd) -m 755 ccache$(EXEEXT) $(DESTDIR)$(bindir)
-@disable_man@  $(if $(quiet),@echo "  INSTALL  ccache.1")
-@disable_man@  $(Q)$(installcmd) -d $(DESTDIR)$(mandir)/man1
-@disable_man@  $(Q)-$(installcmd) -m 644 ccache.1 $(DESTDIR)$(mandir)/man1/
-
-.PHONY: clean
-clean:
-       rm -rf $(files_to_clean)
-       [ ! -f src/third_party/zstd/Makefile ] || $(MAKE) -C src/third_party/zstd/lib clean
-       [ ! -f src/third_party/libb2/Makefile ] || $(MAKE) -C src/third_party/libb2 clean
-
-$(non_third_party_objs) $(test_objs): CFLAGS += @extra_warnings@
-$(non_third_party_objs) $(test_objs): CXXFLAGS += @extra_warnings@
-
-libzstd_options = \
-    ZSTD_LEGACY_SUPPORT=0 \
-    ZSTD_LIB_DEPRECATED=0 \
-    ZSTD_LIB_DICTBUILDER=0
-
-src/third_party/zstd/lib/libzstd.a:
-       $(MAKE) -C src/third_party/zstd/lib libzstd.a $(libzstd_options) CC="$(CC)"
-
-libb2_options = \
-    --disable-shared \
-    --enable-static
-
-@disable_cross@# cross compilation
-@disable_cross@libb2_options += \
-@disable_cross@    --build=@build_alias@ \
-@disable_cross@    --host=@host_alias@ \
-@disable_cross@    --target=@target_alias@ \
-@disable_cross@    --disable-openmp \
-@disable_cross@    --disable-fat \
-@disable_cross@    --disable-native
-
-src/third_party/libb2/src/.libs/libb2.a:
-       cd src/third_party/libb2 && ./configure ${libb2_options} CC="$(CC)"
-       $(MAKE) -C src/third_party/libb2 CC="$(CC)" \
-@disable_cross@        CFLAGS="$(CFLAGS)" CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)"
-
-.PHONY: performance
-performance: ccache$(EXEEXT)
-       $(srcdir)/misc/performance --ccache ccache$(EXEEXT) $(CXX) $(all_cppflags) $(all_cxxflags) $(srcdir)/src/ccache.cpp
-
-.PHONY: test
-test: ccache$(EXEEXT) unittest/run$(EXEEXT)
-       $(if $(quiet),@echo "  TEST     unittest/run$(EXEEXT)")
-       $(Q)unittest/run$(EXEEXT)
-       $(if $(quiet),@echo "  TEST     $(srcdir)/test/run")
-       $(Q)CC='$(CC)' $(BASH) $(srcdir)/test/run
-
-.PHONY: unittest
-unittest: unittest/run$(EXEEXT)
-       $(if $(quiet),@echo "  TEST     $@")
-       $(Q)unittest/run$(EXEEXT)
-
-unittest/run$(EXEEXT): $(base_objs) $(test_objs) $(extra_libs)
-       $(if $(quiet),@echo "  LD       $@")
-       $(Q)$(CXX) -o $@ $(base_objs) $(test_objs) $(LDFLAGS) $(extra_libs) $(LIBS)
-
-.PHONY: check
-check: test
-
-.PHONY: distclean
-distclean: clean
-       rm -rf $(files_to_distclean)
-
-.PHONY: installcheck
-installcheck: ccache$(EXEEXT) unittest/run$(EXEEXT)
-       unittest/run$(EXEEXT)
-       CCACHE=$(bindir)/ccache CC='$(CC)' $(BASH) $(srcdir)/test/run
-
-.c.o:
-       $(if $(quiet),@echo "  CC       $@")
-       $(Q)$(CC) $(all_cppflags) $(all_cflags) -c -o $@ $<
-
-.cpp.o:
-       $(if $(quiet),@echo "  CXX      $@")
-       $(Q)$(CXX) $(all_cppflags) $(all_cxxflags) -c -o $@ $<
-
-@include_dev_mk@
diff --git a/autogen.sh b/autogen.sh
deleted file mode 100755 (executable)
index da120f9..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/sh
-
-set -e
-
-if [ -f dev_mode_disabled ]; then
-    cat <<EOF >&2
-Error: It looks like you are building ccache from a release archive. If so,
-there is no need to run autogen.sh. See INSTALL.md for further instructions.
-
-If you do want to the enable the development mode, delete the file
-dev_mode_disabled first, but it's probably a better idea to work with the
-proper ccache Git repository directly as described on
-<https://ccache.dev/repo.html>.
-EOF
-    exit 1
-fi
-
-autoheader -f
-autoconf -f
-echo "Now run ./configure and make"
index ed108260b4ab263a345dcabadb7d970804451693..0165662050d65f8ef20e33ee5524ed0d6a9bb483 100644 (file)
@@ -1,9 +1,15 @@
 FROM debian:10
 
+# Seperate layer because this is required no matter what
+RUN apt-get update && apt-get install -y --no-install-recommends build-essential \
+        && rm -rf /var/lib/apt/lists/*
+
+# All the rest
 RUN apt-get update && apt-get install -y --no-install-recommends \
                 asciidoc \
                 bash \
                 build-essential \
+                ccache \
                 clang \
                 cmake \
                 elfutils \
@@ -12,3 +18,6 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
                 libzstd-dev \
                 xsltproc \
         && rm -rf /var/lib/apt/lists/*
+
+# redirect all compilers to ccache
+RUN for t in gcc g++ cc c++ clang clang++; do ln -vs /usr/bin/ccache /usr/local/bin/$t;  done
index 4cbb043efd10635f0917d837fcff07082978a6fb..495770f71265126d8cb9620985bf3f54f377827e 100644 (file)
@@ -1,9 +1,15 @@
 FROM debian:9
 
+# Seperate layer because this is required no matter what
+RUN apt-get update && apt-get install -y --no-install-recommends build-essential \
+        && rm -rf /var/lib/apt/lists/*
+
+# All the rest
 RUN apt-get update && apt-get install -y --no-install-recommends \
                 asciidoc \
                 bash \
                 build-essential \
+                ccache \
                 clang \
                 cmake \
                 elfutils \
@@ -12,3 +18,6 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
                 libzstd-dev \
                 xsltproc \
         && rm -rf /var/lib/apt/lists/*
+
+# redirect all compilers to ccache
+RUN for t in gcc g++ cc c++ clang clang++; do ln -vs /usr/bin/ccache /usr/local/bin/$t;  done
diff --git a/buildenv/ubuntu-14-trusty/Dockerfile b/buildenv/ubuntu-14-trusty/Dockerfile
new file mode 100644 (file)
index 0000000..7e7edf0
--- /dev/null
@@ -0,0 +1,25 @@
+FROM ubuntu:trusty
+
+# Seperate layer because this is required no matter what
+RUN apt-get update && apt-get install -y --no-install-recommends build-essential \
+        && rm -rf /var/lib/apt/lists/*
+
+RUN apt-get update && apt-get install -y --no-install-recommends \
+                asciidoc \
+                bash \
+                ccache \
+                clang \
+                curl \
+                elfutils \
+                gcc-multilib \
+                wget \
+                xsltproc \
+        && rm -rf /var/lib/apt/lists/*
+
+# redirect all compilers to ccache
+RUN for t in gcc g++ cc c++ clang clang++; do ln -vs /usr/bin/ccache /usr/local/bin/$t;  done
+
+# Preinstalled cmake it too old (2.8.12.2)
+RUN curl -sSL https://cmake.org/files/v3.5/cmake-3.5.2-Linux-x86_64.tar.gz | sudo tar -xzC /opt
+RUN cp -a /opt/cmake-3.5.2-Linux-x86_64/bin /usr/local
+RUN cp -a /opt/cmake-3.5.2-Linux-x86_64/share /usr/local
index 1a3f5f0391ad8e63f18594383f00d9768d3284d1..a892c495ea2948d03289b714ba9b30d794e5a1af 100644 (file)
@@ -1,9 +1,13 @@
 FROM ubuntu:xenial
 
+# Seperate layer because this is required no matter what
+RUN apt-get update && apt-get install -y --no-install-recommends build-essential \
+        && rm -rf /var/lib/apt/lists/*
+
 RUN apt-get update && apt-get install -y --no-install-recommends \
                 asciidoc \
                 bash \
-                build-essential \
+                ccache \
                 clang \
                 cmake \
                 elfutils \
@@ -12,3 +16,6 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
                 libzstd1-dev \
                 xsltproc \
         && rm -rf /var/lib/apt/lists/*
+
+# redirect all compilers to ccache
+RUN for t in gcc g++ cc c++ clang clang++; do ln -vs /usr/bin/ccache /usr/local/bin/$t;  done
diff --git a/buildenv/ubuntu-20-focal/Dockerfile b/buildenv/ubuntu-20-focal/Dockerfile
new file mode 100644 (file)
index 0000000..96383cc
--- /dev/null
@@ -0,0 +1,22 @@
+FROM ubuntu:focal
+
+# Seperate layer because this is required no matter what
+RUN apt-get update && apt-get install -y --no-install-recommends build-essential \
+        && rm -rf /var/lib/apt/lists/*
+
+# noninteractive: do not set up timezone settings.
+RUN apt-get update && DEBIAN_FRONTEND="noninteractive" apt-get install -y --no-install-recommends \
+                asciidoc \
+                bash \
+                ccache \
+                clang \
+                cmake \
+                elfutils \
+                gcc-multilib \
+                libb2-dev \
+                #libzstd1-dev \ not available?!
+                xsltproc \
+        && rm -rf /var/lib/apt/lists/*
+
+# redirect all compilers to ccache
+RUN for t in gcc g++ cc c++ clang clang++; do ln -vs /usr/bin/ccache /usr/local/bin/$t;  done
diff --git a/ci/build.sh b/ci/build.sh
new file mode 100755 (executable)
index 0000000..1d334e7
--- /dev/null
@@ -0,0 +1,15 @@
+#!/bin/sh -ex
+# This script is used by travis.yml and docker.sh
+
+if [ -n "${SPECIAL}" ]; then
+  sh ci/${SPECIAL}.sh
+else
+  mkdir -p ${BUILDDIR:-build}
+  cd ${BUILDDIR:-build}
+  ${CMAKE_PREFIX:-} cmake ${CCACHE_LOC:-..} ${CMAKE_PARAMS:-}
+  # 4 threads seems a reasonable default for Travis
+  ${CMAKE_PREFIX:-} cmake --build . ${BUILDEXTRAFLAGS:-} -- -j4
+  # Warning: Rare random failures when running with j4.
+  test "${RUN_TESTS:-1}" -eq "1" && ctest --output-on-failure -j1
+fi
+exit 0
diff --git a/ci/build_and_verify_package.sh b/ci/build_and_verify_package.sh
new file mode 100755 (executable)
index 0000000..bdf6acd
--- /dev/null
@@ -0,0 +1,20 @@
+#!/bin/sh -ex
+
+echo "Warning: Binary package support is rather experimental\n"
+
+mkdir -p build_package_dir_test
+cd build_package_dir_test
+rm -rf *
+cmake ..
+cmake --build . --target package
+
+# get out of git directory just to be sure
+tmp_dir=$(mktemp -d)
+
+tar -xzf ccache-binary.tar.gz -C $tmp_dir
+
+CCACHE=$tmp_dir/ccache-binary/bin/ccache ../test/run
+
+rm -rf $tmp_dir
+
+echo "\n\nbinary package is fine and can be used!\n\n"
diff --git a/ci/build_and_verify_package_source.sh b/ci/build_and_verify_package_source.sh
new file mode 100755 (executable)
index 0000000..221f813
--- /dev/null
@@ -0,0 +1,26 @@
+#!/bin/sh -ex
+
+echo "Warning: Source package support is rather experimental\n"
+
+mkdir -p build_package_source_dir_test
+cd build_package_source_dir_test
+rm -rf *
+cmake ..
+cmake --build . --target package_source
+
+# get out of git directory
+# Unfortunately this random name will prevent ccache from caching results...
+# ToDo: use '../../temp' instead?
+tmp_dir=$(mktemp -d)
+
+tar -xzf ccache-src.tar.gz -C $tmp_dir
+cd $tmp_dir
+
+cmake .
+cmake --build . -- -j4
+ctest --output-on-failure -j4
+
+rm -rf $tmp_dir
+
+echo "\n\nsource package is fine and can be used!\n\n"
+
diff --git a/cmake/CCachePackConfig.cmake b/cmake/CCachePackConfig.cmake
new file mode 100644 (file)
index 0000000..9a69eec
--- /dev/null
@@ -0,0 +1,41 @@
+# Note: this is part of CMakeLists.txt file, not to be confused with
+# CPackConfig.cmake
+
+find_program(NINJA_EXE NAMES "ninja" DOC "Path to ninja executable")
+mark_as_advanced(NINJA_EXE) # don't show in ccmake
+if(NINJA_EXE)
+  set(CPACK_CMAKE_GENERATOR "Ninja")
+else()
+  set(CPACK_CMAKE_GENERATOR "Unix Makefiles")
+endif()
+
+# make obvious which version is used
+set(CMAKE_DEBUG_POSTFIX "-d")
+
+if(${CMAKE_VERSION} VERSION_LESS "3.9")
+  set(CPACK_PACKAGE_DESCRIPTION "${CMAKE_PROJECT_DESCRIPTION}")
+endif()
+
+# from GenerateVersionFile.cmake
+set(CPACK_PACKAGE_VERSION ${VERSION})
+
+set(CPACK_VERBATIM_VARIABLES ON)
+
+if(WIN32)
+  set(CPACK_GENERATOR "ZIP")
+else()
+  set(CPACK_GENERATOR "TGZ")
+endif()
+
+set(CPACK_SOURCE_GENERATOR "TGZ")
+
+# Default includes build directory, so improve it: Include buildenv, but exclude
+# other build directories like /build/, /build-* and /build_*
+list(APPEND CPACK_SOURCE_IGNORE_FILES "^${CMAKE_SOURCE_DIR}/\\.git")
+list(APPEND CPACK_SOURCE_IGNORE_FILES "^${CMAKE_SOURCE_DIR}/build[\\-_/]")
+list(APPEND CPACK_SOURCE_IGNORE_FILES "^${CMAKE_BINARY_DIR}")
+
+set(CPACK_PACKAGE_FILE_NAME "ccache-binary")
+set(CPACK_SOURCE_PACKAGE_FILE_NAME "ccache-src")
+
+include(CPack)
diff --git a/cmake/CodeAnalysis.cmake b/cmake/CodeAnalysis.cmake
new file mode 100644 (file)
index 0000000..17eedf5
--- /dev/null
@@ -0,0 +1,40 @@
+option(ENABLE_CPPCHECK "Enable static analysis with cppcheck" OFF)
+if(ENABLE_CPPCHECK)
+  if(${CMAKE_VERSION} VERSION_LESS "3.10")
+    message(WARNING "CppCheck requires cmake 3.10")
+  else()
+    find_program(CPPCHECK_EXE cppcheck)
+    mark_as_advanced(CPPCHECK_EXE) # don't show in ccmake
+    if(CPPCHECK_EXE)
+      # cmake-format: off
+      set(CMAKE_CXX_CPPCHECK
+          ${CPPCHECK_EXE}
+          --suppressions-list=${CMAKE_SOURCE_DIR}/misc/cppcheck-suppressions.txt
+          --inline-suppr
+          -q
+          --enable=all
+          --force
+          --std=c++11
+          -I ${CMAKE_SOURCE_DIR}
+          --template="cppcheck: warning: {id}:{file}:{line}: {message}"
+          -i src/third_party)
+      # cmake-format: on
+    else()
+      message(WARNING "cppcheck requested but executable not found")
+    endif()
+  endif()
+endif()
+
+option(ENABLE_CLANG_TIDY "Enable static analysis with clang-tidy" OFF)
+if(ENABLE_CLANG_TIDY)
+  if(${CMAKE_VERSION} VERSION_LESS "3.6")
+    message(WARNING "clang-tidy requires cmake 3.6")
+  else()
+    find_program(CLANGTIDY clang-tidy)
+    if(CLANGTIDY)
+      set(CMAKE_CXX_CLANG_TIDY ${CLANGTIDY})
+    else()
+      message(SEND_ERROR "clang-tidy requested but executable not found")
+    endif()
+  endif()
+endif()
diff --git a/cmake/DefaultBuildType.cmake b/cmake/DefaultBuildType.cmake
new file mode 100644 (file)
index 0000000..fb7a387
--- /dev/null
@@ -0,0 +1,19 @@
+# Set a default build type if none was specified
+
+if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
+  # Default to Release for zip builds and Debug for git builds
+  if(EXISTS "${CMAKE_SOURCE_DIR}/.git")
+    set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Choose the type of build." FORCE)
+  else()
+    set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build."
+                                         FORCE)
+  endif()
+  message(
+    STATUS
+      "Setting CMAKE_BUILD_TYPE to '${CMAKE_BUILD_TYPE}' as none was specified."
+  )
+
+  # Set the possible values of build type for ccmake
+  set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release"
+                                               "MinSizeRel" "RelWithDebInfo")
+endif()
diff --git a/cmake/Findlibb2.cmake b/cmake/Findlibb2.cmake
new file mode 100644 (file)
index 0000000..6286164
--- /dev/null
@@ -0,0 +1,105 @@
+if(libb2_FOUND)
+  return()
+endif()
+
+if(USE_LIBB2_FROM_INTERNET)
+  set(libb2_version ${libb2_FIND_VERSION})
+  set(libb2_url
+      https://github.com/BLAKE2/libb2/releases/download/v${libb2_version}/libb2-${libb2_version}.tar.gz
+  )
+
+  set(libb2_dir ${CMAKE_BINARY_DIR}/libb2-${libb2_version})
+  set(libb2_build ${CMAKE_BINARY_DIR}/libb2-build)
+
+  if(NOT EXISTS "${libb2_dir}.tar.gz")
+    file(DOWNLOAD "${libb2_url}" "${libb2_dir}.tar.gz")
+  endif()
+  execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf "${libb2_dir}.tar.gz"
+                  WORKING_DIRECTORY "${CMAKE_BINARY_DIR}")
+
+  file(
+    WRITE "${libb2_dir}/src/config.h.cmake.in"
+    [=[
+    /* Define if you have the `explicit_bzero' function. */
+    #cmakedefine HAVE_EXPLICIT_BZERO
+    /* Define if you have the `explicit_memset' function. */
+    #cmakedefine HAVE_EXPLICIT_MEMSET
+    /* Define if you have the `memset' function. */
+    #cmakedefine HAVE_MEMSET
+    /* Define if you have the `memset_s' function. */
+    #cmakedefine HAVE_MEMSET_S
+    ]=])
+
+  file(
+    WRITE "${libb2_dir}/src/CMakeLists.txt"
+    [=[
+    project(libb2 C)
+
+    include(CheckFunctionExists)
+    foreach(func IN ITEMS
+    explicit_bzero
+    explicit_memset
+    memset
+    memset_s
+    )
+    string(TOUPPER ${func} func_var)
+    set(func_var HAVE_${func_var})
+    check_function_exists(${func} ${func_var})
+    endforeach()
+
+    configure_file(config.h.cmake.in config.h)
+    set(CMAKE_INCLUDE_CURRENT_DIR ON)
+
+    add_library(libblake2b_ref STATIC blake2b-ref.c blake2s-ref.c)
+    target_compile_definitions(libblake2b_ref PRIVATE SUFFIX=_ref)
+
+    function(add_libblake2b name suffix)
+    add_library(${name} STATIC blake2b.c blake2s.c)
+    target_compile_definitions(${name} PRIVATE ${suffix})
+    target_compile_options(${name} PRIVATE ${ARGN})
+    endfunction()
+
+    add_libblake2b(libblake2b_sse2 SUFFIX=_sse2 -msse2)
+    add_libblake2b(libblake2b_ssse3 SUFFIX=_ssse3 -msse2 -mssse3)
+    add_libblake2b(libblake2b_sse41 SUFFIX=_sse41 -msse2 -mssse3 -msse4.1)
+    add_libblake2b(libblake2s_avx SUFFIX=_avx -msse2 -mssse3 -msse4.1 -mavx)
+    add_libblake2b(libblake2b_xop SUFFIX=_xop -msse2 -mssse3 -msse4.1 -mavx -mxop)
+
+    add_library(libb2 STATIC blake2-dispatch.c)
+    target_link_libraries(libb2
+    PUBLIC
+      libblake2b_ref libblake2b_sse2 libblake2b_ssse3
+      libblake2b_sse41 libblake2s_avx libblake2b_xop
+    )
+  ]=])
+  add_subdirectory("${libb2_dir}/src" "${libb2_build}" EXCLUDE_FROM_ALL)
+
+  add_library(libb2::libb2 ALIAS libb2)
+  set_target_properties(libb2 PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
+                                         "${libb2_dir}/src")
+
+  set(libb2_FOUND TRUE)
+else()
+  find_library(LIBB2_LIBRARY NAMES b2 libb2)
+  find_path(LIBB2_INCLUDE_DIR blake2.h)
+
+  include(FindPackageHandleStandardArgs)
+  find_package_handle_standard_args(
+    libb2 "please install libb2 or use -DUSE_LIBB2_FROM_INTERNET=ON"
+    LIBB2_INCLUDE_DIR LIBB2_LIBRARY)
+  mark_as_advanced(LIBB2_INCLUDE_DIR LIBB2_LIBRARY)
+
+  add_library(libb2::libb2 UNKNOWN IMPORTED)
+  set_target_properties(
+    libb2::libb2
+    PROPERTIES IMPORTED_LOCATION "${LIBB2_LIBRARY}"
+               INTERFACE_INCLUDE_DIRECTORIES "${LIBB2_INCLUDE_DIR}")
+endif()
+
+include(FeatureSummary)
+# cmake-format: off
+# (behaviour change in cmake-format 0.6.10)
+set_package_properties(
+  libb2 PROPERTIES URL "http://blake2.net/"
+  DESCRIPTION "C library providing BLAKE2b, BLAKE2s, BLAKE2bp, BLAKE2sp")
+# cmake-format: on
diff --git a/cmake/Findzstd.cmake b/cmake/Findzstd.cmake
new file mode 100644 (file)
index 0000000..a009509
--- /dev/null
@@ -0,0 +1,52 @@
+if(zstd_FOUND)
+  return()
+endif()
+
+if(USE_LIBZSTD_FROM_INTERNET)
+  # Although ${zstd_FIND_VERSION} was requested, let's download a newer version.
+  # Note: structure has changed in 1.3.0, download supports only 1.3.0 and
+  # newer.
+  set(zstd_version "1.4.4")
+  set(zstd_url https://github.com/facebook/zstd/archive/v${zstd_version}.tar.gz)
+
+  set(zstd_dir ${CMAKE_BINARY_DIR}/zstd-${zstd_version})
+  set(zstd_build ${CMAKE_BINARY_DIR}/zstd-build)
+
+  if(NOT EXISTS "${zstd_dir}.tar.gz")
+    file(DOWNLOAD "${zstd_url}" "${zstd_dir}.tar.gz")
+  endif()
+
+  execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf "${zstd_dir}.tar.gz"
+                  WORKING_DIRECTORY "${CMAKE_BINARY_DIR}")
+
+  set(ZSTD_BUILD_SHARED OFF)
+  add_subdirectory("${zstd_dir}/build/cmake" "${zstd_build}" EXCLUDE_FROM_ALL)
+
+  add_library(ZSTD::ZSTD ALIAS libzstd_static)
+  set_target_properties(libzstd_static PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
+                                                  "${zstd_dir}/lib")
+
+  set(zstd_FOUND TRUE)
+else()
+  find_library(ZSTD_LIBRARY zstd)
+  find_path(ZSTD_INCLUDE_DIR zstd.h)
+
+  include(FindPackageHandleStandardArgs)
+  find_package_handle_standard_args(
+    zstd "please install libzstd or use -DUSE_LIBZSTD_FROM_INTERNET=ON"
+    ZSTD_INCLUDE_DIR ZSTD_LIBRARY)
+  mark_as_advanced(ZSTD_INCLUDE_DIR ZSTD_LIBRARY)
+
+  add_library(ZSTD::ZSTD UNKNOWN IMPORTED)
+  set_target_properties(
+    ZSTD::ZSTD PROPERTIES IMPORTED_LOCATION "${ZSTD_LIBRARY}"
+                          INTERFACE_INCLUDE_DIRECTORIES "${ZSTD_INCLUDE_DIR}")
+endif()
+
+include(FeatureSummary)
+# cmake-format: off
+# (behaviour change in cmake-format 0.6.10)
+set_package_properties(
+  zstd PROPERTIES URL "https://facebook.github.io/zstd"
+  DESCRIPTION "Zstandard - Fast real-time compression algorithm")
+# cmake-format: on
diff --git a/cmake/GenerateConfigurationFile.cmake b/cmake/GenerateConfigurationFile.cmake
new file mode 100644 (file)
index 0000000..b698c4f
--- /dev/null
@@ -0,0 +1,71 @@
+include(CheckIncludeFile)
+set(include_files
+    linux/fs.h
+    pwd.h
+    sys/clonefile.h
+    sys/ioctl.h
+    sys/mman.h
+    sys/time.h
+    sys/wait.h
+    syslog.h
+    termios.h)
+foreach(include_file IN ITEMS ${include_files})
+  string(TOUPPER ${include_file} include_var)
+  string(REGEX REPLACE "[/.]" "_" include_var ${include_var})
+  set(include_var HAVE_${include_var})
+  check_include_file(${include_file} ${include_var})
+endforeach()
+
+include(CheckFunctionExists)
+set(functions
+    asctime_r
+    geteuid
+    GetFinalPathNameByHandleW
+    getopt_long
+    getpwuid
+    gettimeofday
+    localtime_r
+    mkstemp
+    posix_fallocate
+    realpath
+    setenv
+    strndup
+    syslog
+    unsetenv
+    utimes)
+foreach(func IN ITEMS ${functions})
+  string(TOUPPER ${func} func_var)
+  set(func_var HAVE_${func_var})
+  check_function_exists(${func} ${func_var})
+endforeach()
+
+include(CheckStructHasMember)
+check_struct_has_member("struct stat" st_ctim sys/stat.h
+                        HAVE_STRUCT_STAT_ST_CTIM)
+check_struct_has_member("struct stat" st_mtim sys/stat.h
+                        HAVE_STRUCT_STAT_ST_MTIM)
+check_struct_has_member("struct statfs" f_fstypename sys/mount.h
+                        HAVE_STRUCT_STATFS_F_FSTYPENAME)
+
+include(CheckCXXCompilerFlag)
+check_cxx_compiler_flag(-mavx2 HAVE_AVX2)
+
+list(APPEND CMAKE_REQUIRED_LIBRARIES ws2_32)
+list(REMOVE_ITEM CMAKE_REQUIRED_LIBRARIES ws2_32)
+
+include(CheckTypeSize)
+check_type_size("long long" HAVE_LONG_LONG)
+
+if(WIN32)
+  set(_WIN32_WINNT 0x0600)
+endif()
+
+if(CMAKE_SYSTEM MATCHES "Darwin")
+  set(_DARWIN_C_SOURCE 1)
+endif()
+
+# alias
+set(MTR_ENABLED "${ENABLE_TRACING}")
+
+configure_file(${CMAKE_SOURCE_DIR}/cmake/config.h.in
+               ${CMAKE_BINARY_DIR}/config.h @ONLY)
diff --git a/cmake/GenerateVersionFile.cmake b/cmake/GenerateVersionFile.cmake
new file mode 100644 (file)
index 0000000..29d4e3b
--- /dev/null
@@ -0,0 +1,56 @@
+# Determines VERSION from git. See also VERSION_ERROR and VERSION_DIRTY.
+function(get_version_from_git)
+  find_package(Git)
+  if(NOT GIT_FOUND)
+    message(STATUS "Git not found")
+    set(VERSION_ERROR TRUE PARENT_SCOPE)
+    set(VERSION_DIRTY TRUE PARENT_SCOPE)
+    set(VERSION "unknown" PARENT_SCOPE)
+    return()
+  endif()
+
+  execute_process(
+    COMMAND git describe --exact-match
+    WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+    OUTPUT_VARIABLE git_tag
+    ERROR_VARIABLE git_tag
+    RESULT_VARIABLE cmd_result
+    OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+  if(cmd_result EQUAL 0)
+    set(VERSION_ERROR FALSE PARENT_SCOPE)
+    set(VERSION_DIRTY FALSE PARENT_SCOPE)
+    set(VERSION ${git_tag} PARENT_SCOPE)
+  else()
+    execute_process(
+      COMMAND git rev-parse --abbrev-ref HEAD
+      WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+      OUTPUT_VARIABLE git_branch OUTPUT_STRIP_TRAILING_WHITESPACE
+      RESULT_VARIABLE cmd_branch_result)
+
+    execute_process(
+      COMMAND git rev-parse --short=8 HEAD
+      WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+      OUTPUT_VARIABLE git_hash OUTPUT_STRIP_TRAILING_WHITESPACE
+      RESULT_VARIABLE cmd_hash_result)
+
+    if(cmd_branch_result EQUAL 0 AND cmd_hash_result EQUAL 0)
+      set(VERSION_ERROR FALSE PARENT_SCOPE)
+      set(VERSION_DIRTY TRUE PARENT_SCOPE)
+      set(VERSION "${git_branch}.${git_hash}" PARENT_SCOPE)
+    else()
+      message(WARNING "Running git failed")
+      set(VERSION_ERROR TRUE PARENT_SCOPE)
+      set(VERSION_DIRTY TRUE PARENT_SCOPE)
+      set(VERSION "unknown" PARENT_SCOPE)
+    endif()
+  endif()
+endfunction()
+
+get_version_from_git()
+if(VERSION_ERROR)
+  message(STATUS "Not within git repository")
+else()
+  configure_file(${CMAKE_SOURCE_DIR}/cmake/Version.cpp.in
+                 ${CMAKE_SOURCE_DIR}/src/Version.cpp @ONLY)
+endif()
diff --git a/cmake/StandardSettings.cmake b/cmake/StandardSettings.cmake
new file mode 100644 (file)
index 0000000..c28bd71
--- /dev/null
@@ -0,0 +1,47 @@
+# This file provides a special target 'standard_settings' which shall be linked
+# privately by all other targets.
+
+add_library(standard_settings INTERFACE)
+
+# Not supported in cmake 3.4: target_compile_features(project_options INTERFACE
+# c_std_11 cxx_std_11)
+
+if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL
+                                           "Clang")
+  option(ENABLE_COVERAGE "Enable coverage reporting for gcc/clang" FALSE)
+  if(ENABLE_COVERAGE)
+    target_compile_options(standard_settings INTERFACE --coverage -O0 -g)
+    target_link_libraries(standard_settings INTERFACE --coverage)
+  endif()
+
+  set(SANITIZERS "")
+
+  option(ENABLE_SANITIZER_ADDRESS "Enable address sanitizer" FALSE)
+  if(ENABLE_SANITIZER_ADDRESS)
+    list(APPEND SANITIZERS "address")
+  endif()
+
+  option(ENABLE_SANITIZER_MEMORY "Enable memory sanitizer" FALSE)
+  if(ENABLE_SANITIZER_MEMORY)
+    list(APPEND SANITIZERS "memory")
+  endif()
+
+  option(ENABLE_SANITIZER_UNDEFINED_BEHAVIOR
+         "Enable undefined behavior sanitizer" FALSE)
+  if(ENABLE_SANITIZER_UNDEFINED_BEHAVIOR)
+    list(APPEND SANITIZERS "undefined")
+  endif()
+
+  option(ENABLE_SANITIZER_THREAD "Enable thread sanitizer" FALSE)
+  if(ENABLE_SANITIZER_THREAD)
+    list(APPEND SANITIZERS "thread")
+  endif()
+
+  if(SANITIZERS)
+    string(REPLACE ";" " " LIST_OF_SANITIZERS "${SANITIZERS}")
+    target_compile_options(standard_settings
+                           INTERFACE -fsanitize=${LIST_OF_SANITIZERS})
+    target_link_libraries(standard_settings
+                          INTERFACE -fsanitize=${LIST_OF_SANITIZERS})
+  endif()
+endif()
diff --git a/cmake/StandardWarnings.cmake b/cmake/StandardWarnings.cmake
new file mode 100644 (file)
index 0000000..a2ac735
--- /dev/null
@@ -0,0 +1,141 @@
+# This file provides a special target 'standard_warnings' which shall be linked
+# privately by all product and test code, but not by third_party code.
+add_library(standard_warnings INTERFACE)
+
+if(IS_DIRECTORY "${CMAKE_SOURCE_DIR}/.git" OR DEFINED ENV{"CI"})
+  # Enabled by default for builds based on git as this will prevent bad pull
+  # requests to ccache repository. Also enabled in case of Travis builds
+  # (Environment var CI is set).
+  option(WARNINGS_AS_ERRORS "Treat compiler warnings as errors" TRUE)
+else()
+  # Disabled by default so compilation doesn't fail with new compilers, just
+  # because they produce a new warning.
+  option(WARNINGS_AS_ERRORS "Treat compiler warnings as errors" FALSE)
+endif()
+
+include(CheckCXXCompilerFlag)
+
+# check_cxx_compiler_flag caches the result, so a unique variable name is
+# required for every flag to be checked.
+#
+# * flag [in], e.g. XXX
+# * variable_name_of_variable_name [in], e.g. "TEMP". This is the variable that
+#   "HAS_XXX" will be written to.
+function(generate_unique_has_flag_variable_name flag
+         variable_name_of_variable_name)
+  string(REGEX REPLACE "[=-]" "_" variable_name "${flag}")
+  string(TOUPPER "${variable_name}" variable_name)
+  set(${variable_name_of_variable_name} "HAS_${variable_name}" PARENT_SCOPE)
+endfunction()
+
+function(add_target_compile_flag_if_supported_ex target flag alternative_flag)
+  # has_flag will contain "HAS_$flag" so each flag gets a unique HAS variable.
+  generate_unique_has_flag_variable_name("${flag}" "has_flag")
+
+  # Instead of passing "has_flag" this is passing the content of has_flag.
+  check_cxx_compiler_flag("${flag}" "${has_flag}")
+
+  # If the variable named in has_flag is true, compiler supports the cxx flag.
+  if(${${has_flag}})
+    target_compile_options(${target} INTERFACE "${flag}")
+  elseif("${alternative_flag}")
+    add_target_compile_flag_if_supported_ex(${target} ${alternative_flag} "")
+  endif()
+endfunction()
+
+# ToDo: Is there a better way to private an optional third argument?
+macro(add_target_compile_flag_if_supported target flag)
+  add_target_compile_flag_if_supported_ex("${target}" "${flag}" "")
+endmacro()
+
+# Several standard warnings disabled for now so no code change is required as
+# part of CMake-Switch commit.
+set(CLANG_GCC_WARNINGS
+    -Wall
+    -Wextra
+    -Wnon-virtual-dtor
+    -Wcast-align
+    -Wunused
+    -Woverloaded-virtual
+    -Wpedantic
+    # To be enabled in the future:
+    #
+    # * -Wshadow
+    # * -Wold-style-cast
+    # * -Wconversion
+    # * -Wsign-conversion
+    # * -Wnull-dereference
+    # * -Wformat=2
+)
+# Tested seperatly as this is not supported by clang 3.4
+add_target_compile_flag_if_supported(standard_warnings "-Wdouble-promotion")
+
+if(WARNINGS_AS_ERRORS)
+  set(CLANG_GCC_WARNINGS ${CLANG_GCC_WARNINGS} -Werror)
+endif()
+
+if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
+  # Exact version or reason unknown, discovered in Ubuntu 14 docker test with clang 3.4
+  if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.0)
+    # reserved-id-macro issued by clang 3.6 - 3.9 for libb2 blake2.h
+    set(CLANG_GCC_WARNINGS ${CLANG_GCC_WARNINGS}  -Qunused-arguments -Wno-error=unreachable-code -Wno-error=reserved-id-macro)
+  endif()
+
+  target_compile_options(
+    standard_warnings
+    INTERFACE ${CLANG_GCC_WARNINGS}
+              -Weverything
+              -Wno-c++98-compat-pedantic
+              -Wno-c++98-compat
+              -Wno-constexpr-not-const
+              -Wno-conversion
+              -Wno-disabled-macro-expansion
+              -Wno-documentation-unknown-command
+              -Wno-exit-time-destructors
+              -Wno-format-nonliteral
+              -Wno-global-constructors
+              -Wno-implicit-fallthrough
+              -Wno-padded
+              -Wno-shorten-64-to-32
+              -Wno-sign-conversion
+              -Wno-weak-vtables
+              -Wno-old-style-cast)
+
+  # If compiler supports shadow-field-in-constructor, disable only that.
+  # Otherwise disable shadow.
+  add_target_compile_flag_if_supported_ex(
+    standard_warnings "-Wno-shadow-field-in-constructor" "-Wno-shadow")
+
+  # Disable C++20 compatibility for now.
+  add_target_compile_flag_if_supported(standard_warnings "-Wno-c++2a-compat")
+
+  # If compiler supports these warnings, they have to be disabled for now.
+  add_target_compile_flag_if_supported(standard_warnings
+                                       "-Wno-zero-as-null-pointer-constant")
+  add_target_compile_flag_if_supported(standard_warnings
+                                       "-Wno-undefined-func-template")
+  add_target_compile_flag_if_supported(standard_warnings
+                                       "-Wno-return-std-move-in-c++11")
+elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+  target_compile_options(
+    standard_warnings
+    INTERFACE ${CLANG_GCC_WARNINGS}
+
+    -Wlogical-op # warn about logical operations being used where bitwise were probably wanted.
+
+    #
+    # To be enabled in the future:
+    #
+    # * -Wmisleading- indentation # warn if identation implies blocks where
+    #   blocks do not exist
+    # * -Wduplicated-cond # warn if if / else chain has duplicated conditions
+    # * -Wduplicated-branches # warn if if / else branches have duplicated code
+    # * -Wuseless-cast # warn if you perform a cast to the same type
+  )
+
+  # Exact version or reason unknown, discovered in Ubuntu 14 docker test with gcc 4.8.4
+  if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.8.5)
+    add_target_compile_flag_if_supported(standard_warnings "-Wno-missing-field-initializers")
+    add_target_compile_flag_if_supported(standard_warnings "-Wno-unused-variable")
+  endif()
+endif()
diff --git a/cmake/Version.cpp.in b/cmake/Version.cpp.in
new file mode 100644 (file)
index 0000000..291f049
--- /dev/null
@@ -0,0 +1,2 @@
+extern const char CCACHE_VERSION[];
+const char CCACHE_VERSION[] = "@VERSION@";
diff --git a/cmake/config.h.in b/cmake/config.h.in
new file mode 100644 (file)
index 0000000..b60aee8
--- /dev/null
@@ -0,0 +1,142 @@
+#pragma once
+#ifdef __clang__
+#  pragma clang diagnostic push
+#  if __has_warning("-Wreserved-id-macro")
+#    pragma clang diagnostic ignored "-Wreserved-id-macro"
+#  endif
+#endif
+
+// For example for vasprintf under i686-w64-mingw32-g++-posix.
+// The later defininition of _XOPEN_SOURCE disables certain features
+// on Linux, so we need _GNU_SOURCE to re-enable them (makedev, tm_zone).
+#define _GNU_SOURCE 1
+
+// The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
+// certain features on NetBSD, so we need _NETBSD_SOURCE to re-enable
+// them.
+#define _NETBSD_SOURCE 1
+
+// The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
+// certain features on FreeBSD, so we need __BSD_VISIBLE to re-enable
+// them.
+#define __BSD_VISIBLE 1
+
+// The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
+// u_int on Irix 5.3. Defining _BSD_TYPES brings it back.
+#define _BSD_TYPES 1
+
+// The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
+// certain features on Mac OS X, so we need _DARWIN_C_SOURCE to re-enable
+// them.
+#cmakedefine _DARWIN_C_SOURCE
+
+// Define to activate features from IEEE Stds 1003.1-2001.
+#define _POSIX_C_SOURCE 200809L
+
+#if defined(__SunOS_5_8) || defined(__SunOS_5_9) || defined(__SunOS_5_10)
+  #define _XOPEN_SOURCE 500
+#elif !defined(__SunOS_5_11) && !defined(__APPLE__)
+  #define _XOPEN_SOURCE
+#endif
+
+#if defined(__SunOS_5_10) || defined(__SunOS_5_11)
+  #define __EXTENSIONS__ 1
+#else
+  #define _XOPEN_SOURCE_EXTENDED
+#endif
+
+
+#cmakedefine _WIN32_WINNT @_WIN32_WINNT@
+
+#ifdef __clang__
+#  pragma clang diagnostic pop
+#endif
+
+#cmakedefine MTR_ENABLED
+
+/* Define to 1 if you have the `asctime_r' function. */
+#cmakedefine HAVE_ASCTIME_R
+
+/* Define to 1 if your compiler supports AVX2. */
+#cmakedefine HAVE_AVX2
+
+/* Define to 1 if you have the `geteuid' function. */
+#cmakedefine HAVE_GETEUID
+
+/* Define to 1 if you have the `GetFinalPathNameByHandleW' function. */
+#cmakedefine HAVE_GETFINALPATHNAMEBYHANDLEW
+
+/* Define to 1 if you have the `getopt_long' function. */
+#cmakedefine HAVE_GETOPT_LONG
+
+/* Define to 1 if you have the `getpwuid' function. */
+#cmakedefine HAVE_GETPWUID
+
+/* Define to 1 if you have the `gettimeofday' function. */
+#cmakedefine HAVE_GETTIMEOFDAY
+
+/* Define to 1 if you have the <linux/fs.h> header file. */
+#cmakedefine HAVE_LINUX_FS_H
+
+/* Define to 1 if you have the `localtime_r' function. */
+#cmakedefine HAVE_LOCALTIME_R
+
+/* Define to 1 if the system has the type `long long'. */
+#cmakedefine HAVE_LONG_LONG
+
+/* Define to 1 if you have the `mkstemp' function. */
+#cmakedefine HAVE_MKSTEMP
+
+/* Define to 1 if you have the `posix_fallocate. */
+#cmakedefine HAVE_POSIX_FALLOCATE
+
+/* Define to 1 if you have the <pwd.h> header file. */
+#cmakedefine HAVE_PWD_H
+
+/* Define to 1 if you have the `realpath' function. */
+#cmakedefine HAVE_REALPATH
+
+/* Define to 1 if you have the `setenv' function. */
+#cmakedefine HAVE_SETENV
+
+/* Define to 1 if you have the `strndup' function. */
+#cmakedefine HAVE_STRNDUP
+
+/* Define to 1 if `f_fstypename' is a member of `struct statfs'. */
+#cmakedefine HAVE_STRUCT_STATFS_F_FSTYPENAME
+
+/* Define to 1 if `st_ctim' is a member of `struct stat'. */
+#cmakedefine HAVE_STRUCT_STAT_ST_CTIM
+
+/* Define to 1 if `st_mtim' is a member of `struct stat'. */
+#cmakedefine HAVE_STRUCT_STAT_ST_MTIM
+
+/* Define to 1 if you have the `syslog' function. */
+#cmakedefine HAVE_SYSLOG
+
+/* Define to 1 if you have the <syslog.h> header file. */
+#cmakedefine HAVE_SYSLOG_H
+
+/* Define to 1 if you have the <sys/clonefile.h> header file. */
+#cmakedefine HAVE_SYS_CLONEFILE_H
+
+/* Define to 1 if you have the <sys/ioctl.h> header file. */
+#cmakedefine HAVE_SYS_IOCTL_H
+
+/* Define to 1 if you have the <sys/mman.h> header file. */
+#cmakedefine HAVE_SYS_MMAN_H
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#cmakedefine HAVE_SYS_TIME_H
+
+/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
+#cmakedefine HAVE_SYS_WAIT_H
+
+/* Define to 1 if you have the <termios.h> header file. */
+#cmakedefine HAVE_TERMIOS_H
+
+/* Define to 1 if you have the `unsetenv' function. */
+#cmakedefine HAVE_UNSETENV
+
+/* Define to 1 if you have the `utimes' function. */
+#cmakedefine HAVE_UTIMES
diff --git a/config.guess b/config.guess
deleted file mode 100644 (file)
index 9baaa27..0000000
+++ /dev/null
@@ -1,1476 +0,0 @@
-#! /bin/sh
-# Attempt to guess a canonical system name.
-#   Copyright 1992-2018 Free Software Foundation, Inc.
-
-timestamp='2018-01-26'
-
-# 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 <https://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:
-# https://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.
-
-Options:
-  -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-2018 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'`"
-
-       # If ldd exists, use it to detect musl libc.
-       if command -v ldd >/dev/null && \
-               ldd --version 2>&1 | grep -q ^musl
-       then
-           LIBC=musl
-       fi
-       ;;
-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 ;;
-    *:MidnightBSD:*:*)
-       echo "$UNAME_MACHINE"-unknown-midnightbsd"$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 ;;
-    *:Redox:*:*)
-       echo "$UNAME_MACHINE"-unknown-redox
-       exit ;;
-    mips:OSF1:*.*)
-        echo mips-dec-osf1
-        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 ;;
-    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:4.4BSD:*)
-       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)
-               UNAME_PROCESSOR=x86_64 ;;
-           i386)
-               UNAME_PROCESSOR=i586 ;;
-       esac
-       echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"
-       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*: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 ;;
-    i*:UWIN*:*)
-       echo "$UNAME_MACHINE"-pc-uwin
-       exit ;;
-    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
-       echo x86_64-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.*:*)
-       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
-               # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
-               if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
-                      (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
-                      grep IS_PPC >/dev/null
-               then
-                   UNAME_PROCESSOR=powerpc
-               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 ;;
-    NSV-*:NONSTOP_KERNEL:*:*)
-       echo nsv-tandem-nsk"$UNAME_RELEASE"
-       exit ;;
-    NSX-*:NONSTOP_KERNEL:*:*)
-       echo nsx-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
-
-echo "$0: unable to guess system type" >&2
-
-case "$UNAME_MACHINE:$UNAME_SYSTEM" in
-    mips:Linux | mips64:Linux)
-       # If we got here on MIPS GNU/Linux, output extra information.
-       cat >&2 <<EOF
-
-NOTE: MIPS GNU/Linux systems require a C compiler to fully recognize
-the system type. Please install a C compiler and try again.
-EOF
-       ;;
-esac
-
-cat >&2 <<EOF
-
-This script (version $timestamp), has failed to recognize the
-operating system you are using. If your script is old, overwrite *all*
-copies of config.guess and config.sub with the latest versions from:
-
-  https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
-and
-  https://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-functions 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/config.sub b/config.sub
deleted file mode 100644 (file)
index 818892c..0000000
+++ /dev/null
@@ -1,1800 +0,0 @@
-#! /bin/sh
-# Configuration validation subroutine script.
-#   Copyright 1992-2018 Free Software Foundation, Inc.
-
-timestamp='2018-01-15'
-
-# 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 <https://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:
-# https://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.
-
-Options:
-  -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-2018 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/'`
-               ;;
-       -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 | ia16 | 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 | pj | pjl \
-       | powerpc | powerpc64 | powerpc64le | powerpcle \
-       | pru \
-       | 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 \
-       | wasm32 \
-       | 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)
-               ;;
-       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-* | ia16-* | 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-* \
-       | pru-* \
-       | 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-* \
-       | wasm32-* \
-       | 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-pc
-               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*)
-               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
-               ;;
-       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
-               ;;
-       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
-               ;;
-       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
-               ;;
-       nsv-tandem)
-               basic_machine=nsv-tandem
-               ;;
-       nsx-tandem)
-               basic_machine=nsx-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
-               ;;
-       sh5el)
-               basic_machine=sh5le-unknown
-               ;;
-       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
-               ;;
-       x64)
-               basic_machine=x86_64-pc
-               ;;
-       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
-               ;;
-       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
-               ;;
-       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
-               ;;
-       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
-               ;;
-       -unixware*)
-               os=-sysv4.2uw
-               ;;
-       -gnu/linux*)
-               os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
-               ;;
-       # es1800 is here to avoid being matched by es* (a different OS)
-       -es1800*)
-               os=-ose
-               ;;
-       # Now 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* | -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* | -glidix* \
-             | -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* \
-             | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
-             | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
-             | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
-             | -morphos* | -superux* | -rtmk* | -windiss* \
-             | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
-             | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \
-             | -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox* | -bme*)
-       # 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 | -xray | -os68k* | -v88r* \
-             | -windows* | -osx | -abug | -netware* | -os9* \
-             | -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
-               ;;
-       -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
-               ;;
-       -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-               os=-mint
-               ;;
-       -zvmoe)
-               os=-zvmoe
-               ;;
-       -dicos*)
-               os=-dicos
-               ;;
-       -pikeos*)
-               # Until real need of OS specific support for
-               # particular features comes up, bare metal
-               # configurations are quite functional.
-               case $basic_machine in
-                   arm*)
-                       os=-eabi
-                       ;;
-                   *)
-                       os=-elf
-                       ;;
-               esac
-               ;;
-       -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
-               ;;
-       pru-*)
-               os=-elf
-               ;;
-       *-be)
-               os=-beos
-               ;;
-       *-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
-               ;;
-       *-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-functions 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/configure.ac b/configure.ac
deleted file mode 100644 (file)
index 33f6c7d..0000000
+++ /dev/null
@@ -1,303 +0,0 @@
-dnl Process this file with autoconf to produce a configure script.
-
-AC_INIT()
-AC_PREREQ(2.52)
-
-AC_MSG_NOTICE([configuring ccache])
-
-dnl Enable developer mode if dev.mk.in exists.
-if test ! -f $srcdir/dev_mode_disabled; then
-    dev_mode=yes
-    AC_MSG_NOTICE(developer mode enabled)
-    AC_CONFIG_FILES([dev.mk])
-    include_dev_mk='include dev.mk'
-    version=`(git --git-dir=$srcdir/.git describe --dirty 2>/dev/null || echo vunknown) | sed -e 's/v//' -e 's/-/+/' -e 's/-/_/g'`
-    mkdir -p src
-    echo "extern const char CCACHE_VERSION@<:@@:>@; const char CCACHE_VERSION@<:@@:>@ = \"$version\";" >src/version.cpp
-else
-    dev_mode=no
-    AC_MSG_NOTICE(developer mode disabled)
-fi
-
-AC_CONFIG_HEADER(config.h)
-
-AC_CANONICAL_HOST
-
-case $host in
-    *mingw32* | *mingw64* | *cygwin* | *wince* | *mingwce*)
-        windows_os=yes
-        AC_DEFINE(_WIN32_WINNT,0x0600, Windows Vista or newer is required)
-        ;;
-    *os400* | *aix*)
-        AR="ar -X64"
-        ;;
-esac
-
-AC_SUBST(disable_cross)
-AC_SUBST(disable_man)
-AC_SUBST(extra_libs)
-AC_SUBST(extra_sources)
-AC_SUBST(extra_warnings)
-AC_SUBST(include_dev_mk)
-
-m4_include(m4/feature_macros.m4)
-m4_include(m4/ax_cxx_compile_stdcxx.m4)
-m4_include(m4/ax_check_compile_flag.m4)
-m4_include(m4/ax_pthread.m4)
-m4_include(m4/clang.m4)
-
-mkdir -p .deps src/third_party unittest
-
-dnl Checks for programs.
-AC_PROG_CC
-AX_CXX_COMPILE_STDCXX(11, noext, mandatory)
-_AC_LANG_COMPILER_CLANG
-AC_PROG_INSTALL
-
-AX_CHECK_COMPILE_FLAG([-mavx2], [AC_DEFINE(HAVE_AVX2, 1, Define to 1 if your compiler supports AVX2)])
-
-AX_PTHREAD
-LIBS="$PTHREAD_LIBS $LIBS"
-CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
-CXXFLAGS="$CXXFLAGS $PTHREAD_CFLAGS"
-LDFLAGS="$LDFLAGS $PTHREAD_CFLAGS"
-
-# Prefer bash, needed for test.sh
-AC_PATH_TOOL(BASH, bash, "/bin/bash")
-
-# If GCC (or clang), turn on warnings.
-if test "$ac_compiler_gnu" = yes; then
-    CFLAGS="$CFLAGS -Wall -W"
-    CXXFLAGS="$CXXFLAGS -Wall -W"
-else
-    CFLAGS="$CXXFLAGS -O"
-    CXXFLAGS="$CXXFLAGS -O"
-fi
-
-AC_ARG_ENABLE(more_warnings,
-  [AS_HELP_STRING([--enable-more-warnings],
-    [enable more compiler warnings])])
-if test "$dev_mode" = yes -o "$enable_more_warnings" = yes; then
-    extra_warnings="-Wextra -Wpedantic"
-    if test "$ac_compiler_clang" = yes; then
-        extra_warnings="$extra_warnings -Weverything"
-        AX_CHECK_COMPILE_FLAG([-Wno-c++2a-compat], [extra_warnings="$extra_warnings -Wno-c++2a-compat"],, [-Werror])
-        AX_CHECK_COMPILE_FLAG([-Wno-c++98-compat-pedantic], [extra_warnings="$extra_warnings -Wno-c++98-compat-pedantic"],, [-Werror])
-        AX_CHECK_COMPILE_FLAG([-Wno-c++98-compat], [extra_warnings="$extra_warnings -Wno-c++98-compat"],, [-Werror])
-        AX_CHECK_COMPILE_FLAG([-Wno-constexpr-not-const], [extra_warnings="$extra_warnings -Wno-constexpr-not-const"],, [-Werror])
-        AX_CHECK_COMPILE_FLAG([-Wno-conversion], [extra_warnings="$extra_warnings -Wno-conversion"],, [-Werror])
-        AX_CHECK_COMPILE_FLAG([-Wno-disabled-macro-expansion], [extra_warnings="$extra_warnings -Wno-disabled-macro-expansion"],, [-Werror])
-        AX_CHECK_COMPILE_FLAG([-Wno-documentation-unknown-command], [extra_warnings="$extra_warnings -Wno-documentation-unknown-command"],, [-Werror])
-        AX_CHECK_COMPILE_FLAG([-Wno-exit-time-destructors], [extra_warnings="$extra_warnings -Wno-exit-time-destructors"],, [-Werror])
-        AX_CHECK_COMPILE_FLAG([-Wno-format-nonliteral], [extra_warnings="$extra_warnings -Wno-format-nonliteral"],, [-Werror])
-        AX_CHECK_COMPILE_FLAG([-Wno-global-constructors], [extra_warnings="$extra_warnings -Wno-global-constructors"],, [-Werror])
-        AX_CHECK_COMPILE_FLAG([-Wno-implicit-fallthrough], [extra_warnings="$extra_warnings -Wno-implicit-fallthrough"],, [-Werror])
-        AX_CHECK_COMPILE_FLAG([-Wno-padded], [extra_warnings="$extra_warnings -Wno-padded"],, [-Werror])
-        AX_CHECK_COMPILE_FLAG([-Wno-return-std-move-in-c++11], [extra_warnings="$extra_warnings -Wno-return-std-move-in-c++11"],, [-Werror])
-        AX_CHECK_COMPILE_FLAG([-Wno-shadow-field-in-constructor], [extra_warnings="$extra_warnings -Wno-shadow-field-in-constructor"],, [-Werror])
-        AX_CHECK_COMPILE_FLAG([-Wno-shorten-64-to-32], [extra_warnings="$extra_warnings -Wno-shorten-64-to-32"],, [-Werror])
-        AX_CHECK_COMPILE_FLAG([-Wno-sign-conversion], [extra_warnings="$extra_warnings -Wno-sign-conversion"],, [-Werror])
-        AX_CHECK_COMPILE_FLAG([-Wno-undefined-func-template], [extra_warnings="$extra_warnings -Wno-undefined-func-template"],, [-Werror])
-        AX_CHECK_COMPILE_FLAG([-Wno-weak-vtables], [extra_warnings="$extra_warnings -Wno-weak-vtables"],, [-Werror])
-
-        # TODO: Enable these in the future:
-        AX_CHECK_COMPILE_FLAG([-Wno-old-style-cast], [extra_warnings="$extra_warnings -Wno-old-style-cast"],, [-Werror])
-        AX_CHECK_COMPILE_FLAG([-Wno-zero-as-null-pointer-constant], [extra_warnings="$extra_warnings -Wno-zero-as-null-pointer-constant"],, [-Werror])
-    fi
-fi
-
-AC_HEADER_DIRENT
-AC_HEADER_TIME
-AC_HEADER_SYS_WAIT
-
-AC_CHECK_TYPES(long long)
-
-AC_CHECK_HEADERS(ctype.h pwd.h stdlib.h string.h strings.h sys/time.h sys/mman.h)
-AC_CHECK_HEADERS(syslog.h)
-AC_CHECK_HEADERS(termios.h)
-AC_CHECK_HEADERS(sys/ioctl.h)
-AC_CHECK_HEADERS(linux/fs.h)
-AC_CHECK_HEADERS(sys/clonefile.h)
-
-AC_CHECK_FUNCS(asctime_r)
-AC_CHECK_FUNCS(geteuid)
-AC_CHECK_FUNCS(getopt_long)
-AC_CHECK_FUNCS(getpwuid)
-AC_CHECK_FUNCS(gettimeofday)
-AC_CHECK_FUNCS(localtime_r)
-AC_CHECK_FUNCS(mkstemp)
-AC_CHECK_FUNCS(posix_fallocate)
-AC_CHECK_FUNCS(realpath)
-AC_CHECK_FUNCS(setenv)
-AC_CHECK_FUNCS(strndup)
-AC_CHECK_FUNCS(syslog)
-AC_CHECK_FUNCS(unsetenv)
-AC_CHECK_FUNCS(utimes)
-
-AC_CHECK_MEMBERS([struct stat.st_ctim, struct stat.st_mtim])
-AC_CHECK_MEMBERS([struct statfs.f_fstypename], [], [], [#include <sys/mount.h>])
-
-dnl Check if -lm is needed.
-AC_SEARCH_LIBS(cos, m)
-
-dnl Check for libzstd
-zstd_version=1.4.4
-zstd_url=https://github.com/facebook/zstd/releases/download/v${zstd_version}/zstd-${zstd_version}.tar.gz
-
-AC_ARG_WITH(libzstd-from-internet,
-  [AS_HELP_STRING([--with-libzstd-from-internet],
-    [download and use libzstd from the Internet instead of using the system's default libzstd])])
-if test x${with_libzstd_from_internet} = x; then
-    AC_CHECK_LIB(zstd, ZSTD_versionNumber, [found_libzstd=yes])
-    if test x${found_libzstd} = x; then
-        AC_MSG_ERROR(please install libzstd or use --with-libzstd-from-internet)
-    fi
-    LIBS="$LIBS -lzstd"
-else
-    zstd_archive=`basename ${zstd_url}`
-    if ! test -f ${zstd_archive}; then
-        AC_CHECK_TOOL(WGET, wget)
-        if test -n "$WGET"; then
-            AC_MSG_NOTICE(downloading libzstd from $zstd_url)
-            wget -q ${zstd_url}
-        else
-            AC_CHECK_TOOL(CURL, curl)
-            if test -n "$CURL"; then
-                AC_MSG_NOTICE(downloading libzstd from $zstd_url)
-                curl -sLOJ ${zstd_url}
-            else
-                AC_MSG_ERROR(please install wget or curl)
-            fi
-        fi
-    fi
-    if ! test -f $zstd_archive; then
-        AC_MSG_ERROR(failed to download $zstd_url)
-    fi
-    (cd src/third_party && tar -xzf ../../${zstd_archive})
-    rm -rf src/third_party/zstd
-    mv src/third_party/zstd-${zstd_version} src/third_party/zstd
-    CPPFLAGS="$CPPFLAGS -I$PWD/src/third_party/zstd/lib"
-    extra_libs="src/third_party/zstd/lib/libzstd.a"
-fi
-
-dnl Check for libb2
-libb2_version=0.98.1
-libb2_url=https://github.com/BLAKE2/libb2/releases/download/v${libb2_version}/libb2-${libb2_version}.tar.gz
-
-AC_ARG_WITH(libb2-from-internet,
-  [AS_HELP_STRING([--with-libb2-from-internet],
-    [download and use libb2 from the Internet instead of using the system's default libb2])])
-if test x${with_libb2_from_internet} = x; then
-    AC_CHECK_LIB([b2],[blake2b], [found_libb2=yes])
-    if test x${found_libb2} = x; then
-        AC_MSG_ERROR(please install libb2 or use --with-libb2-from-internet)
-    fi
-    LIBS="$LIBS -lb2"
-else
-    libb2_archive=`basename ${libb2_url}`
-    if ! test -f ${libb2_archive}; then
-        AC_CHECK_TOOL(WGET, wget)
-        if test -n "$WGET"; then
-            AC_MSG_NOTICE(downloading libb2 from $libb2_url)
-            wget -q ${libb2_url}
-        else
-            AC_CHECK_TOOL(CURL, curl)
-            if test -n "$CURL"; then
-                AC_MSG_NOTICE(downloading libb2 from $libb2_url)
-                curl -sLOJ ${libb2_url}
-            else
-                AC_MSG_ERROR(please install wget or curl)
-            fi
-        fi
-    fi
-    if ! test -f $libb2_archive; then
-        AC_MSG_ERROR(failed to download $libb2_url)
-    fi
-    (cd src/third_party && tar -xzf ../../${libb2_archive})
-    rm -rf src/third_party/libb2
-    mv src/third_party/libb2-${libb2_version} src/third_party/libb2
-    # try to make clang happy by changing the header guard macros
-    sed -i -e 's/__BLAKE2_H__/BLAKE2_H/' src/third_party/libb2/src/blake2.h
-    CPPFLAGS="$CPPFLAGS -I$PWD/src/third_party/libb2/src"
-    extra_libs="$extra_libs src/third_party/libb2/src/.libs/libb2.a"
-fi
-
-if test "$cross_compiling" != no -o "$host_cpu" != 'x86_64'; then
-    disable_cross=''
-else
-    disable_cross='#'
-fi
-
-AC_ARG_ENABLE(man,
-  [AS_HELP_STRING([--disable-man],
-    [disable installing man pages])])
-if test x${enable_man} = xno; then
-    disable_man='#'
-fi
-
-AC_ARG_ENABLE(tracing,
-  [AS_HELP_STRING([--enable-tracing],
-    [enable possibility to use internal ccache tracing])])
-if test x${enable_tracing} = xyes; then
-    CPPFLAGS="$CPPFLAGS -DMTR_ENABLED"
-    extra_sources="src/third_party/minitrace.c"
-fi
-
-dnl Linking on Windows needs ws2_32
-if test x${windows_os} = xyes; then
-    LDFLAGS="$LDFLAGS -static"
-    LIBS="$LIBS -lws2_32"
-    AC_CHECK_FUNCS(GetFinalPathNameByHandleW,[],[LIBS="$LIBS -lpsapi"])
-fi
-
-AC_C_BIGENDIAN
-
-AC_C_INLINE
-
-dnl Check for "extern inline".
-AC_CACHE_CHECK(
-    for extern inline,
-    ac_cv_c_extern_inline,
-    [
-    ac_cv_c_extern_inline=no
-    AC_TRY_COMPILE(
-        [
-        extern $ac_cv_c_inline double foo(double x);
-        extern $ac_cv_c_inline double foo(double x) { return x+1.0; };
-        double foo (double x) { return x + 1.0; };
-        ],
-        [foo(1.0)],
-        [ac_cv_c_extern_inline="yes"])])
-if test "$ac_cv_c_extern_inline" != no ; then
-    AC_DEFINE(HAVE_EXTERN_INLINE, 1,
-              Define to 1 if your compiler supports extern inline)
-fi
-
-if test ! -f $srcdir/src/version.cpp -a ! -f src/version.cpp ; then
-    AC_MSG_WARN(unable to determine ccache version)
-    echo "extern const char CCACHE_VERSION@<:@@:>@; const char CCACHE_VERSION@<:@@:>@ = \"unknown\";" >src/version.cpp
-fi
-
-AC_CONFIG_FILES([Makefile])
-AC_OUTPUT
-
-cat <<EOF >config.h.tmp
-#pragma once
-#ifdef __clang__
-#  pragma clang diagnostic push
-#  if __has_warning("-Wreserved-id-macro")
-#    pragma clang diagnostic ignored "-Wreserved-id-macro"
-#  endif
-#endif
-
-EOF
-cat config.h >>config.h.tmp
-cat <<EOF >>config.h.tmp
-
-#ifdef __clang__
-#  pragma clang diagnostic pop
-#endif
-EOF
-mv config.h.tmp config.h
-
-AC_MSG_NOTICE(now build ccache by running make)
diff --git a/dev.mk.in b/dev.mk.in
deleted file mode 100644 (file)
index 2ad6eb4..0000000
--- a/dev.mk.in
+++ /dev/null
@@ -1,242 +0,0 @@
-# GNU make syntax reigns in this file.
-
-all_cflags += -Werror
-all_cppflags += -MD -MP -MF .deps/$(subst .._,,$(subst /,_,$(subst $(srcdir)/,,$<))).d -MQ $@
-all_cxxflags += -Werror
-
-A2X = a2x
-ASCIIDOC = asciidoc
-CLANG_FORMAT = clang-format
-CLANG_TIDY = clang-tidy
-COMPILEDB = compiledb
-CPPCHECK = cppcheck
-CPPCHECK_SUPPRESSIONS = misc/cppcheck-suppressions.txt
-DOCKER = docker
-SCAN_BUILD = scan-build
-SHELLCHECK = shellcheck
-SHELLCHECK_EXCLUDES = misc/shellcheck-excludes.txt
-TEST = test
-
-git := git --git-dir=$(srcdir)/.git
-version := \
-    $(shell ($(git) describe --exact-match \
-             || echo "$$($(git) rev-parse --abbrev-ref HEAD).$$($(git) rev-parse HEAD | cut -c1-8)") 2>/dev/null \
-            | sed -re 's/^v([0-9].+)/\1/')
-
-dist_dir = ccache-$(version)
-dist_archives = \
-    ccache-$(version).tar.gz \
-    ccache-$(version).tar.xz
-
-generated_docs = \
-    LICENSE.html \
-    doc/AUTHORS.html \
-    doc/MANUAL.html \
-    doc/NEWS.html \
-    doc/ccache.1
-built_dist_files = $(generated_sources) $(generated_docs)
-
-non_third_party_headers_without_cpp = \
-    src/ArgsInfo.hpp \
-    src/Checksum.hpp \
-    src/File.hpp \
-    src/FormatNonstdStringView.hpp \
-    src/NonCopyable.hpp \
-    src/NullCompressor.hpp \
-    src/NullDecompressor.hpp \
-    src/ProgressBar.hpp \
-    src/Stat.hpp \
-    src/StdMakeUnique.hpp \
-    src/ThreadPool.hpp \
-    src/exceptions.hpp \
-    src/macroskip.hpp \
-    src/system.hpp
-
-non_third_party_headers = \
-    $(subst .cpp,.hpp,$(non_third_party_sources)) \
-    $(non_third_party_headers_without_cpp)
-
-third_party_headers = \
-    src/third_party/catch.hpp \
-    src/third_party/fmt/core.h \
-    src/third_party/fmt/format-inl.h \
-    src/third_party/fmt/format.h \
-    src/third_party/getopt_long.h \
-    src/third_party/minitrace.h \
-    src/third_party/nonstd/optional.hpp \
-    src/third_party/nonstd/string_view.hpp \
-    src/third_party/xxhash.h
-headers = $(non_third_party_headers) $(third_party_headers)
-
-files_to_clean += *.tar.gz *.tar.xz *.xml doc/*.xml .deps/* perfdir.*
-files_to_clean += compile_commands.json
-files_to_distclean += $(built_dist_files) src/version.cpp
-files_to_distclean += .deps dev.mk
-
-source_dist_files = \
-    $(non_third_party_sources) \
-    $(third_party_sources) \
-    $(headers) \
-    $(test_sources) \
-    CONTRIBUTING.md \
-    GPL-3.0.txt \
-    LICENSE.adoc \
-    Makefile.in \
-    README.md \
-    autogen.sh \
-    config.guess \
-    config.h.in \
-    config.sub \
-    configure \
-    configure.ac \
-    dev.mk.in \
-    doc/AUTHORS.adoc \
-    doc/MANUAL.adoc \
-    doc/NEWS.adoc \
-    install-sh \
-    m4 \
-    src/main.cpp \
-    src/third_party/minitrace.c \
-    test/run \
-    test/suites/*.bash \
-    unittest/catch2_tests.cpp \
-    unittest/catch2_tests.hpp
-
-dist_files = \
-    $(addprefix $(srcdir)/, $(source_dist_files)) \
-    $(built_dist_files)
-
-ifneq ($(shell sed -n 's/.*"\(.*\)".*/\1/p' src/version.cpp 2>/dev/null),$(version))
-  $(shell echo 'extern const char CCACHE_VERSION[];' >src/version.cpp)
-  $(shell echo 'const char CCACHE_VERSION[] = "$(version)";' >>src/version.cpp)
-endif
-src/version.o: src/version.cpp
-
-.PHONY: dist
-dist: $(dist_archives)
-
-$(dist_archives): $(dist_files)
-       tmpdir=$$(mktemp -d /tmp/tmp-ccache-dist.XXXXXX) && \
-       dir=$$tmpdir/$(dist_dir) && \
-       mkdir $$dir && \
-       (cd $(srcdir) && \
-        rsync -r --relative $(source_dist_files) $$dir) && \
-       cp $(srcdir)/doc/INSTALL-from-release-archive.md $$dir/INSTALL.md && \
-       (cd $(builddir) && \
-        rsync -r --relative $(built_dist_files) $$dir) && \
-       echo "Remove this file to enable developer mode." >$$dir/dev_mode_disabled && \
-       (cd $$tmpdir && \
-        tarcompression= && \
-        case $@ in \
-            *.gz) tarcompression=-z ;; \
-            *.xz) tarcompression=-J ;; \
-        esac && \
-        tar -c $$tarcompression -f $(CURDIR)/$@ $(dist_dir)) && \
-       rm -rf $$tmpdir
-
-# $(1): extra configure options
-define do_distcheck
-       tmpdir=$$(mktemp -d /tmp/tmp-ccache-distcheck.XXXXXX) && \
-       (cd $$tmpdir && \
-        tar xf $(CURDIR)/$< && \
-        mkdir -p $(dist_dir)/build && \
-        chmod -R a-w $(dist_dir) && \
-        chmod u+w $(dist_dir)/build && \
-        cd $(dist_dir)/build && \
-        ../configure --enable-more-warnings --prefix=$$tmpdir/root --sysconfdir=/etc $(1) && \
-        $(MAKE) install V=1 && \
-        $(MAKE) installcheck V=1) && \
-       chmod -R u+w $$tmpdir/$(dist_dir) && \
-       rm -rf $$tmpdir
-endef
-
-.PHONY: distcheck
-distcheck: $(firstword $(dist_archives))
-       $(call do_distcheck, CFLAGS=-Werror CXXFLAGS=-Werror)
-       $(call do_distcheck, --with-libzstd-from-internet --with-libb2-from-internet)
-       $(call do_distcheck, CC=clang CXX=clang++)
-
-.PHONY: docs
-docs: $(generated_docs)
-
-%.html: %.adoc
-       @mkdir -p $(@D)
-       $(if $(quiet),@echo "  ASCIIDOC $@")
-       $(Q)$(ASCIIDOC) -o $@ -a revnumber=$(version) -a toc -b xhtml11 $<
-
-%.xml: %.adoc
-       @mkdir -p $(@D)
-# Make literals stand out as bold in the man page:
-       $(if $(quiet),@echo "  ASCIIDOC $@")
-       $(Q)$(ASCIIDOC) -a revnumber=$(version) -d manpage -b docbook -o - $< | \
-         perl -pe 's!<literal>(.*?)</literal>!<emphasis role="strong">\1</emphasis>!g' >$@
-
-doc/ccache.1: doc/MANUAL.xml
-       $(if $(quiet),@echo "  A2X      $@")
-       $(Q)$(A2X) --doctype manpage --format manpage $<
-
-.PHONY: update-authors
-update-authors:
-       git log --pretty=format:"%H %aN%n%(trailers:only)" \
-         | grep -Ev 'd7c5056beda5483fcd5c098165fffd9be86fe98d|http|Conflicts:' \
-         | grep '^[^ ]' \
-         | sed -r -e 's/[^ ]+/*/' -e 's/<.*//' -e 's/ *$$//' \
-         | sort -u \
-         | perl -00 -p -i -e 's/^\*.*/<STDIN> . "\n"/es' doc/AUTHORS.adoc
-
-.PHONY: check-syntax
-check-syntax:
-       $(CC) $(all_cppflags) -I. $(filter-out -g% -O%,$(all_cxxflags)) -S -o /dev/null $(CHK_SOURCES)
-
-.PHONY: cppcheck
-cppcheck:
-       cd $(srcdir) && $(CPPCHECK) --suppressions-list=$(CPPCHECK_SUPPRESSIONS) \
-         --inline-suppr -q --enable=all --force -I $(CURDIR) \
-         --template='cppcheck: warning: {id}:{file}:{line}: {message}' \
-         $(non_third_party_sources) src/main.cpp $(test_sources)
-
-.PHONY: shellcheck
-shellcheck: test/suites/*.bash
-       $(SHELLCHECK) --shell=bash --exclude=$(shell sed -e 's/:.*//' <$(SHELLCHECK_EXCLUDES) | grep -v '#' | tr '\n' ',' | sed -e 's/,$$//') $^
-
-.PHONY: format
-format:
-       @cd $(srcdir) && misc/format.sh
-
-# Not using parallel execution because target is most likely being run on non-interactive CI system,
-# so no user is waiting for immediate results, and it avoids possibly interleaved output.
-.PHONY: check_format
-check_format:
-       @[ -t 1 ] && export cf_diff_color="--color=always"; \
-       cd $(srcdir) && misc/check_format.sh || \
-               { echo; echo "Error: Sources are not formatted with clang-format."; \
-                 echo 'Run "make format" or apply the above diff.'; echo; exit 1; } 1>&2
-
-# pip install compiledb
-compile_commands.json:
-       $(COMPILEDB) -n $(MAKE) all unittest
-
-.PHONY: tidy
-tidy: compile_commands.json
-       $(CLANG_TIDY) $(all_sources)
-
-.PHONY: analyze
-analyze:
-       $(SCAN_BUILD) --use-cc="$(CC)" --use-c++="$(CXX)" $(srcdir)/configure
-       $(SCAN_BUILD) --use-cc="$(CC)" --use-c++="$(CXX)" --status-bugs $(MAKE) -B
-
-BUILDENV = ubuntu
-DOCKER_IMAGE_TAG = ccache/build:$(BUILDENV)
-
-.PHONY: docker
-docker: buildenv/$(BUILDENV)/Dockerfile
-       $(DOCKER) inspect $(DOCKER_IMAGE_TAG) >/dev/null || $(DOCKER) build -t $(DOCKER_IMAGE_TAG) buildenv/$(BUILDENV)
-       $(DOCKER) run --rm -v $(PWD):/build -w /build $(DOCKER_IMAGE_TAG) misc/build.sh $(TEST)
-
-.PHONY: travis
-travis: .travis/Dockerfile
-       $(DOCKER) inspect travis-build >/dev/null || $(DOCKER) build -t travis-build .travis
-       $(DOCKER) run --rm --volume $(PWD):/src --tmpfs /dst:rw,exec --env ASAN_OPTIONS='$(ASAN_OPTIONS)' travis-build \
-       sh -c "cd /src && ./autogen.sh && cd /dst && CC=$(CC) CFLAGS='$(CFLAGS)' CXX=$(CXX) CXXFLAGS='$(CXXFLAGS)' LDFLAGS='$(LDFLAGS)' /src/configure $(CONFIGURE) && CC=$(CC) CFLAGS='$(CFLAGS)' make V=$(V) && CC=$(CC) make V=$(V) $(TEST)"
-
--include .deps/*.d
diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt
new file mode 100644 (file)
index 0000000..3ecef50
--- /dev/null
@@ -0,0 +1,57 @@
+
+find_program (ASCIIDOC_EXE asciidoc)
+mark_as_advanced(ASCIIDOC_EXE) # don't show in ccmake
+if (NOT ASCIIDOC_EXE)
+    message (WARNING "Could not find asciidoc: documentation & manpage will not be generated")
+else()
+  #
+  # documentation
+  #
+  add_custom_target(documentation)
+
+  function(generate_html in out)
+    add_custom_command (
+      TARGET documentation
+      COMMAND ${ASCIIDOC_EXE} -o "${CMAKE_BINARY_DIR}/${out}" -a revnumber="${VERSION}" -a toc -b xhtml11 "${CMAKE_SOURCE_DIR}/${in}"
+      BYPRODUCTS "${out}"
+    )
+  endfunction()
+
+  add_custom_command (
+    TARGET documentation
+    COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_BINARY_DIR}/doc"
+    COMMAND misc/update_authors.sh
+    BYPRODUCTS "doc"
+    WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+  )
+
+  generate_html(LICENSE.adoc LICENSE.html)
+  generate_html(doc/AUTHORS.adoc doc/AUTHORS.html)
+  generate_html(doc/MANUAL.adoc doc/MANUAL.html)
+  generate_html(doc/NEWS.adoc doc/NEWS.html)
+
+  #
+  # manpage
+  #
+
+  find_program (A2X_EXE a2x)
+  mark_as_advanced(A2X_EXE) # don't show in ccmake
+  if (NOT A2X_EXE)
+      message (WARNING "Could not find a2x: manpage will not be generated")
+  else()
+    add_custom_target(manpage)
+
+    # MANUAL.adoc -> MANUAL.xml -> MANUAL manpage
+    add_custom_command (
+            TARGET manpage
+            COMMAND ${ASCIIDOC_EXE} -o - -a revnumber=${VERSION} -d manpage -b docbook "${CMAKE_SOURCE_DIR}/doc/MANUAL.adoc" | perl -pe 's!<literal>\(.*?\)</literal>!<emphasis role="strong">\\1</emphasis>!g' > "${CMAKE_BINARY_DIR}/MANUAL.xml"
+            BYPRODUCTS "${CMAKE_BINARY_DIR}/MANUAL.xml"
+        )
+
+        add_custom_command (
+            TARGET manpage
+            COMMAND a2x --doctype manpage --format manpage "${CMAKE_BINARY_DIR}/MANUAL.xml"
+            BYPRODUCTS ccache.1
+        )
+  endif()
+endif()
index c856f1fb76113a8b7c96828f9639c05609594538..e211c9ff95ecb629140c8d50c7a328dc9857f7d6 100644 (file)
@@ -7,7 +7,7 @@ Tracing
 In order to see what ccache is doing, it is possible to enable internal
 tracing:
 
-* Build ccache with the `--enable-tracing` configure option.
+* Build ccache with the `-DENABLE_TRACING=1` cmake option.
 * Set the environment variable `CCACHE_INTERNAL_TRACE` to instruct ccache to
   create trace files at runtime.
 
diff --git a/doc/INSTALL-from-release-archive.md b/doc/INSTALL-from-release-archive.md
deleted file mode 100644 (file)
index 0a54b38..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-ccache installation from release archive
-========================================
-
-Prerequisites
--------------
-
-To build ccache from a
-[release archive](https://ccache.dev/download.html), you need:
-
-- A C++11 compiler.
-- A C89 compiler.
-- [libb2](https://github.com/BLAKE2/libb2). If you don't have libb2 installed
-  and can't or don't want to install it on your system, you can pass
-  `--with-libb2-from-internet` to the configure script, which will make the
-  script download libb2 from the Internet and unpack it in the local source
-  tree. ccache will then be linked statically to the locally built libb2.
-- [libzstd](https://www.zstd.net). If you don't have libzstd installed and
-  can't or don't want to install it on your system, you can pass
-  `--with-libzstd-from-internet` to the configure script, which will make the
-  script download libzstd from the Internet and unpack it in the local source
-  tree. ccache will then be linked statically to the locally built libzstd.
-
-
-Installation
-------------
-
-To compile and install ccache, run these commands:
-
-    ./configure
-    make
-    make install
-
-You may set the installation directory and other parameters by options to
-`./configure`. To see them, run `./configure --help`.
-
-There are two ways to use ccache. You can either prefix your compilation
-commands with `ccache` or you can create a symbolic link (named as your
-compiler) to ccache. The first method is most convenient if you just want to
-try out ccache or wish to use it for some specific projects. The second method
-is most useful for when you wish to use ccache for all your compilations.
-
-To install for usage by the first method just copy ccache to somewhere in your
-path.
-
-To install for the second method, do something like this:
-
-    cp ccache /usr/local/bin/
-    ln -s ccache /usr/local/bin/gcc
-    ln -s ccache /usr/local/bin/g++
-    ln -s ccache /usr/local/bin/cc
-    ln -s ccache /usr/local/bin/c++
-
-And so forth. This will work as long as `/usr/local/bin` comes before the path
-to the compiler (which is usually in `/usr/bin`). After installing you may wish
-to run `which gcc` to make sure that the correct link is being used.
-
-NOTE: Do not use a hard link, use a symbolic link. A hard link will cause
-"interesting" problems.
index 6599645f76240f6177cd3890907180b3510f0b68..c4961a413fac3f7cc60cb932e63921c3f569995a 100644 (file)
@@ -4,7 +4,8 @@ ccache installation from source repository
 Prerequisites
 -------------
 
-To build ccache from a source repository, you need:
+To build ccache from a source repository or from a
+[release archive](https://ccache.dev/download.html), you need:
 
 - A C++11 compiler.
 - A C99 compiler.
@@ -16,14 +17,14 @@ To build ccache from a source repository, you need:
   script and related files.
 - [libb2](https://github.com/BLAKE2/libb2). If you don't have libb2 installed
   and can't or don't want to install it on your system, you can pass
-  `--with-libb2-from-internet` to the configure script, which will make the
-  script download libb2 from the Internet and unpack it in the local source
-  tree. ccache will then be linked statically to the locally built libb2.
+  `-DUSE_LIBB2_FROM_INTERNET=ON` to cmake, which will download libb2 from the
+  Internet and unpack it in the local binary tree.
+  ccache will then be linked statically to the locally built libb2.
 - [libzstd](https://www.zstd.net). If you don't have libzstd installed and
   can't or don't want to install it on your system, you can pass
-  `--with-libzstd-from-internet` to the configure script, which will make the
-  script download libzstd from the Internet and unpack it in the local source
-  tree. ccache will then be linked statically to the locally built libzstd.
+  `-DUSE_LIBZSTD_FROM_INTERNET=ON` to cmake, which will download libzstd from
+  the Internet and unpack it in the local binary tree.
+  ccache will then be linked statically to the locally built libzstd.
 
 To debug and run the performance test suite you'll also need:
 
@@ -35,13 +36,13 @@ Installation
 
 To compile and install ccache, run these commands:
 
-    ./autogen.sh
-    ./configure
+    mkdir build && cd build
+    cmake ..
     make
     make install
 
-You may set the installation directory and other parameters by options to
-`./configure`. To see them, run `./configure --help`.
+You may set the installation directory to e.g. /usr by replacing above cmake
+call with with `cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr ..`.
 
 There are two ways to use ccache. You can either prefix your compilation
 commands with `ccache` or you can create a symbolic link (named as your
index 53600cd85be6d3c0dc349caa4e7382fedaffd641..ea83ca7eefdff324f6c2cb48a9477b4406671d3f 100644 (file)
@@ -25,6 +25,8 @@ High-level summary of changes (work in progress)
 
 - A C++11 compiler is now required to build ccache.
 
+- Build tooling switched from automake to cmake.
+
 - Added a `-x/--show-compression` option which shows some statistics about
   cache compression.
 
diff --git a/docker.sh b/docker.sh
new file mode 100755 (executable)
index 0000000..8815917
--- /dev/null
+++ b/docker.sh
@@ -0,0 +1,48 @@
+#!/bin/sh -xe
+
+# This script will run misc/build.sh within a docker image.
+# ToDo: use ccache within docker and preserve the cache.
+
+# Parameter:
+#  First parameter     directory name within buildenv, defaults to travis
+#  Other parameters    will be passed to misc/build.sh
+
+echo "Warning: Docker support is rather experimental\n"
+
+BUILDENV=${1:-travis}
+
+# expose remaining parameters as $*
+shift $(( $# > 0 ? 1 : 0 ))
+
+# Pulling the docker image is actually slower than just creating it locally!
+# (comparison on same machine: ~90 sec for pulling but only ~50secs for building locally)
+DOCKER_IMAGE_TAG=alexanderlanin/ccache:${BUILDENV}-1
+
+# Build (if not exists):
+docker build -t ${DOCKER_IMAGE_TAG} buildenv/${BUILDENV}
+
+# Cache compilation across docker sessions
+# ToDo: separate cache for each docker image or is it fine like that?
+mkdir -p build
+mkdir -p build/docker-ccache
+
+docker run --rm \
+  --volume ${PWD}:/source \
+  --volume ${PWD}/build/docker-ccache:/ccache \
+  --tmpfs /builddir:rw,exec \
+  --workdir /builddir \
+  --env CC="${CC:-}" \
+  --env CFLAGS="${CFLAGS:-}" \
+  --env CXX="${CXX:-}" \
+  --env CXXFLAGS="${CXXFLAGS:-}" \
+  --env LDFLAGS="${LDFLAGS:-}" \
+  --env ASAN_OPTIONS="${ASAN_OPTIONS:-}" \
+  --env CCACHE_LOC="/source" \
+  --env SPECIAL="${SPECIAL:-}" \
+  --env SCAN_BUILD="${SCAN_BUILD:-}" \
+  --env CMAKE_PARAMS="${CMAKE_PARAMS:-}" \
+  --env BUILDEXTRAFLAGS="${BUILDEXTRAFLAGS:-}" \
+  --env NO_TEST="${NO_TEST:-}" \
+  --env CCACHE_DIR=/ccache \
+  ${DOCKER_IMAGE_TAG} \
+  /source/ci/build.sh $*
diff --git a/install-sh b/install-sh
deleted file mode 100755 (executable)
index ba5e22a..0000000
+++ /dev/null
@@ -1,238 +0,0 @@
-#! /bin/sh
-#
-# install - install a program, script, or datafile
-# This comes from X11R5.
-#
-# Calling this script install-sh is preferred over install.sh, to prevent
-# `make' implicit rules from creating a file called install from it
-# when there is no Makefile.
-#
-# This script is compatible with the BSD install script, but was written
-# from scratch.
-#
-
-
-# set DOITPROG to echo to test this script
-
-# Don't use :- since 4.3BSD and earlier shells don't like it.
-doit="${DOITPROG-}"
-
-
-# put in absolute paths if you don't have them in your path; or use env. vars.
-
-mvprog="${MVPROG-mv}"
-cpprog="${CPPROG-cp}"
-chmodprog="${CHMODPROG-chmod}"
-chownprog="${CHOWNPROG-chown}"
-chgrpprog="${CHGRPPROG-chgrp}"
-stripprog="${STRIPPROG-strip}"
-rmprog="${RMPROG-rm}"
-mkdirprog="${MKDIRPROG-mkdir}"
-
-transformbasename=""
-transform_arg=""
-instcmd="$mvprog"
-chmodcmd="$chmodprog 0755"
-chowncmd=""
-chgrpcmd=""
-stripcmd=""
-rmcmd="$rmprog -f"
-mvcmd="$mvprog"
-src=""
-dst=""
-dir_arg=""
-
-while [ x"$1" != x ]; do
-    case $1 in
-       -c) instcmd="$cpprog"
-           shift
-           continue;;
-
-       -d) dir_arg=true
-           shift
-           continue;;
-
-       -m) chmodcmd="$chmodprog $2"
-           shift
-           shift
-           continue;;
-
-       -o) chowncmd="$chownprog $2"
-           shift
-           shift
-           continue;;
-
-       -g) chgrpcmd="$chgrpprog $2"
-           shift
-           shift
-           continue;;
-
-       -s) stripcmd="$stripprog"
-           shift
-           continue;;
-
-       -t=*) transformarg=`echo $1 | sed 's/-t=//'`
-           shift
-           continue;;
-
-       -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
-           shift
-           continue;;
-
-       *)  if [ x"$src" = x ]
-           then
-               src=$1
-           else
-               # this colon is to work around a 386BSD /bin/sh bug
-               :
-               dst=$1
-           fi
-           shift
-           continue;;
-    esac
-done
-
-if [ x"$src" = x ]
-then
-       echo "install:  no input file specified"
-       exit 1
-else
-       true
-fi
-
-if [ x"$dir_arg" != x ]; then
-       dst=$src
-       src=""
-
-       if [ -d $dst ]; then
-               instcmd=:
-       else
-               instcmd=mkdir
-       fi
-else
-
-# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
-# might cause directories to be created, which would be especially bad
-# if $src (and thus $dsttmp) contains '*'.
-
-       if [ -f $src -o -d $src ]
-       then
-               true
-       else
-               echo "install:  $src does not exist"
-               exit 1
-       fi
-
-       if [ x"$dst" = x ]
-       then
-               echo "install:  no destination specified"
-               exit 1
-       else
-               true
-       fi
-
-# If destination is a directory, append the input filename; if your system
-# does not like double slashes in filenames, you may need to add some logic
-
-       if [ -d $dst ]
-       then
-               dst="$dst"/`basename $src`
-       else
-               true
-       fi
-fi
-
-## this sed command emulates the dirname command
-dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
-
-# Make sure that the destination directory exists.
-#  this part is taken from Noah Friedman's mkinstalldirs script
-
-# Skip lots of stat calls in the usual case.
-if [ ! -d "$dstdir" ]; then
-defaultIFS='
-'
-IFS="${IFS-${defaultIFS}}"
-
-oIFS="${IFS}"
-# Some sh's can't handle IFS=/ for some reason.
-IFS='%'
-set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
-IFS="${oIFS}"
-
-pathcomp=''
-
-while [ $# -ne 0 ] ; do
-       pathcomp="${pathcomp}${1}"
-       shift
-
-       if [ ! -d "${pathcomp}" ] ;
-        then
-               $mkdirprog "${pathcomp}"
-       else
-               true
-       fi
-
-       pathcomp="${pathcomp}/"
-done
-fi
-
-if [ x"$dir_arg" != x ]
-then
-       $doit $instcmd $dst &&
-
-       if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
-       if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
-       if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
-       if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
-else
-
-# If we're going to rename the final executable, determine the name now.
-
-       if [ x"$transformarg" = x ]
-       then
-               dstfile=`basename $dst`
-       else
-               dstfile=`basename $dst $transformbasename |
-                       sed $transformarg`$transformbasename
-       fi
-
-# don't allow the sed command to completely eliminate the filename
-
-       if [ x"$dstfile" = x ]
-       then
-               dstfile=`basename $dst`
-       else
-               true
-       fi
-
-# Make a temp file name in the proper directory.
-
-       dsttmp=$dstdir/#inst.$$#
-
-# Move or copy the file name to the temp name
-
-       $doit $instcmd $src $dsttmp &&
-
-       trap "rm -f ${dsttmp}" 0 &&
-
-# and set any options; do chmod last to preserve setuid bits
-
-# If any of these fail, we abort the whole thing.  If we want to
-# ignore errors from any of these, just make sure not to ignore
-# errors from the above "$doit $instcmd $src $dsttmp" command.
-
-       if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
-       if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
-       if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
-       if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
-
-# Now rename the file to the real destination.
-
-       $doit $rmcmd -f $dstdir/$dstfile &&
-       $doit $mvcmd $dsttmp $dstdir/$dstfile
-
-fi &&
-
-
-exit 0
diff --git a/m4/ax_check_compile_flag.m4 b/m4/ax_check_compile_flag.m4
deleted file mode 100644 (file)
index bd753b3..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-# ===========================================================================
-#  https://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html
-# ===========================================================================
-#
-# SYNOPSIS
-#
-#   AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT])
-#
-# DESCRIPTION
-#
-#   Check whether the given FLAG works with the current language's compiler
-#   or gives an error.  (Warnings, however, are ignored)
-#
-#   ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
-#   success/failure.
-#
-#   If EXTRA-FLAGS is defined, it is added to the current language's default
-#   flags (e.g. CFLAGS) when the check is done.  The check is thus made with
-#   the flags: "CFLAGS EXTRA-FLAGS FLAG".  This can for example be used to
-#   force the compiler to issue an error when a bad flag is given.
-#
-#   INPUT gives an alternative input source to AC_COMPILE_IFELSE.
-#
-#   NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
-#   macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG.
-#
-# LICENSE
-#
-#   Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
-#   Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
-#
-#   Copying and distribution of this file, with or without modification, are
-#   permitted in any medium without royalty provided the copyright notice
-#   and this notice are preserved.  This file is offered as-is, without any
-#   warranty.
-
-#serial 6
-
-AC_DEFUN([AX_CHECK_COMPILE_FLAG],
-[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF
-AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl
-AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [
-  ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
-  _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1"
-  AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],
-    [AS_VAR_SET(CACHEVAR,[yes])],
-    [AS_VAR_SET(CACHEVAR,[no])])
-  _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags])
-AS_VAR_IF(CACHEVAR,yes,
-  [m4_default([$2], :)],
-  [m4_default([$3], :)])
-AS_VAR_POPDEF([CACHEVAR])dnl
-])dnl AX_CHECK_COMPILE_FLAGS
diff --git a/m4/ax_cxx_compile_stdcxx.m4 b/m4/ax_cxx_compile_stdcxx.m4
deleted file mode 100644 (file)
index 43087b2..0000000
+++ /dev/null
@@ -1,951 +0,0 @@
-# ===========================================================================
-#  https://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx.html
-# ===========================================================================
-#
-# SYNOPSIS
-#
-#   AX_CXX_COMPILE_STDCXX(VERSION, [ext|noext], [mandatory|optional])
-#
-# DESCRIPTION
-#
-#   Check for baseline language coverage in the compiler for the specified
-#   version of the C++ standard.  If necessary, add switches to CXX and
-#   CXXCPP to enable support.  VERSION may be '11' (for the C++11 standard)
-#   or '14' (for the C++14 standard).
-#
-#   The second argument, if specified, indicates whether you insist on an
-#   extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g.
-#   -std=c++11).  If neither is specified, you get whatever works, with
-#   preference for an extended mode.
-#
-#   The third argument, if specified 'mandatory' or if left unspecified,
-#   indicates that baseline support for the specified C++ standard is
-#   required and that the macro should error out if no mode with that
-#   support is found.  If specified 'optional', then configuration proceeds
-#   regardless, after defining HAVE_CXX${VERSION} if and only if a
-#   supporting mode is found.
-#
-# LICENSE
-#
-#   Copyright (c) 2008 Benjamin Kosnik <bkoz@redhat.com>
-#   Copyright (c) 2012 Zack Weinberg <zackw@panix.com>
-#   Copyright (c) 2013 Roy Stogner <roystgnr@ices.utexas.edu>
-#   Copyright (c) 2014, 2015 Google Inc.; contributed by Alexey Sokolov <sokolov@google.com>
-#   Copyright (c) 2015 Paul Norman <penorman@mac.com>
-#   Copyright (c) 2015 Moritz Klammler <moritz@klammler.eu>
-#   Copyright (c) 2016, 2018 Krzesimir Nowak <qdlacz@gmail.com>
-#   Copyright (c) 2019 Enji Cooper <yaneurabeya@gmail.com>
-#
-#   Copying and distribution of this file, with or without modification, are
-#   permitted in any medium without royalty provided the copyright notice
-#   and this notice are preserved.  This file is offered as-is, without any
-#   warranty.
-
-#serial 11
-
-dnl  This macro is based on the code from the AX_CXX_COMPILE_STDCXX_11 macro
-dnl  (serial version number 13).
-
-AC_DEFUN([AX_CXX_COMPILE_STDCXX], [dnl
-  m4_if([$1], [11], [ax_cxx_compile_alternatives="11 0x"],
-        [$1], [14], [ax_cxx_compile_alternatives="14 1y"],
-        [$1], [17], [ax_cxx_compile_alternatives="17 1z"],
-        [m4_fatal([invalid first argument `$1' to AX_CXX_COMPILE_STDCXX])])dnl
-  m4_if([$2], [], [],
-        [$2], [ext], [],
-        [$2], [noext], [],
-        [m4_fatal([invalid second argument `$2' to AX_CXX_COMPILE_STDCXX])])dnl
-  m4_if([$3], [], [ax_cxx_compile_cxx$1_required=true],
-        [$3], [mandatory], [ax_cxx_compile_cxx$1_required=true],
-        [$3], [optional], [ax_cxx_compile_cxx$1_required=false],
-        [m4_fatal([invalid third argument `$3' to AX_CXX_COMPILE_STDCXX])])
-  AC_LANG_PUSH([C++])dnl
-  ac_success=no
-
-  m4_if([$2], [noext], [], [dnl
-  if test x$ac_success = xno; then
-    for alternative in ${ax_cxx_compile_alternatives}; do
-      switch="-std=gnu++${alternative}"
-      cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch])
-      AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch,
-                     $cachevar,
-        [ac_save_CXX="$CXX"
-         CXX="$CXX $switch"
-         AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
-          [eval $cachevar=yes],
-          [eval $cachevar=no])
-         CXX="$ac_save_CXX"])
-      if eval test x\$$cachevar = xyes; then
-        CXX="$CXX $switch"
-        if test -n "$CXXCPP" ; then
-          CXXCPP="$CXXCPP $switch"
-        fi
-        ac_success=yes
-        break
-      fi
-    done
-  fi])
-
-  m4_if([$2], [ext], [], [dnl
-  if test x$ac_success = xno; then
-    dnl HP's aCC needs +std=c++11 according to:
-    dnl http://h21007.www2.hp.com/portal/download/files/unprot/aCxx/PDF_Release_Notes/769149-001.pdf
-    dnl Cray's crayCC needs "-h std=c++11"
-    for alternative in ${ax_cxx_compile_alternatives}; do
-      for switch in -std=c++${alternative} +std=c++${alternative} "-h std=c++${alternative}"; do
-        cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch])
-        AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch,
-                       $cachevar,
-          [ac_save_CXX="$CXX"
-           CXX="$CXX $switch"
-           AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
-            [eval $cachevar=yes],
-            [eval $cachevar=no])
-           CXX="$ac_save_CXX"])
-        if eval test x\$$cachevar = xyes; then
-          CXX="$CXX $switch"
-          if test -n "$CXXCPP" ; then
-            CXXCPP="$CXXCPP $switch"
-          fi
-          ac_success=yes
-          break
-        fi
-      done
-      if test x$ac_success = xyes; then
-        break
-      fi
-    done
-  fi])
-  AC_LANG_POP([C++])
-  if test x$ax_cxx_compile_cxx$1_required = xtrue; then
-    if test x$ac_success = xno; then
-      AC_MSG_ERROR([*** A compiler with support for C++$1 language features is required.])
-    fi
-  fi
-  if test x$ac_success = xno; then
-    HAVE_CXX$1=0
-    AC_MSG_NOTICE([No compiler with C++$1 support was found])
-  else
-    HAVE_CXX$1=1
-    AC_DEFINE(HAVE_CXX$1,1,
-              [define if the compiler supports basic C++$1 syntax])
-  fi
-  AC_SUBST(HAVE_CXX$1)
-])
-
-
-dnl  Test body for checking C++11 support
-
-m4_define([_AX_CXX_COMPILE_STDCXX_testbody_11],
-  _AX_CXX_COMPILE_STDCXX_testbody_new_in_11
-)
-
-
-dnl  Test body for checking C++14 support
-
-m4_define([_AX_CXX_COMPILE_STDCXX_testbody_14],
-  _AX_CXX_COMPILE_STDCXX_testbody_new_in_11
-  _AX_CXX_COMPILE_STDCXX_testbody_new_in_14
-)
-
-m4_define([_AX_CXX_COMPILE_STDCXX_testbody_17],
-  _AX_CXX_COMPILE_STDCXX_testbody_new_in_11
-  _AX_CXX_COMPILE_STDCXX_testbody_new_in_14
-  _AX_CXX_COMPILE_STDCXX_testbody_new_in_17
-)
-
-dnl  Tests for new features in C++11
-
-m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_11], [[
-
-// If the compiler admits that it is not ready for C++11, why torture it?
-// Hopefully, this will speed up the test.
-
-#ifndef __cplusplus
-
-#error "This is not a C++ compiler"
-
-#elif __cplusplus < 201103L
-
-#error "This is not a C++11 compiler"
-
-#else
-
-namespace cxx11
-{
-
-  namespace test_static_assert
-  {
-
-    template <typename T>
-    struct check
-    {
-      static_assert(sizeof(int) <= sizeof(T), "not big enough");
-    };
-
-  }
-
-  namespace test_final_override
-  {
-
-    struct Base
-    {
-      virtual ~Base() {}
-      virtual void f() {}
-    };
-
-    struct Derived : public Base
-    {
-      virtual ~Derived() override {}
-      virtual void f() override {}
-    };
-
-  }
-
-  namespace test_double_right_angle_brackets
-  {
-
-    template < typename T >
-    struct check {};
-
-    typedef check<void> single_type;
-    typedef check<check<void>> double_type;
-    typedef check<check<check<void>>> triple_type;
-    typedef check<check<check<check<void>>>> quadruple_type;
-
-  }
-
-  namespace test_decltype
-  {
-
-    int
-    f()
-    {
-      int a = 1;
-      decltype(a) b = 2;
-      return a + b;
-    }
-
-  }
-
-  namespace test_type_deduction
-  {
-
-    template < typename T1, typename T2 >
-    struct is_same
-    {
-      static const bool value = false;
-    };
-
-    template < typename T >
-    struct is_same<T, T>
-    {
-      static const bool value = true;
-    };
-
-    template < typename T1, typename T2 >
-    auto
-    add(T1 a1, T2 a2) -> decltype(a1 + a2)
-    {
-      return a1 + a2;
-    }
-
-    int
-    test(const int c, volatile int v)
-    {
-      static_assert(is_same<int, decltype(0)>::value == true, "");
-      static_assert(is_same<int, decltype(c)>::value == false, "");
-      static_assert(is_same<int, decltype(v)>::value == false, "");
-      auto ac = c;
-      auto av = v;
-      auto sumi = ac + av + 'x';
-      auto sumf = ac + av + 1.0;
-      static_assert(is_same<int, decltype(ac)>::value == true, "");
-      static_assert(is_same<int, decltype(av)>::value == true, "");
-      static_assert(is_same<int, decltype(sumi)>::value == true, "");
-      static_assert(is_same<int, decltype(sumf)>::value == false, "");
-      static_assert(is_same<int, decltype(add(c, v))>::value == true, "");
-      return (sumf > 0.0) ? sumi : add(c, v);
-    }
-
-  }
-
-  namespace test_noexcept
-  {
-
-    int f() { return 0; }
-    int g() noexcept { return 0; }
-
-    static_assert(noexcept(f()) == false, "");
-    static_assert(noexcept(g()) == true, "");
-
-  }
-
-  namespace test_constexpr
-  {
-
-    template < typename CharT >
-    unsigned long constexpr
-    strlen_c_r(const CharT *const s, const unsigned long acc) noexcept
-    {
-      return *s ? strlen_c_r(s + 1, acc + 1) : acc;
-    }
-
-    template < typename CharT >
-    unsigned long constexpr
-    strlen_c(const CharT *const s) noexcept
-    {
-      return strlen_c_r(s, 0UL);
-    }
-
-    static_assert(strlen_c("") == 0UL, "");
-    static_assert(strlen_c("1") == 1UL, "");
-    static_assert(strlen_c("example") == 7UL, "");
-    static_assert(strlen_c("another\0example") == 7UL, "");
-
-  }
-
-  namespace test_rvalue_references
-  {
-
-    template < int N >
-    struct answer
-    {
-      static constexpr int value = N;
-    };
-
-    answer<1> f(int&)       { return answer<1>(); }
-    answer<2> f(const int&) { return answer<2>(); }
-    answer<3> f(int&&)      { return answer<3>(); }
-
-    void
-    test()
-    {
-      int i = 0;
-      const int c = 0;
-      static_assert(decltype(f(i))::value == 1, "");
-      static_assert(decltype(f(c))::value == 2, "");
-      static_assert(decltype(f(0))::value == 3, "");
-    }
-
-  }
-
-  namespace test_uniform_initialization
-  {
-
-    struct test
-    {
-      static const int zero {};
-      static const int one {1};
-    };
-
-    static_assert(test::zero == 0, "");
-    static_assert(test::one == 1, "");
-
-  }
-
-  namespace test_lambdas
-  {
-
-    void
-    test1()
-    {
-      auto lambda1 = [](){};
-      auto lambda2 = lambda1;
-      lambda1();
-      lambda2();
-    }
-
-    int
-    test2()
-    {
-      auto a = [](int i, int j){ return i + j; }(1, 2);
-      auto b = []() -> int { return '0'; }();
-      auto c = [=](){ return a + b; }();
-      auto d = [&](){ return c; }();
-      auto e = [a, &b](int x) mutable {
-        const auto identity = [](int y){ return y; };
-        for (auto i = 0; i < a; ++i)
-          a += b--;
-        return x + identity(a + b);
-      }(0);
-      return a + b + c + d + e;
-    }
-
-    int
-    test3()
-    {
-      const auto nullary = [](){ return 0; };
-      const auto unary = [](int x){ return x; };
-      using nullary_t = decltype(nullary);
-      using unary_t = decltype(unary);
-      const auto higher1st = [](nullary_t f){ return f(); };
-      const auto higher2nd = [unary](nullary_t f1){
-        return [unary, f1](unary_t f2){ return f2(unary(f1())); };
-      };
-      return higher1st(nullary) + higher2nd(nullary)(unary);
-    }
-
-  }
-
-  namespace test_variadic_templates
-  {
-
-    template <int...>
-    struct sum;
-
-    template <int N0, int... N1toN>
-    struct sum<N0, N1toN...>
-    {
-      static constexpr auto value = N0 + sum<N1toN...>::value;
-    };
-
-    template <>
-    struct sum<>
-    {
-      static constexpr auto value = 0;
-    };
-
-    static_assert(sum<>::value == 0, "");
-    static_assert(sum<1>::value == 1, "");
-    static_assert(sum<23>::value == 23, "");
-    static_assert(sum<1, 2>::value == 3, "");
-    static_assert(sum<5, 5, 11>::value == 21, "");
-    static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, "");
-
-  }
-
-  // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
-  // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function
-  // because of this.
-  namespace test_template_alias_sfinae
-  {
-
-    struct foo {};
-
-    template<typename T>
-    using member = typename T::member_type;
-
-    template<typename T>
-    void func(...) {}
-
-    template<typename T>
-    void func(member<T>*) {}
-
-    void test();
-
-    void test() { func<foo>(0); }
-
-  }
-
-}  // namespace cxx11
-
-#endif  // __cplusplus >= 201103L
-
-]])
-
-
-dnl  Tests for new features in C++14
-
-m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_14], [[
-
-// If the compiler admits that it is not ready for C++14, why torture it?
-// Hopefully, this will speed up the test.
-
-#ifndef __cplusplus
-
-#error "This is not a C++ compiler"
-
-#elif __cplusplus < 201402L
-
-#error "This is not a C++14 compiler"
-
-#else
-
-namespace cxx14
-{
-
-  namespace test_polymorphic_lambdas
-  {
-
-    int
-    test()
-    {
-      const auto lambda = [](auto&&... args){
-        const auto istiny = [](auto x){
-          return (sizeof(x) == 1UL) ? 1 : 0;
-        };
-        const int aretiny[] = { istiny(args)... };
-        return aretiny[0];
-      };
-      return lambda(1, 1L, 1.0f, '1');
-    }
-
-  }
-
-  namespace test_binary_literals
-  {
-
-    constexpr auto ivii = 0b0000000000101010;
-    static_assert(ivii == 42, "wrong value");
-
-  }
-
-  namespace test_generalized_constexpr
-  {
-
-    template < typename CharT >
-    constexpr unsigned long
-    strlen_c(const CharT *const s) noexcept
-    {
-      auto length = 0UL;
-      for (auto p = s; *p; ++p)
-        ++length;
-      return length;
-    }
-
-    static_assert(strlen_c("") == 0UL, "");
-    static_assert(strlen_c("x") == 1UL, "");
-    static_assert(strlen_c("test") == 4UL, "");
-    static_assert(strlen_c("another\0test") == 7UL, "");
-
-  }
-
-  namespace test_lambda_init_capture
-  {
-
-    int
-    test()
-    {
-      auto x = 0;
-      const auto lambda1 = [a = x](int b){ return a + b; };
-      const auto lambda2 = [a = lambda1(x)](){ return a; };
-      return lambda2();
-    }
-
-  }
-
-  namespace test_digit_separators
-  {
-
-    constexpr auto ten_million = 100'000'000;
-    static_assert(ten_million == 100000000, "");
-
-  }
-
-  namespace test_return_type_deduction
-  {
-
-    auto f(int& x) { return x; }
-    decltype(auto) g(int& x) { return x; }
-
-    template < typename T1, typename T2 >
-    struct is_same
-    {
-      static constexpr auto value = false;
-    };
-
-    template < typename T >
-    struct is_same<T, T>
-    {
-      static constexpr auto value = true;
-    };
-
-    int
-    test()
-    {
-      auto x = 0;
-      static_assert(is_same<int, decltype(f(x))>::value, "");
-      static_assert(is_same<int&, decltype(g(x))>::value, "");
-      return x;
-    }
-
-  }
-
-}  // namespace cxx14
-
-#endif  // __cplusplus >= 201402L
-
-]])
-
-
-dnl  Tests for new features in C++17
-
-m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_17], [[
-
-// If the compiler admits that it is not ready for C++17, why torture it?
-// Hopefully, this will speed up the test.
-
-#ifndef __cplusplus
-
-#error "This is not a C++ compiler"
-
-#elif __cplusplus < 201703L
-
-#error "This is not a C++17 compiler"
-
-#else
-
-#include <initializer_list>
-#include <utility>
-#include <type_traits>
-
-namespace cxx17
-{
-
-  namespace test_constexpr_lambdas
-  {
-
-    constexpr int foo = [](){return 42;}();
-
-  }
-
-  namespace test::nested_namespace::definitions
-  {
-
-  }
-
-  namespace test_fold_expression
-  {
-
-    template<typename... Args>
-    int multiply(Args... args)
-    {
-      return (args * ... * 1);
-    }
-
-    template<typename... Args>
-    bool all(Args... args)
-    {
-      return (args && ...);
-    }
-
-  }
-
-  namespace test_extended_static_assert
-  {
-
-    static_assert (true);
-
-  }
-
-  namespace test_auto_brace_init_list
-  {
-
-    auto foo = {5};
-    auto bar {5};
-
-    static_assert(std::is_same<std::initializer_list<int>, decltype(foo)>::value);
-    static_assert(std::is_same<int, decltype(bar)>::value);
-  }
-
-  namespace test_typename_in_template_template_parameter
-  {
-
-    template<template<typename> typename X> struct D;
-
-  }
-
-  namespace test_fallthrough_nodiscard_maybe_unused_attributes
-  {
-
-    int f1()
-    {
-      return 42;
-    }
-
-    [[nodiscard]] int f2()
-    {
-      [[maybe_unused]] auto unused = f1();
-
-      switch (f1())
-      {
-      case 17:
-        f1();
-        [[fallthrough]];
-      case 42:
-        f1();
-      }
-      return f1();
-    }
-
-  }
-
-  namespace test_extended_aggregate_initialization
-  {
-
-    struct base1
-    {
-      int b1, b2 = 42;
-    };
-
-    struct base2
-    {
-      base2() {
-        b3 = 42;
-      }
-      int b3;
-    };
-
-    struct derived : base1, base2
-    {
-        int d;
-    };
-
-    derived d1 {{1, 2}, {}, 4};  // full initialization
-    derived d2 {{}, {}, 4};      // value-initialized bases
-
-  }
-
-  namespace test_general_range_based_for_loop
-  {
-
-    struct iter
-    {
-      int i;
-
-      int& operator* ()
-      {
-        return i;
-      }
-
-      const int& operator* () const
-      {
-        return i;
-      }
-
-      iter& operator++()
-      {
-        ++i;
-        return *this;
-      }
-    };
-
-    struct sentinel
-    {
-      int i;
-    };
-
-    bool operator== (const iter& i, const sentinel& s)
-    {
-      return i.i == s.i;
-    }
-
-    bool operator!= (const iter& i, const sentinel& s)
-    {
-      return !(i == s);
-    }
-
-    struct range
-    {
-      iter begin() const
-      {
-        return {0};
-      }
-
-      sentinel end() const
-      {
-        return {5};
-      }
-    };
-
-    void f()
-    {
-      range r {};
-
-      for (auto i : r)
-      {
-        [[maybe_unused]] auto v = i;
-      }
-    }
-
-  }
-
-  namespace test_lambda_capture_asterisk_this_by_value
-  {
-
-    struct t
-    {
-      int i;
-      int foo()
-      {
-        return [*this]()
-        {
-          return i;
-        }();
-      }
-    };
-
-  }
-
-  namespace test_enum_class_construction
-  {
-
-    enum class byte : unsigned char
-    {};
-
-    byte foo {42};
-
-  }
-
-  namespace test_constexpr_if
-  {
-
-    template <bool cond>
-    int f ()
-    {
-      if constexpr(cond)
-      {
-        return 13;
-      }
-      else
-      {
-        return 42;
-      }
-    }
-
-  }
-
-  namespace test_selection_statement_with_initializer
-  {
-
-    int f()
-    {
-      return 13;
-    }
-
-    int f2()
-    {
-      if (auto i = f(); i > 0)
-      {
-        return 3;
-      }
-
-      switch (auto i = f(); i + 4)
-      {
-      case 17:
-        return 2;
-
-      default:
-        return 1;
-      }
-    }
-
-  }
-
-  namespace test_template_argument_deduction_for_class_templates
-  {
-
-    template <typename T1, typename T2>
-    struct pair
-    {
-      pair (T1 p1, T2 p2)
-        : m1 {p1},
-          m2 {p2}
-      {}
-
-      T1 m1;
-      T2 m2;
-    };
-
-    void f()
-    {
-      [[maybe_unused]] auto p = pair{13, 42u};
-    }
-
-  }
-
-  namespace test_non_type_auto_template_parameters
-  {
-
-    template <auto n>
-    struct B
-    {};
-
-    B<5> b1;
-    B<'a'> b2;
-
-  }
-
-  namespace test_structured_bindings
-  {
-
-    int arr[2] = { 1, 2 };
-    std::pair<int, int> pr = { 1, 2 };
-
-    auto f1() -> int(&)[2]
-    {
-      return arr;
-    }
-
-    auto f2() -> std::pair<int, int>&
-    {
-      return pr;
-    }
-
-    struct S
-    {
-      int x1 : 2;
-      volatile double y1;
-    };
-
-    S f3()
-    {
-      return {};
-    }
-
-    auto [ x1, y1 ] = f1();
-    auto& [ xr1, yr1 ] = f1();
-    auto [ x2, y2 ] = f2();
-    auto& [ xr2, yr2 ] = f2();
-    const auto [ x3, y3 ] = f3();
-
-  }
-
-  namespace test_exception_spec_type_system
-  {
-
-    struct Good {};
-    struct Bad {};
-
-    void g1() noexcept;
-    void g2();
-
-    template<typename T>
-    Bad
-    f(T*, T*);
-
-    template<typename T1, typename T2>
-    Good
-    f(T1*, T2*);
-
-    static_assert (std::is_same_v<Good, decltype(f(g1, g2))>);
-
-  }
-
-  namespace test_inline_variables
-  {
-
-    template<class T> void f(T)
-    {}
-
-    template<class T> inline T g(T)
-    {
-      return T{};
-    }
-
-    template<> inline void f<>(int)
-    {}
-
-    template<> int g<>(int)
-    {
-      return 5;
-    }
-
-  }
-
-}  // namespace cxx17
-
-#endif  // __cplusplus < 201703L
-
-]])
diff --git a/m4/ax_pthread.m4 b/m4/ax_pthread.m4
deleted file mode 100644 (file)
index 4920e07..0000000
+++ /dev/null
@@ -1,486 +0,0 @@
-# ===========================================================================
-#        https://www.gnu.org/software/autoconf-archive/ax_pthread.html
-# ===========================================================================
-#
-# SYNOPSIS
-#
-#   AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
-#
-# DESCRIPTION
-#
-#   This macro figures out how to build C programs using POSIX threads. It
-#   sets the PTHREAD_LIBS output variable to the threads library and linker
-#   flags, and the PTHREAD_CFLAGS output variable to any special C compiler
-#   flags that are needed. (The user can also force certain compiler
-#   flags/libs to be tested by setting these environment variables.)
-#
-#   Also sets PTHREAD_CC to any special C compiler that is needed for
-#   multi-threaded programs (defaults to the value of CC otherwise). (This
-#   is necessary on AIX to use the special cc_r compiler alias.)
-#
-#   NOTE: You are assumed to not only compile your program with these flags,
-#   but also to link with them as well. For example, you might link with
-#   $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS
-#
-#   If you are only building threaded programs, you may wish to use these
-#   variables in your default LIBS, CFLAGS, and CC:
-#
-#     LIBS="$PTHREAD_LIBS $LIBS"
-#     CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
-#     CC="$PTHREAD_CC"
-#
-#   In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant
-#   has a nonstandard name, this macro defines PTHREAD_CREATE_JOINABLE to
-#   that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
-#
-#   Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the
-#   PTHREAD_PRIO_INHERIT symbol is defined when compiling with
-#   PTHREAD_CFLAGS.
-#
-#   ACTION-IF-FOUND is a list of shell commands to run if a threads library
-#   is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it
-#   is not found. If ACTION-IF-FOUND is not specified, the default action
-#   will define HAVE_PTHREAD.
-#
-#   Please let the authors know if this macro fails on any platform, or if
-#   you have any other suggestions or comments. This macro was based on work
-#   by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help
-#   from M. Frigo), as well as ac_pthread and hb_pthread macros posted by
-#   Alejandro Forero Cuervo to the autoconf macro repository. We are also
-#   grateful for the helpful feedback of numerous users.
-#
-#   Updated for Autoconf 2.68 by Daniel Richard G.
-#
-# LICENSE
-#
-#   Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
-#   Copyright (c) 2011 Daniel Richard G. <skunk@iSKUNK.ORG>
-#
-#   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 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 <https://www.gnu.org/licenses/>.
-#
-#   As a special exception, the respective Autoconf Macro's copyright owner
-#   gives unlimited permission to copy, distribute and modify the configure
-#   scripts that are the output of Autoconf when processing the Macro. You
-#   need not follow the terms of the GNU General Public License when using
-#   or distributing such scripts, even though portions of the text of the
-#   Macro appear in them. The GNU General Public License (GPL) does govern
-#   all other use of the material that constitutes the Autoconf Macro.
-#
-#   This special exception to the GPL applies to versions of the Autoconf
-#   Macro released by the Autoconf Archive. When you make and distribute a
-#   modified version of the Autoconf Macro, you may extend this special
-#   exception to the GPL to apply to your modified version as well.
-
-#serial 25
-
-AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD])
-AC_DEFUN([AX_PTHREAD], [
-AC_REQUIRE([AC_CANONICAL_HOST])
-AC_REQUIRE([AC_PROG_CC])
-AC_REQUIRE([AC_PROG_SED])
-AC_LANG_PUSH([C])
-ax_pthread_ok=no
-
-# We used to check for pthread.h first, but this fails if pthread.h
-# requires special compiler flags (e.g. on Tru64 or Sequent).
-# It gets checked for in the link test anyway.
-
-# First of all, check if the user has set any of the PTHREAD_LIBS,
-# etcetera environment variables, and if threads linking works using
-# them:
-if test "x$PTHREAD_CFLAGS$PTHREAD_LIBS" != "x"; then
-        ax_pthread_save_CC="$CC"
-        ax_pthread_save_CFLAGS="$CFLAGS"
-        ax_pthread_save_LIBS="$LIBS"
-        AS_IF([test "x$PTHREAD_CC" != "x"], [CC="$PTHREAD_CC"])
-        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
-        LIBS="$PTHREAD_LIBS $LIBS"
-        AC_MSG_CHECKING([for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS])
-        AC_LINK_IFELSE([AC_LANG_CALL([], [pthread_join])], [ax_pthread_ok=yes])
-        AC_MSG_RESULT([$ax_pthread_ok])
-        if test "x$ax_pthread_ok" = "xno"; then
-                PTHREAD_LIBS=""
-                PTHREAD_CFLAGS=""
-        fi
-        CC="$ax_pthread_save_CC"
-        CFLAGS="$ax_pthread_save_CFLAGS"
-        LIBS="$ax_pthread_save_LIBS"
-fi
-
-# We must check for the threads library under a number of different
-# names; the ordering is very important because some systems
-# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
-# libraries is broken (non-POSIX).
-
-# Create a list of thread flags to try.  Items starting with a "-" are
-# C compiler flags, and other items are library names, except for "none"
-# which indicates that we try without any flags at all, and "pthread-config"
-# which is a program returning the flags for the Pth emulation library.
-
-ax_pthread_flags="pthreads none -Kthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
-
-# The ordering *is* (sometimes) important.  Some notes on the
-# individual items follow:
-
-# pthreads: AIX (must check this before -lpthread)
-# none: in case threads are in libc; should be tried before -Kthread and
-#       other compiler flags to prevent continual compiler warnings
-# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
-# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads), Tru64
-#           (Note: HP C rejects this with "bad form for `-t' option")
-# -pthreads: Solaris/gcc (Note: HP C also rejects)
-# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
-#      doesn't hurt to check since this sometimes defines pthreads and
-#      -D_REENTRANT too), HP C (must be checked before -lpthread, which
-#      is present but should not be used directly; and before -mthreads,
-#      because the compiler interprets this as "-mt" + "-hreads")
-# -mthreads: Mingw32/gcc, Lynx/gcc
-# pthread: Linux, etcetera
-# --thread-safe: KAI C++
-# pthread-config: use pthread-config program (for GNU Pth library)
-
-case $host_os in
-
-        freebsd*)
-
-        # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
-        # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
-
-        ax_pthread_flags="-kthread lthread $ax_pthread_flags"
-        ;;
-
-        hpux*)
-
-        # From the cc(1) man page: "[-mt] Sets various -D flags to enable
-        # multi-threading and also sets -lpthread."
-
-        ax_pthread_flags="-mt -pthread pthread $ax_pthread_flags"
-        ;;
-
-        openedition*)
-
-        # IBM z/OS requires a feature-test macro to be defined in order to
-        # enable POSIX threads at all, so give the user a hint if this is
-        # not set. (We don't define these ourselves, as they can affect
-        # other portions of the system API in unpredictable ways.)
-
-        AC_EGREP_CPP([AX_PTHREAD_ZOS_MISSING],
-            [
-#            if !defined(_OPEN_THREADS) && !defined(_UNIX03_THREADS)
-             AX_PTHREAD_ZOS_MISSING
-#            endif
-            ],
-            [AC_MSG_WARN([IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support.])])
-        ;;
-
-        solaris*)
-
-        # On Solaris (at least, for some versions), libc contains stubbed
-        # (non-functional) versions of the pthreads routines, so link-based
-        # tests will erroneously succeed. (N.B.: The stubs are missing
-        # pthread_cleanup_push, or rather a function called by this macro,
-        # so we could check for that, but who knows whether they'll stub
-        # that too in a future libc.)  So we'll check first for the
-        # standard Solaris way of linking pthreads (-mt -lpthread).
-
-        ax_pthread_flags="-mt,pthread pthread $ax_pthread_flags"
-        ;;
-esac
-
-# GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC)
-
-AS_IF([test "x$GCC" = "xyes"],
-      [ax_pthread_flags="-pthread -pthreads $ax_pthread_flags"])
-
-# The presence of a feature test macro requesting re-entrant function
-# definitions is, on some systems, a strong hint that pthreads support is
-# correctly enabled
-
-case $host_os in
-        darwin* | hpux* | linux* | osf* | solaris*)
-        ax_pthread_check_macro="_REENTRANT"
-        ;;
-
-        aix*)
-        ax_pthread_check_macro="_THREAD_SAFE"
-        ;;
-
-        *)
-        ax_pthread_check_macro="--"
-        ;;
-esac
-AS_IF([test "x$ax_pthread_check_macro" = "x--"],
-      [ax_pthread_check_cond=0],
-      [ax_pthread_check_cond="!defined($ax_pthread_check_macro)"])
-
-# Are we compiling with Clang?
-
-AC_CACHE_CHECK([whether $CC is Clang],
-    [ax_cv_PTHREAD_CLANG],
-    [ax_cv_PTHREAD_CLANG=no
-     # Note that Autoconf sets GCC=yes for Clang as well as GCC
-     if test "x$GCC" = "xyes"; then
-        AC_EGREP_CPP([AX_PTHREAD_CC_IS_CLANG],
-            [/* Note: Clang 2.7 lacks __clang_[a-z]+__ */
-#            if defined(__clang__) && defined(__llvm__)
-             AX_PTHREAD_CC_IS_CLANG
-#            endif
-            ],
-            [ax_cv_PTHREAD_CLANG=yes])
-     fi
-    ])
-ax_pthread_clang="$ax_cv_PTHREAD_CLANG"
-
-ax_pthread_clang_warning=no
-
-# Clang needs special handling, because older versions handle the -pthread
-# option in a rather... idiosyncratic way
-
-if test "x$ax_pthread_clang" = "xyes"; then
-
-        # Clang takes -pthread; it has never supported any other flag
-
-        # (Note 1: This will need to be revisited if a system that Clang
-        # supports has POSIX threads in a separate library.  This tends not
-        # to be the way of modern systems, but it's conceivable.)
-
-        # (Note 2: On some systems, notably Darwin, -pthread is not needed
-        # to get POSIX threads support; the API is always present and
-        # active.  We could reasonably leave PTHREAD_CFLAGS empty.  But
-        # -pthread does define _REENTRANT, and while the Darwin headers
-        # ignore this macro, third-party headers might not.)
-
-        PTHREAD_CFLAGS="-pthread"
-        PTHREAD_LIBS=
-
-        ax_pthread_ok=yes
-
-        # However, older versions of Clang make a point of warning the user
-        # that, in an invocation where only linking and no compilation is
-        # taking place, the -pthread option has no effect ("argument unused
-        # during compilation").  They expect -pthread to be passed in only
-        # when source code is being compiled.
-        #
-        # Problem is, this is at odds with the way Automake and most other
-        # C build frameworks function, which is that the same flags used in
-        # compilation (CFLAGS) are also used in linking.  Many systems
-        # supported by AX_PTHREAD require exactly this for POSIX threads
-        # support, and in fact it is often not straightforward to specify a
-        # flag that is used only in the compilation phase and not in
-        # linking.  Such a scenario is extremely rare in practice.
-        #
-        # Even though use of the -pthread flag in linking would only print
-        # a warning, this can be a nuisance for well-run software projects
-        # that build with -Werror.  So if the active version of Clang has
-        # this misfeature, we search for an option to squash it.
-
-        AC_CACHE_CHECK([whether Clang needs flag to prevent "argument unused" warning when linking with -pthread],
-            [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG],
-            [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown
-             # Create an alternate version of $ac_link that compiles and
-             # links in two steps (.c -> .o, .o -> exe) instead of one
-             # (.c -> exe), because the warning occurs only in the second
-             # step
-             ax_pthread_save_ac_link="$ac_link"
-             ax_pthread_sed='s/conftest\.\$ac_ext/conftest.$ac_objext/g'
-             ax_pthread_link_step=`$as_echo "$ac_link" | sed "$ax_pthread_sed"`
-             ax_pthread_2step_ac_link="($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)"
-             ax_pthread_save_CFLAGS="$CFLAGS"
-             for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do
-                AS_IF([test "x$ax_pthread_try" = "xunknown"], [break])
-                CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS"
-                ac_link="$ax_pthread_save_ac_link"
-                AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])],
-                    [ac_link="$ax_pthread_2step_ac_link"
-                     AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])],
-                         [break])
-                    ])
-             done
-             ac_link="$ax_pthread_save_ac_link"
-             CFLAGS="$ax_pthread_save_CFLAGS"
-             AS_IF([test "x$ax_pthread_try" = "x"], [ax_pthread_try=no])
-             ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try"
-            ])
-
-        case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in
-                no | unknown) ;;
-                *) PTHREAD_CFLAGS="$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG $PTHREAD_CFLAGS" ;;
-        esac
-
-fi # $ax_pthread_clang = yes
-
-if test "x$ax_pthread_ok" = "xno"; then
-for ax_pthread_try_flag in $ax_pthread_flags; do
-
-        case $ax_pthread_try_flag in
-                none)
-                AC_MSG_CHECKING([whether pthreads work without any flags])
-                ;;
-
-                -mt,pthread)
-                AC_MSG_CHECKING([whether pthreads work with -mt -lpthread])
-                PTHREAD_CFLAGS="-mt"
-                PTHREAD_LIBS="-lpthread"
-                ;;
-
-                -*)
-                AC_MSG_CHECKING([whether pthreads work with $ax_pthread_try_flag])
-                PTHREAD_CFLAGS="$ax_pthread_try_flag"
-                ;;
-
-                pthread-config)
-                AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no])
-                AS_IF([test "x$ax_pthread_config" = "xno"], [continue])
-                PTHREAD_CFLAGS="`pthread-config --cflags`"
-                PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
-                ;;
-
-                *)
-                AC_MSG_CHECKING([for the pthreads library -l$ax_pthread_try_flag])
-                PTHREAD_LIBS="-l$ax_pthread_try_flag"
-                ;;
-        esac
-
-        ax_pthread_save_CFLAGS="$CFLAGS"
-        ax_pthread_save_LIBS="$LIBS"
-        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
-        LIBS="$PTHREAD_LIBS $LIBS"
-
-        # Check for various functions.  We must include pthread.h,
-        # since some functions may be macros.  (On the Sequent, we
-        # need a special flag -Kthread to make this header compile.)
-        # We check for pthread_join because it is in -lpthread on IRIX
-        # while pthread_create is in libc.  We check for pthread_attr_init
-        # due to DEC craziness with -lpthreads.  We check for
-        # pthread_cleanup_push because it is one of the few pthread
-        # functions on Solaris that doesn't have a non-functional libc stub.
-        # We try pthread_create on general principles.
-
-        AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>
-#                       if $ax_pthread_check_cond
-#                        error "$ax_pthread_check_macro must be defined"
-#                       endif
-                        static void routine(void *a) { a = 0; }
-                        static void *start_routine(void *a) { return a; }],
-                       [pthread_t th; pthread_attr_t attr;
-                        pthread_create(&th, 0, start_routine, 0);
-                        pthread_join(th, 0);
-                        pthread_attr_init(&attr);
-                        pthread_cleanup_push(routine, 0);
-                        pthread_cleanup_pop(0) /* ; */])],
-            [ax_pthread_ok=yes],
-            [])
-
-        CFLAGS="$ax_pthread_save_CFLAGS"
-        LIBS="$ax_pthread_save_LIBS"
-
-        AC_MSG_RESULT([$ax_pthread_ok])
-        AS_IF([test "x$ax_pthread_ok" = "xyes"], [break])
-
-        PTHREAD_LIBS=""
-        PTHREAD_CFLAGS=""
-done
-fi
-
-# Various other checks:
-if test "x$ax_pthread_ok" = "xyes"; then
-        ax_pthread_save_CFLAGS="$CFLAGS"
-        ax_pthread_save_LIBS="$LIBS"
-        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
-        LIBS="$PTHREAD_LIBS $LIBS"
-
-        # Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
-        AC_CACHE_CHECK([for joinable pthread attribute],
-            [ax_cv_PTHREAD_JOINABLE_ATTR],
-            [ax_cv_PTHREAD_JOINABLE_ATTR=unknown
-             for ax_pthread_attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
-                 AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>],
-                                                 [int attr = $ax_pthread_attr; return attr /* ; */])],
-                                [ax_cv_PTHREAD_JOINABLE_ATTR=$ax_pthread_attr; break],
-                                [])
-             done
-            ])
-        AS_IF([test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xunknown" && \
-               test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xPTHREAD_CREATE_JOINABLE" && \
-               test "x$ax_pthread_joinable_attr_defined" != "xyes"],
-              [AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE],
-                                  [$ax_cv_PTHREAD_JOINABLE_ATTR],
-                                  [Define to necessary symbol if this constant
-                                   uses a non-standard name on your system.])
-               ax_pthread_joinable_attr_defined=yes
-              ])
-
-        AC_CACHE_CHECK([whether more special flags are required for pthreads],
-            [ax_cv_PTHREAD_SPECIAL_FLAGS],
-            [ax_cv_PTHREAD_SPECIAL_FLAGS=no
-             case $host_os in
-             solaris*)
-             ax_cv_PTHREAD_SPECIAL_FLAGS="-D_POSIX_PTHREAD_SEMANTICS"
-             ;;
-             esac
-            ])
-        AS_IF([test "x$ax_cv_PTHREAD_SPECIAL_FLAGS" != "xno" && \
-               test "x$ax_pthread_special_flags_added" != "xyes"],
-              [PTHREAD_CFLAGS="$ax_cv_PTHREAD_SPECIAL_FLAGS $PTHREAD_CFLAGS"
-               ax_pthread_special_flags_added=yes])
-
-        AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT],
-            [ax_cv_PTHREAD_PRIO_INHERIT],
-            [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]],
-                                             [[int i = PTHREAD_PRIO_INHERIT;
-                                               return i;]])],
-                            [ax_cv_PTHREAD_PRIO_INHERIT=yes],
-                            [ax_cv_PTHREAD_PRIO_INHERIT=no])
-            ])
-        AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes" && \
-               test "x$ax_pthread_prio_inherit_defined" != "xyes"],
-              [AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.])
-               ax_pthread_prio_inherit_defined=yes
-              ])
-
-        CFLAGS="$ax_pthread_save_CFLAGS"
-        LIBS="$ax_pthread_save_LIBS"
-
-        # More AIX lossage: compile with *_r variant
-        if test "x$GCC" != "xyes"; then
-            case $host_os in
-                aix*)
-                AS_CASE(["x/$CC"],
-                    [x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6],
-                    [#handle absolute path differently from PATH based program lookup
-                     AS_CASE(["x$CC"],
-                         [x/*],
-                         [AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"])],
-                         [AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC])])])
-                ;;
-            esac
-        fi
-fi
-
-test -n "$PTHREAD_CC" || PTHREAD_CC="$CC"
-
-AC_SUBST([PTHREAD_LIBS])
-AC_SUBST([PTHREAD_CFLAGS])
-AC_SUBST([PTHREAD_CC])
-
-# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
-if test "x$ax_pthread_ok" = "xyes"; then
-        ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1])
-        :
-else
-        ax_pthread_ok=no
-        $2
-fi
-AC_LANG_POP
-])dnl AX_PTHREAD
diff --git a/m4/clang.m4 b/m4/clang.m4
deleted file mode 100644 (file)
index 11911ce..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-# _AC_LANG_COMPILER_CLANG
-# ---------------------
-# Check whether the compiler for the current language is clang.
-# Adapted from standard autoconf function: _AC_LANG_COMPILER_GNU
-#
-# Note: clang also identifies itself as a GNU compiler (gcc 4.2.1)
-# for compatibility reasons, so that cannot be used to determine
-m4_define([_AC_LANG_COMPILER_CLANG],
-[AC_CACHE_CHECK([whether we are using the clang _AC_LANG compiler],
-                [ac_cv_[]_AC_LANG_ABBREV[]_compiler_clang],
-[_AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[#ifndef __clang__
-       choke me
-#endif
-]])],
-                   [ac_compiler_clang=yes],
-                   [ac_compiler_clang=no])
-ac_cv_[]_AC_LANG_ABBREV[]_compiler_clang=$ac_compiler_clang
-])])# _AC_LANG_COMPILER_CLANG
-
diff --git a/m4/feature_macros.m4 b/m4/feature_macros.m4
deleted file mode 100644 (file)
index e51adc1..0000000
+++ /dev/null
@@ -1,149 +0,0 @@
-dnl ===========================================================================
-dnl Feature macro stuff borrowed from Python's configure.in
-dnl
-dnl For license information, see
-dnl <http://www.python.org/download/releases/2.6.2/license/>.
-dnl ===========================================================================
-
-# The later defininition of _XOPEN_SOURCE disables certain features
-# on Linux, so we need _GNU_SOURCE to re-enable them (makedev, tm_zone).
-AC_DEFINE(_GNU_SOURCE, 1, [Define on Linux to activate all library features])
-
-# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
-# certain features on NetBSD, so we need _NETBSD_SOURCE to re-enable
-# them.
-AC_DEFINE(_NETBSD_SOURCE, 1, [Define on NetBSD to activate all library features])
-
-# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
-# certain features on FreeBSD, so we need __BSD_VISIBLE to re-enable
-# them.
-AC_DEFINE(__BSD_VISIBLE, 1, [Define on FreeBSD to activate all library features])
-
-# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
-# u_int on Irix 5.3. Defining _BSD_TYPES brings it back.
-AC_DEFINE(_BSD_TYPES, 1, [Define on Irix to enable u_int])
-
-# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
-# certain features on Mac OS X, so we need _DARWIN_C_SOURCE to re-enable
-# them.
-AC_DEFINE(_DARWIN_C_SOURCE, 1, [Define on Darwin to activate all library features])
-
-define_xopen_source=yes
-
-ac_sys_system=`uname -s`
-if test "$ac_sys_system" = "AIX" -o "$ac_sys_system" = "Monterey64" \
-   -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
-        ac_sys_release=`uname -v`
-else
-        ac_sys_release=`uname -r`
-fi
-
-# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
-# disable features if it is defined, without any means to access these
-# features as extensions. For these systems, we skip the definition of
-# _XOPEN_SOURCE. Before adding a system to the list to gain access to
-# some feature, make sure there is no alternative way to access this
-# feature. Also, when using wildcards, make sure you have verified the
-# need for not defining _XOPEN_SOURCE on all systems matching the
-# wildcard, and that the wildcard does not include future systems
-# (which may remove their limitations).
-dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
-case $ac_sys_system/$ac_sys_release in
-  # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
-  # even though select is a POSIX function. Reported by J. Ribbens.
-  # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
-  OpenBSD/2.* | OpenBSD/3.@<:@0123456789@:>@ | OpenBSD/4.@<:@0123@:>@)
-    define_xopen_source=no
-    # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
-    # also defined. This can be overridden by defining _BSD_SOURCE
-    # As this has a different meaning on Linux, only define it on OpenBSD
-    AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
-    ;;
-  # Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of
-  # _NETBSD_SOURCE disables certain features (eg. setgroups). Reported by
-  # Marc Recht
-  NetBSD/1.5 | NetBSD/1.5.* | NetBSD/1.6 | NetBSD/1.6.* | NetBSD/1.6@<:@A-S@:>@)
-    define_xopen_source=no;;
-  # On Solaris 2.6, sys/wait.h is inconsistent in the usage
-  # of union __?sigval. Reported by Stuart Bishop.
-  SunOS/5.6)
-    define_xopen_source=no;;
-  # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
-  # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
-  # Reconfirmed for 7.1.4 by Martin v. Loewis.
-  OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
-    define_xopen_source=no;;
-  # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
-  # but used in struct sockaddr.sa_family. Reported by Tim Rice.
-  SCO_SV/3.2)
-    define_xopen_source=no;;
-  # On FreeBSD 4, the math functions C89 does not cover are never defined
-  # with _XOPEN_SOURCE and __BSD_VISIBLE does not re-enable them.
-  FreeBSD/4.*)
-    define_xopen_source=no;;
-  # On MacOS X 10.2, a bug in ncurses.h means that it craps out if
-  # _XOPEN_EXTENDED_SOURCE is defined. Apparently, this is fixed in 10.3, which
-  # identifies itself as Darwin/7.*
-  # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
-  # disables platform specific features beyond repair.
-  # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
-  # has no effect, don't bother defining them
-  Darwin/@<:@6789@:>@.*)
-    define_xopen_source=no;;
-  # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
-  # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
-  # or has another value. By not (re)defining it, the defaults come in place.
-  AIX/4)
-    define_xopen_source=no;;
-  AIX/5|AIX/7)
-    if test `uname -r` -eq 1; then
-      define_xopen_source=no
-    fi
-    ;;
-  # On QNX 6.3.2, defining _XOPEN_SOURCE prevents netdb.h from
-  # defining NI_NUMERICHOST.
-  QNX/6.3.2)
-    define_xopen_source=no
-    ;;
-
-esac
-
-if test $define_xopen_source = yes
-then
-  # On Solaris w/ g++ it appears that _XOPEN_SOURCE has to be
-  # defined precisely as g++ defines it
-  # Furthermore, on Solaris 10, XPG6 requires the use of a C99
-  # compiler
-  case $ac_sys_system/$ac_sys_release in
-    SunOS/5.8|SunOS/5.9|SunOS/5.10)
-      AC_DEFINE(_XOPEN_SOURCE, 500,
-                Define to the level of X/Open that your system supports)
-      ;;
-    SunOS/5.11)
-      ;;
-    *)
-      AC_DEFINE(_XOPEN_SOURCE, 700,
-                Define to the level of X/Open that your system supports)
-      ;;
-  esac
-
-  # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
-  # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
-  # several APIs are not declared. Since this is also needed in some
-  # cases for HP-UX, we define it globally.
-  # except for Solaris 10, where it must not be defined,
-  # as it implies XPG4.2
-  case $ac_sys_system/$ac_sys_release in
-    SunOS/5.10|SunOS/5.11)
-      AC_DEFINE(__EXTENSIONS__, 1,
-                Define to activate Unix95-and-earlier features)
-      ;;
-    *)
-      AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
-                Define to activate Unix95-and-earlier features)
-      ;;
-  esac
-
-  AC_DEFINE(_POSIX_C_SOURCE, 200809L, Define to activate features from IEEE Stds 1003.1-2001)
-
-fi
diff --git a/misc/build.sh b/misc/build.sh
deleted file mode 100755 (executable)
index f46c699..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh -ex
-# doc/INSTALL.md
-./autogen.sh
-./configure
-make
-make ${*:-test}
index 56ee3db297d804ded61b3cb4967529582c0596fc..dff3d94d08a01e900470702aeb4ea53c5ce60515 100755 (executable)
@@ -1,4 +1,24 @@
-#!/bin/sh -ex
+#!/bin/sh -e
+
+if [ -n "${VERBOSE}" ]; then
+  set -x
+fi
 
 # xarg returns 1 if any run-clang-format call returns 1.
+clang-format --version
 find src unittest -path src/third_party -prune -o -regex ".*\.[ch]p?p?" -print0 | xargs -0 -n1 misc/run-clang-format --check
+
+# Top level CMakeLists.txt + subidrectories.
+# This avoids running the check on any build directories.
+if hash cmake-format 2>/dev/null; then
+  printf "cmake-format version "
+  cmake-format --version
+  CLANG_FORMAT=cmake-format misc/run-clang-format --check CMakeLists.txt
+  find cmake -name "*.cmake" -print0 | CLANG_FORMAT=cmake-format xargs -0 -n1 misc/run-clang-format --check
+  find src unittest -name "CMakeLists.txt" -print0 | CLANG_FORMAT=cmake-format xargs -0 -n1 misc/run-clang-format --check
+else
+  echo "Note: cmake-format not installed. CMake files will not be checked for correct formatting."
+  echo "You can install it via pip3 install cmake-format"
+fi
+
+echo "Format is ok"
index a53acc5eca47a5cae844aebd12715ec3fba0bb1e..30892bf5f45e0ccef38a1deafe8c6d60485bef8c 100755 (executable)
@@ -1,2 +1,20 @@
-#!/bin/sh -ex
+#!/bin/sh -e
+
+if [ -n "${VERBOSE}" ]; then
+  set -x
+fi
+
 find src unittest -path src/third_party -prune -o -regex ".*\.[ch]p?p?" -exec misc/run-clang-format {} \;
+
+if hash cmake-format 2>/dev/null; then
+  # Top level CMakeLists.txt + subidrectories.
+  # This avoids running the check on any build directories.
+  cmake-format -i CMakeLists.txt
+  find cmake -name "*.cmake" -exec cmake-format -i {} \;
+  find src unittest -name "CMakeLists.txt" -exec cmake-format -i {} \;
+else
+  echo "Note: cmake-format not installed. CMake files will not be formatted."
+  echo "You can install it via pip3 install cmake-format"
+fi
+
+echo "Formating complete"
diff --git a/misc/freebsd/README b/misc/freebsd/README
deleted file mode 100644 (file)
index 2faebe6..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-How to use Vagrant to test ccache on FreeBSD
-============================================
-
-vagrant up
-vagrant ssh
-
-vagrant@freebsd:~ % git clone https://github.com/ccache/ccache.git
-vagrant@freebsd:~ % cd ccache
-vagrant@freebsd:~/ccache % ./autogen.sh
-vagrant@freebsd:~/ccache % ./configure
-vagrant@freebsd:~/ccache % gmake
-vagrant@freebsd:~/ccache % gmake test
diff --git a/misc/freebsd/Vagrantfile b/misc/freebsd/Vagrantfile
deleted file mode 100644 (file)
index da126cd..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-# -*- mode: ruby -*-
-# vi: set ft=ruby :
-
-Vagrant.configure("2") do |config|
-  config.vm.guest = :freebsd
-  config.vm.synced_folder ".", "/vagrant", id: "vagrant-root", disabled: true
-  config.vm.box = "freebsd/FreeBSD-12.0-CURRENT"
-  config.ssh.shell = "sh"
-  config.vm.base_mac = "080027D14C66"
-
-  config.vm.provider :virtualbox do |vb|
-    vb.customize ["modifyvm", :id, "--memory", "1024"]
-    vb.customize ["modifyvm", :id, "--cpus", "1"]
-    vb.customize ["modifyvm", :id, "--hwvirtex", "on"]
-    vb.customize ["modifyvm", :id, "--audio", "none"]
-    vb.customize ["modifyvm", :id, "--nictype1", "virtio"]
-    vb.customize ["modifyvm", :id, "--nictype2", "virtio"]
-  end
-
-  config.vm.provision "shell", inline: <<-SHELL
-    pkg install -y git gmake bash autoconf
-  SHELL
-end
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
new file mode 100644 (file)
index 0000000..dc1ac78
--- /dev/null
@@ -0,0 +1,62 @@
+add_library(
+  ccache_lib STATIC
+  Args.cpp
+  AtomicFile.cpp
+  CacheEntryReader.cpp
+  CacheEntryWriter.cpp
+  CacheFile.cpp
+  Compression.cpp
+  Compressor.cpp
+  Config.cpp
+  Context.cpp
+  Counters.cpp
+  Decompressor.cpp
+  InodeCache.cpp
+  Lockfile.cpp
+  MiniTrace.cpp
+  NullCompressor.cpp
+  NullDecompressor.cpp
+  ProgressBar.cpp
+  SignalHandler.cpp
+  Stat.cpp
+  ThreadPool.cpp
+  Util.cpp
+  ZstdCompressor.cpp
+  ZstdDecompressor.cpp
+  argprocessing.cpp
+  ccache.cpp
+  cleanup.cpp
+  compopt.cpp
+  compress.cpp
+  execute.cpp
+  hash.cpp
+  hashutil.cpp
+  language.cpp
+  legacy_util.cpp
+  logging.cpp
+  manifest.cpp
+  result.cpp
+  stats.cpp
+  win32compat.cpp
+  Version.cpp)
+
+if(WIN32)
+  target_link_libraries(ccache_lib PRIVATE ws2_32 "psapi")
+
+  if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
+    target_link_libraries(ccache_lib PRIVATE -static gcc stdc++ winpthread
+                                             -dynamic)
+  else()
+    target_link_libraries(ccache_lib PRIVATE -static c++ -dynamic)
+  endif()
+endif()
+
+find_package(Threads REQUIRED)
+target_link_libraries(
+  ccache_lib PRIVATE standard_settings standard_warnings ZSTD::ZSTD
+                     libb2::libb2 Threads::Threads third_party_lib)
+
+# There is currently no separate interface directory.
+target_include_directories(ccache_lib PRIVATE ${CMAKE_BINARY_DIR} .)
+
+add_subdirectory(third_party)
index fa5b13daa4eb77f5c10aa4656bd1ea130b2e3e21..b1ed264812512d7e44172cc287eb38a5989dee4d 100644 (file)
@@ -651,7 +651,7 @@ real_path(const std::string& path, bool return_empty_on_error)
   char* buffer = managed_buffer.get();
   char* resolved = nullptr;
 
-#if HAVE_REALPATH
+#ifdef HAVE_REALPATH
   resolved = realpath(c_path, buffer);
 #elif defined(_WIN32)
   if (c_path[0] == '/') {
diff --git a/src/third_party/CMakeLists.txt b/src/third_party/CMakeLists.txt
new file mode 100644 (file)
index 0000000..b6beab9
--- /dev/null
@@ -0,0 +1,30 @@
+add_library(third_party_lib STATIC format.cpp getopt_long.c xxhash.c)
+if(ENABLE_TRACING)
+  target_sources(third_party_lib PRIVATE minitrace.c)
+endif()
+
+# Treat third party headers as system files. (No warning from those headers)
+target_include_directories(third_party_lib PRIVATE ${CMAKE_BINARY_DIR} . SYSTEM
+                           INTERFACE .)
+
+target_link_libraries(third_party_lib PRIVATE standard_settings)
+
+# third_party (for now) has way fewer compiler warnings enabled than the rest of
+# the code.
+
+# These warnings are enabled by default even without e.g. -Wall. But (for now)
+# we don't want even them in third_party.
+target_compile_options(
+  third_party_lib
+  PRIVATE $<$<COMPILE_LANGUAGE:C>:-Wno-implicit-function-declaration
+          -Wno-int-conversion>)
+if(CMAKE_C_COMPILER_ID STREQUAL "GNU")
+  target_compile_options(third_party_lib
+                         PRIVATE $<$<COMPILE_LANGUAGE:C>:-Wno-attributes>)
+endif()
+
+# The headers are included from the rest of the project, so turn off warnings as
+# requried (for now).
+if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+  target_compile_options(third_party_lib INTERFACE -Wno-shadow)
+endif()
diff --git a/test-all-systems.sh b/test-all-systems.sh
new file mode 100755 (executable)
index 0000000..45f2344
--- /dev/null
@@ -0,0 +1,31 @@
+#!/bin/sh -ex
+
+# While it's obviously quite impossible to support and test every single distribution,
+# this script enables easy checking of the most common standard distributions at least.
+
+# Runtime is roughly 1 minute per line (depending on system).
+# First run takes about 1 additional minute per docker image (depending on internet connection).
+
+# TODO: store docker images in (public) repository.
+# TODO: use ccache within docker and preserve the cache.
+#       That would make this script really fast and usable for small iterations!
+
+echo "Warning: Docker support is rather experimental\n"
+
+#CC=gcc   CXX=g++     ./docker.sh debian-9-stretch
+#CC=clang CXX=clang++ ./docker.sh debian-9-stretch
+
+CC=gcc   CXX=g++     ./docker.sh debian-10-buster
+CC=clang CXX=clang++ ./docker.sh debian-10-buster
+
+# zstd and libb2 not available for Ubuntu 14.
+CC=gcc   CXX=g++     CMAKE_PARAMS="-DUSE_LIBZSTD_FROM_INTERNET=ON -DUSE_LIBB2_FROM_INTERNET=ON" ./docker.sh ubuntu-14-trusty
+
+# See https://github.com/ccache/ccache/issues/601
+#CC=clang CXX=clang++ CMAKE_PARAMS="-DUSE_LIBZSTD_FROM_INTERNET=ON -DUSE_LIBB2_FROM_INTERNET=ON" ./docker.sh ubuntu-14-tusty
+
+CC=gcc   CXX=g++     ./docker.sh ubuntu-16-xenial
+CC=clang CXX=clang++ ./docker.sh ubuntu-16-xenial
+
+CC=gcc   CXX=g++     CMAKE_PARAMS="-DUSE_LIBZSTD_FROM_INTERNET=ON" ./docker.sh ubuntu-20-focal
+CC=clang CXX=clang++ CMAKE_PARAMS="-DUSE_LIBZSTD_FROM_INTERNET=ON" ./docker.sh ubuntu-20-focal
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
new file mode 100644 (file)
index 0000000..eba4911
--- /dev/null
@@ -0,0 +1,39 @@
+function(addtest name)
+  add_test(NAME "producttest.${name}"
+    COMMAND test/run ${name}
+    WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
+  set_tests_properties("producttest.${name}" PROPERTIES ENVIRONMENT CCACHE=${CMAKE_BINARY_DIR}/ccache)
+endfunction()
+
+addtest(base)
+addtest(nocpp2)
+addtest(cpp1)
+addtest(multi_arch)
+addtest(serialize_diagnostics)
+addtest(color_diagnostics)
+addtest(sanitize_blacklist)
+addtest(debug_prefix_map)
+addtest(profiling)
+addtest(profiling_gcc)
+addtest(profiling_clang)
+addtest(split_dwarf)
+addtest(masquerading)
+addtest(hardlink)
+addtest(fileclone)
+addtest(direct)
+addtest(direct_gcc)
+addtest(depend)
+addtest(basedir)
+addtest(no_compression)
+addtest(readonly)
+addtest(readonly_direct)
+addtest(cleanup)
+addtest(pch)
+addtest(modules)
+addtest(upgrade)
+addtest(input_charset)
+addtest(nvcc)
+addtest(nvcc_direct)
+addtest(nvcc_ldir)
+addtest(nvcc_nocpp2)
+addtest(inode_cache)
index 1892f42afdc073f623f31466167ee651b9841c98..1ed2343e407e4594f50661e7c9b9a8f17bef666c 100755 (executable)
--- a/test/run
+++ b/test/run
@@ -442,6 +442,7 @@ fi
 
 # ---------------------------------------
 
+# Note: this list is currently duplicated within CMakeLists.txt until further cleanup. Keep them in sync!
 all_suites="
 base
 nocpp2
diff --git a/unittest/CMakeLists.txt b/unittest/CMakeLists.txt
new file mode 100644 (file)
index 0000000..d187331
--- /dev/null
@@ -0,0 +1,30 @@
+add_executable(
+  unittest
+  TestUtil.cpp
+  catch2_tests.cpp
+  main.cpp
+  test_Args.cpp
+  test_AtomicFile.cpp
+  test_Checksum.cpp
+  test_Compression.cpp
+  test_Config.cpp
+  test_FormatNonstdStringView.cpp
+  test_InodeCache.cpp
+  test_Lockfile.cpp
+  test_NullCompression.cpp
+  test_Stat.cpp
+  test_Util.cpp
+  test_ZstdCompression.cpp
+  test_argprocessing.cpp
+  test_compopt.cpp
+  test_hash.cpp
+  test_hashutil.cpp
+  test_legacy_util.cpp)
+
+target_link_libraries(unittest PRIVATE standard_settings standard_warnings
+                                       ccache_lib)
+
+target_include_directories(unittest PRIVATE ${CMAKE_BINARY_DIR} . ../src)
+
+# add to ctest
+add_test(NAME unittest COMMAND unittest)