Index: create-15.0.4-llvm-64bit-atomic-patch/file.list
===================================================================
--- create-15.0.4-llvm-64bit-atomic-patch/file.list (revision 39)
+++ create-15.0.4-llvm-64bit-atomic-patch/file.list (nonexistent)
@@ -1 +0,0 @@
-llvm-15.0.4/llvm/cmake/modules/CheckAtomic.cmake
Index: create-15.0.4-llvm-64bit-atomic-patch/llvm-15.0.4-new/llvm/cmake/modules/CheckAtomic.cmake
===================================================================
--- create-15.0.4-llvm-64bit-atomic-patch/llvm-15.0.4-new/llvm/cmake/modules/CheckAtomic.cmake (revision 39)
+++ create-15.0.4-llvm-64bit-atomic-patch/llvm-15.0.4-new/llvm/cmake/modules/CheckAtomic.cmake (nonexistent)
@@ -1,115 +0,0 @@
-# atomic builtins are required for threading support.
-
-INCLUDE(CheckCXXSourceCompiles)
-INCLUDE(CheckLibraryExists)
-
-# Sometimes linking against libatomic is required for atomic ops, if
-# the platform doesn't support lock-free atomics.
-
-function(check_working_cxx_atomics varname)
- set(OLD_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
- set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -std=c++11")
- CHECK_CXX_SOURCE_COMPILES("
-#include <atomic>
-std::atomic<int> x;
-std::atomic<short> y;
-std::atomic<char> z;
-int main() {
- ++z;
- ++y;
- return ++x;
-}
-" ${varname})
- set(CMAKE_REQUIRED_FLAGS ${OLD_CMAKE_REQUIRED_FLAGS})
-endfunction(check_working_cxx_atomics)
-
-function(check_working_cxx_atomics64 varname)
- set(OLD_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
- set(CMAKE_REQUIRED_FLAGS "-std=c++11 ${CMAKE_REQUIRED_FLAGS}")
- CHECK_CXX_SOURCE_COMPILES("
-#include <atomic>
-#include <cstdint>
-std::atomic<uint64_t> x (0);
-std::atomic<double> y (0);
-int main() {
- uint64_t i = x.load(std::memory_order_relaxed);
- double j = y.load(std::memory_order_relaxed);
- (void)i;
- (void)j;
- return 0;
-}
-" ${varname})
- set(CMAKE_REQUIRED_FLAGS ${OLD_CMAKE_REQUIRED_FLAGS})
-endfunction(check_working_cxx_atomics64)
-
-
-# Check for (non-64-bit) atomic operations.
-if(MSVC)
- set(HAVE_CXX_ATOMICS_WITHOUT_LIB True)
-elseif(LLVM_COMPILER_IS_GCC_COMPATIBLE OR CMAKE_CXX_COMPILER_ID MATCHES "XL")
- # First check if atomics work without the library.
- check_working_cxx_atomics(HAVE_CXX_ATOMICS_WITHOUT_LIB)
- # If not, check if the library exists, and atomics work with it.
- if(NOT HAVE_CXX_ATOMICS_WITHOUT_LIB)
- check_library_exists(atomic __atomic_fetch_add_4 "" HAVE_LIBATOMIC)
- if(HAVE_LIBATOMIC)
- list(APPEND CMAKE_REQUIRED_LIBRARIES "atomic")
- check_working_cxx_atomics(HAVE_CXX_ATOMICS_WITH_LIB)
- if (NOT HAVE_CXX_ATOMICS_WITH_LIB)
- message(FATAL_ERROR "Host compiler must support std::atomic!")
- endif()
- else()
- message(FATAL_ERROR "Host compiler appears to require libatomic, but cannot find it.")
- endif()
- endif()
-endif()
-
-# Check for 64 bit atomic operations.
-if(MSVC)
- set(HAVE_CXX_ATOMICS64_WITHOUT_LIB True)
-elseif(LLVM_COMPILER_IS_GCC_COMPATIBLE OR CMAKE_CXX_COMPILER_ID MATCHES "XL")
- # First check if atomics work without the library.
- check_working_cxx_atomics64(HAVE_CXX_ATOMICS64_WITHOUT_LIB)
- # If not, check if the library exists, and atomics work with it.
- if(NOT HAVE_CXX_ATOMICS64_WITHOUT_LIB)
- check_library_exists(atomic __atomic_load_8 "" HAVE_CXX_LIBATOMICS64)
- if(HAVE_CXX_LIBATOMICS64)
- list(APPEND CMAKE_REQUIRED_LIBRARIES "atomic")
- check_working_cxx_atomics64(HAVE_CXX_ATOMICS64_WITH_LIB)
- if (NOT HAVE_CXX_ATOMICS64_WITH_LIB)
- message(FATAL_ERROR "Host compiler must support 64-bit std::atomic!")
- endif()
- else()
- message(FATAL_ERROR "Host compiler appears to require libatomic for 64-bit operations, but cannot find it.")
- endif()
- endif()
-endif()
-
-## TODO: This define is only used for the legacy atomic operations in
-## llvm's Atomic.h, which should be replaced. Other code simply
-## assumes C++11 <atomic> works.
-CHECK_CXX_SOURCE_COMPILES("
-#ifdef _MSC_VER
-#include <windows.h>
-#endif
-int main() {
-#ifdef _MSC_VER
- volatile LONG val = 1;
- MemoryBarrier();
- InterlockedCompareExchange(&val, 0, 1);
- InterlockedIncrement(&val);
- InterlockedDecrement(&val);
-#else
- volatile unsigned long val = 1;
- __sync_synchronize();
- __sync_val_compare_and_swap(&val, 1, 0);
- __sync_add_and_fetch(&val, 1);
- __sync_sub_and_fetch(&val, 1);
-#endif
- return 0;
- }
-" LLVM_HAS_ATOMICS)
-
-if( NOT LLVM_HAS_ATOMICS )
- message(STATUS "Warning: LLVM will be built thread-unsafe because atomic builtins are missing")
-endif()
Index: create-15.0.4-llvm-64bit-atomic-patch/llvm-15.0.4-new/llvm/cmake/modules
===================================================================
--- create-15.0.4-llvm-64bit-atomic-patch/llvm-15.0.4-new/llvm/cmake/modules (revision 39)
+++ create-15.0.4-llvm-64bit-atomic-patch/llvm-15.0.4-new/llvm/cmake/modules (nonexistent)
Property changes on: create-15.0.4-llvm-64bit-atomic-patch/llvm-15.0.4-new/llvm/cmake/modules
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-llvm-64bit-atomic-patch/llvm-15.0.4-new/llvm/cmake
===================================================================
--- create-15.0.4-llvm-64bit-atomic-patch/llvm-15.0.4-new/llvm/cmake (revision 39)
+++ create-15.0.4-llvm-64bit-atomic-patch/llvm-15.0.4-new/llvm/cmake (nonexistent)
Property changes on: create-15.0.4-llvm-64bit-atomic-patch/llvm-15.0.4-new/llvm/cmake
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-llvm-64bit-atomic-patch/llvm-15.0.4-new/llvm
===================================================================
--- create-15.0.4-llvm-64bit-atomic-patch/llvm-15.0.4-new/llvm (revision 39)
+++ create-15.0.4-llvm-64bit-atomic-patch/llvm-15.0.4-new/llvm (nonexistent)
Property changes on: create-15.0.4-llvm-64bit-atomic-patch/llvm-15.0.4-new/llvm
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-llvm-64bit-atomic-patch/llvm-15.0.4-new
===================================================================
--- create-15.0.4-llvm-64bit-atomic-patch/llvm-15.0.4-new (revision 39)
+++ create-15.0.4-llvm-64bit-atomic-patch/llvm-15.0.4-new (nonexistent)
Property changes on: create-15.0.4-llvm-64bit-atomic-patch/llvm-15.0.4-new
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-llvm-64bit-atomic-patch/create.patch.sh
===================================================================
--- create-15.0.4-llvm-64bit-atomic-patch/create.patch.sh (revision 39)
+++ create-15.0.4-llvm-64bit-atomic-patch/create.patch.sh (nonexistent)
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-VERSION=15.0.4
-
-tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
-mv llvm-$VERSION llvm-$VERSION-orig
-
-cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
-
-diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-llvm-64bit-atomic.patch
-
-mv llvm-$VERSION-llvm-64bit-atomic.patch ../patches
-
-rm -rf ./llvm-$VERSION
-rm -rf ./llvm-$VERSION-orig
Property changes on: create-15.0.4-llvm-64bit-atomic-patch/create.patch.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: create-15.0.4-llvm-64bit-atomic-patch
===================================================================
--- create-15.0.4-llvm-64bit-atomic-patch (revision 39)
+++ create-15.0.4-llvm-64bit-atomic-patch (nonexistent)
Property changes on: create-15.0.4-llvm-64bit-atomic-patch
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-clang-gnu-triple-patch/file.list
===================================================================
--- create-15.0.4-clang-gnu-triple-patch/file.list (revision 39)
+++ create-15.0.4-clang-gnu-triple-patch/file.list (nonexistent)
@@ -1 +0,0 @@
-llvm-15.0.4/clang/lib/Driver/ToolChains/Gnu.cpp
Index: create-15.0.4-clang-gnu-triple-patch/llvm-15.0.4-new/clang/lib/Driver/ToolChains/Gnu.cpp
===================================================================
--- create-15.0.4-clang-gnu-triple-patch/llvm-15.0.4-new/clang/lib/Driver/ToolChains/Gnu.cpp (revision 39)
+++ create-15.0.4-clang-gnu-triple-patch/llvm-15.0.4-new/clang/lib/Driver/ToolChains/Gnu.cpp (nonexistent)
@@ -1,3227 +0,0 @@
-//===--- Gnu.cpp - Gnu Tool and ToolChain Implementations -------*- C++ -*-===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-
-#include "Gnu.h"
-#include "Arch/ARM.h"
-#include "Arch/CSKY.h"
-#include "Arch/Mips.h"
-#include "Arch/PPC.h"
-#include "Arch/RISCV.h"
-#include "Arch/Sparc.h"
-#include "Arch/SystemZ.h"
-#include "CommonArgs.h"
-#include "Linux.h"
-#include "clang/Config/config.h" // for GCC_INSTALL_PREFIX
-#include "clang/Driver/Compilation.h"
-#include "clang/Driver/Driver.h"
-#include "clang/Driver/DriverDiagnostic.h"
-#include "clang/Driver/Options.h"
-#include "clang/Driver/Tool.h"
-#include "clang/Driver/ToolChain.h"
-#include "llvm/Option/ArgList.h"
-#include "llvm/Support/CodeGen.h"
-#include "llvm/Support/Path.h"
-#include "llvm/Support/TargetParser.h"
-#include "llvm/Support/VirtualFileSystem.h"
-#include <system_error>
-
-using namespace clang::driver;
-using namespace clang::driver::toolchains;
-using namespace clang;
-using namespace llvm::opt;
-
-using tools::addMultilibFlag;
-using tools::addPathIfExists;
-
-static bool forwardToGCC(const Option &O) {
- // LinkerInput options have been forwarded. Don't duplicate.
- if (O.hasFlag(options::LinkerInput))
- return false;
- return O.matches(options::OPT_Link_Group) || O.hasFlag(options::LinkOption);
-}
-
-// Switch CPU names not recognized by GNU assembler to a close CPU that it does
-// recognize, instead of a lower march from being picked in the absence of a cpu
-// flag.
-static void normalizeCPUNamesForAssembler(const ArgList &Args,
- ArgStringList &CmdArgs) {
- if (Arg *A = Args.getLastArg(options::OPT_mcpu_EQ)) {
- StringRef CPUArg(A->getValue());
- if (CPUArg.equals_insensitive("krait"))
- CmdArgs.push_back("-mcpu=cortex-a15");
- else if (CPUArg.equals_insensitive("kryo"))
- CmdArgs.push_back("-mcpu=cortex-a57");
- else
- Args.AddLastArg(CmdArgs, options::OPT_mcpu_EQ);
- }
-}
-
-void tools::gcc::Common::ConstructJob(Compilation &C, const JobAction &JA,
- const InputInfo &Output,
- const InputInfoList &Inputs,
- const ArgList &Args,
- const char *LinkingOutput) const {
- const Driver &D = getToolChain().getDriver();
- ArgStringList CmdArgs;
-
- for (const auto &A : Args) {
- if (forwardToGCC(A->getOption())) {
- // It is unfortunate that we have to claim here, as this means
- // we will basically never report anything interesting for
- // platforms using a generic gcc, even if we are just using gcc
- // to get to the assembler.
- A->claim();
-
- A->render(Args, CmdArgs);
- }
- }
-
- RenderExtraToolArgs(JA, CmdArgs);
-
- // If using a driver driver, force the arch.
- if (getToolChain().getTriple().isOSDarwin()) {
- CmdArgs.push_back("-arch");
- CmdArgs.push_back(
- Args.MakeArgString(getToolChain().getDefaultUniversalArchName()));
- }
-
- // Try to force gcc to match the tool chain we want, if we recognize
- // the arch.
- //
- // FIXME: The triple class should directly provide the information we want
- // here.
- switch (getToolChain().getArch()) {
- default:
- break;
- case llvm::Triple::x86:
- case llvm::Triple::ppc:
- case llvm::Triple::ppcle:
- CmdArgs.push_back("-m32");
- break;
- case llvm::Triple::x86_64:
- case llvm::Triple::ppc64:
- case llvm::Triple::ppc64le:
- CmdArgs.push_back("-m64");
- break;
- case llvm::Triple::sparcel:
- CmdArgs.push_back("-EL");
- break;
- }
-
- if (Output.isFilename()) {
- CmdArgs.push_back("-o");
- CmdArgs.push_back(Output.getFilename());
- } else {
- assert(Output.isNothing() && "Unexpected output");
- CmdArgs.push_back("-fsyntax-only");
- }
-
- Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA, options::OPT_Xassembler);
-
- // Only pass -x if gcc will understand it; otherwise hope gcc
- // understands the suffix correctly. The main use case this would go
- // wrong in is for linker inputs if they happened to have an odd
- // suffix; really the only way to get this to happen is a command
- // like '-x foobar a.c' which will treat a.c like a linker input.
- //
- // FIXME: For the linker case specifically, can we safely convert
- // inputs into '-Wl,' options?
- for (const auto &II : Inputs) {
- // Don't try to pass LLVM or AST inputs to a generic gcc.
- if (types::isLLVMIR(II.getType()))
- D.Diag(clang::diag::err_drv_no_linker_llvm_support)
- << getToolChain().getTripleString();
- else if (II.getType() == types::TY_AST)
- D.Diag(diag::err_drv_no_ast_support) << getToolChain().getTripleString();
- else if (II.getType() == types::TY_ModuleFile)
- D.Diag(diag::err_drv_no_module_support)
- << getToolChain().getTripleString();
-
- if (types::canTypeBeUserSpecified(II.getType())) {
- CmdArgs.push_back("-x");
- CmdArgs.push_back(types::getTypeName(II.getType()));
- }
-
- if (II.isFilename())
- CmdArgs.push_back(II.getFilename());
- else {
- const Arg &A = II.getInputArg();
-
- // Reverse translate some rewritten options.
- if (A.getOption().matches(options::OPT_Z_reserved_lib_stdcxx)) {
- CmdArgs.push_back("-lstdc++");
- continue;
- }
-
- // Don't render as input, we need gcc to do the translations.
- A.render(Args, CmdArgs);
- }
- }
-
- const std::string &customGCCName = D.getCCCGenericGCCName();
- const char *GCCName;
- if (!customGCCName.empty())
- GCCName = customGCCName.c_str();
- else if (D.CCCIsCXX()) {
- GCCName = "g++";
- } else
- GCCName = "gcc";
-
- const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath(GCCName));
- C.addCommand(std::make_unique<Command>(JA, *this,
- ResponseFileSupport::AtFileCurCP(),
- Exec, CmdArgs, Inputs, Output));
-}
-
-void tools::gcc::Preprocessor::RenderExtraToolArgs(
- const JobAction &JA, ArgStringList &CmdArgs) const {
- CmdArgs.push_back("-E");
-}
-
-void tools::gcc::Compiler::RenderExtraToolArgs(const JobAction &JA,
- ArgStringList &CmdArgs) const {
- const Driver &D = getToolChain().getDriver();
-
- switch (JA.getType()) {
- // If -flto, etc. are present then make sure not to force assembly output.
- case types::TY_LLVM_IR:
- case types::TY_LTO_IR:
- case types::TY_LLVM_BC:
- case types::TY_LTO_BC:
- CmdArgs.push_back("-c");
- break;
- // We assume we've got an "integrated" assembler in that gcc will produce an
- // object file itself.
- case types::TY_Object:
- CmdArgs.push_back("-c");
- break;
- case types::TY_PP_Asm:
- CmdArgs.push_back("-S");
- break;
- case types::TY_Nothing:
- CmdArgs.push_back("-fsyntax-only");
- break;
- default:
- D.Diag(diag::err_drv_invalid_gcc_output_type) << getTypeName(JA.getType());
- }
-}
-
-void tools::gcc::Linker::RenderExtraToolArgs(const JobAction &JA,
- ArgStringList &CmdArgs) const {
- // The types are (hopefully) good enough.
-}
-
-// On Arm the endianness of the output file is determined by the target and
-// can be overridden by the pseudo-target flags '-mlittle-endian'/'-EL' and
-// '-mbig-endian'/'-EB'. Unlike other targets the flag does not result in a
-// normalized triple so we must handle the flag here.
-static bool isArmBigEndian(const llvm::Triple &Triple,
- const ArgList &Args) {
- bool IsBigEndian = false;
- switch (Triple.getArch()) {
- case llvm::Triple::armeb:
- case llvm::Triple::thumbeb:
- IsBigEndian = true;
- LLVM_FALLTHROUGH;
- case llvm::Triple::arm:
- case llvm::Triple::thumb:
- if (Arg *A = Args.getLastArg(options::OPT_mlittle_endian,
- options::OPT_mbig_endian))
- IsBigEndian = !A->getOption().matches(options::OPT_mlittle_endian);
- break;
- default:
- break;
- }
- return IsBigEndian;
-}
-
-static const char *getLDMOption(const llvm::Triple &T, const ArgList &Args) {
- switch (T.getArch()) {
- case llvm::Triple::x86:
- if (T.isOSIAMCU())
- return "elf_iamcu";
- return "elf_i386";
- case llvm::Triple::aarch64:
- return "aarch64linux";
- case llvm::Triple::aarch64_be:
- return "aarch64linuxb";
- case llvm::Triple::arm:
- case llvm::Triple::thumb:
- case llvm::Triple::armeb:
- case llvm::Triple::thumbeb:
- return isArmBigEndian(T, Args) ? "armelfb_linux_eabi" : "armelf_linux_eabi";
- case llvm::Triple::m68k:
- return "m68kelf";
- case llvm::Triple::ppc:
- if (T.isOSLinux())
- return "elf32ppclinux";
- return "elf32ppc";
- case llvm::Triple::ppcle:
- if (T.isOSLinux())
- return "elf32lppclinux";
- return "elf32lppc";
- case llvm::Triple::ppc64:
- return "elf64ppc";
- case llvm::Triple::ppc64le:
- return "elf64lppc";
- case llvm::Triple::riscv32:
- return "elf32lriscv";
- case llvm::Triple::riscv64:
- return "elf64lriscv";
- case llvm::Triple::sparc:
- case llvm::Triple::sparcel:
- return "elf32_sparc";
- case llvm::Triple::sparcv9:
- return "elf64_sparc";
- case llvm::Triple::mips:
- return "elf32btsmip";
- case llvm::Triple::mipsel:
- return "elf32ltsmip";
- case llvm::Triple::mips64:
- if (tools::mips::hasMipsAbiArg(Args, "n32") ||
- T.getEnvironment() == llvm::Triple::GNUABIN32)
- return "elf32btsmipn32";
- return "elf64btsmip";
- case llvm::Triple::mips64el:
- if (tools::mips::hasMipsAbiArg(Args, "n32") ||
- T.getEnvironment() == llvm::Triple::GNUABIN32)
- return "elf32ltsmipn32";
- return "elf64ltsmip";
- case llvm::Triple::systemz:
- return "elf64_s390";
- case llvm::Triple::x86_64:
- if (T.isX32())
- return "elf32_x86_64";
- return "elf_x86_64";
- case llvm::Triple::ve:
- return "elf64ve";
- case llvm::Triple::csky:
- return "cskyelf_linux";
- default:
- return nullptr;
- }
-}
-
-static bool getPIE(const ArgList &Args, const ToolChain &TC) {
- if (Args.hasArg(options::OPT_shared) || Args.hasArg(options::OPT_static) ||
- Args.hasArg(options::OPT_r) || Args.hasArg(options::OPT_static_pie))
- return false;
-
- Arg *A = Args.getLastArg(options::OPT_pie, options::OPT_no_pie,
- options::OPT_nopie);
- if (!A)
- return TC.isPIEDefault(Args);
- return A->getOption().matches(options::OPT_pie);
-}
-
-static bool getStaticPIE(const ArgList &Args, const ToolChain &TC) {
- bool HasStaticPIE = Args.hasArg(options::OPT_static_pie);
- // -no-pie is an alias for -nopie. So, handling -nopie takes care of
- // -no-pie as well.
- if (HasStaticPIE && Args.hasArg(options::OPT_nopie)) {
- const Driver &D = TC.getDriver();
- const llvm::opt::OptTable &Opts = D.getOpts();
- const char *StaticPIEName = Opts.getOptionName(options::OPT_static_pie);
- const char *NoPIEName = Opts.getOptionName(options::OPT_nopie);
- D.Diag(diag::err_drv_cannot_mix_options) << StaticPIEName << NoPIEName;
- }
- return HasStaticPIE;
-}
-
-static bool getStatic(const ArgList &Args) {
- return Args.hasArg(options::OPT_static) &&
- !Args.hasArg(options::OPT_static_pie);
-}
-
-void tools::gnutools::StaticLibTool::ConstructJob(
- Compilation &C, const JobAction &JA, const InputInfo &Output,
- const InputInfoList &Inputs, const ArgList &Args,
- const char *LinkingOutput) const {
- const Driver &D = getToolChain().getDriver();
-
- // Silence warning for "clang -g foo.o -o foo"
- Args.ClaimAllArgs(options::OPT_g_Group);
- // and "clang -emit-llvm foo.o -o foo"
- Args.ClaimAllArgs(options::OPT_emit_llvm);
- // and for "clang -w foo.o -o foo". Other warning options are already
- // handled somewhere else.
- Args.ClaimAllArgs(options::OPT_w);
- // Silence warnings when linking C code with a C++ '-stdlib' argument.
- Args.ClaimAllArgs(options::OPT_stdlib_EQ);
-
- // ar tool command "llvm-ar <options> <output_file> <input_files>".
- ArgStringList CmdArgs;
- // Create and insert file members with a deterministic index.
- CmdArgs.push_back("rcsD");
- CmdArgs.push_back(Output.getFilename());
-
- for (const auto &II : Inputs) {
- if (II.isFilename()) {
- CmdArgs.push_back(II.getFilename());
- }
- }
-
- // Delete old output archive file if it already exists before generating a new
- // archive file.
- auto OutputFileName = Output.getFilename();
- if (Output.isFilename() && llvm::sys::fs::exists(OutputFileName)) {
- if (std::error_code EC = llvm::sys::fs::remove(OutputFileName)) {
- D.Diag(diag::err_drv_unable_to_remove_file) << EC.message();
- return;
- }
- }
-
- const char *Exec = Args.MakeArgString(getToolChain().GetStaticLibToolPath());
- C.addCommand(std::make_unique<Command>(JA, *this,
- ResponseFileSupport::AtFileCurCP(),
- Exec, CmdArgs, Inputs, Output));
-}
-
-void tools::gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA,
- const InputInfo &Output,
- const InputInfoList &Inputs,
- const ArgList &Args,
- const char *LinkingOutput) const {
- // FIXME: The Linker class constructor takes a ToolChain and not a
- // Generic_ELF, so the static_cast might return a reference to a invalid
- // instance (see PR45061). Ideally, the Linker constructor needs to take a
- // Generic_ELF instead.
- const toolchains::Generic_ELF &ToolChain =
- static_cast<const toolchains::Generic_ELF &>(getToolChain());
- const Driver &D = ToolChain.getDriver();
-
- const llvm::Triple &Triple = getToolChain().getEffectiveTriple();
-
- const llvm::Triple::ArchType Arch = ToolChain.getArch();
- const bool isAndroid = ToolChain.getTriple().isAndroid();
- const bool IsIAMCU = ToolChain.getTriple().isOSIAMCU();
- const bool IsVE = ToolChain.getTriple().isVE();
- const bool IsPIE = getPIE(Args, ToolChain);
- const bool IsStaticPIE = getStaticPIE(Args, ToolChain);
- const bool IsStatic = getStatic(Args);
- const bool HasCRTBeginEndFiles =
- ToolChain.getTriple().hasEnvironment() ||
- (ToolChain.getTriple().getVendor() != llvm::Triple::MipsTechnologies);
-
- ArgStringList CmdArgs;
-
- // Silence warning for "clang -g foo.o -o foo"
- Args.ClaimAllArgs(options::OPT_g_Group);
- // and "clang -emit-llvm foo.o -o foo"
- Args.ClaimAllArgs(options::OPT_emit_llvm);
- // and for "clang -w foo.o -o foo". Other warning options are already
- // handled somewhere else.
- Args.ClaimAllArgs(options::OPT_w);
-
- if (!D.SysRoot.empty())
- CmdArgs.push_back(Args.MakeArgString("--sysroot=" + D.SysRoot));
-
- if (IsPIE)
- CmdArgs.push_back("-pie");
-
- if (IsStaticPIE) {
- CmdArgs.push_back("-static");
- CmdArgs.push_back("-pie");
- CmdArgs.push_back("--no-dynamic-linker");
- CmdArgs.push_back("-z");
- CmdArgs.push_back("text");
- }
-
- if (Args.hasArg(options::OPT_rdynamic))
- CmdArgs.push_back("-export-dynamic");
-
- if (Args.hasArg(options::OPT_s))
- CmdArgs.push_back("-s");
-
- if (Triple.isARM() || Triple.isThumb() || Triple.isAArch64()) {
- bool IsBigEndian = isArmBigEndian(Triple, Args);
- if (IsBigEndian)
- arm::appendBE8LinkFlag(Args, CmdArgs, Triple);
- IsBigEndian = IsBigEndian || Arch == llvm::Triple::aarch64_be;
- CmdArgs.push_back(IsBigEndian ? "-EB" : "-EL");
- }
-
- // Most Android ARM64 targets should enable the linker fix for erratum
- // 843419. Only non-Cortex-A53 devices are allowed to skip this flag.
- if (Arch == llvm::Triple::aarch64 && isAndroid) {
- std::string CPU = getCPUName(D, Args, Triple);
- if (CPU.empty() || CPU == "generic" || CPU == "cortex-a53")
- CmdArgs.push_back("--fix-cortex-a53-843419");
- }
-
- ToolChain.addExtraOpts(CmdArgs);
-
- CmdArgs.push_back("--eh-frame-hdr");
-
- if (const char *LDMOption = getLDMOption(ToolChain.getTriple(), Args)) {
- CmdArgs.push_back("-m");
- CmdArgs.push_back(LDMOption);
- } else {
- D.Diag(diag::err_target_unknown_triple) << Triple.str();
- return;
- }
- if (Triple.isRISCV())
- CmdArgs.push_back("-X");
-
- if (Args.hasArg(options::OPT_shared))
- CmdArgs.push_back("-shared");
-
- if (IsStatic) {
- CmdArgs.push_back("-static");
- } else {
- if (Args.hasArg(options::OPT_rdynamic))
- CmdArgs.push_back("-export-dynamic");
-
- if (!Args.hasArg(options::OPT_shared) && !IsStaticPIE &&
- !Args.hasArg(options::OPT_r)) {
- CmdArgs.push_back("-dynamic-linker");
- CmdArgs.push_back(Args.MakeArgString(Twine(D.DyldPrefix) +
- ToolChain.getDynamicLinker(Args)));
- }
- }
-
- CmdArgs.push_back("-o");
- CmdArgs.push_back(Output.getFilename());
-
- if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles,
- options::OPT_r)) {
- if (!isAndroid && !IsIAMCU) {
- const char *crt1 = nullptr;
- if (!Args.hasArg(options::OPT_shared)) {
- if (Args.hasArg(options::OPT_pg))
- crt1 = "gcrt1.o";
- else if (IsPIE)
- crt1 = "Scrt1.o";
- else if (IsStaticPIE)
- crt1 = "rcrt1.o";
- else
- crt1 = "crt1.o";
- }
- if (crt1)
- CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath(crt1)));
-
- CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crti.o")));
- }
-
- if (IsVE) {
- CmdArgs.push_back("-z");
- CmdArgs.push_back("max-page-size=0x4000000");
- }
-
- if (IsIAMCU)
- CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crt0.o")));
- else if (HasCRTBeginEndFiles) {
- std::string P;
- if (ToolChain.GetRuntimeLibType(Args) == ToolChain::RLT_CompilerRT &&
- !isAndroid) {
- std::string crtbegin = ToolChain.getCompilerRT(Args, "crtbegin",
- ToolChain::FT_Object);
- if (ToolChain.getVFS().exists(crtbegin))
- P = crtbegin;
- }
- if (P.empty()) {
- const char *crtbegin;
- if (Args.hasArg(options::OPT_shared))
- crtbegin = isAndroid ? "crtbegin_so.o" : "crtbeginS.o";
- else if (IsStatic)
- crtbegin = isAndroid ? "crtbegin_static.o" : "crtbeginT.o";
- else if (IsPIE || IsStaticPIE)
- crtbegin = isAndroid ? "crtbegin_dynamic.o" : "crtbeginS.o";
- else
- crtbegin = isAndroid ? "crtbegin_dynamic.o" : "crtbegin.o";
- P = ToolChain.GetFilePath(crtbegin);
- }
- CmdArgs.push_back(Args.MakeArgString(P));
- }
-
- // Add crtfastmath.o if available and fast math is enabled.
- ToolChain.addFastMathRuntimeIfAvailable(Args, CmdArgs);
- }
-
- Args.AddAllArgs(CmdArgs, options::OPT_L);
- Args.AddAllArgs(CmdArgs, options::OPT_u);
-
- ToolChain.AddFilePathLibArgs(Args, CmdArgs);
-
- if (D.isUsingLTO()) {
- assert(!Inputs.empty() && "Must have at least one input.");
- addLTOOptions(ToolChain, Args, CmdArgs, Output, Inputs[0],
- D.getLTOMode() == LTOK_Thin);
- }
-
- if (Args.hasArg(options::OPT_Z_Xlinker__no_demangle))
- CmdArgs.push_back("--no-demangle");
-
- bool NeedsSanitizerDeps = addSanitizerRuntimes(ToolChain, Args, CmdArgs);
- bool NeedsXRayDeps = addXRayRuntime(ToolChain, Args, CmdArgs);
- addLinkerCompressDebugSectionsOption(ToolChain, Args, CmdArgs);
- AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs, JA);
-
- addHIPRuntimeLibArgs(ToolChain, Args, CmdArgs);
-
- // The profile runtime also needs access to system libraries.
- getToolChain().addProfileRTLibs(Args, CmdArgs);
-
- if (D.CCCIsCXX() &&
- !Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs,
- options::OPT_r)) {
- if (ToolChain.ShouldLinkCXXStdlib(Args)) {
- bool OnlyLibstdcxxStatic = Args.hasArg(options::OPT_static_libstdcxx) &&
- !Args.hasArg(options::OPT_static);
- if (OnlyLibstdcxxStatic)
- CmdArgs.push_back("-Bstatic");
- ToolChain.AddCXXStdlibLibArgs(Args, CmdArgs);
- if (OnlyLibstdcxxStatic)
- CmdArgs.push_back("-Bdynamic");
- }
- CmdArgs.push_back("-lm");
- }
-
- // If we are linking for the device all symbols should be bound locally. The
- // symbols are already protected which makes this redundant. This is only
- // necessary to work around a problem in bfd.
- // TODO: Remove this once 'lld' becomes the only linker for offloading.
- if (JA.isDeviceOffloading(Action::OFK_OpenMP))
- CmdArgs.push_back("-Bsymbolic");
-
- // Silence warnings when linking C code with a C++ '-stdlib' argument.
- Args.ClaimAllArgs(options::OPT_stdlib_EQ);
-
- // Additional linker set-up and flags for Fortran. This is required in order
- // to generate executables. As Fortran runtime depends on the C runtime,
- // these dependencies need to be listed before the C runtime below (i.e.
- // AddRuntTimeLibs).
- if (D.IsFlangMode()) {
- addFortranRuntimeLibraryPath(ToolChain, Args, CmdArgs);
- addFortranRuntimeLibs(ToolChain, CmdArgs);
- CmdArgs.push_back("-lm");
- }
-
- if (!Args.hasArg(options::OPT_nostdlib, options::OPT_r)) {
- if (!Args.hasArg(options::OPT_nodefaultlibs)) {
- if (IsStatic || IsStaticPIE)
- CmdArgs.push_back("--start-group");
-
- if (NeedsSanitizerDeps)
- linkSanitizerRuntimeDeps(ToolChain, CmdArgs);
-
- if (NeedsXRayDeps)
- linkXRayRuntimeDeps(ToolChain, CmdArgs);
-
- bool WantPthread = Args.hasArg(options::OPT_pthread) ||
- Args.hasArg(options::OPT_pthreads);
-
- // Use the static OpenMP runtime with -static-openmp
- bool StaticOpenMP = Args.hasArg(options::OPT_static_openmp) &&
- !Args.hasArg(options::OPT_static);
-
- // FIXME: Only pass GompNeedsRT = true for platforms with libgomp that
- // require librt. Most modern Linux platforms do, but some may not.
- if (addOpenMPRuntime(CmdArgs, ToolChain, Args, StaticOpenMP,
- JA.isHostOffloading(Action::OFK_OpenMP),
- /* GompNeedsRT= */ true))
- // OpenMP runtimes implies pthreads when using the GNU toolchain.
- // FIXME: Does this really make sense for all GNU toolchains?
- WantPthread = true;
-
- AddRunTimeLibs(ToolChain, D, CmdArgs, Args);
-
- // LLVM support for atomics on 32-bit SPARC V8+ is incomplete, so
- // forcibly link with libatomic as a workaround.
- // TODO: Issue #41880 and D118021.
- if (getToolChain().getTriple().getArch() == llvm::Triple::sparc) {
- CmdArgs.push_back("--push-state");
- CmdArgs.push_back("--as-needed");
- CmdArgs.push_back("-latomic");
- CmdArgs.push_back("--pop-state");
- }
-
- if (WantPthread && !isAndroid)
- CmdArgs.push_back("-lpthread");
-
- if (Args.hasArg(options::OPT_fsplit_stack))
- CmdArgs.push_back("--wrap=pthread_create");
-
- if (!Args.hasArg(options::OPT_nolibc))
- CmdArgs.push_back("-lc");
-
- // Add IAMCU specific libs, if needed.
- if (IsIAMCU)
- CmdArgs.push_back("-lgloss");
-
- if (IsStatic || IsStaticPIE)
- CmdArgs.push_back("--end-group");
- else
- AddRunTimeLibs(ToolChain, D, CmdArgs, Args);
-
- // Add IAMCU specific libs (outside the group), if needed.
- if (IsIAMCU) {
- CmdArgs.push_back("--as-needed");
- CmdArgs.push_back("-lsoftfp");
- CmdArgs.push_back("--no-as-needed");
- }
- }
-
- if (!Args.hasArg(options::OPT_nostartfiles) && !IsIAMCU) {
- if (HasCRTBeginEndFiles) {
- std::string P;
- if (ToolChain.GetRuntimeLibType(Args) == ToolChain::RLT_CompilerRT &&
- !isAndroid) {
- std::string crtend = ToolChain.getCompilerRT(Args, "crtend",
- ToolChain::FT_Object);
- if (ToolChain.getVFS().exists(crtend))
- P = crtend;
- }
- if (P.empty()) {
- const char *crtend;
- if (Args.hasArg(options::OPT_shared))
- crtend = isAndroid ? "crtend_so.o" : "crtendS.o";
- else if (IsPIE || IsStaticPIE)
- crtend = isAndroid ? "crtend_android.o" : "crtendS.o";
- else
- crtend = isAndroid ? "crtend_android.o" : "crtend.o";
- P = ToolChain.GetFilePath(crtend);
- }
- CmdArgs.push_back(Args.MakeArgString(P));
- }
- if (!isAndroid)
- CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crtn.o")));
- }
- }
-
- Args.AddAllArgs(CmdArgs, options::OPT_T);
-
- const char *Exec = Args.MakeArgString(ToolChain.GetLinkerPath());
- C.addCommand(std::make_unique<Command>(JA, *this,
- ResponseFileSupport::AtFileCurCP(),
- Exec, CmdArgs, Inputs, Output));
-}
-
-void tools::gnutools::Assembler::ConstructJob(Compilation &C,
- const JobAction &JA,
- const InputInfo &Output,
- const InputInfoList &Inputs,
- const ArgList &Args,
- const char *LinkingOutput) const {
- const auto &D = getToolChain().getDriver();
-
- claimNoWarnArgs(Args);
-
- ArgStringList CmdArgs;
-
- llvm::Reloc::Model RelocationModel;
- unsigned PICLevel;
- bool IsPIE;
- const char *DefaultAssembler = "as";
- std::tie(RelocationModel, PICLevel, IsPIE) =
- ParsePICArgs(getToolChain(), Args);
-
- if (const Arg *A = Args.getLastArg(options::OPT_gz, options::OPT_gz_EQ)) {
- if (A->getOption().getID() == options::OPT_gz) {
- CmdArgs.push_back("--compress-debug-sections");
- } else {
- StringRef Value = A->getValue();
- if (Value == "none" || Value == "zlib") {
- CmdArgs.push_back(
- Args.MakeArgString("--compress-debug-sections=" + Twine(Value)));
- } else {
- D.Diag(diag::err_drv_unsupported_option_argument)
- << A->getOption().getName() << Value;
- }
- }
- }
-
- switch (getToolChain().getArch()) {
- default:
- break;
- // Add --32/--64 to make sure we get the format we want.
- // This is incomplete
- case llvm::Triple::x86:
- CmdArgs.push_back("--32");
- break;
- case llvm::Triple::x86_64:
- if (getToolChain().getTriple().isX32())
- CmdArgs.push_back("--x32");
- else
- CmdArgs.push_back("--64");
- break;
- case llvm::Triple::ppc: {
- CmdArgs.push_back("-a32");
- CmdArgs.push_back("-mppc");
- CmdArgs.push_back("-mbig-endian");
- CmdArgs.push_back(ppc::getPPCAsmModeForCPU(
- getCPUName(D, Args, getToolChain().getTriple())));
- break;
- }
- case llvm::Triple::ppcle: {
- CmdArgs.push_back("-a32");
- CmdArgs.push_back("-mppc");
- CmdArgs.push_back("-mlittle-endian");
- CmdArgs.push_back(ppc::getPPCAsmModeForCPU(
- getCPUName(D, Args, getToolChain().getTriple())));
- break;
- }
- case llvm::Triple::ppc64: {
- CmdArgs.push_back("-a64");
- CmdArgs.push_back("-mppc64");
- CmdArgs.push_back("-mbig-endian");
- CmdArgs.push_back(ppc::getPPCAsmModeForCPU(
- getCPUName(D, Args, getToolChain().getTriple())));
- break;
- }
- case llvm::Triple::ppc64le: {
- CmdArgs.push_back("-a64");
- CmdArgs.push_back("-mppc64");
- CmdArgs.push_back("-mlittle-endian");
- CmdArgs.push_back(ppc::getPPCAsmModeForCPU(
- getCPUName(D, Args, getToolChain().getTriple())));
- break;
- }
- case llvm::Triple::riscv32:
- case llvm::Triple::riscv64: {
- StringRef ABIName = riscv::getRISCVABI(Args, getToolChain().getTriple());
- CmdArgs.push_back("-mabi");
- CmdArgs.push_back(ABIName.data());
- StringRef MArchName = riscv::getRISCVArch(Args, getToolChain().getTriple());
- CmdArgs.push_back("-march");
- CmdArgs.push_back(MArchName.data());
- if (!Args.hasFlag(options::OPT_mrelax, options::OPT_mno_relax, true))
- Args.addOptOutFlag(CmdArgs, options::OPT_mrelax, options::OPT_mno_relax);
- break;
- }
- case llvm::Triple::sparc:
- case llvm::Triple::sparcel: {
- CmdArgs.push_back("-32");
- std::string CPU = getCPUName(D, Args, getToolChain().getTriple());
- CmdArgs.push_back(
- sparc::getSparcAsmModeForCPU(CPU, getToolChain().getTriple()));
- AddAssemblerKPIC(getToolChain(), Args, CmdArgs);
- break;
- }
- case llvm::Triple::sparcv9: {
- CmdArgs.push_back("-64");
- std::string CPU = getCPUName(D, Args, getToolChain().getTriple());
- CmdArgs.push_back(
- sparc::getSparcAsmModeForCPU(CPU, getToolChain().getTriple()));
- AddAssemblerKPIC(getToolChain(), Args, CmdArgs);
- break;
- }
- case llvm::Triple::arm:
- case llvm::Triple::armeb:
- case llvm::Triple::thumb:
- case llvm::Triple::thumbeb: {
- const llvm::Triple &Triple2 = getToolChain().getTriple();
- CmdArgs.push_back(isArmBigEndian(Triple2, Args) ? "-EB" : "-EL");
- switch (Triple2.getSubArch()) {
- case llvm::Triple::ARMSubArch_v7:
- CmdArgs.push_back("-mfpu=neon");
- break;
- case llvm::Triple::ARMSubArch_v8:
- CmdArgs.push_back("-mfpu=crypto-neon-fp-armv8");
- break;
- default:
- break;
- }
-
- switch (arm::getARMFloatABI(getToolChain(), Args)) {
- case arm::FloatABI::Invalid: llvm_unreachable("must have an ABI!");
- case arm::FloatABI::Soft:
- CmdArgs.push_back(Args.MakeArgString("-mfloat-abi=soft"));
- break;
- case arm::FloatABI::SoftFP:
- CmdArgs.push_back(Args.MakeArgString("-mfloat-abi=softfp"));
- break;
- case arm::FloatABI::Hard:
- CmdArgs.push_back(Args.MakeArgString("-mfloat-abi=hard"));
- break;
- }
-
- Args.AddLastArg(CmdArgs, options::OPT_march_EQ);
- normalizeCPUNamesForAssembler(Args, CmdArgs);
-
- Args.AddLastArg(CmdArgs, options::OPT_mfpu_EQ);
- break;
- }
- case llvm::Triple::aarch64:
- case llvm::Triple::aarch64_be: {
- CmdArgs.push_back(
- getToolChain().getArch() == llvm::Triple::aarch64_be ? "-EB" : "-EL");
- Args.AddLastArg(CmdArgs, options::OPT_march_EQ);
- normalizeCPUNamesForAssembler(Args, CmdArgs);
-
- break;
- }
- case llvm::Triple::mips:
- case llvm::Triple::mipsel:
- case llvm::Triple::mips64:
- case llvm::Triple::mips64el: {
- StringRef CPUName;
- StringRef ABIName;
- mips::getMipsCPUAndABI(Args, getToolChain().getTriple(), CPUName, ABIName);
- ABIName = mips::getGnuCompatibleMipsABIName(ABIName);
-
- CmdArgs.push_back("-march");
- CmdArgs.push_back(CPUName.data());
-
- CmdArgs.push_back("-mabi");
- CmdArgs.push_back(ABIName.data());
-
- // -mno-shared should be emitted unless -fpic, -fpie, -fPIC, -fPIE,
- // or -mshared (not implemented) is in effect.
- if (RelocationModel == llvm::Reloc::Static)
- CmdArgs.push_back("-mno-shared");
-
- // LLVM doesn't support -mplt yet and acts as if it is always given.
- // However, -mplt has no effect with the N64 ABI.
- if (ABIName != "64" && !Args.hasArg(options::OPT_mno_abicalls))
- CmdArgs.push_back("-call_nonpic");
-
- if (getToolChain().getTriple().isLittleEndian())
- CmdArgs.push_back("-EL");
- else
- CmdArgs.push_back("-EB");
-
- if (Arg *A = Args.getLastArg(options::OPT_mnan_EQ)) {
- if (StringRef(A->getValue()) == "2008")
- CmdArgs.push_back(Args.MakeArgString("-mnan=2008"));
- }
-
- // Add the last -mfp32/-mfpxx/-mfp64 or -mfpxx if it is enabled by default.
- if (Arg *A = Args.getLastArg(options::OPT_mfp32, options::OPT_mfpxx,
- options::OPT_mfp64)) {
- A->claim();
- A->render(Args, CmdArgs);
- } else if (mips::shouldUseFPXX(
- Args, getToolChain().getTriple(), CPUName, ABIName,
- mips::getMipsFloatABI(getToolChain().getDriver(), Args,
- getToolChain().getTriple())))
- CmdArgs.push_back("-mfpxx");
-
- // Pass on -mmips16 or -mno-mips16. However, the assembler equivalent of
- // -mno-mips16 is actually -no-mips16.
- if (Arg *A =
- Args.getLastArg(options::OPT_mips16, options::OPT_mno_mips16)) {
- if (A->getOption().matches(options::OPT_mips16)) {
- A->claim();
- A->render(Args, CmdArgs);
- } else {
- A->claim();
- CmdArgs.push_back("-no-mips16");
- }
- }
-
- Args.AddLastArg(CmdArgs, options::OPT_mmicromips,
- options::OPT_mno_micromips);
- Args.AddLastArg(CmdArgs, options::OPT_mdsp, options::OPT_mno_dsp);
- Args.AddLastArg(CmdArgs, options::OPT_mdspr2, options::OPT_mno_dspr2);
-
- if (Arg *A = Args.getLastArg(options::OPT_mmsa, options::OPT_mno_msa)) {
- // Do not use AddLastArg because not all versions of MIPS assembler
- // support -mmsa / -mno-msa options.
- if (A->getOption().matches(options::OPT_mmsa))
- CmdArgs.push_back(Args.MakeArgString("-mmsa"));
- }
-
- Args.AddLastArg(CmdArgs, options::OPT_mhard_float,
- options::OPT_msoft_float);
-
- Args.AddLastArg(CmdArgs, options::OPT_mdouble_float,
- options::OPT_msingle_float);
-
- Args.AddLastArg(CmdArgs, options::OPT_modd_spreg,
- options::OPT_mno_odd_spreg);
-
- AddAssemblerKPIC(getToolChain(), Args, CmdArgs);
- break;
- }
- case llvm::Triple::systemz: {
- // Always pass an -march option, since our default of z10 is later
- // than the GNU assembler's default.
- std::string CPUName = systemz::getSystemZTargetCPU(Args);
- CmdArgs.push_back(Args.MakeArgString("-march=" + CPUName));
- break;
- }
- case llvm::Triple::ve:
- DefaultAssembler = "nas";
- }
-
- for (const Arg *A : Args.filtered(options::OPT_ffile_prefix_map_EQ,
- options::OPT_fdebug_prefix_map_EQ)) {
- StringRef Map = A->getValue();
- if (!Map.contains('='))
- D.Diag(diag::err_drv_invalid_argument_to_option)
- << Map << A->getOption().getName();
- else {
- CmdArgs.push_back(Args.MakeArgString("--debug-prefix-map"));
- CmdArgs.push_back(Args.MakeArgString(Map));
- }
- A->claim();
- }
-
- Args.AddAllArgs(CmdArgs, options::OPT_I);
- Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA, options::OPT_Xassembler);
-
- CmdArgs.push_back("-o");
- CmdArgs.push_back(Output.getFilename());
-
- for (const auto &II : Inputs)
- CmdArgs.push_back(II.getFilename());
-
- const char *Exec =
- Args.MakeArgString(getToolChain().GetProgramPath(DefaultAssembler));
- C.addCommand(std::make_unique<Command>(JA, *this,
- ResponseFileSupport::AtFileCurCP(),
- Exec, CmdArgs, Inputs, Output));
-
- // Handle the debug info splitting at object creation time if we're
- // creating an object.
- // TODO: Currently only works on linux with newer objcopy.
- if (Args.hasArg(options::OPT_gsplit_dwarf) &&
- getToolChain().getTriple().isOSLinux())
- SplitDebugInfo(getToolChain(), C, *this, JA, Args, Output,
- SplitDebugName(JA, Args, Inputs[0], Output));
-}
-
-namespace {
-// Filter to remove Multilibs that don't exist as a suffix to Path
-class FilterNonExistent {
- StringRef Base, File;
- llvm::vfs::FileSystem &VFS;
-
-public:
- FilterNonExistent(StringRef Base, StringRef File, llvm::vfs::FileSystem &VFS)
- : Base(Base), File(File), VFS(VFS) {}
- bool operator()(const Multilib &M) {
- return !VFS.exists(Base + M.gccSuffix() + File);
- }
-};
-} // end anonymous namespace
-
-static bool isSoftFloatABI(const ArgList &Args) {
- Arg *A = Args.getLastArg(options::OPT_msoft_float, options::OPT_mhard_float,
- options::OPT_mfloat_abi_EQ);
- if (!A)
- return false;
-
- return A->getOption().matches(options::OPT_msoft_float) ||
- (A->getOption().matches(options::OPT_mfloat_abi_EQ) &&
- A->getValue() == StringRef("soft"));
-}
-
-static bool isArmOrThumbArch(llvm::Triple::ArchType Arch) {
- return Arch == llvm::Triple::arm || Arch == llvm::Triple::thumb;
-}
-
-static bool isMipsEL(llvm::Triple::ArchType Arch) {
- return Arch == llvm::Triple::mipsel || Arch == llvm::Triple::mips64el;
-}
-
-static bool isMips16(const ArgList &Args) {
- Arg *A = Args.getLastArg(options::OPT_mips16, options::OPT_mno_mips16);
- return A && A->getOption().matches(options::OPT_mips16);
-}
-
-static bool isMicroMips(const ArgList &Args) {
- Arg *A = Args.getLastArg(options::OPT_mmicromips, options::OPT_mno_micromips);
- return A && A->getOption().matches(options::OPT_mmicromips);
-}
-
-static bool isMSP430(llvm::Triple::ArchType Arch) {
- return Arch == llvm::Triple::msp430;
-}
-
-static Multilib makeMultilib(StringRef commonSuffix) {
- return Multilib(commonSuffix, commonSuffix, commonSuffix);
-}
-
-static bool findMipsCsMultilibs(const Multilib::flags_list &Flags,
- FilterNonExistent &NonExistent,
- DetectedMultilibs &Result) {
- // Check for Code Sourcery toolchain multilibs
- MultilibSet CSMipsMultilibs;
- {
- auto MArchMips16 = makeMultilib("/mips16").flag("+m32").flag("+mips16");
-
- auto MArchMicroMips =
- makeMultilib("/micromips").flag("+m32").flag("+mmicromips");
-
- auto MArchDefault = makeMultilib("").flag("-mips16").flag("-mmicromips");
-
- auto UCLibc = makeMultilib("/uclibc").flag("+muclibc");
-
- auto SoftFloat = makeMultilib("/soft-float").flag("+msoft-float");
-
- auto Nan2008 = makeMultilib("/nan2008").flag("+mnan=2008");
-
- auto DefaultFloat =
- makeMultilib("").flag("-msoft-float").flag("-mnan=2008");
-
- auto BigEndian = makeMultilib("").flag("+EB").flag("-EL");
-
- auto LittleEndian = makeMultilib("/el").flag("+EL").flag("-EB");
-
- // Note that this one's osSuffix is ""
- auto MAbi64 = makeMultilib("")
- .gccSuffix("/64")
- .includeSuffix("/64")
- .flag("+mabi=n64")
- .flag("-mabi=n32")
- .flag("-m32");
-
- CSMipsMultilibs =
- MultilibSet()
- .Either(MArchMips16, MArchMicroMips, MArchDefault)
- .Maybe(UCLibc)
- .Either(SoftFloat, Nan2008, DefaultFloat)
- .FilterOut("/micromips/nan2008")
- .FilterOut("/mips16/nan2008")
- .Either(BigEndian, LittleEndian)
- .Maybe(MAbi64)
- .FilterOut("/mips16.*/64")
- .FilterOut("/micromips.*/64")
- .FilterOut(NonExistent)
- .setIncludeDirsCallback([](const Multilib &M) {
- std::vector<std::string> Dirs({"/include"});
- if (StringRef(M.includeSuffix()).startswith("/uclibc"))
- Dirs.push_back(
- "/../../../../mips-linux-gnu/libc/uclibc/usr/include");
- else
- Dirs.push_back("/../../../../mips-linux-gnu/libc/usr/include");
- return Dirs;
- });
- }
-
- MultilibSet DebianMipsMultilibs;
- {
- Multilib MAbiN32 =
- Multilib().gccSuffix("/n32").includeSuffix("/n32").flag("+mabi=n32");
-
- Multilib M64 = Multilib()
- .gccSuffix("/64")
- .includeSuffix("/64")
- .flag("+m64")
- .flag("-m32")
- .flag("-mabi=n32");
-
- Multilib M32 =
- Multilib().gccSuffix("/32").flag("-m64").flag("+m32").flag("-mabi=n32");
-
- DebianMipsMultilibs =
- MultilibSet().Either(M32, M64, MAbiN32).FilterOut(NonExistent);
- }
-
- // Sort candidates. Toolchain that best meets the directories tree goes first.
- // Then select the first toolchains matches command line flags.
- MultilibSet *Candidates[] = {&CSMipsMultilibs, &DebianMipsMultilibs};
- if (CSMipsMultilibs.size() < DebianMipsMultilibs.size())
- std::iter_swap(Candidates, Candidates + 1);
- for (const MultilibSet *Candidate : Candidates) {
- if (Candidate->select(Flags, Result.SelectedMultilib)) {
- if (Candidate == &DebianMipsMultilibs)
- Result.BiarchSibling = Multilib();
- Result.Multilibs = *Candidate;
- return true;
- }
- }
- return false;
-}
-
-static bool findMipsAndroidMultilibs(llvm::vfs::FileSystem &VFS, StringRef Path,
- const Multilib::flags_list &Flags,
- FilterNonExistent &NonExistent,
- DetectedMultilibs &Result) {
-
- MultilibSet AndroidMipsMultilibs =
- MultilibSet()
- .Maybe(Multilib("/mips-r2").flag("+march=mips32r2"))
- .Maybe(Multilib("/mips-r6").flag("+march=mips32r6"))
- .FilterOut(NonExistent);
-
- MultilibSet AndroidMipselMultilibs =
- MultilibSet()
- .Either(Multilib().flag("+march=mips32"),
- Multilib("/mips-r2", "", "/mips-r2").flag("+march=mips32r2"),
- Multilib("/mips-r6", "", "/mips-r6").flag("+march=mips32r6"))
- .FilterOut(NonExistent);
-
- MultilibSet AndroidMips64elMultilibs =
- MultilibSet()
- .Either(
- Multilib().flag("+march=mips64r6"),
- Multilib("/32/mips-r1", "", "/mips-r1").flag("+march=mips32"),
- Multilib("/32/mips-r2", "", "/mips-r2").flag("+march=mips32r2"),
- Multilib("/32/mips-r6", "", "/mips-r6").flag("+march=mips32r6"))
- .FilterOut(NonExistent);
-
- MultilibSet *MS = &AndroidMipsMultilibs;
- if (VFS.exists(Path + "/mips-r6"))
- MS = &AndroidMipselMultilibs;
- else if (VFS.exists(Path + "/32"))
- MS = &AndroidMips64elMultilibs;
- if (MS->select(Flags, Result.SelectedMultilib)) {
- Result.Multilibs = *MS;
- return true;
- }
- return false;
-}
-
-static bool findMipsMuslMultilibs(const Multilib::flags_list &Flags,
- FilterNonExistent &NonExistent,
- DetectedMultilibs &Result) {
- // Musl toolchain multilibs
- MultilibSet MuslMipsMultilibs;
- {
- auto MArchMipsR2 = makeMultilib("")
- .osSuffix("/mips-r2-hard-musl")
- .flag("+EB")
- .flag("-EL")
- .flag("+march=mips32r2");
-
- auto MArchMipselR2 = makeMultilib("/mipsel-r2-hard-musl")
- .flag("-EB")
- .flag("+EL")
- .flag("+march=mips32r2");
-
- MuslMipsMultilibs = MultilibSet().Either(MArchMipsR2, MArchMipselR2);
-
- // Specify the callback that computes the include directories.
- MuslMipsMultilibs.setIncludeDirsCallback([](const Multilib &M) {
- return std::vector<std::string>(
- {"/../sysroot" + M.osSuffix() + "/usr/include"});
- });
- }
- if (MuslMipsMultilibs.select(Flags, Result.SelectedMultilib)) {
- Result.Multilibs = MuslMipsMultilibs;
- return true;
- }
- return false;
-}
-
-static bool findMipsMtiMultilibs(const Multilib::flags_list &Flags,
- FilterNonExistent &NonExistent,
- DetectedMultilibs &Result) {
- // CodeScape MTI toolchain v1.2 and early.
- MultilibSet MtiMipsMultilibsV1;
- {
- auto MArchMips32 = makeMultilib("/mips32")
- .flag("+m32")
- .flag("-m64")
- .flag("-mmicromips")
- .flag("+march=mips32");
-
- auto MArchMicroMips = makeMultilib("/micromips")
- .flag("+m32")
- .flag("-m64")
- .flag("+mmicromips");
-
- auto MArchMips64r2 = makeMultilib("/mips64r2")
- .flag("-m32")
- .flag("+m64")
- .flag("+march=mips64r2");
-
- auto MArchMips64 = makeMultilib("/mips64").flag("-m32").flag("+m64").flag(
- "-march=mips64r2");
-
- auto MArchDefault = makeMultilib("")
- .flag("+m32")
- .flag("-m64")
- .flag("-mmicromips")
- .flag("+march=mips32r2");
-
- auto Mips16 = makeMultilib("/mips16").flag("+mips16");
-
- auto UCLibc = makeMultilib("/uclibc").flag("+muclibc");
-
- auto MAbi64 =
- makeMultilib("/64").flag("+mabi=n64").flag("-mabi=n32").flag("-m32");
-
- auto BigEndian = makeMultilib("").flag("+EB").flag("-EL");
-
- auto LittleEndian = makeMultilib("/el").flag("+EL").flag("-EB");
-
- auto SoftFloat = makeMultilib("/sof").flag("+msoft-float");
-
- auto Nan2008 = makeMultilib("/nan2008").flag("+mnan=2008");
-
- MtiMipsMultilibsV1 =
- MultilibSet()
- .Either(MArchMips32, MArchMicroMips, MArchMips64r2, MArchMips64,
- MArchDefault)
- .Maybe(UCLibc)
- .Maybe(Mips16)
- .FilterOut("/mips64/mips16")
- .FilterOut("/mips64r2/mips16")
- .FilterOut("/micromips/mips16")
- .Maybe(MAbi64)
- .FilterOut("/micromips/64")
- .FilterOut("/mips32/64")
- .FilterOut("^/64")
- .FilterOut("/mips16/64")
- .Either(BigEndian, LittleEndian)
- .Maybe(SoftFloat)
- .Maybe(Nan2008)
- .FilterOut(".*sof/nan2008")
- .FilterOut(NonExistent)
- .setIncludeDirsCallback([](const Multilib &M) {
- std::vector<std::string> Dirs({"/include"});
- if (StringRef(M.includeSuffix()).startswith("/uclibc"))
- Dirs.push_back("/../../../../sysroot/uclibc/usr/include");
- else
- Dirs.push_back("/../../../../sysroot/usr/include");
- return Dirs;
- });
- }
-
- // CodeScape IMG toolchain starting from v1.3.
- MultilibSet MtiMipsMultilibsV2;
- {
- auto BeHard = makeMultilib("/mips-r2-hard")
- .flag("+EB")
- .flag("-msoft-float")
- .flag("-mnan=2008")
- .flag("-muclibc");
- auto BeSoft = makeMultilib("/mips-r2-soft")
- .flag("+EB")
- .flag("+msoft-float")
- .flag("-mnan=2008");
- auto ElHard = makeMultilib("/mipsel-r2-hard")
- .flag("+EL")
- .flag("-msoft-float")
- .flag("-mnan=2008")
- .flag("-muclibc");
- auto ElSoft = makeMultilib("/mipsel-r2-soft")
- .flag("+EL")
- .flag("+msoft-float")
- .flag("-mnan=2008")
- .flag("-mmicromips");
- auto BeHardNan = makeMultilib("/mips-r2-hard-nan2008")
- .flag("+EB")
- .flag("-msoft-float")
- .flag("+mnan=2008")
- .flag("-muclibc");
- auto ElHardNan = makeMultilib("/mipsel-r2-hard-nan2008")
- .flag("+EL")
- .flag("-msoft-float")
- .flag("+mnan=2008")
- .flag("-muclibc")
- .flag("-mmicromips");
- auto BeHardNanUclibc = makeMultilib("/mips-r2-hard-nan2008-uclibc")
- .flag("+EB")
- .flag("-msoft-float")
- .flag("+mnan=2008")
- .flag("+muclibc");
- auto ElHardNanUclibc = makeMultilib("/mipsel-r2-hard-nan2008-uclibc")
- .flag("+EL")
- .flag("-msoft-float")
- .flag("+mnan=2008")
- .flag("+muclibc");
- auto BeHardUclibc = makeMultilib("/mips-r2-hard-uclibc")
- .flag("+EB")
- .flag("-msoft-float")
- .flag("-mnan=2008")
- .flag("+muclibc");
- auto ElHardUclibc = makeMultilib("/mipsel-r2-hard-uclibc")
- .flag("+EL")
- .flag("-msoft-float")
- .flag("-mnan=2008")
- .flag("+muclibc");
- auto ElMicroHardNan = makeMultilib("/micromipsel-r2-hard-nan2008")
- .flag("+EL")
- .flag("-msoft-float")
- .flag("+mnan=2008")
- .flag("+mmicromips");
- auto ElMicroSoft = makeMultilib("/micromipsel-r2-soft")
- .flag("+EL")
- .flag("+msoft-float")
- .flag("-mnan=2008")
- .flag("+mmicromips");
-
- auto O32 =
- makeMultilib("/lib").osSuffix("").flag("-mabi=n32").flag("-mabi=n64");
- auto N32 =
- makeMultilib("/lib32").osSuffix("").flag("+mabi=n32").flag("-mabi=n64");
- auto N64 =
- makeMultilib("/lib64").osSuffix("").flag("-mabi=n32").flag("+mabi=n64");
-
- MtiMipsMultilibsV2 =
- MultilibSet()
- .Either({BeHard, BeSoft, ElHard, ElSoft, BeHardNan, ElHardNan,
- BeHardNanUclibc, ElHardNanUclibc, BeHardUclibc,
- ElHardUclibc, ElMicroHardNan, ElMicroSoft})
- .Either(O32, N32, N64)
- .FilterOut(NonExistent)
- .setIncludeDirsCallback([](const Multilib &M) {
- return std::vector<std::string>({"/../../../../sysroot" +
- M.includeSuffix() +
- "/../usr/include"});
- })
- .setFilePathsCallback([](const Multilib &M) {
- return std::vector<std::string>(
- {"/../../../../mips-mti-linux-gnu/lib" + M.gccSuffix()});
- });
- }
- for (auto Candidate : {&MtiMipsMultilibsV1, &MtiMipsMultilibsV2}) {
- if (Candidate->select(Flags, Result.SelectedMultilib)) {
- Result.Multilibs = *Candidate;
- return true;
- }
- }
- return false;
-}
-
-static bool findMipsImgMultilibs(const Multilib::flags_list &Flags,
- FilterNonExistent &NonExistent,
- DetectedMultilibs &Result) {
- // CodeScape IMG toolchain v1.2 and early.
- MultilibSet ImgMultilibsV1;
- {
- auto Mips64r6 = makeMultilib("/mips64r6").flag("+m64").flag("-m32");
-
- auto LittleEndian = makeMultilib("/el").flag("+EL").flag("-EB");
-
- auto MAbi64 =
- makeMultilib("/64").flag("+mabi=n64").flag("-mabi=n32").flag("-m32");
-
- ImgMultilibsV1 =
- MultilibSet()
- .Maybe(Mips64r6)
- .Maybe(MAbi64)
- .Maybe(LittleEndian)
- .FilterOut(NonExistent)
- .setIncludeDirsCallback([](const Multilib &M) {
- return std::vector<std::string>(
- {"/include", "/../../../../sysroot/usr/include"});
- });
- }
-
- // CodeScape IMG toolchain starting from v1.3.
- MultilibSet ImgMultilibsV2;
- {
- auto BeHard = makeMultilib("/mips-r6-hard")
- .flag("+EB")
- .flag("-msoft-float")
- .flag("-mmicromips");
- auto BeSoft = makeMultilib("/mips-r6-soft")
- .flag("+EB")
- .flag("+msoft-float")
- .flag("-mmicromips");
- auto ElHard = makeMultilib("/mipsel-r6-hard")
- .flag("+EL")
- .flag("-msoft-float")
- .flag("-mmicromips");
- auto ElSoft = makeMultilib("/mipsel-r6-soft")
- .flag("+EL")
- .flag("+msoft-float")
- .flag("-mmicromips");
- auto BeMicroHard = makeMultilib("/micromips-r6-hard")
- .flag("+EB")
- .flag("-msoft-float")
- .flag("+mmicromips");
- auto BeMicroSoft = makeMultilib("/micromips-r6-soft")
- .flag("+EB")
- .flag("+msoft-float")
- .flag("+mmicromips");
- auto ElMicroHard = makeMultilib("/micromipsel-r6-hard")
- .flag("+EL")
- .flag("-msoft-float")
- .flag("+mmicromips");
- auto ElMicroSoft = makeMultilib("/micromipsel-r6-soft")
- .flag("+EL")
- .flag("+msoft-float")
- .flag("+mmicromips");
-
- auto O32 =
- makeMultilib("/lib").osSuffix("").flag("-mabi=n32").flag("-mabi=n64");
- auto N32 =
- makeMultilib("/lib32").osSuffix("").flag("+mabi=n32").flag("-mabi=n64");
- auto N64 =
- makeMultilib("/lib64").osSuffix("").flag("-mabi=n32").flag("+mabi=n64");
-
- ImgMultilibsV2 =
- MultilibSet()
- .Either({BeHard, BeSoft, ElHard, ElSoft, BeMicroHard, BeMicroSoft,
- ElMicroHard, ElMicroSoft})
- .Either(O32, N32, N64)
- .FilterOut(NonExistent)
- .setIncludeDirsCallback([](const Multilib &M) {
- return std::vector<std::string>({"/../../../../sysroot" +
- M.includeSuffix() +
- "/../usr/include"});
- })
- .setFilePathsCallback([](const Multilib &M) {
- return std::vector<std::string>(
- {"/../../../../mips-img-linux-gnu/lib" + M.gccSuffix()});
- });
- }
- for (auto Candidate : {&ImgMultilibsV1, &ImgMultilibsV2}) {
- if (Candidate->select(Flags, Result.SelectedMultilib)) {
- Result.Multilibs = *Candidate;
- return true;
- }
- }
- return false;
-}
-
-bool clang::driver::findMIPSMultilibs(const Driver &D,
- const llvm::Triple &TargetTriple,
- StringRef Path, const ArgList &Args,
- DetectedMultilibs &Result) {
- FilterNonExistent NonExistent(Path, "/crtbegin.o", D.getVFS());
-
- StringRef CPUName;
- StringRef ABIName;
- tools::mips::getMipsCPUAndABI(Args, TargetTriple, CPUName, ABIName);
-
- llvm::Triple::ArchType TargetArch = TargetTriple.getArch();
-
- Multilib::flags_list Flags;
- addMultilibFlag(TargetTriple.isMIPS32(), "m32", Flags);
- addMultilibFlag(TargetTriple.isMIPS64(), "m64", Flags);
- addMultilibFlag(isMips16(Args), "mips16", Flags);
- addMultilibFlag(CPUName == "mips32", "march=mips32", Flags);
- addMultilibFlag(CPUName == "mips32r2" || CPUName == "mips32r3" ||
- CPUName == "mips32r5" || CPUName == "p5600",
- "march=mips32r2", Flags);
- addMultilibFlag(CPUName == "mips32r6", "march=mips32r6", Flags);
- addMultilibFlag(CPUName == "mips64", "march=mips64", Flags);
- addMultilibFlag(CPUName == "mips64r2" || CPUName == "mips64r3" ||
- CPUName == "mips64r5" || CPUName == "octeon" ||
- CPUName == "octeon+",
- "march=mips64r2", Flags);
- addMultilibFlag(CPUName == "mips64r6", "march=mips64r6", Flags);
- addMultilibFlag(isMicroMips(Args), "mmicromips", Flags);
- addMultilibFlag(tools::mips::isUCLibc(Args), "muclibc", Flags);
- addMultilibFlag(tools::mips::isNaN2008(D, Args, TargetTriple), "mnan=2008",
- Flags);
- addMultilibFlag(ABIName == "n32", "mabi=n32", Flags);
- addMultilibFlag(ABIName == "n64", "mabi=n64", Flags);
- addMultilibFlag(isSoftFloatABI(Args), "msoft-float", Flags);
- addMultilibFlag(!isSoftFloatABI(Args), "mhard-float", Flags);
- addMultilibFlag(isMipsEL(TargetArch), "EL", Flags);
- addMultilibFlag(!isMipsEL(TargetArch), "EB", Flags);
-
- if (TargetTriple.isAndroid())
- return findMipsAndroidMultilibs(D.getVFS(), Path, Flags, NonExistent,
- Result);
-
- if (TargetTriple.getVendor() == llvm::Triple::MipsTechnologies &&
- TargetTriple.getOS() == llvm::Triple::Linux &&
- TargetTriple.getEnvironment() == llvm::Triple::UnknownEnvironment)
- return findMipsMuslMultilibs(Flags, NonExistent, Result);
-
- if (TargetTriple.getVendor() == llvm::Triple::MipsTechnologies &&
- TargetTriple.getOS() == llvm::Triple::Linux &&
- TargetTriple.isGNUEnvironment())
- return findMipsMtiMultilibs(Flags, NonExistent, Result);
-
- if (TargetTriple.getVendor() == llvm::Triple::ImaginationTechnologies &&
- TargetTriple.getOS() == llvm::Triple::Linux &&
- TargetTriple.isGNUEnvironment())
- return findMipsImgMultilibs(Flags, NonExistent, Result);
-
- if (findMipsCsMultilibs(Flags, NonExistent, Result))
- return true;
-
- // Fallback to the regular toolchain-tree structure.
- Multilib Default;
- Result.Multilibs.push_back(Default);
- Result.Multilibs.FilterOut(NonExistent);
-
- if (Result.Multilibs.select(Flags, Result.SelectedMultilib)) {
- Result.BiarchSibling = Multilib();
- return true;
- }
-
- return false;
-}
-
-static void findAndroidArmMultilibs(const Driver &D,
- const llvm::Triple &TargetTriple,
- StringRef Path, const ArgList &Args,
- DetectedMultilibs &Result) {
- // Find multilibs with subdirectories like armv7-a, thumb, armv7-a/thumb.
- FilterNonExistent NonExistent(Path, "/crtbegin.o", D.getVFS());
- Multilib ArmV7Multilib = makeMultilib("/armv7-a")
- .flag("+march=armv7-a")
- .flag("-mthumb");
- Multilib ThumbMultilib = makeMultilib("/thumb")
- .flag("-march=armv7-a")
- .flag("+mthumb");
- Multilib ArmV7ThumbMultilib = makeMultilib("/armv7-a/thumb")
- .flag("+march=armv7-a")
- .flag("+mthumb");
- Multilib DefaultMultilib = makeMultilib("")
- .flag("-march=armv7-a")
- .flag("-mthumb");
- MultilibSet AndroidArmMultilibs =
- MultilibSet()
- .Either(ThumbMultilib, ArmV7Multilib,
- ArmV7ThumbMultilib, DefaultMultilib)
- .FilterOut(NonExistent);
-
- Multilib::flags_list Flags;
- llvm::StringRef Arch = Args.getLastArgValue(options::OPT_march_EQ);
- bool IsArmArch = TargetTriple.getArch() == llvm::Triple::arm;
- bool IsThumbArch = TargetTriple.getArch() == llvm::Triple::thumb;
- bool IsV7SubArch = TargetTriple.getSubArch() == llvm::Triple::ARMSubArch_v7;
- bool IsThumbMode = IsThumbArch ||
- Args.hasFlag(options::OPT_mthumb, options::OPT_mno_thumb, false) ||
- (IsArmArch && llvm::ARM::parseArchISA(Arch) == llvm::ARM::ISAKind::THUMB);
- bool IsArmV7Mode = (IsArmArch || IsThumbArch) &&
- (llvm::ARM::parseArchVersion(Arch) == 7 ||
- (IsArmArch && Arch == "" && IsV7SubArch));
- addMultilibFlag(IsArmV7Mode, "march=armv7-a", Flags);
- addMultilibFlag(IsThumbMode, "mthumb", Flags);
-
- if (AndroidArmMultilibs.select(Flags, Result.SelectedMultilib))
- Result.Multilibs = AndroidArmMultilibs;
-}
-
-static bool findMSP430Multilibs(const Driver &D,
- const llvm::Triple &TargetTriple,
- StringRef Path, const ArgList &Args,
- DetectedMultilibs &Result) {
- FilterNonExistent NonExistent(Path, "/crtbegin.o", D.getVFS());
- Multilib WithoutExceptions = makeMultilib("/430").flag("-exceptions");
- Multilib WithExceptions = makeMultilib("/430/exceptions").flag("+exceptions");
-
- // FIXME: when clang starts to support msp430x ISA additional logic
- // to select between multilib must be implemented
- // Multilib MSP430xMultilib = makeMultilib("/large");
-
- Result.Multilibs.push_back(WithoutExceptions);
- Result.Multilibs.push_back(WithExceptions);
- Result.Multilibs.FilterOut(NonExistent);
-
- Multilib::flags_list Flags;
- addMultilibFlag(Args.hasFlag(options::OPT_fexceptions,
- options::OPT_fno_exceptions, false),
- "exceptions", Flags);
- if (Result.Multilibs.select(Flags, Result.SelectedMultilib))
- return true;
-
- return false;
-}
-
-static void findCSKYMultilibs(const Driver &D, const llvm::Triple &TargetTriple,
- StringRef Path, const ArgList &Args,
- DetectedMultilibs &Result) {
- FilterNonExistent NonExistent(Path, "/crtbegin.o", D.getVFS());
-
- tools::csky::FloatABI TheFloatABI = tools::csky::getCSKYFloatABI(D, Args);
- llvm::Optional<llvm::StringRef> Res = tools::csky::getCSKYArchName(D, Args, TargetTriple);
-
- if (!Res)
- return;
- auto ARCHName = *Res;
-
- Multilib::flags_list Flags;
- addMultilibFlag(TheFloatABI == tools::csky::FloatABI::Hard, "hard-fp", Flags);
- addMultilibFlag(TheFloatABI == tools::csky::FloatABI::SoftFP, "soft-fp",
- Flags);
- addMultilibFlag(TheFloatABI == tools::csky::FloatABI::Soft, "soft", Flags);
- addMultilibFlag(ARCHName == "ck801", "march=ck801", Flags);
- addMultilibFlag(ARCHName == "ck802", "march=ck802", Flags);
- addMultilibFlag(ARCHName == "ck803", "march=ck803", Flags);
- addMultilibFlag(ARCHName == "ck804", "march=ck804", Flags);
- addMultilibFlag(ARCHName == "ck805", "march=ck805", Flags);
- addMultilibFlag(ARCHName == "ck807", "march=ck807", Flags);
- addMultilibFlag(ARCHName == "ck810", "march=ck810", Flags);
- addMultilibFlag(ARCHName == "ck810v", "march=ck810v", Flags);
- addMultilibFlag(ARCHName == "ck860", "march=ck860", Flags);
- addMultilibFlag(ARCHName == "ck860v", "march=ck860v", Flags);
-
- bool isBigEndian = false;
- if (Arg *A = Args.getLastArg(options::OPT_mlittle_endian,
- options::OPT_mbig_endian))
- isBigEndian = !A->getOption().matches(options::OPT_mlittle_endian);
- addMultilibFlag(isBigEndian, "EB", Flags);
-
- auto HardFloat = makeMultilib("/hard-fp").flag("+hard-fp");
- auto SoftFpFloat = makeMultilib("/soft-fp").flag("+soft-fp");
- auto SoftFloat = makeMultilib("").flag("+soft");
- auto Arch801 = makeMultilib("/ck801").flag("+march=ck801");
- auto Arch802 = makeMultilib("/ck802").flag("+march=ck802");
- auto Arch803 = makeMultilib("/ck803").flag("+march=ck803");
- // CK804 use the same library as CK803
- auto Arch804 = makeMultilib("/ck803").flag("+march=ck804");
- auto Arch805 = makeMultilib("/ck805").flag("+march=ck805");
- auto Arch807 = makeMultilib("/ck807").flag("+march=ck807");
- auto Arch810 = makeMultilib("").flag("+march=ck810");
- auto Arch810v = makeMultilib("/ck810v").flag("+march=ck810v");
- auto Arch860 = makeMultilib("/ck860").flag("+march=ck860");
- auto Arch860v = makeMultilib("/ck860v").flag("+march=ck860v");
- auto BigEndian = makeMultilib("/big").flag("+EB");
-
- MultilibSet CSKYMultilibs =
- MultilibSet()
- .Maybe(BigEndian)
- .Either({Arch801, Arch802, Arch803, Arch804, Arch805, Arch807,
- Arch810, Arch810v, Arch860, Arch860v})
- .Either(HardFloat, SoftFpFloat, SoftFloat)
- .FilterOut(NonExistent);
-
- if (CSKYMultilibs.select(Flags, Result.SelectedMultilib))
- Result.Multilibs = CSKYMultilibs;
-}
-
-static void findRISCVBareMetalMultilibs(const Driver &D,
- const llvm::Triple &TargetTriple,
- StringRef Path, const ArgList &Args,
- DetectedMultilibs &Result) {
- FilterNonExistent NonExistent(Path, "/crtbegin.o", D.getVFS());
- struct RiscvMultilib {
- StringRef march;
- StringRef mabi;
- };
- // currently only support the set of multilibs like riscv-gnu-toolchain does.
- // TODO: support MULTILIB_REUSE
- constexpr RiscvMultilib RISCVMultilibSet[] = {
- {"rv32i", "ilp32"}, {"rv32im", "ilp32"}, {"rv32iac", "ilp32"},
- {"rv32imac", "ilp32"}, {"rv32imafc", "ilp32f"}, {"rv64imac", "lp64"},
- {"rv64imafdc", "lp64d"}};
-
- std::vector<Multilib> Ms;
- for (auto Element : RISCVMultilibSet) {
- // multilib path rule is ${march}/${mabi}
- Ms.emplace_back(
- makeMultilib((Twine(Element.march) + "/" + Twine(Element.mabi)).str())
- .flag(Twine("+march=", Element.march).str())
- .flag(Twine("+mabi=", Element.mabi).str()));
- }
- MultilibSet RISCVMultilibs =
- MultilibSet()
- .Either(ArrayRef<Multilib>(Ms))
- .FilterOut(NonExistent)
- .setFilePathsCallback([](const Multilib &M) {
- return std::vector<std::string>(
- {M.gccSuffix(),
- "/../../../../riscv64-unknown-elf/lib" + M.gccSuffix(),
- "/../../../../riscv32-unknown-elf/lib" + M.gccSuffix()});
- });
-
-
- Multilib::flags_list Flags;
- llvm::StringSet<> Added_ABIs;
- StringRef ABIName = tools::riscv::getRISCVABI(Args, TargetTriple);
- StringRef MArch = tools::riscv::getRISCVArch(Args, TargetTriple);
- for (auto Element : RISCVMultilibSet) {
- addMultilibFlag(MArch == Element.march,
- Twine("march=", Element.march).str().c_str(), Flags);
- if (!Added_ABIs.count(Element.mabi)) {
- Added_ABIs.insert(Element.mabi);
- addMultilibFlag(ABIName == Element.mabi,
- Twine("mabi=", Element.mabi).str().c_str(), Flags);
- }
- }
-
- if (RISCVMultilibs.select(Flags, Result.SelectedMultilib))
- Result.Multilibs = RISCVMultilibs;
-}
-
-static void findRISCVMultilibs(const Driver &D,
- const llvm::Triple &TargetTriple, StringRef Path,
- const ArgList &Args, DetectedMultilibs &Result) {
- if (TargetTriple.getOS() == llvm::Triple::UnknownOS)
- return findRISCVBareMetalMultilibs(D, TargetTriple, Path, Args, Result);
-
- FilterNonExistent NonExistent(Path, "/crtbegin.o", D.getVFS());
- Multilib Ilp32 = makeMultilib("lib32/ilp32").flag("+m32").flag("+mabi=ilp32");
- Multilib Ilp32f =
- makeMultilib("lib32/ilp32f").flag("+m32").flag("+mabi=ilp32f");
- Multilib Ilp32d =
- makeMultilib("lib32/ilp32d").flag("+m32").flag("+mabi=ilp32d");
- Multilib Lp64 = makeMultilib("lib64/lp64").flag("+m64").flag("+mabi=lp64");
- Multilib Lp64f = makeMultilib("lib64/lp64f").flag("+m64").flag("+mabi=lp64f");
- Multilib Lp64d = makeMultilib("lib64/lp64d").flag("+m64").flag("+mabi=lp64d");
- MultilibSet RISCVMultilibs =
- MultilibSet()
- .Either({Ilp32, Ilp32f, Ilp32d, Lp64, Lp64f, Lp64d})
- .FilterOut(NonExistent);
-
- Multilib::flags_list Flags;
- bool IsRV64 = TargetTriple.getArch() == llvm::Triple::riscv64;
- StringRef ABIName = tools::riscv::getRISCVABI(Args, TargetTriple);
-
- addMultilibFlag(!IsRV64, "m32", Flags);
- addMultilibFlag(IsRV64, "m64", Flags);
- addMultilibFlag(ABIName == "ilp32", "mabi=ilp32", Flags);
- addMultilibFlag(ABIName == "ilp32f", "mabi=ilp32f", Flags);
- addMultilibFlag(ABIName == "ilp32d", "mabi=ilp32d", Flags);
- addMultilibFlag(ABIName == "lp64", "mabi=lp64", Flags);
- addMultilibFlag(ABIName == "lp64f", "mabi=lp64f", Flags);
- addMultilibFlag(ABIName == "lp64d", "mabi=lp64d", Flags);
-
- if (RISCVMultilibs.select(Flags, Result.SelectedMultilib))
- Result.Multilibs = RISCVMultilibs;
-}
-
-static bool findBiarchMultilibs(const Driver &D,
- const llvm::Triple &TargetTriple,
- StringRef Path, const ArgList &Args,
- bool NeedsBiarchSuffix,
- DetectedMultilibs &Result) {
- Multilib Default;
-
- // Some versions of SUSE and Fedora on ppc64 put 32-bit libs
- // in what would normally be GCCInstallPath and put the 64-bit
- // libs in a subdirectory named 64. The simple logic we follow is that
- // *if* there is a subdirectory of the right name with crtbegin.o in it,
- // we use that. If not, and if not a biarch triple alias, we look for
- // crtbegin.o without the subdirectory.
-
- StringRef Suff64 = "/64";
- // Solaris uses platform-specific suffixes instead of /64.
- if (TargetTriple.getOS() == llvm::Triple::Solaris) {
- switch (TargetTriple.getArch()) {
- case llvm::Triple::x86:
- case llvm::Triple::x86_64:
- Suff64 = "/amd64";
- break;
- case llvm::Triple::sparc:
- case llvm::Triple::sparcv9:
- Suff64 = "/sparcv9";
- break;
- default:
- break;
- }
- }
-
- Multilib Alt64 = Multilib()
- .gccSuffix(Suff64)
- .includeSuffix(Suff64)
- .flag("-m32")
- .flag("+m64")
- .flag("-mx32");
- Multilib Alt32 = Multilib()
- .gccSuffix("/32")
- .includeSuffix("/32")
- .flag("+m32")
- .flag("-m64")
- .flag("-mx32");
- Multilib Altx32 = Multilib()
- .gccSuffix("/x32")
- .includeSuffix("/x32")
- .flag("-m32")
- .flag("-m64")
- .flag("+mx32");
-
- // GCC toolchain for IAMCU doesn't have crtbegin.o, so look for libgcc.a.
- FilterNonExistent NonExistent(
- Path, TargetTriple.isOSIAMCU() ? "/libgcc.a" : "/crtbegin.o", D.getVFS());
-
- // Determine default multilib from: 32, 64, x32
- // Also handle cases such as 64 on 32, 32 on 64, etc.
- enum { UNKNOWN, WANT32, WANT64, WANTX32 } Want = UNKNOWN;
- const bool IsX32 = TargetTriple.isX32();
- if (TargetTriple.isArch32Bit() && !NonExistent(Alt32))
- Want = WANT64;
- else if (TargetTriple.isArch64Bit() && IsX32 && !NonExistent(Altx32))
- Want = WANT64;
- else if (TargetTriple.isArch64Bit() && !IsX32 && !NonExistent(Alt64))
- Want = WANT32;
- else {
- if (TargetTriple.isArch32Bit())
- Want = NeedsBiarchSuffix ? WANT64 : WANT32;
- else if (IsX32)
- Want = NeedsBiarchSuffix ? WANT64 : WANTX32;
- else
- Want = NeedsBiarchSuffix ? WANT32 : WANT64;
- }
-
- if (Want == WANT32)
- Default.flag("+m32").flag("-m64").flag("-mx32");
- else if (Want == WANT64)
- Default.flag("-m32").flag("+m64").flag("-mx32");
- else if (Want == WANTX32)
- Default.flag("-m32").flag("-m64").flag("+mx32");
- else
- return false;
-
- Result.Multilibs.push_back(Default);
- Result.Multilibs.push_back(Alt64);
- Result.Multilibs.push_back(Alt32);
- Result.Multilibs.push_back(Altx32);
-
- Result.Multilibs.FilterOut(NonExistent);
-
- Multilib::flags_list Flags;
- addMultilibFlag(TargetTriple.isArch64Bit() && !IsX32, "m64", Flags);
- addMultilibFlag(TargetTriple.isArch32Bit(), "m32", Flags);
- addMultilibFlag(TargetTriple.isArch64Bit() && IsX32, "mx32", Flags);
-
- if (!Result.Multilibs.select(Flags, Result.SelectedMultilib))
- return false;
-
- if (Result.SelectedMultilib == Alt64 || Result.SelectedMultilib == Alt32 ||
- Result.SelectedMultilib == Altx32)
- Result.BiarchSibling = Default;
-
- return true;
-}
-
-/// Generic_GCC - A tool chain using the 'gcc' command to perform
-/// all subcommands; this relies on gcc translating the majority of
-/// command line options.
-
-/// Less-than for GCCVersion, implementing a Strict Weak Ordering.
-bool Generic_GCC::GCCVersion::isOlderThan(int RHSMajor, int RHSMinor,
- int RHSPatch,
- StringRef RHSPatchSuffix) const {
- if (Major != RHSMajor)
- return Major < RHSMajor;
- if (Minor != RHSMinor)
- return Minor < RHSMinor;
- if (Patch != RHSPatch) {
- // Note that versions without a specified patch sort higher than those with
- // a patch.
- if (RHSPatch == -1)
- return true;
- if (Patch == -1)
- return false;
-
- // Otherwise just sort on the patch itself.
- return Patch < RHSPatch;
- }
- if (PatchSuffix != RHSPatchSuffix) {
- // Sort empty suffixes higher.
- if (RHSPatchSuffix.empty())
- return true;
- if (PatchSuffix.empty())
- return false;
-
- // Provide a lexicographic sort to make this a total ordering.
- return PatchSuffix < RHSPatchSuffix;
- }
-
- // The versions are equal.
- return false;
-}
-
-/// Parse a GCCVersion object out of a string of text.
-///
-/// This is the primary means of forming GCCVersion objects.
-/*static*/
-Generic_GCC::GCCVersion Generic_GCC::GCCVersion::Parse(StringRef VersionText) {
- const GCCVersion BadVersion = {VersionText.str(), -1, -1, -1, "", "", ""};
- std::pair<StringRef, StringRef> First = VersionText.split('.');
- std::pair<StringRef, StringRef> Second = First.second.split('.');
-
- GCCVersion GoodVersion = {VersionText.str(), -1, -1, -1, "", "", ""};
- if (First.first.getAsInteger(10, GoodVersion.Major) || GoodVersion.Major < 0)
- return BadVersion;
- GoodVersion.MajorStr = First.first.str();
- if (First.second.empty())
- return GoodVersion;
- StringRef MinorStr = Second.first;
- if (Second.second.empty()) {
- if (size_t EndNumber = MinorStr.find_first_not_of("0123456789")) {
- GoodVersion.PatchSuffix = std::string(MinorStr.substr(EndNumber));
- MinorStr = MinorStr.slice(0, EndNumber);
- }
- }
- if (!MinorStr.str().empty() &&
- (MinorStr.getAsInteger(10, GoodVersion.Minor) || GoodVersion.Minor < 0))
- return BadVersion;
- GoodVersion.MinorStr = MinorStr.str();
-
- // First look for a number prefix and parse that if present. Otherwise just
- // stash the entire patch string in the suffix, and leave the number
- // unspecified. This covers versions strings such as:
- // 5 (handled above)
- // 4.4
- // 4.4-patched
- // 4.4.0
- // 4.4.x
- // 4.4.2-rc4
- // 4.4.x-patched
- // And retains any patch number it finds.
- StringRef PatchText = Second.second;
- if (!PatchText.empty()) {
- if (size_t EndNumber = PatchText.find_first_not_of("0123456789")) {
- // Try to parse the number and any suffix.
- if (PatchText.slice(0, EndNumber).getAsInteger(10, GoodVersion.Patch) ||
- GoodVersion.Patch < 0)
- return BadVersion;
- GoodVersion.PatchSuffix = std::string(PatchText.substr(EndNumber));
- }
- }
-
- return GoodVersion;
-}
-
-static llvm::StringRef getGCCToolchainDir(const ArgList &Args,
- llvm::StringRef SysRoot) {
- const Arg *A = Args.getLastArg(clang::driver::options::OPT_gcc_toolchain);
- if (A)
- return A->getValue();
-
- // If we have a SysRoot, ignore GCC_INSTALL_PREFIX.
- // GCC_INSTALL_PREFIX specifies the gcc installation for the default
- // sysroot and is likely not valid with a different sysroot.
- if (!SysRoot.empty())
- return "";
-
- return GCC_INSTALL_PREFIX;
-}
-
-/// Initialize a GCCInstallationDetector from the driver.
-///
-/// This performs all of the autodetection and sets up the various paths.
-/// Once constructed, a GCCInstallationDetector is essentially immutable.
-///
-/// FIXME: We shouldn't need an explicit TargetTriple parameter here, and
-/// should instead pull the target out of the driver. This is currently
-/// necessary because the driver doesn't store the final version of the target
-/// triple.
-void Generic_GCC::GCCInstallationDetector::init(
- const llvm::Triple &TargetTriple, const ArgList &Args,
- ArrayRef<std::string> ExtraTripleAliases) {
- llvm::Triple BiarchVariantTriple = TargetTriple.isArch32Bit()
- ? TargetTriple.get64BitArchVariant()
- : TargetTriple.get32BitArchVariant();
- // The library directories which may contain GCC installations.
- SmallVector<StringRef, 4> CandidateLibDirs, CandidateBiarchLibDirs;
- // The compatible GCC triples for this particular architecture.
- SmallVector<StringRef, 16> CandidateTripleAliases;
- SmallVector<StringRef, 16> CandidateBiarchTripleAliases;
- CollectLibDirsAndTriples(TargetTriple, BiarchVariantTriple, CandidateLibDirs,
- CandidateTripleAliases, CandidateBiarchLibDirs,
- CandidateBiarchTripleAliases);
-
- // Compute the set of prefixes for our search.
- SmallVector<std::string, 8> Prefixes;
- StringRef GCCToolchainDir = getGCCToolchainDir(Args, D.SysRoot);
- if (GCCToolchainDir != "") {
- if (GCCToolchainDir.back() == '/')
- GCCToolchainDir = GCCToolchainDir.drop_back(); // remove the /
-
- Prefixes.push_back(std::string(GCCToolchainDir));
- } else {
- // If we have a SysRoot, try that first.
- if (!D.SysRoot.empty()) {
- Prefixes.push_back(D.SysRoot);
- AddDefaultGCCPrefixes(TargetTriple, Prefixes, D.SysRoot);
- }
-
- // Then look for gcc installed alongside clang.
- Prefixes.push_back(D.InstalledDir + "/..");
-
- // Next, look for prefix(es) that correspond to distribution-supplied gcc
- // installations.
- if (D.SysRoot.empty()) {
- // Typically /usr.
- AddDefaultGCCPrefixes(TargetTriple, Prefixes, D.SysRoot);
- }
-
- // Try to respect gcc-config on Gentoo if --gcc-toolchain is not provided.
- // This avoids accidentally enforcing the system GCC version when using a
- // custom toolchain.
- SmallVector<StringRef, 16> GentooTestTriples;
- // Try to match an exact triple as target triple first.
- // e.g. crossdev -S x86_64-gentoo-linux-gnu will install gcc libs for
- // x86_64-gentoo-linux-gnu. But "clang -target x86_64-gentoo-linux-gnu"
- // may pick the libraries for x86_64-pc-linux-gnu even when exact matching
- // triple x86_64-gentoo-linux-gnu is present.
- GentooTestTriples.push_back(TargetTriple.str());
- // Check rest of triples.
- GentooTestTriples.append(ExtraTripleAliases.begin(),
- ExtraTripleAliases.end());
- GentooTestTriples.append(CandidateTripleAliases.begin(),
- CandidateTripleAliases.end());
- if (ScanGentooConfigs(TargetTriple, Args, GentooTestTriples,
- CandidateBiarchTripleAliases))
- return;
- }
-
- // Loop over the various components which exist and select the best GCC
- // installation available. GCC installs are ranked by version number.
- const GCCVersion VersionZero = GCCVersion::Parse("0.0.0");
- Version = VersionZero;
- for (const std::string &Prefix : Prefixes) {
- auto &VFS = D.getVFS();
- if (!VFS.exists(Prefix))
- continue;
- for (StringRef Suffix : CandidateLibDirs) {
- const std::string LibDir = concat(Prefix, Suffix);
- if (!VFS.exists(LibDir))
- continue;
- // Maybe filter out <libdir>/gcc and <libdir>/gcc-cross.
- bool GCCDirExists = VFS.exists(LibDir + "/gcc");
- bool GCCCrossDirExists = VFS.exists(LibDir + "/gcc-cross");
- // Try to match the exact target triple first.
- ScanLibDirForGCCTriple(TargetTriple, Args, LibDir, TargetTriple.str(),
- false, GCCDirExists, GCCCrossDirExists);
- // Try rest of possible triples.
- for (StringRef Candidate : ExtraTripleAliases) // Try these first.
- ScanLibDirForGCCTriple(TargetTriple, Args, LibDir, Candidate, false,
- GCCDirExists, GCCCrossDirExists);
- for (StringRef Candidate : CandidateTripleAliases)
- ScanLibDirForGCCTriple(TargetTriple, Args, LibDir, Candidate, false,
- GCCDirExists, GCCCrossDirExists);
- }
- for (StringRef Suffix : CandidateBiarchLibDirs) {
- const std::string LibDir = Prefix + Suffix.str();
- if (!VFS.exists(LibDir))
- continue;
- bool GCCDirExists = VFS.exists(LibDir + "/gcc");
- bool GCCCrossDirExists = VFS.exists(LibDir + "/gcc-cross");
- for (StringRef Candidate : CandidateBiarchTripleAliases)
- ScanLibDirForGCCTriple(TargetTriple, Args, LibDir, Candidate, true,
- GCCDirExists, GCCCrossDirExists);
- }
-
- // Skip other prefixes once a GCC installation is found.
- if (Version > VersionZero)
- break;
- }
-}
-
-void Generic_GCC::GCCInstallationDetector::print(raw_ostream &OS) const {
- for (const auto &InstallPath : CandidateGCCInstallPaths)
- OS << "Found candidate GCC installation: " << InstallPath << "\n";
-
- if (!GCCInstallPath.empty())
- OS << "Selected GCC installation: " << GCCInstallPath << "\n";
-
- for (const auto &Multilib : Multilibs)
- OS << "Candidate multilib: " << Multilib << "\n";
-
- if (Multilibs.size() != 0 || !SelectedMultilib.isDefault())
- OS << "Selected multilib: " << SelectedMultilib << "\n";
-}
-
-bool Generic_GCC::GCCInstallationDetector::getBiarchSibling(Multilib &M) const {
- if (BiarchSibling) {
- M = BiarchSibling.value();
- return true;
- }
- return false;
-}
-
-void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes(
- const llvm::Triple &TargetTriple, SmallVectorImpl<std::string> &Prefixes,
- StringRef SysRoot) {
- if (TargetTriple.getOS() == llvm::Triple::Solaris) {
- // Solaris is a special case.
- // The GCC installation is under
- // /usr/gcc/<major>.<minor>/lib/gcc/<triple>/<major>.<minor>.<patch>/
- // so we need to find those /usr/gcc/*/lib/gcc libdirs and go with
- // /usr/gcc/<version> as a prefix.
-
- std::string PrefixDir = concat(SysRoot, "/usr/gcc");
- std::error_code EC;
- for (llvm::vfs::directory_iterator LI = D.getVFS().dir_begin(PrefixDir, EC),
- LE;
- !EC && LI != LE; LI = LI.increment(EC)) {
- StringRef VersionText = llvm::sys::path::filename(LI->path());
- GCCVersion CandidateVersion = GCCVersion::Parse(VersionText);
-
- // Filter out obviously bad entries.
- if (CandidateVersion.Major == -1 || CandidateVersion.isOlderThan(4, 1, 1))
- continue;
-
- std::string CandidatePrefix = PrefixDir + "/" + VersionText.str();
- std::string CandidateLibPath = CandidatePrefix + "/lib/gcc";
- if (!D.getVFS().exists(CandidateLibPath))
- continue;
-
- Prefixes.push_back(CandidatePrefix);
- }
- return;
- }
-
- // For Linux, if --sysroot is not specified, look for RHEL/CentOS devtoolsets
- // and gcc-toolsets.
- if (SysRoot.empty() && TargetTriple.getOS() == llvm::Triple::Linux &&
- D.getVFS().exists("/opt/rh")) {
- // TODO: We may want to remove this, since the functionality
- // can be achieved using config files.
- Prefixes.push_back("/opt/rh/gcc-toolset-12/root/usr");
- Prefixes.push_back("/opt/rh/gcc-toolset-11/root/usr");
- Prefixes.push_back("/opt/rh/gcc-toolset-10/root/usr");
- Prefixes.push_back("/opt/rh/devtoolset-12/root/usr");
- Prefixes.push_back("/opt/rh/devtoolset-11/root/usr");
- Prefixes.push_back("/opt/rh/devtoolset-10/root/usr");
- Prefixes.push_back("/opt/rh/devtoolset-9/root/usr");
- Prefixes.push_back("/opt/rh/devtoolset-8/root/usr");
- Prefixes.push_back("/opt/rh/devtoolset-7/root/usr");
- Prefixes.push_back("/opt/rh/devtoolset-6/root/usr");
- Prefixes.push_back("/opt/rh/devtoolset-4/root/usr");
- Prefixes.push_back("/opt/rh/devtoolset-3/root/usr");
- Prefixes.push_back("/opt/rh/devtoolset-2/root/usr");
- }
-
- // Fall back to /usr which is used by most non-Solaris systems.
- Prefixes.push_back(concat(SysRoot, "/usr"));
-}
-
-/*static*/ void Generic_GCC::GCCInstallationDetector::CollectLibDirsAndTriples(
- const llvm::Triple &TargetTriple, const llvm::Triple &BiarchTriple,
- SmallVectorImpl<StringRef> &LibDirs,
- SmallVectorImpl<StringRef> &TripleAliases,
- SmallVectorImpl<StringRef> &BiarchLibDirs,
- SmallVectorImpl<StringRef> &BiarchTripleAliases) {
- // Declare a bunch of static data sets that we'll select between below. These
- // are specifically designed to always refer to string literals to avoid any
- // lifetime or initialization issues.
- //
- // The *Triples variables hard code some triples so that, for example,
- // --target=aarch64 (incomplete triple) can detect lib/aarch64-linux-gnu.
- // They are not needed when the user has correct LLVM_DEFAULT_TARGET_TRIPLE
- // and always uses the full --target (e.g. --target=aarch64-linux-gnu). The
- // lists should shrink over time. Please don't add more elements to *Triples.
- static const char *const AArch64LibDirs[] = {"/lib64", "/lib"};
- static const char *const AArch64Triples[] = {
- "aarch64-none-linux-gnu", "aarch64-linux-gnu", "aarch64-redhat-linux",
- "aarch64-radix-linux-gnu", "aarch64-a311x-linux-gnu", "aarch64-h5-linux-gnu",
- "aarch64-m1000-linux-gnu", "aarch64-rk339x-linux-gnu", "aarch64-rk33xx-linux-gnu",
- "aarch64-s9xx-linux-gnu", "aarch64-suse-linux"};
- static const char *const AArch64beLibDirs[] = {"/lib"};
- static const char *const AArch64beTriples[] = {"aarch64_be-none-linux-gnu",
- "aarch64_be-linux-gnu"};
-
- static const char *const ARMLibDirs[] = {"/lib"};
- static const char *const ARMTriples[] = {"arm-linux-gnueabi"};
- static const char *const ARMHFTriples[] = {"arm-linux-gnueabihf",
- "arm-a1x-linux-gnueabihf",
- "arm-a2x-linux-gnueabihf",
- "arm-am335x-linux-gnueabihf",
- "arm-h3-linux-gnueabihf",
- "arm-imx6-linux-gnueabihf",
- "arm-imx6ull-linux-gnueabihf",
- "arm-omap543x-linux-gnueabihf",
- "arm-rk328x-linux-gnueabihf",
- "arm-s8xx-linux-gnueabihf",
- "arm-radix-linux-gnueabihf",
- "armv7hl-redhat-linux-gnueabi",
- "armv6hl-suse-linux-gnueabi",
- "armv7hl-suse-linux-gnueabi"};
- static const char *const ARMebLibDirs[] = {"/lib"};
- static const char *const ARMebTriples[] = {"armeb-linux-gnueabi"};
- static const char *const ARMebHFTriples[] = {
- "armeb-linux-gnueabihf", "armebv7hl-redhat-linux-gnueabi"};
-
- static const char *const AVRLibDirs[] = {"/lib"};
- static const char *const AVRTriples[] = {"avr"};
-
- static const char *const CSKYLibDirs[] = {"/lib"};
- static const char *const CSKYTriples[] = {
- "csky-linux-gnuabiv2", "csky-linux-uclibcabiv2", "csky-elf-noneabiv2"};
-
- static const char *const X86_64LibDirs[] = {"/lib64", "/lib"};
- static const char *const X86_64Triples[] = {
- "x86_64-linux-gnu", "x86_64-unknown-linux-gnu",
- "x86_64-pc-linux-gnu", "x86_64-redhat-linux6E",
- "x86_64-redhat-linux", "x86_64-suse-linux",
- "x86_64-manbo-linux-gnu", "x86_64-linux-gnu",
- "x86_64-slackware-linux", "x86_64-radix-linux-gnu", "x86_64-unknown-linux",
- "x86_64-amazon-linux"};
- static const char *const X32Triples[] = {"x86_64-linux-gnux32",
- "x86_64-pc-linux-gnux32"};
- static const char *const X32LibDirs[] = {"/libx32", "/lib"};
- static const char *const X86LibDirs[] = {"/lib32", "/lib"};
- static const char *const X86Triples[] = {
- "i586-linux-gnu", "i686-linux-gnu", "i686-pc-linux-gnu",
- "i386-redhat-linux6E", "i686-redhat-linux", "i386-redhat-linux",
- "i486-slackware-linux", "i586-slackware-linux", "i686-slackware-linux",
- "i386-radix-linux-gnu", "i586-radix-linux-gnu", "i686-radix-linux-gnu",
- "i586-suse-linux", "i686-montavista-linux", "i686-gnu"};
-
- static const char *const M68kLibDirs[] = {"/lib"};
- static const char *const M68kTriples[] = {
- "m68k-linux-gnu", "m68k-unknown-linux-gnu", "m68k-suse-linux"};
-
- static const char *const MIPSLibDirs[] = {"/libo32", "/lib"};
- static const char *const MIPSTriples[] = {
- "mips-linux-gnu", "mips-mti-linux", "mips-mti-linux-gnu",
- "mips-img-linux-gnu", "mipsisa32r6-linux-gnu"};
- static const char *const MIPSELLibDirs[] = {"/libo32", "/lib"};
- static const char *const MIPSELTriples[] = {
- "mipsel-linux-gnu", "mips-img-linux-gnu", "mipsisa32r6el-linux-gnu",
- "mipsel-p5600-linux-gnu", "mipsel-jz47xx-linux-gnu", "mipsel-radix-linux-gnu"};
-
- static const char *const MIPS64LibDirs[] = {"/lib64", "/lib"};
- static const char *const MIPS64Triples[] = {
- "mips64-linux-gnu", "mips-mti-linux-gnu",
- "mips-img-linux-gnu", "mips64-linux-gnuabi64",
- "mipsisa64r6-linux-gnu", "mipsisa64r6-linux-gnuabi64"};
- static const char *const MIPS64ELLibDirs[] = {"/lib64", "/lib"};
- static const char *const MIPS64ELTriples[] = {
- "mips64el-linux-gnu", "mips-mti-linux-gnu",
- "mips-img-linux-gnu", "mips64el-linux-gnuabi64",
- "mipsisa64r6el-linux-gnu", "mipsisa64r6el-linux-gnuabi64"};
-
- static const char *const MIPSN32LibDirs[] = {"/lib32"};
- static const char *const MIPSN32Triples[] = {"mips64-linux-gnuabin32",
- "mipsisa64r6-linux-gnuabin32"};
- static const char *const MIPSN32ELLibDirs[] = {"/lib32"};
- static const char *const MIPSN32ELTriples[] = {
- "mips64el-linux-gnuabin32", "mipsisa64r6el-linux-gnuabin32"};
-
- static const char *const MSP430LibDirs[] = {"/lib"};
- static const char *const MSP430Triples[] = {"msp430-elf"};
-
- static const char *const PPCLibDirs[] = {"/lib32", "/lib"};
- static const char *const PPCTriples[] = {
- "powerpc-linux-gnu", "powerpc-unknown-linux-gnu", "powerpc-linux-gnuspe",
- "powerpc-power8-linux-gnu", "ppc-power8-linux-gnu",
- "powerpc-power9-linux-gnu", "ppc-power9-linux-gnu",
- "powerpc-radix-linux-gnu", "ppc-radix-linux-gnu",
- // On 32-bit PowerPC systems running SUSE Linux, gcc is configured as a
- // 64-bit compiler which defaults to "-m32", hence "powerpc64-suse-linux".
- "powerpc64-suse-linux", "powerpc-montavista-linuxspe"};
- static const char *const PPCLELibDirs[] = {"/lib32", "/lib"};
- static const char *const PPCLETriples[] = {"powerpcle-linux-gnu",
- "powerpcle-unknown-linux-gnu",
- "powerpcle-linux-musl"};
-
- static const char *const PPC64LibDirs[] = {"/lib64", "/lib"};
- static const char *const PPC64Triples[] = {
- "powerpc64-linux-gnu", "powerpc64-unknown-linux-gnu",
- "powerpc64-power8-linux-gnu", "ppc64-power8-linux-gnu",
- "powerpc64-power9-linux-gnu", "ppc64-power9-linux-gnu",
- "powerpc64-radix-linux-gnu", "ppc64-radix-linux-gnu",
- "powerpc64-suse-linux", "ppc64-redhat-linux"};
- static const char *const PPC64LELibDirs[] = {"/lib64", "/lib"};
- static const char *const PPC64LETriples[] = {
- "powerpc64le-linux-gnu", "powerpc64le-unknown-linux-gnu",
- "powerpc64le-none-linux-gnu", "powerpc64le-suse-linux",
- "powerpc64le-power8-linux-gnu", "ppc64le-power8-linux-gnu",
- "powerpc64le-power9-linux-gnu", "ppc64le-power9-linux-gnu",
- "powerpc64le-radix-linux-gnu", "ppc64le-radix-linux-gnu",
- "ppc64le-redhat-linux"};
-
- static const char *const RISCV32LibDirs[] = {"/lib32", "/lib"};
- static const char *const RISCV32Triples[] = {"riscv32-unknown-linux-gnu",
- "riscv32-linux-gnu",
- "riscv32-unknown-elf"};
- static const char *const RISCV64LibDirs[] = {"/lib64", "/lib"};
- static const char *const RISCV64Triples[] = {"riscv64-unknown-linux-gnu",
- "riscv64-linux-gnu",
- "riscv64-rv64gc-linux-gnu",
- "riscv64-radix-linux-gnu",
- "riscv64-unknown-elf"};
-
- static const char *const SPARCv8LibDirs[] = {"/lib32", "/lib"};
- static const char *const SPARCv8Triples[] = {"sparc-linux-gnu",
- "sparcv8-linux-gnu"};
- static const char *const SPARCv9LibDirs[] = {"/lib64", "/lib"};
- static const char *const SPARCv9Triples[] = {"sparc64-linux-gnu",
- "sparcv9-linux-gnu"};
-
- static const char *const SystemZLibDirs[] = {"/lib64", "/lib"};
- static const char *const SystemZTriples[] = {
- "s390x-linux-gnu", "s390x-unknown-linux-gnu", "s390x-ibm-linux-gnu",
- "s390x-suse-linux", "s390x-redhat-linux"};
-
-
- using std::begin;
- using std::end;
-
- if (TargetTriple.getOS() == llvm::Triple::Solaris) {
- static const char *const SolarisLibDirs[] = {"/lib"};
- static const char *const SolarisSparcV8Triples[] = {
- "sparc-sun-solaris2.11", "sparc-sun-solaris2.12"};
- static const char *const SolarisSparcV9Triples[] = {
- "sparcv9-sun-solaris2.11", "sparcv9-sun-solaris2.12"};
- static const char *const SolarisX86Triples[] = {"i386-pc-solaris2.11",
- "i386-pc-solaris2.12"};
- static const char *const SolarisX86_64Triples[] = {"x86_64-pc-solaris2.11",
- "x86_64-pc-solaris2.12"};
- LibDirs.append(begin(SolarisLibDirs), end(SolarisLibDirs));
- BiarchLibDirs.append(begin(SolarisLibDirs), end(SolarisLibDirs));
- switch (TargetTriple.getArch()) {
- case llvm::Triple::x86:
- TripleAliases.append(begin(SolarisX86Triples), end(SolarisX86Triples));
- BiarchTripleAliases.append(begin(SolarisX86_64Triples),
- end(SolarisX86_64Triples));
- break;
- case llvm::Triple::x86_64:
- TripleAliases.append(begin(SolarisX86_64Triples),
- end(SolarisX86_64Triples));
- BiarchTripleAliases.append(begin(SolarisX86Triples),
- end(SolarisX86Triples));
- break;
- case llvm::Triple::sparc:
- TripleAliases.append(begin(SolarisSparcV8Triples),
- end(SolarisSparcV8Triples));
- BiarchTripleAliases.append(begin(SolarisSparcV9Triples),
- end(SolarisSparcV9Triples));
- break;
- case llvm::Triple::sparcv9:
- TripleAliases.append(begin(SolarisSparcV9Triples),
- end(SolarisSparcV9Triples));
- BiarchTripleAliases.append(begin(SolarisSparcV8Triples),
- end(SolarisSparcV8Triples));
- break;
- default:
- break;
- }
- return;
- }
-
- // Android targets should not use GNU/Linux tools or libraries.
- if (TargetTriple.isAndroid()) {
- static const char *const AArch64AndroidTriples[] = {
- "aarch64-linux-android"};
- static const char *const ARMAndroidTriples[] = {"arm-linux-androideabi"};
- static const char *const MIPSELAndroidTriples[] = {"mipsel-linux-android"};
- static const char *const MIPS64ELAndroidTriples[] = {
- "mips64el-linux-android"};
- static const char *const X86AndroidTriples[] = {"i686-linux-android"};
- static const char *const X86_64AndroidTriples[] = {"x86_64-linux-android"};
-
- switch (TargetTriple.getArch()) {
- case llvm::Triple::aarch64:
- LibDirs.append(begin(AArch64LibDirs), end(AArch64LibDirs));
- TripleAliases.append(begin(AArch64AndroidTriples),
- end(AArch64AndroidTriples));
- break;
- case llvm::Triple::arm:
- case llvm::Triple::thumb:
- LibDirs.append(begin(ARMLibDirs), end(ARMLibDirs));
- TripleAliases.append(begin(ARMAndroidTriples), end(ARMAndroidTriples));
- break;
- case llvm::Triple::mipsel:
- LibDirs.append(begin(MIPSELLibDirs), end(MIPSELLibDirs));
- TripleAliases.append(begin(MIPSELAndroidTriples),
- end(MIPSELAndroidTriples));
- BiarchLibDirs.append(begin(MIPS64ELLibDirs), end(MIPS64ELLibDirs));
- BiarchTripleAliases.append(begin(MIPS64ELAndroidTriples),
- end(MIPS64ELAndroidTriples));
- break;
- case llvm::Triple::mips64el:
- LibDirs.append(begin(MIPS64ELLibDirs), end(MIPS64ELLibDirs));
- TripleAliases.append(begin(MIPS64ELAndroidTriples),
- end(MIPS64ELAndroidTriples));
- BiarchLibDirs.append(begin(MIPSELLibDirs), end(MIPSELLibDirs));
- BiarchTripleAliases.append(begin(MIPSELAndroidTriples),
- end(MIPSELAndroidTriples));
- break;
- case llvm::Triple::x86_64:
- LibDirs.append(begin(X86_64LibDirs), end(X86_64LibDirs));
- TripleAliases.append(begin(X86_64AndroidTriples),
- end(X86_64AndroidTriples));
- BiarchLibDirs.append(begin(X86LibDirs), end(X86LibDirs));
- BiarchTripleAliases.append(begin(X86AndroidTriples),
- end(X86AndroidTriples));
- break;
- case llvm::Triple::x86:
- LibDirs.append(begin(X86LibDirs), end(X86LibDirs));
- TripleAliases.append(begin(X86AndroidTriples), end(X86AndroidTriples));
- BiarchLibDirs.append(begin(X86_64LibDirs), end(X86_64LibDirs));
- BiarchTripleAliases.append(begin(X86_64AndroidTriples),
- end(X86_64AndroidTriples));
- break;
- default:
- break;
- }
-
- return;
- }
-
- switch (TargetTriple.getArch()) {
- case llvm::Triple::aarch64:
- LibDirs.append(begin(AArch64LibDirs), end(AArch64LibDirs));
- TripleAliases.append(begin(AArch64Triples), end(AArch64Triples));
- BiarchLibDirs.append(begin(AArch64LibDirs), end(AArch64LibDirs));
- BiarchTripleAliases.append(begin(AArch64Triples), end(AArch64Triples));
- break;
- case llvm::Triple::aarch64_be:
- LibDirs.append(begin(AArch64beLibDirs), end(AArch64beLibDirs));
- TripleAliases.append(begin(AArch64beTriples), end(AArch64beTriples));
- BiarchLibDirs.append(begin(AArch64beLibDirs), end(AArch64beLibDirs));
- BiarchTripleAliases.append(begin(AArch64beTriples), end(AArch64beTriples));
- break;
- case llvm::Triple::arm:
- case llvm::Triple::thumb:
- LibDirs.append(begin(ARMLibDirs), end(ARMLibDirs));
- if (TargetTriple.getEnvironment() == llvm::Triple::GNUEABIHF) {
- TripleAliases.append(begin(ARMHFTriples), end(ARMHFTriples));
- } else {
- TripleAliases.append(begin(ARMTriples), end(ARMTriples));
- }
- break;
- case llvm::Triple::armeb:
- case llvm::Triple::thumbeb:
- LibDirs.append(begin(ARMebLibDirs), end(ARMebLibDirs));
- if (TargetTriple.getEnvironment() == llvm::Triple::GNUEABIHF) {
- TripleAliases.append(begin(ARMebHFTriples), end(ARMebHFTriples));
- } else {
- TripleAliases.append(begin(ARMebTriples), end(ARMebTriples));
- }
- break;
- case llvm::Triple::avr:
- LibDirs.append(begin(AVRLibDirs), end(AVRLibDirs));
- TripleAliases.append(begin(AVRTriples), end(AVRTriples));
- break;
- case llvm::Triple::csky:
- LibDirs.append(begin(CSKYLibDirs), end(CSKYLibDirs));
- TripleAliases.append(begin(CSKYTriples), end(CSKYTriples));
- break;
- case llvm::Triple::x86_64:
- if (TargetTriple.isX32()) {
- LibDirs.append(begin(X32LibDirs), end(X32LibDirs));
- TripleAliases.append(begin(X32Triples), end(X32Triples));
- BiarchLibDirs.append(begin(X86_64LibDirs), end(X86_64LibDirs));
- BiarchTripleAliases.append(begin(X86_64Triples), end(X86_64Triples));
- } else {
- LibDirs.append(begin(X86_64LibDirs), end(X86_64LibDirs));
- TripleAliases.append(begin(X86_64Triples), end(X86_64Triples));
- BiarchLibDirs.append(begin(X32LibDirs), end(X32LibDirs));
- BiarchTripleAliases.append(begin(X32Triples), end(X32Triples));
- }
- BiarchLibDirs.append(begin(X86LibDirs), end(X86LibDirs));
- BiarchTripleAliases.append(begin(X86Triples), end(X86Triples));
- break;
- case llvm::Triple::x86:
- LibDirs.append(begin(X86LibDirs), end(X86LibDirs));
- // MCU toolchain is 32 bit only and its triple alias is TargetTriple
- // itself, which will be appended below.
- if (!TargetTriple.isOSIAMCU()) {
- TripleAliases.append(begin(X86Triples), end(X86Triples));
- BiarchLibDirs.append(begin(X86_64LibDirs), end(X86_64LibDirs));
- BiarchTripleAliases.append(begin(X86_64Triples), end(X86_64Triples));
- BiarchLibDirs.append(begin(X32LibDirs), end(X32LibDirs));
- BiarchTripleAliases.append(begin(X32Triples), end(X32Triples));
- }
- break;
- case llvm::Triple::m68k:
- LibDirs.append(begin(M68kLibDirs), end(M68kLibDirs));
- TripleAliases.append(begin(M68kTriples), end(M68kTriples));
- break;
- case llvm::Triple::mips:
- LibDirs.append(begin(MIPSLibDirs), end(MIPSLibDirs));
- TripleAliases.append(begin(MIPSTriples), end(MIPSTriples));
- BiarchLibDirs.append(begin(MIPS64LibDirs), end(MIPS64LibDirs));
- BiarchTripleAliases.append(begin(MIPS64Triples), end(MIPS64Triples));
- BiarchLibDirs.append(begin(MIPSN32LibDirs), end(MIPSN32LibDirs));
- BiarchTripleAliases.append(begin(MIPSN32Triples), end(MIPSN32Triples));
- break;
- case llvm::Triple::mipsel:
- LibDirs.append(begin(MIPSELLibDirs), end(MIPSELLibDirs));
- TripleAliases.append(begin(MIPSELTriples), end(MIPSELTriples));
- TripleAliases.append(begin(MIPSTriples), end(MIPSTriples));
- BiarchLibDirs.append(begin(MIPS64ELLibDirs), end(MIPS64ELLibDirs));
- BiarchTripleAliases.append(begin(MIPS64ELTriples), end(MIPS64ELTriples));
- BiarchLibDirs.append(begin(MIPSN32ELLibDirs), end(MIPSN32ELLibDirs));
- BiarchTripleAliases.append(begin(MIPSN32ELTriples), end(MIPSN32ELTriples));
- break;
- case llvm::Triple::mips64:
- LibDirs.append(begin(MIPS64LibDirs), end(MIPS64LibDirs));
- TripleAliases.append(begin(MIPS64Triples), end(MIPS64Triples));
- BiarchLibDirs.append(begin(MIPSLibDirs), end(MIPSLibDirs));
- BiarchTripleAliases.append(begin(MIPSTriples), end(MIPSTriples));
- BiarchLibDirs.append(begin(MIPSN32LibDirs), end(MIPSN32LibDirs));
- BiarchTripleAliases.append(begin(MIPSN32Triples), end(MIPSN32Triples));
- break;
- case llvm::Triple::mips64el:
- LibDirs.append(begin(MIPS64ELLibDirs), end(MIPS64ELLibDirs));
- TripleAliases.append(begin(MIPS64ELTriples), end(MIPS64ELTriples));
- BiarchLibDirs.append(begin(MIPSELLibDirs), end(MIPSELLibDirs));
- BiarchTripleAliases.append(begin(MIPSELTriples), end(MIPSELTriples));
- BiarchLibDirs.append(begin(MIPSN32ELLibDirs), end(MIPSN32ELLibDirs));
- BiarchTripleAliases.append(begin(MIPSN32ELTriples), end(MIPSN32ELTriples));
- BiarchTripleAliases.append(begin(MIPSTriples), end(MIPSTriples));
- break;
- case llvm::Triple::msp430:
- LibDirs.append(begin(MSP430LibDirs), end(MSP430LibDirs));
- TripleAliases.append(begin(MSP430Triples), end(MSP430Triples));
- break;
- case llvm::Triple::ppc:
- LibDirs.append(begin(PPCLibDirs), end(PPCLibDirs));
- TripleAliases.append(begin(PPCTriples), end(PPCTriples));
- BiarchLibDirs.append(begin(PPC64LibDirs), end(PPC64LibDirs));
- BiarchTripleAliases.append(begin(PPC64Triples), end(PPC64Triples));
- break;
- case llvm::Triple::ppcle:
- LibDirs.append(begin(PPCLELibDirs), end(PPCLELibDirs));
- TripleAliases.append(begin(PPCLETriples), end(PPCLETriples));
- BiarchLibDirs.append(begin(PPC64LELibDirs), end(PPC64LELibDirs));
- BiarchTripleAliases.append(begin(PPC64LETriples), end(PPC64LETriples));
- break;
- case llvm::Triple::ppc64:
- LibDirs.append(begin(PPC64LibDirs), end(PPC64LibDirs));
- TripleAliases.append(begin(PPC64Triples), end(PPC64Triples));
- BiarchLibDirs.append(begin(PPCLibDirs), end(PPCLibDirs));
- BiarchTripleAliases.append(begin(PPCTriples), end(PPCTriples));
- break;
- case llvm::Triple::ppc64le:
- LibDirs.append(begin(PPC64LELibDirs), end(PPC64LELibDirs));
- TripleAliases.append(begin(PPC64LETriples), end(PPC64LETriples));
- BiarchLibDirs.append(begin(PPCLELibDirs), end(PPCLELibDirs));
- BiarchTripleAliases.append(begin(PPCLETriples), end(PPCLETriples));
- break;
- case llvm::Triple::riscv32:
- LibDirs.append(begin(RISCV32LibDirs), end(RISCV32LibDirs));
- TripleAliases.append(begin(RISCV32Triples), end(RISCV32Triples));
- BiarchLibDirs.append(begin(RISCV64LibDirs), end(RISCV64LibDirs));
- BiarchTripleAliases.append(begin(RISCV64Triples), end(RISCV64Triples));
- break;
- case llvm::Triple::riscv64:
- LibDirs.append(begin(RISCV64LibDirs), end(RISCV64LibDirs));
- TripleAliases.append(begin(RISCV64Triples), end(RISCV64Triples));
- BiarchLibDirs.append(begin(RISCV32LibDirs), end(RISCV32LibDirs));
- BiarchTripleAliases.append(begin(RISCV32Triples), end(RISCV32Triples));
- break;
- case llvm::Triple::sparc:
- case llvm::Triple::sparcel:
- LibDirs.append(begin(SPARCv8LibDirs), end(SPARCv8LibDirs));
- TripleAliases.append(begin(SPARCv8Triples), end(SPARCv8Triples));
- BiarchLibDirs.append(begin(SPARCv9LibDirs), end(SPARCv9LibDirs));
- BiarchTripleAliases.append(begin(SPARCv9Triples), end(SPARCv9Triples));
- break;
- case llvm::Triple::sparcv9:
- LibDirs.append(begin(SPARCv9LibDirs), end(SPARCv9LibDirs));
- TripleAliases.append(begin(SPARCv9Triples), end(SPARCv9Triples));
- BiarchLibDirs.append(begin(SPARCv8LibDirs), end(SPARCv8LibDirs));
- BiarchTripleAliases.append(begin(SPARCv8Triples), end(SPARCv8Triples));
- break;
- case llvm::Triple::systemz:
- LibDirs.append(begin(SystemZLibDirs), end(SystemZLibDirs));
- TripleAliases.append(begin(SystemZTriples), end(SystemZTriples));
- break;
- default:
- // By default, just rely on the standard lib directories and the original
- // triple.
- break;
- }
-
- // Always append the drivers target triple to the end, in case it doesn't
- // match any of our aliases.
- TripleAliases.push_back(TargetTriple.str());
-
- // Also include the multiarch variant if it's different.
- if (TargetTriple.str() != BiarchTriple.str())
- BiarchTripleAliases.push_back(BiarchTriple.str());
-}
-
-bool Generic_GCC::GCCInstallationDetector::ScanGCCForMultilibs(
- const llvm::Triple &TargetTriple, const ArgList &Args,
- StringRef Path, bool NeedsBiarchSuffix) {
- llvm::Triple::ArchType TargetArch = TargetTriple.getArch();
- DetectedMultilibs Detected;
-
- // Android standalone toolchain could have multilibs for ARM and Thumb.
- // Debian mips multilibs behave more like the rest of the biarch ones,
- // so handle them there
- if (isArmOrThumbArch(TargetArch) && TargetTriple.isAndroid()) {
- // It should also work without multilibs in a simplified toolchain.
- findAndroidArmMultilibs(D, TargetTriple, Path, Args, Detected);
- } else if (TargetTriple.isCSKY()) {
- findCSKYMultilibs(D, TargetTriple, Path, Args, Detected);
- } else if (TargetTriple.isMIPS()) {
- if (!findMIPSMultilibs(D, TargetTriple, Path, Args, Detected))
- return false;
- } else if (TargetTriple.isRISCV()) {
- findRISCVMultilibs(D, TargetTriple, Path, Args, Detected);
- } else if (isMSP430(TargetArch)) {
- findMSP430Multilibs(D, TargetTriple, Path, Args, Detected);
- } else if (TargetArch == llvm::Triple::avr) {
- // AVR has no multilibs.
- } else if (!findBiarchMultilibs(D, TargetTriple, Path, Args,
- NeedsBiarchSuffix, Detected)) {
- return false;
- }
-
- Multilibs = Detected.Multilibs;
- SelectedMultilib = Detected.SelectedMultilib;
- BiarchSibling = Detected.BiarchSibling;
-
- return true;
-}
-
-void Generic_GCC::GCCInstallationDetector::ScanLibDirForGCCTriple(
- const llvm::Triple &TargetTriple, const ArgList &Args,
- const std::string &LibDir, StringRef CandidateTriple,
- bool NeedsBiarchSuffix, bool GCCDirExists, bool GCCCrossDirExists) {
- // Locations relative to the system lib directory where GCC's triple-specific
- // directories might reside.
- struct GCCLibSuffix {
- // Path from system lib directory to GCC triple-specific directory.
- std::string LibSuffix;
- // Path from GCC triple-specific directory back to system lib directory.
- // This is one '..' component per component in LibSuffix.
- StringRef ReversePath;
- // Whether this library suffix is relevant for the triple.
- bool Active;
- } Suffixes[] = {
- // This is the normal place.
- {"gcc/" + CandidateTriple.str(), "../..", GCCDirExists},
-
- // Debian puts cross-compilers in gcc-cross.
- {"gcc-cross/" + CandidateTriple.str(), "../..", GCCCrossDirExists},
-
- // The Freescale PPC SDK has the gcc libraries in
- // <sysroot>/usr/lib/<triple>/x.y.z so have a look there as well. Only do
- // this on Freescale triples, though, since some systems put a *lot* of
- // files in that location, not just GCC installation data.
- {CandidateTriple.str(), "..",
- TargetTriple.getVendor() == llvm::Triple::Freescale ||
- TargetTriple.getVendor() == llvm::Triple::OpenEmbedded}};
-
- for (auto &Suffix : Suffixes) {
- if (!Suffix.Active)
- continue;
-
- StringRef LibSuffix = Suffix.LibSuffix;
- std::error_code EC;
- for (llvm::vfs::directory_iterator
- LI = D.getVFS().dir_begin(LibDir + "/" + LibSuffix, EC),
- LE;
- !EC && LI != LE; LI = LI.increment(EC)) {
- StringRef VersionText = llvm::sys::path::filename(LI->path());
- GCCVersion CandidateVersion = GCCVersion::Parse(VersionText);
- if (CandidateVersion.Major != -1) // Filter obviously bad entries.
- if (!CandidateGCCInstallPaths.insert(std::string(LI->path())).second)
- continue; // Saw this path before; no need to look at it again.
- if (CandidateVersion.isOlderThan(4, 1, 1))
- continue;
- if (CandidateVersion <= Version)
- continue;
-
- if (!ScanGCCForMultilibs(TargetTriple, Args, LI->path(),
- NeedsBiarchSuffix))
- continue;
-
- Version = CandidateVersion;
- GCCTriple.setTriple(CandidateTriple);
- // FIXME: We hack together the directory name here instead of
- // using LI to ensure stable path separators across Windows and
- // Linux.
- GCCInstallPath = (LibDir + "/" + LibSuffix + "/" + VersionText).str();
- GCCParentLibPath = (GCCInstallPath + "/../" + Suffix.ReversePath).str();
- IsValid = true;
- }
- }
-}
-
-bool Generic_GCC::GCCInstallationDetector::ScanGentooConfigs(
- const llvm::Triple &TargetTriple, const ArgList &Args,
- const SmallVectorImpl<StringRef> &CandidateTriples,
- const SmallVectorImpl<StringRef> &CandidateBiarchTriples) {
- if (!D.getVFS().exists(concat(D.SysRoot, GentooConfigDir)))
- return false;
-
- for (StringRef CandidateTriple : CandidateTriples) {
- if (ScanGentooGccConfig(TargetTriple, Args, CandidateTriple))
- return true;
- }
-
- for (StringRef CandidateTriple : CandidateBiarchTriples) {
- if (ScanGentooGccConfig(TargetTriple, Args, CandidateTriple, true))
- return true;
- }
- return false;
-}
-
-bool Generic_GCC::GCCInstallationDetector::ScanGentooGccConfig(
- const llvm::Triple &TargetTriple, const ArgList &Args,
- StringRef CandidateTriple, bool NeedsBiarchSuffix) {
- llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>> File =
- D.getVFS().getBufferForFile(concat(D.SysRoot, GentooConfigDir,
- "/config-" + CandidateTriple.str()));
- if (File) {
- SmallVector<StringRef, 2> Lines;
- File.get()->getBuffer().split(Lines, "\n");
- for (StringRef Line : Lines) {
- Line = Line.trim();
- // CURRENT=triple-version
- if (!Line.consume_front("CURRENT="))
- continue;
- // Process the config file pointed to by CURRENT.
- llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>> ConfigFile =
- D.getVFS().getBufferForFile(
- concat(D.SysRoot, GentooConfigDir, "/" + Line));
- std::pair<StringRef, StringRef> ActiveVersion = Line.rsplit('-');
- // List of paths to scan for libraries.
- SmallVector<StringRef, 4> GentooScanPaths;
- // Scan the Config file to find installed GCC libraries path.
- // Typical content of the GCC config file:
- // LDPATH="/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.x:/usr/lib/gcc/
- // (continued from previous line) x86_64-pc-linux-gnu/4.9.x/32"
- // MANPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/4.9.x/man"
- // INFOPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/4.9.x/info"
- // STDCXX_INCDIR="/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.x/include/g++-v4"
- // We are looking for the paths listed in LDPATH=... .
- if (ConfigFile) {
- SmallVector<StringRef, 2> ConfigLines;
- ConfigFile.get()->getBuffer().split(ConfigLines, "\n");
- for (StringRef ConfLine : ConfigLines) {
- ConfLine = ConfLine.trim();
- if (ConfLine.consume_front("LDPATH=")) {
- // Drop '"' from front and back if present.
- ConfLine.consume_back("\"");
- ConfLine.consume_front("\"");
- // Get all paths sperated by ':'
- ConfLine.split(GentooScanPaths, ':', -1, /*AllowEmpty*/ false);
- }
- }
- }
- // Test the path based on the version in /etc/env.d/gcc/config-{tuple}.
- std::string basePath = "/usr/lib/gcc/" + ActiveVersion.first.str() + "/"
- + ActiveVersion.second.str();
- GentooScanPaths.push_back(StringRef(basePath));
-
- // Scan all paths for GCC libraries.
- for (const auto &GentooScanPath : GentooScanPaths) {
- std::string GentooPath = concat(D.SysRoot, GentooScanPath);
- if (D.getVFS().exists(GentooPath + "/crtbegin.o")) {
- if (!ScanGCCForMultilibs(TargetTriple, Args, GentooPath,
- NeedsBiarchSuffix))
- continue;
-
- Version = GCCVersion::Parse(ActiveVersion.second);
- GCCInstallPath = GentooPath;
- GCCParentLibPath = GentooPath + std::string("/../../..");
- GCCTriple.setTriple(ActiveVersion.first);
- IsValid = true;
- return true;
- }
- }
- }
- }
-
- return false;
-}
-
-Generic_GCC::Generic_GCC(const Driver &D, const llvm::Triple &Triple,
- const ArgList &Args)
- : ToolChain(D, Triple, Args), GCCInstallation(D),
- CudaInstallation(D, Triple, Args), RocmInstallation(D, Triple, Args) {
- getProgramPaths().push_back(getDriver().getInstalledDir());
- if (getDriver().getInstalledDir() != getDriver().Dir)
- getProgramPaths().push_back(getDriver().Dir);
-}
-
-Generic_GCC::~Generic_GCC() {}
-
-Tool *Generic_GCC::getTool(Action::ActionClass AC) const {
- switch (AC) {
- case Action::PreprocessJobClass:
- if (!Preprocess)
- Preprocess.reset(new clang::driver::tools::gcc::Preprocessor(*this));
- return Preprocess.get();
- case Action::CompileJobClass:
- if (!Compile)
- Compile.reset(new tools::gcc::Compiler(*this));
- return Compile.get();
- default:
- return ToolChain::getTool(AC);
- }
-}
-
-Tool *Generic_GCC::buildAssembler() const {
- return new tools::gnutools::Assembler(*this);
-}
-
-Tool *Generic_GCC::buildLinker() const { return new tools::gcc::Linker(*this); }
-
-void Generic_GCC::printVerboseInfo(raw_ostream &OS) const {
- // Print the information about how we detected the GCC installation.
- GCCInstallation.print(OS);
- CudaInstallation.print(OS);
- RocmInstallation.print(OS);
-}
-
-bool Generic_GCC::IsUnwindTablesDefault(const ArgList &Args) const {
- switch (getArch()) {
- case llvm::Triple::aarch64:
- case llvm::Triple::ppc:
- case llvm::Triple::ppcle:
- case llvm::Triple::ppc64:
- case llvm::Triple::ppc64le:
- case llvm::Triple::x86:
- case llvm::Triple::x86_64:
- return true;
- default:
- return false;
- }
-}
-
-bool Generic_GCC::isPICDefault() const {
- switch (getArch()) {
- case llvm::Triple::x86_64:
- return getTriple().isOSWindows();
- case llvm::Triple::mips64:
- case llvm::Triple::mips64el:
- return true;
- default:
- return false;
- }
-}
-
-bool Generic_GCC::isPIEDefault(const llvm::opt::ArgList &Args) const {
- return false;
-}
-
-bool Generic_GCC::isPICDefaultForced() const {
- return getArch() == llvm::Triple::x86_64 && getTriple().isOSWindows();
-}
-
-bool Generic_GCC::IsIntegratedAssemblerDefault() const {
- switch (getTriple().getArch()) {
- case llvm::Triple::aarch64:
- case llvm::Triple::aarch64_be:
- case llvm::Triple::arm:
- case llvm::Triple::armeb:
- case llvm::Triple::avr:
- case llvm::Triple::bpfel:
- case llvm::Triple::bpfeb:
- case llvm::Triple::csky:
- case llvm::Triple::hexagon:
- case llvm::Triple::lanai:
- case llvm::Triple::m68k:
- case llvm::Triple::mips:
- case llvm::Triple::mipsel:
- case llvm::Triple::mips64:
- case llvm::Triple::mips64el:
- case llvm::Triple::msp430:
- case llvm::Triple::ppc:
- case llvm::Triple::ppcle:
- case llvm::Triple::ppc64:
- case llvm::Triple::ppc64le:
- case llvm::Triple::riscv32:
- case llvm::Triple::riscv64:
- case llvm::Triple::sparc:
- case llvm::Triple::sparcel:
- case llvm::Triple::sparcv9:
- case llvm::Triple::systemz:
- case llvm::Triple::thumb:
- case llvm::Triple::thumbeb:
- case llvm::Triple::ve:
- case llvm::Triple::x86:
- case llvm::Triple::x86_64:
- return true;
- default:
- return false;
- }
-}
-
-void Generic_GCC::PushPPaths(ToolChain::path_list &PPaths) {
- // Cross-compiling binutils and GCC installations (vanilla and openSUSE at
- // least) put various tools in a triple-prefixed directory off of the parent
- // of the GCC installation. We use the GCC triple here to ensure that we end
- // up with tools that support the same amount of cross compiling as the
- // detected GCC installation. For example, if we find a GCC installation
- // targeting x86_64, but it is a bi-arch GCC installation, it can also be
- // used to target i386.
- if (GCCInstallation.isValid()) {
- PPaths.push_back(Twine(GCCInstallation.getParentLibPath() + "/../" +
- GCCInstallation.getTriple().str() + "/bin")
- .str());
- }
-}
-
-void Generic_GCC::AddMultilibPaths(const Driver &D,
- const std::string &SysRoot,
- const std::string &OSLibDir,
- const std::string &MultiarchTriple,
- path_list &Paths) {
- // Add the multilib suffixed paths where they are available.
- if (GCCInstallation.isValid()) {
- const llvm::Triple &GCCTriple = GCCInstallation.getTriple();
- const std::string &LibPath =
- std::string(GCCInstallation.getParentLibPath());
-
- // Sourcery CodeBench MIPS toolchain holds some libraries under
- // a biarch-like suffix of the GCC installation.
- if (const auto &PathsCallback = Multilibs.filePathsCallback())
- for (const auto &Path : PathsCallback(SelectedMultilib))
- addPathIfExists(D, GCCInstallation.getInstallPath() + Path, Paths);
-
- // Add lib/gcc/$triple/$version, with an optional /multilib suffix.
- addPathIfExists(
- D, GCCInstallation.getInstallPath() + SelectedMultilib.gccSuffix(),
- Paths);
-
- // Add lib/gcc/$triple/$libdir
- // For GCC built with --enable-version-specific-runtime-libs.
- addPathIfExists(D, GCCInstallation.getInstallPath() + "/../" + OSLibDir,
- Paths);
-
- // GCC cross compiling toolchains will install target libraries which ship
- // as part of the toolchain under <prefix>/<triple>/<libdir> rather than as
- // any part of the GCC installation in
- // <prefix>/<libdir>/gcc/<triple>/<version>. This decision is somewhat
- // debatable, but is the reality today. We need to search this tree even
- // when we have a sysroot somewhere else. It is the responsibility of
- // whomever is doing the cross build targeting a sysroot using a GCC
- // installation that is *not* within the system root to ensure two things:
- //
- // 1) Any DSOs that are linked in from this tree or from the install path
- // above must be present on the system root and found via an
- // appropriate rpath.
- // 2) There must not be libraries installed into
- // <prefix>/<triple>/<libdir> unless they should be preferred over
- // those within the system root.
- //
- // Note that this matches the GCC behavior. See the below comment for where
- // Clang diverges from GCC's behavior.
- addPathIfExists(D,
- LibPath + "/../" + GCCTriple.str() + "/lib/../" + OSLibDir +
- SelectedMultilib.osSuffix(),
- Paths);
-
- // If the GCC installation we found is inside of the sysroot, we want to
- // prefer libraries installed in the parent prefix of the GCC installation.
- // It is important to *not* use these paths when the GCC installation is
- // outside of the system root as that can pick up unintended libraries.
- // This usually happens when there is an external cross compiler on the
- // host system, and a more minimal sysroot available that is the target of
- // the cross. Note that GCC does include some of these directories in some
- // configurations but this seems somewhere between questionable and simply
- // a bug.
- if (StringRef(LibPath).startswith(SysRoot))
- addPathIfExists(D, LibPath + "/../" + OSLibDir, Paths);
- }
-}
-
-void Generic_GCC::AddMultiarchPaths(const Driver &D,
- const std::string &SysRoot,
- const std::string &OSLibDir,
- path_list &Paths) {
- if (GCCInstallation.isValid()) {
- const std::string &LibPath =
- std::string(GCCInstallation.getParentLibPath());
- const llvm::Triple &GCCTriple = GCCInstallation.getTriple();
- const Multilib &Multilib = GCCInstallation.getMultilib();
- addPathIfExists(
- D, LibPath + "/../" + GCCTriple.str() + "/lib" + Multilib.osSuffix(),
- Paths);
- }
-}
-
-void Generic_GCC::AddMultilibIncludeArgs(const ArgList &DriverArgs,
- ArgStringList &CC1Args) const {
- // Add include directories specific to the selected multilib set and multilib.
- if (!GCCInstallation.isValid())
- return;
- // gcc TOOL_INCLUDE_DIR.
- const llvm::Triple &GCCTriple = GCCInstallation.getTriple();
- std::string LibPath(GCCInstallation.getParentLibPath());
- addSystemInclude(DriverArgs, CC1Args,
- Twine(LibPath) + "/../" + GCCTriple.str() + "/include");
-
- const auto &Callback = Multilibs.includeDirsCallback();
- if (Callback) {
- for (const auto &Path : Callback(GCCInstallation.getMultilib()))
- addExternCSystemIncludeIfExists(DriverArgs, CC1Args,
- GCCInstallation.getInstallPath() + Path);
- }
-}
-
-void Generic_GCC::AddClangCXXStdlibIncludeArgs(const ArgList &DriverArgs,
- ArgStringList &CC1Args) const {
- if (DriverArgs.hasArg(options::OPT_nostdinc, options::OPT_nostdincxx,
- options::OPT_nostdlibinc))
- return;
-
- switch (GetCXXStdlibType(DriverArgs)) {
- case ToolChain::CST_Libcxx:
- addLibCxxIncludePaths(DriverArgs, CC1Args);
- break;
-
- case ToolChain::CST_Libstdcxx:
- addLibStdCxxIncludePaths(DriverArgs, CC1Args);
- break;
- }
-}
-
-void
-Generic_GCC::addLibCxxIncludePaths(const llvm::opt::ArgList &DriverArgs,
- llvm::opt::ArgStringList &CC1Args) const {
- const Driver &D = getDriver();
- std::string SysRoot = computeSysRoot();
- std::string Target = getTripleString();
-
- auto AddIncludePath = [&](std::string Path) {
- std::string Version = detectLibcxxVersion(Path);
- if (Version.empty())
- return false;
-
- // First add the per-target include path if it exists.
- std::string TargetDir = Path + "/" + Target + "/c++/" + Version;
- if (D.getVFS().exists(TargetDir))
- addSystemInclude(DriverArgs, CC1Args, TargetDir);
-
- // Second add the generic one.
- addSystemInclude(DriverArgs, CC1Args, Path + "/c++/" + Version);
- return true;
- };
-
- // Android never uses the libc++ headers installed alongside the toolchain,
- // which are generally incompatible with the NDK libraries anyway.
- if (!getTriple().isAndroid())
- if (AddIncludePath(getDriver().Dir + "/../include"))
- return;
- // If this is a development, non-installed, clang, libcxx will
- // not be found at ../include/c++ but it likely to be found at
- // one of the following two locations:
- if (AddIncludePath(concat(SysRoot, "/usr/local/include")))
- return;
- if (AddIncludePath(concat(SysRoot, "/usr/include")))
- return;
-}
-
-bool Generic_GCC::addLibStdCXXIncludePaths(Twine IncludeDir, StringRef Triple,
- Twine IncludeSuffix,
- const llvm::opt::ArgList &DriverArgs,
- llvm::opt::ArgStringList &CC1Args,
- bool DetectDebian) const {
- if (!getVFS().exists(IncludeDir))
- return false;
-
- // Debian native gcc uses g++-multiarch-incdir.diff which uses
- // include/x86_64-linux-gnu/c++/10$IncludeSuffix instead of
- // include/c++/10/x86_64-linux-gnu$IncludeSuffix.
- std::string Dir = IncludeDir.str();
- StringRef Include =
- llvm::sys::path::parent_path(llvm::sys::path::parent_path(Dir));
- std::string Path =
- (Include + "/" + Triple + Dir.substr(Include.size()) + IncludeSuffix)
- .str();
- if (DetectDebian && !getVFS().exists(Path))
- return false;
-
- // GPLUSPLUS_INCLUDE_DIR
- addSystemInclude(DriverArgs, CC1Args, IncludeDir);
- // GPLUSPLUS_TOOL_INCLUDE_DIR. If Triple is not empty, add a target-dependent
- // include directory.
- if (DetectDebian)
- addSystemInclude(DriverArgs, CC1Args, Path);
- else if (!Triple.empty())
- addSystemInclude(DriverArgs, CC1Args,
- IncludeDir + "/" + Triple + IncludeSuffix);
- // GPLUSPLUS_BACKWARD_INCLUDE_DIR
- addSystemInclude(DriverArgs, CC1Args, IncludeDir + "/backward");
- return true;
-}
-
-bool Generic_GCC::addGCCLibStdCxxIncludePaths(
- const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args,
- StringRef DebianMultiarch) const {
- assert(GCCInstallation.isValid());
-
- // By default, look for the C++ headers in an include directory adjacent to
- // the lib directory of the GCC installation. Note that this is expect to be
- // equivalent to '/usr/include/c++/X.Y' in almost all cases.
- StringRef LibDir = GCCInstallation.getParentLibPath();
- StringRef InstallDir = GCCInstallation.getInstallPath();
- StringRef TripleStr = GCCInstallation.getTriple().str();
- const Multilib &Multilib = GCCInstallation.getMultilib();
- const GCCVersion &Version = GCCInstallation.getVersion();
-
- // Try /../$triple/include/c++/$version (gcc --print-multiarch is not empty).
- if (addLibStdCXXIncludePaths(
- LibDir.str() + "/../" + TripleStr + "/include/c++/" + Version.Text,
- TripleStr, Multilib.includeSuffix(), DriverArgs, CC1Args))
- return true;
-
- // Try /gcc/$triple/$version/include/c++/ (gcc --print-multiarch is not
- // empty). Like above but for GCC built with
- // --enable-version-specific-runtime-libs.
- if (addLibStdCXXIncludePaths(LibDir.str() + "/gcc/" + TripleStr + "/" +
- Version.Text + "/include/c++/",
- TripleStr, Multilib.includeSuffix(), DriverArgs,
- CC1Args))
- return true;
-
- // Detect Debian g++-multiarch-incdir.diff.
- if (addLibStdCXXIncludePaths(LibDir.str() + "/../include/c++/" + Version.Text,
- DebianMultiarch, Multilib.includeSuffix(),
- DriverArgs, CC1Args, /*Debian=*/true))
- return true;
-
- // Try /../include/c++/$version (gcc --print-multiarch is empty).
- if (addLibStdCXXIncludePaths(LibDir.str() + "/../include/c++/" + Version.Text,
- TripleStr, Multilib.includeSuffix(), DriverArgs,
- CC1Args))
- return true;
-
- // Otherwise, fall back on a bunch of options which don't use multiarch
- // layouts for simplicity.
- const std::string LibStdCXXIncludePathCandidates[] = {
- // Gentoo is weird and places its headers inside the GCC install,
- // so if the first attempt to find the headers fails, try these patterns.
- InstallDir.str() + "/include/g++-v" + Version.Text,
- InstallDir.str() + "/include/g++-v" + Version.MajorStr + "." +
- Version.MinorStr,
- InstallDir.str() + "/include/g++-v" + Version.MajorStr,
- };
-
- for (const auto &IncludePath : LibStdCXXIncludePathCandidates) {
- if (addLibStdCXXIncludePaths(IncludePath, TripleStr,
- Multilib.includeSuffix(), DriverArgs, CC1Args))
- return true;
- }
- return false;
-}
-
-void
-Generic_GCC::addLibStdCxxIncludePaths(const llvm::opt::ArgList &DriverArgs,
- llvm::opt::ArgStringList &CC1Args) const {
- if (GCCInstallation.isValid()) {
- addGCCLibStdCxxIncludePaths(DriverArgs, CC1Args,
- GCCInstallation.getTriple().str());
- }
-}
-
-llvm::opt::DerivedArgList *
-Generic_GCC::TranslateArgs(const llvm::opt::DerivedArgList &Args, StringRef,
- Action::OffloadKind DeviceOffloadKind) const {
-
- // If this tool chain is used for an OpenMP offloading device we have to make
- // sure we always generate a shared library regardless of the commands the
- // user passed to the host. This is required because the runtime library
- // is required to load the device image dynamically at run time.
- if (DeviceOffloadKind == Action::OFK_OpenMP) {
- DerivedArgList *DAL = new DerivedArgList(Args.getBaseArgs());
- const OptTable &Opts = getDriver().getOpts();
-
- // Request the shared library. Given that these options are decided
- // implicitly, they do not refer to any base argument.
- DAL->AddFlagArg(/*BaseArg=*/nullptr, Opts.getOption(options::OPT_shared));
- DAL->AddFlagArg(/*BaseArg=*/nullptr, Opts.getOption(options::OPT_fPIC));
-
- // Filter all the arguments we don't care passing to the offloading
- // toolchain as they can mess up with the creation of a shared library.
- for (auto *A : Args) {
- switch ((options::ID)A->getOption().getID()) {
- default:
- DAL->append(A);
- break;
- case options::OPT_shared:
- case options::OPT_dynamic:
- case options::OPT_static:
- case options::OPT_fPIC:
- case options::OPT_fno_PIC:
- case options::OPT_fpic:
- case options::OPT_fno_pic:
- case options::OPT_fPIE:
- case options::OPT_fno_PIE:
- case options::OPT_fpie:
- case options::OPT_fno_pie:
- break;
- }
- }
- return DAL;
- }
- return nullptr;
-}
-
-void Generic_ELF::anchor() {}
-
-void Generic_ELF::addClangTargetOptions(const ArgList &DriverArgs,
- ArgStringList &CC1Args,
- Action::OffloadKind) const {
- if (!DriverArgs.hasFlag(options::OPT_fuse_init_array,
- options::OPT_fno_use_init_array, true))
- CC1Args.push_back("-fno-use-init-array");
-}
Index: create-15.0.4-clang-gnu-triple-patch/llvm-15.0.4-new/clang/lib/Driver/ToolChains
===================================================================
--- create-15.0.4-clang-gnu-triple-patch/llvm-15.0.4-new/clang/lib/Driver/ToolChains (revision 39)
+++ create-15.0.4-clang-gnu-triple-patch/llvm-15.0.4-new/clang/lib/Driver/ToolChains (nonexistent)
Property changes on: create-15.0.4-clang-gnu-triple-patch/llvm-15.0.4-new/clang/lib/Driver/ToolChains
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-clang-gnu-triple-patch/llvm-15.0.4-new/clang/lib/Driver
===================================================================
--- create-15.0.4-clang-gnu-triple-patch/llvm-15.0.4-new/clang/lib/Driver (revision 39)
+++ create-15.0.4-clang-gnu-triple-patch/llvm-15.0.4-new/clang/lib/Driver (nonexistent)
Property changes on: create-15.0.4-clang-gnu-triple-patch/llvm-15.0.4-new/clang/lib/Driver
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-clang-gnu-triple-patch/llvm-15.0.4-new/clang/lib
===================================================================
--- create-15.0.4-clang-gnu-triple-patch/llvm-15.0.4-new/clang/lib (revision 39)
+++ create-15.0.4-clang-gnu-triple-patch/llvm-15.0.4-new/clang/lib (nonexistent)
Property changes on: create-15.0.4-clang-gnu-triple-patch/llvm-15.0.4-new/clang/lib
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-clang-gnu-triple-patch/llvm-15.0.4-new/clang
===================================================================
--- create-15.0.4-clang-gnu-triple-patch/llvm-15.0.4-new/clang (revision 39)
+++ create-15.0.4-clang-gnu-triple-patch/llvm-15.0.4-new/clang (nonexistent)
Property changes on: create-15.0.4-clang-gnu-triple-patch/llvm-15.0.4-new/clang
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-clang-gnu-triple-patch/llvm-15.0.4-new
===================================================================
--- create-15.0.4-clang-gnu-triple-patch/llvm-15.0.4-new (revision 39)
+++ create-15.0.4-clang-gnu-triple-patch/llvm-15.0.4-new (nonexistent)
Property changes on: create-15.0.4-clang-gnu-triple-patch/llvm-15.0.4-new
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-clang-gnu-triple-patch/create.patch.sh
===================================================================
--- create-15.0.4-clang-gnu-triple-patch/create.patch.sh (revision 39)
+++ create-15.0.4-clang-gnu-triple-patch/create.patch.sh (nonexistent)
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-VERSION=15.0.4
-
-tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
-mv llvm-$VERSION llvm-$VERSION-orig
-
-cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
-
-diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-clang-gnu-triple.patch
-
-mv llvm-$VERSION-clang-gnu-triple.patch ../patches
-
-rm -rf ./llvm-$VERSION
-rm -rf ./llvm-$VERSION-orig
Property changes on: create-15.0.4-clang-gnu-triple-patch/create.patch.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: create-15.0.4-clang-gnu-triple-patch
===================================================================
--- create-15.0.4-clang-gnu-triple-patch (revision 39)
+++ create-15.0.4-clang-gnu-triple-patch (nonexistent)
Property changes on: create-15.0.4-clang-gnu-triple-patch
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-lldb-riscv64-patch/file.list
===================================================================
--- create-13.0.0-lldb-riscv64-patch/file.list (revision 39)
+++ create-13.0.0-lldb-riscv64-patch/file.list (nonexistent)
@@ -1,2 +0,0 @@
-llvm-13.0.0/lldb/source/API/CMakeLists.txt
-llvm-13.0.0/lldb/tools/lldb-server/CMakeLists.txt
Index: create-13.0.0-lldb-riscv64-patch/create.patch.sh
===================================================================
--- create-13.0.0-lldb-riscv64-patch/create.patch.sh (revision 39)
+++ create-13.0.0-lldb-riscv64-patch/create.patch.sh (nonexistent)
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-VERSION=13.0.0
-
-tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
-mv llvm-$VERSION llvm-$VERSION-orig
-
-cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
-
-diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-lldb-riscv64.patch
-
-mv llvm-$VERSION-lldb-riscv64.patch ../patches
-
-rm -rf ./llvm-$VERSION
-rm -rf ./llvm-$VERSION-orig
Property changes on: create-13.0.0-lldb-riscv64-patch/create.patch.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: create-13.0.0-lldb-riscv64-patch/llvm-13.0.0-new/lldb/source/API/CMakeLists.txt
===================================================================
--- create-13.0.0-lldb-riscv64-patch/llvm-13.0.0-new/lldb/source/API/CMakeLists.txt (revision 39)
+++ create-13.0.0-lldb-riscv64-patch/llvm-13.0.0-new/lldb/source/API/CMakeLists.txt (nonexistent)
@@ -1,220 +0,0 @@
-if ( CMAKE_SYSTEM_NAME MATCHES "Windows" )
- add_definitions( -DEXPORT_LIBLLDB )
-endif()
-
-get_property(LLDB_ALL_PLUGINS GLOBAL PROPERTY LLDB_PLUGINS)
-
-if(LLDB_BUILD_FRAMEWORK)
- set(option_install_prefix INSTALL_PREFIX ${LLDB_FRAMEWORK_INSTALL_DIR})
- set(option_framework FRAMEWORK)
-endif()
-
-if(LLDB_ENABLE_PYTHON)
- get_target_property(python_bindings_dir swig_wrapper_python BINARY_DIR)
- set(lldb_python_wrapper ${python_bindings_dir}/LLDBWrapPython.cpp)
-endif()
-
-if(LLDB_ENABLE_LUA)
- get_target_property(lua_bindings_dir swig_wrapper_lua BINARY_DIR)
- set(lldb_lua_wrapper ${lua_bindings_dir}/LLDBWrapLua.cpp)
-endif()
-
-add_lldb_library(liblldb SHARED ${option_framework}
- SBAddress.cpp
- SBAttachInfo.cpp
- SBBlock.cpp
- SBBreakpoint.cpp
- SBBreakpointLocation.cpp
- SBBreakpointName.cpp
- SBBreakpointOptionCommon.cpp
- SBBroadcaster.cpp
- SBCommandInterpreter.cpp
- SBCommandInterpreterRunOptions.cpp
- SBCommandReturnObject.cpp
- SBCommunication.cpp
- SBCompileUnit.cpp
- SBData.cpp
- SBDebugger.cpp
- SBDeclaration.cpp
- SBEnvironment.cpp
- SBError.cpp
- SBEvent.cpp
- SBExecutionContext.cpp
- SBExpressionOptions.cpp
- SBFileSpec.cpp
- SBFile.cpp
- SBFileSpecList.cpp
- SBFrame.cpp
- SBFunction.cpp
- SBHostOS.cpp
- SBInstruction.cpp
- SBInstructionList.cpp
- SBLanguageRuntime.cpp
- SBLaunchInfo.cpp
- SBLineEntry.cpp
- SBListener.cpp
- SBMemoryRegionInfo.cpp
- SBMemoryRegionInfoList.cpp
- SBModule.cpp
- SBModuleSpec.cpp
- SBPlatform.cpp
- SBProcess.cpp
- SBProcessInfo.cpp
- SBQueue.cpp
- SBQueueItem.cpp
- SBReproducer.cpp
- SBSection.cpp
- SBSourceManager.cpp
- SBStream.cpp
- SBStringList.cpp
- SBStructuredData.cpp
- SBSymbol.cpp
- SBSymbolContext.cpp
- SBSymbolContextList.cpp
- SBTarget.cpp
- SBThread.cpp
- SBThreadCollection.cpp
- SBThreadPlan.cpp
- SBTrace.cpp
- SBType.cpp
- SBTypeCategory.cpp
- SBTypeEnumMember.cpp
- SBTypeFilter.cpp
- SBTypeFormat.cpp
- SBTypeNameSpecifier.cpp
- SBTypeSummary.cpp
- SBTypeSynthetic.cpp
- SBValue.cpp
- SBValueList.cpp
- SBVariablesOptions.cpp
- SBWatchpoint.cpp
- SBUnixSignals.cpp
- SystemInitializerFull.cpp
- ${lldb_python_wrapper}
- ${lldb_lua_wrapper}
-
- LINK_LIBS
- lldbBase
- lldbBreakpoint
- lldbCore
- lldbDataFormatters
- lldbExpression
- lldbHost
- lldbInitialization
- lldbInterpreter
- lldbSymbol
- lldbTarget
- lldbUtility
- ${LLDB_ALL_PLUGINS}
- LINK_COMPONENTS
- Support
-
- ${option_install_prefix}
-)
-
-if(HAVE_CXX_ATOMICS_WITH_LIB OR HAVE_CXX_ATOMICS64_WITH_LIB)
- target_link_libraries(liblldb PRIVATE atomic)
-endif()
-
-# lib/pythonX.Y/dist-packages/lldb/_lldb.so is a symlink to lib/liblldb.so,
-# which depends on lib/libLLVM*.so (BUILD_SHARED_LIBS) or lib/libLLVM-10git.so
-# (LLVM_LINK_LLVM_DYLIB). Add an additional rpath $ORIGIN/../../../../lib so
-# that _lldb.so can be loaded from Python.
-if(LLDB_ENABLE_PYTHON AND (BUILD_SHARED_LIBS OR LLVM_LINK_LLVM_DYLIB) AND UNIX AND NOT APPLE)
- set_property(TARGET liblldb APPEND PROPERTY INSTALL_RPATH "\$ORIGIN/../../../../lib${LLVM_LIBDIR_SUFFIX}")
-endif()
-
-if(Python3_RPATH)
- set_property(TARGET liblldb APPEND PROPERTY INSTALL_RPATH "${Python3_RPATH}")
- set_property(TARGET liblldb APPEND PROPERTY BUILD_RPATH "${Python3_RPATH}")
-endif()
-
-
-if(LLDB_ENABLE_PYTHON)
- add_dependencies(liblldb swig_wrapper_python)
-
- if (MSVC)
- set_property(SOURCE ${lldb_python_wrapper} APPEND_STRING PROPERTY COMPILE_FLAGS " /W0")
- else()
- set_property(SOURCE ${lldb_python_wrapper} APPEND_STRING PROPERTY COMPILE_FLAGS " -w")
- endif()
-
- set_source_files_properties(${lldb_python_wrapper} PROPERTIES GENERATED ON)
- if (CLANG_CL)
- set_property(SOURCE ${lldb_python_wrapper} APPEND_STRING
- PROPERTY COMPILE_FLAGS " -Wno-unused-function")
- endif()
- if (LLVM_COMPILER_IS_GCC_COMPATIBLE AND
- NOT "${CMAKE_SYSTEM_NAME}" MATCHES "Darwin")
- set_property(SOURCE ${lldb_python_wrapper} APPEND_STRING
- PROPERTY COMPILE_FLAGS " -Wno-sequence-point -Wno-cast-qual")
- endif ()
-endif()
-
-if(LLDB_ENABLE_LUA)
- add_dependencies(liblldb swig_wrapper_lua)
- target_include_directories(liblldb PRIVATE ${LUA_INCLUDE_DIR})
-
- if (MSVC)
- set_property(SOURCE ${lldb_lua_wrapper} APPEND_STRING PROPERTY COMPILE_FLAGS " /W0")
- else()
- set_property(SOURCE ${lldb_lua_wrapper} APPEND_STRING PROPERTY COMPILE_FLAGS " -w")
- endif()
-
- set_source_files_properties(${lldb_lua_wrapper} PROPERTIES GENERATED ON)
-endif()
-
-set_target_properties(liblldb
- PROPERTIES
- VERSION ${LLDB_VERSION}
-)
-
-if (NOT CMAKE_SYSTEM_NAME MATCHES "Windows")
- if (NOT LLDB_EXPORT_ALL_SYMBOLS)
- # If we're not exporting all symbols, we'll want to explicitly set
- # the exported symbols here. This prevents 'log enable --stack ...'
- # from working on some systems but limits the liblldb size.
- MESSAGE("-- Symbols (liblldb): exporting all symbols from the lldb namespace")
- add_llvm_symbol_exports(liblldb ${CMAKE_CURRENT_SOURCE_DIR}/liblldb.exports)
- else()
- # Don't use an explicit export. Instead, tell the linker to
- # export all symbols.
- MESSAGE("-- Symbols (liblldb): exporting all symbols from the lldb and lldb_private namespaces")
- add_llvm_symbol_exports(liblldb ${CMAKE_CURRENT_SOURCE_DIR}/liblldb-private.exports)
- endif()
- set_target_properties(liblldb_exports PROPERTIES FOLDER "lldb misc")
-endif()
-
-if (NOT MSVC)
- set_target_properties(liblldb
- PROPERTIES
- OUTPUT_NAME lldb
- )
-endif()
-
-# The Clang expression parser in LLDB requires the Clang resource directory to function.
-if (TARGET clang-resource-headers)
- # If building alongside Clang, just add a dependency to ensure it is build together with liblldb.
- add_dependencies(liblldb clang-resource-headers)
-else()
- # In a standalone build create a symlink from the LLDB library directory that points to the
- # resource directory in the Clang library directory. LLDB searches relative to its install path,
- # and the symlink is created in the same relative path as the resource directory of Clang when
- # building alongside Clang.
- # When building the LLDB framework, this isn't necessary as there we copy everything we need into
- # the framework (including the Clang resourece directory).
- if(NOT LLDB_BUILD_FRAMEWORK)
- set(LLDB_CLANG_RESOURCE_DIR_PARENT "$<TARGET_FILE_DIR:liblldb>/clang")
- file(MAKE_DIRECTORY "${LLDB_CLANG_RESOURCE_DIR_PARENT}")
- add_custom_command(TARGET liblldb POST_BUILD
- COMMENT "Linking Clang resource dir into LLDB build directory: ${LLDB_CLANG_RESOURCE_DIR_PARENT}"
- COMMAND ${CMAKE_COMMAND} -E make_directory "${LLDB_CLANG_RESOURCE_DIR_PARENT}"
- COMMAND ${CMAKE_COMMAND} -E create_symlink "${LLDB_EXTERNAL_CLANG_RESOURCE_DIR}"
- "${LLDB_CLANG_RESOURCE_DIR_PARENT}/${LLDB_CLANG_RESOURCE_DIR_NAME}"
- )
- endif()
-endif()
-
-if(LLDB_BUILD_FRAMEWORK)
- include(LLDBFramework)
-endif()
Index: create-13.0.0-lldb-riscv64-patch/llvm-13.0.0-new/lldb/source/API
===================================================================
--- create-13.0.0-lldb-riscv64-patch/llvm-13.0.0-new/lldb/source/API (revision 39)
+++ create-13.0.0-lldb-riscv64-patch/llvm-13.0.0-new/lldb/source/API (nonexistent)
Property changes on: create-13.0.0-lldb-riscv64-patch/llvm-13.0.0-new/lldb/source/API
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-lldb-riscv64-patch/llvm-13.0.0-new/lldb/source
===================================================================
--- create-13.0.0-lldb-riscv64-patch/llvm-13.0.0-new/lldb/source (revision 39)
+++ create-13.0.0-lldb-riscv64-patch/llvm-13.0.0-new/lldb/source (nonexistent)
Property changes on: create-13.0.0-lldb-riscv64-patch/llvm-13.0.0-new/lldb/source
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-lldb-riscv64-patch/llvm-13.0.0-new/lldb/tools/lldb-server/CMakeLists.txt
===================================================================
--- create-13.0.0-lldb-riscv64-patch/llvm-13.0.0-new/lldb/tools/lldb-server/CMakeLists.txt (revision 39)
+++ create-13.0.0-lldb-riscv64-patch/llvm-13.0.0-new/lldb/tools/lldb-server/CMakeLists.txt (nonexistent)
@@ -1,72 +0,0 @@
-set(LLVM_TARGET_DEFINITIONS LLGSOptions.td)
-tablegen(LLVM LLGSOptions.inc -gen-opt-parser-defs)
-add_public_tablegen_target(LLGSOptionsTableGen)
-set_target_properties(LLGSOptionsTableGen PROPERTIES FOLDER "lldb misc")
-
-set(LLDB_PLUGINS)
-
-if(CMAKE_SYSTEM_NAME MATCHES "Linux|Android")
- list(APPEND LLDB_PLUGINS lldbPluginProcessLinux)
-endif()
-
-if(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
- list(APPEND LLDB_PLUGINS lldbPluginProcessFreeBSD)
-endif()
-
-if(CMAKE_SYSTEM_NAME MATCHES "NetBSD")
- list(APPEND LLDB_PLUGINS lldbPluginProcessNetBSD)
-endif()
-
-if(CMAKE_SYSTEM_NAME MATCHES "Darwin")
- list(APPEND LLDB_PLUGINS lldbPluginObjectFileMachO)
-elseif(CMAKE_SYSTEM_NAME MATCHES "Windows")
- list(APPEND LLDB_PLUGINS lldbPluginObjectFilePECOFF)
-else()
- list(APPEND LLDB_PLUGINS lldbPluginObjectFileELF)
-endif()
-
-if(APPLE_EMBEDDED)
- if(LLDB_CODESIGN_IDENTITY)
- # Use explicit LLDB identity
- set(LLVM_CODESIGNING_IDENTITY ${LLDB_CODESIGN_IDENTITY})
- else()
- # Use explicit LLVM identity or default to lldb_codesign if empty
- if(NOT LLVM_CODESIGNING_IDENTITY)
- set(LLVM_CODESIGNING_IDENTITY lldb_codesign)
- endif()
- endif()
-endif()
-
-add_lldb_tool(lldb-server
- Acceptor.cpp
- lldb-gdbserver.cpp
- lldb-platform.cpp
- lldb-server.cpp
- LLDBServerUtilities.cpp
- SystemInitializerLLGS.cpp
-
- LINK_LIBS
- lldbBase
- lldbHost
- lldbInitialization
- ${LLDB_PLUGINS}
- lldbPluginInstructionARM
- lldbPluginInstructionMIPS
- lldbPluginInstructionMIPS64
- ${LLDB_SYSTEM_LIBS}
-
- LINK_COMPONENTS
- Option
- Support
-)
-
-if(HAVE_CXX_ATOMICS_WITH_LIB OR HAVE_CXX_ATOMICS64_WITH_LIB)
- target_link_libraries(lldb-server PRIVATE atomic)
-endif()
-
-add_dependencies(lldb-server
- LLGSOptionsTableGen
- ${tablegen_deps}
-)
-target_include_directories(lldb-server PRIVATE "${LLDB_SOURCE_DIR}/source")
-target_link_libraries(lldb-server PRIVATE ${LLDB_SYSTEM_LIBS})
Index: create-13.0.0-lldb-riscv64-patch/llvm-13.0.0-new/lldb/tools/lldb-server
===================================================================
--- create-13.0.0-lldb-riscv64-patch/llvm-13.0.0-new/lldb/tools/lldb-server (revision 39)
+++ create-13.0.0-lldb-riscv64-patch/llvm-13.0.0-new/lldb/tools/lldb-server (nonexistent)
Property changes on: create-13.0.0-lldb-riscv64-patch/llvm-13.0.0-new/lldb/tools/lldb-server
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-lldb-riscv64-patch/llvm-13.0.0-new/lldb/tools
===================================================================
--- create-13.0.0-lldb-riscv64-patch/llvm-13.0.0-new/lldb/tools (revision 39)
+++ create-13.0.0-lldb-riscv64-patch/llvm-13.0.0-new/lldb/tools (nonexistent)
Property changes on: create-13.0.0-lldb-riscv64-patch/llvm-13.0.0-new/lldb/tools
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-lldb-riscv64-patch/llvm-13.0.0-new/lldb
===================================================================
--- create-13.0.0-lldb-riscv64-patch/llvm-13.0.0-new/lldb (revision 39)
+++ create-13.0.0-lldb-riscv64-patch/llvm-13.0.0-new/lldb (nonexistent)
Property changes on: create-13.0.0-lldb-riscv64-patch/llvm-13.0.0-new/lldb
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-lldb-riscv64-patch/llvm-13.0.0-new
===================================================================
--- create-13.0.0-lldb-riscv64-patch/llvm-13.0.0-new (revision 39)
+++ create-13.0.0-lldb-riscv64-patch/llvm-13.0.0-new (nonexistent)
Property changes on: create-13.0.0-lldb-riscv64-patch/llvm-13.0.0-new
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-lldb-riscv64-patch
===================================================================
--- create-13.0.0-lldb-riscv64-patch (revision 39)
+++ create-13.0.0-lldb-riscv64-patch (nonexistent)
Property changes on: create-13.0.0-lldb-riscv64-patch
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-clangd-riscv64-patch/file.list
===================================================================
--- create-13.0.0-clangd-riscv64-patch/file.list (revision 39)
+++ create-13.0.0-clangd-riscv64-patch/file.list (nonexistent)
@@ -1 +0,0 @@
-llvm-13.0.0/clang-tools-extra/clangd/CMakeLists.txt
Index: create-13.0.0-clangd-riscv64-patch/create.patch.sh
===================================================================
--- create-13.0.0-clangd-riscv64-patch/create.patch.sh (revision 39)
+++ create-13.0.0-clangd-riscv64-patch/create.patch.sh (nonexistent)
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-VERSION=13.0.0
-
-tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
-mv llvm-$VERSION llvm-$VERSION-orig
-
-cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
-
-diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-clangd-riscv64.patch
-
-mv llvm-$VERSION-clangd-riscv64.patch ../patches
-
-rm -rf ./llvm-$VERSION
-rm -rf ./llvm-$VERSION-orig
Property changes on: create-13.0.0-clangd-riscv64-patch/create.patch.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: create-13.0.0-clangd-riscv64-patch/llvm-13.0.0-new/clang-tools-extra/clangd/CMakeLists.txt
===================================================================
--- create-13.0.0-clangd-riscv64-patch/llvm-13.0.0-new/clang-tools-extra/clangd/CMakeLists.txt (revision 39)
+++ create-13.0.0-clangd-riscv64-patch/llvm-13.0.0-new/clang-tools-extra/clangd/CMakeLists.txt (nonexistent)
@@ -1,208 +0,0 @@
-# This is a no-op for building files in this dir, but is inherited by subdirs.
-include_directories(${CMAKE_CURRENT_SOURCE_DIR})
-include_directories(${CMAKE_CURRENT_BINARY_DIR})
-
-add_subdirectory(support)
-
-# Configure the Features.inc file.
-if (NOT DEFINED CLANGD_BUILD_XPC)
- if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
- set(CLANGD_BUILD_XPC_DEFAULT ON)
- else ()
- set(CLANGD_BUILD_XPC_DEFAULT OFF)
- endif ()
-
- llvm_canonicalize_cmake_booleans(CLANGD_BUILD_XPC_DEFAULT)
-
- set(CLANGD_BUILD_XPC ${CLANGD_BUILD_XPC_DEFAULT} CACHE BOOL "Build XPC Support For Clangd." FORCE)
- unset(CLANGD_BUILD_XPC_DEFAULT)
-endif ()
-
-option(CLANGD_MALLOC_TRIM "Call malloc_trim(3) periodically in Clangd. (only takes effect when using glibc)" ON)
-# -DCLANG_TIDY_CHECKS=Off avoids a dependency on clang-tidy, reducing rebuilds.
-option(CLANGD_TIDY_CHECKS "Link all clang-tidy checks into clangd" ON)
-
-llvm_canonicalize_cmake_booleans(
- CLANGD_BUILD_XPC
- CLANGD_ENABLE_REMOTE
- ENABLE_GRPC_REFLECTION
- CLANGD_MALLOC_TRIM
- CLANGD_TIDY_CHECKS
- LLVM_ENABLE_ZLIB
-)
-
-configure_file(
- ${CMAKE_CURRENT_SOURCE_DIR}/Features.inc.in
- ${CMAKE_CURRENT_BINARY_DIR}/Features.inc
-)
-
-set(LLVM_LINK_COMPONENTS
- Support
- AllTargetsInfos
- FrontendOpenMP
- Option
- )
-
-include(${CMAKE_CURRENT_SOURCE_DIR}/quality/CompletionModel.cmake)
-gen_decision_forest(${CMAKE_CURRENT_SOURCE_DIR}/quality/model CompletionModel clang::clangd::Example)
-
-if(MSVC AND NOT CLANG_CL)
- set_source_files_properties(CompileCommands.cpp PROPERTIES COMPILE_FLAGS -wd4130) # disables C4130: logical operation on address of string constant
-endif()
-
-include_directories(BEFORE "${CMAKE_CURRENT_BINARY_DIR}/../clang-tidy")
-
-add_clang_library(clangDaemon
- AST.cpp
- ASTSignals.cpp
- ClangdLSPServer.cpp
- ClangdServer.cpp
- CodeComplete.cpp
- CodeCompletionStrings.cpp
- CollectMacros.cpp
- CompileCommands.cpp
- Compiler.cpp
- Config.cpp
- ConfigCompile.cpp
- ConfigProvider.cpp
- ConfigYAML.cpp
- Diagnostics.cpp
- DraftStore.cpp
- DumpAST.cpp
- ExpectedTypes.cpp
- FeatureModule.cpp
- Features.cpp
- FindSymbols.cpp
- FindTarget.cpp
- FileDistance.cpp
- Format.cpp
- FS.cpp
- FuzzyMatch.cpp
- GlobalCompilationDatabase.cpp
- Headers.cpp
- HeaderSourceSwitch.cpp
- HeuristicResolver.cpp
- Hover.cpp
- IncludeFixer.cpp
- InlayHints.cpp
- JSONTransport.cpp
- PathMapping.cpp
- Protocol.cpp
- Quality.cpp
- ParsedAST.cpp
- Preamble.cpp
- RIFF.cpp
- Selection.cpp
- SemanticHighlighting.cpp
- SemanticSelection.cpp
- SourceCode.cpp
- QueryDriverDatabase.cpp
- TidyProvider.cpp
- TUScheduler.cpp
- URI.cpp
- XRefs.cpp
- ${CMAKE_CURRENT_BINARY_DIR}/CompletionModel.cpp
-
- index/Background.cpp
- index/BackgroundIndexLoader.cpp
- index/BackgroundIndexStorage.cpp
- index/BackgroundQueue.cpp
- index/BackgroundRebuild.cpp
- index/CanonicalIncludes.cpp
- index/FileIndex.cpp
- index/Index.cpp
- index/IndexAction.cpp
- index/MemIndex.cpp
- index/Merge.cpp
- index/ProjectAware.cpp
- index/Ref.cpp
- index/Relation.cpp
- index/Serialization.cpp
- index/Symbol.cpp
- index/SymbolCollector.cpp
- index/SymbolID.cpp
- index/SymbolLocation.cpp
- index/SymbolOrigin.cpp
- index/YAMLSerialization.cpp
-
- index/dex/Dex.cpp
- index/dex/Iterator.cpp
- index/dex/PostingList.cpp
- index/dex/Trigram.cpp
-
- refactor/Rename.cpp
- refactor/Tweak.cpp
-
- DEPENDS
- omp_gen
- )
-
-# Include generated CompletionModel headers.
-target_include_directories(clangDaemon PUBLIC
- $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
-)
-
-clang_target_link_libraries(clangDaemon
- PRIVATE
- clangAST
- clangASTMatchers
- clangBasic
- clangDriver
- clangFormat
- clangFrontend
- clangIndex
- clangLex
- clangSema
- clangSerialization
- clangTooling
- clangToolingCore
- clangToolingInclusions
- clangToolingSyntax
- )
-
-if(HAVE_CXX_ATOMICS_WITH_LIB OR HAVE_CXX_ATOMICS64_WITH_LIB)
- target_link_libraries(clangDaemon PRIVATE atomic)
-endif()
-
-target_link_libraries(clangDaemon
- PRIVATE
- ${LLVM_PTHREAD_LIB}
-
- clangTidy
-
- clangdSupport
- )
-if(CLANGD_TIDY_CHECKS)
- target_link_libraries(clangDaemon PRIVATE ${ALL_CLANG_TIDY_CHECKS})
-endif()
-
-add_subdirectory(refactor/tweaks)
-if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
- # FIXME: Make fuzzer not use linux-specific APIs, build it everywhere.
- add_subdirectory(fuzzer)
-endif()
-add_subdirectory(tool)
-add_subdirectory(indexer)
-
-if (LLVM_INCLUDE_BENCHMARKS)
- add_subdirectory(benchmarks)
-endif()
-if ( CLANGD_BUILD_XPC )
- add_subdirectory(xpc)
-endif ()
-
-if (CLANGD_ENABLE_REMOTE)
- include(FindGRPC)
-endif()
-
-if(CLANG_INCLUDE_TESTS)
- add_subdirectory(test)
- add_subdirectory(unittests)
-endif()
-
-# FIXME(kirillbobyrev): Document this in the LLVM docs once remote index is stable.
-option(CLANGD_ENABLE_REMOTE "Use gRPC library to enable remote index support for Clangd" OFF)
-set(GRPC_INSTALL_PATH "" CACHE PATH "Path to gRPC library manual installation.")
-
-add_subdirectory(index/remote)
-add_subdirectory(index/dex/dexp)
Index: create-13.0.0-clangd-riscv64-patch/llvm-13.0.0-new/clang-tools-extra/clangd
===================================================================
--- create-13.0.0-clangd-riscv64-patch/llvm-13.0.0-new/clang-tools-extra/clangd (revision 39)
+++ create-13.0.0-clangd-riscv64-patch/llvm-13.0.0-new/clang-tools-extra/clangd (nonexistent)
Property changes on: create-13.0.0-clangd-riscv64-patch/llvm-13.0.0-new/clang-tools-extra/clangd
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-clangd-riscv64-patch/llvm-13.0.0-new/clang-tools-extra
===================================================================
--- create-13.0.0-clangd-riscv64-patch/llvm-13.0.0-new/clang-tools-extra (revision 39)
+++ create-13.0.0-clangd-riscv64-patch/llvm-13.0.0-new/clang-tools-extra (nonexistent)
Property changes on: create-13.0.0-clangd-riscv64-patch/llvm-13.0.0-new/clang-tools-extra
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-clangd-riscv64-patch/llvm-13.0.0-new
===================================================================
--- create-13.0.0-clangd-riscv64-patch/llvm-13.0.0-new (revision 39)
+++ create-13.0.0-clangd-riscv64-patch/llvm-13.0.0-new (nonexistent)
Property changes on: create-13.0.0-clangd-riscv64-patch/llvm-13.0.0-new
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-clangd-riscv64-patch
===================================================================
--- create-13.0.0-clangd-riscv64-patch (revision 39)
+++ create-13.0.0-clangd-riscv64-patch (nonexistent)
Property changes on: create-13.0.0-clangd-riscv64-patch
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-python3-patch/file.list
===================================================================
--- create-13.0.0-python3-patch/file.list (revision 39)
+++ create-13.0.0-python3-patch/file.list (nonexistent)
@@ -1 +0,0 @@
-llvm-13.0.0/clang-tools-extra/clang-include-fixer/find-all-symbols/tool/run-find-all-symbols.py
Index: create-13.0.0-python3-patch/create.patch.sh
===================================================================
--- create-13.0.0-python3-patch/create.patch.sh (revision 39)
+++ create-13.0.0-python3-patch/create.patch.sh (nonexistent)
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-VERSION=13.0.0
-
-tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
-mv llvm-$VERSION llvm-$VERSION-orig
-
-cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
-
-diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-python3.patch
-
-mv llvm-$VERSION-python3.patch ../patches
-
-rm -rf ./llvm-$VERSION
-rm -rf ./llvm-$VERSION-orig
Property changes on: create-13.0.0-python3-patch/create.patch.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: create-13.0.0-python3-patch/llvm-13.0.0-new/clang-tools-extra/clang-include-fixer/find-all-symbols/tool/run-find-all-symbols.py
===================================================================
--- create-13.0.0-python3-patch/llvm-13.0.0-new/clang-tools-extra/clang-include-fixer/find-all-symbols/tool/run-find-all-symbols.py (revision 39)
+++ create-13.0.0-python3-patch/llvm-13.0.0-new/clang-tools-extra/clang-include-fixer/find-all-symbols/tool/run-find-all-symbols.py (nonexistent)
@@ -1,126 +0,0 @@
-#!/usr/bin/env python
-#
-#=- run-find-all-symbols.py - Parallel find-all-symbols runner -*- python -*-=#
-#
-# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-# See https://llvm.org/LICENSE.txt for license information.
-# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-#
-#===------------------------------------------------------------------------===#
-
-"""
-Parallel find-all-symbols runner
-================================
-
-Runs find-all-symbols over all files in a compilation database.
-
-Example invocations.
-- Run find-all-symbols on all files in the current working directory.
- run-find-all-symbols.py <source-file>
-
-Compilation database setup:
-http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html
-"""
-
-import argparse
-import json
-import multiprocessing
-import os
-import Queue
-import shutil
-import subprocess
-import sys
-import tempfile
-import threading
-
-
-def find_compilation_database(path):
- """Adjusts the directory until a compilation database is found."""
- result = './'
- while not os.path.isfile(os.path.join(result, path)):
- if os.path.realpath(result) == '/':
- print ('Error: could not find compilation database.')
- sys.exit(1)
- result += '../'
- return os.path.realpath(result)
-
-
-def MergeSymbols(directory, args):
- """Merge all symbol files (yaml) in a given directory into a single file."""
- invocation = [args.binary, '-merge-dir='+directory, args.saving_path]
- subprocess.call(invocation)
- print ('Merge is finished. Saving results in ' + args.saving_path)
-
-
-def run_find_all_symbols(args, tmpdir, build_path, queue):
- """Takes filenames out of queue and runs find-all-symbols on them."""
- while True:
- name = queue.get()
- invocation = [args.binary, name, '-output-dir='+tmpdir, '-p='+build_path]
- sys.stdout.write(' '.join(invocation) + '\n')
- subprocess.call(invocation)
- queue.task_done()
-
-
-def main():
- parser = argparse.ArgumentParser(description='Runs find-all-symbols over all'
- 'files in a compilation database.')
- parser.add_argument('-binary', metavar='PATH',
- default='./bin/find-all-symbols',
- help='path to find-all-symbols binary')
- parser.add_argument('-j', type=int, default=0,
- help='number of instances to be run in parallel.')
- parser.add_argument('-p', dest='build_path',
- help='path used to read a compilation database.')
- parser.add_argument('-saving-path', default='./find_all_symbols_db.yaml',
- help='result saving path')
- args = parser.parse_args()
-
- db_path = 'compile_commands.json'
-
- if args.build_path is not None:
- build_path = args.build_path
- else:
- build_path = find_compilation_database(db_path)
-
- tmpdir = tempfile.mkdtemp()
-
- # Load the database and extract all files.
- database = json.load(open(os.path.join(build_path, db_path)))
- files = [entry['file'] for entry in database]
-
- # Filter out .rc files on Windows. CMake includes them for some reason.
- files = [f for f in files if not f.endswith('.rc')]
-
- max_task = args.j
- if max_task == 0:
- max_task = multiprocessing.cpu_count()
-
- try:
- # Spin up a bunch of tidy-launching threads.
- queue = Queue.Queue(max_task)
- for _ in range(max_task):
- t = threading.Thread(target=run_find_all_symbols,
- args=(args, tmpdir, build_path, queue))
- t.daemon = True
- t.start()
-
- # Fill the queue with files.
- for name in files:
- queue.put(name)
-
- # Wait for all threads to be done.
- queue.join()
-
- MergeSymbols(tmpdir, args)
-
-
- except KeyboardInterrupt:
- # This is a sad hack. Unfortunately subprocess goes
- # bonkers with ctrl-c and we start forking merrily.
- print ('\nCtrl-C detected, goodbye.')
- os.kill(0, 9)
-
-
-if __name__ == '__main__':
- main()
Property changes on: create-13.0.0-python3-patch/llvm-13.0.0-new/clang-tools-extra/clang-include-fixer/find-all-symbols/tool/run-find-all-symbols.py
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: create-13.0.0-python3-patch/llvm-13.0.0-new/clang-tools-extra/clang-include-fixer/find-all-symbols/tool
===================================================================
--- create-13.0.0-python3-patch/llvm-13.0.0-new/clang-tools-extra/clang-include-fixer/find-all-symbols/tool (revision 39)
+++ create-13.0.0-python3-patch/llvm-13.0.0-new/clang-tools-extra/clang-include-fixer/find-all-symbols/tool (nonexistent)
Property changes on: create-13.0.0-python3-patch/llvm-13.0.0-new/clang-tools-extra/clang-include-fixer/find-all-symbols/tool
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-python3-patch/llvm-13.0.0-new/clang-tools-extra/clang-include-fixer/find-all-symbols
===================================================================
--- create-13.0.0-python3-patch/llvm-13.0.0-new/clang-tools-extra/clang-include-fixer/find-all-symbols (revision 39)
+++ create-13.0.0-python3-patch/llvm-13.0.0-new/clang-tools-extra/clang-include-fixer/find-all-symbols (nonexistent)
Property changes on: create-13.0.0-python3-patch/llvm-13.0.0-new/clang-tools-extra/clang-include-fixer/find-all-symbols
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-python3-patch/llvm-13.0.0-new/clang-tools-extra/clang-include-fixer
===================================================================
--- create-13.0.0-python3-patch/llvm-13.0.0-new/clang-tools-extra/clang-include-fixer (revision 39)
+++ create-13.0.0-python3-patch/llvm-13.0.0-new/clang-tools-extra/clang-include-fixer (nonexistent)
Property changes on: create-13.0.0-python3-patch/llvm-13.0.0-new/clang-tools-extra/clang-include-fixer
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-python3-patch/llvm-13.0.0-new/clang-tools-extra
===================================================================
--- create-13.0.0-python3-patch/llvm-13.0.0-new/clang-tools-extra (revision 39)
+++ create-13.0.0-python3-patch/llvm-13.0.0-new/clang-tools-extra (nonexistent)
Property changes on: create-13.0.0-python3-patch/llvm-13.0.0-new/clang-tools-extra
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-python3-patch/llvm-13.0.0-new
===================================================================
--- create-13.0.0-python3-patch/llvm-13.0.0-new (revision 39)
+++ create-13.0.0-python3-patch/llvm-13.0.0-new (nonexistent)
Property changes on: create-13.0.0-python3-patch/llvm-13.0.0-new
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-python3-patch
===================================================================
--- create-13.0.0-python3-patch (revision 39)
+++ create-13.0.0-python3-patch (nonexistent)
Property changes on: create-13.0.0-python3-patch
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-lldb-riscv64-patch/file.list
===================================================================
--- create-15.0.4-lldb-riscv64-patch/file.list (revision 39)
+++ create-15.0.4-lldb-riscv64-patch/file.list (nonexistent)
@@ -1,2 +0,0 @@
-llvm-15.0.4/lldb/source/API/CMakeLists.txt
-llvm-15.0.4/lldb/tools/lldb-server/CMakeLists.txt
Index: create-15.0.4-lldb-riscv64-patch/llvm-15.0.4-new/lldb/source/API/CMakeLists.txt
===================================================================
--- create-15.0.4-lldb-riscv64-patch/llvm-15.0.4-new/lldb/source/API/CMakeLists.txt (revision 39)
+++ create-15.0.4-lldb-riscv64-patch/llvm-15.0.4-new/lldb/source/API/CMakeLists.txt (nonexistent)
@@ -1,217 +0,0 @@
-get_property(LLDB_ALL_PLUGINS GLOBAL PROPERTY LLDB_PLUGINS)
-
-if(LLDB_BUILD_FRAMEWORK)
- set(option_install_prefix INSTALL_PREFIX ${LLDB_FRAMEWORK_INSTALL_DIR})
- set(option_framework FRAMEWORK)
-endif()
-
-if(LLDB_ENABLE_PYTHON)
- get_target_property(python_bindings_dir swig_wrapper_python BINARY_DIR)
- set(lldb_python_wrapper ${python_bindings_dir}/LLDBWrapPython.cpp)
-endif()
-
-if(LLDB_ENABLE_LUA)
- get_target_property(lua_bindings_dir swig_wrapper_lua BINARY_DIR)
- set(lldb_lua_wrapper ${lua_bindings_dir}/LLDBWrapLua.cpp)
-endif()
-
-add_lldb_library(liblldb SHARED ${option_framework}
- SBAddress.cpp
- SBAttachInfo.cpp
- SBBlock.cpp
- SBBreakpoint.cpp
- SBBreakpointLocation.cpp
- SBBreakpointName.cpp
- SBBreakpointOptionCommon.cpp
- SBBroadcaster.cpp
- SBCommandInterpreter.cpp
- SBCommandInterpreterRunOptions.cpp
- SBCommandReturnObject.cpp
- SBCommunication.cpp
- SBCompileUnit.cpp
- SBData.cpp
- SBDebugger.cpp
- SBDeclaration.cpp
- SBEnvironment.cpp
- SBError.cpp
- SBEvent.cpp
- SBExecutionContext.cpp
- SBExpressionOptions.cpp
- SBFileSpec.cpp
- SBFile.cpp
- SBFileSpecList.cpp
- SBFrame.cpp
- SBFunction.cpp
- SBHostOS.cpp
- SBInstruction.cpp
- SBInstructionList.cpp
- SBLanguageRuntime.cpp
- SBLaunchInfo.cpp
- SBLineEntry.cpp
- SBListener.cpp
- SBMemoryRegionInfo.cpp
- SBMemoryRegionInfoList.cpp
- SBModule.cpp
- SBModuleSpec.cpp
- SBPlatform.cpp
- SBProcess.cpp
- SBProcessInfo.cpp
- SBQueue.cpp
- SBQueueItem.cpp
- SBReproducer.cpp
- SBSection.cpp
- SBSourceManager.cpp
- SBStream.cpp
- SBStringList.cpp
- SBStructuredData.cpp
- SBSymbol.cpp
- SBSymbolContext.cpp
- SBSymbolContextList.cpp
- SBTarget.cpp
- SBThread.cpp
- SBThreadCollection.cpp
- SBThreadPlan.cpp
- SBTrace.cpp
- SBType.cpp
- SBTypeCategory.cpp
- SBTypeEnumMember.cpp
- SBTypeFilter.cpp
- SBTypeFormat.cpp
- SBTypeNameSpecifier.cpp
- SBTypeSummary.cpp
- SBTypeSynthetic.cpp
- SBValue.cpp
- SBValueList.cpp
- SBVariablesOptions.cpp
- SBWatchpoint.cpp
- SBUnixSignals.cpp
- SystemInitializerFull.cpp
- ${lldb_python_wrapper}
- ${lldb_lua_wrapper}
-
- LINK_LIBS
- lldbBreakpoint
- lldbCore
- lldbDataFormatters
- lldbExpression
- lldbHost
- lldbInitialization
- lldbInterpreter
- lldbSymbol
- lldbTarget
- lldbUtility
- lldbVersion
- ${LLDB_ALL_PLUGINS}
- LINK_COMPONENTS
- Support
-
- ${option_install_prefix}
-)
-
-if(HAVE_CXX_ATOMICS_WITH_LIB OR HAVE_CXX_ATOMICS64_WITH_LIB)
- target_link_libraries(liblldb PRIVATE atomic)
-endif()
-
-# lib/pythonX.Y/dist-packages/lldb/_lldb.so is a symlink to lib/liblldb.so,
-# which depends on lib/libLLVM*.so (BUILD_SHARED_LIBS) or lib/libLLVM-10git.so
-# (LLVM_LINK_LLVM_DYLIB). Add an additional rpath $ORIGIN/../../../../lib so
-# that _lldb.so can be loaded from Python.
-if(LLDB_ENABLE_PYTHON AND (BUILD_SHARED_LIBS OR LLVM_LINK_LLVM_DYLIB) AND UNIX AND NOT APPLE)
- set_property(TARGET liblldb APPEND PROPERTY INSTALL_RPATH "\$ORIGIN/../../../../lib${LLVM_LIBDIR_SUFFIX}")
-endif()
-
-if(Python3_RPATH)
- set_property(TARGET liblldb APPEND PROPERTY INSTALL_RPATH "${Python3_RPATH}")
- set_property(TARGET liblldb APPEND PROPERTY BUILD_RPATH "${Python3_RPATH}")
-endif()
-
-
-if(LLDB_ENABLE_PYTHON)
- add_dependencies(liblldb swig_wrapper_python)
-
- if (MSVC)
- set_property(SOURCE ${lldb_python_wrapper} APPEND_STRING PROPERTY COMPILE_FLAGS " /W0")
- else()
- set_property(SOURCE ${lldb_python_wrapper} APPEND_STRING PROPERTY COMPILE_FLAGS " -w")
- endif()
-
- set_source_files_properties(${lldb_python_wrapper} PROPERTIES GENERATED ON)
- if (CLANG_CL)
- set_property(SOURCE ${lldb_python_wrapper} APPEND_STRING
- PROPERTY COMPILE_FLAGS " -Wno-unused-function")
- endif()
- if (LLVM_COMPILER_IS_GCC_COMPATIBLE AND
- NOT "${CMAKE_SYSTEM_NAME}" MATCHES "Darwin")
- set_property(SOURCE ${lldb_python_wrapper} APPEND_STRING
- PROPERTY COMPILE_FLAGS " -Wno-sequence-point -Wno-cast-qual")
- endif ()
-endif()
-
-if(LLDB_ENABLE_LUA)
- add_dependencies(liblldb swig_wrapper_lua)
- target_include_directories(liblldb PRIVATE ${LUA_INCLUDE_DIR})
-
- if (MSVC)
- set_property(SOURCE ${lldb_lua_wrapper} APPEND_STRING PROPERTY COMPILE_FLAGS " /W0")
- else()
- set_property(SOURCE ${lldb_lua_wrapper} APPEND_STRING PROPERTY COMPILE_FLAGS " -w")
- endif()
-
- set_source_files_properties(${lldb_lua_wrapper} PROPERTIES GENERATED ON)
-endif()
-
-set_target_properties(liblldb
- PROPERTIES
- VERSION ${LLDB_VERSION}
-)
-
-target_compile_definitions(liblldb PRIVATE LLDB_IN_LIBLLDB)
-if (NOT CMAKE_SYSTEM_NAME MATCHES "Windows")
- if (NOT LLDB_EXPORT_ALL_SYMBOLS)
- # If we're not exporting all symbols, we'll want to explicitly set
- # the exported symbols here. This prevents 'log enable --stack ...'
- # from working on some systems but limits the liblldb size.
- MESSAGE("-- Symbols (liblldb): exporting all symbols from the lldb namespace")
- add_llvm_symbol_exports(liblldb ${CMAKE_CURRENT_SOURCE_DIR}/liblldb.exports)
- else()
- # Don't use an explicit export. Instead, tell the linker to
- # export all symbols.
- MESSAGE("-- Symbols (liblldb): exporting all symbols from the lldb and lldb_private namespaces")
- add_llvm_symbol_exports(liblldb ${CMAKE_CURRENT_SOURCE_DIR}/liblldb-private.exports)
- endif()
- set_target_properties(liblldb_exports PROPERTIES FOLDER "lldb misc")
-endif()
-
-if (NOT MSVC)
- set_target_properties(liblldb
- PROPERTIES
- OUTPUT_NAME lldb
- )
-endif()
-
-# The Clang expression parser in LLDB requires the Clang resource directory to function.
-if (TARGET clang-resource-headers)
- # If building alongside Clang, just add a dependency to ensure it is build together with liblldb.
- add_dependencies(liblldb clang-resource-headers)
-else()
- # In a standalone build create a symlink from the LLDB library directory that points to the
- # resource directory in the Clang library directory. LLDB searches relative to its install path,
- # and the symlink is created in the same relative path as the resource directory of Clang when
- # building alongside Clang.
- # When building the LLDB framework, this isn't necessary as there we copy everything we need into
- # the framework (including the Clang resourece directory).
- if(NOT LLDB_BUILD_FRAMEWORK)
- set(LLDB_CLANG_RESOURCE_DIR_PARENT "$<TARGET_FILE_DIR:liblldb>/clang")
- file(MAKE_DIRECTORY "${LLDB_CLANG_RESOURCE_DIR_PARENT}")
- add_custom_command(TARGET liblldb POST_BUILD
- COMMENT "Linking Clang resource dir into LLDB build directory: ${LLDB_CLANG_RESOURCE_DIR_PARENT}"
- COMMAND ${CMAKE_COMMAND} -E make_directory "${LLDB_CLANG_RESOURCE_DIR_PARENT}"
- COMMAND ${CMAKE_COMMAND} -E create_symlink "${LLDB_EXTERNAL_CLANG_RESOURCE_DIR}"
- "${LLDB_CLANG_RESOURCE_DIR_PARENT}/${LLDB_CLANG_RESOURCE_DIR_NAME}"
- )
- endif()
-endif()
-
-if(LLDB_BUILD_FRAMEWORK)
- include(LLDBFramework)
-endif()
Index: create-15.0.4-lldb-riscv64-patch/llvm-15.0.4-new/lldb/source/API
===================================================================
--- create-15.0.4-lldb-riscv64-patch/llvm-15.0.4-new/lldb/source/API (revision 39)
+++ create-15.0.4-lldb-riscv64-patch/llvm-15.0.4-new/lldb/source/API (nonexistent)
Property changes on: create-15.0.4-lldb-riscv64-patch/llvm-15.0.4-new/lldb/source/API
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-lldb-riscv64-patch/llvm-15.0.4-new/lldb/source
===================================================================
--- create-15.0.4-lldb-riscv64-patch/llvm-15.0.4-new/lldb/source (revision 39)
+++ create-15.0.4-lldb-riscv64-patch/llvm-15.0.4-new/lldb/source (nonexistent)
Property changes on: create-15.0.4-lldb-riscv64-patch/llvm-15.0.4-new/lldb/source
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-lldb-riscv64-patch/llvm-15.0.4-new/lldb/tools/lldb-server/CMakeLists.txt
===================================================================
--- create-15.0.4-lldb-riscv64-patch/llvm-15.0.4-new/lldb/tools/lldb-server/CMakeLists.txt (revision 39)
+++ create-15.0.4-lldb-riscv64-patch/llvm-15.0.4-new/lldb/tools/lldb-server/CMakeLists.txt (nonexistent)
@@ -1,72 +0,0 @@
-set(LLVM_TARGET_DEFINITIONS LLGSOptions.td)
-tablegen(LLVM LLGSOptions.inc -gen-opt-parser-defs)
-add_public_tablegen_target(LLGSOptionsTableGen)
-set_target_properties(LLGSOptionsTableGen PROPERTIES FOLDER "lldb misc")
-
-set(LLDB_PLUGINS)
-
-if(CMAKE_SYSTEM_NAME MATCHES "Linux|Android")
- list(APPEND LLDB_PLUGINS lldbPluginProcessLinux)
-endif()
-
-if(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
- list(APPEND LLDB_PLUGINS lldbPluginProcessFreeBSD)
-endif()
-
-if(CMAKE_SYSTEM_NAME MATCHES "NetBSD")
- list(APPEND LLDB_PLUGINS lldbPluginProcessNetBSD)
-endif()
-
-if(CMAKE_SYSTEM_NAME MATCHES "Darwin")
- list(APPEND LLDB_PLUGINS lldbPluginObjectFileMachO)
-elseif(CMAKE_SYSTEM_NAME MATCHES "Windows")
- list(APPEND LLDB_PLUGINS lldbPluginObjectFilePECOFF)
-else()
- list(APPEND LLDB_PLUGINS lldbPluginObjectFileELF)
-endif()
-
-if(APPLE_EMBEDDED)
- if(LLDB_CODESIGN_IDENTITY)
- # Use explicit LLDB identity
- set(LLVM_CODESIGNING_IDENTITY ${LLDB_CODESIGN_IDENTITY})
- else()
- # Use explicit LLVM identity or default to lldb_codesign if empty
- if(NOT LLVM_CODESIGNING_IDENTITY)
- set(LLVM_CODESIGNING_IDENTITY lldb_codesign)
- endif()
- endif()
-endif()
-
-add_lldb_tool(lldb-server
- Acceptor.cpp
- lldb-gdbserver.cpp
- lldb-platform.cpp
- lldb-server.cpp
- LLDBServerUtilities.cpp
- SystemInitializerLLGS.cpp
-
- LINK_LIBS
- lldbHost
- lldbInitialization
- lldbVersion
- ${LLDB_PLUGINS}
- lldbPluginInstructionARM
- lldbPluginInstructionMIPS
- lldbPluginInstructionMIPS64
- ${LLDB_SYSTEM_LIBS}
-
- LINK_COMPONENTS
- Option
- Support
-)
-
-if(HAVE_CXX_ATOMICS_WITH_LIB OR HAVE_CXX_ATOMICS64_WITH_LIB)
- target_link_libraries(lldb-server PRIVATE atomic)
-endif()
-
-add_dependencies(lldb-server
- LLGSOptionsTableGen
- ${tablegen_deps}
-)
-target_include_directories(lldb-server PRIVATE "${LLDB_SOURCE_DIR}/source")
-target_link_libraries(lldb-server PRIVATE ${LLDB_SYSTEM_LIBS})
Index: create-15.0.4-lldb-riscv64-patch/llvm-15.0.4-new/lldb/tools/lldb-server
===================================================================
--- create-15.0.4-lldb-riscv64-patch/llvm-15.0.4-new/lldb/tools/lldb-server (revision 39)
+++ create-15.0.4-lldb-riscv64-patch/llvm-15.0.4-new/lldb/tools/lldb-server (nonexistent)
Property changes on: create-15.0.4-lldb-riscv64-patch/llvm-15.0.4-new/lldb/tools/lldb-server
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-lldb-riscv64-patch/llvm-15.0.4-new/lldb/tools
===================================================================
--- create-15.0.4-lldb-riscv64-patch/llvm-15.0.4-new/lldb/tools (revision 39)
+++ create-15.0.4-lldb-riscv64-patch/llvm-15.0.4-new/lldb/tools (nonexistent)
Property changes on: create-15.0.4-lldb-riscv64-patch/llvm-15.0.4-new/lldb/tools
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-lldb-riscv64-patch/llvm-15.0.4-new/lldb
===================================================================
--- create-15.0.4-lldb-riscv64-patch/llvm-15.0.4-new/lldb (revision 39)
+++ create-15.0.4-lldb-riscv64-patch/llvm-15.0.4-new/lldb (nonexistent)
Property changes on: create-15.0.4-lldb-riscv64-patch/llvm-15.0.4-new/lldb
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-lldb-riscv64-patch/llvm-15.0.4-new
===================================================================
--- create-15.0.4-lldb-riscv64-patch/llvm-15.0.4-new (revision 39)
+++ create-15.0.4-lldb-riscv64-patch/llvm-15.0.4-new (nonexistent)
Property changes on: create-15.0.4-lldb-riscv64-patch/llvm-15.0.4-new
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-lldb-riscv64-patch/create.patch.sh
===================================================================
--- create-15.0.4-lldb-riscv64-patch/create.patch.sh (revision 39)
+++ create-15.0.4-lldb-riscv64-patch/create.patch.sh (nonexistent)
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-VERSION=15.0.4
-
-tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
-mv llvm-$VERSION llvm-$VERSION-orig
-
-cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
-
-diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-lldb-riscv64.patch
-
-mv llvm-$VERSION-lldb-riscv64.patch ../patches
-
-rm -rf ./llvm-$VERSION
-rm -rf ./llvm-$VERSION-orig
Property changes on: create-15.0.4-lldb-riscv64-patch/create.patch.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: create-15.0.4-lldb-riscv64-patch
===================================================================
--- create-15.0.4-lldb-riscv64-patch (revision 39)
+++ create-15.0.4-lldb-riscv64-patch (nonexistent)
Property changes on: create-15.0.4-lldb-riscv64-patch
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-clangd-riscv64-patch/file.list
===================================================================
--- create-15.0.4-clangd-riscv64-patch/file.list (revision 39)
+++ create-15.0.4-clangd-riscv64-patch/file.list (nonexistent)
@@ -1 +0,0 @@
-llvm-15.0.4/clang-tools-extra/clangd/CMakeLists.txt
Index: create-15.0.4-clangd-riscv64-patch/llvm-15.0.4-new/clang-tools-extra/clangd/CMakeLists.txt
===================================================================
--- create-15.0.4-clangd-riscv64-patch/llvm-15.0.4-new/clang-tools-extra/clangd/CMakeLists.txt (revision 39)
+++ create-15.0.4-clangd-riscv64-patch/llvm-15.0.4-new/clang-tools-extra/clangd/CMakeLists.txt (nonexistent)
@@ -1,213 +0,0 @@
-# This is a no-op for building files in this dir, but is inherited by subdirs.
-include_directories(${CMAKE_CURRENT_SOURCE_DIR})
-include_directories(${CMAKE_CURRENT_BINARY_DIR})
-
-add_subdirectory(support)
-
-# Configure the Features.inc file.
-if (NOT DEFINED CLANGD_BUILD_XPC)
- if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
- set(CLANGD_BUILD_XPC_DEFAULT ON)
- else ()
- set(CLANGD_BUILD_XPC_DEFAULT OFF)
- endif ()
-
- llvm_canonicalize_cmake_booleans(CLANGD_BUILD_XPC_DEFAULT)
-
- set(CLANGD_BUILD_XPC ${CLANGD_BUILD_XPC_DEFAULT} CACHE BOOL "Build XPC Support For Clangd." FORCE)
- unset(CLANGD_BUILD_XPC_DEFAULT)
-endif ()
-
-option(CLANGD_MALLOC_TRIM "Call malloc_trim(3) periodically in Clangd. (only takes effect when using glibc)" ON)
-# -DCLANG_TIDY_CHECKS=Off avoids a dependency on clang-tidy, reducing rebuilds.
-option(CLANGD_TIDY_CHECKS "Link all clang-tidy checks into clangd" ON)
-
-llvm_canonicalize_cmake_booleans(
- CLANGD_BUILD_XPC
- CLANGD_ENABLE_REMOTE
- ENABLE_GRPC_REFLECTION
- CLANGD_MALLOC_TRIM
- CLANGD_TIDY_CHECKS
- LLVM_ENABLE_ZLIB
-)
-
-configure_file(
- ${CMAKE_CURRENT_SOURCE_DIR}/Features.inc.in
- ${CMAKE_CURRENT_BINARY_DIR}/Features.inc
-)
-
-set(LLVM_LINK_COMPONENTS
- Support
- AllTargetsInfos
- FrontendOpenMP
- Option
- )
-
-include(${CMAKE_CURRENT_SOURCE_DIR}/quality/CompletionModel.cmake)
-gen_decision_forest(${CMAKE_CURRENT_SOURCE_DIR}/quality/model CompletionModel clang::clangd::Example)
-
-if(MSVC AND NOT CLANG_CL)
- set_source_files_properties(CompileCommands.cpp PROPERTIES COMPILE_FLAGS -wd4130) # disables C4130: logical operation on address of string constant
-endif()
-
-include_directories(BEFORE "${CMAKE_CURRENT_BINARY_DIR}/../clang-tidy")
-
-add_clang_library(clangDaemon
- AST.cpp
- ASTSignals.cpp
- ClangdLSPServer.cpp
- ClangdServer.cpp
- CodeComplete.cpp
- CodeCompletionStrings.cpp
- CollectMacros.cpp
- CompileCommands.cpp
- Compiler.cpp
- Config.cpp
- ConfigCompile.cpp
- ConfigProvider.cpp
- ConfigYAML.cpp
- Diagnostics.cpp
- DraftStore.cpp
- DumpAST.cpp
- ExpectedTypes.cpp
- FeatureModule.cpp
- Feature.cpp
- FindSymbols.cpp
- FindTarget.cpp
- FileDistance.cpp
- Format.cpp
- FS.cpp
- FuzzyMatch.cpp
- GlobalCompilationDatabase.cpp
- Headers.cpp
- HeaderSourceSwitch.cpp
- HeuristicResolver.cpp
- Hover.cpp
- IncludeCleaner.cpp
- IncludeFixer.cpp
- InlayHints.cpp
- JSONTransport.cpp
- PathMapping.cpp
- Protocol.cpp
- Quality.cpp
- ParsedAST.cpp
- Preamble.cpp
- RIFF.cpp
- Selection.cpp
- SemanticHighlighting.cpp
- SemanticSelection.cpp
- SourceCode.cpp
- QueryDriverDatabase.cpp
- TidyProvider.cpp
- TUScheduler.cpp
- URI.cpp
- XRefs.cpp
- ${CMAKE_CURRENT_BINARY_DIR}/CompletionModel.cpp
-
- index/Background.cpp
- index/BackgroundIndexLoader.cpp
- index/BackgroundIndexStorage.cpp
- index/BackgroundQueue.cpp
- index/BackgroundRebuild.cpp
- index/CanonicalIncludes.cpp
- index/FileIndex.cpp
- index/Index.cpp
- index/IndexAction.cpp
- index/MemIndex.cpp
- index/Merge.cpp
- index/ProjectAware.cpp
- index/Ref.cpp
- index/Relation.cpp
- index/Serialization.cpp
- index/StdLib.cpp
- index/Symbol.cpp
- index/SymbolCollector.cpp
- index/SymbolID.cpp
- index/SymbolLocation.cpp
- index/SymbolOrigin.cpp
- index/YAMLSerialization.cpp
-
- index/dex/Dex.cpp
- index/dex/Iterator.cpp
- index/dex/PostingList.cpp
- index/dex/Trigram.cpp
-
- refactor/InsertionPoint.cpp
- refactor/Rename.cpp
- refactor/Tweak.cpp
-
- DEPENDS
- omp_gen
- )
-
-# Include generated CompletionModel headers.
-target_include_directories(clangDaemon PUBLIC
- $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
-)
-
-clang_target_link_libraries(clangDaemon
- PRIVATE
- clangAST
- clangASTMatchers
- clangBasic
- clangDriver
- clangFormat
- clangFrontend
- clangIndex
- clangLex
- clangSema
- clangSerialization
- clangTooling
- clangToolingCore
- clangToolingInclusions
- clangToolingSyntax
- )
-
-if(HAVE_CXX_ATOMICS_WITH_LIB OR HAVE_CXX_ATOMICS64_WITH_LIB)
- target_link_libraries(clangDaemon PRIVATE atomic)
-endif()
-
-target_link_libraries(clangDaemon
- PRIVATE
- ${LLVM_PTHREAD_LIB}
-
- clangTidy
-
- clangdSupport
-
- clangPseudo
- )
-if(CLANGD_TIDY_CHECKS)
- target_link_libraries(clangDaemon PRIVATE ${ALL_CLANG_TIDY_CHECKS})
-endif()
-
-add_subdirectory(refactor/tweaks)
-if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
- # FIXME: Make fuzzer not use linux-specific APIs, build it everywhere.
- add_subdirectory(fuzzer)
-endif()
-add_subdirectory(tool)
-add_subdirectory(indexer)
-
-if (LLVM_INCLUDE_BENCHMARKS)
- add_subdirectory(benchmarks)
-endif()
-if ( CLANGD_BUILD_XPC )
- add_subdirectory(xpc)
-endif ()
-
-if (CLANGD_ENABLE_REMOTE)
- include(FindGRPC)
-endif()
-
-if(CLANG_INCLUDE_TESTS)
- add_subdirectory(test)
- add_subdirectory(unittests)
-endif()
-
-# FIXME(kirillbobyrev): Document this in the LLVM docs once remote index is stable.
-option(CLANGD_ENABLE_REMOTE "Use gRPC library to enable remote index support for Clangd" OFF)
-set(GRPC_INSTALL_PATH "" CACHE PATH "Path to gRPC library manual installation.")
-
-add_subdirectory(index/remote)
-add_subdirectory(index/dex/dexp)
Index: create-15.0.4-clangd-riscv64-patch/llvm-15.0.4-new/clang-tools-extra/clangd
===================================================================
--- create-15.0.4-clangd-riscv64-patch/llvm-15.0.4-new/clang-tools-extra/clangd (revision 39)
+++ create-15.0.4-clangd-riscv64-patch/llvm-15.0.4-new/clang-tools-extra/clangd (nonexistent)
Property changes on: create-15.0.4-clangd-riscv64-patch/llvm-15.0.4-new/clang-tools-extra/clangd
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-clangd-riscv64-patch/llvm-15.0.4-new/clang-tools-extra
===================================================================
--- create-15.0.4-clangd-riscv64-patch/llvm-15.0.4-new/clang-tools-extra (revision 39)
+++ create-15.0.4-clangd-riscv64-patch/llvm-15.0.4-new/clang-tools-extra (nonexistent)
Property changes on: create-15.0.4-clangd-riscv64-patch/llvm-15.0.4-new/clang-tools-extra
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-clangd-riscv64-patch/llvm-15.0.4-new
===================================================================
--- create-15.0.4-clangd-riscv64-patch/llvm-15.0.4-new (revision 39)
+++ create-15.0.4-clangd-riscv64-patch/llvm-15.0.4-new (nonexistent)
Property changes on: create-15.0.4-clangd-riscv64-patch/llvm-15.0.4-new
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-clangd-riscv64-patch/create.patch.sh
===================================================================
--- create-15.0.4-clangd-riscv64-patch/create.patch.sh (revision 39)
+++ create-15.0.4-clangd-riscv64-patch/create.patch.sh (nonexistent)
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-VERSION=15.0.4
-
-tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
-mv llvm-$VERSION llvm-$VERSION-orig
-
-cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
-
-diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-clangd-riscv64.patch
-
-mv llvm-$VERSION-clangd-riscv64.patch ../patches
-
-rm -rf ./llvm-$VERSION
-rm -rf ./llvm-$VERSION-orig
Property changes on: create-15.0.4-clangd-riscv64-patch/create.patch.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: create-15.0.4-clangd-riscv64-patch
===================================================================
--- create-15.0.4-clangd-riscv64-patch (revision 39)
+++ create-15.0.4-clangd-riscv64-patch (nonexistent)
Property changes on: create-15.0.4-clangd-riscv64-patch
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-python3-patch/file.list
===================================================================
--- create-15.0.4-python3-patch/file.list (revision 39)
+++ create-15.0.4-python3-patch/file.list (nonexistent)
@@ -1 +0,0 @@
-llvm-15.0.4/clang-tools-extra/clang-include-fixer/find-all-symbols/tool/run-find-all-symbols.py
Index: create-15.0.4-python3-patch/llvm-15.0.4-new/clang-tools-extra/clang-include-fixer/find-all-symbols/tool/run-find-all-symbols.py
===================================================================
--- create-15.0.4-python3-patch/llvm-15.0.4-new/clang-tools-extra/clang-include-fixer/find-all-symbols/tool/run-find-all-symbols.py (revision 39)
+++ create-15.0.4-python3-patch/llvm-15.0.4-new/clang-tools-extra/clang-include-fixer/find-all-symbols/tool/run-find-all-symbols.py (nonexistent)
@@ -1,126 +0,0 @@
-#!/usr/bin/env python
-#
-#=- run-find-all-symbols.py - Parallel find-all-symbols runner -*- python -*-=#
-#
-# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-# See https://llvm.org/LICENSE.txt for license information.
-# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-#
-#===------------------------------------------------------------------------===#
-
-"""
-Parallel find-all-symbols runner
-================================
-
-Runs find-all-symbols over all files in a compilation database.
-
-Example invocations.
-- Run find-all-symbols on all files in the current working directory.
- run-find-all-symbols.py <source-file>
-
-Compilation database setup:
-http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html
-"""
-
-import argparse
-import json
-import multiprocessing
-import os
-import Queue
-import shutil
-import subprocess
-import sys
-import tempfile
-import threading
-
-
-def find_compilation_database(path):
- """Adjusts the directory until a compilation database is found."""
- result = './'
- while not os.path.isfile(os.path.join(result, path)):
- if os.path.realpath(result) == '/':
- print ('Error: could not find compilation database.')
- sys.exit(1)
- result += '../'
- return os.path.realpath(result)
-
-
-def MergeSymbols(directory, args):
- """Merge all symbol files (yaml) in a given directory into a single file."""
- invocation = [args.binary, '-merge-dir='+directory, args.saving_path]
- subprocess.call(invocation)
- print ('Merge is finished. Saving results in ' + args.saving_path)
-
-
-def run_find_all_symbols(args, tmpdir, build_path, queue):
- """Takes filenames out of queue and runs find-all-symbols on them."""
- while True:
- name = queue.get()
- invocation = [args.binary, name, '-output-dir='+tmpdir, '-p='+build_path]
- sys.stdout.write(' '.join(invocation) + '\n')
- subprocess.call(invocation)
- queue.task_done()
-
-
-def main():
- parser = argparse.ArgumentParser(description='Runs find-all-symbols over all'
- 'files in a compilation database.')
- parser.add_argument('-binary', metavar='PATH',
- default='./bin/find-all-symbols',
- help='path to find-all-symbols binary')
- parser.add_argument('-j', type=int, default=0,
- help='number of instances to be run in parallel.')
- parser.add_argument('-p', dest='build_path',
- help='path used to read a compilation database.')
- parser.add_argument('-saving-path', default='./find_all_symbols_db.yaml',
- help='result saving path')
- args = parser.parse_args()
-
- db_path = 'compile_commands.json'
-
- if args.build_path is not None:
- build_path = args.build_path
- else:
- build_path = find_compilation_database(db_path)
-
- tmpdir = tempfile.mkdtemp()
-
- # Load the database and extract all files.
- database = json.load(open(os.path.join(build_path, db_path)))
- files = [entry['file'] for entry in database]
-
- # Filter out .rc files on Windows. CMake includes them for some reason.
- files = [f for f in files if not f.endswith('.rc')]
-
- max_task = args.j
- if max_task == 0:
- max_task = multiprocessing.cpu_count()
-
- try:
- # Spin up a bunch of tidy-launching threads.
- queue = Queue.Queue(max_task)
- for _ in range(max_task):
- t = threading.Thread(target=run_find_all_symbols,
- args=(args, tmpdir, build_path, queue))
- t.daemon = True
- t.start()
-
- # Fill the queue with files.
- for name in files:
- queue.put(name)
-
- # Wait for all threads to be done.
- queue.join()
-
- MergeSymbols(tmpdir, args)
-
-
- except KeyboardInterrupt:
- # This is a sad hack. Unfortunately subprocess goes
- # bonkers with ctrl-c and we start forking merrily.
- print ('\nCtrl-C detected, goodbye.')
- os.kill(0, 9)
-
-
-if __name__ == '__main__':
- main()
Property changes on: create-15.0.4-python3-patch/llvm-15.0.4-new/clang-tools-extra/clang-include-fixer/find-all-symbols/tool/run-find-all-symbols.py
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: create-15.0.4-python3-patch/llvm-15.0.4-new/clang-tools-extra/clang-include-fixer/find-all-symbols/tool
===================================================================
--- create-15.0.4-python3-patch/llvm-15.0.4-new/clang-tools-extra/clang-include-fixer/find-all-symbols/tool (revision 39)
+++ create-15.0.4-python3-patch/llvm-15.0.4-new/clang-tools-extra/clang-include-fixer/find-all-symbols/tool (nonexistent)
Property changes on: create-15.0.4-python3-patch/llvm-15.0.4-new/clang-tools-extra/clang-include-fixer/find-all-symbols/tool
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-python3-patch/llvm-15.0.4-new/clang-tools-extra/clang-include-fixer/find-all-symbols
===================================================================
--- create-15.0.4-python3-patch/llvm-15.0.4-new/clang-tools-extra/clang-include-fixer/find-all-symbols (revision 39)
+++ create-15.0.4-python3-patch/llvm-15.0.4-new/clang-tools-extra/clang-include-fixer/find-all-symbols (nonexistent)
Property changes on: create-15.0.4-python3-patch/llvm-15.0.4-new/clang-tools-extra/clang-include-fixer/find-all-symbols
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-python3-patch/llvm-15.0.4-new/clang-tools-extra/clang-include-fixer
===================================================================
--- create-15.0.4-python3-patch/llvm-15.0.4-new/clang-tools-extra/clang-include-fixer (revision 39)
+++ create-15.0.4-python3-patch/llvm-15.0.4-new/clang-tools-extra/clang-include-fixer (nonexistent)
Property changes on: create-15.0.4-python3-patch/llvm-15.0.4-new/clang-tools-extra/clang-include-fixer
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-python3-patch/llvm-15.0.4-new/clang-tools-extra
===================================================================
--- create-15.0.4-python3-patch/llvm-15.0.4-new/clang-tools-extra (revision 39)
+++ create-15.0.4-python3-patch/llvm-15.0.4-new/clang-tools-extra (nonexistent)
Property changes on: create-15.0.4-python3-patch/llvm-15.0.4-new/clang-tools-extra
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-python3-patch/llvm-15.0.4-new
===================================================================
--- create-15.0.4-python3-patch/llvm-15.0.4-new (revision 39)
+++ create-15.0.4-python3-patch/llvm-15.0.4-new (nonexistent)
Property changes on: create-15.0.4-python3-patch/llvm-15.0.4-new
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-python3-patch/create.patch.sh
===================================================================
--- create-15.0.4-python3-patch/create.patch.sh (revision 39)
+++ create-15.0.4-python3-patch/create.patch.sh (nonexistent)
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-VERSION=15.0.4
-
-tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
-mv llvm-$VERSION llvm-$VERSION-orig
-
-cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
-
-diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-python3.patch
-
-mv llvm-$VERSION-python3.patch ../patches
-
-rm -rf ./llvm-$VERSION
-rm -rf ./llvm-$VERSION-orig
Property changes on: create-15.0.4-python3-patch/create.patch.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: create-15.0.4-python3-patch
===================================================================
--- create-15.0.4-python3-patch (revision 39)
+++ create-15.0.4-python3-patch (nonexistent)
Property changes on: create-15.0.4-python3-patch
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-compiler-rt-synonyms-patch/file.list
===================================================================
--- create-13.0.0-compiler-rt-synonyms-patch/file.list (revision 39)
+++ create-13.0.0-compiler-rt-synonyms-patch/file.list (nonexistent)
@@ -1,2 +0,0 @@
-llvm-13.0.0/compiler-rt/cmake/builtin-config-ix.cmake
-llvm-13.0.0/compiler-rt/cmake/config-ix.cmake
Index: create-13.0.0-compiler-rt-synonyms-patch/create.patch.sh
===================================================================
--- create-13.0.0-compiler-rt-synonyms-patch/create.patch.sh (revision 39)
+++ create-13.0.0-compiler-rt-synonyms-patch/create.patch.sh (nonexistent)
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-VERSION=13.0.0
-
-tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
-mv llvm-$VERSION llvm-$VERSION-orig
-
-cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
-
-diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-compiler-rt-synonyms.patch
-
-mv llvm-$VERSION-compiler-rt-synonyms.patch ../patches
-
-rm -rf ./llvm-$VERSION
-rm -rf ./llvm-$VERSION-orig
Property changes on: create-13.0.0-compiler-rt-synonyms-patch/create.patch.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: create-13.0.0-compiler-rt-synonyms-patch/llvm-13.0.0-new/compiler-rt/cmake/config-ix.cmake
===================================================================
--- create-13.0.0-compiler-rt-synonyms-patch/llvm-13.0.0-new/compiler-rt/cmake/config-ix.cmake (revision 39)
+++ create-13.0.0-compiler-rt-synonyms-patch/llvm-13.0.0-new/compiler-rt/cmake/config-ix.cmake (nonexistent)
@@ -1,822 +0,0 @@
-include(CMakePushCheckState)
-include(CheckCCompilerFlag)
-include(CheckCXXCompilerFlag)
-include(CheckIncludeFiles)
-include(CheckLibraryExists)
-include(CheckSymbolExists)
-include(TestBigEndian)
-
-function(compiler_rt_check_linker_flag flag out_var)
- cmake_push_check_state()
- set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} ${flag}")
- check_cxx_compiler_flag("" ${out_var})
- cmake_pop_check_state()
-endfunction()
-
-check_library_exists(c fopen "" COMPILER_RT_HAS_LIBC)
-if (COMPILER_RT_USE_BUILTINS_LIBRARY)
- include(HandleCompilerRT)
- find_compiler_rt_library(builtins "" COMPILER_RT_BUILTINS_LIBRARY)
-else()
- if (ANDROID)
- check_library_exists(gcc __gcc_personality_v0 "" COMPILER_RT_HAS_GCC_LIB)
- else()
- check_library_exists(gcc_s __gcc_personality_v0 "" COMPILER_RT_HAS_GCC_S_LIB)
- endif()
-endif()
-
-check_c_compiler_flag(-nodefaultlibs COMPILER_RT_HAS_NODEFAULTLIBS_FLAG)
-if (COMPILER_RT_HAS_NODEFAULTLIBS_FLAG)
- set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -nodefaultlibs")
- if (COMPILER_RT_HAS_LIBC)
- list(APPEND CMAKE_REQUIRED_LIBRARIES c)
- endif ()
- if (COMPILER_RT_USE_BUILTINS_LIBRARY)
- list(APPEND CMAKE_REQUIRED_LIBRARIES "${COMPILER_RT_BUILTINS_LIBRARY}")
- elseif (COMPILER_RT_HAS_GCC_S_LIB)
- list(APPEND CMAKE_REQUIRED_LIBRARIES gcc_s)
- elseif (COMPILER_RT_HAS_GCC_LIB)
- list(APPEND CMAKE_REQUIRED_LIBRARIES gcc)
- endif ()
- if (MINGW)
- # Mingw64 requires quite a few "C" runtime libraries in order for basic
- # programs to link successfully with -nodefaultlibs.
- if (COMPILER_RT_USE_BUILTINS_LIBRARY)
- set(MINGW_RUNTIME ${COMPILER_RT_BUILTINS_LIBRARY})
- else ()
- set(MINGW_RUNTIME gcc_s gcc)
- endif()
- set(MINGW_LIBRARIES mingw32 ${MINGW_RUNTIME} moldname mingwex msvcrt advapi32
- shell32 user32 kernel32 mingw32 ${MINGW_RUNTIME}
- moldname mingwex msvcrt)
- list(APPEND CMAKE_REQUIRED_LIBRARIES ${MINGW_LIBRARIES})
- endif()
-endif ()
-
-# CodeGen options.
-check_c_compiler_flag(-ffreestanding COMPILER_RT_HAS_FFREESTANDING_FLAG)
-check_c_compiler_flag(-fomit-frame-pointer COMPILER_RT_HAS_OMIT_FRAME_POINTER_FLAG)
-check_c_compiler_flag(-std=c11 COMPILER_RT_HAS_STD_C11_FLAG)
-check_cxx_compiler_flag(-fPIC COMPILER_RT_HAS_FPIC_FLAG)
-check_cxx_compiler_flag(-fPIE COMPILER_RT_HAS_FPIE_FLAG)
-check_cxx_compiler_flag(-fno-builtin COMPILER_RT_HAS_FNO_BUILTIN_FLAG)
-check_cxx_compiler_flag(-fno-exceptions COMPILER_RT_HAS_FNO_EXCEPTIONS_FLAG)
-check_cxx_compiler_flag(-fomit-frame-pointer COMPILER_RT_HAS_FOMIT_FRAME_POINTER_FLAG)
-check_cxx_compiler_flag(-funwind-tables COMPILER_RT_HAS_FUNWIND_TABLES_FLAG)
-check_cxx_compiler_flag(-fno-stack-protector COMPILER_RT_HAS_FNO_STACK_PROTECTOR_FLAG)
-check_cxx_compiler_flag(-fno-sanitize=safe-stack COMPILER_RT_HAS_FNO_SANITIZE_SAFE_STACK_FLAG)
-check_cxx_compiler_flag(-fvisibility=hidden COMPILER_RT_HAS_FVISIBILITY_HIDDEN_FLAG)
-check_cxx_compiler_flag(-frtti COMPILER_RT_HAS_FRTTI_FLAG)
-check_cxx_compiler_flag(-fno-rtti COMPILER_RT_HAS_FNO_RTTI_FLAG)
-check_cxx_compiler_flag("-Werror -fno-function-sections" COMPILER_RT_HAS_FNO_FUNCTION_SECTIONS_FLAG)
-check_cxx_compiler_flag(-std=c++14 COMPILER_RT_HAS_STD_CXX14_FLAG)
-check_cxx_compiler_flag(-ftls-model=initial-exec COMPILER_RT_HAS_FTLS_MODEL_INITIAL_EXEC)
-check_cxx_compiler_flag(-fno-lto COMPILER_RT_HAS_FNO_LTO_FLAG)
-check_cxx_compiler_flag(-fno-profile-generate COMPILER_RT_HAS_FNO_PROFILE_GENERATE_FLAG)
-check_cxx_compiler_flag(-fno-profile-instr-generate COMPILER_RT_HAS_FNO_PROFILE_INSTR_GENERATE_FLAG)
-check_cxx_compiler_flag(-fno-profile-instr-use COMPILER_RT_HAS_FNO_PROFILE_INSTR_USE_FLAG)
-check_cxx_compiler_flag("-Werror -msse3" COMPILER_RT_HAS_MSSE3_FLAG)
-check_cxx_compiler_flag("-Werror -msse4.2" COMPILER_RT_HAS_MSSE4_2_FLAG)
-check_cxx_compiler_flag(--sysroot=. COMPILER_RT_HAS_SYSROOT_FLAG)
-check_cxx_compiler_flag("-Werror -mcrc" COMPILER_RT_HAS_MCRC_FLAG)
-check_cxx_compiler_flag(-fno-partial-inlining COMPILER_RT_HAS_FNO_PARTIAL_INLINING_FLAG)
-
-if(NOT WIN32 AND NOT CYGWIN)
- # MinGW warns if -fvisibility-inlines-hidden is used.
- check_cxx_compiler_flag("-fvisibility-inlines-hidden" COMPILER_RT_HAS_FVISIBILITY_INLINES_HIDDEN_FLAG)
-endif()
-
-check_cxx_compiler_flag(/GR COMPILER_RT_HAS_GR_FLAG)
-check_cxx_compiler_flag(/GS COMPILER_RT_HAS_GS_FLAG)
-check_cxx_compiler_flag(/MT COMPILER_RT_HAS_MT_FLAG)
-check_cxx_compiler_flag(/Oy COMPILER_RT_HAS_Oy_FLAG)
-
-# Debug info flags.
-check_cxx_compiler_flag(-gline-tables-only COMPILER_RT_HAS_GLINE_TABLES_ONLY_FLAG)
-check_cxx_compiler_flag(-g COMPILER_RT_HAS_G_FLAG)
-check_cxx_compiler_flag(/Zi COMPILER_RT_HAS_Zi_FLAG)
-
-# Warnings.
-check_cxx_compiler_flag(-Wall COMPILER_RT_HAS_WALL_FLAG)
-check_cxx_compiler_flag(-Werror COMPILER_RT_HAS_WERROR_FLAG)
-check_cxx_compiler_flag("-Werror -Wframe-larger-than=512" COMPILER_RT_HAS_WFRAME_LARGER_THAN_FLAG)
-check_cxx_compiler_flag("-Werror -Wglobal-constructors" COMPILER_RT_HAS_WGLOBAL_CONSTRUCTORS_FLAG)
-check_cxx_compiler_flag("-Werror -Wc99-extensions" COMPILER_RT_HAS_WC99_EXTENSIONS_FLAG)
-check_cxx_compiler_flag("-Werror -Wgnu" COMPILER_RT_HAS_WGNU_FLAG)
-check_cxx_compiler_flag("-Werror -Wnon-virtual-dtor" COMPILER_RT_HAS_WNON_VIRTUAL_DTOR_FLAG)
-check_cxx_compiler_flag("-Werror -Wvariadic-macros" COMPILER_RT_HAS_WVARIADIC_MACROS_FLAG)
-check_cxx_compiler_flag("-Werror -Wunused-parameter" COMPILER_RT_HAS_WUNUSED_PARAMETER_FLAG)
-check_cxx_compiler_flag("-Werror -Wcovered-switch-default" COMPILER_RT_HAS_WCOVERED_SWITCH_DEFAULT_FLAG)
-check_cxx_compiler_flag("-Werror -Wsuggest-override" COMPILER_RT_HAS_WSUGGEST_OVERRIDE_FLAG)
-check_cxx_compiler_flag(-Wno-pedantic COMPILER_RT_HAS_WNO_PEDANTIC)
-
-check_cxx_compiler_flag(/W4 COMPILER_RT_HAS_W4_FLAG)
-check_cxx_compiler_flag(/WX COMPILER_RT_HAS_WX_FLAG)
-check_cxx_compiler_flag(/wd4146 COMPILER_RT_HAS_WD4146_FLAG)
-check_cxx_compiler_flag(/wd4291 COMPILER_RT_HAS_WD4291_FLAG)
-check_cxx_compiler_flag(/wd4221 COMPILER_RT_HAS_WD4221_FLAG)
-check_cxx_compiler_flag(/wd4391 COMPILER_RT_HAS_WD4391_FLAG)
-check_cxx_compiler_flag(/wd4722 COMPILER_RT_HAS_WD4722_FLAG)
-check_cxx_compiler_flag(/wd4800 COMPILER_RT_HAS_WD4800_FLAG)
-
-# Symbols.
-check_symbol_exists(__func__ "" COMPILER_RT_HAS_FUNC_SYMBOL)
-
-# Includes.
-check_cxx_compiler_flag(-nostdinc++ COMPILER_RT_HAS_NOSTDINCXX_FLAG)
-check_cxx_compiler_flag(-nostdlib++ COMPILER_RT_HAS_NOSTDLIBXX_FLAG)
-check_include_files("sys/auxv.h" COMPILER_RT_HAS_AUXV)
-
-# Libraries.
-check_library_exists(dl dlopen "" COMPILER_RT_HAS_LIBDL)
-check_library_exists(rt shm_open "" COMPILER_RT_HAS_LIBRT)
-check_library_exists(m pow "" COMPILER_RT_HAS_LIBM)
-check_library_exists(pthread pthread_create "" COMPILER_RT_HAS_LIBPTHREAD)
-check_library_exists(execinfo backtrace "" COMPILER_RT_HAS_LIBEXECINFO)
-
-# Look for terminfo library, used in unittests that depend on LLVMSupport.
-if(LLVM_ENABLE_TERMINFO STREQUAL FORCE_ON)
- set(MAYBE_REQUIRED REQUIRED)
-else()
- set(MAYBE_REQUIRED)
-endif()
-if(LLVM_ENABLE_TERMINFO)
- find_library(COMPILER_RT_TERMINFO_LIB NAMES terminfo tinfo curses ncurses ncursesw ${MAYBE_REQUIRED})
-endif()
-if(COMPILER_RT_TERMINFO_LIB)
- set(LLVM_ENABLE_TERMINFO 1)
-else()
- set(LLVM_ENABLE_TERMINFO 0)
-endif()
-
-if (ANDROID AND COMPILER_RT_HAS_LIBDL)
- # Android's libstdc++ has a dependency on libdl.
- list(APPEND CMAKE_REQUIRED_LIBRARIES dl)
-endif()
-check_library_exists(c++ __cxa_throw "" COMPILER_RT_HAS_LIBCXX)
-check_library_exists(stdc++ __cxa_throw "" COMPILER_RT_HAS_LIBSTDCXX)
-
-# Linker flags.
-compiler_rt_check_linker_flag("-Wl,-z,text" COMPILER_RT_HAS_Z_TEXT)
-compiler_rt_check_linker_flag("-fuse-ld=lld" COMPILER_RT_HAS_FUSE_LD_LLD_FLAG)
-
-set(VERS_COMPAT_OPTION "-Wl,-z,gnu-version-script-compat")
-compiler_rt_check_linker_flag("${VERS_COMPAT_OPTION}" COMPILER_RT_HAS_GNU_VERSION_SCRIPT_COMPAT)
-
-set(DUMMY_VERS ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/dummy.vers)
-file(WRITE ${DUMMY_VERS} "{};")
-set(VERS_OPTION "-Wl,--version-script,${DUMMY_VERS}")
-if(COMPILER_RT_HAS_GNU_VERSION_SCRIPT_COMPAT)
- # Solaris 11.4 ld only supports --version-script with
- # -z gnu-version-script-compat.
- string(APPEND VERS_OPTION " ${VERS_COMPAT_OPTION}")
-endif()
-compiler_rt_check_linker_flag("${VERS_OPTION}" COMPILER_RT_HAS_VERSION_SCRIPT)
-
-if(ANDROID)
- compiler_rt_check_linker_flag("-Wl,-z,global" COMPILER_RT_HAS_Z_GLOBAL)
- check_library_exists(log __android_log_write "" COMPILER_RT_HAS_LIBLOG)
-endif()
-
-# Architectures.
-
-# List of all architectures we can target.
-set(COMPILER_RT_SUPPORTED_ARCH)
-
-# Try to compile a very simple source file to ensure we can target the given
-# platform. We use the results of these tests to build only the various target
-# runtime libraries supported by our current compilers cross-compiling
-# abilities.
-set(SIMPLE_SOURCE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/simple.cc)
-file(WRITE ${SIMPLE_SOURCE} "#include <stdlib.h>\n#include <stdio.h>\nint main() { printf(\"hello, world\"); }\n")
-
-# Detect whether the current target platform is 32-bit or 64-bit, and setup
-# the correct commandline flags needed to attempt to target 32-bit and 64-bit.
-if (NOT CMAKE_SIZEOF_VOID_P EQUAL 4 AND
- NOT CMAKE_SIZEOF_VOID_P EQUAL 8)
- message(FATAL_ERROR "Please use architecture with 4 or 8 byte pointers.")
-endif()
-
-test_targets()
-
-# Returns a list of architecture specific target cflags in @out_var list.
-function(get_target_flags_for_arch arch out_var)
- list(FIND COMPILER_RT_SUPPORTED_ARCH ${arch} ARCH_INDEX)
- if(ARCH_INDEX EQUAL -1)
- message(FATAL_ERROR "Unsupported architecture: ${arch}")
- else()
- if (NOT APPLE)
- set(${out_var} ${TARGET_${arch}_CFLAGS} PARENT_SCOPE)
- else()
- # This is only called in constructing cflags for tests executing on the
- # host. This will need to all be cleaned up to support building tests
- # for cross-targeted hardware (i.e. iOS).
- set(${out_var} -arch ${arch} PARENT_SCOPE)
- endif()
- endif()
-endfunction()
-
-# Returns a compiler and CFLAGS that should be used to run tests for the
-# specific architecture. When cross-compiling, this is controled via
-# COMPILER_RT_TEST_COMPILER and COMPILER_RT_TEST_COMPILER_CFLAGS.
-macro(get_test_cc_for_arch arch cc_out cflags_out)
- if(ANDROID OR ${arch} MATCHES "arm|aarch64|riscv32|riscv64")
- # This is only true if we are cross-compiling.
- # Build all tests with host compiler and use host tools.
- set(${cc_out} ${COMPILER_RT_TEST_COMPILER})
- set(${cflags_out} ${COMPILER_RT_TEST_COMPILER_CFLAGS})
- else()
- get_target_flags_for_arch(${arch} ${cflags_out})
- if(APPLE)
- list(APPEND ${cflags_out} ${DARWIN_osx_CFLAGS})
- endif()
- string(REPLACE ";" " " ${cflags_out} "${${cflags_out}}")
- endif()
-endmacro()
-
-# Returns CFLAGS that should be used to run tests for the
-# specific apple platform and architecture.
-function(get_test_cflags_for_apple_platform platform arch cflags_out)
- is_valid_apple_platform("${platform}" is_valid_platform)
- if (NOT is_valid_platform)
- message(FATAL_ERROR "\"${platform}\" is not a valid apple platform")
- endif()
- set(test_cflags "")
- get_target_flags_for_arch(${arch} test_cflags)
- list(APPEND test_cflags ${DARWIN_${platform}_CFLAGS})
- string(REPLACE ";" " " test_cflags_str "${test_cflags}")
- string(APPEND test_cflags_str "${COMPILER_RT_TEST_COMPILER_CFLAGS}")
- set(${cflags_out} "${test_cflags_str}" PARENT_SCOPE)
-endfunction()
-
-function(get_capitalized_apple_platform platform platform_capitalized)
- # TODO(dliew): Remove uses of this function. It exists to preserve needlessly complex
- # directory naming conventions used by the Sanitizer lit test suites.
- is_valid_apple_platform("${platform}" is_valid_platform)
- if (NOT is_valid_platform)
- message(FATAL_ERROR "\"${platform}\" is not a valid apple platform")
- endif()
- string(TOUPPER "${platform}" platform_upper)
- string(REGEX REPLACE "OSSIM$" "OSSim" platform_upper_capitalized "${platform_upper}")
- set(${platform_capitalized} "${platform_upper_capitalized}" PARENT_SCOPE)
-endfunction()
-
-function(is_valid_apple_platform platform is_valid_out)
- set(is_valid FALSE)
- if ("${platform}" STREQUAL "")
- message(FATAL_ERROR "platform cannot be empty")
- endif()
- if ("${platform}" MATCHES "^(osx|((ios|watchos|tvos)(sim)?))$")
- set(is_valid TRUE)
- endif()
- set(${is_valid_out} ${is_valid} PARENT_SCOPE)
-endfunction()
-
-set(ARM64 aarch64)
-set(ARM32 arm armhf)
-set(HEXAGON hexagon)
-set(X86 i386)
-set(X86_64 x86_64)
-set(MIPS32 mips mipsel)
-set(MIPS64 mips64 mips64el)
-set(PPC32 ppc powerpc)
-set(PPC64 ppc64 powerpc64 ppc64le powerpc64le)
-set(RISCV32 riscv32)
-set(RISCV64 riscv64)
-set(S390X s390x)
-set(SPARC sparc)
-set(SPARCV9 sparcv9)
-set(WASM32 wasm32)
-set(WASM64 wasm64)
-set(VE ve)
-
-if(APPLE)
- set(ARM64 arm64)
- set(ARM32 armv7 armv7s armv7k)
- set(X86_64 x86_64 x86_64h)
-endif()
-
-set(ALL_SANITIZER_COMMON_SUPPORTED_ARCH ${X86} ${X86_64} ${PPC64} ${RISCV64}
- ${ARM32} ${ARM64} ${MIPS32} ${MIPS64} ${S390X} ${SPARC} ${SPARCV9})
-set(ALL_ASAN_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64} ${RISCV64}
- ${MIPS32} ${MIPS64} ${PPC64} ${S390X} ${SPARC} ${SPARCV9})
-set(ALL_CRT_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64} ${RISCV32} ${RISCV64} ${VE})
-set(ALL_DFSAN_SUPPORTED_ARCH ${X86_64} ${MIPS64} ${ARM64})
-
-if(ANDROID)
- set(OS_NAME "Android")
-else()
- set(OS_NAME "${CMAKE_SYSTEM_NAME}")
-endif()
-
-if(OS_NAME MATCHES "Linux")
- set(ALL_FUZZER_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM64} ${S390X})
-elseif (OS_NAME MATCHES "Windows")
- set(ALL_FUZZER_SUPPORTED_ARCH ${X86} ${X86_64})
-elseif(OS_NAME MATCHES "Android")
- set(ALL_FUZZER_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64})
-else()
- set(ALL_FUZZER_SUPPORTED_ARCH ${X86_64} ${ARM64})
-endif()
-
-set(ALL_GWP_ASAN_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64})
-if(APPLE)
- set(ALL_LSAN_SUPPORTED_ARCH ${X86} ${X86_64} ${MIPS64} ${ARM64})
-else()
- set(ALL_LSAN_SUPPORTED_ARCH ${X86} ${X86_64} ${MIPS64} ${ARM64} ${ARM32} ${PPC64} ${S390X} ${RISCV64})
-endif()
-set(ALL_MSAN_SUPPORTED_ARCH ${X86_64} ${MIPS64} ${ARM64} ${PPC64} ${S390X})
-set(ALL_HWASAN_SUPPORTED_ARCH ${X86_64} ${ARM64})
-set(ALL_MEMPROF_SUPPORTED_ARCH ${X86_64})
-set(ALL_PROFILE_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64} ${PPC32} ${PPC64}
- ${MIPS32} ${MIPS64} ${S390X} ${SPARC} ${SPARCV9})
-set(ALL_TSAN_SUPPORTED_ARCH ${X86_64} ${MIPS64} ${ARM64} ${PPC64} ${S390X})
-set(ALL_UBSAN_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64} ${RISCV64}
- ${MIPS32} ${MIPS64} ${PPC64} ${S390X} ${SPARC} ${SPARCV9})
-set(ALL_SAFESTACK_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM64} ${MIPS32} ${MIPS64})
-set(ALL_CFI_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64} ${MIPS64})
-set(ALL_SCUDO_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64} ${MIPS32} ${MIPS64} ${PPC64})
-set(ALL_SCUDO_STANDALONE_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64} ${MIPS32} ${MIPS64} ${PPC64})
-if(APPLE)
-set(ALL_XRAY_SUPPORTED_ARCH ${X86_64})
-else()
-set(ALL_XRAY_SUPPORTED_ARCH ${X86_64} ${ARM32} ${ARM64} ${MIPS32} ${MIPS64} ppc64le powerpc64le)
-endif()
-set(ALL_SHADOWCALLSTACK_SUPPORTED_ARCH ${ARM64})
-
-if (UNIX)
-set(ALL_ORC_SUPPORTED_ARCH ${X86_64})
-endif()
-
-if(APPLE)
- include(CompilerRTDarwinUtils)
-
- find_darwin_sdk_dir(DARWIN_osx_SYSROOT macosx)
- find_darwin_sdk_dir(DARWIN_iossim_SYSROOT iphonesimulator)
- find_darwin_sdk_dir(DARWIN_ios_SYSROOT iphoneos)
- find_darwin_sdk_dir(DARWIN_watchossim_SYSROOT watchsimulator)
- find_darwin_sdk_dir(DARWIN_watchos_SYSROOT watchos)
- find_darwin_sdk_dir(DARWIN_tvossim_SYSROOT appletvsimulator)
- find_darwin_sdk_dir(DARWIN_tvos_SYSROOT appletvos)
-
- if(NOT DARWIN_osx_SYSROOT)
- message(WARNING "Could not determine OS X sysroot, trying /usr/include")
- if(EXISTS /usr/include)
- set(DARWIN_osx_SYSROOT /)
- else()
- message(ERROR "Could not detect OS X Sysroot. Either install Xcode or the Apple Command Line Tools")
- endif()
- endif()
-
- if(COMPILER_RT_ENABLE_IOS)
- list(APPEND DARWIN_EMBEDDED_PLATFORMS ios)
- set(DARWIN_ios_MIN_VER 9.0)
- set(DARWIN_ios_MIN_VER_FLAG -miphoneos-version-min)
- set(DARWIN_ios_SANITIZER_MIN_VER_FLAG
- ${DARWIN_ios_MIN_VER_FLAG}=${DARWIN_ios_MIN_VER})
- set(DARWIN_iossim_MIN_VER_FLAG -mios-simulator-version-min)
- set(DARWIN_iossim_SANITIZER_MIN_VER_FLAG
- ${DARWIN_iossim_MIN_VER_FLAG}=${DARWIN_ios_MIN_VER})
- endif()
- if(COMPILER_RT_ENABLE_WATCHOS)
- list(APPEND DARWIN_EMBEDDED_PLATFORMS watchos)
- set(DARWIN_watchos_MIN_VER 2.0)
- set(DARWIN_watchos_MIN_VER_FLAG -mwatchos-version-min)
- set(DARWIN_watchos_SANITIZER_MIN_VER_FLAG
- ${DARWIN_watchos_MIN_VER_FLAG}=${DARWIN_watchos_MIN_VER})
- set(DARWIN_watchossim_MIN_VER_FLAG -mwatchos-simulator-version-min)
- set(DARWIN_watchossim_SANITIZER_MIN_VER_FLAG
- ${DARWIN_watchossim_MIN_VER_FLAG}=${DARWIN_watchos_MIN_VER})
- endif()
- if(COMPILER_RT_ENABLE_TVOS)
- list(APPEND DARWIN_EMBEDDED_PLATFORMS tvos)
- set(DARWIN_tvos_MIN_VER 9.0)
- set(DARWIN_tvos_MIN_VER_FLAG -mtvos-version-min)
- set(DARWIN_tvos_SANITIZER_MIN_VER_FLAG
- ${DARWIN_tvos_MIN_VER_FLAG}=${DARWIN_tvos_MIN_VER})
- set(DARWIN_tvossim_MIN_VER_FLAG -mtvos-simulator-version-min)
- set(DARWIN_tvossim_SANITIZER_MIN_VER_FLAG
- ${DARWIN_tvossim_MIN_VER_FLAG}=${DARWIN_tvos_MIN_VER})
- endif()
-
- set(SANITIZER_COMMON_SUPPORTED_OS osx)
- set(PROFILE_SUPPORTED_OS osx)
- set(TSAN_SUPPORTED_OS osx)
- set(XRAY_SUPPORTED_OS osx)
- set(FUZZER_SUPPORTED_OS osx)
- set(ORC_SUPPORTED_OS osx)
-
- # Note: In order to target x86_64h on OS X the minimum deployment target must
- # be 10.8 or higher.
- set(DEFAULT_SANITIZER_MIN_OSX_VERSION 10.10)
- set(DARWIN_osx_MIN_VER_FLAG "-mmacosx-version-min")
- if(NOT SANITIZER_MIN_OSX_VERSION)
- string(REGEX MATCH "${DARWIN_osx_MIN_VER_FLAG}=([.0-9]+)"
- MACOSX_VERSION_MIN_FLAG "${CMAKE_CXX_FLAGS}")
- if(MACOSX_VERSION_MIN_FLAG)
- set(SANITIZER_MIN_OSX_VERSION "${CMAKE_MATCH_1}")
- elseif(CMAKE_OSX_DEPLOYMENT_TARGET)
- set(SANITIZER_MIN_OSX_VERSION ${CMAKE_OSX_DEPLOYMENT_TARGET})
- else()
- set(SANITIZER_MIN_OSX_VERSION ${DEFAULT_SANITIZER_MIN_OSX_VERSION})
- endif()
- if(SANITIZER_MIN_OSX_VERSION VERSION_LESS "10.7")
- message(FATAL_ERROR "macOS deployment target '${SANITIZER_MIN_OSX_VERSION}' is too old.")
- endif()
- if(SANITIZER_MIN_OSX_VERSION VERSION_GREATER ${DEFAULT_SANITIZER_MIN_OSX_VERSION})
- message(WARNING "macOS deployment target '${SANITIZER_MIN_OSX_VERSION}' is too new, setting to '${DEFAULT_SANITIZER_MIN_OSX_VERSION}' instead.")
- set(SANITIZER_MIN_OSX_VERSION ${DEFAULT_SANITIZER_MIN_OSX_VERSION})
- endif()
- endif()
-
- # We're setting the flag manually for each target OS
- set(CMAKE_OSX_DEPLOYMENT_TARGET "")
-
- set(DARWIN_COMMON_CFLAGS -stdlib=libc++)
- set(DARWIN_COMMON_LINK_FLAGS
- -stdlib=libc++
- -lc++
- -lc++abi)
-
- compiler_rt_check_linker_flag("-fapplication-extension" COMPILER_RT_HAS_APP_EXTENSION)
- if(COMPILER_RT_HAS_APP_EXTENSION)
- list(APPEND DARWIN_COMMON_LINK_FLAGS "-fapplication-extension")
- endif()
-
- set(DARWIN_osx_CFLAGS
- ${DARWIN_COMMON_CFLAGS}
- ${DARWIN_osx_MIN_VER_FLAG}=${SANITIZER_MIN_OSX_VERSION})
- set(DARWIN_osx_LINK_FLAGS
- ${DARWIN_COMMON_LINK_FLAGS}
- ${DARWIN_osx_MIN_VER_FLAG}=${SANITIZER_MIN_OSX_VERSION})
-
- if(DARWIN_osx_SYSROOT)
- list(APPEND DARWIN_osx_CFLAGS -isysroot ${DARWIN_osx_SYSROOT})
- list(APPEND DARWIN_osx_LINK_FLAGS -isysroot ${DARWIN_osx_SYSROOT})
- endif()
-
- # Figure out which arches to use for each OS
- darwin_get_toolchain_supported_archs(toolchain_arches)
- message(STATUS "Toolchain supported arches: ${toolchain_arches}")
-
- if(NOT MACOSX_VERSION_MIN_FLAG)
- darwin_test_archs(osx
- DARWIN_osx_ARCHS
- ${toolchain_arches})
- message(STATUS "OSX supported arches: ${DARWIN_osx_ARCHS}")
- foreach(arch ${DARWIN_osx_ARCHS})
- list(APPEND COMPILER_RT_SUPPORTED_ARCH ${arch})
- set(CAN_TARGET_${arch} 1)
- endforeach()
-
- foreach(platform ${DARWIN_EMBEDDED_PLATFORMS})
- if(DARWIN_${platform}sim_SYSROOT)
- set(DARWIN_${platform}sim_CFLAGS
- ${DARWIN_COMMON_CFLAGS}
- ${DARWIN_${platform}sim_SANITIZER_MIN_VER_FLAG}
- -isysroot ${DARWIN_${platform}sim_SYSROOT})
- set(DARWIN_${platform}sim_LINK_FLAGS
- ${DARWIN_COMMON_LINK_FLAGS}
- ${DARWIN_${platform}sim_SANITIZER_MIN_VER_FLAG}
- -isysroot ${DARWIN_${platform}sim_SYSROOT})
-
- set(DARWIN_${platform}sim_SKIP_CC_KEXT On)
- darwin_test_archs(${platform}sim
- DARWIN_${platform}sim_ARCHS
- ${toolchain_arches})
- message(STATUS "${platform} Simulator supported arches: ${DARWIN_${platform}sim_ARCHS}")
- if(DARWIN_${platform}sim_ARCHS)
- list(APPEND SANITIZER_COMMON_SUPPORTED_OS ${platform}sim)
- list(APPEND PROFILE_SUPPORTED_OS ${platform}sim)
- list(APPEND TSAN_SUPPORTED_OS ${platform}sim)
- list(APPEND FUZZER_SUPPORTED_OS ${platform}sim)
- endif()
- foreach(arch ${DARWIN_${platform}sim_ARCHS})
- list(APPEND COMPILER_RT_SUPPORTED_ARCH ${arch})
- set(CAN_TARGET_${arch} 1)
- endforeach()
- endif()
-
- if(DARWIN_${platform}_SYSROOT)
- set(DARWIN_${platform}_CFLAGS
- ${DARWIN_COMMON_CFLAGS}
- ${DARWIN_${platform}_SANITIZER_MIN_VER_FLAG}
- -isysroot ${DARWIN_${platform}_SYSROOT})
- set(DARWIN_${platform}_LINK_FLAGS
- ${DARWIN_COMMON_LINK_FLAGS}
- ${DARWIN_${platform}_SANITIZER_MIN_VER_FLAG}
- -isysroot ${DARWIN_${platform}_SYSROOT})
-
- darwin_test_archs(${platform}
- DARWIN_${platform}_ARCHS
- ${toolchain_arches})
- message(STATUS "${platform} supported arches: ${DARWIN_${platform}_ARCHS}")
- if(DARWIN_${platform}_ARCHS)
- list(APPEND SANITIZER_COMMON_SUPPORTED_OS ${platform})
- list(APPEND PROFILE_SUPPORTED_OS ${platform})
-
- list_intersect(DARWIN_${platform}_TSAN_ARCHS DARWIN_${platform}_ARCHS ALL_TSAN_SUPPORTED_ARCH)
- if(DARWIN_${platform}_TSAN_ARCHS)
- list(APPEND TSAN_SUPPORTED_OS ${platform})
- endif()
- list(APPEND FUZZER_SUPPORTED_OS ${platform})
- endif()
- foreach(arch ${DARWIN_${platform}_ARCHS})
- list(APPEND COMPILER_RT_SUPPORTED_ARCH ${arch})
- set(CAN_TARGET_${arch} 1)
- endforeach()
- endif()
- endforeach()
- endif()
-
- # Explictly disable unsupported Sanitizer configurations.
- list(REMOVE_ITEM FUZZER_SUPPORTED_OS "watchos")
- list(REMOVE_ITEM FUZZER_SUPPORTED_OS "watchossim")
-
- # for list_intersect
- include(CompilerRTUtils)
-
- list_intersect(SANITIZER_COMMON_SUPPORTED_ARCH
- ALL_SANITIZER_COMMON_SUPPORTED_ARCH
- COMPILER_RT_SUPPORTED_ARCH
- )
- set(LSAN_COMMON_SUPPORTED_ARCH ${SANITIZER_COMMON_SUPPORTED_ARCH})
- set(UBSAN_COMMON_SUPPORTED_ARCH ${SANITIZER_COMMON_SUPPORTED_ARCH})
- list_intersect(ASAN_SUPPORTED_ARCH
- ALL_ASAN_SUPPORTED_ARCH
- SANITIZER_COMMON_SUPPORTED_ARCH)
- list_intersect(DFSAN_SUPPORTED_ARCH
- ALL_DFSAN_SUPPORTED_ARCH
- SANITIZER_COMMON_SUPPORTED_ARCH)
- list_intersect(GWP_ASAN_SUPPORTED_ARCH
- ALL_GWP_ASAN_SUPPORTED_ARCH
- SANITIZER_COMMON_SUPPORTED_ARCH)
- list_intersect(LSAN_SUPPORTED_ARCH
- ALL_LSAN_SUPPORTED_ARCH
- SANITIZER_COMMON_SUPPORTED_ARCH)
- list_intersect(MSAN_SUPPORTED_ARCH
- ALL_MSAN_SUPPORTED_ARCH
- SANITIZER_COMMON_SUPPORTED_ARCH)
- list_intersect(HWASAN_SUPPORTED_ARCH
- ALL_HWASAN_SUPPORTED_ARCH
- SANITIZER_COMMON_SUPPORTED_ARCH)
- list_intersect(MEMPROF_SUPPORTED_ARCH
- ALL_MEMPROF_SUPPORTED_ARCH
- SANITIZER_COMMON_SUPPORTED_ARCH)
- list_intersect(PROFILE_SUPPORTED_ARCH
- ALL_PROFILE_SUPPORTED_ARCH
- SANITIZER_COMMON_SUPPORTED_ARCH)
- list_intersect(TSAN_SUPPORTED_ARCH
- ALL_TSAN_SUPPORTED_ARCH
- SANITIZER_COMMON_SUPPORTED_ARCH)
- list_intersect(UBSAN_SUPPORTED_ARCH
- ALL_UBSAN_SUPPORTED_ARCH
- SANITIZER_COMMON_SUPPORTED_ARCH)
- list_intersect(SAFESTACK_SUPPORTED_ARCH
- ALL_SAFESTACK_SUPPORTED_ARCH
- SANITIZER_COMMON_SUPPORTED_ARCH)
- list_intersect(CFI_SUPPORTED_ARCH
- ALL_CFI_SUPPORTED_ARCH
- SANITIZER_COMMON_SUPPORTED_ARCH)
- list_intersect(SCUDO_SUPPORTED_ARCH
- ALL_SCUDO_SUPPORTED_ARCH
- SANITIZER_COMMON_SUPPORTED_ARCH)
- list_intersect(SCUDO_STANDALONE_SUPPORTED_ARCH
- ALL_SCUDO_STANDALONE_SUPPORTED_ARCH
- SANITIZER_COMMON_SUPPORTED_ARCH)
- list_intersect(FUZZER_SUPPORTED_ARCH
- ALL_FUZZER_SUPPORTED_ARCH
- SANITIZER_COMMON_SUPPORTED_ARCH)
- list_intersect(XRAY_SUPPORTED_ARCH
- ALL_XRAY_SUPPORTED_ARCH
- SANITIZER_COMMON_SUPPORTED_ARCH)
- list_intersect(SHADOWCALLSTACK_SUPPORTED_ARCH
- ALL_SHADOWCALLSTACK_SUPPORTED_ARCH
- SANITIZER_COMMON_SUPPORTED_ARCH)
- list_intersect(ORC_SUPPORTED_ARCH
- ALL_ORC_SUPPORTED_ARCH
- SANITIZER_COMMON_SUPPORTED_ARCH)
-
-else()
- filter_available_targets(CRT_SUPPORTED_ARCH ${ALL_CRT_SUPPORTED_ARCH})
- # Architectures supported by compiler-rt libraries.
- filter_available_targets(SANITIZER_COMMON_SUPPORTED_ARCH
- ${ALL_SANITIZER_COMMON_SUPPORTED_ARCH})
- # LSan and UBSan common files should be available on all architectures
- # supported by other sanitizers (even if they build into dummy object files).
- filter_available_targets(LSAN_COMMON_SUPPORTED_ARCH
- ${SANITIZER_COMMON_SUPPORTED_ARCH})
- filter_available_targets(UBSAN_COMMON_SUPPORTED_ARCH
- ${SANITIZER_COMMON_SUPPORTED_ARCH})
- filter_available_targets(ASAN_SUPPORTED_ARCH ${ALL_ASAN_SUPPORTED_ARCH})
- filter_available_targets(FUZZER_SUPPORTED_ARCH ${ALL_FUZZER_SUPPORTED_ARCH})
- filter_available_targets(DFSAN_SUPPORTED_ARCH ${ALL_DFSAN_SUPPORTED_ARCH})
- filter_available_targets(LSAN_SUPPORTED_ARCH ${ALL_LSAN_SUPPORTED_ARCH})
- filter_available_targets(MSAN_SUPPORTED_ARCH ${ALL_MSAN_SUPPORTED_ARCH})
- filter_available_targets(HWASAN_SUPPORTED_ARCH ${ALL_HWASAN_SUPPORTED_ARCH})
- filter_available_targets(MEMPROF_SUPPORTED_ARCH ${ALL_MEMPROF_SUPPORTED_ARCH})
- filter_available_targets(PROFILE_SUPPORTED_ARCH ${ALL_PROFILE_SUPPORTED_ARCH})
- filter_available_targets(TSAN_SUPPORTED_ARCH ${ALL_TSAN_SUPPORTED_ARCH})
- filter_available_targets(UBSAN_SUPPORTED_ARCH ${ALL_UBSAN_SUPPORTED_ARCH})
- filter_available_targets(SAFESTACK_SUPPORTED_ARCH
- ${ALL_SAFESTACK_SUPPORTED_ARCH})
- filter_available_targets(CFI_SUPPORTED_ARCH ${ALL_CFI_SUPPORTED_ARCH})
- filter_available_targets(SCUDO_SUPPORTED_ARCH ${ALL_SCUDO_SUPPORTED_ARCH})
- filter_available_targets(SCUDO_STANDALONE_SUPPORTED_ARCH ${ALL_SCUDO_STANDALONE_SUPPORTED_ARCH})
- filter_available_targets(XRAY_SUPPORTED_ARCH ${ALL_XRAY_SUPPORTED_ARCH})
- filter_available_targets(SHADOWCALLSTACK_SUPPORTED_ARCH
- ${ALL_SHADOWCALLSTACK_SUPPORTED_ARCH})
- filter_available_targets(GWP_ASAN_SUPPORTED_ARCH ${ALL_GWP_ASAN_SUPPORTED_ARCH})
- filter_available_targets(ORC_SUPPORTED_ARCH ${ALL_ORC_SUPPORTED_ARCH})
-endif()
-
-if (MSVC)
- # See if the DIA SDK is available and usable.
- set(MSVC_DIA_SDK_DIR "$ENV{VSINSTALLDIR}DIA SDK")
- if (IS_DIRECTORY ${MSVC_DIA_SDK_DIR})
- set(CAN_SYMBOLIZE 1)
- else()
- set(CAN_SYMBOLIZE 0)
- endif()
-else()
- set(CAN_SYMBOLIZE 1)
-endif()
-
-find_program(GNU_LD_EXECUTABLE NAMES ${LLVM_DEFAULT_TARGET_TRIPLE}-ld.bfd ld.bfd DOC "GNU ld")
-find_program(GOLD_EXECUTABLE NAMES ${LLVM_DEFAULT_TARGET_TRIPLE}-ld.gold ld.gold DOC "GNU gold")
-
-if(COMPILER_RT_SUPPORTED_ARCH)
- list(REMOVE_DUPLICATES COMPILER_RT_SUPPORTED_ARCH)
-endif()
-message(STATUS "Compiler-RT supported architectures: ${COMPILER_RT_SUPPORTED_ARCH}")
-
-set(ALL_SANITIZERS asan;dfsan;msan;hwasan;tsan;safestack;cfi;scudo;ubsan_minimal;gwp_asan)
-set(COMPILER_RT_SANITIZERS_TO_BUILD all CACHE STRING
- "sanitizers to build if supported on the target (all;${ALL_SANITIZERS})")
-list_replace(COMPILER_RT_SANITIZERS_TO_BUILD all "${ALL_SANITIZERS}")
-
-if (SANITIZER_COMMON_SUPPORTED_ARCH AND NOT LLVM_USE_SANITIZER AND
- (OS_NAME MATCHES "Android|Darwin|Linux|FreeBSD|NetBSD|Fuchsia|SunOS" OR
- (OS_NAME MATCHES "Windows" AND NOT CYGWIN AND
- (NOT MINGW OR CMAKE_CXX_COMPILER_ID MATCHES "Clang"))))
- set(COMPILER_RT_HAS_SANITIZER_COMMON TRUE)
-else()
- set(COMPILER_RT_HAS_SANITIZER_COMMON FALSE)
-endif()
-
-if (COMPILER_RT_HAS_SANITIZER_COMMON)
- set(COMPILER_RT_HAS_INTERCEPTION TRUE)
-else()
- set(COMPILER_RT_HAS_INTERCEPTION FALSE)
-endif()
-
-if (COMPILER_RT_HAS_SANITIZER_COMMON AND ASAN_SUPPORTED_ARCH)
- set(COMPILER_RT_HAS_ASAN TRUE)
-else()
- set(COMPILER_RT_HAS_ASAN FALSE)
-endif()
-
-if (OS_NAME MATCHES "Linux|FreeBSD|Windows|NetBSD|SunOS")
- set(COMPILER_RT_ASAN_HAS_STATIC_RUNTIME TRUE)
-else()
- set(COMPILER_RT_ASAN_HAS_STATIC_RUNTIME FALSE)
-endif()
-
-# TODO: Add builtins support.
-
-if (CRT_SUPPORTED_ARCH AND OS_NAME MATCHES "Linux" AND NOT LLVM_USE_SANITIZER)
- set(COMPILER_RT_HAS_CRT TRUE)
-else()
- set(COMPILER_RT_HAS_CRT FALSE)
-endif()
-
-if (COMPILER_RT_HAS_SANITIZER_COMMON AND DFSAN_SUPPORTED_ARCH AND
- OS_NAME MATCHES "Linux")
- set(COMPILER_RT_HAS_DFSAN TRUE)
-else()
- set(COMPILER_RT_HAS_DFSAN FALSE)
-endif()
-
-if (COMPILER_RT_HAS_SANITIZER_COMMON AND LSAN_SUPPORTED_ARCH AND
- OS_NAME MATCHES "Android|Darwin|Linux|NetBSD|Fuchsia")
- set(COMPILER_RT_HAS_LSAN TRUE)
-else()
- set(COMPILER_RT_HAS_LSAN FALSE)
-endif()
-
-if (COMPILER_RT_HAS_SANITIZER_COMMON AND MSAN_SUPPORTED_ARCH AND
- OS_NAME MATCHES "Linux|FreeBSD|NetBSD")
- set(COMPILER_RT_HAS_MSAN TRUE)
-else()
- set(COMPILER_RT_HAS_MSAN FALSE)
-endif()
-
-if (COMPILER_RT_HAS_SANITIZER_COMMON AND HWASAN_SUPPORTED_ARCH AND
- OS_NAME MATCHES "Linux|Android")
- set(COMPILER_RT_HAS_HWASAN TRUE)
-else()
- set(COMPILER_RT_HAS_HWASAN FALSE)
-endif()
-
-if (COMPILER_RT_HAS_SANITIZER_COMMON AND MEMPROF_SUPPORTED_ARCH AND
- OS_NAME MATCHES "Linux")
- set(COMPILER_RT_HAS_MEMPROF TRUE)
-else()
- set(COMPILER_RT_HAS_MEMPROF FALSE)
-endif()
-
-if (PROFILE_SUPPORTED_ARCH AND NOT LLVM_USE_SANITIZER AND
- OS_NAME MATCHES "Darwin|Linux|FreeBSD|Windows|Android|Fuchsia|SunOS|NetBSD|AIX")
- set(COMPILER_RT_HAS_PROFILE TRUE)
-else()
- set(COMPILER_RT_HAS_PROFILE FALSE)
-endif()
-
-if (COMPILER_RT_HAS_SANITIZER_COMMON AND TSAN_SUPPORTED_ARCH AND
- OS_NAME MATCHES "Darwin|Linux|FreeBSD|Android|NetBSD")
- set(COMPILER_RT_HAS_TSAN TRUE)
-else()
- set(COMPILER_RT_HAS_TSAN FALSE)
-endif()
-
-if (COMPILER_RT_HAS_SANITIZER_COMMON AND UBSAN_SUPPORTED_ARCH AND
- OS_NAME MATCHES "Darwin|Linux|FreeBSD|NetBSD|Windows|Android|Fuchsia|SunOS")
- set(COMPILER_RT_HAS_UBSAN TRUE)
-else()
- set(COMPILER_RT_HAS_UBSAN FALSE)
-endif()
-
-if (COMPILER_RT_HAS_SANITIZER_COMMON AND UBSAN_SUPPORTED_ARCH AND
- OS_NAME MATCHES "Linux|FreeBSD|NetBSD|Android|Darwin")
- set(COMPILER_RT_HAS_UBSAN_MINIMAL TRUE)
-else()
- set(COMPILER_RT_HAS_UBSAN_MINIMAL FALSE)
-endif()
-
-if (COMPILER_RT_HAS_SANITIZER_COMMON AND SAFESTACK_SUPPORTED_ARCH AND
- OS_NAME MATCHES "Linux|FreeBSD|NetBSD")
- set(COMPILER_RT_HAS_SAFESTACK TRUE)
-else()
- set(COMPILER_RT_HAS_SAFESTACK FALSE)
-endif()
-
-if (COMPILER_RT_HAS_SANITIZER_COMMON AND CFI_SUPPORTED_ARCH)
- set(COMPILER_RT_HAS_CFI TRUE)
-else()
- set(COMPILER_RT_HAS_CFI FALSE)
-endif()
-
-#TODO(kostyak): add back Android & Fuchsia when the code settles a bit.
-if (SCUDO_STANDALONE_SUPPORTED_ARCH AND OS_NAME MATCHES "Linux" AND
- COMPILER_RT_HAS_AUXV)
- set(COMPILER_RT_HAS_SCUDO_STANDALONE TRUE)
-else()
- set(COMPILER_RT_HAS_SCUDO_STANDALONE FALSE)
-endif()
-
-if (COMPILER_RT_HAS_SANITIZER_COMMON AND SCUDO_SUPPORTED_ARCH AND
- OS_NAME MATCHES "Linux|Android|Fuchsia")
- set(COMPILER_RT_HAS_SCUDO TRUE)
-else()
- set(COMPILER_RT_HAS_SCUDO FALSE)
-endif()
-
-if (COMPILER_RT_HAS_SANITIZER_COMMON AND XRAY_SUPPORTED_ARCH AND
- OS_NAME MATCHES "Darwin|Linux|FreeBSD|NetBSD|Fuchsia")
- set(COMPILER_RT_HAS_XRAY TRUE)
-else()
- set(COMPILER_RT_HAS_XRAY FALSE)
-endif()
-
-if (ORC_SUPPORTED_ARCH)
- set(COMPILER_RT_HAS_ORC TRUE)
-else()
- set(COMPILER_RT_HAS_ORC FALSE)
-endif()
-
-if (COMPILER_RT_HAS_SANITIZER_COMMON AND FUZZER_SUPPORTED_ARCH AND
- OS_NAME MATCHES "Android|Darwin|Linux|NetBSD|FreeBSD|Fuchsia|Windows")
- set(COMPILER_RT_HAS_FUZZER TRUE)
-else()
- set(COMPILER_RT_HAS_FUZZER FALSE)
-endif()
-
-if (COMPILER_RT_HAS_SANITIZER_COMMON AND SHADOWCALLSTACK_SUPPORTED_ARCH AND
- OS_NAME MATCHES "Linux|Android")
- set(COMPILER_RT_HAS_SHADOWCALLSTACK TRUE)
-else()
- set(COMPILER_RT_HAS_SHADOWCALLSTACK FALSE)
-endif()
-
-# Note: Fuchsia and Windows are not currently supported by GWP-ASan. Support
-# is planned for these platforms. Darwin is also not supported due to TLS
-# calling malloc on first use.
-# TODO(hctim): Enable this on Android again. Looks like it's causing a SIGSEGV
-# for Scudo and GWP-ASan, further testing needed.
-if (COMPILER_RT_HAS_SANITIZER_COMMON AND GWP_ASAN_SUPPORTED_ARCH AND
- OS_NAME MATCHES "Linux")
- set(COMPILER_RT_HAS_GWP_ASAN TRUE)
-else()
- set(COMPILER_RT_HAS_GWP_ASAN FALSE)
-endif()
-pythonize_bool(COMPILER_RT_HAS_GWP_ASAN)
Index: create-13.0.0-compiler-rt-synonyms-patch/llvm-13.0.0-new/compiler-rt/cmake/builtin-config-ix.cmake
===================================================================
--- create-13.0.0-compiler-rt-synonyms-patch/llvm-13.0.0-new/compiler-rt/cmake/builtin-config-ix.cmake (revision 39)
+++ create-13.0.0-compiler-rt-synonyms-patch/llvm-13.0.0-new/compiler-rt/cmake/builtin-config-ix.cmake (nonexistent)
@@ -1,209 +0,0 @@
-include(BuiltinTests)
-include(CheckCSourceCompiles)
-
-# Make all the tests only check the compiler
-set(TEST_COMPILE_ONLY On)
-
-# Check host compiler support for certain flags
-builtin_check_c_compiler_flag(-fPIC COMPILER_RT_HAS_FPIC_FLAG)
-builtin_check_c_compiler_flag(-fPIE COMPILER_RT_HAS_FPIE_FLAG)
-builtin_check_c_compiler_flag(-fno-builtin COMPILER_RT_HAS_FNO_BUILTIN_FLAG)
-builtin_check_c_compiler_flag(-std=c11 COMPILER_RT_HAS_STD_C11_FLAG)
-builtin_check_c_compiler_flag(-fvisibility=hidden COMPILER_RT_HAS_VISIBILITY_HIDDEN_FLAG)
-builtin_check_c_compiler_flag(-ffreestanding COMPILER_RT_HAS_FREESTANDING_FLAG)
-builtin_check_c_compiler_flag(-fxray-instrument COMPILER_RT_HAS_XRAY_COMPILER_FLAG)
-
-builtin_check_c_compiler_source(COMPILER_RT_HAS_ATOMIC_KEYWORD
-"
-int foo(int x, int y) {
- _Atomic int result = x * y;
- return result;
-}
-")
-
-builtin_check_c_compiler_source(COMPILER_RT_HAS_FLOAT16
-"
-_Float16 foo(_Float16 x) {
- return x;
-}
-"
-)
-
-builtin_check_c_compiler_source(COMPILER_RT_HAS_ASM_LSE
-"
-asm(\".arch armv8-a+lse\");
-asm(\"cas w0, w1, [x2]\");
-")
-
-set(ARM64 aarch64)
-set(ARM32 arm armhf armv6m armv7m armv7em armv7 armv7s armv7k armv8m.main armv8.1m.main)
-set(HEXAGON hexagon)
-set(X86 i386)
-set(X86_64 x86_64)
-set(MIPS32 mips mipsel)
-set(MIPS64 mips64 mips64el)
-set(PPC32 ppc powerpc)
-set(PPC64 ppc64 powerpc64 ppc64le powerpc64le)
-set(RISCV32 riscv32)
-set(RISCV64 riscv64)
-set(SPARC sparc)
-set(SPARCV9 sparcv9)
-set(WASM32 wasm32)
-set(WASM64 wasm64)
-set(VE ve)
-
-if(APPLE)
- set(ARM64 arm64 arm64e)
- set(ARM32 armv7 armv7k armv7s)
- set(X86_64 x86_64 x86_64h)
-endif()
-
-set(ALL_BUILTIN_SUPPORTED_ARCH
- ${X86} ${X86_64} ${ARM32} ${ARM64}
- ${HEXAGON} ${MIPS32} ${MIPS64} ${PPC32} ${PPC64}
- ${RISCV32} ${RISCV64} ${SPARC} ${SPARCV9}
- ${WASM32} ${WASM64} ${VE})
-
-include(CompilerRTUtils)
-include(CompilerRTDarwinUtils)
-
-if(APPLE)
-
- find_darwin_sdk_dir(DARWIN_osx_SYSROOT macosx)
- find_darwin_sdk_dir(DARWIN_iossim_SYSROOT iphonesimulator)
- find_darwin_sdk_dir(DARWIN_ios_SYSROOT iphoneos)
- find_darwin_sdk_dir(DARWIN_watchossim_SYSROOT watchsimulator)
- find_darwin_sdk_dir(DARWIN_watchos_SYSROOT watchos)
- find_darwin_sdk_dir(DARWIN_tvossim_SYSROOT appletvsimulator)
- find_darwin_sdk_dir(DARWIN_tvos_SYSROOT appletvos)
-
- # Get supported architecture from SDKSettings.
- function(sdk_has_arch_support sdk_path os arch has_support)
- execute_process(COMMAND
- /usr/libexec/PlistBuddy -c "Print :SupportedTargets:${os}:Archs" ${sdk_path}/SDKSettings.plist
- OUTPUT_VARIABLE SDK_SUPPORTED_ARCHS
- RESULT_VARIABLE PLIST_ERROR)
- if (PLIST_ERROR EQUAL 0 AND
- SDK_SUPPORTED_ARCHS MATCHES " ${arch}\n")
- message(STATUS "Found ${arch} support in ${sdk_path}/SDKSettings.plist")
- set("${has_support}" On PARENT_SCOPE)
- else()
- message(STATUS "No ${arch} support in ${sdk_path}/SDKSettings.plist")
- set("${has_support}" Off PARENT_SCOPE)
- endif()
- endfunction()
-
- set(DARWIN_EMBEDDED_PLATFORMS)
- set(DARWIN_osx_BUILTIN_MIN_VER 10.5)
- set(DARWIN_osx_BUILTIN_MIN_VER_FLAG
- -mmacosx-version-min=${DARWIN_osx_BUILTIN_MIN_VER})
- set(DARWIN_osx_BUILTIN_ALL_POSSIBLE_ARCHS ${X86} ${X86_64})
- # Add support for arm64 macOS if available in SDK.
- foreach(arch ${ARM64})
- sdk_has_arch_support(${DARWIN_osx_SYSROOT} macosx ${arch} MACOS_ARM_SUPPORT)
- if (MACOS_ARM_SUPPORT)
- list(APPEND DARWIN_osx_BUILTIN_ALL_POSSIBLE_ARCHS ${arch})
- endif()
- endforeach(arch)
-
- if(COMPILER_RT_ENABLE_IOS)
- list(APPEND DARWIN_EMBEDDED_PLATFORMS ios)
- set(DARWIN_ios_MIN_VER_FLAG -miphoneos-version-min)
- set(DARWIN_ios_BUILTIN_MIN_VER 6.0)
- set(DARWIN_ios_BUILTIN_MIN_VER_FLAG
- ${DARWIN_ios_MIN_VER_FLAG}=${DARWIN_ios_BUILTIN_MIN_VER})
- set(DARWIN_ios_BUILTIN_ALL_POSSIBLE_ARCHS ${ARM64} ${ARM32})
- set(DARWIN_iossim_BUILTIN_ALL_POSSIBLE_ARCHS ${X86} ${X86_64})
- endif()
- if(COMPILER_RT_ENABLE_WATCHOS)
- list(APPEND DARWIN_EMBEDDED_PLATFORMS watchos)
- set(DARWIN_watchos_MIN_VER_FLAG -mwatchos-version-min)
- set(DARWIN_watchos_BUILTIN_MIN_VER 2.0)
- set(DARWIN_watchos_BUILTIN_MIN_VER_FLAG
- ${DARWIN_watchos_MIN_VER_FLAG}=${DARWIN_watchos_BUILTIN_MIN_VER})
- set(DARWIN_watchos_BUILTIN_ALL_POSSIBLE_ARCHS armv7 armv7k arm64_32)
- set(DARWIN_watchossim_BUILTIN_ALL_POSSIBLE_ARCHS ${X86})
- endif()
- if(COMPILER_RT_ENABLE_TVOS)
- list(APPEND DARWIN_EMBEDDED_PLATFORMS tvos)
- set(DARWIN_tvos_MIN_VER_FLAG -mtvos-version-min)
- set(DARWIN_tvos_BUILTIN_MIN_VER 9.0)
- set(DARWIN_tvos_BUILTIN_MIN_VER_FLAG
- ${DARWIN_tvos_MIN_VER_FLAG}=${DARWIN_tvos_BUILTIN_MIN_VER})
- set(DARWIN_tvos_BUILTIN_ALL_POSSIBLE_ARCHS armv7 arm64)
- set(DARWIN_tvossim_BUILTIN_ALL_POSSIBLE_ARCHS ${X86} ${X86_64})
- endif()
-
- set(BUILTIN_SUPPORTED_OS osx)
-
- # We're setting the flag manually for each target OS
- set(CMAKE_OSX_DEPLOYMENT_TARGET "")
-
- # NOTE: We deliberately avoid using `DARWIN_<os>_ARCHS` here because that is
- # used by `config-ix.cmake` in the context of building the rest of
- # compiler-rt where the global `${TEST_COMPILE_ONLY}` (used by
- # `darwin_test_archs()`) has a different value.
- darwin_test_archs(osx
- DARWIN_osx_BUILTIN_ARCHS
- ${DARWIN_osx_BUILTIN_ALL_POSSIBLE_ARCHS}
- )
- message(STATUS "OSX supported builtin arches: ${DARWIN_osx_BUILTIN_ARCHS}")
- foreach(arch ${DARWIN_osx_BUILTIN_ARCHS})
- list(APPEND COMPILER_RT_SUPPORTED_ARCH ${arch})
- set(CAN_TARGET_${arch} 1)
- endforeach()
-
- foreach(platform ${DARWIN_EMBEDDED_PLATFORMS})
- if(DARWIN_${platform}sim_SYSROOT)
- set(DARWIN_${platform}sim_BUILTIN_MIN_VER
- ${DARWIN_${platform}_BUILTIN_MIN_VER})
- set(DARWIN_${platform}sim_BUILTIN_MIN_VER_FLAG
- ${DARWIN_${platform}_BUILTIN_MIN_VER_FLAG})
-
- set(DARWIN_${platform}sim_SKIP_CC_KEXT On)
-
- darwin_test_archs(${platform}sim
- DARWIN_${platform}sim_BUILTIN_ARCHS
- ${DARWIN_${platform}sim_BUILTIN_ALL_POSSIBLE_ARCHS}
- )
- message(STATUS "${platform} Simulator supported builtin arches: ${DARWIN_${platform}sim_BUILTIN_ARCHS}")
- if(DARWIN_${platform}sim_BUILTIN_ARCHS)
- list(APPEND BUILTIN_SUPPORTED_OS ${platform}sim)
- endif()
- foreach(arch ${DARWIN_${platform}sim_BUILTIN_ARCHS})
- list(APPEND COMPILER_RT_SUPPORTED_ARCH ${arch})
- set(CAN_TARGET_${arch} 1)
- endforeach()
- endif()
-
- if(DARWIN_${platform}_SYSROOT)
- darwin_test_archs(${platform}
- DARWIN_${platform}_BUILTIN_ARCHS
- ${DARWIN_${platform}_BUILTIN_ALL_POSSIBLE_ARCHS}
- )
- message(STATUS "${platform} supported builtin arches: ${DARWIN_${platform}_BUILTIN_ARCHS}")
- if(DARWIN_${platform}_BUILTIN_ARCHS)
- list(APPEND BUILTIN_SUPPORTED_OS ${platform})
- endif()
- foreach(arch ${DARWIN_${platform}_BUILTIN_ARCHS})
- list(APPEND COMPILER_RT_SUPPORTED_ARCH ${arch})
- set(CAN_TARGET_${arch} 1)
- endforeach()
- endif()
- endforeach()
-
- list_intersect(BUILTIN_SUPPORTED_ARCH ALL_BUILTIN_SUPPORTED_ARCH COMPILER_RT_SUPPORTED_ARCH)
-
-else()
- # If we're not building the builtins standalone, just rely on the tests in
- # config-ix.cmake to tell us what to build. Otherwise we need to do some leg
- # work here...
- if(COMPILER_RT_BUILTINS_STANDALONE_BUILD)
- test_targets()
- endif()
- # Architectures supported by compiler-rt libraries.
- filter_available_targets(BUILTIN_SUPPORTED_ARCH
- ${ALL_BUILTIN_SUPPORTED_ARCH})
-endif()
-
-message(STATUS "Builtin supported architectures: ${BUILTIN_SUPPORTED_ARCH}")
Index: create-13.0.0-compiler-rt-synonyms-patch/llvm-13.0.0-new/compiler-rt/cmake
===================================================================
--- create-13.0.0-compiler-rt-synonyms-patch/llvm-13.0.0-new/compiler-rt/cmake (revision 39)
+++ create-13.0.0-compiler-rt-synonyms-patch/llvm-13.0.0-new/compiler-rt/cmake (nonexistent)
Property changes on: create-13.0.0-compiler-rt-synonyms-patch/llvm-13.0.0-new/compiler-rt/cmake
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-compiler-rt-synonyms-patch/llvm-13.0.0-new/compiler-rt
===================================================================
--- create-13.0.0-compiler-rt-synonyms-patch/llvm-13.0.0-new/compiler-rt (revision 39)
+++ create-13.0.0-compiler-rt-synonyms-patch/llvm-13.0.0-new/compiler-rt (nonexistent)
Property changes on: create-13.0.0-compiler-rt-synonyms-patch/llvm-13.0.0-new/compiler-rt
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-compiler-rt-synonyms-patch/llvm-13.0.0-new
===================================================================
--- create-13.0.0-compiler-rt-synonyms-patch/llvm-13.0.0-new (revision 39)
+++ create-13.0.0-compiler-rt-synonyms-patch/llvm-13.0.0-new (nonexistent)
Property changes on: create-13.0.0-compiler-rt-synonyms-patch/llvm-13.0.0-new
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-compiler-rt-synonyms-patch
===================================================================
--- create-13.0.0-compiler-rt-synonyms-patch (revision 39)
+++ create-13.0.0-compiler-rt-synonyms-patch (nonexistent)
Property changes on: create-13.0.0-compiler-rt-synonyms-patch
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-lldb-lua-version-patch/file.list
===================================================================
--- create-15.0.4-lldb-lua-version-patch/file.list (revision 39)
+++ create-15.0.4-lldb-lua-version-patch/file.list (nonexistent)
@@ -1 +0,0 @@
-llvm-15.0.4/lldb/cmake/modules/FindLuaAndSwig.cmake
Index: create-15.0.4-lldb-lua-version-patch/llvm-15.0.4-new/lldb/cmake/modules/FindLuaAndSwig.cmake
===================================================================
--- create-15.0.4-lldb-lua-version-patch/llvm-15.0.4-new/lldb/cmake/modules/FindLuaAndSwig.cmake (revision 39)
+++ create-15.0.4-lldb-lua-version-patch/llvm-15.0.4-new/lldb/cmake/modules/FindLuaAndSwig.cmake (nonexistent)
@@ -1,31 +0,0 @@
-#.rst:
-# FindLuaAndSwig
-# --------------
-#
-# Find Lua and SWIG as a whole.
-
-if(LUA_LIBRARIES AND LUA_INCLUDE_DIR AND SWIG_EXECUTABLE)
- set(LUAANDSWIG_FOUND TRUE)
-else()
- find_package(SWIG 3.0)
- if (SWIG_FOUND)
- find_package(Lua 5.3)
- if(LUA_FOUND AND SWIG_FOUND)
- mark_as_advanced(
- LUA_LIBRARIES
- LUA_INCLUDE_DIR
- SWIG_EXECUTABLE)
- endif()
- else()
- message(STATUS "SWIG 3 or later is required for Lua support in LLDB but could not be found")
- endif()
-
- include(FindPackageHandleStandardArgs)
- find_package_handle_standard_args(LuaAndSwig
- FOUND_VAR
- LUAANDSWIG_FOUND
- REQUIRED_VARS
- LUA_LIBRARIES
- LUA_INCLUDE_DIR
- SWIG_EXECUTABLE)
-endif()
Index: create-15.0.4-lldb-lua-version-patch/llvm-15.0.4-new/lldb/cmake/modules
===================================================================
--- create-15.0.4-lldb-lua-version-patch/llvm-15.0.4-new/lldb/cmake/modules (revision 39)
+++ create-15.0.4-lldb-lua-version-patch/llvm-15.0.4-new/lldb/cmake/modules (nonexistent)
Property changes on: create-15.0.4-lldb-lua-version-patch/llvm-15.0.4-new/lldb/cmake/modules
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-lldb-lua-version-patch/llvm-15.0.4-new/lldb/cmake
===================================================================
--- create-15.0.4-lldb-lua-version-patch/llvm-15.0.4-new/lldb/cmake (revision 39)
+++ create-15.0.4-lldb-lua-version-patch/llvm-15.0.4-new/lldb/cmake (nonexistent)
Property changes on: create-15.0.4-lldb-lua-version-patch/llvm-15.0.4-new/lldb/cmake
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-lldb-lua-version-patch/llvm-15.0.4-new/lldb
===================================================================
--- create-15.0.4-lldb-lua-version-patch/llvm-15.0.4-new/lldb (revision 39)
+++ create-15.0.4-lldb-lua-version-patch/llvm-15.0.4-new/lldb (nonexistent)
Property changes on: create-15.0.4-lldb-lua-version-patch/llvm-15.0.4-new/lldb
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-lldb-lua-version-patch/llvm-15.0.4-new
===================================================================
--- create-15.0.4-lldb-lua-version-patch/llvm-15.0.4-new (revision 39)
+++ create-15.0.4-lldb-lua-version-patch/llvm-15.0.4-new (nonexistent)
Property changes on: create-15.0.4-lldb-lua-version-patch/llvm-15.0.4-new
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-lldb-lua-version-patch/create.patch.sh
===================================================================
--- create-15.0.4-lldb-lua-version-patch/create.patch.sh (revision 39)
+++ create-15.0.4-lldb-lua-version-patch/create.patch.sh (nonexistent)
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-VERSION=15.0.4
-
-tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
-mv llvm-$VERSION llvm-$VERSION-orig
-
-cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
-
-diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-lldb-lua-version.patch
-
-mv llvm-$VERSION-lldb-lua-version.patch ../patches
-
-rm -rf ./llvm-$VERSION
-rm -rf ./llvm-$VERSION-orig
Property changes on: create-15.0.4-lldb-lua-version-patch/create.patch.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: create-15.0.4-lldb-lua-version-patch
===================================================================
--- create-15.0.4-lldb-lua-version-patch (revision 39)
+++ create-15.0.4-lldb-lua-version-patch (nonexistent)
Property changes on: create-15.0.4-lldb-lua-version-patch
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-lldb-set-revision-patch/file.list
===================================================================
--- create-13.0.0-lldb-set-revision-patch/file.list (revision 39)
+++ create-13.0.0-lldb-set-revision-patch/file.list (nonexistent)
@@ -1 +0,0 @@
-llvm-13.0.0/lldb/source/lldb.cpp
Index: create-13.0.0-lldb-set-revision-patch/create.patch.sh
===================================================================
--- create-13.0.0-lldb-set-revision-patch/create.patch.sh (revision 39)
+++ create-13.0.0-lldb-set-revision-patch/create.patch.sh (nonexistent)
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-VERSION=13.0.0
-
-tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
-mv llvm-$VERSION llvm-$VERSION-orig
-
-cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
-
-diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-lldb-set-revision.patch
-
-mv llvm-$VERSION-lldb-set-revision.patch ../patches
-
-rm -rf ./llvm-$VERSION
-rm -rf ./llvm-$VERSION-orig
Property changes on: create-13.0.0-lldb-set-revision-patch/create.patch.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: create-13.0.0-lldb-set-revision-patch/llvm-13.0.0-new/lldb/source/lldb.cpp
===================================================================
--- create-13.0.0-lldb-set-revision-patch/llvm-13.0.0-new/lldb/source/lldb.cpp (revision 39)
+++ create-13.0.0-lldb-set-revision-patch/llvm-13.0.0-new/lldb/source/lldb.cpp (nonexistent)
@@ -1,69 +0,0 @@
-//===-- lldb.cpp ----------------------------------------------------------===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-
-#include "VCSVersion.inc"
-#include "lldb/lldb-private.h"
-#include "clang/Basic/Version.h"
-
-using namespace lldb;
-using namespace lldb_private;
-
-// LLDB_VERSION_STRING is set through a define so unlike the other defines
-// expanded with CMake, it lacks the double quotes.
-#define QUOTE(str) #str
-#define EXPAND_AND_QUOTE(str) QUOTE(str)
-
-static const char *GetLLDBVersion() {
-#ifdef LLDB_VERSION_STRING
- return EXPAND_AND_QUOTE(LLDB_VERSION_STRING);
-#else
- return "lldb version " CLANG_VERSION_STRING;
-#endif
-}
-
-static const char *GetLLDBRevision() {
- return NULL;
-}
-
-static const char *GetLLDBRepository() {
- return NULL;
-}
-
-const char *lldb_private::GetVersion() {
- static std::string g_version_str;
- if (g_version_str.empty()) {
- const char *lldb_version = GetLLDBVersion();
- const char *lldb_repo = GetLLDBRepository();
- const char *lldb_rev = GetLLDBRevision();
- g_version_str += lldb_version;
- if (lldb_repo || lldb_rev) {
- g_version_str += " (";
- if (lldb_repo)
- g_version_str += lldb_repo;
- if (lldb_repo && lldb_rev)
- g_version_str += " ";
- if (lldb_rev) {
- g_version_str += "revision ";
- g_version_str += lldb_rev;
- }
- g_version_str += ")";
- }
-
- std::string clang_rev(clang::getClangRevision());
- if (clang_rev.length() > 0) {
- g_version_str += "\n clang revision ";
- g_version_str += clang_rev;
- }
- std::string llvm_rev(clang::getLLVMRevision());
- if (llvm_rev.length() > 0) {
- g_version_str += "\n llvm revision ";
- g_version_str += llvm_rev;
- }
- }
- return g_version_str.c_str();
-}
Index: create-13.0.0-lldb-set-revision-patch/llvm-13.0.0-new/lldb/source
===================================================================
--- create-13.0.0-lldb-set-revision-patch/llvm-13.0.0-new/lldb/source (revision 39)
+++ create-13.0.0-lldb-set-revision-patch/llvm-13.0.0-new/lldb/source (nonexistent)
Property changes on: create-13.0.0-lldb-set-revision-patch/llvm-13.0.0-new/lldb/source
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-lldb-set-revision-patch/llvm-13.0.0-new/lldb
===================================================================
--- create-13.0.0-lldb-set-revision-patch/llvm-13.0.0-new/lldb (revision 39)
+++ create-13.0.0-lldb-set-revision-patch/llvm-13.0.0-new/lldb (nonexistent)
Property changes on: create-13.0.0-lldb-set-revision-patch/llvm-13.0.0-new/lldb
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-lldb-set-revision-patch/llvm-13.0.0-new
===================================================================
--- create-13.0.0-lldb-set-revision-patch/llvm-13.0.0-new (revision 39)
+++ create-13.0.0-lldb-set-revision-patch/llvm-13.0.0-new (nonexistent)
Property changes on: create-13.0.0-lldb-set-revision-patch/llvm-13.0.0-new
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-lldb-set-revision-patch
===================================================================
--- create-13.0.0-lldb-set-revision-patch (revision 39)
+++ create-13.0.0-lldb-set-revision-patch (nonexistent)
Property changes on: create-13.0.0-lldb-set-revision-patch
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-llvm-install-symlink-patch/file.list
===================================================================
--- create-15.0.4-llvm-install-symlink-patch/file.list (revision 39)
+++ create-15.0.4-llvm-install-symlink-patch/file.list (nonexistent)
@@ -1 +0,0 @@
-llvm-15.0.4/llvm/cmake/modules/LLVMInstallSymlink.cmake
Index: create-15.0.4-llvm-install-symlink-patch/llvm-15.0.4-new/llvm/cmake/modules/LLVMInstallSymlink.cmake
===================================================================
--- create-15.0.4-llvm-install-symlink-patch/llvm-15.0.4-new/llvm/cmake/modules/LLVMInstallSymlink.cmake (revision 39)
+++ create-15.0.4-llvm-install-symlink-patch/llvm-15.0.4-new/llvm/cmake/modules/LLVMInstallSymlink.cmake (nonexistent)
@@ -1,26 +0,0 @@
-# We need to execute this script at installation time because the
-# DESTDIR environment variable may be unset at configuration time.
-# See PR8397.
-
-# Already included at llvm/CmakeLists.txt:
-#include(GNUInstallDirs)
-
-function(install_symlink name target outdir)
- set(DESTDIR $ENV{DESTDIR})
- if(NOT IS_ABSOLUTE "${outdir}")
- set(outdir "${CMAKE_INSTALL_PREFIX}/${outdir}")
- endif()
- set(outdir "${DESTDIR}${outdir}")
-
- message(STATUS "Creating ${name}")
-
- execute_process(
- COMMAND "${CMAKE_COMMAND}" -E create_symlink "${target}" "${name}"
- WORKING_DIRECTORY "${outdir}" ERROR_VARIABLE has_err)
- if(CMAKE_HOST_WIN32 AND has_err)
- execute_process(
- COMMAND "${CMAKE_COMMAND}" -E copy "${target}" "${name}"
- WORKING_DIRECTORY "${outdir}")
- endif()
-
-endfunction()
Index: create-15.0.4-llvm-install-symlink-patch/llvm-15.0.4-new/llvm/cmake/modules
===================================================================
--- create-15.0.4-llvm-install-symlink-patch/llvm-15.0.4-new/llvm/cmake/modules (revision 39)
+++ create-15.0.4-llvm-install-symlink-patch/llvm-15.0.4-new/llvm/cmake/modules (nonexistent)
Property changes on: create-15.0.4-llvm-install-symlink-patch/llvm-15.0.4-new/llvm/cmake/modules
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-llvm-install-symlink-patch/llvm-15.0.4-new/llvm/cmake
===================================================================
--- create-15.0.4-llvm-install-symlink-patch/llvm-15.0.4-new/llvm/cmake (revision 39)
+++ create-15.0.4-llvm-install-symlink-patch/llvm-15.0.4-new/llvm/cmake (nonexistent)
Property changes on: create-15.0.4-llvm-install-symlink-patch/llvm-15.0.4-new/llvm/cmake
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-llvm-install-symlink-patch/llvm-15.0.4-new/llvm
===================================================================
--- create-15.0.4-llvm-install-symlink-patch/llvm-15.0.4-new/llvm (revision 39)
+++ create-15.0.4-llvm-install-symlink-patch/llvm-15.0.4-new/llvm (nonexistent)
Property changes on: create-15.0.4-llvm-install-symlink-patch/llvm-15.0.4-new/llvm
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-llvm-install-symlink-patch/llvm-15.0.4-new
===================================================================
--- create-15.0.4-llvm-install-symlink-patch/llvm-15.0.4-new (revision 39)
+++ create-15.0.4-llvm-install-symlink-patch/llvm-15.0.4-new (nonexistent)
Property changes on: create-15.0.4-llvm-install-symlink-patch/llvm-15.0.4-new
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-llvm-install-symlink-patch/create.patch.sh
===================================================================
--- create-15.0.4-llvm-install-symlink-patch/create.patch.sh (revision 39)
+++ create-15.0.4-llvm-install-symlink-patch/create.patch.sh (nonexistent)
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-VERSION=15.0.4
-
-tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
-mv llvm-$VERSION llvm-$VERSION-orig
-
-cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
-
-diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-llvm-install-symlink.patch
-
-mv llvm-$VERSION-llvm-install-symlink.patch ../patches
-
-rm -rf ./llvm-$VERSION
-rm -rf ./llvm-$VERSION-orig
Property changes on: create-15.0.4-llvm-install-symlink-patch/create.patch.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: create-15.0.4-llvm-install-symlink-patch
===================================================================
--- create-15.0.4-llvm-install-symlink-patch (revision 39)
+++ create-15.0.4-llvm-install-symlink-patch (nonexistent)
Property changes on: create-15.0.4-llvm-install-symlink-patch
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-compiler-rt-p5600-patch/file.list
===================================================================
--- create-13.0.0-compiler-rt-p5600-patch/file.list (revision 39)
+++ create-13.0.0-compiler-rt-p5600-patch/file.list (nonexistent)
@@ -1 +0,0 @@
-llvm-13.0.0/compiler-rt/cmake/base-config-ix.cmake
Index: create-13.0.0-compiler-rt-p5600-patch/create.patch.sh
===================================================================
--- create-13.0.0-compiler-rt-p5600-patch/create.patch.sh (revision 39)
+++ create-13.0.0-compiler-rt-p5600-patch/create.patch.sh (nonexistent)
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-VERSION=13.0.0
-
-tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
-mv llvm-$VERSION llvm-$VERSION-orig
-
-cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
-
-diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-compiler-rt-p5600.patch
-
-mv llvm-$VERSION-compiler-rt-p5600.patch ../patches
-
-rm -rf ./llvm-$VERSION
-rm -rf ./llvm-$VERSION-orig
Property changes on: create-13.0.0-compiler-rt-p5600-patch/create.patch.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: create-13.0.0-compiler-rt-p5600-patch/llvm-13.0.0-new/compiler-rt/cmake/base-config-ix.cmake
===================================================================
--- create-13.0.0-compiler-rt-p5600-patch/llvm-13.0.0-new/compiler-rt/cmake/base-config-ix.cmake (revision 39)
+++ create-13.0.0-compiler-rt-p5600-patch/llvm-13.0.0-new/compiler-rt/cmake/base-config-ix.cmake (nonexistent)
@@ -1,255 +0,0 @@
-# The CompilerRT build system requires CMake version 2.8.8 or higher in order
-# to use its support for building convenience "libraries" as a collection of
-# .o files. This is particularly useful in producing larger, more complex
-# runtime libraries.
-
-include(CheckIncludeFile)
-include(CheckCXXSourceCompiles)
-
-check_include_file(unwind.h HAVE_UNWIND_H)
-
-# Used by sanitizer_common and tests.
-check_include_file(rpc/xdr.h HAVE_RPC_XDR_H)
-if (NOT HAVE_RPC_XDR_H)
- set(HAVE_RPC_XDR_H 0)
-endif()
-
-# Top level target used to build all compiler-rt libraries.
-add_custom_target(compiler-rt ALL)
-add_custom_target(install-compiler-rt)
-add_custom_target(install-compiler-rt-stripped)
-set_property(
- TARGET
- compiler-rt
- install-compiler-rt
- install-compiler-rt-stripped
- PROPERTY
- FOLDER "Compiler-RT Misc"
-)
-
-# Setting these variables from an LLVM build is sufficient that compiler-rt can
-# construct the output paths, so it can behave as if it were in-tree here.
-if (LLVM_LIBRARY_OUTPUT_INTDIR AND LLVM_RUNTIME_OUTPUT_INTDIR AND PACKAGE_VERSION)
- set(LLVM_TREE_AVAILABLE On)
-endif()
-
-if (LLVM_TREE_AVAILABLE)
- # Compute the Clang version from the LLVM version.
- # FIXME: We should be able to reuse CLANG_VERSION variable calculated
- # in Clang cmake files, instead of copying the rules here.
- string(REGEX MATCH "[0-9]+\\.[0-9]+(\\.[0-9]+)?" CLANG_VERSION
- ${PACKAGE_VERSION})
- # Setup the paths where compiler-rt runtimes and headers should be stored.
- set(COMPILER_RT_OUTPUT_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR}/clang/${CLANG_VERSION})
- set(COMPILER_RT_EXEC_OUTPUT_DIR ${LLVM_RUNTIME_OUTPUT_INTDIR})
- set(COMPILER_RT_INSTALL_PATH lib${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION})
- option(COMPILER_RT_INCLUDE_TESTS "Generate and build compiler-rt unit tests."
- ${LLVM_INCLUDE_TESTS})
- option(COMPILER_RT_ENABLE_WERROR "Fail and stop if warning is triggered"
- ${LLVM_ENABLE_WERROR})
-
- # Use just-built Clang to compile/link tests on all platforms.
- if (CMAKE_CROSSCOMPILING)
- if (CMAKE_HOST_WIN32)
- set(_host_executable_suffix ".exe")
- else()
- set(_host_executable_suffix "")
- endif()
- else()
- set(_host_executable_suffix ${CMAKE_EXECUTABLE_SUFFIX})
- endif()
- set(COMPILER_RT_TEST_COMPILER
- ${LLVM_RUNTIME_OUTPUT_INTDIR}/clang${_host_executable_suffix})
- set(COMPILER_RT_TEST_CXX_COMPILER
- ${LLVM_RUNTIME_OUTPUT_INTDIR}/clang++${_host_executable_suffix})
-else()
- # Take output dir and install path from the user.
- set(COMPILER_RT_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR} CACHE PATH
- "Path where built compiler-rt libraries should be stored.")
- set(COMPILER_RT_EXEC_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/bin CACHE PATH
- "Path where built compiler-rt executables should be stored.")
- set(COMPILER_RT_INSTALL_PATH "" CACHE PATH
- "Prefix for directories where built compiler-rt artifacts should be installed.")
- option(COMPILER_RT_INCLUDE_TESTS "Generate and build compiler-rt unit tests." OFF)
- option(COMPILER_RT_ENABLE_WERROR "Fail and stop if warning is triggered" OFF)
- # Use a host compiler to compile/link tests.
- set(COMPILER_RT_TEST_COMPILER ${CMAKE_C_COMPILER} CACHE PATH "Compiler to use for testing")
- set(COMPILER_RT_TEST_CXX_COMPILER ${CMAKE_CXX_COMPILER} CACHE PATH "C++ Compiler to use for testing")
-endif()
-
-if("${COMPILER_RT_TEST_COMPILER}" MATCHES "clang[+]*$")
- set(COMPILER_RT_TEST_COMPILER_ID Clang)
-elseif("${COMPILER_RT_TEST_COMPILER}" MATCHES "clang.*.exe$")
- set(COMPILER_RT_TEST_COMPILER_ID Clang)
-else()
- set(COMPILER_RT_TEST_COMPILER_ID GNU)
-endif()
-
-function(extend_install_path joined_path current_segment)
- if("${current_segment}" STREQUAL "")
- set(temp_path "${COMPILER_RT_INSTALL_PATH}")
- elseif("${COMPILER_RT_INSTALL_PATH}" STREQUAL "")
- set(temp_path "${current_segment}")
- elseif(IS_ABSOLUTE "${current_segment}")
- message(WARNING "Since \"${current_segment}\" is absolute, it overrides COMPILER_RT_INSTALL_PATH: \"${COMPILER_RT_INSTALL_PATH}\".")
- set(temp_path "${current_segment}")
- else()
- set(temp_path "${COMPILER_RT_INSTALL_PATH}/${current_segment}")
- endif()
- set(${joined_path} "${temp_path}" PARENT_SCOPE)
-endfunction()
-
-if(NOT DEFINED COMPILER_RT_OS_DIR)
- string(TOLOWER ${CMAKE_SYSTEM_NAME} COMPILER_RT_OS_DIR)
-endif()
-if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)
- set(COMPILER_RT_OUTPUT_LIBRARY_DIR
- ${COMPILER_RT_OUTPUT_DIR}/lib)
- extend_install_path(default_install_path lib)
- set(COMPILER_RT_INSTALL_LIBRARY_DIR "${default_install_path}" CACHE PATH
- "Path where built compiler-rt libraries should be installed.")
-else(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)
- set(COMPILER_RT_OUTPUT_LIBRARY_DIR
- ${COMPILER_RT_OUTPUT_DIR}/lib/${COMPILER_RT_OS_DIR})
- extend_install_path(default_install_path "lib/${COMPILER_RT_OS_DIR}")
- set(COMPILER_RT_INSTALL_LIBRARY_DIR "${default_install_path}" CACHE PATH
- "Path where built compiler-rt libraries should be installed.")
-endif()
-extend_install_path(default_install_path bin)
-set(COMPILER_RT_INSTALL_BINARY_DIR "${default_install_path}" CACHE PATH
- "Path where built compiler-rt executables should be installed.")
-extend_install_path(default_install_path include)
-set(COMPILER_RT_INSTALL_INCLUDE_DIR "${default_install_path}" CACHE PATH
- "Path where compiler-rt headers should be installed.")
-extend_install_path(default_install_path share)
-set(COMPILER_RT_INSTALL_DATA_DIR "${default_install_path}" CACHE PATH
- "Path where compiler-rt data files should be installed.")
-
-if(APPLE)
- # On Darwin if /usr/include/c++ doesn't exist, the user probably has Xcode but
- # not the command line tools (or is using macOS 10.14 or newer). If this is
- # the case, we need to find the OS X sysroot to pass to clang.
- if(NOT EXISTS /usr/include/c++)
- execute_process(COMMAND xcrun -sdk macosx --show-sdk-path
- OUTPUT_VARIABLE OSX_SYSROOT
- ERROR_QUIET
- OUTPUT_STRIP_TRAILING_WHITESPACE)
- if (NOT OSX_SYSROOT OR NOT EXISTS ${OSX_SYSROOT})
- message(WARNING "Detected OSX_SYSROOT ${OSX_SYSROOT} does not exist")
- else()
- message(STATUS "Found OSX_SYSROOT: ${OSX_SYSROOT}")
- set(OSX_SYSROOT_FLAG "-isysroot${OSX_SYSROOT}")
- endif()
- else()
- set(OSX_SYSROOT_FLAG "")
- endif()
-
- option(COMPILER_RT_ENABLE_IOS "Enable building for iOS" On)
- option(COMPILER_RT_ENABLE_WATCHOS "Enable building for watchOS - Experimental" Off)
- option(COMPILER_RT_ENABLE_TVOS "Enable building for tvOS - Experimental" Off)
-
-else()
- option(COMPILER_RT_DEFAULT_TARGET_ONLY "Build builtins only for the default target" Off)
-endif()
-
-if(WIN32 AND NOT MINGW AND NOT CYGWIN)
- set(CMAKE_SHARED_LIBRARY_PREFIX_C "")
- set(CMAKE_SHARED_LIBRARY_PREFIX_CXX "")
- set(CMAKE_STATIC_LIBRARY_PREFIX_C "")
- set(CMAKE_STATIC_LIBRARY_PREFIX_CXX "")
- set(CMAKE_STATIC_LIBRARY_SUFFIX_C ".lib")
- set(CMAKE_STATIC_LIBRARY_SUFFIX_CXX ".lib")
-endif()
-
-macro(test_targets)
- # Find and run MSVC (not clang-cl) and get its version. This will tell clang-cl
- # what version of MSVC to pretend to be so that the STL works.
- set(MSVC_VERSION_FLAG "")
- if (MSVC)
- execute_process(COMMAND "$ENV{VSINSTALLDIR}/VC/bin/cl.exe"
- OUTPUT_QUIET
- ERROR_VARIABLE MSVC_COMPAT_VERSION
- )
- string(REGEX REPLACE "^.*Compiler Version ([0-9.]+) for .*$" "\\1"
- MSVC_COMPAT_VERSION "${MSVC_COMPAT_VERSION}")
- if (MSVC_COMPAT_VERSION MATCHES "^[0-9].+$")
- set(MSVC_VERSION_FLAG "-fms-compatibility-version=${MSVC_COMPAT_VERSION}")
- # Add this flag into the host build if this is clang-cl.
- if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
- append("${MSVC_VERSION_FLAG}" CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
- elseif (COMPILER_RT_TEST_COMPILER_ID MATCHES "Clang")
- # Add this flag to test compiles to suppress clang's auto-detection
- # logic.
- append("${MSVC_VERSION_FLAG}" COMPILER_RT_TEST_COMPILER_CFLAGS)
- endif()
- endif()
- endif()
-
- # Generate the COMPILER_RT_SUPPORTED_ARCH list.
- if(ANDROID)
- # Examine compiler output to determine target architecture.
- detect_target_arch()
- set(COMPILER_RT_OS_SUFFIX "-android")
- elseif(NOT APPLE) # Supported archs for Apple platforms are generated later
- if(COMPILER_RT_DEFAULT_TARGET_ONLY)
- add_default_target_arch(${COMPILER_RT_DEFAULT_TARGET_ARCH})
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "i[2-6]86|x86|amd64")
- if(NOT MSVC)
- test_target_arch(x86_64 "" "-m64")
- test_target_arch(i386 __i386__ "-m32")
- else()
- if (CMAKE_SIZEOF_VOID_P EQUAL 4)
- test_target_arch(i386 "" "")
- else()
- test_target_arch(x86_64 "" "")
- endif()
- endif()
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "powerpc64le")
- test_target_arch(powerpc64le "" "-m64")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "powerpc")
- if(CMAKE_SYSTEM_NAME MATCHES "AIX")
- test_target_arch(powerpc "" "-m32")
- endif()
- test_target_arch(powerpc64 "" "-m64")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "s390x")
- test_target_arch(s390x "" "")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "sparc")
- test_target_arch(sparc "" "-m32")
- test_target_arch(sparcv9 "" "-m64")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "mipsel|mips64el")
- # Gcc doesn't accept -m32/-m64 so we do the next best thing and use
- # -mips32r5/-mips64r5. We don't use -mips1/-mips3 because we want to match
- # clang's default CPU's. In the 64-bit case, we must also specify the ABI
- # since the default ABI differs between gcc and clang.
- # FIXME: Ideally, we would build the N32 library too.
- test_target_arch(mipsel "" "-mips32r5" "-mabi=32" "-D_LARGEFILE_SOURCE" "-D_FILE_OFFSET_BITS=64")
- test_target_arch(mips64el "" "-mips64r5" "-mabi=64")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "mips")
- test_target_arch(mips "" "-mips32r5" "-mabi=32" "-D_LARGEFILE_SOURCE" "-D_FILE_OFFSET_BITS=64")
- test_target_arch(mips64 "" "-mips64r5" "-mabi=64")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "arm")
- if(WIN32)
- test_target_arch(arm "" "" "")
- else()
- test_target_arch(arm "" "-march=armv7-a" "-mfloat-abi=soft")
- test_target_arch(armhf "" "-march=armv7-a" "-mfloat-abi=hard")
- test_target_arch(armv6m "" "-march=armv6m" "-mfloat-abi=soft")
- endif()
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "aarch32")
- test_target_arch(aarch32 "" "-march=armv8-a")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "aarch64")
- test_target_arch(aarch64 "" "-march=armv8-a")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "riscv32")
- test_target_arch(riscv32 "" "")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "riscv64")
- test_target_arch(riscv64 "" "")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "wasm32")
- test_target_arch(wasm32 "" "--target=wasm32-unknown-unknown")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "wasm64")
- test_target_arch(wasm64 "" "--target=wasm64-unknown-unknown")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "ve")
- test_target_arch(ve "__ve__" "--target=ve-unknown-none")
- endif()
- set(COMPILER_RT_OS_SUFFIX "")
- endif()
-endmacro()
Index: create-13.0.0-compiler-rt-p5600-patch/llvm-13.0.0-new/compiler-rt/cmake
===================================================================
--- create-13.0.0-compiler-rt-p5600-patch/llvm-13.0.0-new/compiler-rt/cmake (revision 39)
+++ create-13.0.0-compiler-rt-p5600-patch/llvm-13.0.0-new/compiler-rt/cmake (nonexistent)
Property changes on: create-13.0.0-compiler-rt-p5600-patch/llvm-13.0.0-new/compiler-rt/cmake
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-compiler-rt-p5600-patch/llvm-13.0.0-new/compiler-rt
===================================================================
--- create-13.0.0-compiler-rt-p5600-patch/llvm-13.0.0-new/compiler-rt (revision 39)
+++ create-13.0.0-compiler-rt-p5600-patch/llvm-13.0.0-new/compiler-rt (nonexistent)
Property changes on: create-13.0.0-compiler-rt-p5600-patch/llvm-13.0.0-new/compiler-rt
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-compiler-rt-p5600-patch/llvm-13.0.0-new
===================================================================
--- create-13.0.0-compiler-rt-p5600-patch/llvm-13.0.0-new (revision 39)
+++ create-13.0.0-compiler-rt-p5600-patch/llvm-13.0.0-new (nonexistent)
Property changes on: create-13.0.0-compiler-rt-p5600-patch/llvm-13.0.0-new
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-compiler-rt-p5600-patch
===================================================================
--- create-13.0.0-compiler-rt-p5600-patch (revision 39)
+++ create-13.0.0-compiler-rt-p5600-patch (nonexistent)
Property changes on: create-13.0.0-compiler-rt-p5600-patch
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-compiler-rt-synonyms-patch/file.list
===================================================================
--- create-15.0.4-compiler-rt-synonyms-patch/file.list (revision 39)
+++ create-15.0.4-compiler-rt-synonyms-patch/file.list (nonexistent)
@@ -1,2 +0,0 @@
-llvm-15.0.4/compiler-rt/cmake/builtin-config-ix.cmake
-llvm-15.0.4/compiler-rt/cmake/crt-config-ix.cmake
Index: create-15.0.4-compiler-rt-synonyms-patch/llvm-15.0.4-new/compiler-rt/cmake/crt-config-ix.cmake
===================================================================
--- create-15.0.4-compiler-rt-synonyms-patch/llvm-15.0.4-new/compiler-rt/cmake/crt-config-ix.cmake (revision 39)
+++ create-15.0.4-compiler-rt-synonyms-patch/llvm-15.0.4-new/compiler-rt/cmake/crt-config-ix.cmake (nonexistent)
@@ -1,50 +0,0 @@
-include(BuiltinTests)
-include(CheckCSourceCompiles)
-
-# Make all the tests only check the compiler
-set(TEST_COMPILE_ONLY On)
-
-builtin_check_c_compiler_flag(-fPIC COMPILER_RT_HAS_FPIC_FLAG)
-builtin_check_c_compiler_flag(-std=c11 COMPILER_RT_HAS_STD_C11_FLAG)
-builtin_check_c_compiler_flag(-Wno-pedantic COMPILER_RT_HAS_WNO_PEDANTIC)
-builtin_check_c_compiler_flag(-fno-lto COMPILER_RT_HAS_FNO_LTO_FLAG)
-builtin_check_c_compiler_flag(-fno-profile-generate COMPILER_RT_HAS_FNO_PROFILE_GENERATE_FLAG)
-builtin_check_c_compiler_flag(-fno-profile-instr-generate COMPILER_RT_HAS_FNO_PROFILE_INSTR_GENERATE_FLAG)
-builtin_check_c_compiler_flag(-fno-profile-instr-use COMPILER_RT_HAS_FNO_PROFILE_INSTR_USE_FLAG)
-
-if(ANDROID)
- set(OS_NAME "Android")
-else()
- set(OS_NAME "${CMAKE_SYSTEM_NAME}")
-endif()
-
-set(ARM64 aarch64)
-set(ARM32 arm armhf)
-set(HEXAGON hexagon)
-set(X86 i386)
-set(X86_64 x86_64)
-set(PPC32 ppc powerpc powerpcspe)
-set(PPC64 ppc64 powerpc64 ppc64le powerpc64le)
-set(RISCV32 riscv32)
-set(RISCV64 riscv64)
-set(VE ve)
-
-set(ALL_CRT_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64} ${PPC32}
- ${PPC64} ${RISCV32} ${RISCV64} ${VE} ${HEXAGON})
-
-include(CompilerRTUtils)
-
-if(NOT APPLE)
- if(COMPILER_RT_CRT_STANDALONE_BUILD)
- test_targets()
- endif()
- # Architectures supported by compiler-rt crt library.
- filter_available_targets(CRT_SUPPORTED_ARCH ${ALL_CRT_SUPPORTED_ARCH})
- message(STATUS "Supported architectures for crt: ${CRT_SUPPORTED_ARCH}")
-endif()
-
-if (CRT_SUPPORTED_ARCH AND OS_NAME MATCHES "Linux" AND NOT LLVM_USE_SANITIZER)
- set(COMPILER_RT_HAS_CRT TRUE)
-else()
- set(COMPILER_RT_HAS_CRT FALSE)
-endif()
Index: create-15.0.4-compiler-rt-synonyms-patch/llvm-15.0.4-new/compiler-rt/cmake/builtin-config-ix.cmake
===================================================================
--- create-15.0.4-compiler-rt-synonyms-patch/llvm-15.0.4-new/compiler-rt/cmake/builtin-config-ix.cmake (revision 39)
+++ create-15.0.4-compiler-rt-synonyms-patch/llvm-15.0.4-new/compiler-rt/cmake/builtin-config-ix.cmake (nonexistent)
@@ -1,232 +0,0 @@
-include(BuiltinTests)
-include(CheckCSourceCompiles)
-
-# Make all the tests only check the compiler
-set(TEST_COMPILE_ONLY On)
-
-# Check host compiler support for certain flags
-builtin_check_c_compiler_flag(-fPIC COMPILER_RT_HAS_FPIC_FLAG)
-builtin_check_c_compiler_flag(-fPIE COMPILER_RT_HAS_FPIE_FLAG)
-builtin_check_c_compiler_flag(-fno-builtin COMPILER_RT_HAS_FNO_BUILTIN_FLAG)
-builtin_check_c_compiler_flag(-std=c11 COMPILER_RT_HAS_STD_C11_FLAG)
-builtin_check_c_compiler_flag(-fvisibility=hidden COMPILER_RT_HAS_VISIBILITY_HIDDEN_FLAG)
-builtin_check_c_compiler_flag(-fomit-frame-pointer COMPILER_RT_HAS_OMIT_FRAME_POINTER_FLAG)
-builtin_check_c_compiler_flag(-ffreestanding COMPILER_RT_HAS_FFREESTANDING_FLAG)
-builtin_check_c_compiler_flag(-fxray-instrument COMPILER_RT_HAS_XRAY_COMPILER_FLAG)
-
-builtin_check_c_compiler_source(COMPILER_RT_HAS_ATOMIC_KEYWORD
-"
-int foo(int x, int y) {
- _Atomic int result = x * y;
- return result;
-}
-")
-
-builtin_check_c_compiler_source(COMPILER_RT_HAS_FLOAT16
-"
-_Float16 foo(_Float16 x) {
- return x;
-}
-"
-)
-
-builtin_check_c_compiler_source(COMPILER_RT_HAS_BFLOAT16
-"
-__bf16 foo(__bf16 x) {
- return x;
-}
-"
-)
-
-builtin_check_c_compiler_source(COMPILER_RT_HAS_ASM_LSE
-"
-asm(\".arch armv8-a+lse\");
-asm(\"cas w0, w1, [x2]\");
-")
-
-set(ARM64 aarch64)
-set(ARM32 arm armhf armv6m armv7m armv7em armv7 armv7s armv7k armv8m.main armv8.1m.main)
-set(AVR avr)
-set(HEXAGON hexagon)
-set(X86 i386)
-set(X86_64 x86_64)
-set(MIPS32 mips mipsel)
-set(MIPS64 mips64 mips64el)
-set(PPC32 ppc powerpc powerpcspe)
-set(PPC64 ppc64 powerpc64 ppc64le powerpc64le)
-set(RISCV32 riscv32)
-set(RISCV64 riscv64)
-set(SPARC sparc)
-set(SPARCV9 sparcv9)
-set(WASM32 wasm32)
-set(WASM64 wasm64)
-set(VE ve)
-
-if(APPLE)
- set(ARM64 arm64 arm64e)
- set(ARM32 armv7 armv7k armv7s)
- set(X86_64 x86_64 x86_64h)
-endif()
-
-set(ALL_BUILTIN_SUPPORTED_ARCH
- ${X86} ${X86_64} ${ARM32} ${ARM64} ${AVR}
- ${HEXAGON} ${MIPS32} ${MIPS64} ${PPC32} ${PPC64}
- ${RISCV32} ${RISCV64} ${SPARC} ${SPARCV9}
- ${WASM32} ${WASM64} ${VE})
-
-include(CompilerRTUtils)
-include(CompilerRTDarwinUtils)
-
-if(APPLE)
-
- find_darwin_sdk_dir(DARWIN_osx_SYSROOT macosx)
- find_darwin_sdk_dir(DARWIN_iossim_SYSROOT iphonesimulator)
- find_darwin_sdk_dir(DARWIN_ios_SYSROOT iphoneos)
- find_darwin_sdk_dir(DARWIN_watchossim_SYSROOT watchsimulator)
- find_darwin_sdk_dir(DARWIN_watchos_SYSROOT watchos)
- find_darwin_sdk_dir(DARWIN_tvossim_SYSROOT appletvsimulator)
- find_darwin_sdk_dir(DARWIN_tvos_SYSROOT appletvos)
-
- # Get supported architecture from SDKSettings.
- function(sdk_has_arch_support sdk_path os arch has_support)
- execute_process(COMMAND
- /usr/libexec/PlistBuddy -c "Print :SupportedTargets:${os}:Archs" ${sdk_path}/SDKSettings.plist
- OUTPUT_VARIABLE SDK_SUPPORTED_ARCHS
- RESULT_VARIABLE PLIST_ERROR
- ERROR_QUIET)
- if (PLIST_ERROR EQUAL 0 AND
- SDK_SUPPORTED_ARCHS MATCHES " ${arch}\n")
- message(STATUS "Found ${arch} support in ${sdk_path}/SDKSettings.plist")
- set("${has_support}" On PARENT_SCOPE)
- else()
- message(STATUS "No ${arch} support in ${sdk_path}/SDKSettings.plist")
- set("${has_support}" Off PARENT_SCOPE)
- endif()
- endfunction()
-
- set(DARWIN_EMBEDDED_PLATFORMS)
- set(DARWIN_osx_BUILTIN_MIN_VER 10.5)
- set(DARWIN_osx_BUILTIN_MIN_VER_FLAG
- -mmacosx-version-min=${DARWIN_osx_BUILTIN_MIN_VER})
- set(DARWIN_osx_BUILTIN_ALL_POSSIBLE_ARCHS ${X86} ${X86_64})
- # Add support for arm64 macOS if available in SDK.
- foreach(arch ${ARM64})
- sdk_has_arch_support(${DARWIN_osx_SYSROOT} macosx ${arch} MACOS_ARM_SUPPORT)
- if (MACOS_ARM_SUPPORT)
- list(APPEND DARWIN_osx_BUILTIN_ALL_POSSIBLE_ARCHS ${arch})
- endif()
- endforeach(arch)
-
- if(COMPILER_RT_ENABLE_IOS)
- list(APPEND DARWIN_EMBEDDED_PLATFORMS ios)
- set(DARWIN_ios_MIN_VER_FLAG -miphoneos-version-min)
- set(DARWIN_ios_BUILTIN_MIN_VER 6.0)
- set(DARWIN_ios_BUILTIN_MIN_VER_FLAG
- ${DARWIN_ios_MIN_VER_FLAG}=${DARWIN_ios_BUILTIN_MIN_VER})
- set(DARWIN_ios_BUILTIN_ALL_POSSIBLE_ARCHS ${ARM64} ${ARM32})
- set(DARWIN_iossim_BUILTIN_ALL_POSSIBLE_ARCHS ${X86} ${X86_64})
- find_darwin_sdk_version(iossim_sdk_version "iphonesimulator")
- if ("${iossim_sdk_version}" VERSION_GREATER 14.0 OR "${iossim_sdk_version}" VERSION_EQUAL 14.0)
- list(APPEND DARWIN_iossim_BUILTIN_ALL_POSSIBLE_ARCHS arm64)
- endif()
- endif()
- if(COMPILER_RT_ENABLE_WATCHOS)
- list(APPEND DARWIN_EMBEDDED_PLATFORMS watchos)
- set(DARWIN_watchos_MIN_VER_FLAG -mwatchos-version-min)
- set(DARWIN_watchos_BUILTIN_MIN_VER 2.0)
- set(DARWIN_watchos_BUILTIN_MIN_VER_FLAG
- ${DARWIN_watchos_MIN_VER_FLAG}=${DARWIN_watchos_BUILTIN_MIN_VER})
- set(DARWIN_watchos_BUILTIN_ALL_POSSIBLE_ARCHS armv7 armv7k arm64_32)
- set(DARWIN_watchossim_BUILTIN_ALL_POSSIBLE_ARCHS ${X86})
- find_darwin_sdk_version(watchossim_sdk_version "watchsimulator")
- if ("${watchossim_sdk_version}" VERSION_GREATER 7.0 OR "${watchossim_sdk_version}" VERSION_EQUAL 7.0)
- list(APPEND DARWIN_watchossim_BUILTIN_ALL_POSSIBLE_ARCHS arm64)
- endif()
- endif()
- if(COMPILER_RT_ENABLE_TVOS)
- list(APPEND DARWIN_EMBEDDED_PLATFORMS tvos)
- set(DARWIN_tvos_MIN_VER_FLAG -mtvos-version-min)
- set(DARWIN_tvos_BUILTIN_MIN_VER 9.0)
- set(DARWIN_tvos_BUILTIN_MIN_VER_FLAG
- ${DARWIN_tvos_MIN_VER_FLAG}=${DARWIN_tvos_BUILTIN_MIN_VER})
- set(DARWIN_tvos_BUILTIN_ALL_POSSIBLE_ARCHS armv7 arm64)
- set(DARWIN_tvossim_BUILTIN_ALL_POSSIBLE_ARCHS ${X86} ${X86_64})
- find_darwin_sdk_version(tvossim_sdk_version "appletvsimulator")
- if ("${tvossim_sdk_version}" VERSION_GREATER 14.0 OR "${tvossim_sdk_version}" VERSION_EQUAL 14.0)
- list(APPEND DARWIN_tvossim_BUILTIN_ALL_POSSIBLE_ARCHS arm64)
- endif()
- endif()
-
- set(BUILTIN_SUPPORTED_OS osx)
-
- # We're setting the flag manually for each target OS
- set(CMAKE_OSX_DEPLOYMENT_TARGET "")
-
- # NOTE: We deliberately avoid using `DARWIN_<os>_ARCHS` here because that is
- # used by `config-ix.cmake` in the context of building the rest of
- # compiler-rt where the global `${TEST_COMPILE_ONLY}` (used by
- # `darwin_test_archs()`) has a different value.
- darwin_test_archs(osx
- DARWIN_osx_BUILTIN_ARCHS
- ${DARWIN_osx_BUILTIN_ALL_POSSIBLE_ARCHS}
- )
- message(STATUS "OSX supported builtin arches: ${DARWIN_osx_BUILTIN_ARCHS}")
- foreach(arch ${DARWIN_osx_BUILTIN_ARCHS})
- list(APPEND COMPILER_RT_SUPPORTED_ARCH ${arch})
- set(CAN_TARGET_${arch} 1)
- endforeach()
-
- foreach(platform ${DARWIN_EMBEDDED_PLATFORMS})
- if(DARWIN_${platform}sim_SYSROOT)
- set(DARWIN_${platform}sim_BUILTIN_MIN_VER
- ${DARWIN_${platform}_BUILTIN_MIN_VER})
- set(DARWIN_${platform}sim_BUILTIN_MIN_VER_FLAG
- ${DARWIN_${platform}_BUILTIN_MIN_VER_FLAG})
-
- set(DARWIN_${platform}sim_SKIP_CC_KEXT On)
-
- darwin_test_archs(${platform}sim
- DARWIN_${platform}sim_BUILTIN_ARCHS
- ${DARWIN_${platform}sim_BUILTIN_ALL_POSSIBLE_ARCHS}
- )
- message(STATUS "${platform} Simulator supported builtin arches: ${DARWIN_${platform}sim_BUILTIN_ARCHS}")
- if(DARWIN_${platform}sim_BUILTIN_ARCHS)
- list(APPEND BUILTIN_SUPPORTED_OS ${platform}sim)
- endif()
- foreach(arch ${DARWIN_${platform}sim_BUILTIN_ARCHS})
- list(APPEND COMPILER_RT_SUPPORTED_ARCH ${arch})
- set(CAN_TARGET_${arch} 1)
- endforeach()
- endif()
-
- if(DARWIN_${platform}_SYSROOT)
- darwin_test_archs(${platform}
- DARWIN_${platform}_BUILTIN_ARCHS
- ${DARWIN_${platform}_BUILTIN_ALL_POSSIBLE_ARCHS}
- )
- message(STATUS "${platform} supported builtin arches: ${DARWIN_${platform}_BUILTIN_ARCHS}")
- if(DARWIN_${platform}_BUILTIN_ARCHS)
- list(APPEND BUILTIN_SUPPORTED_OS ${platform})
- endif()
- foreach(arch ${DARWIN_${platform}_BUILTIN_ARCHS})
- list(APPEND COMPILER_RT_SUPPORTED_ARCH ${arch})
- set(CAN_TARGET_${arch} 1)
- endforeach()
- endif()
- endforeach()
-
- list_intersect(BUILTIN_SUPPORTED_ARCH ALL_BUILTIN_SUPPORTED_ARCH COMPILER_RT_SUPPORTED_ARCH)
-
-else()
- # If we're not building the builtins standalone, just rely on the tests in
- # config-ix.cmake to tell us what to build. Otherwise we need to do some leg
- # work here...
- if(COMPILER_RT_BUILTINS_STANDALONE_BUILD)
- test_targets()
- endif()
- # Architectures supported by compiler-rt libraries.
- filter_available_targets(BUILTIN_SUPPORTED_ARCH
- ${ALL_BUILTIN_SUPPORTED_ARCH})
-endif()
-
-message(STATUS "Builtin supported architectures: ${BUILTIN_SUPPORTED_ARCH}")
Index: create-15.0.4-compiler-rt-synonyms-patch/llvm-15.0.4-new/compiler-rt/cmake
===================================================================
--- create-15.0.4-compiler-rt-synonyms-patch/llvm-15.0.4-new/compiler-rt/cmake (revision 39)
+++ create-15.0.4-compiler-rt-synonyms-patch/llvm-15.0.4-new/compiler-rt/cmake (nonexistent)
Property changes on: create-15.0.4-compiler-rt-synonyms-patch/llvm-15.0.4-new/compiler-rt/cmake
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-compiler-rt-synonyms-patch/llvm-15.0.4-new/compiler-rt
===================================================================
--- create-15.0.4-compiler-rt-synonyms-patch/llvm-15.0.4-new/compiler-rt (revision 39)
+++ create-15.0.4-compiler-rt-synonyms-patch/llvm-15.0.4-new/compiler-rt (nonexistent)
Property changes on: create-15.0.4-compiler-rt-synonyms-patch/llvm-15.0.4-new/compiler-rt
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-compiler-rt-synonyms-patch/llvm-15.0.4-new
===================================================================
--- create-15.0.4-compiler-rt-synonyms-patch/llvm-15.0.4-new (revision 39)
+++ create-15.0.4-compiler-rt-synonyms-patch/llvm-15.0.4-new (nonexistent)
Property changes on: create-15.0.4-compiler-rt-synonyms-patch/llvm-15.0.4-new
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-compiler-rt-synonyms-patch/create.patch.sh
===================================================================
--- create-15.0.4-compiler-rt-synonyms-patch/create.patch.sh (revision 39)
+++ create-15.0.4-compiler-rt-synonyms-patch/create.patch.sh (nonexistent)
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-VERSION=15.0.4
-
-tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
-mv llvm-$VERSION llvm-$VERSION-orig
-
-cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
-
-diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-compiler-rt-synonyms.patch
-
-mv llvm-$VERSION-compiler-rt-synonyms.patch ../patches
-
-rm -rf ./llvm-$VERSION
-rm -rf ./llvm-$VERSION-orig
Property changes on: create-15.0.4-compiler-rt-synonyms-patch/create.patch.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: create-15.0.4-compiler-rt-synonyms-patch
===================================================================
--- create-15.0.4-compiler-rt-synonyms-patch (revision 39)
+++ create-15.0.4-compiler-rt-synonyms-patch (nonexistent)
Property changes on: create-15.0.4-compiler-rt-synonyms-patch
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-lldb-set-revision-patch/file.list
===================================================================
--- create-15.0.4-lldb-set-revision-patch/file.list (revision 39)
+++ create-15.0.4-lldb-set-revision-patch/file.list (nonexistent)
@@ -1 +0,0 @@
-llvm-15.0.4/lldb/source/Version/Version.cpp
Index: create-15.0.4-lldb-set-revision-patch/llvm-15.0.4-new/lldb/source/Version/Version.cpp
===================================================================
--- create-15.0.4-lldb-set-revision-patch/llvm-15.0.4-new/lldb/source/Version/Version.cpp (revision 39)
+++ create-15.0.4-lldb-set-revision-patch/llvm-15.0.4-new/lldb/source/Version/Version.cpp (nonexistent)
@@ -1,65 +0,0 @@
-//===-- Version.cpp -------------------------------------------------------===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-
-#include "lldb/Version/Version.h"
-#include "VCSVersion.inc"
-#include "lldb/Version/Version.inc"
-#include "clang/Basic/Version.h"
-
-static const char *GetLLDBVersion() {
-#ifdef LLDB_FULL_VERSION_STRING
- return LLDB_FULL_VERSION_STRING;
-#else
- return "lldb version " LLDB_VERSION_STRING;
-#endif
-}
-
-static const char *GetLLDBRevision() {
- return nullptr;
-}
-
-static const char *GetLLDBRepository() {
- return nullptr;
-}
-
-const char *lldb_private::GetVersion() {
- static std::string g_version_str;
-
- if (g_version_str.empty()) {
- const char *lldb_version = GetLLDBVersion();
- const char *lldb_repo = GetLLDBRepository();
- const char *lldb_rev = GetLLDBRevision();
- g_version_str += lldb_version;
- if (lldb_repo || lldb_rev) {
- g_version_str += " (";
- if (lldb_repo)
- g_version_str += lldb_repo;
- if (lldb_repo && lldb_rev)
- g_version_str += " ";
- if (lldb_rev) {
- g_version_str += "revision ";
- g_version_str += lldb_rev;
- }
- g_version_str += ")";
- }
-
- std::string clang_rev(clang::getClangRevision());
- if (clang_rev.length() > 0) {
- g_version_str += "\n clang revision ";
- g_version_str += clang_rev;
- }
-
- std::string llvm_rev(clang::getLLVMRevision());
- if (llvm_rev.length() > 0) {
- g_version_str += "\n llvm revision ";
- g_version_str += llvm_rev;
- }
- }
-
- return g_version_str.c_str();
-}
Index: create-15.0.4-lldb-set-revision-patch/llvm-15.0.4-new/lldb/source/Version
===================================================================
--- create-15.0.4-lldb-set-revision-patch/llvm-15.0.4-new/lldb/source/Version (revision 39)
+++ create-15.0.4-lldb-set-revision-patch/llvm-15.0.4-new/lldb/source/Version (nonexistent)
Property changes on: create-15.0.4-lldb-set-revision-patch/llvm-15.0.4-new/lldb/source/Version
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-lldb-set-revision-patch/llvm-15.0.4-new/lldb/source
===================================================================
--- create-15.0.4-lldb-set-revision-patch/llvm-15.0.4-new/lldb/source (revision 39)
+++ create-15.0.4-lldb-set-revision-patch/llvm-15.0.4-new/lldb/source (nonexistent)
Property changes on: create-15.0.4-lldb-set-revision-patch/llvm-15.0.4-new/lldb/source
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-lldb-set-revision-patch/llvm-15.0.4-new/lldb
===================================================================
--- create-15.0.4-lldb-set-revision-patch/llvm-15.0.4-new/lldb (revision 39)
+++ create-15.0.4-lldb-set-revision-patch/llvm-15.0.4-new/lldb (nonexistent)
Property changes on: create-15.0.4-lldb-set-revision-patch/llvm-15.0.4-new/lldb
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-lldb-set-revision-patch/llvm-15.0.4-new
===================================================================
--- create-15.0.4-lldb-set-revision-patch/llvm-15.0.4-new (revision 39)
+++ create-15.0.4-lldb-set-revision-patch/llvm-15.0.4-new (nonexistent)
Property changes on: create-15.0.4-lldb-set-revision-patch/llvm-15.0.4-new
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-lldb-set-revision-patch/create.patch.sh
===================================================================
--- create-15.0.4-lldb-set-revision-patch/create.patch.sh (revision 39)
+++ create-15.0.4-lldb-set-revision-patch/create.patch.sh (nonexistent)
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-VERSION=15.0.4
-
-tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
-mv llvm-$VERSION llvm-$VERSION-orig
-
-cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
-
-diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-lldb-set-revision.patch
-
-mv llvm-$VERSION-lldb-set-revision.patch ../patches
-
-rm -rf ./llvm-$VERSION
-rm -rf ./llvm-$VERSION-orig
Property changes on: create-15.0.4-lldb-set-revision-patch/create.patch.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: create-15.0.4-lldb-set-revision-patch
===================================================================
--- create-15.0.4-lldb-set-revision-patch (revision 39)
+++ create-15.0.4-lldb-set-revision-patch (nonexistent)
Property changes on: create-15.0.4-lldb-set-revision-patch
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-compiler-rt-p5600-patch/file.list
===================================================================
--- create-15.0.4-compiler-rt-p5600-patch/file.list (revision 39)
+++ create-15.0.4-compiler-rt-p5600-patch/file.list (nonexistent)
@@ -1 +0,0 @@
-llvm-15.0.4/compiler-rt/cmake/base-config-ix.cmake
Index: create-15.0.4-compiler-rt-p5600-patch/llvm-15.0.4-new/compiler-rt/cmake/base-config-ix.cmake
===================================================================
--- create-15.0.4-compiler-rt-p5600-patch/llvm-15.0.4-new/compiler-rt/cmake/base-config-ix.cmake (revision 39)
+++ create-15.0.4-compiler-rt-p5600-patch/llvm-15.0.4-new/compiler-rt/cmake/base-config-ix.cmake (nonexistent)
@@ -1,256 +0,0 @@
-# The CompilerRT build system requires CMake version 2.8.8 or higher in order
-# to use its support for building convenience "libraries" as a collection of
-# .o files. This is particularly useful in producing larger, more complex
-# runtime libraries.
-
-include(BuiltinTests)
-include(CheckIncludeFile)
-include(CheckCXXSourceCompiles)
-include(GNUInstallDirs)
-include(ExtendPath)
-
-check_include_file(unwind.h HAVE_UNWIND_H)
-
-# Used by sanitizer_common and tests.
-check_include_file(rpc/xdr.h HAVE_RPC_XDR_H)
-if (NOT HAVE_RPC_XDR_H)
- set(HAVE_RPC_XDR_H 0)
-endif()
-
-# Top level target used to build all compiler-rt libraries.
-add_custom_target(compiler-rt ALL)
-add_custom_target(install-compiler-rt)
-add_custom_target(install-compiler-rt-stripped)
-set_property(
- TARGET
- compiler-rt
- install-compiler-rt
- install-compiler-rt-stripped
- PROPERTY
- FOLDER "Compiler-RT Misc"
-)
-
-# Setting these variables from an LLVM build is sufficient that compiler-rt can
-# construct the output paths, so it can behave as if it were in-tree here.
-if (LLVM_LIBRARY_OUTPUT_INTDIR AND LLVM_RUNTIME_OUTPUT_INTDIR AND PACKAGE_VERSION)
- set(LLVM_TREE_AVAILABLE On)
-endif()
-
-if (LLVM_TREE_AVAILABLE)
- # Compute the Clang version from the LLVM version.
- # FIXME: We should be able to reuse CLANG_VERSION variable calculated
- # in Clang cmake files, instead of copying the rules here.
- string(REGEX MATCH "[0-9]+\\.[0-9]+(\\.[0-9]+)?" CLANG_VERSION
- ${PACKAGE_VERSION})
- # Setup the paths where compiler-rt runtimes and headers should be stored.
- set(COMPILER_RT_OUTPUT_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR}/clang/${CLANG_VERSION})
- set(COMPILER_RT_EXEC_OUTPUT_DIR ${LLVM_RUNTIME_OUTPUT_INTDIR})
- set(COMPILER_RT_INSTALL_PATH lib${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION})
- option(COMPILER_RT_INCLUDE_TESTS "Generate and build compiler-rt unit tests."
- ${LLVM_INCLUDE_TESTS})
- option(COMPILER_RT_ENABLE_WERROR "Fail and stop if warning is triggered"
- ${LLVM_ENABLE_WERROR})
-
- # Use just-built Clang to compile/link tests on all platforms.
- if (CMAKE_CROSSCOMPILING)
- if (CMAKE_HOST_WIN32)
- set(_host_executable_suffix ".exe")
- else()
- set(_host_executable_suffix "")
- endif()
- else()
- set(_host_executable_suffix ${CMAKE_EXECUTABLE_SUFFIX})
- endif()
- set(COMPILER_RT_TEST_COMPILER
- ${LLVM_RUNTIME_OUTPUT_INTDIR}/clang${_host_executable_suffix})
- set(COMPILER_RT_TEST_CXX_COMPILER
- ${LLVM_RUNTIME_OUTPUT_INTDIR}/clang++${_host_executable_suffix})
-else()
- # Take output dir and install path from the user.
- set(COMPILER_RT_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR} CACHE PATH
- "Path where built compiler-rt libraries should be stored.")
- set(COMPILER_RT_EXEC_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/bin CACHE PATH
- "Path where built compiler-rt executables should be stored.")
- set(COMPILER_RT_INSTALL_PATH "" CACHE PATH
- "Prefix for directories where built compiler-rt artifacts should be installed.")
- option(COMPILER_RT_INCLUDE_TESTS "Generate and build compiler-rt unit tests." OFF)
- option(COMPILER_RT_ENABLE_WERROR "Fail and stop if warning is triggered" OFF)
- # Use a host compiler to compile/link tests.
- set(COMPILER_RT_TEST_COMPILER ${CMAKE_C_COMPILER} CACHE PATH "Compiler to use for testing")
- set(COMPILER_RT_TEST_CXX_COMPILER ${CMAKE_CXX_COMPILER} CACHE PATH "C++ Compiler to use for testing")
-endif()
-
-if("${COMPILER_RT_TEST_COMPILER}" MATCHES "clang[+]*$")
- set(COMPILER_RT_TEST_COMPILER_ID Clang)
-elseif("${COMPILER_RT_TEST_COMPILER}" MATCHES "clang.*.exe$")
- set(COMPILER_RT_TEST_COMPILER_ID Clang)
-else()
- set(COMPILER_RT_TEST_COMPILER_ID GNU)
-endif()
-
-if(NOT DEFINED COMPILER_RT_OS_DIR)
- if(ANDROID)
- # The CMAKE_SYSTEM_NAME for Android is Android, but the OS is Linux and the
- # driver will search for compiler-rt libraries in the "linux" directory.
- set(COMPILER_RT_OS_DIR linux)
- else()
- string(TOLOWER ${CMAKE_SYSTEM_NAME} COMPILER_RT_OS_DIR)
- endif()
-endif()
-if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)
- set(COMPILER_RT_OUTPUT_LIBRARY_DIR
- ${COMPILER_RT_OUTPUT_DIR}/lib)
- extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" lib)
- set(COMPILER_RT_INSTALL_LIBRARY_DIR "${default_install_path}" CACHE PATH
- "Path where built compiler-rt libraries should be installed.")
-else(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)
- set(COMPILER_RT_OUTPUT_LIBRARY_DIR
- ${COMPILER_RT_OUTPUT_DIR}/lib/${COMPILER_RT_OS_DIR})
- extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" "lib/${COMPILER_RT_OS_DIR}")
- set(COMPILER_RT_INSTALL_LIBRARY_DIR "${default_install_path}" CACHE PATH
- "Path where built compiler-rt libraries should be installed.")
-endif()
-extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" "${CMAKE_INSTALL_BINDIR}")
-set(COMPILER_RT_INSTALL_BINARY_DIR "${default_install_path}" CACHE PATH
- "Path where built compiler-rt executables should be installed.")
-extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" "${CMAKE_INSTALL_INCLUDEDIR}")
-set(COMPILER_RT_INSTALL_INCLUDE_DIR "${default_install_path}" CACHE PATH
- "Path where compiler-rt headers should be installed.")
-extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" "${CMAKE_INSTALL_DATADIR}")
-set(COMPILER_RT_INSTALL_DATA_DIR "${default_install_path}" CACHE PATH
- "Path where compiler-rt data files should be installed.")
-
-if(APPLE)
- # On Darwin if /usr/include/c++ doesn't exist, the user probably has Xcode but
- # not the command line tools (or is using macOS 10.14 or newer). If this is
- # the case, we need to find the OS X sysroot to pass to clang.
- if(NOT EXISTS /usr/include/c++)
- execute_process(COMMAND xcrun -sdk macosx --show-sdk-path
- OUTPUT_VARIABLE OSX_SYSROOT
- ERROR_QUIET
- OUTPUT_STRIP_TRAILING_WHITESPACE)
- if (NOT OSX_SYSROOT OR NOT EXISTS ${OSX_SYSROOT})
- message(WARNING "Detected OSX_SYSROOT ${OSX_SYSROOT} does not exist")
- else()
- message(STATUS "Found OSX_SYSROOT: ${OSX_SYSROOT}")
- set(OSX_SYSROOT_FLAG "-isysroot${OSX_SYSROOT}")
- endif()
- else()
- set(OSX_SYSROOT_FLAG "")
- endif()
-
- try_compile_only(COMPILER_RT_HAS_DARWIN_TARGET_VARIANT_FLAG
- FLAGS
- "-target" "x86_64-apple-macos10.15"
- "-darwin-target-variant" "x86_64-apple-ios13.1-macabi"
- "-Werror")
- option(COMPILER_RT_ENABLE_MACCATALYST "Enable building for Mac Catalyst" ${COMPILER_RT_HAS_DARWIN_TARGET_VARIANT_FLAG})
- option(COMPILER_RT_ENABLE_IOS "Enable building for iOS" On)
- option(COMPILER_RT_ENABLE_WATCHOS "Enable building for watchOS - Experimental" Off)
- option(COMPILER_RT_ENABLE_TVOS "Enable building for tvOS - Experimental" Off)
-
-else()
- option(COMPILER_RT_DEFAULT_TARGET_ONLY "Build builtins only for the default target" Off)
-endif()
-
-if(WIN32 AND NOT MINGW AND NOT CYGWIN)
- set(CMAKE_SHARED_LIBRARY_PREFIX_C "")
- set(CMAKE_SHARED_LIBRARY_PREFIX_CXX "")
- set(CMAKE_STATIC_LIBRARY_PREFIX_C "")
- set(CMAKE_STATIC_LIBRARY_PREFIX_CXX "")
- set(CMAKE_STATIC_LIBRARY_SUFFIX_C ".lib")
- set(CMAKE_STATIC_LIBRARY_SUFFIX_CXX ".lib")
-endif()
-
-macro(test_targets)
- # Find and run MSVC (not clang-cl) and get its version. This will tell clang-cl
- # what version of MSVC to pretend to be so that the STL works.
- set(MSVC_VERSION_FLAG "")
- if (MSVC)
- execute_process(COMMAND "$ENV{VSINSTALLDIR}/VC/bin/cl.exe"
- OUTPUT_QUIET
- ERROR_VARIABLE MSVC_COMPAT_VERSION
- )
- string(REGEX REPLACE "^.*Compiler Version ([0-9.]+) for .*$" "\\1"
- MSVC_COMPAT_VERSION "${MSVC_COMPAT_VERSION}")
- if (MSVC_COMPAT_VERSION MATCHES "^[0-9].+$")
- set(MSVC_VERSION_FLAG "-fms-compatibility-version=${MSVC_COMPAT_VERSION}")
- # Add this flag into the host build if this is clang-cl.
- if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
- append("${MSVC_VERSION_FLAG}" CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
- elseif (COMPILER_RT_TEST_COMPILER_ID MATCHES "Clang")
- # Add this flag to test compiles to suppress clang's auto-detection
- # logic.
- append("${MSVC_VERSION_FLAG}" COMPILER_RT_TEST_COMPILER_CFLAGS)
- endif()
- endif()
- endif()
-
- # Generate the COMPILER_RT_SUPPORTED_ARCH list.
- if(ANDROID)
- # Examine compiler output to determine target architecture.
- detect_target_arch()
- set(COMPILER_RT_OS_SUFFIX "-android")
- elseif(NOT APPLE) # Supported archs for Apple platforms are generated later
- if(COMPILER_RT_DEFAULT_TARGET_ONLY)
- add_default_target_arch(${COMPILER_RT_DEFAULT_TARGET_ARCH})
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "i[2-6]86|x86|amd64")
- if(NOT MSVC)
- test_target_arch(x86_64 "" "-m64")
- test_target_arch(i386 __i386__ "-m32")
- else()
- if (CMAKE_SIZEOF_VOID_P EQUAL 4)
- test_target_arch(i386 "" "")
- else()
- test_target_arch(x86_64 "" "")
- endif()
- endif()
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "powerpc64le|ppc64le")
- test_target_arch(powerpc64le "" "-m64")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "powerpc")
- test_target_arch(powerpc "" "-m32")
- test_target_arch(powerpc64 "" "-m64")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "s390x")
- test_target_arch(s390x "" "")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "sparc")
- test_target_arch(sparc "" "-m32")
- test_target_arch(sparcv9 "" "-m64")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "mipsel|mips64el")
- # Gcc doesn't accept -m32/-m64 so we do the next best thing and use
- # -mips32r5/-mips64r5. We don't use -mips1/-mips3 because we want to match
- # clang's default CPU's. In the 64-bit case, we must also specify the ABI
- # since the default ABI differs between gcc and clang.
- # FIXME: Ideally, we would build the N32 library too.
- test_target_arch(mipsel "" "-mips32r5" "-mabi=32" "-D_LARGEFILE_SOURCE" "-D_FILE_OFFSET_BITS=64")
- test_target_arch(mips64el "" "-mips64r5" "-mabi=64")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "mips")
- test_target_arch(mips "" "-mips32r5" "-mabi=32" "-D_LARGEFILE_SOURCE" "-D_FILE_OFFSET_BITS=64")
- test_target_arch(mips64 "" "-mips64r5" "-mabi=64")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "arm")
- if(WIN32)
- test_target_arch(arm "" "" "")
- else()
- test_target_arch(arm "" "-march=armv7-a" "-mfloat-abi=soft")
- test_target_arch(armhf "" "-march=armv7-a" "-mfloat-abi=hard")
- test_target_arch(armv6m "" "-march=armv6m" "-mfloat-abi=soft")
- endif()
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "avr")
- test_target_arch(avr "__AVR__" "--target=avr")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "aarch32")
- test_target_arch(aarch32 "" "-march=armv8-a")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "aarch64")
- test_target_arch(aarch64 "" "-march=armv8-a")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "riscv32")
- test_target_arch(riscv32 "" "")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "riscv64")
- test_target_arch(riscv64 "" "")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "wasm32")
- test_target_arch(wasm32 "" "--target=wasm32-unknown-unknown")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "wasm64")
- test_target_arch(wasm64 "" "--target=wasm64-unknown-unknown")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "ve")
- test_target_arch(ve "__ve__" "--target=ve-unknown-none")
- endif()
- set(COMPILER_RT_OS_SUFFIX "")
- endif()
-endmacro()
Index: create-15.0.4-compiler-rt-p5600-patch/llvm-15.0.4-new/compiler-rt/cmake
===================================================================
--- create-15.0.4-compiler-rt-p5600-patch/llvm-15.0.4-new/compiler-rt/cmake (revision 39)
+++ create-15.0.4-compiler-rt-p5600-patch/llvm-15.0.4-new/compiler-rt/cmake (nonexistent)
Property changes on: create-15.0.4-compiler-rt-p5600-patch/llvm-15.0.4-new/compiler-rt/cmake
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-compiler-rt-p5600-patch/llvm-15.0.4-new/compiler-rt
===================================================================
--- create-15.0.4-compiler-rt-p5600-patch/llvm-15.0.4-new/compiler-rt (revision 39)
+++ create-15.0.4-compiler-rt-p5600-patch/llvm-15.0.4-new/compiler-rt (nonexistent)
Property changes on: create-15.0.4-compiler-rt-p5600-patch/llvm-15.0.4-new/compiler-rt
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-compiler-rt-p5600-patch/llvm-15.0.4-new
===================================================================
--- create-15.0.4-compiler-rt-p5600-patch/llvm-15.0.4-new (revision 39)
+++ create-15.0.4-compiler-rt-p5600-patch/llvm-15.0.4-new (nonexistent)
Property changes on: create-15.0.4-compiler-rt-p5600-patch/llvm-15.0.4-new
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-compiler-rt-p5600-patch/create.patch.sh
===================================================================
--- create-15.0.4-compiler-rt-p5600-patch/create.patch.sh (revision 39)
+++ create-15.0.4-compiler-rt-p5600-patch/create.patch.sh (nonexistent)
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-VERSION=15.0.4
-
-tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
-mv llvm-$VERSION llvm-$VERSION-orig
-
-cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
-
-diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-compiler-rt-p5600.patch
-
-mv llvm-$VERSION-compiler-rt-p5600.patch ../patches
-
-rm -rf ./llvm-$VERSION
-rm -rf ./llvm-$VERSION-orig
Property changes on: create-15.0.4-compiler-rt-p5600-patch/create.patch.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: create-15.0.4-compiler-rt-p5600-patch
===================================================================
--- create-15.0.4-compiler-rt-p5600-patch (revision 39)
+++ create-15.0.4-compiler-rt-p5600-patch (nonexistent)
Property changes on: create-15.0.4-compiler-rt-p5600-patch
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-llvm-versioning-patch/file.list
===================================================================
--- create-13.0.0-llvm-versioning-patch/file.list (revision 39)
+++ create-13.0.0-llvm-versioning-patch/file.list (nonexistent)
@@ -1 +0,0 @@
-llvm-13.0.0/llvm/tools/llvm-config/llvm-config.cpp
Index: create-13.0.0-llvm-versioning-patch/create.patch.sh
===================================================================
--- create-13.0.0-llvm-versioning-patch/create.patch.sh (revision 39)
+++ create-13.0.0-llvm-versioning-patch/create.patch.sh (nonexistent)
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-VERSION=13.0.0
-
-tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
-mv llvm-$VERSION llvm-$VERSION-orig
-
-cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
-
-diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-llvm-versioning.patch
-
-mv llvm-$VERSION-llvm-versioning.patch ../patches
-
-rm -rf ./llvm-$VERSION
-rm -rf ./llvm-$VERSION-orig
Property changes on: create-13.0.0-llvm-versioning-patch/create.patch.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: create-13.0.0-llvm-versioning-patch/llvm-13.0.0-new/llvm/tools/llvm-config/llvm-config.cpp
===================================================================
--- create-13.0.0-llvm-versioning-patch/llvm-13.0.0-new/llvm/tools/llvm-config/llvm-config.cpp (revision 39)
+++ create-13.0.0-llvm-versioning-patch/llvm-13.0.0-new/llvm/tools/llvm-config/llvm-config.cpp (nonexistent)
@@ -1,740 +0,0 @@
-//===-- llvm-config.cpp - LLVM project configuration utility --------------===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-//
-// This tool encapsulates information about an LLVM project configuration for
-// use by other project's build environments (to determine installed path,
-// available features, required libraries, etc.).
-//
-// Note that although this tool *may* be used by some parts of LLVM's build
-// itself (i.e., the Makefiles use it to compute required libraries when linking
-// tools), this tool is primarily designed to support external projects.
-//
-//===----------------------------------------------------------------------===//
-
-#include "llvm/Config/llvm-config.h"
-#include "llvm/ADT/STLExtras.h"
-#include "llvm/ADT/StringMap.h"
-#include "llvm/ADT/StringRef.h"
-#include "llvm/ADT/Triple.h"
-#include "llvm/ADT/Twine.h"
-#include "llvm/Config/config.h"
-#include "llvm/Support/FileSystem.h"
-#include "llvm/Support/Path.h"
-#include "llvm/Support/WithColor.h"
-#include "llvm/Support/raw_ostream.h"
-#include <cstdlib>
-#include <set>
-#include <unordered_set>
-#include <vector>
-
-using namespace llvm;
-
-// Include the build time variables we can report to the user. This is generated
-// at build time from the BuildVariables.inc.in file by the build system.
-#include "BuildVariables.inc"
-
-// Include the component table. This creates an array of struct
-// AvailableComponent entries, which record the component name, library name,
-// and required components for all of the available libraries.
-//
-// Not all components define a library, we also use "library groups" as a way to
-// create entries for pseudo groups like x86 or all-targets.
-#include "LibraryDependencies.inc"
-
-// Built-in extensions also register their dependencies, but in a separate file,
-// later in the process.
-#include "ExtensionDependencies.inc"
-
-// LinkMode determines what libraries and flags are returned by llvm-config.
-enum LinkMode {
- // LinkModeAuto will link with the default link mode for the installation,
- // which is dependent on the value of LLVM_LINK_LLVM_DYLIB, and fall back
- // to the alternative if the required libraries are not available.
- LinkModeAuto = 0,
-
- // LinkModeShared will link with the dynamic component libraries if they
- // exist, and return an error otherwise.
- LinkModeShared = 1,
-
- // LinkModeStatic will link with the static component libraries if they
- // exist, and return an error otherwise.
- LinkModeStatic = 2,
-};
-
-/// Traverse a single component adding to the topological ordering in
-/// \arg RequiredLibs.
-///
-/// \param Name - The component to traverse.
-/// \param ComponentMap - A prebuilt map of component names to descriptors.
-/// \param VisitedComponents [in] [out] - The set of already visited components.
-/// \param RequiredLibs [out] - The ordered list of required
-/// libraries.
-/// \param GetComponentNames - Get the component names instead of the
-/// library name.
-static void VisitComponent(const std::string &Name,
- const StringMap<AvailableComponent *> &ComponentMap,
- std::set<AvailableComponent *> &VisitedComponents,
- std::vector<std::string> &RequiredLibs,
- bool IncludeNonInstalled, bool GetComponentNames,
- const std::function<std::string(const StringRef &)>
- *GetComponentLibraryPath,
- std::vector<std::string> *Missing,
- const std::string &DirSep) {
- // Lookup the component.
- AvailableComponent *AC = ComponentMap.lookup(Name);
- if (!AC) {
- errs() << "Can't find component: '" << Name << "' in the map. Available components are: ";
- for (const auto &Component : ComponentMap) {
- errs() << "'" << Component.first() << "' ";
- }
- errs() << "\n";
- report_fatal_error("abort");
- }
- assert(AC && "Invalid component name!");
-
- // Add to the visited table.
- if (!VisitedComponents.insert(AC).second) {
- // We are done if the component has already been visited.
- return;
- }
-
- // Only include non-installed components if requested.
- if (!AC->IsInstalled && !IncludeNonInstalled)
- return;
-
- // Otherwise, visit all the dependencies.
- for (unsigned i = 0; AC->RequiredLibraries[i]; ++i) {
- VisitComponent(AC->RequiredLibraries[i], ComponentMap, VisitedComponents,
- RequiredLibs, IncludeNonInstalled, GetComponentNames,
- GetComponentLibraryPath, Missing, DirSep);
- }
-
- // Special handling for the special 'extensions' component. Its content is
- // not populated by llvm-build, but later in the process and loaded from
- // ExtensionDependencies.inc.
- if (Name == "extensions") {
- for (auto const &AvailableExtension : AvailableExtensions) {
- for (const char *const *Iter = &AvailableExtension.RequiredLibraries[0];
- *Iter; ++Iter) {
- AvailableComponent *AC = ComponentMap.lookup(*Iter);
- if (!AC) {
- RequiredLibs.push_back(*Iter);
- } else {
- VisitComponent(*Iter, ComponentMap, VisitedComponents, RequiredLibs,
- IncludeNonInstalled, GetComponentNames,
- GetComponentLibraryPath, Missing, DirSep);
- }
- }
- }
- }
-
- if (GetComponentNames) {
- RequiredLibs.push_back(Name);
- return;
- }
-
- // Add to the required library list.
- if (AC->Library) {
- if (Missing && GetComponentLibraryPath) {
- std::string path = (*GetComponentLibraryPath)(AC->Library);
- if (DirSep == "\\") {
- std::replace(path.begin(), path.end(), '/', '\\');
- }
- if (!sys::fs::exists(path))
- Missing->push_back(path);
- }
- RequiredLibs.push_back(AC->Library);
- }
-}
-
-/// Compute the list of required libraries for a given list of
-/// components, in an order suitable for passing to a linker (that is, libraries
-/// appear prior to their dependencies).
-///
-/// \param Components - The names of the components to find libraries for.
-/// \param IncludeNonInstalled - Whether non-installed components should be
-/// reported.
-/// \param GetComponentNames - True if one would prefer the component names.
-static std::vector<std::string> ComputeLibsForComponents(
- const std::vector<StringRef> &Components, bool IncludeNonInstalled,
- bool GetComponentNames, const std::function<std::string(const StringRef &)>
- *GetComponentLibraryPath,
- std::vector<std::string> *Missing, const std::string &DirSep) {
- std::vector<std::string> RequiredLibs;
- std::set<AvailableComponent *> VisitedComponents;
-
- // Build a map of component names to information.
- StringMap<AvailableComponent *> ComponentMap;
- for (unsigned i = 0; i != array_lengthof(AvailableComponents); ++i) {
- AvailableComponent *AC = &AvailableComponents[i];
- ComponentMap[AC->Name] = AC;
- }
-
- // Visit the components.
- for (unsigned i = 0, e = Components.size(); i != e; ++i) {
- // Users are allowed to provide mixed case component names.
- std::string ComponentLower = Components[i].lower();
-
- // Validate that the user supplied a valid component name.
- if (!ComponentMap.count(ComponentLower)) {
- llvm::errs() << "llvm-config: unknown component name: " << Components[i]
- << "\n";
- exit(1);
- }
-
- VisitComponent(ComponentLower, ComponentMap, VisitedComponents,
- RequiredLibs, IncludeNonInstalled, GetComponentNames,
- GetComponentLibraryPath, Missing, DirSep);
- }
-
- // The list is now ordered with leafs first, we want the libraries to printed
- // in the reverse order of dependency.
- std::reverse(RequiredLibs.begin(), RequiredLibs.end());
-
- return RequiredLibs;
-}
-
-/* *** */
-
-static void usage() {
- errs() << "\
-usage: llvm-config <OPTION>... [<COMPONENT>...]\n\
-\n\
-Get various configuration information needed to compile programs which use\n\
-LLVM. Typically called from 'configure' scripts. Examples:\n\
- llvm-config --cxxflags\n\
- llvm-config --ldflags\n\
- llvm-config --libs engine bcreader scalaropts\n\
-\n\
-Options:\n\
- --version Print LLVM version.\n\
- --prefix Print the installation prefix.\n\
- --src-root Print the source root LLVM was built from.\n\
- --obj-root Print the object root used to build LLVM.\n\
- --bindir Directory containing LLVM executables.\n\
- --includedir Directory containing LLVM headers.\n\
- --libdir Directory containing LLVM libraries.\n\
- --cmakedir Directory containing LLVM cmake modules.\n\
- --cppflags C preprocessor flags for files that include LLVM headers.\n\
- --cflags C compiler flags for files that include LLVM headers.\n\
- --cxxflags C++ compiler flags for files that include LLVM headers.\n\
- --ldflags Print Linker flags.\n\
- --system-libs System Libraries needed to link against LLVM components.\n\
- --libs Libraries needed to link against LLVM components.\n\
- --libnames Bare library names for in-tree builds.\n\
- --libfiles Fully qualified library filenames for makefile depends.\n\
- --components List of all possible components.\n\
- --targets-built List of all targets currently built.\n\
- --host-target Target triple used to configure LLVM.\n\
- --build-mode Print build mode of LLVM tree (e.g. Debug or Release).\n\
- --assertion-mode Print assertion mode of LLVM tree (ON or OFF).\n\
- --build-system Print the build system used to build LLVM (always cmake).\n\
- --has-rtti Print whether or not LLVM was built with rtti (YES or NO).\n\
- --shared-mode Print how the provided components can be collectively linked (`shared` or `static`).\n\
- --link-shared Link the components as shared libraries.\n\
- --link-static Link the component libraries statically.\n\
- --ignore-libllvm Ignore libLLVM and link component libraries instead.\n\
-Typical components:\n\
- all All LLVM libraries (default).\n\
- engine Either a native JIT or a bitcode interpreter.\n";
- exit(1);
-}
-
-/// Compute the path to the main executable.
-std::string GetExecutablePath(const char *Argv0) {
- // This just needs to be some symbol in the binary; C++ doesn't
- // allow taking the address of ::main however.
- void *P = (void *)(intptr_t)GetExecutablePath;
- return llvm::sys::fs::getMainExecutable(Argv0, P);
-}
-
-/// Expand the semi-colon delimited LLVM_DYLIB_COMPONENTS into
-/// the full list of components.
-std::vector<std::string> GetAllDyLibComponents(const bool IsInDevelopmentTree,
- const bool GetComponentNames,
- const std::string &DirSep) {
- std::vector<StringRef> DyLibComponents;
-
- StringRef DyLibComponentsStr(LLVM_DYLIB_COMPONENTS);
- size_t Offset = 0;
- while (true) {
- const size_t NextOffset = DyLibComponentsStr.find(';', Offset);
- DyLibComponents.push_back(DyLibComponentsStr.substr(Offset, NextOffset-Offset));
- if (NextOffset == std::string::npos) {
- break;
- }
- Offset = NextOffset + 1;
- }
-
- assert(!DyLibComponents.empty());
-
- return ComputeLibsForComponents(DyLibComponents,
- /*IncludeNonInstalled=*/IsInDevelopmentTree,
- GetComponentNames, nullptr, nullptr, DirSep);
-}
-
-int main(int argc, char **argv) {
- std::vector<StringRef> Components;
- bool PrintLibs = false, PrintLibNames = false, PrintLibFiles = false;
- bool PrintSystemLibs = false, PrintSharedMode = false;
- bool HasAnyOption = false;
-
- // llvm-config is designed to support being run both from a development tree
- // and from an installed path. We try and auto-detect which case we are in so
- // that we can report the correct information when run from a development
- // tree.
- bool IsInDevelopmentTree;
- enum { CMakeStyle, CMakeBuildModeStyle } DevelopmentTreeLayout;
- llvm::SmallString<256> CurrentPath(GetExecutablePath(argv[0]));
- std::string CurrentExecPrefix;
- std::string ActiveObjRoot;
-
- // If CMAKE_CFG_INTDIR is given, honor it as build mode.
- char const *build_mode = LLVM_BUILDMODE;
-#if defined(CMAKE_CFG_INTDIR)
- if (!(CMAKE_CFG_INTDIR[0] == '.' && CMAKE_CFG_INTDIR[1] == '\0'))
- build_mode = CMAKE_CFG_INTDIR;
-#endif
-
- // Create an absolute path, and pop up one directory (we expect to be inside a
- // bin dir).
- sys::fs::make_absolute(CurrentPath);
- CurrentExecPrefix =
- sys::path::parent_path(sys::path::parent_path(CurrentPath)).str();
-
- // Check to see if we are inside a development tree by comparing to possible
- // locations (prefix style or CMake style).
- if (sys::fs::equivalent(CurrentExecPrefix, LLVM_OBJ_ROOT)) {
- IsInDevelopmentTree = true;
- DevelopmentTreeLayout = CMakeStyle;
- ActiveObjRoot = LLVM_OBJ_ROOT;
- } else if (sys::fs::equivalent(sys::path::parent_path(CurrentExecPrefix),
- LLVM_OBJ_ROOT)) {
- IsInDevelopmentTree = true;
- DevelopmentTreeLayout = CMakeBuildModeStyle;
- ActiveObjRoot = LLVM_OBJ_ROOT;
- } else {
- IsInDevelopmentTree = false;
- DevelopmentTreeLayout = CMakeStyle; // Initialized to avoid warnings.
- }
-
- // Compute various directory locations based on the derived location
- // information.
- std::string ActivePrefix, ActiveBinDir, ActiveIncludeDir, ActiveLibDir,
- ActiveCMakeDir;
- std::string ActiveIncludeOption;
- if (IsInDevelopmentTree) {
- ActiveIncludeDir = std::string(LLVM_SRC_ROOT) + "/include";
- ActivePrefix = CurrentExecPrefix;
-
- // CMake organizes the products differently than a normal prefix style
- // layout.
- switch (DevelopmentTreeLayout) {
- case CMakeStyle:
- ActiveBinDir = ActiveObjRoot + "/bin";
- ActiveLibDir = ActiveObjRoot + "/lib" + LLVM_LIBDIR_SUFFIX;
- ActiveCMakeDir = ActiveLibDir + "/cmake/llvm";
- break;
- case CMakeBuildModeStyle:
- // FIXME: Should we consider the build-mode-specific path as the prefix?
- ActivePrefix = ActiveObjRoot;
- ActiveBinDir = ActiveObjRoot + "/" + build_mode + "/bin";
- ActiveLibDir =
- ActiveObjRoot + "/" + build_mode + "/lib" + LLVM_LIBDIR_SUFFIX;
- // The CMake directory isn't separated by build mode.
- ActiveCMakeDir =
- ActivePrefix + "/lib" + LLVM_LIBDIR_SUFFIX + "/cmake/llvm";
- break;
- }
-
- // We need to include files from both the source and object trees.
- ActiveIncludeOption =
- ("-I" + ActiveIncludeDir + " " + "-I" + ActiveObjRoot + "/include");
- } else {
- ActivePrefix = CurrentExecPrefix;
- ActiveIncludeDir = ActivePrefix + "/include";
- SmallString<256> path(StringRef(LLVM_TOOLS_INSTALL_DIR));
- sys::fs::make_absolute(ActivePrefix, path);
- ActiveBinDir = std::string(path.str());
- ActiveLibDir = ActivePrefix + "/lib" + LLVM_LIBDIR_SUFFIX;
- ActiveCMakeDir = ActiveLibDir + "/cmake/llvm";
- ActiveIncludeOption = "-I" + ActiveIncludeDir;
- }
-
- /// We only use `shared library` mode in cases where the static library form
- /// of the components provided are not available; note however that this is
- /// skipped if we're run from within the build dir. However, once installed,
- /// we still need to provide correct output when the static archives are
- /// removed or, as in the case of CMake's `BUILD_SHARED_LIBS`, never present
- /// in the first place. This can't be done at configure/build time.
-
- StringRef SharedExt, SharedVersionedExt, SharedDir, SharedPrefix, StaticExt,
- StaticPrefix, StaticDir = "lib";
- std::string DirSep = "/";
- const Triple HostTriple(Triple::normalize(LLVM_HOST_TRIPLE));
- if (HostTriple.isOSWindows()) {
- SharedExt = "dll";
- SharedVersionedExt = LLVM_DYLIB_VERSION ".dll";
- if (HostTriple.isOSCygMing()) {
- SharedPrefix = "lib";
- StaticExt = "a";
- StaticPrefix = "lib";
- } else {
- StaticExt = "lib";
- DirSep = "\\";
- std::replace(ActiveObjRoot.begin(), ActiveObjRoot.end(), '/', '\\');
- std::replace(ActivePrefix.begin(), ActivePrefix.end(), '/', '\\');
- std::replace(ActiveBinDir.begin(), ActiveBinDir.end(), '/', '\\');
- std::replace(ActiveLibDir.begin(), ActiveLibDir.end(), '/', '\\');
- std::replace(ActiveCMakeDir.begin(), ActiveCMakeDir.end(), '/', '\\');
- std::replace(ActiveIncludeOption.begin(), ActiveIncludeOption.end(), '/',
- '\\');
- }
- SharedDir = ActiveBinDir;
- StaticDir = ActiveLibDir;
- } else if (HostTriple.isOSDarwin()) {
- SharedExt = "dylib";
- SharedVersionedExt = LLVM_DYLIB_VERSION ".dylib";
- StaticExt = "a";
- StaticDir = SharedDir = ActiveLibDir;
- StaticPrefix = SharedPrefix = "lib";
- } else {
- // default to the unix values:
- SharedExt = "so";
- StaticExt = "a";
- StaticDir = SharedDir = ActiveLibDir;
- StaticPrefix = SharedPrefix = "lib";
- }
-
- const bool BuiltDyLib = !!LLVM_ENABLE_DYLIB;
-
- /// CMake style shared libs, ie each component is in a shared library.
- const bool BuiltSharedLibs = !!LLVM_ENABLE_SHARED;
-
- bool DyLibExists = false;
- const std::string DyLibName =
- (SharedPrefix + "LLVM." + SharedExt).str();
-
- // If LLVM_LINK_DYLIB is ON, the single shared library will be returned
- // for "--libs", etc, if they exist. This behaviour can be overridden with
- // --link-static or --link-shared.
- bool LinkDyLib = !!LLVM_LINK_DYLIB;
-
- if (BuiltDyLib) {
- std::string path((SharedDir + DirSep + DyLibName).str());
- if (DirSep == "\\") {
- std::replace(path.begin(), path.end(), '/', '\\');
- }
- DyLibExists = sys::fs::exists(path);
- if (!DyLibExists) {
- // The shared library does not exist: don't error unless the user
- // explicitly passes --link-shared.
- LinkDyLib = false;
- }
- }
- LinkMode LinkMode =
- (LinkDyLib || BuiltSharedLibs) ? LinkModeShared : LinkModeAuto;
-
- /// Get the component's library name without the lib prefix and the
- /// extension. Returns true if Lib is in a recognized format.
- auto GetComponentLibraryNameSlice = [&](const StringRef &Lib,
- StringRef &Out) {
- if (Lib.startswith("lib")) {
- unsigned FromEnd;
- if (Lib.endswith(StaticExt)) {
- FromEnd = StaticExt.size() + 1;
- } else if (Lib.endswith(SharedExt)) {
- FromEnd = SharedExt.size() + 1;
- } else {
- FromEnd = 0;
- }
-
- if (FromEnd != 0) {
- Out = Lib.slice(3, Lib.size() - FromEnd);
- return true;
- }
- }
-
- return false;
- };
- /// Maps Unixizms to the host platform.
- auto GetComponentLibraryFileName = [&](const StringRef &Lib,
- const bool Shared) {
- std::string LibFileName;
- if (Shared) {
- if (Lib == DyLibName) {
- // Treat the DyLibName specially. It is not a component library and
- // already has the necessary prefix and suffix (e.g. `.so`) added so
- // just return it unmodified.
- assert(Lib.endswith(SharedExt) && "DyLib is missing suffix");
- LibFileName = std::string(Lib);
- } else {
- LibFileName = (SharedPrefix + Lib + "." + SharedExt).str();
- }
- } else {
- // default to static
- LibFileName = (StaticPrefix + Lib + "." + StaticExt).str();
- }
-
- return LibFileName;
- };
- /// Get the full path for a possibly shared component library.
- auto GetComponentLibraryPath = [&](const StringRef &Name, const bool Shared) {
- auto LibFileName = GetComponentLibraryFileName(Name, Shared);
- if (Shared) {
- return (SharedDir + DirSep + LibFileName).str();
- } else {
- return (StaticDir + DirSep + LibFileName).str();
- }
- };
-
- raw_ostream &OS = outs();
- for (int i = 1; i != argc; ++i) {
- StringRef Arg = argv[i];
-
- if (Arg.startswith("-")) {
- HasAnyOption = true;
- if (Arg == "--version") {
- OS << PACKAGE_VERSION << '\n';
- } else if (Arg == "--prefix") {
- OS << ActivePrefix << '\n';
- } else if (Arg == "--bindir") {
- OS << ActiveBinDir << '\n';
- } else if (Arg == "--includedir") {
- OS << ActiveIncludeDir << '\n';
- } else if (Arg == "--libdir") {
- OS << ActiveLibDir << '\n';
- } else if (Arg == "--cmakedir") {
- OS << ActiveCMakeDir << '\n';
- } else if (Arg == "--cppflags") {
- OS << ActiveIncludeOption << ' ' << LLVM_CPPFLAGS << '\n';
- } else if (Arg == "--cflags") {
- OS << ActiveIncludeOption << ' ' << LLVM_CFLAGS << '\n';
- } else if (Arg == "--cxxflags") {
- OS << ActiveIncludeOption << ' ' << LLVM_CXXFLAGS << '\n';
- } else if (Arg == "--ldflags") {
- OS << ((HostTriple.isWindowsMSVCEnvironment()) ? "-LIBPATH:" : "-L")
- << ActiveLibDir << ' ' << LLVM_LDFLAGS << '\n';
- } else if (Arg == "--system-libs") {
- PrintSystemLibs = true;
- } else if (Arg == "--libs") {
- PrintLibs = true;
- } else if (Arg == "--libnames") {
- PrintLibNames = true;
- } else if (Arg == "--libfiles") {
- PrintLibFiles = true;
- } else if (Arg == "--components") {
- /// If there are missing static archives and a dylib was
- /// built, print LLVM_DYLIB_COMPONENTS instead of everything
- /// in the manifest.
- std::vector<std::string> Components;
- for (unsigned j = 0; j != array_lengthof(AvailableComponents); ++j) {
- // Only include non-installed components when in a development tree.
- if (!AvailableComponents[j].IsInstalled && !IsInDevelopmentTree)
- continue;
-
- Components.push_back(AvailableComponents[j].Name);
- if (AvailableComponents[j].Library && !IsInDevelopmentTree) {
- std::string path(
- GetComponentLibraryPath(AvailableComponents[j].Library, false));
- if (DirSep == "\\") {
- std::replace(path.begin(), path.end(), '/', '\\');
- }
- if (DyLibExists && !sys::fs::exists(path)) {
- Components =
- GetAllDyLibComponents(IsInDevelopmentTree, true, DirSep);
- llvm::sort(Components);
- break;
- }
- }
- }
-
- for (unsigned I = 0; I < Components.size(); ++I) {
- if (I) {
- OS << ' ';
- }
-
- OS << Components[I];
- }
- OS << '\n';
- } else if (Arg == "--targets-built") {
- OS << LLVM_TARGETS_BUILT << '\n';
- } else if (Arg == "--host-target") {
- OS << Triple::normalize(LLVM_DEFAULT_TARGET_TRIPLE) << '\n';
- } else if (Arg == "--build-mode") {
- OS << build_mode << '\n';
- } else if (Arg == "--assertion-mode") {
-#if defined(NDEBUG)
- OS << "OFF\n";
-#else
- OS << "ON\n";
-#endif
- } else if (Arg == "--build-system") {
- OS << LLVM_BUILD_SYSTEM << '\n';
- } else if (Arg == "--has-rtti") {
- OS << (LLVM_HAS_RTTI ? "YES" : "NO") << '\n';
- } else if (Arg == "--shared-mode") {
- PrintSharedMode = true;
- } else if (Arg == "--obj-root") {
- OS << ActivePrefix << '\n';
- } else if (Arg == "--src-root") {
- OS << LLVM_SRC_ROOT << '\n';
- } else if (Arg == "--ignore-libllvm") {
- LinkDyLib = false;
- LinkMode = BuiltSharedLibs ? LinkModeShared : LinkModeAuto;
- } else if (Arg == "--link-shared") {
- LinkMode = LinkModeShared;
- } else if (Arg == "--link-static") {
- LinkMode = LinkModeStatic;
- } else {
- usage();
- }
- } else {
- Components.push_back(Arg);
- }
- }
-
- if (!HasAnyOption)
- usage();
-
- if (LinkMode == LinkModeShared && !DyLibExists && !BuiltSharedLibs) {
- WithColor::error(errs(), "llvm-config") << DyLibName << " is missing\n";
- return 1;
- }
-
- if (PrintLibs || PrintLibNames || PrintLibFiles || PrintSystemLibs ||
- PrintSharedMode) {
-
- if (PrintSharedMode && BuiltSharedLibs) {
- OS << "shared\n";
- return 0;
- }
-
- // If no components were specified, default to "all".
- if (Components.empty())
- Components.push_back("all");
-
- // Construct the list of all the required libraries.
- std::function<std::string(const StringRef &)>
- GetComponentLibraryPathFunction = [&](const StringRef &Name) {
- return GetComponentLibraryPath(Name, LinkMode == LinkModeShared);
- };
- std::vector<std::string> MissingLibs;
- std::vector<std::string> RequiredLibs = ComputeLibsForComponents(
- Components,
- /*IncludeNonInstalled=*/IsInDevelopmentTree, false,
- &GetComponentLibraryPathFunction, &MissingLibs, DirSep);
- if (!MissingLibs.empty()) {
- switch (LinkMode) {
- case LinkModeShared:
- if (LinkDyLib && !BuiltSharedLibs)
- break;
- // Using component shared libraries.
- for (auto &Lib : MissingLibs)
- WithColor::error(errs(), "llvm-config") << "missing: " << Lib << "\n";
- return 1;
- case LinkModeAuto:
- if (DyLibExists) {
- LinkMode = LinkModeShared;
- break;
- }
- WithColor::error(errs(), "llvm-config")
- << "component libraries and shared library\n\n";
- LLVM_FALLTHROUGH;
- case LinkModeStatic:
- for (auto &Lib : MissingLibs)
- WithColor::error(errs(), "llvm-config") << "missing: " << Lib << "\n";
- return 1;
- }
- } else if (LinkMode == LinkModeAuto) {
- LinkMode = LinkModeStatic;
- }
-
- if (PrintSharedMode) {
- std::unordered_set<std::string> FullDyLibComponents;
- std::vector<std::string> DyLibComponents =
- GetAllDyLibComponents(IsInDevelopmentTree, false, DirSep);
-
- for (auto &Component : DyLibComponents) {
- FullDyLibComponents.insert(Component);
- }
- DyLibComponents.clear();
-
- for (auto &Lib : RequiredLibs) {
- if (!FullDyLibComponents.count(Lib)) {
- OS << "static\n";
- return 0;
- }
- }
- FullDyLibComponents.clear();
-
- if (LinkMode == LinkModeShared) {
- OS << "shared\n";
- return 0;
- } else {
- OS << "static\n";
- return 0;
- }
- }
-
- if (PrintLibs || PrintLibNames || PrintLibFiles) {
-
- auto PrintForLib = [&](const StringRef &Lib) {
- const bool Shared = LinkMode == LinkModeShared;
- if (PrintLibNames) {
- OS << GetComponentLibraryFileName(Lib, Shared);
- } else if (PrintLibFiles) {
- OS << GetComponentLibraryPath(Lib, Shared);
- } else if (PrintLibs) {
- // On Windows, output full path to library without parameters.
- // Elsewhere, if this is a typical library name, include it using -l.
- if (HostTriple.isWindowsMSVCEnvironment()) {
- OS << GetComponentLibraryPath(Lib, Shared);
- } else {
- StringRef LibName;
- if (GetComponentLibraryNameSlice(Lib, LibName)) {
- // Extract library name (remove prefix and suffix).
- OS << "-l" << LibName;
- } else {
- // Lib is already a library name without prefix and suffix.
- OS << "-l" << Lib;
- }
- }
- }
- };
-
- if (LinkMode == LinkModeShared && LinkDyLib) {
- PrintForLib(DyLibName);
- } else {
- for (unsigned i = 0, e = RequiredLibs.size(); i != e; ++i) {
- auto Lib = RequiredLibs[i];
- if (i)
- OS << ' ';
-
- PrintForLib(Lib);
- }
- }
- OS << '\n';
- }
-
- // Print SYSTEM_LIBS after --libs.
- // FIXME: Each LLVM component may have its dependent system libs.
- if (PrintSystemLibs) {
- // Output system libraries only if linking against a static
- // library (since the shared library links to all system libs
- // already)
- OS << (LinkMode == LinkModeStatic ? LLVM_SYSTEM_LIBS : "") << '\n';
- }
- } else if (!Components.empty()) {
- WithColor::error(errs(), "llvm-config")
- << "components given, but unused\n\n";
- usage();
- }
-
- return 0;
-}
Index: create-13.0.0-llvm-versioning-patch/llvm-13.0.0-new/llvm/tools/llvm-config
===================================================================
--- create-13.0.0-llvm-versioning-patch/llvm-13.0.0-new/llvm/tools/llvm-config (revision 39)
+++ create-13.0.0-llvm-versioning-patch/llvm-13.0.0-new/llvm/tools/llvm-config (nonexistent)
Property changes on: create-13.0.0-llvm-versioning-patch/llvm-13.0.0-new/llvm/tools/llvm-config
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-llvm-versioning-patch/llvm-13.0.0-new/llvm/tools
===================================================================
--- create-13.0.0-llvm-versioning-patch/llvm-13.0.0-new/llvm/tools (revision 39)
+++ create-13.0.0-llvm-versioning-patch/llvm-13.0.0-new/llvm/tools (nonexistent)
Property changes on: create-13.0.0-llvm-versioning-patch/llvm-13.0.0-new/llvm/tools
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-llvm-versioning-patch/llvm-13.0.0-new/llvm
===================================================================
--- create-13.0.0-llvm-versioning-patch/llvm-13.0.0-new/llvm (revision 39)
+++ create-13.0.0-llvm-versioning-patch/llvm-13.0.0-new/llvm (nonexistent)
Property changes on: create-13.0.0-llvm-versioning-patch/llvm-13.0.0-new/llvm
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-llvm-versioning-patch/llvm-13.0.0-new
===================================================================
--- create-13.0.0-llvm-versioning-patch/llvm-13.0.0-new (revision 39)
+++ create-13.0.0-llvm-versioning-patch/llvm-13.0.0-new (nonexistent)
Property changes on: create-13.0.0-llvm-versioning-patch/llvm-13.0.0-new
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-llvm-versioning-patch
===================================================================
--- create-13.0.0-llvm-versioning-patch (revision 39)
+++ create-13.0.0-llvm-versioning-patch (nonexistent)
Property changes on: create-13.0.0-llvm-versioning-patch
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-polly-hack-patch/file.list
===================================================================
--- create-13.0.0-polly-hack-patch/file.list (revision 39)
+++ create-13.0.0-polly-hack-patch/file.list (nonexistent)
@@ -1 +0,0 @@
-llvm-13.0.0/polly/lib/CMakeLists.txt
Index: create-13.0.0-polly-hack-patch/create.patch.sh
===================================================================
--- create-13.0.0-polly-hack-patch/create.patch.sh (revision 39)
+++ create-13.0.0-polly-hack-patch/create.patch.sh (nonexistent)
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-VERSION=13.0.0
-
-tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
-mv llvm-$VERSION llvm-$VERSION-orig
-
-cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
-
-diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-polly-hack.patch
-
-mv llvm-$VERSION-polly-hack.patch ../patches
-
-rm -rf ./llvm-$VERSION
-rm -rf ./llvm-$VERSION-orig
Property changes on: create-13.0.0-polly-hack-patch/create.patch.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: create-13.0.0-polly-hack-patch/llvm-13.0.0-new/polly/lib/CMakeLists.txt
===================================================================
--- create-13.0.0-polly-hack-patch/llvm-13.0.0-new/polly/lib/CMakeLists.txt (revision 39)
+++ create-13.0.0-polly-hack-patch/llvm-13.0.0-new/polly/lib/CMakeLists.txt (nonexistent)
@@ -1,176 +0,0 @@
-set(LLVM_NO_RTTI 1)
-
-set(ISL_CODEGEN_FILES
- CodeGen/IslAst.cpp
- CodeGen/IslExprBuilder.cpp
- CodeGen/IslNodeBuilder.cpp
- CodeGen/CodeGeneration.cpp)
-
-if (GPU_CODEGEN)
- set (GPGPU_CODEGEN_FILES
- CodeGen/PPCGCodeGeneration.cpp
- CodeGen/ManagedMemoryRewrite.cpp
- )
-endif (GPU_CODEGEN)
-
-# Compile ISL into a separate library.
-add_subdirectory(External)
-
-set(POLLY_HEADER_FILES)
-if (MSVC_IDE OR XCODE)
- file(GLOB_RECURSE POLLY_HEADER_FILES "${POLLY_SOURCE_DIR}/include/polly/*.h")
-endif ()
-
-set(POLLY_COMPONENTS
- Support
- Core
- ScalarOpts
- InstCombine
- TransformUtils
- Analysis
- ipo
- MC
- Passes
- Linker
- IRReader
- Analysis
- # The libraries below are required for darwin: http://PR26392
- BitReader
- MCParser
- Object
- ProfileData
- Target
- Vectorize
-)
-
-# Polly-ACC requires the NVPTX backend to work. Ask LLVM about its libraries.
-if (GPU_CODEGEN)
- # This call emits an error if they NVPTX backend is not enable.
- list(APPEND POLLY_COMPONENTS NVPTX)
-endif ()
-
-# Use an object-library to add the same files to multiple libs without requiring
-# the sources them to be recompiled for each of them.
-add_llvm_pass_plugin(Polly
- NO_MODULE
- SUBPROJECT Polly
- Analysis/DependenceInfo.cpp
- Analysis/PolyhedralInfo.cpp
- Analysis/ScopDetection.cpp
- Analysis/ScopDetectionDiagnostic.cpp
- Analysis/ScopInfo.cpp
- Analysis/ScopBuilder.cpp
- Analysis/ScopGraphPrinter.cpp
- Analysis/ScopPass.cpp
- Analysis/PruneUnprofitable.cpp
- CodeGen/BlockGenerators.cpp
- ${ISL_CODEGEN_FILES}
- CodeGen/LoopGenerators.cpp
- CodeGen/LoopGeneratorsGOMP.cpp
- CodeGen/LoopGeneratorsKMP.cpp
- CodeGen/IRBuilder.cpp
- CodeGen/Utils.cpp
- CodeGen/RuntimeDebugBuilder.cpp
- CodeGen/CodegenCleanup.cpp
- CodeGen/PerfMonitor.cpp
- ${GPGPU_CODEGEN_FILES}
- Exchange/JSONExporter.cpp
- Support/GICHelper.cpp
- Support/SCEVAffinator.cpp
- Support/SCEVValidator.cpp
- Support/RegisterPasses.cpp
- Support/ScopHelper.cpp
- Support/ScopLocation.cpp
- Support/ISLTools.cpp
- Support/DumpModulePass.cpp
- Support/VirtualInstruction.cpp
- Transform/Canonicalization.cpp
- Transform/CodePreparation.cpp
- Transform/DeadCodeElimination.cpp
- Transform/ScheduleOptimizer.cpp
- Transform/ScheduleTreeTransform.cpp
- Transform/FlattenSchedule.cpp
- Transform/FlattenAlgo.cpp
- Transform/ForwardOpTree.cpp
- Transform/DeLICM.cpp
- Transform/ZoneAlgo.cpp
- Transform/Simplify.cpp
- Transform/MaximalStaticExpansion.cpp
- Transform/RewriteByReferenceParameters.cpp
- Transform/ScopInliner.cpp
- Transform/ManualOptimizer.cpp
- Transform/MatmulOptimizer.cpp
- ${POLLY_HEADER_FILES}
-
- LINK_COMPONENTS
- ${POLLY_COMPONENTS}
- )
-set_target_properties(obj.Polly PROPERTIES FOLDER "Polly")
-set_target_properties(Polly PROPERTIES FOLDER "Polly")
-
-if (MSVC_IDE OR XCODE)
- # Configure source groups for Polly source files. By default, in the IDE there
- # will be a source and include folder. In the source folder will be all the
- # source files in a flat list, and in the include folder will be all the
- # headers in a flat list. Sets the CMake source_group for each folder such
- # the organization of the sources and headers in the IDE matches how it is
- # laid out on disk
- setup_polly_source_groups(${CMAKE_CURRENT_LIST_DIR}
- ${CMAKE_CURRENT_LIST_DIR}/../include/polly)
-endif()
-
-# Create the library that can be linked into LLVM's tools and Polly's unittests.
-# It depends on all library it needs, such that with
-# LLVM_POLLY_LINK_INTO_TOOLS=ON, its dependencies like PollyISL are linked as
-# well.
-target_link_libraries(Polly PUBLIC
- ${ISL_TARGET}
-)
-
-# Additional dependencies for Polly-ACC.
-if (GPU_CODEGEN)
- target_link_libraries(Polly PUBLIC PollyPPCG)
-endif ()
-
-if (NOT LLVM_LINK_LLVM_DYLIB AND NOT LLVM_POLLY_LINK_INTO_TOOLS)
- # Polly-ACC requires the NVPTX target to be present in the executable it is linked to
- # Randomly commented to fix build lol
- #set_property(TARGET bugpoint APPEND PROPERTY LINK_LIBRARIES LLVMTarget)
-endif ()
-
-# Create a loadable module Polly.so that can be loaded using
-# LLVM's/clang's "-load" option.
-if (WIN32 OR NOT LLVM_ENABLE_PIC)
- # Add dummy target, either because loadable modules are not supported
- # as on Windows or because PIC code has been disabled
- add_custom_target(LLVMPolly)
- set_target_properties(LLVMPolly PROPERTIES FOLDER "Polly")
-else ()
- add_polly_loadable_module(LLVMPolly
- Plugin/Polly.cpp
- $<TARGET_OBJECTS:obj.Polly>
- )
-
- # Only add the dependencies that are not part of LLVM. The latter are assumed
- # to be already available in the address space the module is loaded into.
- # Adding them once more would have the effect that both copies try to register
- # the same command line options, to which LLVM reacts with an error.
- # If Polly-ACC is enabled, the NVPTX target is also expected to reside in the
- # hosts. This is not the case for bugpoint. Use LLVM_POLLY_LINK_INTO_TOOLS=ON
- # instead which will automatically resolve the additional dependencies by
- # Polly.
- target_link_libraries(LLVMPolly PUBLIC ${ISL_TARGET})
- if (GPU_CODEGEN)
- target_link_libraries(LLVMPolly PUBLIC PollyPPCG)
- endif ()
-
- set_target_properties(LLVMPolly
- PROPERTIES
- LINKER_LANGUAGE CXX
- PREFIX "")
-endif ()
-
-if (TARGET intrinsics_gen)
- # Check if we are building as part of an LLVM build
- add_dependencies(obj.Polly intrinsics_gen)
-endif()
Index: create-13.0.0-polly-hack-patch/llvm-13.0.0-new/polly/lib
===================================================================
--- create-13.0.0-polly-hack-patch/llvm-13.0.0-new/polly/lib (revision 39)
+++ create-13.0.0-polly-hack-patch/llvm-13.0.0-new/polly/lib (nonexistent)
Property changes on: create-13.0.0-polly-hack-patch/llvm-13.0.0-new/polly/lib
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-polly-hack-patch/llvm-13.0.0-new/polly
===================================================================
--- create-13.0.0-polly-hack-patch/llvm-13.0.0-new/polly (revision 39)
+++ create-13.0.0-polly-hack-patch/llvm-13.0.0-new/polly (nonexistent)
Property changes on: create-13.0.0-polly-hack-patch/llvm-13.0.0-new/polly
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-polly-hack-patch/llvm-13.0.0-new
===================================================================
--- create-13.0.0-polly-hack-patch/llvm-13.0.0-new (revision 39)
+++ create-13.0.0-polly-hack-patch/llvm-13.0.0-new (nonexistent)
Property changes on: create-13.0.0-polly-hack-patch/llvm-13.0.0-new
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-polly-hack-patch
===================================================================
--- create-13.0.0-polly-hack-patch (revision 39)
+++ create-13.0.0-polly-hack-patch (nonexistent)
Property changes on: create-13.0.0-polly-hack-patch
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-polly-hack-patch/file.list
===================================================================
--- create-15.0.4-polly-hack-patch/file.list (revision 39)
+++ create-15.0.4-polly-hack-patch/file.list (nonexistent)
@@ -1 +0,0 @@
-llvm-15.0.4/polly/lib/CMakeLists.txt
Index: create-15.0.4-polly-hack-patch/llvm-15.0.4-new/polly/lib/CMakeLists.txt
===================================================================
--- create-15.0.4-polly-hack-patch/llvm-15.0.4-new/polly/lib/CMakeLists.txt (revision 39)
+++ create-15.0.4-polly-hack-patch/llvm-15.0.4-new/polly/lib/CMakeLists.txt (nonexistent)
@@ -1,176 +0,0 @@
-set(LLVM_NO_RTTI 1)
-
-set(ISL_CODEGEN_FILES
- CodeGen/IslAst.cpp
- CodeGen/IslExprBuilder.cpp
- CodeGen/IslNodeBuilder.cpp
- CodeGen/CodeGeneration.cpp)
-
-if (GPU_CODEGEN)
- set (GPGPU_CODEGEN_FILES
- CodeGen/PPCGCodeGeneration.cpp
- CodeGen/ManagedMemoryRewrite.cpp
- )
-endif (GPU_CODEGEN)
-
-# Compile ISL into a separate library.
-add_subdirectory(External)
-
-set(POLLY_HEADER_FILES)
-if (MSVC_IDE OR XCODE)
- file(GLOB_RECURSE POLLY_HEADER_FILES "${POLLY_SOURCE_DIR}/include/polly/*.h")
-endif ()
-
-set(POLLY_COMPONENTS
- Support
- Core
- ScalarOpts
- InstCombine
- TransformUtils
- Analysis
- ipo
- MC
- Passes
- Linker
- IRReader
- Analysis
- # The libraries below are required for darwin: http://PR26392
- BitReader
- MCParser
- Object
- ProfileData
- Target
- Vectorize
-)
-
-# Polly-ACC requires the NVPTX backend to work. Ask LLVM about its libraries.
-if (GPU_CODEGEN)
- # This call emits an error if they NVPTX backend is not enable.
- list(APPEND POLLY_COMPONENTS NVPTX)
-endif ()
-
-# Use an object-library to add the same files to multiple libs without requiring
-# the sources them to be recompiled for each of them.
-add_llvm_pass_plugin(Polly
- NO_MODULE
- SUBPROJECT Polly
- Analysis/DependenceInfo.cpp
- Analysis/PolyhedralInfo.cpp
- Analysis/ScopDetection.cpp
- Analysis/ScopDetectionDiagnostic.cpp
- Analysis/ScopInfo.cpp
- Analysis/ScopBuilder.cpp
- Analysis/ScopGraphPrinter.cpp
- Analysis/ScopPass.cpp
- Analysis/PruneUnprofitable.cpp
- CodeGen/BlockGenerators.cpp
- ${ISL_CODEGEN_FILES}
- CodeGen/LoopGenerators.cpp
- CodeGen/LoopGeneratorsGOMP.cpp
- CodeGen/LoopGeneratorsKMP.cpp
- CodeGen/IRBuilder.cpp
- CodeGen/Utils.cpp
- CodeGen/RuntimeDebugBuilder.cpp
- CodeGen/CodegenCleanup.cpp
- CodeGen/PerfMonitor.cpp
- ${GPGPU_CODEGEN_FILES}
- Exchange/JSONExporter.cpp
- Support/GICHelper.cpp
- Support/SCEVAffinator.cpp
- Support/SCEVValidator.cpp
- Support/RegisterPasses.cpp
- Support/ScopHelper.cpp
- Support/ScopLocation.cpp
- Support/ISLTools.cpp
- Support/DumpModulePass.cpp
- Support/DumpFunctionPass.cpp
- Support/VirtualInstruction.cpp
- Transform/Canonicalization.cpp
- Transform/CodePreparation.cpp
- Transform/DeadCodeElimination.cpp
- Transform/ScheduleOptimizer.cpp
- Transform/ScheduleTreeTransform.cpp
- Transform/FlattenSchedule.cpp
- Transform/FlattenAlgo.cpp
- Transform/ForwardOpTree.cpp
- Transform/DeLICM.cpp
- Transform/ZoneAlgo.cpp
- Transform/Simplify.cpp
- Transform/MaximalStaticExpansion.cpp
- Transform/ScopInliner.cpp
- Transform/ManualOptimizer.cpp
- Transform/MatmulOptimizer.cpp
- ${POLLY_HEADER_FILES}
-
- LINK_COMPONENTS
- ${POLLY_COMPONENTS}
- )
-set_target_properties(obj.Polly PROPERTIES FOLDER "Polly")
-set_target_properties(Polly PROPERTIES FOLDER "Polly")
-
-if (MSVC_IDE OR XCODE)
- # Configure source groups for Polly source files. By default, in the IDE there
- # will be a source and include folder. In the source folder will be all the
- # source files in a flat list, and in the include folder will be all the
- # headers in a flat list. Sets the CMake source_group for each folder such
- # the organization of the sources and headers in the IDE matches how it is
- # laid out on disk
- setup_polly_source_groups(${CMAKE_CURRENT_LIST_DIR}
- ${CMAKE_CURRENT_LIST_DIR}/../include/polly)
-endif()
-
-# Create the library that can be linked into LLVM's tools and Polly's unittests.
-# It depends on all library it needs, such that with
-# LLVM_POLLY_LINK_INTO_TOOLS=ON, its dependencies like PollyISL are linked as
-# well.
-target_link_libraries(Polly PUBLIC
- ${ISL_TARGET}
-)
-
-# Additional dependencies for Polly-ACC.
-if (GPU_CODEGEN)
- target_link_libraries(Polly PUBLIC PollyPPCG)
-endif ()
-
-if (NOT LLVM_LINK_LLVM_DYLIB AND NOT LLVM_POLLY_LINK_INTO_TOOLS)
- # Polly-ACC requires the NVPTX target to be present in the executable it is linked to
- # Randomly commented to fix build lol
- #set_property(TARGET bugpoint APPEND PROPERTY LINK_LIBRARIES LLVMTarget)
-endif ()
-
-# Create a loadable module Polly.so that can be loaded using
-# LLVM's/clang's "-load" option.
-if (WIN32 OR NOT LLVM_ENABLE_PIC)
- # Add dummy target, either because loadable modules are not supported
- # as on Windows or because PIC code has been disabled
- add_custom_target(LLVMPolly)
- set_target_properties(LLVMPolly PROPERTIES FOLDER "Polly")
-else ()
- add_polly_loadable_module(LLVMPolly
- Plugin/Polly.cpp
- $<TARGET_OBJECTS:obj.Polly>
- )
-
- # Only add the dependencies that are not part of LLVM. The latter are assumed
- # to be already available in the address space the module is loaded into.
- # Adding them once more would have the effect that both copies try to register
- # the same command line options, to which LLVM reacts with an error.
- # If Polly-ACC is enabled, the NVPTX target is also expected to reside in the
- # hosts. This is not the case for bugpoint. Use LLVM_POLLY_LINK_INTO_TOOLS=ON
- # instead which will automatically resolve the additional dependencies by
- # Polly.
- target_link_libraries(LLVMPolly PUBLIC ${ISL_TARGET})
- if (GPU_CODEGEN)
- target_link_libraries(LLVMPolly PUBLIC PollyPPCG)
- endif ()
-
- set_target_properties(LLVMPolly
- PROPERTIES
- LINKER_LANGUAGE CXX
- PREFIX "")
-endif ()
-
-if (TARGET intrinsics_gen)
- # Check if we are building as part of an LLVM build
- add_dependencies(obj.Polly intrinsics_gen)
-endif()
Index: create-15.0.4-polly-hack-patch/llvm-15.0.4-new/polly/lib
===================================================================
--- create-15.0.4-polly-hack-patch/llvm-15.0.4-new/polly/lib (revision 39)
+++ create-15.0.4-polly-hack-patch/llvm-15.0.4-new/polly/lib (nonexistent)
Property changes on: create-15.0.4-polly-hack-patch/llvm-15.0.4-new/polly/lib
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-polly-hack-patch/llvm-15.0.4-new/polly
===================================================================
--- create-15.0.4-polly-hack-patch/llvm-15.0.4-new/polly (revision 39)
+++ create-15.0.4-polly-hack-patch/llvm-15.0.4-new/polly (nonexistent)
Property changes on: create-15.0.4-polly-hack-patch/llvm-15.0.4-new/polly
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-polly-hack-patch/llvm-15.0.4-new
===================================================================
--- create-15.0.4-polly-hack-patch/llvm-15.0.4-new (revision 39)
+++ create-15.0.4-polly-hack-patch/llvm-15.0.4-new (nonexistent)
Property changes on: create-15.0.4-polly-hack-patch/llvm-15.0.4-new
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-polly-hack-patch/create.patch.sh
===================================================================
--- create-15.0.4-polly-hack-patch/create.patch.sh (revision 39)
+++ create-15.0.4-polly-hack-patch/create.patch.sh (nonexistent)
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-VERSION=15.0.4
-
-tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
-mv llvm-$VERSION llvm-$VERSION-orig
-
-cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
-
-diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-polly-hack.patch
-
-mv llvm-$VERSION-polly-hack.patch ../patches
-
-rm -rf ./llvm-$VERSION
-rm -rf ./llvm-$VERSION-orig
Property changes on: create-15.0.4-polly-hack-patch/create.patch.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: create-15.0.4-polly-hack-patch
===================================================================
--- create-15.0.4-polly-hack-patch (revision 39)
+++ create-15.0.4-polly-hack-patch (nonexistent)
Property changes on: create-15.0.4-polly-hack-patch
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-llvm-versioning-patch/file.list
===================================================================
--- create-15.0.4-llvm-versioning-patch/file.list (revision 39)
+++ create-15.0.4-llvm-versioning-patch/file.list (nonexistent)
@@ -1 +0,0 @@
-llvm-15.0.4/llvm/tools/llvm-config/llvm-config.cpp
Index: create-15.0.4-llvm-versioning-patch/llvm-15.0.4-new/llvm/tools/llvm-config/llvm-config.cpp
===================================================================
--- create-15.0.4-llvm-versioning-patch/llvm-15.0.4-new/llvm/tools/llvm-config/llvm-config.cpp (revision 39)
+++ create-15.0.4-llvm-versioning-patch/llvm-15.0.4-new/llvm/tools/llvm-config/llvm-config.cpp (nonexistent)
@@ -1,754 +0,0 @@
-//===-- llvm-config.cpp - LLVM project configuration utility --------------===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-//
-// This tool encapsulates information about an LLVM project configuration for
-// use by other project's build environments (to determine installed path,
-// available features, required libraries, etc.).
-//
-// Note that although this tool *may* be used by some parts of LLVM's build
-// itself (i.e., the Makefiles use it to compute required libraries when linking
-// tools), this tool is primarily designed to support external projects.
-//
-//===----------------------------------------------------------------------===//
-
-#include "llvm/Config/llvm-config.h"
-#include "llvm/ADT/STLExtras.h"
-#include "llvm/ADT/StringMap.h"
-#include "llvm/ADT/StringRef.h"
-#include "llvm/ADT/Triple.h"
-#include "llvm/ADT/Twine.h"
-#include "llvm/Config/config.h"
-#include "llvm/Support/FileSystem.h"
-#include "llvm/Support/Path.h"
-#include "llvm/Support/WithColor.h"
-#include "llvm/Support/raw_ostream.h"
-#include <cstdlib>
-#include <set>
-#include <unordered_set>
-#include <vector>
-
-using namespace llvm;
-
-// Include the build time variables we can report to the user. This is generated
-// at build time from the BuildVariables.inc.in file by the build system.
-#include "BuildVariables.inc"
-
-// Include the component table. This creates an array of struct
-// AvailableComponent entries, which record the component name, library name,
-// and required components for all of the available libraries.
-//
-// Not all components define a library, we also use "library groups" as a way to
-// create entries for pseudo groups like x86 or all-targets.
-#include "LibraryDependencies.inc"
-
-// Built-in extensions also register their dependencies, but in a separate file,
-// later in the process.
-#include "ExtensionDependencies.inc"
-
-// LinkMode determines what libraries and flags are returned by llvm-config.
-enum LinkMode {
- // LinkModeAuto will link with the default link mode for the installation,
- // which is dependent on the value of LLVM_LINK_LLVM_DYLIB, and fall back
- // to the alternative if the required libraries are not available.
- LinkModeAuto = 0,
-
- // LinkModeShared will link with the dynamic component libraries if they
- // exist, and return an error otherwise.
- LinkModeShared = 1,
-
- // LinkModeStatic will link with the static component libraries if they
- // exist, and return an error otherwise.
- LinkModeStatic = 2,
-};
-
-/// Traverse a single component adding to the topological ordering in
-/// \arg RequiredLibs.
-///
-/// \param Name - The component to traverse.
-/// \param ComponentMap - A prebuilt map of component names to descriptors.
-/// \param VisitedComponents [in] [out] - The set of already visited components.
-/// \param RequiredLibs [out] - The ordered list of required
-/// libraries.
-/// \param GetComponentNames - Get the component names instead of the
-/// library name.
-static void VisitComponent(const std::string &Name,
- const StringMap<AvailableComponent *> &ComponentMap,
- std::set<AvailableComponent *> &VisitedComponents,
- std::vector<std::string> &RequiredLibs,
- bool IncludeNonInstalled, bool GetComponentNames,
- const std::function<std::string(const StringRef &)>
- *GetComponentLibraryPath,
- std::vector<std::string> *Missing,
- const std::string &DirSep) {
- // Lookup the component.
- AvailableComponent *AC = ComponentMap.lookup(Name);
- if (!AC) {
- errs() << "Can't find component: '" << Name << "' in the map. Available components are: ";
- for (const auto &Component : ComponentMap) {
- errs() << "'" << Component.first() << "' ";
- }
- errs() << "\n";
- report_fatal_error("abort");
- }
- assert(AC && "Invalid component name!");
-
- // Add to the visited table.
- if (!VisitedComponents.insert(AC).second) {
- // We are done if the component has already been visited.
- return;
- }
-
- // Only include non-installed components if requested.
- if (!AC->IsInstalled && !IncludeNonInstalled)
- return;
-
- // Otherwise, visit all the dependencies.
- for (unsigned i = 0; AC->RequiredLibraries[i]; ++i) {
- VisitComponent(AC->RequiredLibraries[i], ComponentMap, VisitedComponents,
- RequiredLibs, IncludeNonInstalled, GetComponentNames,
- GetComponentLibraryPath, Missing, DirSep);
- }
-
- // Special handling for the special 'extensions' component. Its content is
- // not populated by llvm-build, but later in the process and loaded from
- // ExtensionDependencies.inc.
- if (Name == "extensions") {
- for (auto const &AvailableExtension : AvailableExtensions) {
- for (const char *const *Iter = &AvailableExtension.RequiredLibraries[0];
- *Iter; ++Iter) {
- AvailableComponent *AC = ComponentMap.lookup(*Iter);
- if (!AC) {
- RequiredLibs.push_back(*Iter);
- } else {
- VisitComponent(*Iter, ComponentMap, VisitedComponents, RequiredLibs,
- IncludeNonInstalled, GetComponentNames,
- GetComponentLibraryPath, Missing, DirSep);
- }
- }
- }
- }
-
- if (GetComponentNames) {
- RequiredLibs.push_back(Name);
- return;
- }
-
- // Add to the required library list.
- if (AC->Library) {
- if (Missing && GetComponentLibraryPath) {
- std::string path = (*GetComponentLibraryPath)(AC->Library);
- if (DirSep == "\\") {
- std::replace(path.begin(), path.end(), '/', '\\');
- }
- if (!sys::fs::exists(path))
- Missing->push_back(path);
- }
- RequiredLibs.push_back(AC->Library);
- }
-}
-
-/// Compute the list of required libraries for a given list of
-/// components, in an order suitable for passing to a linker (that is, libraries
-/// appear prior to their dependencies).
-///
-/// \param Components - The names of the components to find libraries for.
-/// \param IncludeNonInstalled - Whether non-installed components should be
-/// reported.
-/// \param GetComponentNames - True if one would prefer the component names.
-static std::vector<std::string> ComputeLibsForComponents(
- const std::vector<StringRef> &Components, bool IncludeNonInstalled,
- bool GetComponentNames, const std::function<std::string(const StringRef &)>
- *GetComponentLibraryPath,
- std::vector<std::string> *Missing, const std::string &DirSep) {
- std::vector<std::string> RequiredLibs;
- std::set<AvailableComponent *> VisitedComponents;
-
- // Build a map of component names to information.
- StringMap<AvailableComponent *> ComponentMap;
- for (unsigned i = 0; i != array_lengthof(AvailableComponents); ++i) {
- AvailableComponent *AC = &AvailableComponents[i];
- ComponentMap[AC->Name] = AC;
- }
-
- // Visit the components.
- for (unsigned i = 0, e = Components.size(); i != e; ++i) {
- // Users are allowed to provide mixed case component names.
- std::string ComponentLower = Components[i].lower();
-
- // Validate that the user supplied a valid component name.
- if (!ComponentMap.count(ComponentLower)) {
- llvm::errs() << "llvm-config: unknown component name: " << Components[i]
- << "\n";
- exit(1);
- }
-
- VisitComponent(ComponentLower, ComponentMap, VisitedComponents,
- RequiredLibs, IncludeNonInstalled, GetComponentNames,
- GetComponentLibraryPath, Missing, DirSep);
- }
-
- // The list is now ordered with leafs first, we want the libraries to printed
- // in the reverse order of dependency.
- std::reverse(RequiredLibs.begin(), RequiredLibs.end());
-
- return RequiredLibs;
-}
-
-/* *** */
-
-static void usage(bool ExitWithFailure = true) {
- errs() << "\
-usage: llvm-config <OPTION>... [<COMPONENT>...]\n\
-\n\
-Get various configuration information needed to compile programs which use\n\
-LLVM. Typically called from 'configure' scripts. Examples:\n\
- llvm-config --cxxflags\n\
- llvm-config --ldflags\n\
- llvm-config --libs engine bcreader scalaropts\n\
-\n\
-Options:\n\
- --assertion-mode Print assertion mode of LLVM tree (ON or OFF).\n\
- --bindir Directory containing LLVM executables.\n\
- --build-mode Print build mode of LLVM tree (e.g. Debug or Release).\n\
- --build-system Print the build system used to build LLVM (e.g. `cmake` or `gn`).\n\
- --cflags C compiler flags for files that include LLVM headers.\n\
- --cmakedir Directory containing LLVM CMake modules.\n\
- --components List of all possible components.\n\
- --cppflags C preprocessor flags for files that include LLVM headers.\n\
- --cxxflags C++ compiler flags for files that include LLVM headers.\n\
- --has-rtti Print whether or not LLVM was built with rtti (YES or NO).\n\
- --help Print a summary of llvm-config arguments.\n\
- --host-target Target triple used to configure LLVM.\n\
- --ignore-libllvm Ignore libLLVM and link component libraries instead.\n\
- --includedir Directory containing LLVM headers.\n\
- --ldflags Print Linker flags.\n\
- --libdir Directory containing LLVM libraries.\n\
- --libfiles Fully qualified library filenames for makefile depends.\n\
- --libnames Bare library names for in-tree builds.\n\
- --libs Libraries needed to link against LLVM components.\n\
- --link-shared Link the components as shared libraries.\n\
- --link-static Link the component libraries statically.\n\
- --obj-root Print the object root used to build LLVM.\n\
- --prefix Print the installation prefix.\n\
- --shared-mode Print how the provided components can be collectively linked (`shared` or `static`).\n\
- --src-root Print the source root LLVM was built from.\n\
- --system-libs System Libraries needed to link against LLVM components.\n\
- --targets-built List of all targets currently built.\n\
- --version Print LLVM version.\n\
-Typical components:\n\
- all All LLVM libraries (default).\n\
- engine Either a native JIT or a bitcode interpreter.\n";
- if (ExitWithFailure)
- exit(1);
-}
-
-/// Compute the path to the main executable.
-std::string GetExecutablePath(const char *Argv0) {
- // This just needs to be some symbol in the binary; C++ doesn't
- // allow taking the address of ::main however.
- void *P = (void *)(intptr_t)GetExecutablePath;
- return llvm::sys::fs::getMainExecutable(Argv0, P);
-}
-
-/// Expand the semi-colon delimited LLVM_DYLIB_COMPONENTS into
-/// the full list of components.
-std::vector<std::string> GetAllDyLibComponents(const bool IsInDevelopmentTree,
- const bool GetComponentNames,
- const std::string &DirSep) {
- std::vector<StringRef> DyLibComponents;
-
- StringRef DyLibComponentsStr(LLVM_DYLIB_COMPONENTS);
- size_t Offset = 0;
- while (true) {
- const size_t NextOffset = DyLibComponentsStr.find(';', Offset);
- DyLibComponents.push_back(DyLibComponentsStr.substr(Offset, NextOffset-Offset));
- if (NextOffset == std::string::npos) {
- break;
- }
- Offset = NextOffset + 1;
- }
-
- assert(!DyLibComponents.empty());
-
- return ComputeLibsForComponents(DyLibComponents,
- /*IncludeNonInstalled=*/IsInDevelopmentTree,
- GetComponentNames, nullptr, nullptr, DirSep);
-}
-
-int main(int argc, char **argv) {
- std::vector<StringRef> Components;
- bool PrintLibs = false, PrintLibNames = false, PrintLibFiles = false;
- bool PrintSystemLibs = false, PrintSharedMode = false;
- bool HasAnyOption = false;
-
- // llvm-config is designed to support being run both from a development tree
- // and from an installed path. We try and auto-detect which case we are in so
- // that we can report the correct information when run from a development
- // tree.
- bool IsInDevelopmentTree;
- enum { CMakeStyle, CMakeBuildModeStyle } DevelopmentTreeLayout;
- llvm::SmallString<256> CurrentPath(GetExecutablePath(argv[0]));
- std::string CurrentExecPrefix;
- std::string ActiveObjRoot;
-
- // If CMAKE_CFG_INTDIR is given, honor it as build mode.
- char const *build_mode = LLVM_BUILDMODE;
-#if defined(CMAKE_CFG_INTDIR)
- if (!(CMAKE_CFG_INTDIR[0] == '.' && CMAKE_CFG_INTDIR[1] == '\0'))
- build_mode = CMAKE_CFG_INTDIR;
-#endif
-
- // Create an absolute path, and pop up one directory (we expect to be inside a
- // bin dir).
- sys::fs::make_absolute(CurrentPath);
- CurrentExecPrefix =
- sys::path::parent_path(sys::path::parent_path(CurrentPath)).str();
-
- // Check to see if we are inside a development tree by comparing to possible
- // locations (prefix style or CMake style).
- if (sys::fs::equivalent(CurrentExecPrefix, LLVM_OBJ_ROOT)) {
- IsInDevelopmentTree = true;
- DevelopmentTreeLayout = CMakeStyle;
- ActiveObjRoot = LLVM_OBJ_ROOT;
- } else if (sys::fs::equivalent(sys::path::parent_path(CurrentExecPrefix),
- LLVM_OBJ_ROOT)) {
- IsInDevelopmentTree = true;
- DevelopmentTreeLayout = CMakeBuildModeStyle;
- ActiveObjRoot = LLVM_OBJ_ROOT;
- } else {
- IsInDevelopmentTree = false;
- DevelopmentTreeLayout = CMakeStyle; // Initialized to avoid warnings.
- }
-
- // Compute various directory locations based on the derived location
- // information.
- std::string ActivePrefix, ActiveBinDir, ActiveIncludeDir, ActiveLibDir,
- ActiveCMakeDir;
- std::string ActiveIncludeOption;
- if (IsInDevelopmentTree) {
- ActiveIncludeDir = std::string(LLVM_SRC_ROOT) + "/include";
- ActivePrefix = CurrentExecPrefix;
-
- // CMake organizes the products differently than a normal prefix style
- // layout.
- switch (DevelopmentTreeLayout) {
- case CMakeStyle:
- ActiveBinDir = ActiveObjRoot + "/bin";
- ActiveLibDir = ActiveObjRoot + "/lib" + LLVM_LIBDIR_SUFFIX;
- ActiveCMakeDir = ActiveLibDir + "/cmake/llvm";
- break;
- case CMakeBuildModeStyle:
- // FIXME: Should we consider the build-mode-specific path as the prefix?
- ActivePrefix = ActiveObjRoot;
- ActiveBinDir = ActiveObjRoot + "/" + build_mode + "/bin";
- ActiveLibDir =
- ActiveObjRoot + "/" + build_mode + "/lib" + LLVM_LIBDIR_SUFFIX;
- // The CMake directory isn't separated by build mode.
- ActiveCMakeDir =
- ActivePrefix + "/lib" + LLVM_LIBDIR_SUFFIX + "/cmake/llvm";
- break;
- }
-
- // We need to include files from both the source and object trees.
- ActiveIncludeOption =
- ("-I" + ActiveIncludeDir + " " + "-I" + ActiveObjRoot + "/include");
- } else {
- ActivePrefix = CurrentExecPrefix;
- {
- SmallString<256> Path(LLVM_INSTALL_INCLUDEDIR);
- sys::fs::make_absolute(ActivePrefix, Path);
- ActiveIncludeDir = std::string(Path.str());
- }
- {
- SmallString<256> Path(LLVM_TOOLS_INSTALL_DIR);
- sys::fs::make_absolute(ActivePrefix, Path);
- ActiveBinDir = std::string(Path.str());
- }
- ActiveLibDir = ActivePrefix + "/lib" + LLVM_LIBDIR_SUFFIX;
- {
- SmallString<256> Path(LLVM_INSTALL_PACKAGE_DIR);
- sys::fs::make_absolute(ActivePrefix, Path);
- ActiveCMakeDir = std::string(Path.str());
- }
- ActiveIncludeOption = "-I" + ActiveIncludeDir;
- }
-
- /// We only use `shared library` mode in cases where the static library form
- /// of the components provided are not available; note however that this is
- /// skipped if we're run from within the build dir. However, once installed,
- /// we still need to provide correct output when the static archives are
- /// removed or, as in the case of CMake's `BUILD_SHARED_LIBS`, never present
- /// in the first place. This can't be done at configure/build time.
-
- StringRef SharedExt, SharedVersionedExt, SharedDir, SharedPrefix, StaticExt,
- StaticPrefix, StaticDir = "lib";
- std::string DirSep = "/";
- const Triple HostTriple(Triple::normalize(LLVM_HOST_TRIPLE));
- if (HostTriple.isOSWindows()) {
- SharedExt = "dll";
- SharedVersionedExt = LLVM_DYLIB_VERSION ".dll";
- if (HostTriple.isOSCygMing()) {
- SharedPrefix = "lib";
- StaticExt = "a";
- StaticPrefix = "lib";
- } else {
- StaticExt = "lib";
- DirSep = "\\";
- std::replace(ActiveObjRoot.begin(), ActiveObjRoot.end(), '/', '\\');
- std::replace(ActivePrefix.begin(), ActivePrefix.end(), '/', '\\');
- std::replace(ActiveBinDir.begin(), ActiveBinDir.end(), '/', '\\');
- std::replace(ActiveLibDir.begin(), ActiveLibDir.end(), '/', '\\');
- std::replace(ActiveCMakeDir.begin(), ActiveCMakeDir.end(), '/', '\\');
- std::replace(ActiveIncludeOption.begin(), ActiveIncludeOption.end(), '/',
- '\\');
- }
- SharedDir = ActiveBinDir;
- StaticDir = ActiveLibDir;
- } else if (HostTriple.isOSDarwin()) {
- SharedExt = "dylib";
- SharedVersionedExt = LLVM_DYLIB_VERSION ".dylib";
- StaticExt = "a";
- StaticDir = SharedDir = ActiveLibDir;
- StaticPrefix = SharedPrefix = "lib";
- } else {
- // default to the unix values:
- SharedExt = "so";
- StaticExt = "a";
- StaticDir = SharedDir = ActiveLibDir;
- StaticPrefix = SharedPrefix = "lib";
- }
-
- const bool BuiltDyLib = !!LLVM_ENABLE_DYLIB;
-
- /// CMake style shared libs, ie each component is in a shared library.
- const bool BuiltSharedLibs = !!LLVM_ENABLE_SHARED;
-
- bool DyLibExists = false;
- const std::string DyLibName =
- (SharedPrefix + "LLVM." + SharedExt).str();
-
- // If LLVM_LINK_DYLIB is ON, the single shared library will be returned
- // for "--libs", etc, if they exist. This behaviour can be overridden with
- // --link-static or --link-shared.
- bool LinkDyLib = !!LLVM_LINK_DYLIB;
-
- if (BuiltDyLib) {
- std::string path((SharedDir + DirSep + DyLibName).str());
- if (DirSep == "\\") {
- std::replace(path.begin(), path.end(), '/', '\\');
- }
- DyLibExists = sys::fs::exists(path);
- if (!DyLibExists) {
- // The shared library does not exist: don't error unless the user
- // explicitly passes --link-shared.
- LinkDyLib = false;
- }
- }
- LinkMode LinkMode =
- (LinkDyLib || BuiltSharedLibs) ? LinkModeShared : LinkModeAuto;
-
- /// Get the component's library name without the lib prefix and the
- /// extension. Returns true if Lib is in a recognized format.
- auto GetComponentLibraryNameSlice = [&](const StringRef &Lib,
- StringRef &Out) {
- if (Lib.startswith("lib")) {
- unsigned FromEnd;
- if (Lib.endswith(StaticExt)) {
- FromEnd = StaticExt.size() + 1;
- } else if (Lib.endswith(SharedExt)) {
- FromEnd = SharedExt.size() + 1;
- } else {
- FromEnd = 0;
- }
-
- if (FromEnd != 0) {
- Out = Lib.slice(3, Lib.size() - FromEnd);
- return true;
- }
- }
-
- return false;
- };
- /// Maps Unixizms to the host platform.
- auto GetComponentLibraryFileName = [&](const StringRef &Lib,
- const bool Shared) {
- std::string LibFileName;
- if (Shared) {
- if (Lib == DyLibName) {
- // Treat the DyLibName specially. It is not a component library and
- // already has the necessary prefix and suffix (e.g. `.so`) added so
- // just return it unmodified.
- assert(Lib.endswith(SharedExt) && "DyLib is missing suffix");
- LibFileName = std::string(Lib);
- } else {
- LibFileName = (SharedPrefix + Lib + "." + SharedExt).str();
- }
- } else {
- // default to static
- LibFileName = (StaticPrefix + Lib + "." + StaticExt).str();
- }
-
- return LibFileName;
- };
- /// Get the full path for a possibly shared component library.
- auto GetComponentLibraryPath = [&](const StringRef &Name, const bool Shared) {
- auto LibFileName = GetComponentLibraryFileName(Name, Shared);
- if (Shared) {
- return (SharedDir + DirSep + LibFileName).str();
- } else {
- return (StaticDir + DirSep + LibFileName).str();
- }
- };
-
- raw_ostream &OS = outs();
- for (int i = 1; i != argc; ++i) {
- StringRef Arg = argv[i];
-
- if (Arg.startswith("-")) {
- HasAnyOption = true;
- if (Arg == "--version") {
- OS << PACKAGE_VERSION << '\n';
- } else if (Arg == "--prefix") {
- OS << ActivePrefix << '\n';
- } else if (Arg == "--bindir") {
- OS << ActiveBinDir << '\n';
- } else if (Arg == "--includedir") {
- OS << ActiveIncludeDir << '\n';
- } else if (Arg == "--libdir") {
- OS << ActiveLibDir << '\n';
- } else if (Arg == "--cmakedir") {
- OS << ActiveCMakeDir << '\n';
- } else if (Arg == "--cppflags") {
- OS << ActiveIncludeOption << ' ' << LLVM_CPPFLAGS << '\n';
- } else if (Arg == "--cflags") {
- OS << ActiveIncludeOption << ' ' << LLVM_CFLAGS << '\n';
- } else if (Arg == "--cxxflags") {
- OS << ActiveIncludeOption << ' ' << LLVM_CXXFLAGS << '\n';
- } else if (Arg == "--ldflags") {
- OS << ((HostTriple.isWindowsMSVCEnvironment()) ? "-LIBPATH:" : "-L")
- << ActiveLibDir << ' ' << LLVM_LDFLAGS << '\n';
- } else if (Arg == "--system-libs") {
- PrintSystemLibs = true;
- } else if (Arg == "--libs") {
- PrintLibs = true;
- } else if (Arg == "--libnames") {
- PrintLibNames = true;
- } else if (Arg == "--libfiles") {
- PrintLibFiles = true;
- } else if (Arg == "--components") {
- /// If there are missing static archives and a dylib was
- /// built, print LLVM_DYLIB_COMPONENTS instead of everything
- /// in the manifest.
- std::vector<std::string> Components;
- for (unsigned j = 0; j != array_lengthof(AvailableComponents); ++j) {
- // Only include non-installed components when in a development tree.
- if (!AvailableComponents[j].IsInstalled && !IsInDevelopmentTree)
- continue;
-
- Components.push_back(AvailableComponents[j].Name);
- if (AvailableComponents[j].Library && !IsInDevelopmentTree) {
- std::string path(
- GetComponentLibraryPath(AvailableComponents[j].Library, false));
- if (DirSep == "\\") {
- std::replace(path.begin(), path.end(), '/', '\\');
- }
- if (DyLibExists && !sys::fs::exists(path)) {
- Components =
- GetAllDyLibComponents(IsInDevelopmentTree, true, DirSep);
- llvm::sort(Components);
- break;
- }
- }
- }
-
- for (unsigned I = 0; I < Components.size(); ++I) {
- if (I) {
- OS << ' ';
- }
-
- OS << Components[I];
- }
- OS << '\n';
- } else if (Arg == "--targets-built") {
- OS << LLVM_TARGETS_BUILT << '\n';
- } else if (Arg == "--host-target") {
- OS << Triple::normalize(LLVM_DEFAULT_TARGET_TRIPLE) << '\n';
- } else if (Arg == "--build-mode") {
- OS << build_mode << '\n';
- } else if (Arg == "--assertion-mode") {
-#if defined(NDEBUG)
- OS << "OFF\n";
-#else
- OS << "ON\n";
-#endif
- } else if (Arg == "--build-system") {
- OS << LLVM_BUILD_SYSTEM << '\n';
- } else if (Arg == "--has-rtti") {
- OS << (LLVM_HAS_RTTI ? "YES" : "NO") << '\n';
- } else if (Arg == "--shared-mode") {
- PrintSharedMode = true;
- } else if (Arg == "--obj-root") {
- OS << ActivePrefix << '\n';
- } else if (Arg == "--src-root") {
- OS << LLVM_SRC_ROOT << '\n';
- } else if (Arg == "--ignore-libllvm") {
- LinkDyLib = false;
- LinkMode = BuiltSharedLibs ? LinkModeShared : LinkModeAuto;
- } else if (Arg == "--link-shared") {
- LinkMode = LinkModeShared;
- } else if (Arg == "--link-static") {
- LinkMode = LinkModeStatic;
- } else if (Arg == "--help") {
- usage(false);
- } else {
- usage();
- }
- } else {
- Components.push_back(Arg);
- }
- }
-
- if (!HasAnyOption)
- usage();
-
- if (LinkMode == LinkModeShared && !DyLibExists && !BuiltSharedLibs) {
- WithColor::error(errs(), "llvm-config") << DyLibName << " is missing\n";
- return 1;
- }
-
- if (PrintLibs || PrintLibNames || PrintLibFiles || PrintSystemLibs ||
- PrintSharedMode) {
-
- if (PrintSharedMode && BuiltSharedLibs) {
- OS << "shared\n";
- return 0;
- }
-
- // If no components were specified, default to "all".
- if (Components.empty())
- Components.push_back("all");
-
- // Construct the list of all the required libraries.
- std::function<std::string(const StringRef &)>
- GetComponentLibraryPathFunction = [&](const StringRef &Name) {
- return GetComponentLibraryPath(Name, LinkMode == LinkModeShared);
- };
- std::vector<std::string> MissingLibs;
- std::vector<std::string> RequiredLibs = ComputeLibsForComponents(
- Components,
- /*IncludeNonInstalled=*/IsInDevelopmentTree, false,
- &GetComponentLibraryPathFunction, &MissingLibs, DirSep);
- if (!MissingLibs.empty()) {
- switch (LinkMode) {
- case LinkModeShared:
- if (LinkDyLib && !BuiltSharedLibs)
- break;
- // Using component shared libraries.
- for (auto &Lib : MissingLibs)
- WithColor::error(errs(), "llvm-config") << "missing: " << Lib << "\n";
- return 1;
- case LinkModeAuto:
- if (DyLibExists) {
- LinkMode = LinkModeShared;
- break;
- }
- WithColor::error(errs(), "llvm-config")
- << "component libraries and shared library\n\n";
- LLVM_FALLTHROUGH;
- case LinkModeStatic:
- for (auto &Lib : MissingLibs)
- WithColor::error(errs(), "llvm-config") << "missing: " << Lib << "\n";
- return 1;
- }
- } else if (LinkMode == LinkModeAuto) {
- LinkMode = LinkModeStatic;
- }
-
- if (PrintSharedMode) {
- std::unordered_set<std::string> FullDyLibComponents;
- std::vector<std::string> DyLibComponents =
- GetAllDyLibComponents(IsInDevelopmentTree, false, DirSep);
-
- for (auto &Component : DyLibComponents) {
- FullDyLibComponents.insert(Component);
- }
- DyLibComponents.clear();
-
- for (auto &Lib : RequiredLibs) {
- if (!FullDyLibComponents.count(Lib)) {
- OS << "static\n";
- return 0;
- }
- }
- FullDyLibComponents.clear();
-
- if (LinkMode == LinkModeShared) {
- OS << "shared\n";
- return 0;
- } else {
- OS << "static\n";
- return 0;
- }
- }
-
- if (PrintLibs || PrintLibNames || PrintLibFiles) {
-
- auto PrintForLib = [&](const StringRef &Lib) {
- const bool Shared = LinkMode == LinkModeShared;
- if (PrintLibNames) {
- OS << GetComponentLibraryFileName(Lib, Shared);
- } else if (PrintLibFiles) {
- OS << GetComponentLibraryPath(Lib, Shared);
- } else if (PrintLibs) {
- // On Windows, output full path to library without parameters.
- // Elsewhere, if this is a typical library name, include it using -l.
- if (HostTriple.isWindowsMSVCEnvironment()) {
- OS << GetComponentLibraryPath(Lib, Shared);
- } else {
- StringRef LibName;
- if (GetComponentLibraryNameSlice(Lib, LibName)) {
- // Extract library name (remove prefix and suffix).
- OS << "-l" << LibName;
- } else {
- // Lib is already a library name without prefix and suffix.
- OS << "-l" << Lib;
- }
- }
- }
- };
-
- if (LinkMode == LinkModeShared && LinkDyLib) {
- PrintForLib(DyLibName);
- } else {
- for (unsigned i = 0, e = RequiredLibs.size(); i != e; ++i) {
- auto Lib = RequiredLibs[i];
- if (i)
- OS << ' ';
-
- PrintForLib(Lib);
- }
- }
- OS << '\n';
- }
-
- // Print SYSTEM_LIBS after --libs.
- // FIXME: Each LLVM component may have its dependent system libs.
- if (PrintSystemLibs) {
- // Output system libraries only if linking against a static
- // library (since the shared library links to all system libs
- // already)
- OS << (LinkMode == LinkModeStatic ? LLVM_SYSTEM_LIBS : "") << '\n';
- }
- } else if (!Components.empty()) {
- WithColor::error(errs(), "llvm-config")
- << "components given, but unused\n\n";
- usage();
- }
-
- return 0;
-}
Index: create-15.0.4-llvm-versioning-patch/llvm-15.0.4-new/llvm/tools/llvm-config
===================================================================
--- create-15.0.4-llvm-versioning-patch/llvm-15.0.4-new/llvm/tools/llvm-config (revision 39)
+++ create-15.0.4-llvm-versioning-patch/llvm-15.0.4-new/llvm/tools/llvm-config (nonexistent)
Property changes on: create-15.0.4-llvm-versioning-patch/llvm-15.0.4-new/llvm/tools/llvm-config
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-llvm-versioning-patch/llvm-15.0.4-new/llvm/tools
===================================================================
--- create-15.0.4-llvm-versioning-patch/llvm-15.0.4-new/llvm/tools (revision 39)
+++ create-15.0.4-llvm-versioning-patch/llvm-15.0.4-new/llvm/tools (nonexistent)
Property changes on: create-15.0.4-llvm-versioning-patch/llvm-15.0.4-new/llvm/tools
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-llvm-versioning-patch/llvm-15.0.4-new/llvm
===================================================================
--- create-15.0.4-llvm-versioning-patch/llvm-15.0.4-new/llvm (revision 39)
+++ create-15.0.4-llvm-versioning-patch/llvm-15.0.4-new/llvm (nonexistent)
Property changes on: create-15.0.4-llvm-versioning-patch/llvm-15.0.4-new/llvm
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-llvm-versioning-patch/llvm-15.0.4-new
===================================================================
--- create-15.0.4-llvm-versioning-patch/llvm-15.0.4-new (revision 39)
+++ create-15.0.4-llvm-versioning-patch/llvm-15.0.4-new (nonexistent)
Property changes on: create-15.0.4-llvm-versioning-patch/llvm-15.0.4-new
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-llvm-versioning-patch/create.patch.sh
===================================================================
--- create-15.0.4-llvm-versioning-patch/create.patch.sh (revision 39)
+++ create-15.0.4-llvm-versioning-patch/create.patch.sh (nonexistent)
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-VERSION=15.0.4
-
-tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
-mv llvm-$VERSION llvm-$VERSION-orig
-
-cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
-
-diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-llvm-versioning.patch
-
-mv llvm-$VERSION-llvm-versioning.patch ../patches
-
-rm -rf ./llvm-$VERSION
-rm -rf ./llvm-$VERSION-orig
Property changes on: create-15.0.4-llvm-versioning-patch/create.patch.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: create-15.0.4-llvm-versioning-patch
===================================================================
--- create-15.0.4-llvm-versioning-patch (revision 39)
+++ create-15.0.4-llvm-versioning-patch (nonexistent)
Property changes on: create-15.0.4-llvm-versioning-patch
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-scan-build-py-x32-patch/file.list
===================================================================
--- create-13.0.0-scan-build-py-x32-patch/file.list (revision 39)
+++ create-13.0.0-scan-build-py-x32-patch/file.list (nonexistent)
@@ -1 +0,0 @@
-llvm-13.0.0/clang/tools/scan-build-py/CMakeLists.txt
Index: create-13.0.0-scan-build-py-x32-patch/create.patch.sh
===================================================================
--- create-13.0.0-scan-build-py-x32-patch/create.patch.sh (revision 39)
+++ create-13.0.0-scan-build-py-x32-patch/create.patch.sh (nonexistent)
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-VERSION=13.0.0
-
-tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
-mv llvm-$VERSION llvm-$VERSION-orig
-
-cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
-
-diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-scan-build-py-x32.patch
-
-mv llvm-$VERSION-scan-build-py-x32.patch ../patches
-
-rm -rf ./llvm-$VERSION
-rm -rf ./llvm-$VERSION-orig
Property changes on: create-13.0.0-scan-build-py-x32-patch/create.patch.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: create-13.0.0-scan-build-py-x32-patch/llvm-13.0.0-new/clang/tools/scan-build-py/CMakeLists.txt
===================================================================
--- create-13.0.0-scan-build-py-x32-patch/llvm-13.0.0-new/clang/tools/scan-build-py/CMakeLists.txt (revision 39)
+++ create-13.0.0-scan-build-py-x32-patch/llvm-13.0.0-new/clang/tools/scan-build-py/CMakeLists.txt (nonexistent)
@@ -1,132 +0,0 @@
-set (BinFiles
- "analyze-build"
- "intercept-build"
- "scan-build")
-
-set (LibExecs
- "analyze-c++"
- "analyze-cc"
- "intercept-c++"
- "intercept-cc")
-
-set (LibScanbuild
- "__init__.py"
- "analyze.py"
- "arguments.py"
- "clang.py"
- "compilation.py"
- "intercept.py"
- "report.py"
- "shell.py")
-
-set (LibScanbuildResources
- "scanview.css"
- "selectable.js"
- "sorttable.js")
-
-# libear is compiled dynamically in build_libear using the specified cc
-# compiler.
-set (LibEar
- "__init__.py"
- "config.h.in"
- "ear.c")
-
-foreach(BinFile ${BinFiles})
- if ("${BinFile}" STREQUAL "scan-build")
- # Need to rename scan-build to scan-build-py to prevent overwriting
- # scan-build Perl implementation.
- add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/bin/scan-build-py
- COMMAND ${CMAKE_COMMAND} -E make_directory
- ${CMAKE_BINARY_DIR}/bin
- COMMAND ${CMAKE_COMMAND} -E copy
- ${CMAKE_CURRENT_SOURCE_DIR}/bin/scan-build
- ${CMAKE_BINARY_DIR}/bin/scan-build-py
- DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/bin/scan-build)
- install (PROGRAMS "bin/scan-build"
- DESTINATION bin
- RENAME scan-build-py
- COMPONENT scan-build-py)
- list(APPEND Depends ${CMAKE_BINARY_DIR}/bin/scan-build-py)
- else()
- add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/bin/${BinFile}
- COMMAND ${CMAKE_COMMAND} -E make_directory
- ${CMAKE_BINARY_DIR}/bin
- COMMAND ${CMAKE_COMMAND} -E copy
- ${CMAKE_CURRENT_SOURCE_DIR}/bin/${BinFile}
- ${CMAKE_BINARY_DIR}/bin/
- DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/bin/${BinFile})
- install(PROGRAMS bin/${BinFile}
- DESTINATION bin
- COMPONENT scan-build-py)
- list(APPEND Depends ${CMAKE_BINARY_DIR}/bin/${BinFile})
- endif()
-endforeach()
-
-foreach(lib ${LibExecs})
- add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/libexec/${lib}
- COMMAND ${CMAKE_COMMAND} -E make_directory
- ${CMAKE_BINARY_DIR}/libexec
- COMMAND ${CMAKE_COMMAND} -E copy
- ${CMAKE_CURRENT_SOURCE_DIR}/libexec/${lib}
- ${CMAKE_BINARY_DIR}/libexec/
- DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/libexec/${lib})
- list(APPEND Depends ${CMAKE_BINARY_DIR}/libexec/${lib})
- install(PROGRAMS libexec/${lib}
- DESTINATION libexec
- COMPONENT scan-build-py)
-endforeach()
-
-foreach(lib ${LibScanbuild})
- add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/lib/libscanbuild/${lib}
- COMMAND ${CMAKE_COMMAND} -E make_directory
- ${CMAKE_BINARY_DIR}/lib
- COMMAND ${CMAKE_COMMAND} -E make_directory
- ${CMAKE_BINARY_DIR}/lib/libscanbuild
- COMMAND ${CMAKE_COMMAND} -E copy
- ${CMAKE_CURRENT_SOURCE_DIR}/lib/libscanbuild/${lib}
- ${CMAKE_BINARY_DIR}/lib/libscanbuild/
- DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/lib/libscanbuild/${lib})
- list(APPEND Depends ${CMAKE_BINARY_DIR}/lib/libscanbuild/${lib})
- install(PROGRAMS lib/libscanbuild/${lib}
- DESTINATION lib32/libscanbuild
- COMPONENT scan-build-py)
-endforeach()
-
-foreach(resource ${LibScanbuildResources})
- add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/lib/libscanbuild/resources/${resource}
- COMMAND ${CMAKE_COMMAND} -E make_directory
- ${CMAKE_BINARY_DIR}/lib
- COMMAND ${CMAKE_COMMAND} -E make_directory
- ${CMAKE_BINARY_DIR}/lib/libscanbuild
- COMMAND ${CMAKE_COMMAND} -E make_directory
- ${CMAKE_BINARY_DIR}/lib/libscanbuild/resources
- COMMAND ${CMAKE_COMMAND} -E copy
- ${CMAKE_CURRENT_SOURCE_DIR}/lib/libscanbuild/resources/${resource}
- ${CMAKE_BINARY_DIR}/lib/libscanbuild/resources
- DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/lib/libscanbuild/resources/${resource})
- list(APPEND Depends ${CMAKE_BINARY_DIR}/lib/libscanbuild/resources/${resource})
- install(PROGRAMS lib/libscanbuild/resources/${resource}
- DESTINATION lib32/libscanbuild/resources
- COMPONENT scan-build-py)
-endforeach()
-
-foreach(lib ${LibEar})
- add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/lib/libear/${lib}
- COMMAND ${CMAKE_COMMAND} -E make_directory
- ${CMAKE_BINARY_DIR}/lib
- COMMAND ${CMAKE_COMMAND} -E make_directory
- ${CMAKE_BINARY_DIR}/lib/libear
- COMMAND ${CMAKE_COMMAND} -E copy
- ${CMAKE_CURRENT_SOURCE_DIR}/lib/libear/${lib}
- ${CMAKE_BINARY_DIR}/lib/libear/
- DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/lib/libear/${lib})
- list(APPEND Depends ${CMAKE_BINARY_DIR}/lib/libear/${lib})
- install(PROGRAMS lib/libear/${lib}
- DESTINATION lib32/libear
- COMPONENT scan-build-py)
-endforeach()
-
-add_custom_target(scan-build-py ALL DEPENDS ${Depends})
-add_llvm_install_targets("install-scan-build-py"
- DEPENDS scan-build-py
- COMPONENT scan-build-py)
Index: create-13.0.0-scan-build-py-x32-patch/llvm-13.0.0-new/clang/tools/scan-build-py
===================================================================
--- create-13.0.0-scan-build-py-x32-patch/llvm-13.0.0-new/clang/tools/scan-build-py (revision 39)
+++ create-13.0.0-scan-build-py-x32-patch/llvm-13.0.0-new/clang/tools/scan-build-py (nonexistent)
Property changes on: create-13.0.0-scan-build-py-x32-patch/llvm-13.0.0-new/clang/tools/scan-build-py
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-scan-build-py-x32-patch/llvm-13.0.0-new/clang/tools
===================================================================
--- create-13.0.0-scan-build-py-x32-patch/llvm-13.0.0-new/clang/tools (revision 39)
+++ create-13.0.0-scan-build-py-x32-patch/llvm-13.0.0-new/clang/tools (nonexistent)
Property changes on: create-13.0.0-scan-build-py-x32-patch/llvm-13.0.0-new/clang/tools
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-scan-build-py-x32-patch/llvm-13.0.0-new/clang
===================================================================
--- create-13.0.0-scan-build-py-x32-patch/llvm-13.0.0-new/clang (revision 39)
+++ create-13.0.0-scan-build-py-x32-patch/llvm-13.0.0-new/clang (nonexistent)
Property changes on: create-13.0.0-scan-build-py-x32-patch/llvm-13.0.0-new/clang
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-scan-build-py-x32-patch/llvm-13.0.0-new
===================================================================
--- create-13.0.0-scan-build-py-x32-patch/llvm-13.0.0-new (revision 39)
+++ create-13.0.0-scan-build-py-x32-patch/llvm-13.0.0-new (nonexistent)
Property changes on: create-13.0.0-scan-build-py-x32-patch/llvm-13.0.0-new
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-scan-build-py-x32-patch
===================================================================
--- create-13.0.0-scan-build-py-x32-patch (revision 39)
+++ create-13.0.0-scan-build-py-x32-patch (nonexistent)
Property changes on: create-13.0.0-scan-build-py-x32-patch
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-compiler-rt-ppc64-patch/file.list
===================================================================
--- create-13.0.0-compiler-rt-ppc64-patch/file.list (revision 39)
+++ create-13.0.0-compiler-rt-ppc64-patch/file.list (nonexistent)
@@ -1 +0,0 @@
-llvm-13.0.0/compiler-rt/cmake/base-config-ix.cmake
Index: create-13.0.0-compiler-rt-ppc64-patch/create.patch.sh
===================================================================
--- create-13.0.0-compiler-rt-ppc64-patch/create.patch.sh (revision 39)
+++ create-13.0.0-compiler-rt-ppc64-patch/create.patch.sh (nonexistent)
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-VERSION=13.0.0
-
-tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
-mv llvm-$VERSION llvm-$VERSION-orig
-
-cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
-
-diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-compiler-rt-ppc64.patch
-
-mv llvm-$VERSION-compiler-rt-ppc64.patch ../patches
-
-rm -rf ./llvm-$VERSION
-rm -rf ./llvm-$VERSION-orig
Property changes on: create-13.0.0-compiler-rt-ppc64-patch/create.patch.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: create-13.0.0-compiler-rt-ppc64-patch/llvm-13.0.0-new/compiler-rt/cmake/base-config-ix.cmake
===================================================================
--- create-13.0.0-compiler-rt-ppc64-patch/llvm-13.0.0-new/compiler-rt/cmake/base-config-ix.cmake (revision 39)
+++ create-13.0.0-compiler-rt-ppc64-patch/llvm-13.0.0-new/compiler-rt/cmake/base-config-ix.cmake (nonexistent)
@@ -1,254 +0,0 @@
-# The CompilerRT build system requires CMake version 2.8.8 or higher in order
-# to use its support for building convenience "libraries" as a collection of
-# .o files. This is particularly useful in producing larger, more complex
-# runtime libraries.
-
-include(CheckIncludeFile)
-include(CheckCXXSourceCompiles)
-
-check_include_file(unwind.h HAVE_UNWIND_H)
-
-# Used by sanitizer_common and tests.
-check_include_file(rpc/xdr.h HAVE_RPC_XDR_H)
-if (NOT HAVE_RPC_XDR_H)
- set(HAVE_RPC_XDR_H 0)
-endif()
-
-# Top level target used to build all compiler-rt libraries.
-add_custom_target(compiler-rt ALL)
-add_custom_target(install-compiler-rt)
-add_custom_target(install-compiler-rt-stripped)
-set_property(
- TARGET
- compiler-rt
- install-compiler-rt
- install-compiler-rt-stripped
- PROPERTY
- FOLDER "Compiler-RT Misc"
-)
-
-# Setting these variables from an LLVM build is sufficient that compiler-rt can
-# construct the output paths, so it can behave as if it were in-tree here.
-if (LLVM_LIBRARY_OUTPUT_INTDIR AND LLVM_RUNTIME_OUTPUT_INTDIR AND PACKAGE_VERSION)
- set(LLVM_TREE_AVAILABLE On)
-endif()
-
-if (LLVM_TREE_AVAILABLE)
- # Compute the Clang version from the LLVM version.
- # FIXME: We should be able to reuse CLANG_VERSION variable calculated
- # in Clang cmake files, instead of copying the rules here.
- string(REGEX MATCH "[0-9]+\\.[0-9]+(\\.[0-9]+)?" CLANG_VERSION
- ${PACKAGE_VERSION})
- # Setup the paths where compiler-rt runtimes and headers should be stored.
- set(COMPILER_RT_OUTPUT_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR}/clang/${CLANG_VERSION})
- set(COMPILER_RT_EXEC_OUTPUT_DIR ${LLVM_RUNTIME_OUTPUT_INTDIR})
- set(COMPILER_RT_INSTALL_PATH lib${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION})
- option(COMPILER_RT_INCLUDE_TESTS "Generate and build compiler-rt unit tests."
- ${LLVM_INCLUDE_TESTS})
- option(COMPILER_RT_ENABLE_WERROR "Fail and stop if warning is triggered"
- ${LLVM_ENABLE_WERROR})
-
- # Use just-built Clang to compile/link tests on all platforms.
- if (CMAKE_CROSSCOMPILING)
- if (CMAKE_HOST_WIN32)
- set(_host_executable_suffix ".exe")
- else()
- set(_host_executable_suffix "")
- endif()
- else()
- set(_host_executable_suffix ${CMAKE_EXECUTABLE_SUFFIX})
- endif()
- set(COMPILER_RT_TEST_COMPILER
- ${LLVM_RUNTIME_OUTPUT_INTDIR}/clang${_host_executable_suffix})
- set(COMPILER_RT_TEST_CXX_COMPILER
- ${LLVM_RUNTIME_OUTPUT_INTDIR}/clang++${_host_executable_suffix})
-else()
- # Take output dir and install path from the user.
- set(COMPILER_RT_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR} CACHE PATH
- "Path where built compiler-rt libraries should be stored.")
- set(COMPILER_RT_EXEC_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/bin CACHE PATH
- "Path where built compiler-rt executables should be stored.")
- set(COMPILER_RT_INSTALL_PATH "" CACHE PATH
- "Prefix for directories where built compiler-rt artifacts should be installed.")
- option(COMPILER_RT_INCLUDE_TESTS "Generate and build compiler-rt unit tests." OFF)
- option(COMPILER_RT_ENABLE_WERROR "Fail and stop if warning is triggered" OFF)
- # Use a host compiler to compile/link tests.
- set(COMPILER_RT_TEST_COMPILER ${CMAKE_C_COMPILER} CACHE PATH "Compiler to use for testing")
- set(COMPILER_RT_TEST_CXX_COMPILER ${CMAKE_CXX_COMPILER} CACHE PATH "C++ Compiler to use for testing")
-endif()
-
-if("${COMPILER_RT_TEST_COMPILER}" MATCHES "clang[+]*$")
- set(COMPILER_RT_TEST_COMPILER_ID Clang)
-elseif("${COMPILER_RT_TEST_COMPILER}" MATCHES "clang.*.exe$")
- set(COMPILER_RT_TEST_COMPILER_ID Clang)
-else()
- set(COMPILER_RT_TEST_COMPILER_ID GNU)
-endif()
-
-function(extend_install_path joined_path current_segment)
- if("${current_segment}" STREQUAL "")
- set(temp_path "${COMPILER_RT_INSTALL_PATH}")
- elseif("${COMPILER_RT_INSTALL_PATH}" STREQUAL "")
- set(temp_path "${current_segment}")
- elseif(IS_ABSOLUTE "${current_segment}")
- message(WARNING "Since \"${current_segment}\" is absolute, it overrides COMPILER_RT_INSTALL_PATH: \"${COMPILER_RT_INSTALL_PATH}\".")
- set(temp_path "${current_segment}")
- else()
- set(temp_path "${COMPILER_RT_INSTALL_PATH}/${current_segment}")
- endif()
- set(${joined_path} "${temp_path}" PARENT_SCOPE)
-endfunction()
-
-if(NOT DEFINED COMPILER_RT_OS_DIR)
- string(TOLOWER ${CMAKE_SYSTEM_NAME} COMPILER_RT_OS_DIR)
-endif()
-if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)
- set(COMPILER_RT_OUTPUT_LIBRARY_DIR
- ${COMPILER_RT_OUTPUT_DIR}/lib)
- extend_install_path(default_install_path lib)
- set(COMPILER_RT_INSTALL_LIBRARY_DIR "${default_install_path}" CACHE PATH
- "Path where built compiler-rt libraries should be installed.")
-else(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)
- set(COMPILER_RT_OUTPUT_LIBRARY_DIR
- ${COMPILER_RT_OUTPUT_DIR}/lib/${COMPILER_RT_OS_DIR})
- extend_install_path(default_install_path "lib/${COMPILER_RT_OS_DIR}")
- set(COMPILER_RT_INSTALL_LIBRARY_DIR "${default_install_path}" CACHE PATH
- "Path where built compiler-rt libraries should be installed.")
-endif()
-extend_install_path(default_install_path bin)
-set(COMPILER_RT_INSTALL_BINARY_DIR "${default_install_path}" CACHE PATH
- "Path where built compiler-rt executables should be installed.")
-extend_install_path(default_install_path include)
-set(COMPILER_RT_INSTALL_INCLUDE_DIR "${default_install_path}" CACHE PATH
- "Path where compiler-rt headers should be installed.")
-extend_install_path(default_install_path share)
-set(COMPILER_RT_INSTALL_DATA_DIR "${default_install_path}" CACHE PATH
- "Path where compiler-rt data files should be installed.")
-
-if(APPLE)
- # On Darwin if /usr/include/c++ doesn't exist, the user probably has Xcode but
- # not the command line tools (or is using macOS 10.14 or newer). If this is
- # the case, we need to find the OS X sysroot to pass to clang.
- if(NOT EXISTS /usr/include/c++)
- execute_process(COMMAND xcrun -sdk macosx --show-sdk-path
- OUTPUT_VARIABLE OSX_SYSROOT
- ERROR_QUIET
- OUTPUT_STRIP_TRAILING_WHITESPACE)
- if (NOT OSX_SYSROOT OR NOT EXISTS ${OSX_SYSROOT})
- message(WARNING "Detected OSX_SYSROOT ${OSX_SYSROOT} does not exist")
- else()
- message(STATUS "Found OSX_SYSROOT: ${OSX_SYSROOT}")
- set(OSX_SYSROOT_FLAG "-isysroot${OSX_SYSROOT}")
- endif()
- else()
- set(OSX_SYSROOT_FLAG "")
- endif()
-
- option(COMPILER_RT_ENABLE_IOS "Enable building for iOS" On)
- option(COMPILER_RT_ENABLE_WATCHOS "Enable building for watchOS - Experimental" Off)
- option(COMPILER_RT_ENABLE_TVOS "Enable building for tvOS - Experimental" Off)
-
-else()
- option(COMPILER_RT_DEFAULT_TARGET_ONLY "Build builtins only for the default target" Off)
-endif()
-
-if(WIN32 AND NOT MINGW AND NOT CYGWIN)
- set(CMAKE_SHARED_LIBRARY_PREFIX_C "")
- set(CMAKE_SHARED_LIBRARY_PREFIX_CXX "")
- set(CMAKE_STATIC_LIBRARY_PREFIX_C "")
- set(CMAKE_STATIC_LIBRARY_PREFIX_CXX "")
- set(CMAKE_STATIC_LIBRARY_SUFFIX_C ".lib")
- set(CMAKE_STATIC_LIBRARY_SUFFIX_CXX ".lib")
-endif()
-
-macro(test_targets)
- # Find and run MSVC (not clang-cl) and get its version. This will tell clang-cl
- # what version of MSVC to pretend to be so that the STL works.
- set(MSVC_VERSION_FLAG "")
- if (MSVC)
- execute_process(COMMAND "$ENV{VSINSTALLDIR}/VC/bin/cl.exe"
- OUTPUT_QUIET
- ERROR_VARIABLE MSVC_COMPAT_VERSION
- )
- string(REGEX REPLACE "^.*Compiler Version ([0-9.]+) for .*$" "\\1"
- MSVC_COMPAT_VERSION "${MSVC_COMPAT_VERSION}")
- if (MSVC_COMPAT_VERSION MATCHES "^[0-9].+$")
- set(MSVC_VERSION_FLAG "-fms-compatibility-version=${MSVC_COMPAT_VERSION}")
- # Add this flag into the host build if this is clang-cl.
- if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
- append("${MSVC_VERSION_FLAG}" CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
- elseif (COMPILER_RT_TEST_COMPILER_ID MATCHES "Clang")
- # Add this flag to test compiles to suppress clang's auto-detection
- # logic.
- append("${MSVC_VERSION_FLAG}" COMPILER_RT_TEST_COMPILER_CFLAGS)
- endif()
- endif()
- endif()
-
- # Generate the COMPILER_RT_SUPPORTED_ARCH list.
- if(ANDROID)
- # Examine compiler output to determine target architecture.
- detect_target_arch()
- set(COMPILER_RT_OS_SUFFIX "-android")
- elseif(NOT APPLE) # Supported archs for Apple platforms are generated later
- if(COMPILER_RT_DEFAULT_TARGET_ONLY)
- add_default_target_arch(${COMPILER_RT_DEFAULT_TARGET_ARCH})
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "i[2-6]86|x86|amd64")
- if(NOT MSVC)
- test_target_arch(x86_64 "" "-m64")
- test_target_arch(i386 __i386__ "-m32")
- else()
- if (CMAKE_SIZEOF_VOID_P EQUAL 4)
- test_target_arch(i386 "" "")
- else()
- test_target_arch(x86_64 "" "")
- endif()
- endif()
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "powerpc64le")
- test_target_arch(powerpc64le "" "-m64")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "powerpc")
- test_target_arch(powerpc "" "-m32")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "powerpc64")
- test_target_arch(powerpc64 "" "-m64")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "s390x")
- test_target_arch(s390x "" "")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "sparc")
- test_target_arch(sparc "" "-m32")
- test_target_arch(sparcv9 "" "-m64")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "mipsel|mips64el")
- # Gcc doesn't accept -m32/-m64 so we do the next best thing and use
- # -mips32r2/-mips64r2. We don't use -mips1/-mips3 because we want to match
- # clang's default CPU's. In the 64-bit case, we must also specify the ABI
- # since the default ABI differs between gcc and clang.
- # FIXME: Ideally, we would build the N32 library too.
- test_target_arch(mipsel "" "-mips32r2" "-mabi=32" "-D_LARGEFILE_SOURCE" "-D_FILE_OFFSET_BITS=64")
- test_target_arch(mips64el "" "-mips64r2" "-mabi=64")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "mips")
- test_target_arch(mips "" "-mips32r2" "-mabi=32" "-D_LARGEFILE_SOURCE" "-D_FILE_OFFSET_BITS=64")
- test_target_arch(mips64 "" "-mips64r2" "-mabi=64")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "arm")
- if(WIN32)
- test_target_arch(arm "" "" "")
- else()
- test_target_arch(arm "" "-march=armv7-a" "-mfloat-abi=soft")
- test_target_arch(armhf "" "-march=armv7-a" "-mfloat-abi=hard")
- test_target_arch(armv6m "" "-march=armv6m" "-mfloat-abi=soft")
- endif()
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "aarch32")
- test_target_arch(aarch32 "" "-march=armv8-a")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "aarch64")
- test_target_arch(aarch64 "" "-march=armv8-a")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "riscv32")
- test_target_arch(riscv32 "" "")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "riscv64")
- test_target_arch(riscv64 "" "")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "wasm32")
- test_target_arch(wasm32 "" "--target=wasm32-unknown-unknown")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "wasm64")
- test_target_arch(wasm64 "" "--target=wasm64-unknown-unknown")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "ve")
- test_target_arch(ve "__ve__" "--target=ve-unknown-none")
- endif()
- set(COMPILER_RT_OS_SUFFIX "")
- endif()
-endmacro()
Index: create-13.0.0-compiler-rt-ppc64-patch/llvm-13.0.0-new/compiler-rt/cmake
===================================================================
--- create-13.0.0-compiler-rt-ppc64-patch/llvm-13.0.0-new/compiler-rt/cmake (revision 39)
+++ create-13.0.0-compiler-rt-ppc64-patch/llvm-13.0.0-new/compiler-rt/cmake (nonexistent)
Property changes on: create-13.0.0-compiler-rt-ppc64-patch/llvm-13.0.0-new/compiler-rt/cmake
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-compiler-rt-ppc64-patch/llvm-13.0.0-new/compiler-rt
===================================================================
--- create-13.0.0-compiler-rt-ppc64-patch/llvm-13.0.0-new/compiler-rt (revision 39)
+++ create-13.0.0-compiler-rt-ppc64-patch/llvm-13.0.0-new/compiler-rt (nonexistent)
Property changes on: create-13.0.0-compiler-rt-ppc64-patch/llvm-13.0.0-new/compiler-rt
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-compiler-rt-ppc64-patch/llvm-13.0.0-new
===================================================================
--- create-13.0.0-compiler-rt-ppc64-patch/llvm-13.0.0-new (revision 39)
+++ create-13.0.0-compiler-rt-ppc64-patch/llvm-13.0.0-new (nonexistent)
Property changes on: create-13.0.0-compiler-rt-ppc64-patch/llvm-13.0.0-new
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-compiler-rt-ppc64-patch
===================================================================
--- create-13.0.0-compiler-rt-ppc64-patch (revision 39)
+++ create-13.0.0-compiler-rt-ppc64-patch (nonexistent)
Property changes on: create-13.0.0-compiler-rt-ppc64-patch
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-llvm-pass-variables-patch/file.list
===================================================================
--- create-13.0.0-llvm-pass-variables-patch/file.list (revision 39)
+++ create-13.0.0-llvm-pass-variables-patch/file.list (nonexistent)
@@ -1 +0,0 @@
-llvm-13.0.0/llvm/cmake/modules/CrossCompile.cmake
Index: create-13.0.0-llvm-pass-variables-patch/create.patch.sh
===================================================================
--- create-13.0.0-llvm-pass-variables-patch/create.patch.sh (revision 39)
+++ create-13.0.0-llvm-pass-variables-patch/create.patch.sh (nonexistent)
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-VERSION=13.0.0
-
-tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
-mv llvm-$VERSION llvm-$VERSION-orig
-
-cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
-
-diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-llvm-pass-variables.patch
-
-mv llvm-$VERSION-llvm-pass-variables.patch ../patches
-
-rm -rf ./llvm-$VERSION
-rm -rf ./llvm-$VERSION-orig
Property changes on: create-13.0.0-llvm-pass-variables-patch/create.patch.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: create-13.0.0-llvm-pass-variables-patch/llvm-13.0.0-new/llvm/cmake/modules/CrossCompile.cmake
===================================================================
--- create-13.0.0-llvm-pass-variables-patch/llvm-13.0.0-new/llvm/cmake/modules/CrossCompile.cmake (revision 39)
+++ create-13.0.0-llvm-pass-variables-patch/llvm-13.0.0-new/llvm/cmake/modules/CrossCompile.cmake (nonexistent)
@@ -1,143 +0,0 @@
-include(AddLLVM)
-include(LLVMExternalProjectUtils)
-
-
-function(llvm_create_cross_target project_name target_name toolchain buildtype)
-
- if(NOT DEFINED ${project_name}_${target_name}_BUILD)
- set(${project_name}_${target_name}_BUILD
- "${CMAKE_CURRENT_BINARY_DIR}/${target_name}")
- set(${project_name}_${target_name}_BUILD
- ${${project_name}_${target_name}_BUILD} PARENT_SCOPE)
- message(STATUS "Setting native build dir to " ${${project_name}_${target_name}_BUILD})
- endif(NOT DEFINED ${project_name}_${target_name}_BUILD)
-
- if (EXISTS ${LLVM_MAIN_SRC_DIR}/cmake/platforms/${toolchain}.cmake)
- set(CROSS_TOOLCHAIN_FLAGS_INIT
- -DCMAKE_TOOLCHAIN_FILE=\"${LLVM_MAIN_SRC_DIR}/cmake/platforms/${toolchain}.cmake\")
- else()
- set(CROSS_TOOLCHAIN_FLAGS_INIT
- -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
- -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
- )
- endif()
- set(CROSS_TOOLCHAIN_FLAGS_${target_name} ${CROSS_TOOLCHAIN_FLAGS_INIT}
- CACHE STRING "Toolchain configuration for ${target_name}")
-
- # project specific version of the flags up above
- set(CROSS_TOOLCHAIN_FLAGS_${project_name}_${target_name} ""
- CACHE STRING "Toolchain configuration for ${Pproject_name}_${target_name}")
-
- if (buildtype)
- set(build_type_flags "-DCMAKE_BUILD_TYPE=${buildtype}")
- endif()
- if (LLVM_USE_LINKER AND NOT CMAKE_CROSSCOMPILING)
- set(linker_flag "-DLLVM_USE_LINKER=${LLVM_USE_LINKER}")
- endif()
- if (LLVM_EXTERNAL_CLANG_SOURCE_DIR)
- # Propagate LLVM_EXTERNAL_CLANG_SOURCE_DIR so that clang-tblgen can be built
- set(external_clang_dir "-DLLVM_EXTERNAL_CLANG_SOURCE_DIR=${LLVM_EXTERNAL_CLANG_SOURCE_DIR}")
- endif()
-
- add_custom_command(OUTPUT ${${project_name}_${target_name}_BUILD}
- COMMAND ${CMAKE_COMMAND} -E make_directory ${${project_name}_${target_name}_BUILD}
- COMMENT "Creating ${${project_name}_${target_name}_BUILD}...")
-
- add_custom_target(CREATE_${project_name}_${target_name}
- DEPENDS ${${project_name}_${target_name}_BUILD})
-
- # Escape semicolons in the targets list so that cmake doesn't expand
- # them to spaces.
- string(REPLACE ";" "$<SEMICOLON>" targets_to_build_arg
- "${LLVM_TARGETS_TO_BUILD}")
- string(REPLACE ";" "$<SEMICOLON>" experimental_targets_to_build_arg
- "${LLVM_EXPERIMENTAL_TARGETS_TO_BUILD}")
-
- string(REPLACE ";" "$<SEMICOLON>" llvm_enable_projects_arg
- "${LLVM_ENABLE_PROJECTS}")
- string(REPLACE ";" "$<SEMICOLON>" llvm_external_projects_arg
- "${LLVM_EXTERNAL_PROJECTS}")
-
- set(external_project_source_dirs)
- foreach(project ${LLVM_EXTERNAL_PROJECTS})
- canonicalize_tool_name(${project} name)
- list(APPEND external_project_source_dirs
- "-DLLVM_EXTERNAL_${name}_SOURCE_DIR=${LLVM_EXTERNAL_${name}_SOURCE_DIR}")
- endforeach()
-
- add_custom_command(OUTPUT ${${project_name}_${target_name}_BUILD}/CMakeCache.txt
- COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}"
- -DCMAKE_MAKE_PROGRAM="${CMAKE_MAKE_PROGRAM}"
- ${CROSS_TOOLCHAIN_FLAGS_${target_name}} ${CMAKE_CURRENT_SOURCE_DIR}
- ${CROSS_TOOLCHAIN_FLAGS_${project_name}_${target_name}}
- -DLLVM_TARGET_IS_CROSSCOMPILE_HOST=TRUE
- -DLLVM_TARGETS_TO_BUILD="${targets_to_build_arg}"
- -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD="${experimental_targets_to_build_arg}"
- -DLLVM_DEFAULT_TARGET_TRIPLE="${TARGET_TRIPLE}"
- -DLLVM_TARGET_ARCH="${LLVM_TARGET_ARCH}"
- -DLLVM_ENABLE_PROJECTS="${llvm_enable_projects_arg}"
- -DLLVM_EXTERNAL_PROJECTS="${llvm_external_projects_arg}"
- ${external_project_source_dirs}
- -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN="${LLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN}"
- -DCMAKE_INSTALL_LIBDIR="${CMAKE_INSTALL_LIBDIR}"
- -DZLIB_INCLUDE_DIR="${ZLIB_INCLUDE_DIR}"
- -DZLIB_LIBRARY_RELEASE="${ZLIB_LIBRARY_RELEASE}"
- -DLIBLZMA_INCLUDE_DIR="${LIBLZMA_INCLUDE_DIR}"
- -DLIBLZMA_LIBRARY_RELEASE="${LIBLZMA_LIBRARY_RELEASE}"
- -DLIBXML2_INCLUDE_DIR="${LIBXML2_INCLUDE_DIR}"
- -DLIBXML2_LIBRARY="${LIBXML2_LIBRARY}"
- -DLIBOMPTARGET_DEP_LIBELF_INCLUDE_DIR="${LIBOMPTARGET_DEP_LIBELF_INCLUDE_DIR}"
- -DLIBOMPTARGET_DEP_LIBELF_LIBRARIES="${LIBOMPTARGET_DEP_LIBELF_LIBRARIES}"
- -DLIBOMPTARGET_DEP_LIBFFI_INCLUDE_DIR="${LIBOMPTARGET_DEP_LIBFFI_INCLUDE_DIR}"
- -DLIBOMPTARGET_DEP_LIBFFI_LIBRARIES="${LIBOMPTARGET_DEP_LIBFFI_LIBRARIES}"
- -DFFI_INCLUDE_DIR=${FFI_INCLUDE_DIR}
- -DFFI_INCLUDE_PATH=${FFI_INCLUDE_PATH}
- -DFFI_LIBRARY_DIR=${FFI_LIBRARY_DIR}
- -DFFI_LIBRARY_PATH=${FFI_LIBRARY_PATH}
- -DLUA_INCLUDE_DIR=${LUA_INCLUDE_DIR}
- -DLUA_LIBRARY=${LUA_LIBRARY}
- -DLUA_MATH_LIBRARY=${LUA_MATH_LIBRARY}
- -DCURSES_CURSES_LIBRARY="${CURSES_CURSES_LIBRARY}"
- -DCURSES_FORM_LIBRARY="${CURSES_FORM_LIBRARY}"
- -DCURSES_INCLUDE_PATH="${CURSES_INCLUDE_PATH}"
- -DCURSES_NCURSES_LIBRARY="${CURSES_NCURSES_LIBRARY}"
- -DPANEL_LIBRARIES="${PANEL_LIBRARIES}"
- -Dpkgcfg_lib_NCURSES_ncurses="${pkgcfg_lib_NCURSES_ncurses}"
- -Dpkgcfg_lib_NCURSES_tinfo="${pkgcfg_lib_NCURSES_tinfo}"
- -DCOMPILER_RT_TERMINFO_LIB="${COMPILER_RT_TERMINFO_LIB}"
- -DTERMINFO_LIB="${TERMINFO_LIB}"
- ${build_type_flags} ${linker_flag} ${external_clang_dir}
- ${ARGN}
- WORKING_DIRECTORY ${${project_name}_${target_name}_BUILD}
- DEPENDS CREATE_${project_name}_${target_name}
- COMMENT "Configuring ${target_name} ${project_name}...")
-
- add_custom_target(CONFIGURE_${project_name}_${target_name}
- DEPENDS ${${project_name}_${target_name}_BUILD}/CMakeCache.txt)
-
-endfunction()
-
-# Sets up a native build for a tool, used e.g. for cross-compilation and
-# LLVM_OPTIMIZED_TABLEGEN. Always builds in Release.
-# - target: The target to build natively
-# - output_path_var: A variable name which receives the path to the built target
-# - DEPENDS: Any additional dependencies for the target
-function(build_native_tool target output_path_var)
- cmake_parse_arguments(ARG "" "" "DEPENDS" ${ARGN})
-
- if(CMAKE_CONFIGURATION_TYPES)
- set(output_path "${${PROJECT_NAME}_NATIVE_BUILD}/Release/bin/${target}")
- else()
- set(output_path "${${PROJECT_NAME}_NATIVE_BUILD}/bin/${target}")
- endif()
-
- llvm_ExternalProject_BuildCmd(build_cmd ${target} ${${PROJECT_NAME}_NATIVE_BUILD}
- CONFIGURATION Release)
- add_custom_command(OUTPUT "${output_path}"
- COMMAND ${build_cmd}
- DEPENDS CONFIGURE_${PROJECT_NAME}_NATIVE ${ARG_DEPENDS}
- WORKING_DIRECTORY "${${PROJECT_NAME}_NATIVE_BUILD}"
- COMMENT "Building native ${target}..."
- USES_TERMINAL)
- set(${output_path_var} "${output_path}" PARENT_SCOPE)
-endfunction()
Index: create-13.0.0-llvm-pass-variables-patch/llvm-13.0.0-new/llvm/cmake/modules
===================================================================
--- create-13.0.0-llvm-pass-variables-patch/llvm-13.0.0-new/llvm/cmake/modules (revision 39)
+++ create-13.0.0-llvm-pass-variables-patch/llvm-13.0.0-new/llvm/cmake/modules (nonexistent)
Property changes on: create-13.0.0-llvm-pass-variables-patch/llvm-13.0.0-new/llvm/cmake/modules
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-llvm-pass-variables-patch/llvm-13.0.0-new/llvm/cmake
===================================================================
--- create-13.0.0-llvm-pass-variables-patch/llvm-13.0.0-new/llvm/cmake (revision 39)
+++ create-13.0.0-llvm-pass-variables-patch/llvm-13.0.0-new/llvm/cmake (nonexistent)
Property changes on: create-13.0.0-llvm-pass-variables-patch/llvm-13.0.0-new/llvm/cmake
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-llvm-pass-variables-patch/llvm-13.0.0-new/llvm
===================================================================
--- create-13.0.0-llvm-pass-variables-patch/llvm-13.0.0-new/llvm (revision 39)
+++ create-13.0.0-llvm-pass-variables-patch/llvm-13.0.0-new/llvm (nonexistent)
Property changes on: create-13.0.0-llvm-pass-variables-patch/llvm-13.0.0-new/llvm
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-llvm-pass-variables-patch/llvm-13.0.0-new
===================================================================
--- create-13.0.0-llvm-pass-variables-patch/llvm-13.0.0-new (revision 39)
+++ create-13.0.0-llvm-pass-variables-patch/llvm-13.0.0-new (nonexistent)
Property changes on: create-13.0.0-llvm-pass-variables-patch/llvm-13.0.0-new
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-llvm-pass-variables-patch
===================================================================
--- create-13.0.0-llvm-pass-variables-patch (revision 39)
+++ create-13.0.0-llvm-pass-variables-patch (nonexistent)
Property changes on: create-13.0.0-llvm-pass-variables-patch
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-scan-build-py-x32-patch/file.list
===================================================================
--- create-15.0.4-scan-build-py-x32-patch/file.list (revision 39)
+++ create-15.0.4-scan-build-py-x32-patch/file.list (nonexistent)
@@ -1 +0,0 @@
-llvm-15.0.4/clang/tools/scan-build-py/CMakeLists.txt
Index: create-15.0.4-scan-build-py-x32-patch/llvm-15.0.4-new/clang/tools/scan-build-py/CMakeLists.txt
===================================================================
--- create-15.0.4-scan-build-py-x32-patch/llvm-15.0.4-new/clang/tools/scan-build-py/CMakeLists.txt (revision 39)
+++ create-15.0.4-scan-build-py-x32-patch/llvm-15.0.4-new/clang/tools/scan-build-py/CMakeLists.txt (nonexistent)
@@ -1,132 +0,0 @@
-set (BinFiles
- "analyze-build"
- "intercept-build"
- "scan-build")
-
-set (LibExecs
- "analyze-c++"
- "analyze-cc"
- "intercept-c++"
- "intercept-cc")
-
-set (LibScanbuild
- "__init__.py"
- "analyze.py"
- "arguments.py"
- "clang.py"
- "compilation.py"
- "intercept.py"
- "report.py"
- "shell.py")
-
-set (LibScanbuildResources
- "scanview.css"
- "selectable.js"
- "sorttable.js")
-
-# libear is compiled dynamically in build_libear using the specified cc
-# compiler.
-set (LibEar
- "__init__.py"
- "config.h.in"
- "ear.c")
-
-foreach(BinFile ${BinFiles})
- if ("${BinFile}" STREQUAL "scan-build")
- # Need to rename scan-build to scan-build-py to prevent overwriting
- # scan-build Perl implementation.
- add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/bin/scan-build-py
- COMMAND ${CMAKE_COMMAND} -E make_directory
- ${CMAKE_BINARY_DIR}/bin
- COMMAND ${CMAKE_COMMAND} -E copy
- ${CMAKE_CURRENT_SOURCE_DIR}/bin/scan-build
- ${CMAKE_BINARY_DIR}/bin/scan-build-py
- DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/bin/scan-build)
- install (PROGRAMS "bin/scan-build"
- DESTINATION "${CMAKE_INSTALL_BINDIR}"
- RENAME scan-build-py
- COMPONENT scan-build-py)
- list(APPEND Depends ${CMAKE_BINARY_DIR}/bin/scan-build-py)
- else()
- add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/bin/${BinFile}
- COMMAND ${CMAKE_COMMAND} -E make_directory
- ${CMAKE_BINARY_DIR}/bin
- COMMAND ${CMAKE_COMMAND} -E copy
- ${CMAKE_CURRENT_SOURCE_DIR}/bin/${BinFile}
- ${CMAKE_BINARY_DIR}/bin/
- DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/bin/${BinFile})
- install(PROGRAMS bin/${BinFile}
- DESTINATION "${CMAKE_INSTALL_BINDIR}"
- COMPONENT scan-build-py)
- list(APPEND Depends ${CMAKE_BINARY_DIR}/bin/${BinFile})
- endif()
-endforeach()
-
-foreach(lib ${LibExecs})
- add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/libexec/${lib}
- COMMAND ${CMAKE_COMMAND} -E make_directory
- ${CMAKE_BINARY_DIR}/libexec
- COMMAND ${CMAKE_COMMAND} -E copy
- ${CMAKE_CURRENT_SOURCE_DIR}/libexec/${lib}
- ${CMAKE_BINARY_DIR}/libexec/
- DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/libexec/${lib})
- list(APPEND Depends ${CMAKE_BINARY_DIR}/libexec/${lib})
- install(PROGRAMS libexec/${lib}
- DESTINATION "${CMAKE_INSTALL_LIBEXECDIR}"
- COMPONENT scan-build-py)
-endforeach()
-
-foreach(lib ${LibScanbuild})
- add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/lib/libscanbuild/${lib}
- COMMAND ${CMAKE_COMMAND} -E make_directory
- ${CMAKE_BINARY_DIR}/lib
- COMMAND ${CMAKE_COMMAND} -E make_directory
- ${CMAKE_BINARY_DIR}/lib/libscanbuild
- COMMAND ${CMAKE_COMMAND} -E copy
- ${CMAKE_CURRENT_SOURCE_DIR}/lib/libscanbuild/${lib}
- ${CMAKE_BINARY_DIR}/lib/libscanbuild/
- DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/lib/libscanbuild/${lib})
- list(APPEND Depends ${CMAKE_BINARY_DIR}/lib/libscanbuild/${lib})
- install(PROGRAMS lib/libscanbuild/${lib}
- DESTINATION lib32/libscanbuild
- COMPONENT scan-build-py)
-endforeach()
-
-foreach(resource ${LibScanbuildResources})
- add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/lib/libscanbuild/resources/${resource}
- COMMAND ${CMAKE_COMMAND} -E make_directory
- ${CMAKE_BINARY_DIR}/lib
- COMMAND ${CMAKE_COMMAND} -E make_directory
- ${CMAKE_BINARY_DIR}/lib/libscanbuild
- COMMAND ${CMAKE_COMMAND} -E make_directory
- ${CMAKE_BINARY_DIR}/lib/libscanbuild/resources
- COMMAND ${CMAKE_COMMAND} -E copy
- ${CMAKE_CURRENT_SOURCE_DIR}/lib/libscanbuild/resources/${resource}
- ${CMAKE_BINARY_DIR}/lib/libscanbuild/resources
- DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/lib/libscanbuild/resources/${resource})
- list(APPEND Depends ${CMAKE_BINARY_DIR}/lib/libscanbuild/resources/${resource})
- install(PROGRAMS lib/libscanbuild/resources/${resource}
- DESTINATION lib32/libscanbuild/resources
- COMPONENT scan-build-py)
-endforeach()
-
-foreach(lib ${LibEar})
- add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/lib/libear/${lib}
- COMMAND ${CMAKE_COMMAND} -E make_directory
- ${CMAKE_BINARY_DIR}/lib
- COMMAND ${CMAKE_COMMAND} -E make_directory
- ${CMAKE_BINARY_DIR}/lib/libear
- COMMAND ${CMAKE_COMMAND} -E copy
- ${CMAKE_CURRENT_SOURCE_DIR}/lib/libear/${lib}
- ${CMAKE_BINARY_DIR}/lib/libear/
- DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/lib/libear/${lib})
- list(APPEND Depends ${CMAKE_BINARY_DIR}/lib/libear/${lib})
- install(PROGRAMS lib/libear/${lib}
- DESTINATION lib32/libear
- COMPONENT scan-build-py)
-endforeach()
-
-add_custom_target(scan-build-py ALL DEPENDS ${Depends})
-add_llvm_install_targets("install-scan-build-py"
- DEPENDS scan-build-py
- COMPONENT scan-build-py)
Index: create-15.0.4-scan-build-py-x32-patch/llvm-15.0.4-new/clang/tools/scan-build-py
===================================================================
--- create-15.0.4-scan-build-py-x32-patch/llvm-15.0.4-new/clang/tools/scan-build-py (revision 39)
+++ create-15.0.4-scan-build-py-x32-patch/llvm-15.0.4-new/clang/tools/scan-build-py (nonexistent)
Property changes on: create-15.0.4-scan-build-py-x32-patch/llvm-15.0.4-new/clang/tools/scan-build-py
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-scan-build-py-x32-patch/llvm-15.0.4-new/clang/tools
===================================================================
--- create-15.0.4-scan-build-py-x32-patch/llvm-15.0.4-new/clang/tools (revision 39)
+++ create-15.0.4-scan-build-py-x32-patch/llvm-15.0.4-new/clang/tools (nonexistent)
Property changes on: create-15.0.4-scan-build-py-x32-patch/llvm-15.0.4-new/clang/tools
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-scan-build-py-x32-patch/llvm-15.0.4-new/clang
===================================================================
--- create-15.0.4-scan-build-py-x32-patch/llvm-15.0.4-new/clang (revision 39)
+++ create-15.0.4-scan-build-py-x32-patch/llvm-15.0.4-new/clang (nonexistent)
Property changes on: create-15.0.4-scan-build-py-x32-patch/llvm-15.0.4-new/clang
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-scan-build-py-x32-patch/llvm-15.0.4-new
===================================================================
--- create-15.0.4-scan-build-py-x32-patch/llvm-15.0.4-new (revision 39)
+++ create-15.0.4-scan-build-py-x32-patch/llvm-15.0.4-new (nonexistent)
Property changes on: create-15.0.4-scan-build-py-x32-patch/llvm-15.0.4-new
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-scan-build-py-x32-patch/create.patch.sh
===================================================================
--- create-15.0.4-scan-build-py-x32-patch/create.patch.sh (revision 39)
+++ create-15.0.4-scan-build-py-x32-patch/create.patch.sh (nonexistent)
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-VERSION=15.0.4
-
-tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
-mv llvm-$VERSION llvm-$VERSION-orig
-
-cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
-
-diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-scan-build-py-x32.patch
-
-mv llvm-$VERSION-scan-build-py-x32.patch ../patches
-
-rm -rf ./llvm-$VERSION
-rm -rf ./llvm-$VERSION-orig
Property changes on: create-15.0.4-scan-build-py-x32-patch/create.patch.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: create-15.0.4-scan-build-py-x32-patch
===================================================================
--- create-15.0.4-scan-build-py-x32-patch (revision 39)
+++ create-15.0.4-scan-build-py-x32-patch (nonexistent)
Property changes on: create-15.0.4-scan-build-py-x32-patch
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-compiler-rt-ppc64-patch/file.list
===================================================================
--- create-15.0.4-compiler-rt-ppc64-patch/file.list (revision 39)
+++ create-15.0.4-compiler-rt-ppc64-patch/file.list (nonexistent)
@@ -1,2 +0,0 @@
-llvm-15.0.4/compiler-rt/cmake/base-config-ix.cmake
-llvm-15.0.4/compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake
Index: create-15.0.4-compiler-rt-ppc64-patch/llvm-15.0.4-new/compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake
===================================================================
--- create-15.0.4-compiler-rt-ppc64-patch/llvm-15.0.4-new/compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake (revision 39)
+++ create-15.0.4-compiler-rt-ppc64-patch/llvm-15.0.4-new/compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake (nonexistent)
@@ -1,84 +0,0 @@
-set(ARM64 aarch64)
-set(ARM32 arm armhf)
-set(HEXAGON hexagon)
-set(X86 i386)
-set(X86_64 x86_64)
-set(LOONGARCH64 loongarch64)
-set(MIPS32 mips mipsel)
-set(MIPS64 mips64 mips64el)
-set(PPC32 ppc powerpc powerpcspe)
-set(PPC64 ppc64 powerpc64 pc64le powerpc64le)
-set(RISCV32 riscv32)
-set(RISCV64 riscv64)
-set(S390X s390x)
-set(SPARC sparc)
-set(SPARCV9 sparcv9)
-set(WASM32 wasm32)
-set(WASM64 wasm64)
-set(VE ve)
-
-if(APPLE)
- set(ARM64 arm64)
- set(ARM32 armv7 armv7s armv7k)
- set(X86_64 x86_64 x86_64h)
-endif()
-
-set(ALL_SANITIZER_COMMON_SUPPORTED_ARCH ${X86} ${X86_64} ${PPC64} ${RISCV64}
- ${ARM32} ${ARM64} ${MIPS32} ${MIPS64} ${S390X} ${SPARC} ${SPARCV9}
- ${HEXAGON} ${LOONGARCH64})
-set(ALL_ASAN_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64} ${RISCV64}
- ${MIPS32} ${MIPS64} ${PPC64} ${S390X} ${SPARC} ${SPARCV9} ${HEXAGON}
- ${LOONGARCH64})
-set(ALL_DFSAN_SUPPORTED_ARCH ${X86_64} ${MIPS64} ${ARM64})
-
-if(ANDROID)
- set(OS_NAME "Android")
-else()
- set(OS_NAME "${CMAKE_SYSTEM_NAME}")
-endif()
-
-if(OS_NAME MATCHES "Linux")
- set(ALL_FUZZER_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64} ${S390X})
-elseif (OS_NAME MATCHES "Windows")
- set(ALL_FUZZER_SUPPORTED_ARCH ${X86} ${X86_64})
-elseif(OS_NAME MATCHES "Android")
- set(ALL_FUZZER_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64})
-else()
- set(ALL_FUZZER_SUPPORTED_ARCH ${X86_64} ${ARM64})
-endif()
-
-set(ALL_GWP_ASAN_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64})
-if(APPLE)
- set(ALL_LSAN_SUPPORTED_ARCH ${X86} ${X86_64} ${MIPS64} ${ARM64})
-else()
- set(ALL_LSAN_SUPPORTED_ARCH ${X86} ${X86_64} ${MIPS64} ${ARM64} ${ARM32}
- ${PPC64} ${S390X} ${RISCV64} ${HEXAGON})
-endif()
-set(ALL_MSAN_SUPPORTED_ARCH ${X86_64} ${MIPS64} ${ARM64} ${PPC64} ${S390X})
-set(ALL_HWASAN_SUPPORTED_ARCH ${X86_64} ${ARM64})
-set(ALL_MEMPROF_SUPPORTED_ARCH ${X86_64})
-set(ALL_PROFILE_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64} ${PPC32} ${PPC64}
- ${MIPS32} ${MIPS64} ${S390X} ${SPARC} ${SPARCV9} ${HEXAGON}
- ${RISCV32} ${RISCV64})
-set(ALL_TSAN_SUPPORTED_ARCH ${X86_64} ${MIPS64} ${ARM64} ${PPC64} ${S390X})
-set(ALL_UBSAN_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64} ${RISCV64}
- ${MIPS32} ${MIPS64} ${PPC64} ${S390X} ${SPARC} ${SPARCV9} ${HEXAGON})
-set(ALL_SAFESTACK_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM64} ${MIPS32} ${MIPS64}
- ${HEXAGON})
-set(ALL_CFI_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64} ${MIPS64}
- ${HEXAGON})
-set(ALL_SCUDO_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64} ${MIPS32}
- ${MIPS64} ${PPC64} ${HEXAGON})
-set(ALL_SCUDO_STANDALONE_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64}
- ${MIPS32} ${MIPS64} ${PPC64} ${HEXAGON})
-if(APPLE)
-set(ALL_XRAY_SUPPORTED_ARCH ${X86_64})
-else()
-set(ALL_XRAY_SUPPORTED_ARCH ${X86_64} ${ARM32} ${ARM64} ${MIPS32} ${MIPS64}
- ppc64le powerpc64le ${HEXAGON})
-endif()
-set(ALL_SHADOWCALLSTACK_SUPPORTED_ARCH ${ARM64})
-
-if (UNIX)
-set(ALL_ORC_SUPPORTED_ARCH ${X86_64} ${ARM64} ${ARM32})
-endif()
Index: create-15.0.4-compiler-rt-ppc64-patch/llvm-15.0.4-new/compiler-rt/cmake/Modules
===================================================================
--- create-15.0.4-compiler-rt-ppc64-patch/llvm-15.0.4-new/compiler-rt/cmake/Modules (revision 39)
+++ create-15.0.4-compiler-rt-ppc64-patch/llvm-15.0.4-new/compiler-rt/cmake/Modules (nonexistent)
Property changes on: create-15.0.4-compiler-rt-ppc64-patch/llvm-15.0.4-new/compiler-rt/cmake/Modules
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-compiler-rt-ppc64-patch/llvm-15.0.4-new/compiler-rt/cmake/base-config-ix.cmake
===================================================================
--- create-15.0.4-compiler-rt-ppc64-patch/llvm-15.0.4-new/compiler-rt/cmake/base-config-ix.cmake (revision 39)
+++ create-15.0.4-compiler-rt-ppc64-patch/llvm-15.0.4-new/compiler-rt/cmake/base-config-ix.cmake (nonexistent)
@@ -1,257 +0,0 @@
-# The CompilerRT build system requires CMake version 2.8.8 or higher in order
-# to use its support for building convenience "libraries" as a collection of
-# .o files. This is particularly useful in producing larger, more complex
-# runtime libraries.
-
-include(BuiltinTests)
-include(CheckIncludeFile)
-include(CheckCXXSourceCompiles)
-include(GNUInstallDirs)
-include(ExtendPath)
-
-check_include_file(unwind.h HAVE_UNWIND_H)
-
-# Used by sanitizer_common and tests.
-check_include_file(rpc/xdr.h HAVE_RPC_XDR_H)
-if (NOT HAVE_RPC_XDR_H)
- set(HAVE_RPC_XDR_H 0)
-endif()
-
-# Top level target used to build all compiler-rt libraries.
-add_custom_target(compiler-rt ALL)
-add_custom_target(install-compiler-rt)
-add_custom_target(install-compiler-rt-stripped)
-set_property(
- TARGET
- compiler-rt
- install-compiler-rt
- install-compiler-rt-stripped
- PROPERTY
- FOLDER "Compiler-RT Misc"
-)
-
-# Setting these variables from an LLVM build is sufficient that compiler-rt can
-# construct the output paths, so it can behave as if it were in-tree here.
-if (LLVM_LIBRARY_OUTPUT_INTDIR AND LLVM_RUNTIME_OUTPUT_INTDIR AND PACKAGE_VERSION)
- set(LLVM_TREE_AVAILABLE On)
-endif()
-
-if (LLVM_TREE_AVAILABLE)
- # Compute the Clang version from the LLVM version.
- # FIXME: We should be able to reuse CLANG_VERSION variable calculated
- # in Clang cmake files, instead of copying the rules here.
- string(REGEX MATCH "[0-9]+\\.[0-9]+(\\.[0-9]+)?" CLANG_VERSION
- ${PACKAGE_VERSION})
- # Setup the paths where compiler-rt runtimes and headers should be stored.
- set(COMPILER_RT_OUTPUT_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR}/clang/${CLANG_VERSION})
- set(COMPILER_RT_EXEC_OUTPUT_DIR ${LLVM_RUNTIME_OUTPUT_INTDIR})
- set(COMPILER_RT_INSTALL_PATH lib${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION})
- option(COMPILER_RT_INCLUDE_TESTS "Generate and build compiler-rt unit tests."
- ${LLVM_INCLUDE_TESTS})
- option(COMPILER_RT_ENABLE_WERROR "Fail and stop if warning is triggered"
- ${LLVM_ENABLE_WERROR})
-
- # Use just-built Clang to compile/link tests on all platforms.
- if (CMAKE_CROSSCOMPILING)
- if (CMAKE_HOST_WIN32)
- set(_host_executable_suffix ".exe")
- else()
- set(_host_executable_suffix "")
- endif()
- else()
- set(_host_executable_suffix ${CMAKE_EXECUTABLE_SUFFIX})
- endif()
- set(COMPILER_RT_TEST_COMPILER
- ${LLVM_RUNTIME_OUTPUT_INTDIR}/clang${_host_executable_suffix})
- set(COMPILER_RT_TEST_CXX_COMPILER
- ${LLVM_RUNTIME_OUTPUT_INTDIR}/clang++${_host_executable_suffix})
-else()
- # Take output dir and install path from the user.
- set(COMPILER_RT_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR} CACHE PATH
- "Path where built compiler-rt libraries should be stored.")
- set(COMPILER_RT_EXEC_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/bin CACHE PATH
- "Path where built compiler-rt executables should be stored.")
- set(COMPILER_RT_INSTALL_PATH "" CACHE PATH
- "Prefix for directories where built compiler-rt artifacts should be installed.")
- option(COMPILER_RT_INCLUDE_TESTS "Generate and build compiler-rt unit tests." OFF)
- option(COMPILER_RT_ENABLE_WERROR "Fail and stop if warning is triggered" OFF)
- # Use a host compiler to compile/link tests.
- set(COMPILER_RT_TEST_COMPILER ${CMAKE_C_COMPILER} CACHE PATH "Compiler to use for testing")
- set(COMPILER_RT_TEST_CXX_COMPILER ${CMAKE_CXX_COMPILER} CACHE PATH "C++ Compiler to use for testing")
-endif()
-
-if("${COMPILER_RT_TEST_COMPILER}" MATCHES "clang[+]*$")
- set(COMPILER_RT_TEST_COMPILER_ID Clang)
-elseif("${COMPILER_RT_TEST_COMPILER}" MATCHES "clang.*.exe$")
- set(COMPILER_RT_TEST_COMPILER_ID Clang)
-else()
- set(COMPILER_RT_TEST_COMPILER_ID GNU)
-endif()
-
-if(NOT DEFINED COMPILER_RT_OS_DIR)
- if(ANDROID)
- # The CMAKE_SYSTEM_NAME for Android is Android, but the OS is Linux and the
- # driver will search for compiler-rt libraries in the "linux" directory.
- set(COMPILER_RT_OS_DIR linux)
- else()
- string(TOLOWER ${CMAKE_SYSTEM_NAME} COMPILER_RT_OS_DIR)
- endif()
-endif()
-if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)
- set(COMPILER_RT_OUTPUT_LIBRARY_DIR
- ${COMPILER_RT_OUTPUT_DIR}/lib)
- extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" lib)
- set(COMPILER_RT_INSTALL_LIBRARY_DIR "${default_install_path}" CACHE PATH
- "Path where built compiler-rt libraries should be installed.")
-else(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)
- set(COMPILER_RT_OUTPUT_LIBRARY_DIR
- ${COMPILER_RT_OUTPUT_DIR}/lib/${COMPILER_RT_OS_DIR})
- extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" "lib/${COMPILER_RT_OS_DIR}")
- set(COMPILER_RT_INSTALL_LIBRARY_DIR "${default_install_path}" CACHE PATH
- "Path where built compiler-rt libraries should be installed.")
-endif()
-extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" "${CMAKE_INSTALL_BINDIR}")
-set(COMPILER_RT_INSTALL_BINARY_DIR "${default_install_path}" CACHE PATH
- "Path where built compiler-rt executables should be installed.")
-extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" "${CMAKE_INSTALL_INCLUDEDIR}")
-set(COMPILER_RT_INSTALL_INCLUDE_DIR "${default_install_path}" CACHE PATH
- "Path where compiler-rt headers should be installed.")
-extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" "${CMAKE_INSTALL_DATADIR}")
-set(COMPILER_RT_INSTALL_DATA_DIR "${default_install_path}" CACHE PATH
- "Path where compiler-rt data files should be installed.")
-
-if(APPLE)
- # On Darwin if /usr/include/c++ doesn't exist, the user probably has Xcode but
- # not the command line tools (or is using macOS 10.14 or newer). If this is
- # the case, we need to find the OS X sysroot to pass to clang.
- if(NOT EXISTS /usr/include/c++)
- execute_process(COMMAND xcrun -sdk macosx --show-sdk-path
- OUTPUT_VARIABLE OSX_SYSROOT
- ERROR_QUIET
- OUTPUT_STRIP_TRAILING_WHITESPACE)
- if (NOT OSX_SYSROOT OR NOT EXISTS ${OSX_SYSROOT})
- message(WARNING "Detected OSX_SYSROOT ${OSX_SYSROOT} does not exist")
- else()
- message(STATUS "Found OSX_SYSROOT: ${OSX_SYSROOT}")
- set(OSX_SYSROOT_FLAG "-isysroot${OSX_SYSROOT}")
- endif()
- else()
- set(OSX_SYSROOT_FLAG "")
- endif()
-
- try_compile_only(COMPILER_RT_HAS_DARWIN_TARGET_VARIANT_FLAG
- FLAGS
- "-target" "x86_64-apple-macos10.15"
- "-darwin-target-variant" "x86_64-apple-ios13.1-macabi"
- "-Werror")
- option(COMPILER_RT_ENABLE_MACCATALYST "Enable building for Mac Catalyst" ${COMPILER_RT_HAS_DARWIN_TARGET_VARIANT_FLAG})
- option(COMPILER_RT_ENABLE_IOS "Enable building for iOS" On)
- option(COMPILER_RT_ENABLE_WATCHOS "Enable building for watchOS - Experimental" Off)
- option(COMPILER_RT_ENABLE_TVOS "Enable building for tvOS - Experimental" Off)
-
-else()
- option(COMPILER_RT_DEFAULT_TARGET_ONLY "Build builtins only for the default target" Off)
-endif()
-
-if(WIN32 AND NOT MINGW AND NOT CYGWIN)
- set(CMAKE_SHARED_LIBRARY_PREFIX_C "")
- set(CMAKE_SHARED_LIBRARY_PREFIX_CXX "")
- set(CMAKE_STATIC_LIBRARY_PREFIX_C "")
- set(CMAKE_STATIC_LIBRARY_PREFIX_CXX "")
- set(CMAKE_STATIC_LIBRARY_SUFFIX_C ".lib")
- set(CMAKE_STATIC_LIBRARY_SUFFIX_CXX ".lib")
-endif()
-
-macro(test_targets)
- # Find and run MSVC (not clang-cl) and get its version. This will tell clang-cl
- # what version of MSVC to pretend to be so that the STL works.
- set(MSVC_VERSION_FLAG "")
- if (MSVC)
- execute_process(COMMAND "$ENV{VSINSTALLDIR}/VC/bin/cl.exe"
- OUTPUT_QUIET
- ERROR_VARIABLE MSVC_COMPAT_VERSION
- )
- string(REGEX REPLACE "^.*Compiler Version ([0-9.]+) for .*$" "\\1"
- MSVC_COMPAT_VERSION "${MSVC_COMPAT_VERSION}")
- if (MSVC_COMPAT_VERSION MATCHES "^[0-9].+$")
- set(MSVC_VERSION_FLAG "-fms-compatibility-version=${MSVC_COMPAT_VERSION}")
- # Add this flag into the host build if this is clang-cl.
- if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
- append("${MSVC_VERSION_FLAG}" CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
- elseif (COMPILER_RT_TEST_COMPILER_ID MATCHES "Clang")
- # Add this flag to test compiles to suppress clang's auto-detection
- # logic.
- append("${MSVC_VERSION_FLAG}" COMPILER_RT_TEST_COMPILER_CFLAGS)
- endif()
- endif()
- endif()
-
- # Generate the COMPILER_RT_SUPPORTED_ARCH list.
- if(ANDROID)
- # Examine compiler output to determine target architecture.
- detect_target_arch()
- set(COMPILER_RT_OS_SUFFIX "-android")
- elseif(NOT APPLE) # Supported archs for Apple platforms are generated later
- if(COMPILER_RT_DEFAULT_TARGET_ONLY)
- add_default_target_arch(${COMPILER_RT_DEFAULT_TARGET_ARCH})
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "i[2-6]86|x86|amd64")
- if(NOT MSVC)
- test_target_arch(x86_64 "" "-m64")
- test_target_arch(i386 __i386__ "-m32")
- else()
- if (CMAKE_SIZEOF_VOID_P EQUAL 4)
- test_target_arch(i386 "" "")
- else()
- test_target_arch(x86_64 "" "")
- endif()
- endif()
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "powerpc64le|ppc64le")
- test_target_arch(powerpc64le "" "-m64")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "powerpc|ppc")
- test_target_arch(powerpc "" "-m32")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "powerpc64|ppc64")
- test_target_arch(powerpc64 "" "-m64")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "s390x")
- test_target_arch(s390x "" "")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "sparc")
- test_target_arch(sparc "" "-m32")
- test_target_arch(sparcv9 "" "-m64")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "mipsel|mips64el")
- # Gcc doesn't accept -m32/-m64 so we do the next best thing and use
- # -mips32r2/-mips64r2. We don't use -mips1/-mips3 because we want to match
- # clang's default CPU's. In the 64-bit case, we must also specify the ABI
- # since the default ABI differs between gcc and clang.
- # FIXME: Ideally, we would build the N32 library too.
- test_target_arch(mipsel "" "-mips32r2" "-mabi=32" "-D_LARGEFILE_SOURCE" "-D_FILE_OFFSET_BITS=64")
- test_target_arch(mips64el "" "-mips64r2" "-mabi=64")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "mips")
- test_target_arch(mips "" "-mips32r2" "-mabi=32" "-D_LARGEFILE_SOURCE" "-D_FILE_OFFSET_BITS=64")
- test_target_arch(mips64 "" "-mips64r2" "-mabi=64")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "arm")
- if(WIN32)
- test_target_arch(arm "" "" "")
- else()
- test_target_arch(arm "" "-march=armv7-a" "-mfloat-abi=soft")
- test_target_arch(armhf "" "-march=armv7-a" "-mfloat-abi=hard")
- test_target_arch(armv6m "" "-march=armv6m" "-mfloat-abi=soft")
- endif()
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "avr")
- test_target_arch(avr "__AVR__" "--target=avr")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "aarch32")
- test_target_arch(aarch32 "" "-march=armv8-a")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "aarch64")
- test_target_arch(aarch64 "" "-march=armv8-a")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "riscv32")
- test_target_arch(riscv32 "" "")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "riscv64")
- test_target_arch(riscv64 "" "")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "wasm32")
- test_target_arch(wasm32 "" "--target=wasm32-unknown-unknown")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "wasm64")
- test_target_arch(wasm64 "" "--target=wasm64-unknown-unknown")
- elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "ve")
- test_target_arch(ve "__ve__" "--target=ve-unknown-none")
- endif()
- set(COMPILER_RT_OS_SUFFIX "")
- endif()
-endmacro()
Index: create-15.0.4-compiler-rt-ppc64-patch/llvm-15.0.4-new/compiler-rt/cmake
===================================================================
--- create-15.0.4-compiler-rt-ppc64-patch/llvm-15.0.4-new/compiler-rt/cmake (revision 39)
+++ create-15.0.4-compiler-rt-ppc64-patch/llvm-15.0.4-new/compiler-rt/cmake (nonexistent)
Property changes on: create-15.0.4-compiler-rt-ppc64-patch/llvm-15.0.4-new/compiler-rt/cmake
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-compiler-rt-ppc64-patch/llvm-15.0.4-new/compiler-rt
===================================================================
--- create-15.0.4-compiler-rt-ppc64-patch/llvm-15.0.4-new/compiler-rt (revision 39)
+++ create-15.0.4-compiler-rt-ppc64-patch/llvm-15.0.4-new/compiler-rt (nonexistent)
Property changes on: create-15.0.4-compiler-rt-ppc64-patch/llvm-15.0.4-new/compiler-rt
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-compiler-rt-ppc64-patch/llvm-15.0.4-new
===================================================================
--- create-15.0.4-compiler-rt-ppc64-patch/llvm-15.0.4-new (revision 39)
+++ create-15.0.4-compiler-rt-ppc64-patch/llvm-15.0.4-new (nonexistent)
Property changes on: create-15.0.4-compiler-rt-ppc64-patch/llvm-15.0.4-new
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-compiler-rt-ppc64-patch/create.patch.sh
===================================================================
--- create-15.0.4-compiler-rt-ppc64-patch/create.patch.sh (revision 39)
+++ create-15.0.4-compiler-rt-ppc64-patch/create.patch.sh (nonexistent)
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-VERSION=15.0.4
-
-tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
-mv llvm-$VERSION llvm-$VERSION-orig
-
-cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
-
-diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-compiler-rt-ppc64.patch
-
-mv llvm-$VERSION-compiler-rt-ppc64.patch ../patches
-
-rm -rf ./llvm-$VERSION
-rm -rf ./llvm-$VERSION-orig
Property changes on: create-15.0.4-compiler-rt-ppc64-patch/create.patch.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: create-15.0.4-compiler-rt-ppc64-patch
===================================================================
--- create-15.0.4-compiler-rt-ppc64-patch (revision 39)
+++ create-15.0.4-compiler-rt-ppc64-patch (nonexistent)
Property changes on: create-15.0.4-compiler-rt-ppc64-patch
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-clang-set-revision-patch/file.list
===================================================================
--- create-13.0.0-clang-set-revision-patch/file.list (revision 39)
+++ create-13.0.0-clang-set-revision-patch/file.list (nonexistent)
@@ -1 +0,0 @@
-llvm-13.0.0/clang/lib/Basic/Version.cpp
Index: create-13.0.0-clang-set-revision-patch/create.patch.sh
===================================================================
--- create-13.0.0-clang-set-revision-patch/create.patch.sh (revision 39)
+++ create-13.0.0-clang-set-revision-patch/create.patch.sh (nonexistent)
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-VERSION=13.0.0
-
-tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
-mv llvm-$VERSION llvm-$VERSION-orig
-
-cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
-
-diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-clang-set-revision.patch
-
-mv llvm-$VERSION-clang-set-revision.patch ../patches
-
-rm -rf ./llvm-$VERSION
-rm -rf ./llvm-$VERSION-orig
Property changes on: create-13.0.0-clang-set-revision-patch/create.patch.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: create-13.0.0-clang-set-revision-patch/llvm-13.0.0-new/clang/lib/Basic/Version.cpp
===================================================================
--- create-13.0.0-clang-set-revision-patch/llvm-13.0.0-new/clang/lib/Basic/Version.cpp (revision 39)
+++ create-13.0.0-clang-set-revision-patch/llvm-13.0.0-new/clang/lib/Basic/Version.cpp (nonexistent)
@@ -1,106 +0,0 @@
-//===- Version.cpp - Clang Version Number -----------------------*- C++ -*-===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-//
-// This file defines several version-related utility functions for Clang.
-//
-//===----------------------------------------------------------------------===//
-
-#include "clang/Basic/Version.h"
-#include "clang/Basic/LLVM.h"
-#include "clang/Config/config.h"
-#include "llvm/Support/raw_ostream.h"
-#include <cstdlib>
-#include <cstring>
-
-#include "VCSVersion.inc"
-
-namespace clang {
-
-std::string getClangRepositoryPath() {
- return "";
-}
-
-std::string getLLVMRepositoryPath() {
- return "";
-}
-
-std::string getClangRevision() {
- return "";
-}
-
-std::string getLLVMRevision() {
- return "";
-}
-
-std::string getClangFullRepositoryVersion() {
- std::string buf;
- llvm::raw_string_ostream OS(buf);
- std::string Path = getClangRepositoryPath();
- std::string Revision = getClangRevision();
- if (!Path.empty() || !Revision.empty()) {
- OS << '(';
- if (!Path.empty())
- OS << Path;
- if (!Revision.empty()) {
- if (!Path.empty())
- OS << ' ';
- OS << Revision;
- }
- OS << ')';
- }
- // Support LLVM in a separate repository.
- std::string LLVMRev = getLLVMRevision();
- if (!LLVMRev.empty() && LLVMRev != Revision) {
- OS << " (";
- std::string LLVMRepo = getLLVMRepositoryPath();
- if (!LLVMRepo.empty())
- OS << LLVMRepo << ' ';
- OS << LLVMRev << ')';
- }
- return OS.str();
-}
-
-std::string getClangFullVersion() {
- return getClangToolFullVersion("clang");
-}
-
-std::string getClangToolFullVersion(StringRef ToolName) {
- std::string buf;
- llvm::raw_string_ostream OS(buf);
-#ifdef CLANG_VENDOR
- OS << CLANG_VENDOR;
-#endif
- OS << ToolName << " version " CLANG_VERSION_STRING;
-
- std::string repo = getClangFullRepositoryVersion();
- if (!repo.empty()) {
- OS << " " << repo;
- }
-
- return OS.str();
-}
-
-std::string getClangFullCPPVersion() {
- // The version string we report in __VERSION__ is just a compacted version of
- // the one we report on the command line.
- std::string buf;
- llvm::raw_string_ostream OS(buf);
-#ifdef CLANG_VENDOR
- OS << CLANG_VENDOR;
-#endif
- OS << "Clang " CLANG_VERSION_STRING;
-
- std::string repo = getClangFullRepositoryVersion();
- if (!repo.empty()) {
- OS << " " << repo;
- }
-
- return OS.str();
-}
-
-} // end namespace clang
Index: create-13.0.0-clang-set-revision-patch/llvm-13.0.0-new/clang/lib/Basic
===================================================================
--- create-13.0.0-clang-set-revision-patch/llvm-13.0.0-new/clang/lib/Basic (revision 39)
+++ create-13.0.0-clang-set-revision-patch/llvm-13.0.0-new/clang/lib/Basic (nonexistent)
Property changes on: create-13.0.0-clang-set-revision-patch/llvm-13.0.0-new/clang/lib/Basic
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-clang-set-revision-patch/llvm-13.0.0-new/clang/lib
===================================================================
--- create-13.0.0-clang-set-revision-patch/llvm-13.0.0-new/clang/lib (revision 39)
+++ create-13.0.0-clang-set-revision-patch/llvm-13.0.0-new/clang/lib (nonexistent)
Property changes on: create-13.0.0-clang-set-revision-patch/llvm-13.0.0-new/clang/lib
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-clang-set-revision-patch/llvm-13.0.0-new/clang
===================================================================
--- create-13.0.0-clang-set-revision-patch/llvm-13.0.0-new/clang (revision 39)
+++ create-13.0.0-clang-set-revision-patch/llvm-13.0.0-new/clang (nonexistent)
Property changes on: create-13.0.0-clang-set-revision-patch/llvm-13.0.0-new/clang
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-clang-set-revision-patch/llvm-13.0.0-new
===================================================================
--- create-13.0.0-clang-set-revision-patch/llvm-13.0.0-new (revision 39)
+++ create-13.0.0-clang-set-revision-patch/llvm-13.0.0-new (nonexistent)
Property changes on: create-13.0.0-clang-set-revision-patch/llvm-13.0.0-new
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-clang-set-revision-patch
===================================================================
--- create-13.0.0-clang-set-revision-patch (revision 39)
+++ create-13.0.0-clang-set-revision-patch (nonexistent)
Property changes on: create-13.0.0-clang-set-revision-patch
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-compiler-rt-mips-patch/file.list
===================================================================
--- create-15.0.4-compiler-rt-mips-patch/file.list (revision 39)
+++ create-15.0.4-compiler-rt-mips-patch/file.list (nonexistent)
@@ -1 +0,0 @@
-llvm-15.0.4/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
Index: create-15.0.4-compiler-rt-mips-patch/llvm-15.0.4-new/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
===================================================================
--- create-15.0.4-compiler-rt-mips-patch/llvm-15.0.4-new/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h (revision 39)
+++ create-15.0.4-compiler-rt-mips-patch/llvm-15.0.4-new/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h (nonexistent)
@@ -1,1490 +0,0 @@
-//===-- sanitizer_platform_limits_posix.h ---------------------------------===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-//
-// This file is a part of Sanitizer common code.
-//
-// Sizes and layouts of platform-specific POSIX data structures.
-//===----------------------------------------------------------------------===//
-
-#ifndef SANITIZER_PLATFORM_LIMITS_POSIX_H
-#define SANITIZER_PLATFORM_LIMITS_POSIX_H
-
-#if SANITIZER_LINUX || SANITIZER_APPLE
-
-#include "sanitizer_internal_defs.h"
-#include "sanitizer_platform.h"
-
-#if SANITIZER_APPLE
-#include <sys/cdefs.h>
-#if !__DARWIN_ONLY_64_BIT_INO_T
-#define SANITIZER_HAS_STAT64 1
-#define SANITIZER_HAS_STATFS64 1
-#else
-#define SANITIZER_HAS_STAT64 0
-#define SANITIZER_HAS_STATFS64 0
-#endif
-#else
-// Must be SANITIZER_LINUX then
-#define SANITIZER_HAS_STAT64 1
-#define SANITIZER_HAS_STATFS64 1
-#endif
-
-#if defined(__sparc__)
-// FIXME: This can't be included from tsan which does not support sparc yet.
-#include "sanitizer_glibc_version.h"
-#endif
-
-# define GET_LINK_MAP_BY_DLOPEN_HANDLE(handle) ((link_map*)(handle))
-
-namespace __sanitizer {
-extern unsigned struct_utsname_sz;
-extern unsigned struct_stat_sz;
-#if SANITIZER_HAS_STAT64
-extern unsigned struct_stat64_sz;
-#endif
-extern unsigned struct_rusage_sz;
-extern unsigned siginfo_t_sz;
-extern unsigned struct_itimerval_sz;
-extern unsigned pthread_t_sz;
-extern unsigned pthread_mutex_t_sz;
-extern unsigned pthread_cond_t_sz;
-extern unsigned pid_t_sz;
-extern unsigned timeval_sz;
-extern unsigned uid_t_sz;
-extern unsigned gid_t_sz;
-extern unsigned mbstate_t_sz;
-extern unsigned struct_timezone_sz;
-extern unsigned struct_tms_sz;
-extern unsigned struct_itimerspec_sz;
-extern unsigned struct_sigevent_sz;
-extern unsigned struct_stack_t_sz;
-extern unsigned struct_sched_param_sz;
-#if SANITIZER_HAS_STATFS64
-extern unsigned struct_statfs64_sz;
-#endif
-extern unsigned struct_regex_sz;
-extern unsigned struct_regmatch_sz;
-
-#if !SANITIZER_ANDROID
-extern unsigned struct_fstab_sz;
-extern unsigned struct_statfs_sz;
-extern unsigned struct_sockaddr_sz;
-unsigned ucontext_t_sz(void *uctx);
-# endif // !SANITIZER_ANDROID
-
-# if SANITIZER_LINUX
-
-# if defined(__x86_64__)
-const unsigned struct_kernel_stat_sz = 144;
-const unsigned struct_kernel_stat64_sz = 0;
-#elif defined(__i386__)
-const unsigned struct_kernel_stat_sz = 64;
-const unsigned struct_kernel_stat64_sz = 96;
-#elif defined(__arm__)
-const unsigned struct_kernel_stat_sz = 64;
-const unsigned struct_kernel_stat64_sz = 104;
-#elif defined(__aarch64__)
-const unsigned struct_kernel_stat_sz = 128;
-const unsigned struct_kernel_stat64_sz = 104;
-#elif defined(__powerpc__) && !defined(__powerpc64__)
-const unsigned struct_kernel_stat_sz = 72;
-const unsigned struct_kernel_stat64_sz = 104;
-#elif defined(__powerpc64__)
-const unsigned struct_kernel_stat_sz = 144;
-const unsigned struct_kernel_stat64_sz = 104;
-#elif defined(__mips__)
-const unsigned struct_kernel_stat_sz =
- SANITIZER_ANDROID
- ? FIRST_32_SECOND_64(104, 128)
- : FIRST_32_SECOND_64((_MIPS_SIM == _ABIO32) ? 160 : 144, 216);
-const unsigned struct_kernel_stat64_sz = 104;
-#elif defined(__s390__) && !defined(__s390x__)
-const unsigned struct_kernel_stat_sz = 64;
-const unsigned struct_kernel_stat64_sz = 104;
-#elif defined(__s390x__)
-const unsigned struct_kernel_stat_sz = 144;
-const unsigned struct_kernel_stat64_sz = 0;
-#elif defined(__sparc__) && defined(__arch64__)
-const unsigned struct___old_kernel_stat_sz = 0;
-const unsigned struct_kernel_stat_sz = 104;
-const unsigned struct_kernel_stat64_sz = 144;
-#elif defined(__sparc__) && !defined(__arch64__)
-const unsigned struct___old_kernel_stat_sz = 0;
-const unsigned struct_kernel_stat_sz = 64;
-const unsigned struct_kernel_stat64_sz = 104;
-#elif SANITIZER_RISCV64
-const unsigned struct_kernel_stat_sz = 128;
-const unsigned struct_kernel_stat64_sz = 0; // RISCV64 does not use stat64
-# elif defined(__hexagon__)
-const unsigned struct_kernel_stat_sz = 128;
-const unsigned struct_kernel_stat64_sz = 0;
-# elif defined(__loongarch__)
-const unsigned struct_kernel_stat_sz = 128;
-const unsigned struct_kernel_stat64_sz = 0;
-# endif
-struct __sanitizer_perf_event_attr {
- unsigned type;
- unsigned size;
- // More fields that vary with the kernel version.
-};
-
-extern unsigned struct_epoll_event_sz;
-extern unsigned struct_sysinfo_sz;
-extern unsigned __user_cap_header_struct_sz;
-extern unsigned __user_cap_data_struct_sz;
-extern unsigned struct_new_utsname_sz;
-extern unsigned struct_old_utsname_sz;
-extern unsigned struct_oldold_utsname_sz;
-
-const unsigned struct_kexec_segment_sz = 4 * sizeof(unsigned long);
-#endif // SANITIZER_LINUX
-
-#if SANITIZER_LINUX
-
-#if defined(__powerpc64__) || defined(__s390__) || defined(__loongarch__)
-const unsigned struct___old_kernel_stat_sz = 0;
-#elif !defined(__sparc__)
-const unsigned struct___old_kernel_stat_sz = 32;
-#endif
-
-extern unsigned struct_rlimit_sz;
-extern unsigned struct_utimbuf_sz;
-extern unsigned struct_timespec_sz;
-
-struct __sanitizer_iocb {
- u64 aio_data;
- u32 aio_key_or_aio_reserved1; // Simply crazy.
- u32 aio_reserved1_or_aio_key; // Luckily, we don't need these.
- u16 aio_lio_opcode;
- s16 aio_reqprio;
- u32 aio_fildes;
- u64 aio_buf;
- u64 aio_nbytes;
- s64 aio_offset;
- u64 aio_reserved2;
- u64 aio_reserved3;
-};
-
-struct __sanitizer_io_event {
- u64 data;
- u64 obj;
- u64 res;
- u64 res2;
-};
-
-const unsigned iocb_cmd_pread = 0;
-const unsigned iocb_cmd_pwrite = 1;
-const unsigned iocb_cmd_preadv = 7;
-const unsigned iocb_cmd_pwritev = 8;
-
-struct __sanitizer___sysctl_args {
- int *name;
- int nlen;
- void *oldval;
- uptr *oldlenp;
- void *newval;
- uptr newlen;
- unsigned long ___unused[4];
-};
-
-const unsigned old_sigset_t_sz = sizeof(unsigned long);
-
-struct __sanitizer_sem_t {
-#if SANITIZER_ANDROID && defined(_LP64)
- int data[4];
-#elif SANITIZER_ANDROID && !defined(_LP64)
- int data;
-#elif SANITIZER_LINUX
- uptr data[4];
-#endif
-};
-#endif // SANITIZER_LINUX
-
-#if SANITIZER_ANDROID
-struct __sanitizer_struct_mallinfo {
- uptr v[10];
-};
-#endif
-
-#if SANITIZER_LINUX && !SANITIZER_ANDROID
-struct __sanitizer_struct_mallinfo {
- int v[10];
-};
-
-extern unsigned struct_ustat_sz;
-extern unsigned struct_rlimit64_sz;
-extern unsigned struct_statvfs64_sz;
-
-struct __sanitizer_ipc_perm {
- int __key;
- int uid;
- int gid;
- int cuid;
- int cgid;
-#ifdef __powerpc__
- unsigned mode;
- unsigned __seq;
- u64 __unused1;
- u64 __unused2;
-#elif defined(__sparc__)
- unsigned mode;
- unsigned short __pad2;
- unsigned short __seq;
- unsigned long long __unused1;
- unsigned long long __unused2;
-#else
- unsigned int mode;
- unsigned short __seq;
- unsigned short __pad2;
-#if defined(__x86_64__) && !defined(_LP64)
- u64 __unused1;
- u64 __unused2;
-#else
- unsigned long __unused1;
- unsigned long __unused2;
-#endif
-#endif
-};
-
-struct __sanitizer_shmid_ds {
- __sanitizer_ipc_perm shm_perm;
-#if defined(__sparc__)
-#if !defined(__arch64__)
- u32 __pad1;
-#endif
- long shm_atime;
-#if !defined(__arch64__)
- u32 __pad2;
-#endif
- long shm_dtime;
-#if !defined(__arch64__)
- u32 __pad3;
-#endif
- long shm_ctime;
- uptr shm_segsz;
- int shm_cpid;
- int shm_lpid;
- unsigned long shm_nattch;
- unsigned long __glibc_reserved1;
- unsigned long __glibc_reserved2;
-#else
-#ifndef __powerpc__
- uptr shm_segsz;
-#elif !defined(__powerpc64__)
- uptr __unused0;
-#endif
-#if defined(__x86_64__) && !defined(_LP64)
- u64 shm_atime;
- u64 shm_dtime;
- u64 shm_ctime;
-#else
- uptr shm_atime;
-#if !defined(_LP64) && !defined(__mips__)
- uptr __unused1;
-#endif
- uptr shm_dtime;
-#if !defined(_LP64) && !defined(__mips__)
- uptr __unused2;
-#endif
- uptr shm_ctime;
-#if !defined(_LP64) && !defined(__mips__)
- uptr __unused3;
-#endif
-#endif
-#ifdef __powerpc__
- uptr shm_segsz;
-#endif
- int shm_cpid;
- int shm_lpid;
-#if defined(__x86_64__) && !defined(_LP64)
- u64 shm_nattch;
- u64 __unused4;
- u64 __unused5;
-#else
- uptr shm_nattch;
- uptr __unused4;
- uptr __unused5;
-#endif
-#endif
-};
-#endif
-
-#if SANITIZER_LINUX && !SANITIZER_ANDROID
-extern unsigned struct_msqid_ds_sz;
-extern unsigned struct_mq_attr_sz;
-extern unsigned struct_timex_sz;
-extern unsigned struct_statvfs_sz;
-extern unsigned struct_crypt_data_sz;
-#endif // SANITIZER_LINUX && !SANITIZER_ANDROID
-
-struct __sanitizer_iovec {
- void *iov_base;
- uptr iov_len;
-};
-
-#if !SANITIZER_ANDROID
-struct __sanitizer_ifaddrs {
- struct __sanitizer_ifaddrs *ifa_next;
- char *ifa_name;
- unsigned int ifa_flags;
- void *ifa_addr; // (struct sockaddr *)
- void *ifa_netmask; // (struct sockaddr *)
- // This is a union on Linux.
-# ifdef ifa_dstaddr
-# undef ifa_dstaddr
-# endif
- void *ifa_dstaddr; // (struct sockaddr *)
- void *ifa_data;
-};
-#endif // !SANITIZER_ANDROID
-
-#if SANITIZER_APPLE
-typedef unsigned long __sanitizer_pthread_key_t;
-#else
-typedef unsigned __sanitizer_pthread_key_t;
-#endif
-
-#if SANITIZER_LINUX && !SANITIZER_ANDROID
-
-struct __sanitizer_XDR {
- int x_op;
- void *x_ops;
- uptr x_public;
- uptr x_private;
- uptr x_base;
- unsigned x_handy;
-};
-
-const int __sanitizer_XDR_ENCODE = 0;
-const int __sanitizer_XDR_DECODE = 1;
-const int __sanitizer_XDR_FREE = 2;
-#endif
-
-struct __sanitizer_passwd {
- char *pw_name;
- char *pw_passwd;
- int pw_uid;
- int pw_gid;
-#if SANITIZER_APPLE
- long pw_change;
- char *pw_class;
-#endif
-#if !(SANITIZER_ANDROID && (SANITIZER_WORDSIZE == 32))
- char *pw_gecos;
-#endif
- char *pw_dir;
- char *pw_shell;
-#if SANITIZER_APPLE
- long pw_expire;
-#endif
-};
-
-struct __sanitizer_group {
- char *gr_name;
- char *gr_passwd;
- int gr_gid;
- char **gr_mem;
-};
-
-# if (SANITIZER_LINUX && !SANITIZER_GLIBC && !SANITIZER_ANDROID) || \
- (defined(__x86_64__) && !defined(_LP64)) || defined(__hexagon__)
-typedef long long __sanitizer_time_t;
-#else
-typedef long __sanitizer_time_t;
-#endif
-
-typedef long __sanitizer_suseconds_t;
-
-struct __sanitizer_timeval {
- __sanitizer_time_t tv_sec;
- __sanitizer_suseconds_t tv_usec;
-};
-
-struct __sanitizer_itimerval {
- struct __sanitizer_timeval it_interval;
- struct __sanitizer_timeval it_value;
-};
-
-struct __sanitizer_timeb {
- __sanitizer_time_t time;
- unsigned short millitm;
- short timezone;
- short dstflag;
-};
-
-struct __sanitizer_ether_addr {
- u8 octet[6];
-};
-
-struct __sanitizer_tm {
- int tm_sec;
- int tm_min;
- int tm_hour;
- int tm_mday;
- int tm_mon;
- int tm_year;
- int tm_wday;
- int tm_yday;
- int tm_isdst;
- long int tm_gmtoff;
- const char *tm_zone;
-};
-
-#if SANITIZER_LINUX
-struct __sanitizer_mntent {
- char *mnt_fsname;
- char *mnt_dir;
- char *mnt_type;
- char *mnt_opts;
- int mnt_freq;
- int mnt_passno;
-};
-
-struct __sanitizer_file_handle {
- unsigned int handle_bytes;
- int handle_type;
- unsigned char f_handle[1]; // variable sized
-};
-#endif
-
-#if SANITIZER_APPLE
-struct __sanitizer_msghdr {
- void *msg_name;
- unsigned msg_namelen;
- struct __sanitizer_iovec *msg_iov;
- unsigned msg_iovlen;
- void *msg_control;
- unsigned msg_controllen;
- int msg_flags;
-};
-struct __sanitizer_cmsghdr {
- unsigned cmsg_len;
- int cmsg_level;
- int cmsg_type;
-};
-#else
-// In POSIX, int msg_iovlen; socklen_t msg_controllen; socklen_t cmsg_len; but
-// many implementations don't conform to the standard.
-struct __sanitizer_msghdr {
- void *msg_name;
- unsigned msg_namelen;
- struct __sanitizer_iovec *msg_iov;
- uptr msg_iovlen;
- void *msg_control;
- uptr msg_controllen;
- int msg_flags;
-};
-struct __sanitizer_cmsghdr {
- uptr cmsg_len;
- int cmsg_level;
- int cmsg_type;
-};
-#endif
-
-#if SANITIZER_LINUX
-struct __sanitizer_mmsghdr {
- __sanitizer_msghdr msg_hdr;
- unsigned int msg_len;
-};
-#endif
-
-#if SANITIZER_APPLE
-struct __sanitizer_dirent {
- unsigned long long d_ino;
- unsigned long long d_seekoff;
- unsigned short d_reclen;
- // more fields that we don't care about
-};
-# elif (SANITIZER_LINUX && !SANITIZER_GLIBC) || defined(__x86_64__) || \
- defined(__hexagon__)
-struct __sanitizer_dirent {
- unsigned long long d_ino;
- unsigned long long d_off;
- unsigned short d_reclen;
- // more fields that we don't care about
-};
-# else
-struct __sanitizer_dirent {
- uptr d_ino;
- uptr d_off;
- unsigned short d_reclen;
- // more fields that we don't care about
-};
-# endif
-
-# if SANITIZER_LINUX && !SANITIZER_ANDROID
-struct __sanitizer_dirent64 {
- unsigned long long d_ino;
- unsigned long long d_off;
- unsigned short d_reclen;
- // more fields that we don't care about
-};
-#endif
-
-#if defined(__x86_64__) && !defined(_LP64)
-typedef long long __sanitizer_clock_t;
-#else
-typedef long __sanitizer_clock_t;
-#endif
-
-#if SANITIZER_LINUX
-typedef int __sanitizer_clockid_t;
-#endif
-
-#if SANITIZER_LINUX
-# if defined(_LP64) || defined(__x86_64__) || defined(__powerpc__) || \
- defined(__mips__) || defined(__hexagon__)
-typedef unsigned __sanitizer___kernel_uid_t;
-typedef unsigned __sanitizer___kernel_gid_t;
-#else
-typedef unsigned short __sanitizer___kernel_uid_t;
-typedef unsigned short __sanitizer___kernel_gid_t;
-#endif
-#if defined(__x86_64__) && !defined(_LP64)
-typedef long long __sanitizer___kernel_off_t;
-#else
-typedef long __sanitizer___kernel_off_t;
-#endif
-
-#if defined(__powerpc__) || defined(__mips__)
-typedef unsigned int __sanitizer___kernel_old_uid_t;
-typedef unsigned int __sanitizer___kernel_old_gid_t;
-#else
-typedef unsigned short __sanitizer___kernel_old_uid_t;
-typedef unsigned short __sanitizer___kernel_old_gid_t;
-#endif
-
-typedef long long __sanitizer___kernel_loff_t;
-typedef struct {
- unsigned long fds_bits[1024 / (8 * sizeof(long))];
-} __sanitizer___kernel_fd_set;
-#endif
-
-// This thing depends on the platform. We are only interested in the upper
-// limit. Verified with a compiler assert in .cpp.
-union __sanitizer_pthread_attr_t {
- char size[128];
- void *align;
-};
-
-#if SANITIZER_ANDROID
-# if SANITIZER_MIPS
-typedef unsigned long __sanitizer_sigset_t[16 / sizeof(unsigned long)];
-# else
-typedef unsigned long __sanitizer_sigset_t;
-# endif
-#elif SANITIZER_APPLE
-typedef unsigned __sanitizer_sigset_t;
-#elif SANITIZER_LINUX
-struct __sanitizer_sigset_t {
- // The size is determined by looking at sizeof of real sigset_t on linux.
- uptr val[128 / sizeof(uptr)];
-};
-#endif
-
-struct __sanitizer_siginfo {
- // The size is determined by looking at sizeof of real siginfo_t on linux.
- u64 opaque[128 / sizeof(u64)];
-};
-
-using __sanitizer_sighandler_ptr = void (*)(int sig);
-using __sanitizer_sigactionhandler_ptr = void (*)(int sig,
- __sanitizer_siginfo *siginfo,
- void *uctx);
-
-// Linux system headers define the 'sa_handler' and 'sa_sigaction' macros.
-#if SANITIZER_ANDROID && (SANITIZER_WORDSIZE == 64)
-struct __sanitizer_sigaction {
- unsigned sa_flags;
- union {
- __sanitizer_sigactionhandler_ptr sigaction;
- __sanitizer_sighandler_ptr handler;
- };
- __sanitizer_sigset_t sa_mask;
- void (*sa_restorer)();
-};
-#elif SANITIZER_ANDROID && SANITIZER_MIPS32 // check this before WORDSIZE == 32
-struct __sanitizer_sigaction {
- unsigned sa_flags;
- union {
- __sanitizer_sigactionhandler_ptr sigaction;
- __sanitizer_sighandler_ptr handler;
- };
- __sanitizer_sigset_t sa_mask;
-};
-#elif SANITIZER_ANDROID && (SANITIZER_WORDSIZE == 32)
-struct __sanitizer_sigaction {
- union {
- __sanitizer_sigactionhandler_ptr sigaction;
- __sanitizer_sighandler_ptr handler;
- };
- __sanitizer_sigset_t sa_mask;
- uptr sa_flags;
- void (*sa_restorer)();
-};
-#else // !SANITIZER_ANDROID
-struct __sanitizer_sigaction {
-#if defined(__mips__) && !SANITIZER_FREEBSD
- unsigned int sa_flags;
-#endif
- union {
- __sanitizer_sigactionhandler_ptr sigaction;
- __sanitizer_sighandler_ptr handler;
- };
-#if SANITIZER_FREEBSD
- int sa_flags;
- __sanitizer_sigset_t sa_mask;
-#else
-#if defined(__s390x__)
- int sa_resv;
-#else
- __sanitizer_sigset_t sa_mask;
-#endif
-#ifndef __mips__
-#if defined(__sparc__)
-#if __GLIBC_PREREQ (2, 20)
- // On sparc glibc 2.19 and earlier sa_flags was unsigned long.
-#if defined(__arch64__)
- // To maintain ABI compatibility on sparc64 when switching to an int,
- // __glibc_reserved0 was added.
- int __glibc_reserved0;
-#endif
- int sa_flags;
-#else
- unsigned long sa_flags;
-#endif
-#else
- int sa_flags;
-#endif
-#endif
-#endif
-#if SANITIZER_LINUX
- void (*sa_restorer)();
-#endif
-#if defined(__mips__) && (SANITIZER_WORDSIZE == 32)
- int sa_resv[1];
-#endif
-#if defined(__s390x__)
- __sanitizer_sigset_t sa_mask;
-#endif
-};
-#endif // !SANITIZER_ANDROID
-
-#if defined(__mips__)
-#define __SANITIZER_KERNEL_NSIG 128
-#else
-#define __SANITIZER_KERNEL_NSIG 64
-#endif
-
-struct __sanitizer_kernel_sigset_t {
- uptr sig[__SANITIZER_KERNEL_NSIG / (sizeof(uptr) * 8)];
-};
-
-// Linux system headers define the 'sa_handler' and 'sa_sigaction' macros.
-#if SANITIZER_MIPS
-struct __sanitizer_kernel_sigaction_t {
- unsigned int sa_flags;
- union {
- void (*handler)(int signo);
- void (*sigaction)(int signo, __sanitizer_siginfo *info, void *ctx);
- };
- __sanitizer_kernel_sigset_t sa_mask;
- void (*sa_restorer)(void);
-};
-#else
-struct __sanitizer_kernel_sigaction_t {
- union {
- void (*handler)(int signo);
- void (*sigaction)(int signo, __sanitizer_siginfo *info, void *ctx);
- };
- unsigned long sa_flags;
- void (*sa_restorer)(void);
- __sanitizer_kernel_sigset_t sa_mask;
-};
-#endif
-
-extern const uptr sig_ign;
-extern const uptr sig_dfl;
-extern const uptr sig_err;
-extern const uptr sa_siginfo;
-
-#if SANITIZER_LINUX
-extern int e_tabsz;
-#endif
-
-extern int af_inet;
-extern int af_inet6;
-uptr __sanitizer_in_addr_sz(int af);
-
-#if SANITIZER_LINUX
-struct __sanitizer_dl_phdr_info {
- uptr dlpi_addr;
- const char *dlpi_name;
- const void *dlpi_phdr;
- short dlpi_phnum;
-};
-
-extern unsigned struct_ElfW_Phdr_sz;
-#endif
-
-struct __sanitizer_protoent {
- char *p_name;
- char **p_aliases;
- int p_proto;
-};
-
-struct __sanitizer_netent {
- char *n_name;
- char **n_aliases;
- int n_addrtype;
- u32 n_net;
-};
-
-struct __sanitizer_addrinfo {
- int ai_flags;
- int ai_family;
- int ai_socktype;
- int ai_protocol;
-#if SANITIZER_ANDROID || SANITIZER_APPLE
- unsigned ai_addrlen;
- char *ai_canonname;
- void *ai_addr;
-#else // LINUX
- unsigned ai_addrlen;
- void *ai_addr;
- char *ai_canonname;
-#endif
- struct __sanitizer_addrinfo *ai_next;
-};
-
-struct __sanitizer_hostent {
- char *h_name;
- char **h_aliases;
- int h_addrtype;
- int h_length;
- char **h_addr_list;
-};
-
-struct __sanitizer_pollfd {
- int fd;
- short events;
- short revents;
-};
-
-#if SANITIZER_ANDROID || SANITIZER_APPLE
-typedef unsigned __sanitizer_nfds_t;
-#else
-typedef unsigned long __sanitizer_nfds_t;
-#endif
-
-#if !SANITIZER_ANDROID
-# if SANITIZER_LINUX
-struct __sanitizer_glob_t {
- uptr gl_pathc;
- char **gl_pathv;
- uptr gl_offs;
- int gl_flags;
-
- void (*gl_closedir)(void *dirp);
- void *(*gl_readdir)(void *dirp);
- void *(*gl_opendir)(const char *);
- int (*gl_lstat)(const char *, void *);
- int (*gl_stat)(const char *, void *);
-};
-# endif // SANITIZER_LINUX
-
-# if SANITIZER_LINUX
-extern int glob_nomatch;
-extern int glob_altdirfunc;
-# endif
-#endif // !SANITIZER_ANDROID
-
-extern unsigned path_max;
-
-# if !SANITIZER_ANDROID
-extern const int wordexp_wrde_dooffs;
-# endif // !SANITIZER_ANDROID
-
-struct __sanitizer_wordexp_t {
- uptr we_wordc;
- char **we_wordv;
- uptr we_offs;
-};
-
-#if SANITIZER_LINUX && !SANITIZER_ANDROID
-struct __sanitizer_FILE {
- int _flags;
- char *_IO_read_ptr;
- char *_IO_read_end;
- char *_IO_read_base;
- char *_IO_write_base;
- char *_IO_write_ptr;
- char *_IO_write_end;
- char *_IO_buf_base;
- char *_IO_buf_end;
- char *_IO_save_base;
- char *_IO_backup_base;
- char *_IO_save_end;
- void *_markers;
- __sanitizer_FILE *_chain;
- int _fileno;
-};
-# define SANITIZER_HAS_STRUCT_FILE 1
-#else
-typedef void __sanitizer_FILE;
-# define SANITIZER_HAS_STRUCT_FILE 0
-#endif
-
-#if SANITIZER_LINUX && !SANITIZER_ANDROID && \
- (defined(__i386) || defined(__x86_64) || defined(__mips64) || \
- defined(__powerpc64__) || defined(__aarch64__) || defined(__arm__) || \
- defined(__s390__) || SANITIZER_RISCV64)
-extern unsigned struct_user_regs_struct_sz;
-extern unsigned struct_user_fpregs_struct_sz;
-extern unsigned struct_user_fpxregs_struct_sz;
-extern unsigned struct_user_vfpregs_struct_sz;
-
-extern int ptrace_peektext;
-extern int ptrace_peekdata;
-extern int ptrace_peekuser;
-extern int ptrace_getregs;
-extern int ptrace_setregs;
-extern int ptrace_getfpregs;
-extern int ptrace_setfpregs;
-extern int ptrace_getfpxregs;
-extern int ptrace_setfpxregs;
-extern int ptrace_getvfpregs;
-extern int ptrace_setvfpregs;
-extern int ptrace_getsiginfo;
-extern int ptrace_setsiginfo;
-extern int ptrace_getregset;
-extern int ptrace_setregset;
-extern int ptrace_geteventmsg;
-#endif
-
-#if SANITIZER_LINUX && !SANITIZER_ANDROID
-extern unsigned struct_shminfo_sz;
-extern unsigned struct_shm_info_sz;
-extern int shmctl_ipc_stat;
-extern int shmctl_ipc_info;
-extern int shmctl_shm_info;
-extern int shmctl_shm_stat;
-#endif
-
-#if !SANITIZER_APPLE && !SANITIZER_FREEBSD
-extern unsigned struct_utmp_sz;
-#endif
-#if !SANITIZER_ANDROID
-extern unsigned struct_utmpx_sz;
-#endif
-
-extern int map_fixed;
-
-// ioctl arguments
-struct __sanitizer_ifconf {
- int ifc_len;
- union {
- void *ifcu_req;
- } ifc_ifcu;
-#if SANITIZER_APPLE
-} __attribute__((packed));
-#else
-};
-#endif
-
-#if SANITIZER_LINUX && !SANITIZER_ANDROID
-struct __sanitizer__obstack_chunk {
- char *limit;
- struct __sanitizer__obstack_chunk *prev;
-};
-
-struct __sanitizer_obstack {
- long chunk_size;
- struct __sanitizer__obstack_chunk *chunk;
- char *object_base;
- char *next_free;
- uptr more_fields[7];
-};
-
-typedef uptr (*__sanitizer_cookie_io_read)(void *cookie, char *buf, uptr size);
-typedef uptr (*__sanitizer_cookie_io_write)(void *cookie, const char *buf,
- uptr size);
-typedef int (*__sanitizer_cookie_io_seek)(void *cookie, u64 *offset,
- int whence);
-typedef int (*__sanitizer_cookie_io_close)(void *cookie);
-
-struct __sanitizer_cookie_io_functions_t {
- __sanitizer_cookie_io_read read;
- __sanitizer_cookie_io_write write;
- __sanitizer_cookie_io_seek seek;
- __sanitizer_cookie_io_close close;
-};
-#endif
-
-#define IOC_NRBITS 8
-#define IOC_TYPEBITS 8
-#if defined(__powerpc__) || defined(__powerpc64__) || defined(__mips__) || \
- defined(__sparc__)
-#define IOC_SIZEBITS 13
-#define IOC_DIRBITS 3
-#define IOC_NONE 1U
-#define IOC_WRITE 4U
-#define IOC_READ 2U
-#else
-#define IOC_SIZEBITS 14
-#define IOC_DIRBITS 2
-#define IOC_NONE 0U
-#define IOC_WRITE 1U
-#define IOC_READ 2U
-#endif
-#define IOC_NRMASK ((1 << IOC_NRBITS) - 1)
-#define IOC_TYPEMASK ((1 << IOC_TYPEBITS) - 1)
-#define IOC_SIZEMASK ((1 << IOC_SIZEBITS) - 1)
-#if defined(IOC_DIRMASK)
-#undef IOC_DIRMASK
-#endif
-#define IOC_DIRMASK ((1 << IOC_DIRBITS) - 1)
-#define IOC_NRSHIFT 0
-#define IOC_TYPESHIFT (IOC_NRSHIFT + IOC_NRBITS)
-#define IOC_SIZESHIFT (IOC_TYPESHIFT + IOC_TYPEBITS)
-#define IOC_DIRSHIFT (IOC_SIZESHIFT + IOC_SIZEBITS)
-#define EVIOC_EV_MAX 0x1f
-#define EVIOC_ABS_MAX 0x3f
-
-#define IOC_DIR(nr) (((nr) >> IOC_DIRSHIFT) & IOC_DIRMASK)
-#define IOC_TYPE(nr) (((nr) >> IOC_TYPESHIFT) & IOC_TYPEMASK)
-#define IOC_NR(nr) (((nr) >> IOC_NRSHIFT) & IOC_NRMASK)
-
-#if defined(__sparc__)
-// In sparc the 14 bits SIZE field overlaps with the
-// least significant bit of DIR, so either IOC_READ or
-// IOC_WRITE shall be 1 in order to get a non-zero SIZE.
-#define IOC_SIZE(nr) \
- ((((((nr) >> 29) & 0x7) & (4U | 2U)) == 0) ? 0 : (((nr) >> 16) & 0x3fff))
-#else
-#define IOC_SIZE(nr) (((nr) >> IOC_SIZESHIFT) & IOC_SIZEMASK)
-#endif
-
-extern unsigned struct_ifreq_sz;
-extern unsigned struct_termios_sz;
-extern unsigned struct_winsize_sz;
-
-#if SANITIZER_LINUX
-extern unsigned struct_arpreq_sz;
-extern unsigned struct_cdrom_msf_sz;
-extern unsigned struct_cdrom_multisession_sz;
-extern unsigned struct_cdrom_read_audio_sz;
-extern unsigned struct_cdrom_subchnl_sz;
-extern unsigned struct_cdrom_ti_sz;
-extern unsigned struct_cdrom_tocentry_sz;
-extern unsigned struct_cdrom_tochdr_sz;
-extern unsigned struct_cdrom_volctrl_sz;
-extern unsigned struct_ff_effect_sz;
-extern unsigned struct_floppy_drive_params_sz;
-extern unsigned struct_floppy_drive_struct_sz;
-extern unsigned struct_floppy_fdc_state_sz;
-extern unsigned struct_floppy_max_errors_sz;
-extern unsigned struct_floppy_raw_cmd_sz;
-extern unsigned struct_floppy_struct_sz;
-extern unsigned struct_floppy_write_errors_sz;
-extern unsigned struct_format_descr_sz;
-extern unsigned struct_hd_driveid_sz;
-extern unsigned struct_hd_geometry_sz;
-extern unsigned struct_input_absinfo_sz;
-extern unsigned struct_input_id_sz;
-extern unsigned struct_mtpos_sz;
-extern unsigned struct_termio_sz;
-extern unsigned struct_vt_consize_sz;
-extern unsigned struct_vt_sizes_sz;
-extern unsigned struct_vt_stat_sz;
-#endif // SANITIZER_LINUX
-
-#if SANITIZER_LINUX
-extern unsigned struct_copr_buffer_sz;
-extern unsigned struct_copr_debug_buf_sz;
-extern unsigned struct_copr_msg_sz;
-extern unsigned struct_midi_info_sz;
-extern unsigned struct_mtget_sz;
-extern unsigned struct_mtop_sz;
-extern unsigned struct_rtentry_sz;
-extern unsigned struct_sbi_instrument_sz;
-extern unsigned struct_seq_event_rec_sz;
-extern unsigned struct_synth_info_sz;
-extern unsigned struct_vt_mode_sz;
-#endif // SANITIZER_LINUX
-
-#if SANITIZER_LINUX && !SANITIZER_ANDROID
-extern unsigned struct_ax25_parms_struct_sz;
-extern unsigned struct_input_keymap_entry_sz;
-extern unsigned struct_ipx_config_data_sz;
-extern unsigned struct_kbdiacrs_sz;
-extern unsigned struct_kbentry_sz;
-extern unsigned struct_kbkeycode_sz;
-extern unsigned struct_kbsentry_sz;
-extern unsigned struct_mtconfiginfo_sz;
-extern unsigned struct_nr_parms_struct_sz;
-extern unsigned struct_scc_modem_sz;
-extern unsigned struct_scc_stat_sz;
-extern unsigned struct_serial_multiport_struct_sz;
-extern unsigned struct_serial_struct_sz;
-extern unsigned struct_sockaddr_ax25_sz;
-extern unsigned struct_unimapdesc_sz;
-extern unsigned struct_unimapinit_sz;
-#endif // SANITIZER_LINUX && !SANITIZER_ANDROID
-
-extern const unsigned long __sanitizer_bufsiz;
-
-#if SANITIZER_LINUX && !SANITIZER_ANDROID
-extern unsigned struct_audio_buf_info_sz;
-extern unsigned struct_ppp_stats_sz;
-#endif // (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID
-
-#if !SANITIZER_ANDROID && !SANITIZER_APPLE
-extern unsigned struct_sioc_sg_req_sz;
-extern unsigned struct_sioc_vif_req_sz;
-#endif
-
-// ioctl request identifiers
-
-// A special value to mark ioctls that are not present on the target platform,
-// when it can not be determined without including any system headers.
-extern const unsigned IOCTL_NOT_PRESENT;
-
-extern unsigned IOCTL_FIOASYNC;
-extern unsigned IOCTL_FIOCLEX;
-extern unsigned IOCTL_FIOGETOWN;
-extern unsigned IOCTL_FIONBIO;
-extern unsigned IOCTL_FIONCLEX;
-extern unsigned IOCTL_FIOSETOWN;
-extern unsigned IOCTL_SIOCADDMULTI;
-extern unsigned IOCTL_SIOCATMARK;
-extern unsigned IOCTL_SIOCDELMULTI;
-extern unsigned IOCTL_SIOCGIFADDR;
-extern unsigned IOCTL_SIOCGIFBRDADDR;
-extern unsigned IOCTL_SIOCGIFCONF;
-extern unsigned IOCTL_SIOCGIFDSTADDR;
-extern unsigned IOCTL_SIOCGIFFLAGS;
-extern unsigned IOCTL_SIOCGIFMETRIC;
-extern unsigned IOCTL_SIOCGIFMTU;
-extern unsigned IOCTL_SIOCGIFNETMASK;
-extern unsigned IOCTL_SIOCGPGRP;
-extern unsigned IOCTL_SIOCSIFADDR;
-extern unsigned IOCTL_SIOCSIFBRDADDR;
-extern unsigned IOCTL_SIOCSIFDSTADDR;
-extern unsigned IOCTL_SIOCSIFFLAGS;
-extern unsigned IOCTL_SIOCSIFMETRIC;
-extern unsigned IOCTL_SIOCSIFMTU;
-extern unsigned IOCTL_SIOCSIFNETMASK;
-extern unsigned IOCTL_SIOCSPGRP;
-extern unsigned IOCTL_TIOCCONS;
-extern unsigned IOCTL_TIOCEXCL;
-extern unsigned IOCTL_TIOCGETD;
-extern unsigned IOCTL_TIOCGPGRP;
-extern unsigned IOCTL_TIOCGWINSZ;
-extern unsigned IOCTL_TIOCMBIC;
-extern unsigned IOCTL_TIOCMBIS;
-extern unsigned IOCTL_TIOCMGET;
-extern unsigned IOCTL_TIOCMSET;
-extern unsigned IOCTL_TIOCNOTTY;
-extern unsigned IOCTL_TIOCNXCL;
-extern unsigned IOCTL_TIOCOUTQ;
-extern unsigned IOCTL_TIOCPKT;
-extern unsigned IOCTL_TIOCSCTTY;
-extern unsigned IOCTL_TIOCSETD;
-extern unsigned IOCTL_TIOCSPGRP;
-extern unsigned IOCTL_TIOCSTI;
-extern unsigned IOCTL_TIOCSWINSZ;
-#if SANITIZER_LINUX && !SANITIZER_ANDROID
-extern unsigned IOCTL_SIOCGETSGCNT;
-extern unsigned IOCTL_SIOCGETVIFCNT;
-#endif
-#if SANITIZER_LINUX
-extern unsigned IOCTL_EVIOCGABS;
-extern unsigned IOCTL_EVIOCGBIT;
-extern unsigned IOCTL_EVIOCGEFFECTS;
-extern unsigned IOCTL_EVIOCGID;
-extern unsigned IOCTL_EVIOCGKEY;
-extern unsigned IOCTL_EVIOCGKEYCODE;
-extern unsigned IOCTL_EVIOCGLED;
-extern unsigned IOCTL_EVIOCGNAME;
-extern unsigned IOCTL_EVIOCGPHYS;
-extern unsigned IOCTL_EVIOCGRAB;
-extern unsigned IOCTL_EVIOCGREP;
-extern unsigned IOCTL_EVIOCGSND;
-extern unsigned IOCTL_EVIOCGSW;
-extern unsigned IOCTL_EVIOCGUNIQ;
-extern unsigned IOCTL_EVIOCGVERSION;
-extern unsigned IOCTL_EVIOCRMFF;
-extern unsigned IOCTL_EVIOCSABS;
-extern unsigned IOCTL_EVIOCSFF;
-extern unsigned IOCTL_EVIOCSKEYCODE;
-extern unsigned IOCTL_EVIOCSREP;
-extern unsigned IOCTL_BLKFLSBUF;
-extern unsigned IOCTL_BLKGETSIZE;
-extern unsigned IOCTL_BLKRAGET;
-extern unsigned IOCTL_BLKRASET;
-extern unsigned IOCTL_BLKROGET;
-extern unsigned IOCTL_BLKROSET;
-extern unsigned IOCTL_BLKRRPART;
-extern unsigned IOCTL_BLKFRASET;
-extern unsigned IOCTL_BLKFRAGET;
-extern unsigned IOCTL_BLKSECTSET;
-extern unsigned IOCTL_BLKSECTGET;
-extern unsigned IOCTL_BLKSSZGET;
-extern unsigned IOCTL_BLKBSZGET;
-extern unsigned IOCTL_BLKBSZSET;
-extern unsigned IOCTL_BLKGETSIZE64;
-extern unsigned IOCTL_CDROMAUDIOBUFSIZ;
-extern unsigned IOCTL_CDROMEJECT;
-extern unsigned IOCTL_CDROMEJECT_SW;
-extern unsigned IOCTL_CDROMMULTISESSION;
-extern unsigned IOCTL_CDROMPAUSE;
-extern unsigned IOCTL_CDROMPLAYMSF;
-extern unsigned IOCTL_CDROMPLAYTRKIND;
-extern unsigned IOCTL_CDROMREADAUDIO;
-extern unsigned IOCTL_CDROMREADCOOKED;
-extern unsigned IOCTL_CDROMREADMODE1;
-extern unsigned IOCTL_CDROMREADMODE2;
-extern unsigned IOCTL_CDROMREADRAW;
-extern unsigned IOCTL_CDROMREADTOCENTRY;
-extern unsigned IOCTL_CDROMREADTOCHDR;
-extern unsigned IOCTL_CDROMRESET;
-extern unsigned IOCTL_CDROMRESUME;
-extern unsigned IOCTL_CDROMSEEK;
-extern unsigned IOCTL_CDROMSTART;
-extern unsigned IOCTL_CDROMSTOP;
-extern unsigned IOCTL_CDROMSUBCHNL;
-extern unsigned IOCTL_CDROMVOLCTRL;
-extern unsigned IOCTL_CDROMVOLREAD;
-extern unsigned IOCTL_CDROM_GET_UPC;
-extern unsigned IOCTL_FDCLRPRM;
-extern unsigned IOCTL_FDDEFPRM;
-extern unsigned IOCTL_FDFLUSH;
-extern unsigned IOCTL_FDFMTBEG;
-extern unsigned IOCTL_FDFMTEND;
-extern unsigned IOCTL_FDFMTTRK;
-extern unsigned IOCTL_FDGETDRVPRM;
-extern unsigned IOCTL_FDGETDRVSTAT;
-extern unsigned IOCTL_FDGETDRVTYP;
-extern unsigned IOCTL_FDGETFDCSTAT;
-extern unsigned IOCTL_FDGETMAXERRS;
-extern unsigned IOCTL_FDGETPRM;
-extern unsigned IOCTL_FDMSGOFF;
-extern unsigned IOCTL_FDMSGON;
-extern unsigned IOCTL_FDPOLLDRVSTAT;
-extern unsigned IOCTL_FDRAWCMD;
-extern unsigned IOCTL_FDRESET;
-extern unsigned IOCTL_FDSETDRVPRM;
-extern unsigned IOCTL_FDSETEMSGTRESH;
-extern unsigned IOCTL_FDSETMAXERRS;
-extern unsigned IOCTL_FDSETPRM;
-extern unsigned IOCTL_FDTWADDLE;
-extern unsigned IOCTL_FDWERRORCLR;
-extern unsigned IOCTL_FDWERRORGET;
-extern unsigned IOCTL_HDIO_DRIVE_CMD;
-extern unsigned IOCTL_HDIO_GETGEO;
-extern unsigned IOCTL_HDIO_GET_32BIT;
-extern unsigned IOCTL_HDIO_GET_DMA;
-extern unsigned IOCTL_HDIO_GET_IDENTITY;
-extern unsigned IOCTL_HDIO_GET_KEEPSETTINGS;
-extern unsigned IOCTL_HDIO_GET_MULTCOUNT;
-extern unsigned IOCTL_HDIO_GET_NOWERR;
-extern unsigned IOCTL_HDIO_GET_UNMASKINTR;
-extern unsigned IOCTL_HDIO_SET_32BIT;
-extern unsigned IOCTL_HDIO_SET_DMA;
-extern unsigned IOCTL_HDIO_SET_KEEPSETTINGS;
-extern unsigned IOCTL_HDIO_SET_MULTCOUNT;
-extern unsigned IOCTL_HDIO_SET_NOWERR;
-extern unsigned IOCTL_HDIO_SET_UNMASKINTR;
-extern unsigned IOCTL_MTIOCPOS;
-extern unsigned IOCTL_PPPIOCGASYNCMAP;
-extern unsigned IOCTL_PPPIOCGDEBUG;
-extern unsigned IOCTL_PPPIOCGFLAGS;
-extern unsigned IOCTL_PPPIOCGUNIT;
-extern unsigned IOCTL_PPPIOCGXASYNCMAP;
-extern unsigned IOCTL_PPPIOCSASYNCMAP;
-extern unsigned IOCTL_PPPIOCSDEBUG;
-extern unsigned IOCTL_PPPIOCSFLAGS;
-extern unsigned IOCTL_PPPIOCSMAXCID;
-extern unsigned IOCTL_PPPIOCSMRU;
-extern unsigned IOCTL_PPPIOCSXASYNCMAP;
-extern unsigned IOCTL_SIOCDARP;
-extern unsigned IOCTL_SIOCDRARP;
-extern unsigned IOCTL_SIOCGARP;
-extern unsigned IOCTL_SIOCGIFENCAP;
-extern unsigned IOCTL_SIOCGIFHWADDR;
-extern unsigned IOCTL_SIOCGIFMAP;
-extern unsigned IOCTL_SIOCGIFMEM;
-extern unsigned IOCTL_SIOCGIFNAME;
-extern unsigned IOCTL_SIOCGIFSLAVE;
-extern unsigned IOCTL_SIOCGRARP;
-extern unsigned IOCTL_SIOCGSTAMP;
-extern unsigned IOCTL_SIOCSARP;
-extern unsigned IOCTL_SIOCSIFENCAP;
-extern unsigned IOCTL_SIOCSIFHWADDR;
-extern unsigned IOCTL_SIOCSIFLINK;
-extern unsigned IOCTL_SIOCSIFMAP;
-extern unsigned IOCTL_SIOCSIFMEM;
-extern unsigned IOCTL_SIOCSIFSLAVE;
-extern unsigned IOCTL_SIOCSRARP;
-extern unsigned IOCTL_SNDCTL_COPR_HALT;
-extern unsigned IOCTL_SNDCTL_COPR_LOAD;
-extern unsigned IOCTL_SNDCTL_COPR_RCODE;
-extern unsigned IOCTL_SNDCTL_COPR_RCVMSG;
-extern unsigned IOCTL_SNDCTL_COPR_RDATA;
-extern unsigned IOCTL_SNDCTL_COPR_RESET;
-extern unsigned IOCTL_SNDCTL_COPR_RUN;
-extern unsigned IOCTL_SNDCTL_COPR_SENDMSG;
-extern unsigned IOCTL_SNDCTL_COPR_WCODE;
-extern unsigned IOCTL_SNDCTL_COPR_WDATA;
-extern unsigned IOCTL_TCFLSH;
-extern unsigned IOCTL_TCGETA;
-extern unsigned IOCTL_TCGETS;
-extern unsigned IOCTL_TCSBRK;
-extern unsigned IOCTL_TCSBRKP;
-extern unsigned IOCTL_TCSETA;
-extern unsigned IOCTL_TCSETAF;
-extern unsigned IOCTL_TCSETAW;
-extern unsigned IOCTL_TCSETS;
-extern unsigned IOCTL_TCSETSF;
-extern unsigned IOCTL_TCSETSW;
-extern unsigned IOCTL_TCXONC;
-extern unsigned IOCTL_TIOCGLCKTRMIOS;
-extern unsigned IOCTL_TIOCGSOFTCAR;
-extern unsigned IOCTL_TIOCINQ;
-extern unsigned IOCTL_TIOCLINUX;
-extern unsigned IOCTL_TIOCSERCONFIG;
-extern unsigned IOCTL_TIOCSERGETLSR;
-extern unsigned IOCTL_TIOCSERGWILD;
-extern unsigned IOCTL_TIOCSERSWILD;
-extern unsigned IOCTL_TIOCSLCKTRMIOS;
-extern unsigned IOCTL_TIOCSSOFTCAR;
-extern unsigned IOCTL_VT_DISALLOCATE;
-extern unsigned IOCTL_VT_GETSTATE;
-extern unsigned IOCTL_VT_RESIZE;
-extern unsigned IOCTL_VT_RESIZEX;
-extern unsigned IOCTL_VT_SENDSIG;
-extern unsigned IOCTL_MTIOCGET;
-extern unsigned IOCTL_MTIOCTOP;
-extern unsigned IOCTL_SIOCADDRT;
-extern unsigned IOCTL_SIOCDELRT;
-extern unsigned IOCTL_SNDCTL_DSP_GETBLKSIZE;
-extern unsigned IOCTL_SNDCTL_DSP_GETFMTS;
-extern unsigned IOCTL_SNDCTL_DSP_NONBLOCK;
-extern unsigned IOCTL_SNDCTL_DSP_POST;
-extern unsigned IOCTL_SNDCTL_DSP_RESET;
-extern unsigned IOCTL_SNDCTL_DSP_SETFMT;
-extern unsigned IOCTL_SNDCTL_DSP_SETFRAGMENT;
-extern unsigned IOCTL_SNDCTL_DSP_SPEED;
-extern unsigned IOCTL_SNDCTL_DSP_STEREO;
-extern unsigned IOCTL_SNDCTL_DSP_SUBDIVIDE;
-extern unsigned IOCTL_SNDCTL_DSP_SYNC;
-extern unsigned IOCTL_SNDCTL_FM_4OP_ENABLE;
-extern unsigned IOCTL_SNDCTL_FM_LOAD_INSTR;
-extern unsigned IOCTL_SNDCTL_MIDI_INFO;
-extern unsigned IOCTL_SNDCTL_MIDI_PRETIME;
-extern unsigned IOCTL_SNDCTL_SEQ_CTRLRATE;
-extern unsigned IOCTL_SNDCTL_SEQ_GETINCOUNT;
-extern unsigned IOCTL_SNDCTL_SEQ_GETOUTCOUNT;
-extern unsigned IOCTL_SNDCTL_SEQ_NRMIDIS;
-extern unsigned IOCTL_SNDCTL_SEQ_NRSYNTHS;
-extern unsigned IOCTL_SNDCTL_SEQ_OUTOFBAND;
-extern unsigned IOCTL_SNDCTL_SEQ_PANIC;
-extern unsigned IOCTL_SNDCTL_SEQ_PERCMODE;
-extern unsigned IOCTL_SNDCTL_SEQ_RESET;
-extern unsigned IOCTL_SNDCTL_SEQ_RESETSAMPLES;
-extern unsigned IOCTL_SNDCTL_SEQ_SYNC;
-extern unsigned IOCTL_SNDCTL_SEQ_TESTMIDI;
-extern unsigned IOCTL_SNDCTL_SEQ_THRESHOLD;
-extern unsigned IOCTL_SNDCTL_SYNTH_INFO;
-extern unsigned IOCTL_SNDCTL_SYNTH_MEMAVL;
-extern unsigned IOCTL_SNDCTL_TMR_CONTINUE;
-extern unsigned IOCTL_SNDCTL_TMR_METRONOME;
-extern unsigned IOCTL_SNDCTL_TMR_SELECT;
-extern unsigned IOCTL_SNDCTL_TMR_SOURCE;
-extern unsigned IOCTL_SNDCTL_TMR_START;
-extern unsigned IOCTL_SNDCTL_TMR_STOP;
-extern unsigned IOCTL_SNDCTL_TMR_TEMPO;
-extern unsigned IOCTL_SNDCTL_TMR_TIMEBASE;
-extern unsigned IOCTL_SOUND_MIXER_READ_ALTPCM;
-extern unsigned IOCTL_SOUND_MIXER_READ_BASS;
-extern unsigned IOCTL_SOUND_MIXER_READ_CAPS;
-extern unsigned IOCTL_SOUND_MIXER_READ_CD;
-extern unsigned IOCTL_SOUND_MIXER_READ_DEVMASK;
-extern unsigned IOCTL_SOUND_MIXER_READ_ENHANCE;
-extern unsigned IOCTL_SOUND_MIXER_READ_IGAIN;
-extern unsigned IOCTL_SOUND_MIXER_READ_IMIX;
-extern unsigned IOCTL_SOUND_MIXER_READ_LINE1;
-extern unsigned IOCTL_SOUND_MIXER_READ_LINE2;
-extern unsigned IOCTL_SOUND_MIXER_READ_LINE3;
-extern unsigned IOCTL_SOUND_MIXER_READ_LINE;
-extern unsigned IOCTL_SOUND_MIXER_READ_LOUD;
-extern unsigned IOCTL_SOUND_MIXER_READ_MIC;
-extern unsigned IOCTL_SOUND_MIXER_READ_MUTE;
-extern unsigned IOCTL_SOUND_MIXER_READ_OGAIN;
-extern unsigned IOCTL_SOUND_MIXER_READ_PCM;
-extern unsigned IOCTL_SOUND_MIXER_READ_RECLEV;
-extern unsigned IOCTL_SOUND_MIXER_READ_RECMASK;
-extern unsigned IOCTL_SOUND_MIXER_READ_RECSRC;
-extern unsigned IOCTL_SOUND_MIXER_READ_SPEAKER;
-extern unsigned IOCTL_SOUND_MIXER_READ_STEREODEVS;
-extern unsigned IOCTL_SOUND_MIXER_READ_SYNTH;
-extern unsigned IOCTL_SOUND_MIXER_READ_TREBLE;
-extern unsigned IOCTL_SOUND_MIXER_READ_VOLUME;
-extern unsigned IOCTL_SOUND_MIXER_WRITE_ALTPCM;
-extern unsigned IOCTL_SOUND_MIXER_WRITE_BASS;
-extern unsigned IOCTL_SOUND_MIXER_WRITE_CD;
-extern unsigned IOCTL_SOUND_MIXER_WRITE_ENHANCE;
-extern unsigned IOCTL_SOUND_MIXER_WRITE_IGAIN;
-extern unsigned IOCTL_SOUND_MIXER_WRITE_IMIX;
-extern unsigned IOCTL_SOUND_MIXER_WRITE_LINE1;
-extern unsigned IOCTL_SOUND_MIXER_WRITE_LINE2;
-extern unsigned IOCTL_SOUND_MIXER_WRITE_LINE3;
-extern unsigned IOCTL_SOUND_MIXER_WRITE_LINE;
-extern unsigned IOCTL_SOUND_MIXER_WRITE_LOUD;
-extern unsigned IOCTL_SOUND_MIXER_WRITE_MIC;
-extern unsigned IOCTL_SOUND_MIXER_WRITE_MUTE;
-extern unsigned IOCTL_SOUND_MIXER_WRITE_OGAIN;
-extern unsigned IOCTL_SOUND_MIXER_WRITE_PCM;
-extern unsigned IOCTL_SOUND_MIXER_WRITE_RECLEV;
-extern unsigned IOCTL_SOUND_MIXER_WRITE_RECSRC;
-extern unsigned IOCTL_SOUND_MIXER_WRITE_SPEAKER;
-extern unsigned IOCTL_SOUND_MIXER_WRITE_SYNTH;
-extern unsigned IOCTL_SOUND_MIXER_WRITE_TREBLE;
-extern unsigned IOCTL_SOUND_MIXER_WRITE_VOLUME;
-extern unsigned IOCTL_SOUND_PCM_READ_BITS;
-extern unsigned IOCTL_SOUND_PCM_READ_CHANNELS;
-extern unsigned IOCTL_SOUND_PCM_READ_FILTER;
-extern unsigned IOCTL_SOUND_PCM_READ_RATE;
-extern unsigned IOCTL_SOUND_PCM_WRITE_CHANNELS;
-extern unsigned IOCTL_SOUND_PCM_WRITE_FILTER;
-extern unsigned IOCTL_VT_ACTIVATE;
-extern unsigned IOCTL_VT_GETMODE;
-extern unsigned IOCTL_VT_OPENQRY;
-extern unsigned IOCTL_VT_RELDISP;
-extern unsigned IOCTL_VT_SETMODE;
-extern unsigned IOCTL_VT_WAITACTIVE;
-#endif // SANITIZER_LINUX
-
-#if SANITIZER_LINUX && !SANITIZER_ANDROID
-extern unsigned IOCTL_EQL_EMANCIPATE;
-extern unsigned IOCTL_EQL_ENSLAVE;
-extern unsigned IOCTL_EQL_GETMASTRCFG;
-extern unsigned IOCTL_EQL_GETSLAVECFG;
-extern unsigned IOCTL_EQL_SETMASTRCFG;
-extern unsigned IOCTL_EQL_SETSLAVECFG;
-extern unsigned IOCTL_EVIOCGKEYCODE_V2;
-extern unsigned IOCTL_EVIOCGPROP;
-extern unsigned IOCTL_EVIOCSKEYCODE_V2;
-extern unsigned IOCTL_FS_IOC_GETFLAGS;
-extern unsigned IOCTL_FS_IOC_GETVERSION;
-extern unsigned IOCTL_FS_IOC_SETFLAGS;
-extern unsigned IOCTL_FS_IOC_SETVERSION;
-extern unsigned IOCTL_GIO_CMAP;
-extern unsigned IOCTL_GIO_FONT;
-extern unsigned IOCTL_GIO_UNIMAP;
-extern unsigned IOCTL_GIO_UNISCRNMAP;
-extern unsigned IOCTL_KDADDIO;
-extern unsigned IOCTL_KDDELIO;
-extern unsigned IOCTL_KDGETKEYCODE;
-extern unsigned IOCTL_KDGKBDIACR;
-extern unsigned IOCTL_KDGKBENT;
-extern unsigned IOCTL_KDGKBLED;
-extern unsigned IOCTL_KDGKBMETA;
-extern unsigned IOCTL_KDGKBSENT;
-extern unsigned IOCTL_KDMAPDISP;
-extern unsigned IOCTL_KDSETKEYCODE;
-extern unsigned IOCTL_KDSIGACCEPT;
-extern unsigned IOCTL_KDSKBDIACR;
-extern unsigned IOCTL_KDSKBENT;
-extern unsigned IOCTL_KDSKBLED;
-extern unsigned IOCTL_KDSKBMETA;
-extern unsigned IOCTL_KDSKBSENT;
-extern unsigned IOCTL_KDUNMAPDISP;
-extern unsigned IOCTL_LPABORT;
-extern unsigned IOCTL_LPABORTOPEN;
-extern unsigned IOCTL_LPCAREFUL;
-extern unsigned IOCTL_LPCHAR;
-extern unsigned IOCTL_LPGETIRQ;
-extern unsigned IOCTL_LPGETSTATUS;
-extern unsigned IOCTL_LPRESET;
-extern unsigned IOCTL_LPSETIRQ;
-extern unsigned IOCTL_LPTIME;
-extern unsigned IOCTL_LPWAIT;
-extern unsigned IOCTL_MTIOCGETCONFIG;
-extern unsigned IOCTL_MTIOCSETCONFIG;
-extern unsigned IOCTL_PIO_CMAP;
-extern unsigned IOCTL_PIO_FONT;
-extern unsigned IOCTL_PIO_UNIMAP;
-extern unsigned IOCTL_PIO_UNIMAPCLR;
-extern unsigned IOCTL_PIO_UNISCRNMAP;
-extern unsigned IOCTL_SCSI_IOCTL_GET_IDLUN;
-extern unsigned IOCTL_SCSI_IOCTL_PROBE_HOST;
-extern unsigned IOCTL_SCSI_IOCTL_TAGGED_DISABLE;
-extern unsigned IOCTL_SCSI_IOCTL_TAGGED_ENABLE;
-extern unsigned IOCTL_SIOCAIPXITFCRT;
-extern unsigned IOCTL_SIOCAIPXPRISLT;
-extern unsigned IOCTL_SIOCAX25ADDUID;
-extern unsigned IOCTL_SIOCAX25DELUID;
-extern unsigned IOCTL_SIOCAX25GETPARMS;
-extern unsigned IOCTL_SIOCAX25GETUID;
-extern unsigned IOCTL_SIOCAX25NOUID;
-extern unsigned IOCTL_SIOCAX25SETPARMS;
-extern unsigned IOCTL_SIOCDEVPLIP;
-extern unsigned IOCTL_SIOCIPXCFGDATA;
-extern unsigned IOCTL_SIOCNRDECOBS;
-extern unsigned IOCTL_SIOCNRGETPARMS;
-extern unsigned IOCTL_SIOCNRRTCTL;
-extern unsigned IOCTL_SIOCNRSETPARMS;
-extern unsigned IOCTL_SNDCTL_DSP_GETISPACE;
-extern unsigned IOCTL_SNDCTL_DSP_GETOSPACE;
-extern unsigned IOCTL_TIOCGSERIAL;
-extern unsigned IOCTL_TIOCSERGETMULTI;
-extern unsigned IOCTL_TIOCSERSETMULTI;
-extern unsigned IOCTL_TIOCSSERIAL;
-extern unsigned IOCTL_GIO_SCRNMAP;
-extern unsigned IOCTL_KDDISABIO;
-extern unsigned IOCTL_KDENABIO;
-extern unsigned IOCTL_KDGETLED;
-extern unsigned IOCTL_KDGETMODE;
-extern unsigned IOCTL_KDGKBMODE;
-extern unsigned IOCTL_KDGKBTYPE;
-extern unsigned IOCTL_KDMKTONE;
-extern unsigned IOCTL_KDSETLED;
-extern unsigned IOCTL_KDSETMODE;
-extern unsigned IOCTL_KDSKBMODE;
-extern unsigned IOCTL_KIOCSOUND;
-extern unsigned IOCTL_PIO_SCRNMAP;
-#endif
-
-extern const int si_SEGV_MAPERR;
-extern const int si_SEGV_ACCERR;
-} // namespace __sanitizer
-
-#define CHECK_TYPE_SIZE(TYPE) \
- COMPILER_CHECK(sizeof(__sanitizer_##TYPE) == sizeof(TYPE))
-
-#define CHECK_SIZE_AND_OFFSET(CLASS, MEMBER) \
- COMPILER_CHECK(sizeof(((__sanitizer_##CLASS *)NULL)->MEMBER) == \
- sizeof(((CLASS *)NULL)->MEMBER)); \
- COMPILER_CHECK(offsetof(__sanitizer_##CLASS, MEMBER) == \
- offsetof(CLASS, MEMBER))
-
-// For sigaction, which is a function and struct at the same time,
-// and thus requires explicit "struct" in sizeof() expression.
-#define CHECK_STRUCT_SIZE_AND_OFFSET(CLASS, MEMBER) \
- COMPILER_CHECK(sizeof(((struct __sanitizer_##CLASS *)NULL)->MEMBER) == \
- sizeof(((struct CLASS *)NULL)->MEMBER)); \
- COMPILER_CHECK(offsetof(struct __sanitizer_##CLASS, MEMBER) == \
- offsetof(struct CLASS, MEMBER))
-
-#define SIGACTION_SYMNAME sigaction
-
-#endif // SANITIZER_LINUX || SANITIZER_APPLE
-
-#endif
Index: create-15.0.4-compiler-rt-mips-patch/llvm-15.0.4-new/compiler-rt/lib/sanitizer_common
===================================================================
--- create-15.0.4-compiler-rt-mips-patch/llvm-15.0.4-new/compiler-rt/lib/sanitizer_common (revision 39)
+++ create-15.0.4-compiler-rt-mips-patch/llvm-15.0.4-new/compiler-rt/lib/sanitizer_common (nonexistent)
Property changes on: create-15.0.4-compiler-rt-mips-patch/llvm-15.0.4-new/compiler-rt/lib/sanitizer_common
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-compiler-rt-mips-patch/llvm-15.0.4-new/compiler-rt/lib
===================================================================
--- create-15.0.4-compiler-rt-mips-patch/llvm-15.0.4-new/compiler-rt/lib (revision 39)
+++ create-15.0.4-compiler-rt-mips-patch/llvm-15.0.4-new/compiler-rt/lib (nonexistent)
Property changes on: create-15.0.4-compiler-rt-mips-patch/llvm-15.0.4-new/compiler-rt/lib
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-compiler-rt-mips-patch/llvm-15.0.4-new/compiler-rt
===================================================================
--- create-15.0.4-compiler-rt-mips-patch/llvm-15.0.4-new/compiler-rt (revision 39)
+++ create-15.0.4-compiler-rt-mips-patch/llvm-15.0.4-new/compiler-rt (nonexistent)
Property changes on: create-15.0.4-compiler-rt-mips-patch/llvm-15.0.4-new/compiler-rt
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-compiler-rt-mips-patch/llvm-15.0.4-new
===================================================================
--- create-15.0.4-compiler-rt-mips-patch/llvm-15.0.4-new (revision 39)
+++ create-15.0.4-compiler-rt-mips-patch/llvm-15.0.4-new (nonexistent)
Property changes on: create-15.0.4-compiler-rt-mips-patch/llvm-15.0.4-new
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-compiler-rt-mips-patch/create.patch.sh
===================================================================
--- create-15.0.4-compiler-rt-mips-patch/create.patch.sh (revision 39)
+++ create-15.0.4-compiler-rt-mips-patch/create.patch.sh (nonexistent)
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-VERSION=15.0.4
-
-tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
-mv llvm-$VERSION llvm-$VERSION-orig
-
-cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
-
-diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-compiler-rt-mips.patch
-
-mv llvm-$VERSION-compiler-rt-mips.patch ../patches
-
-rm -rf ./llvm-$VERSION
-rm -rf ./llvm-$VERSION-orig
Property changes on: create-15.0.4-compiler-rt-mips-patch/create.patch.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: create-15.0.4-compiler-rt-mips-patch
===================================================================
--- create-15.0.4-compiler-rt-mips-patch (revision 39)
+++ create-15.0.4-compiler-rt-mips-patch (nonexistent)
Property changes on: create-15.0.4-compiler-rt-mips-patch
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-llvm-ppc64-patch/file.list
===================================================================
--- create-13.0.0-llvm-ppc64-patch/file.list (revision 39)
+++ create-13.0.0-llvm-ppc64-patch/file.list (nonexistent)
@@ -1 +0,0 @@
-llvm-13.0.0/llvm/cmake/config-ix.cmake
Index: create-13.0.0-llvm-ppc64-patch/create.patch.sh
===================================================================
--- create-13.0.0-llvm-ppc64-patch/create.patch.sh (revision 39)
+++ create-13.0.0-llvm-ppc64-patch/create.patch.sh (nonexistent)
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-VERSION=13.0.0
-
-tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
-mv llvm-$VERSION llvm-$VERSION-orig
-
-cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
-
-diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-llvm-ppc64.patch
-
-mv llvm-$VERSION-llvm-ppc64.patch ../patches
-
-rm -rf ./llvm-$VERSION
-rm -rf ./llvm-$VERSION-orig
Property changes on: create-13.0.0-llvm-ppc64-patch/create.patch.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: create-13.0.0-llvm-ppc64-patch/llvm-13.0.0-new/llvm/cmake/config-ix.cmake
===================================================================
--- create-13.0.0-llvm-ppc64-patch/llvm-13.0.0-new/llvm/cmake/config-ix.cmake (revision 39)
+++ create-13.0.0-llvm-ppc64-patch/llvm-13.0.0-new/llvm/cmake/config-ix.cmake (nonexistent)
@@ -1,697 +0,0 @@
-if( WIN32 AND NOT CYGWIN )
- # We consider Cygwin as another Unix
- set(PURE_WINDOWS 1)
-endif()
-
-include(CheckIncludeFile)
-include(CheckLibraryExists)
-include(CheckSymbolExists)
-include(CheckFunctionExists)
-include(CheckStructHasMember)
-include(CheckCCompilerFlag)
-include(CMakePushCheckState)
-
-include(CheckCompilerVersion)
-include(HandleLLVMStdlib)
-
-if( UNIX AND NOT (APPLE OR BEOS OR HAIKU) )
- # Used by check_symbol_exists:
- list(APPEND CMAKE_REQUIRED_LIBRARIES "m")
-endif()
-# x86_64 FreeBSD 9.2 requires libcxxrt to be specified explicitly.
-if( CMAKE_SYSTEM MATCHES "FreeBSD-9.2-RELEASE" AND
- CMAKE_SIZEOF_VOID_P EQUAL 8 )
- list(APPEND CMAKE_REQUIRED_LIBRARIES "cxxrt")
-endif()
-
-# Do checks with _XOPEN_SOURCE and large-file API on AIX, because we will build
-# with those too.
-if (UNIX AND ${CMAKE_SYSTEM_NAME} MATCHES "AIX")
- list(APPEND CMAKE_REQUIRED_DEFINITIONS "-D_XOPEN_SOURCE=700")
- list(APPEND CMAKE_REQUIRED_DEFINITIONS "-D_LARGE_FILE_API")
-endif()
-
-# Do checks with _FILE_OFFSET_BITS=64 on Solaris, because we will build
-# with those too.
-if (UNIX AND ${CMAKE_SYSTEM_NAME} MATCHES "SunOS")
- list(APPEND CMAKE_REQUIRED_DEFINITIONS "-D_FILE_OFFSET_BITS=64")
-endif()
-
-# include checks
-check_include_file(dlfcn.h HAVE_DLFCN_H)
-check_include_file(errno.h HAVE_ERRNO_H)
-check_include_file(fcntl.h HAVE_FCNTL_H)
-check_include_file(link.h HAVE_LINK_H)
-check_include_file(malloc/malloc.h HAVE_MALLOC_MALLOC_H)
-if( NOT PURE_WINDOWS )
- check_include_file(pthread.h HAVE_PTHREAD_H)
-endif()
-check_include_file(signal.h HAVE_SIGNAL_H)
-check_include_file(sys/ioctl.h HAVE_SYS_IOCTL_H)
-check_include_file(sys/mman.h HAVE_SYS_MMAN_H)
-check_include_file(sys/param.h HAVE_SYS_PARAM_H)
-check_include_file(sys/resource.h HAVE_SYS_RESOURCE_H)
-check_include_file(sys/stat.h HAVE_SYS_STAT_H)
-check_include_file(sys/time.h HAVE_SYS_TIME_H)
-check_include_file(sys/types.h HAVE_SYS_TYPES_H)
-check_include_file(sysexits.h HAVE_SYSEXITS_H)
-check_include_file(termios.h HAVE_TERMIOS_H)
-check_include_file(unistd.h HAVE_UNISTD_H)
-check_include_file(valgrind/valgrind.h HAVE_VALGRIND_VALGRIND_H)
-check_include_file(fenv.h HAVE_FENV_H)
-check_symbol_exists(FE_ALL_EXCEPT "fenv.h" HAVE_DECL_FE_ALL_EXCEPT)
-check_symbol_exists(FE_INEXACT "fenv.h" HAVE_DECL_FE_INEXACT)
-
-check_include_file(mach/mach.h HAVE_MACH_MACH_H)
-check_include_file(histedit.h HAVE_HISTEDIT_H)
-check_include_file(CrashReporterClient.h HAVE_CRASHREPORTERCLIENT_H)
-if(APPLE)
- include(CheckCSourceCompiles)
- CHECK_C_SOURCE_COMPILES("
- static const char *__crashreporter_info__ = 0;
- asm(\".desc ___crashreporter_info__, 0x10\");
- int main() { return 0; }"
- HAVE_CRASHREPORTER_INFO)
-endif()
-
-if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
- check_include_file(linux/magic.h HAVE_LINUX_MAGIC_H)
- if(NOT HAVE_LINUX_MAGIC_H)
- # older kernels use split files
- check_include_file(linux/nfs_fs.h HAVE_LINUX_NFS_FS_H)
- check_include_file(linux/smb.h HAVE_LINUX_SMB_H)
- endif()
-endif()
-
-# library checks
-if( NOT PURE_WINDOWS )
- check_library_exists(pthread pthread_create "" HAVE_LIBPTHREAD)
- if (HAVE_LIBPTHREAD)
- check_library_exists(pthread pthread_getspecific "" HAVE_PTHREAD_GETSPECIFIC)
- check_library_exists(pthread pthread_rwlock_init "" HAVE_PTHREAD_RWLOCK_INIT)
- check_library_exists(pthread pthread_mutex_lock "" HAVE_PTHREAD_MUTEX_LOCK)
- else()
- # this could be Android
- check_library_exists(c pthread_create "" PTHREAD_IN_LIBC)
- if (PTHREAD_IN_LIBC)
- check_library_exists(c pthread_getspecific "" HAVE_PTHREAD_GETSPECIFIC)
- check_library_exists(c pthread_rwlock_init "" HAVE_PTHREAD_RWLOCK_INIT)
- check_library_exists(c pthread_mutex_lock "" HAVE_PTHREAD_MUTEX_LOCK)
- endif()
- endif()
- check_library_exists(dl dlopen "" HAVE_LIBDL)
- check_library_exists(rt clock_gettime "" HAVE_LIBRT)
-endif()
-
-# Check for libpfm.
-include(FindLibpfm)
-
-if(HAVE_LIBPTHREAD)
- # We want to find pthreads library and at the moment we do want to
- # have it reported as '-l<lib>' instead of '-pthread'.
- # TODO: switch to -pthread once the rest of the build system can deal with it.
- set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
- set(THREADS_HAVE_PTHREAD_ARG Off)
- find_package(Threads REQUIRED)
- set(LLVM_PTHREAD_LIB ${CMAKE_THREAD_LIBS_INIT})
-endif()
-
-if(LLVM_ENABLE_ZLIB)
- if(LLVM_ENABLE_ZLIB STREQUAL FORCE_ON)
- find_package(ZLIB REQUIRED)
- elseif(NOT LLVM_USE_SANITIZER MATCHES "Memory.*")
- find_package(ZLIB)
- endif()
- if(ZLIB_FOUND)
- # Check if zlib we found is usable; for example, we may have found a 32-bit
- # library on a 64-bit system which would result in a link-time failure.
- cmake_push_check_state()
- list(APPEND CMAKE_REQUIRED_INCLUDES ${ZLIB_INCLUDE_DIRS})
- list(APPEND CMAKE_REQUIRED_LIBRARIES ${ZLIB_LIBRARY})
- check_symbol_exists(compress2 zlib.h HAVE_ZLIB)
- cmake_pop_check_state()
- if(LLVM_ENABLE_ZLIB STREQUAL FORCE_ON AND NOT HAVE_ZLIB)
- message(FATAL_ERROR "Failed to configure zlib")
- endif()
- endif()
- set(LLVM_ENABLE_ZLIB "${HAVE_ZLIB}")
-endif()
-
-if(LLVM_ENABLE_LIBXML2)
- if(LLVM_ENABLE_LIBXML2 STREQUAL FORCE_ON)
- find_package(LibXml2 REQUIRED)
- elseif(NOT LLVM_USE_SANITIZER MATCHES "Memory.*")
- find_package(LibXml2)
- endif()
- if(LibXml2_FOUND)
- # Check if libxml2 we found is usable; for example, we may have found a 32-bit
- # library on a 64-bit system which would result in a link-time failure.
- cmake_push_check_state()
- list(APPEND CMAKE_REQUIRED_INCLUDES ${LIBXML2_INCLUDE_DIRS})
- list(APPEND CMAKE_REQUIRED_LIBRARIES ${LIBXML2_LIBRARIES})
- list(APPEND CMAKE_REQUIRED_DEFINITIONS ${LIBXML2_DEFINITIONS})
- check_symbol_exists(xmlReadMemory libxml/xmlreader.h HAVE_LIBXML2)
- cmake_pop_check_state()
- if(LLVM_ENABLE_LIBXML2 STREQUAL FORCE_ON AND NOT HAVE_LIBXML2)
- message(FATAL_ERROR "Failed to configure libxml2")
- endif()
- endif()
- set(LLVM_ENABLE_LIBXML2 "${HAVE_LIBXML2}")
-endif()
-
-# Don't look for these libraries if we're using MSan, since uninstrumented third
-# party code may call MSan interceptors like strlen, leading to false positives.
-if(NOT LLVM_USE_SANITIZER MATCHES "Memory.*")
- # Don't look for these libraries on Windows.
- if (NOT PURE_WINDOWS)
- # Skip libedit if using ASan as it contains memory leaks.
- if (LLVM_ENABLE_LIBEDIT AND HAVE_HISTEDIT_H AND NOT LLVM_USE_SANITIZER MATCHES ".*Address.*")
- check_library_exists(edit el_init "" HAVE_LIBEDIT)
- else()
- set(HAVE_LIBEDIT 0)
- endif()
- if(LLVM_ENABLE_TERMINFO STREQUAL FORCE_ON)
- set(MAYBE_REQUIRED REQUIRED)
- else()
- set(MAYBE_REQUIRED)
- endif()
- if(LLVM_ENABLE_TERMINFO)
- find_library(TERMINFO_LIB NAMES terminfo tinfo curses ncurses ncursesw ${MAYBE_REQUIRED})
- endif()
- if(TERMINFO_LIB)
- set(LLVM_ENABLE_TERMINFO 1)
- else()
- set(LLVM_ENABLE_TERMINFO 0)
- endif()
- else()
- set(LLVM_ENABLE_TERMINFO 0)
- endif()
-else()
- set(LLVM_ENABLE_TERMINFO 0)
-endif()
-
-check_library_exists(xar xar_open "" LLVM_HAVE_LIBXAR)
-if(LLVM_HAVE_LIBXAR)
- set(XAR_LIB xar)
-endif()
-
-# function checks
-check_symbol_exists(arc4random "stdlib.h" HAVE_DECL_ARC4RANDOM)
-find_package(Backtrace)
-set(HAVE_BACKTRACE ${Backtrace_FOUND})
-set(BACKTRACE_HEADER ${Backtrace_HEADER})
-
-# Prevent check_symbol_exists from using API that is not supported for a given
-# deployment target.
-check_c_compiler_flag("-Werror=unguarded-availability-new" "C_SUPPORTS_WERROR_UNGUARDED_AVAILABILITY_NEW")
-if(C_SUPPORTS_WERROR_UNGUARDED_AVAILABILITY_NEW)
- set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -Werror=unguarded-availability-new")
-endif()
-
-# Determine whether we can register EH tables.
-check_symbol_exists(__register_frame "${CMAKE_CURRENT_LIST_DIR}/unwind.h" HAVE_REGISTER_FRAME)
-check_symbol_exists(__deregister_frame "${CMAKE_CURRENT_LIST_DIR}/unwind.h" HAVE_DEREGISTER_FRAME)
-
-check_symbol_exists(_Unwind_Backtrace "unwind.h" HAVE__UNWIND_BACKTRACE)
-check_symbol_exists(getpagesize unistd.h HAVE_GETPAGESIZE)
-check_symbol_exists(sysconf unistd.h HAVE_SYSCONF)
-check_symbol_exists(getrusage sys/resource.h HAVE_GETRUSAGE)
-check_symbol_exists(setrlimit sys/resource.h HAVE_SETRLIMIT)
-check_symbol_exists(isatty unistd.h HAVE_ISATTY)
-check_symbol_exists(futimens sys/stat.h HAVE_FUTIMENS)
-check_symbol_exists(futimes sys/time.h HAVE_FUTIMES)
-check_symbol_exists(posix_fallocate fcntl.h HAVE_POSIX_FALLOCATE)
-# AddressSanitizer conflicts with lib/Support/Unix/Signals.inc
-# Avoid sigaltstack on Apple platforms, where backtrace() cannot handle it
-# (rdar://7089625) and _Unwind_Backtrace is unusable because it cannot unwind
-# past the signal handler after an assertion failure (rdar://29866587).
-if( HAVE_SIGNAL_H AND NOT LLVM_USE_SANITIZER MATCHES ".*Address.*" AND NOT APPLE )
- check_symbol_exists(sigaltstack signal.h HAVE_SIGALTSTACK)
-endif()
-set(CMAKE_REQUIRED_DEFINITIONS "-D_LARGEFILE64_SOURCE")
-check_symbol_exists(lseek64 "sys/types.h;unistd.h" HAVE_LSEEK64)
-set(CMAKE_REQUIRED_DEFINITIONS "")
-check_symbol_exists(mallctl malloc_np.h HAVE_MALLCTL)
-check_symbol_exists(mallinfo malloc.h HAVE_MALLINFO)
-check_symbol_exists(mallinfo2 malloc.h HAVE_MALLINFO2)
-check_symbol_exists(malloc_zone_statistics malloc/malloc.h
- HAVE_MALLOC_ZONE_STATISTICS)
-check_symbol_exists(getrlimit "sys/types.h;sys/time.h;sys/resource.h" HAVE_GETRLIMIT)
-check_symbol_exists(posix_spawn spawn.h HAVE_POSIX_SPAWN)
-check_symbol_exists(pread unistd.h HAVE_PREAD)
-check_symbol_exists(sbrk unistd.h HAVE_SBRK)
-check_symbol_exists(strerror string.h HAVE_STRERROR)
-check_symbol_exists(strerror_r string.h HAVE_STRERROR_R)
-check_symbol_exists(strerror_s string.h HAVE_DECL_STRERROR_S)
-check_symbol_exists(setenv stdlib.h HAVE_SETENV)
-if( PURE_WINDOWS )
- check_symbol_exists(_chsize_s io.h HAVE__CHSIZE_S)
-
- check_function_exists(_alloca HAVE__ALLOCA)
- check_function_exists(__alloca HAVE___ALLOCA)
- check_function_exists(__chkstk HAVE___CHKSTK)
- check_function_exists(__chkstk_ms HAVE___CHKSTK_MS)
- check_function_exists(___chkstk HAVE____CHKSTK)
- check_function_exists(___chkstk_ms HAVE____CHKSTK_MS)
-
- check_function_exists(__ashldi3 HAVE___ASHLDI3)
- check_function_exists(__ashrdi3 HAVE___ASHRDI3)
- check_function_exists(__divdi3 HAVE___DIVDI3)
- check_function_exists(__fixdfdi HAVE___FIXDFDI)
- check_function_exists(__fixsfdi HAVE___FIXSFDI)
- check_function_exists(__floatdidf HAVE___FLOATDIDF)
- check_function_exists(__lshrdi3 HAVE___LSHRDI3)
- check_function_exists(__moddi3 HAVE___MODDI3)
- check_function_exists(__udivdi3 HAVE___UDIVDI3)
- check_function_exists(__umoddi3 HAVE___UMODDI3)
-
- check_function_exists(__main HAVE___MAIN)
- check_function_exists(__cmpdi2 HAVE___CMPDI2)
-endif()
-if( HAVE_DLFCN_H )
- if( HAVE_LIBDL )
- list(APPEND CMAKE_REQUIRED_LIBRARIES dl)
- endif()
- check_symbol_exists(dlopen dlfcn.h HAVE_DLOPEN)
- check_symbol_exists(dladdr dlfcn.h HAVE_DLADDR)
- if( HAVE_LIBDL )
- list(REMOVE_ITEM CMAKE_REQUIRED_LIBRARIES dl)
- endif()
-endif()
-
-CHECK_STRUCT_HAS_MEMBER("struct stat" st_mtimespec.tv_nsec
- "sys/types.h;sys/stat.h" HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC)
-if (UNIX AND ${CMAKE_SYSTEM_NAME} MATCHES "AIX")
-# The st_mtim.tv_nsec member of a `stat` structure is not reliable on some AIX
-# environments.
- set(HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 0)
-else()
- CHECK_STRUCT_HAS_MEMBER("struct stat" st_mtim.tv_nsec
- "sys/types.h;sys/stat.h" HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC)
-endif()
-
-check_symbol_exists(__GLIBC__ stdio.h LLVM_USING_GLIBC)
-if( LLVM_USING_GLIBC )
- add_definitions( -D_GNU_SOURCE )
- list(APPEND CMAKE_REQUIRED_DEFINITIONS "-D_GNU_SOURCE")
-endif()
-# This check requires _GNU_SOURCE
-if (NOT PURE_WINDOWS)
- if (LLVM_PTHREAD_LIB)
- list(APPEND CMAKE_REQUIRED_LIBRARIES ${LLVM_PTHREAD_LIB})
- endif()
- check_symbol_exists(pthread_getname_np pthread.h HAVE_PTHREAD_GETNAME_NP)
- check_symbol_exists(pthread_setname_np pthread.h HAVE_PTHREAD_SETNAME_NP)
- if (LLVM_PTHREAD_LIB)
- list(REMOVE_ITEM CMAKE_REQUIRED_LIBRARIES ${LLVM_PTHREAD_LIB})
- endif()
-endif()
-
-# available programs checks
-function(llvm_find_program name)
- string(TOUPPER ${name} NAME)
- string(REGEX REPLACE "\\." "_" NAME ${NAME})
-
- find_program(LLVM_PATH_${NAME} NAMES ${ARGV})
- mark_as_advanced(LLVM_PATH_${NAME})
- if(LLVM_PATH_${NAME})
- set(HAVE_${NAME} 1 CACHE INTERNAL "Is ${name} available ?")
- mark_as_advanced(HAVE_${NAME})
- else(LLVM_PATH_${NAME})
- set(HAVE_${NAME} "" CACHE INTERNAL "Is ${name} available ?")
- endif(LLVM_PATH_${NAME})
-endfunction()
-
-if (LLVM_ENABLE_DOXYGEN)
- llvm_find_program(dot)
-endif ()
-
-if( LLVM_ENABLE_FFI )
- find_path(FFI_INCLUDE_PATH ffi.h PATHS ${FFI_INCLUDE_DIR})
- if( EXISTS "${FFI_INCLUDE_PATH}/ffi.h" )
- set(FFI_HEADER ffi.h CACHE INTERNAL "")
- set(HAVE_FFI_H 1 CACHE INTERNAL "")
- else()
- find_path(FFI_INCLUDE_PATH ffi/ffi.h PATHS ${FFI_INCLUDE_DIR})
- if( EXISTS "${FFI_INCLUDE_PATH}/ffi/ffi.h" )
- set(FFI_HEADER ffi/ffi.h CACHE INTERNAL "")
- set(HAVE_FFI_FFI_H 1 CACHE INTERNAL "")
- endif()
- endif()
-
- if( NOT FFI_HEADER )
- message(FATAL_ERROR "libffi includes are not found.")
- endif()
-
- find_library(FFI_LIBRARY_PATH ffi PATHS ${FFI_LIBRARY_DIR})
- if( NOT FFI_LIBRARY_PATH )
- message(FATAL_ERROR "libffi is not found.")
- endif()
-
- list(APPEND CMAKE_REQUIRED_LIBRARIES ${FFI_LIBRARY_PATH})
- list(APPEND CMAKE_REQUIRED_INCLUDES ${FFI_INCLUDE_PATH})
- check_symbol_exists(ffi_call ${FFI_HEADER} HAVE_FFI_CALL)
- list(REMOVE_ITEM CMAKE_REQUIRED_INCLUDES ${FFI_INCLUDE_PATH})
- list(REMOVE_ITEM CMAKE_REQUIRED_LIBRARIES ${FFI_LIBRARY_PATH})
-else()
- unset(HAVE_FFI_FFI_H CACHE)
- unset(HAVE_FFI_H CACHE)
- unset(HAVE_FFI_CALL CACHE)
-endif( LLVM_ENABLE_FFI )
-
-check_symbol_exists(proc_pid_rusage "libproc.h" HAVE_PROC_PID_RUSAGE)
-
-# Whether we can use std::is_trivially_copyable to verify llvm::is_trivially_copyable.
-CHECK_CXX_SOURCE_COMPILES("
-#include <type_traits>
-struct T { int val; };
-static_assert(std::is_trivially_copyable<T>::value, \"ok\");
-int main() { return 0;}
-" HAVE_STD_IS_TRIVIALLY_COPYABLE)
-
-
-# Define LLVM_HAS_ATOMICS if gcc or MSVC atomic builtins are supported.
-include(CheckAtomic)
-
-if( LLVM_ENABLE_PIC )
- set(ENABLE_PIC 1)
-else()
- set(ENABLE_PIC 0)
- check_cxx_compiler_flag("-fno-pie" SUPPORTS_NO_PIE_FLAG)
- if(SUPPORTS_NO_PIE_FLAG)
- set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fno-pie")
- endif()
-endif()
-
-check_cxx_compiler_flag("-Wvariadic-macros" SUPPORTS_VARIADIC_MACROS_FLAG)
-check_cxx_compiler_flag("-Wgnu-zero-variadic-macro-arguments"
- SUPPORTS_GNU_ZERO_VARIADIC_MACRO_ARGUMENTS_FLAG)
-
-set(USE_NO_MAYBE_UNINITIALIZED 0)
-set(USE_NO_UNINITIALIZED 0)
-
-# Disable gcc's potentially uninitialized use analysis as it presents lots of
-# false positives.
-if (CMAKE_COMPILER_IS_GNUCXX)
- check_cxx_compiler_flag("-Wmaybe-uninitialized" HAS_MAYBE_UNINITIALIZED)
- if (HAS_MAYBE_UNINITIALIZED)
- set(USE_NO_MAYBE_UNINITIALIZED 1)
- else()
- # Only recent versions of gcc make the distinction between -Wuninitialized
- # and -Wmaybe-uninitialized. If -Wmaybe-uninitialized isn't supported, just
- # turn off all uninitialized use warnings.
- check_cxx_compiler_flag("-Wuninitialized" HAS_UNINITIALIZED)
- set(USE_NO_UNINITIALIZED ${HAS_UNINITIALIZED})
- endif()
-endif()
-
-# By default, we target the host, but this can be overridden at CMake
-# invocation time.
-include(GetHostTriple)
-get_host_triple(LLVM_INFERRED_HOST_TRIPLE)
-
-set(LLVM_HOST_TRIPLE "${LLVM_INFERRED_HOST_TRIPLE}" CACHE STRING
- "Host on which LLVM binaries will run")
-
-# Determine the native architecture.
-string(TOLOWER "${LLVM_TARGET_ARCH}" LLVM_NATIVE_ARCH)
-if( LLVM_NATIVE_ARCH STREQUAL "host" )
- string(REGEX MATCH "^[^-]*" LLVM_NATIVE_ARCH ${LLVM_HOST_TRIPLE})
-endif ()
-
-if (LLVM_NATIVE_ARCH MATCHES "i[2-6]86")
- set(LLVM_NATIVE_ARCH X86)
-elseif (LLVM_NATIVE_ARCH STREQUAL "x86")
- set(LLVM_NATIVE_ARCH X86)
-elseif (LLVM_NATIVE_ARCH STREQUAL "amd64")
- set(LLVM_NATIVE_ARCH X86)
-elseif (LLVM_NATIVE_ARCH STREQUAL "x86_64")
- set(LLVM_NATIVE_ARCH X86)
-elseif (LLVM_NATIVE_ARCH MATCHES "sparc")
- set(LLVM_NATIVE_ARCH Sparc)
-elseif (LLVM_NATIVE_ARCH MATCHES "sparc64")
- set(LLVM_NATIVE_ARCH Sparc)
-elseif (LLVM_NATIVE_ARCH MATCHES "ppc")
- set(LLVM_NATIVE_ARCH PowerPC)
-elseif (LLVM_NATIVE_ARCH MATCHES "powerpc")
- set(LLVM_NATIVE_ARCH PowerPC)
-elseif (LLVM_NATIVE_ARCH MATCHES "ppc64")
- set(LLVM_NATIVE_ARCH PowerPC)
-elseif (LLVM_NATIVE_ARCH MATCHES "ppc64le")
- set(LLVM_NATIVE_ARCH PowerPC)
-elseif (LLVM_NATIVE_ARCH MATCHES "aarch64")
- set(LLVM_NATIVE_ARCH AArch64)
-elseif (LLVM_NATIVE_ARCH MATCHES "arm64")
- set(LLVM_NATIVE_ARCH AArch64)
-elseif (LLVM_NATIVE_ARCH MATCHES "arm")
- set(LLVM_NATIVE_ARCH ARM)
-elseif (LLVM_NATIVE_ARCH MATCHES "avr")
- set(LLVM_NATIVE_ARCH AVR)
-elseif (LLVM_NATIVE_ARCH MATCHES "mips")
- set(LLVM_NATIVE_ARCH Mips)
-elseif (LLVM_NATIVE_ARCH MATCHES "xcore")
- set(LLVM_NATIVE_ARCH XCore)
-elseif (LLVM_NATIVE_ARCH MATCHES "msp430")
- set(LLVM_NATIVE_ARCH MSP430)
-elseif (LLVM_NATIVE_ARCH MATCHES "hexagon")
- set(LLVM_NATIVE_ARCH Hexagon)
-elseif (LLVM_NATIVE_ARCH MATCHES "s390x")
- set(LLVM_NATIVE_ARCH SystemZ)
-elseif (LLVM_NATIVE_ARCH MATCHES "wasm32")
- set(LLVM_NATIVE_ARCH WebAssembly)
-elseif (LLVM_NATIVE_ARCH MATCHES "wasm64")
- set(LLVM_NATIVE_ARCH WebAssembly)
-elseif (LLVM_NATIVE_ARCH MATCHES "riscv32")
- set(LLVM_NATIVE_ARCH RISCV)
-elseif (LLVM_NATIVE_ARCH MATCHES "riscv64")
- set(LLVM_NATIVE_ARCH RISCV)
-elseif (LLVM_NATIVE_ARCH STREQUAL "m68k")
- set(LLVM_NATIVE_ARCH M68k)
-else ()
- message(FATAL_ERROR "Unknown architecture ${LLVM_NATIVE_ARCH}")
-endif ()
-
-# If build targets includes "host" or "Native", then replace with native architecture.
-foreach (NATIVE_KEYWORD host Native)
- list(FIND LLVM_TARGETS_TO_BUILD ${NATIVE_KEYWORD} idx)
- if( NOT idx LESS 0 )
- list(REMOVE_AT LLVM_TARGETS_TO_BUILD ${idx})
- list(APPEND LLVM_TARGETS_TO_BUILD ${LLVM_NATIVE_ARCH})
- list(REMOVE_DUPLICATES LLVM_TARGETS_TO_BUILD)
- endif()
-endforeach()
-
-list(FIND LLVM_TARGETS_TO_BUILD ${LLVM_NATIVE_ARCH} NATIVE_ARCH_IDX)
-if (NATIVE_ARCH_IDX EQUAL -1)
- message(STATUS
- "Native target ${LLVM_NATIVE_ARCH} is not selected; lli will not JIT code")
-else ()
- message(STATUS "Native target architecture is ${LLVM_NATIVE_ARCH}")
- set(LLVM_NATIVE_TARGET LLVMInitialize${LLVM_NATIVE_ARCH}Target)
- set(LLVM_NATIVE_TARGETINFO LLVMInitialize${LLVM_NATIVE_ARCH}TargetInfo)
- set(LLVM_NATIVE_TARGETMC LLVMInitialize${LLVM_NATIVE_ARCH}TargetMC)
- set(LLVM_NATIVE_ASMPRINTER LLVMInitialize${LLVM_NATIVE_ARCH}AsmPrinter)
-
- # We don't have an ASM parser for all architectures yet.
- if (EXISTS ${PROJECT_SOURCE_DIR}/lib/Target/${LLVM_NATIVE_ARCH}/AsmParser/CMakeLists.txt)
- set(LLVM_NATIVE_ASMPARSER LLVMInitialize${LLVM_NATIVE_ARCH}AsmParser)
- endif ()
-
- # We don't have an disassembler for all architectures yet.
- if (EXISTS ${PROJECT_SOURCE_DIR}/lib/Target/${LLVM_NATIVE_ARCH}/Disassembler/CMakeLists.txt)
- set(LLVM_NATIVE_DISASSEMBLER LLVMInitialize${LLVM_NATIVE_ARCH}Disassembler)
- endif ()
-endif ()
-
-if( MSVC )
- set(SHLIBEXT ".lib")
- set(stricmp "_stricmp")
- set(strdup "_strdup")
-
- # See if the DIA SDK is available and usable.
- set(MSVC_DIA_SDK_DIR "$ENV{VSINSTALLDIR}DIA SDK" CACHE PATH
- "Path to the DIA SDK")
-
- # Due to a bug in MSVC 2013's installation software, it is possible
- # for MSVC 2013 to write the DIA SDK into the Visual Studio 2012
- # install directory. If this happens, the installation is corrupt
- # and there's nothing we can do. It happens with enough frequency
- # though that we should handle it. We do so by simply checking that
- # the DIA SDK folder exists. Should this happen you will need to
- # uninstall VS 2012 and then re-install VS 2013.
- if (IS_DIRECTORY "${MSVC_DIA_SDK_DIR}")
- set(HAVE_DIA_SDK 1)
- else()
- set(HAVE_DIA_SDK 0)
- endif()
-
- option(LLVM_ENABLE_DIA_SDK "Use MSVC DIA SDK for debugging if available."
- ${HAVE_DIA_SDK})
-
- if(LLVM_ENABLE_DIA_SDK AND NOT HAVE_DIA_SDK)
- message(FATAL_ERROR "DIA SDK not found. If you have both VS 2012 and 2013 installed, you may need to uninstall the former and re-install the latter afterwards.")
- endif()
-else()
- set(LLVM_ENABLE_DIA_SDK 0)
-endif( MSVC )
-
-# FIXME: Signal handler return type, currently hardcoded to 'void'
-set(RETSIGTYPE void)
-
-if( LLVM_ENABLE_THREADS )
- # Check if threading primitives aren't supported on this platform
- if( NOT HAVE_PTHREAD_H AND NOT WIN32 )
- set(LLVM_ENABLE_THREADS 0)
- endif()
-endif()
-
-if( LLVM_ENABLE_THREADS )
- message(STATUS "Threads enabled.")
-else( LLVM_ENABLE_THREADS )
- message(STATUS "Threads disabled.")
-endif()
-
-if (LLVM_ENABLE_DOXYGEN)
- message(STATUS "Doxygen enabled.")
- find_package(Doxygen REQUIRED)
-
- if (DOXYGEN_FOUND)
- # If we find doxygen and we want to enable doxygen by default create a
- # global aggregate doxygen target for generating llvm and any/all
- # subprojects doxygen documentation.
- if (LLVM_BUILD_DOCS)
- add_custom_target(doxygen ALL)
- endif()
-
- option(LLVM_DOXYGEN_EXTERNAL_SEARCH "Enable doxygen external search." OFF)
- if (LLVM_DOXYGEN_EXTERNAL_SEARCH)
- set(LLVM_DOXYGEN_SEARCHENGINE_URL "" CACHE STRING "URL to use for external search.")
- set(LLVM_DOXYGEN_SEARCH_MAPPINGS "" CACHE STRING "Doxygen Search Mappings")
- endif()
- endif()
-else()
- message(STATUS "Doxygen disabled.")
-endif()
-
-set(LLVM_BINDINGS "")
-find_program(GO_EXECUTABLE NAMES go DOC "go executable")
-if(WIN32 OR NOT LLVM_ENABLE_BINDINGS)
- message(STATUS "Go bindings disabled.")
-else()
- if(GO_EXECUTABLE STREQUAL "GO_EXECUTABLE-NOTFOUND")
- message(STATUS "Go bindings disabled.")
- else()
- execute_process(COMMAND ${GO_EXECUTABLE} run ${PROJECT_SOURCE_DIR}/bindings/go/conftest.go
- RESULT_VARIABLE GO_CONFTEST)
- if(GO_CONFTEST STREQUAL "0")
- set(LLVM_BINDINGS "${LLVM_BINDINGS} go")
- message(STATUS "Go bindings enabled.")
- else()
- message(STATUS "Go bindings disabled, need at least Go 1.2.")
- endif()
- endif()
-endif()
-
-find_program(GOLD_EXECUTABLE NAMES ${LLVM_DEFAULT_TARGET_TRIPLE}-ld.gold ld.gold ${LLVM_DEFAULT_TARGET_TRIPLE}-ld ld DOC "The gold linker")
-set(LLVM_BINUTILS_INCDIR "" CACHE PATH
- "PATH to binutils/include containing plugin-api.h for gold plugin.")
-
-if(CMAKE_GENERATOR STREQUAL "Ninja")
- execute_process(COMMAND ${CMAKE_MAKE_PROGRAM} --version
- OUTPUT_VARIABLE NINJA_VERSION
- OUTPUT_STRIP_TRAILING_WHITESPACE)
- set(NINJA_VERSION ${NINJA_VERSION} CACHE STRING "Ninja version number" FORCE)
- message(STATUS "Ninja version: ${NINJA_VERSION}")
-endif()
-
-if(CMAKE_GENERATOR STREQUAL "Ninja" AND
- NOT "${NINJA_VERSION}" VERSION_LESS "1.9.0" AND
- CMAKE_HOST_APPLE AND CMAKE_HOST_SYSTEM_VERSION VERSION_GREATER "15.6.0")
- set(LLVM_TOUCH_STATIC_LIBRARIES ON)
-endif()
-
-if(CMAKE_HOST_APPLE AND APPLE)
- if(NOT CMAKE_XCRUN)
- find_program(CMAKE_XCRUN NAMES xcrun)
- endif()
- if(CMAKE_XCRUN)
- execute_process(COMMAND ${CMAKE_XCRUN} -find ld
- OUTPUT_VARIABLE LD64_EXECUTABLE
- OUTPUT_STRIP_TRAILING_WHITESPACE)
- else()
- find_program(LD64_EXECUTABLE NAMES ld DOC "The ld64 linker")
- endif()
-
- if(LD64_EXECUTABLE)
- set(LD64_EXECUTABLE ${LD64_EXECUTABLE} CACHE PATH "ld64 executable")
- message(STATUS "Found ld64 - ${LD64_EXECUTABLE}")
- endif()
-endif()
-
-# Keep the version requirements in sync with bindings/ocaml/README.txt.
-include(FindOCaml)
-include(AddOCaml)
-if(WIN32 OR NOT LLVM_ENABLE_BINDINGS)
- message(STATUS "OCaml bindings disabled.")
-else()
- find_package(OCaml)
- if( NOT OCAML_FOUND )
- message(STATUS "OCaml bindings disabled.")
- else()
- if( OCAML_VERSION VERSION_LESS "4.00.0" )
- message(STATUS "OCaml bindings disabled, need OCaml >=4.00.0.")
- else()
- find_ocamlfind_package(ctypes VERSION 0.4 OPTIONAL)
- if( HAVE_OCAML_CTYPES )
- message(STATUS "OCaml bindings enabled.")
- find_ocamlfind_package(oUnit VERSION 2 OPTIONAL)
- set(LLVM_BINDINGS "${LLVM_BINDINGS} ocaml")
-
- set(LLVM_OCAML_INSTALL_PATH "${OCAML_STDLIB_PATH}" CACHE STRING
- "Install directory for LLVM OCaml packages")
- else()
- message(STATUS "OCaml bindings disabled, need ctypes >=0.4.")
- endif()
- endif()
- endif()
-endif()
-
-string(REPLACE " " ";" LLVM_BINDINGS_LIST "${LLVM_BINDINGS}")
-
-function(find_python_module module)
- string(REPLACE "." "_" module_name ${module})
- string(TOUPPER ${module_name} module_upper)
- set(FOUND_VAR PY_${module_upper}_FOUND)
- if (DEFINED ${FOUND_VAR})
- return()
- endif()
-
- execute_process(COMMAND "${Python3_EXECUTABLE}" "-c" "import ${module}"
- RESULT_VARIABLE status
- ERROR_QUIET)
-
- if(status)
- set(${FOUND_VAR} OFF CACHE BOOL "Failed to find python module '${module}'")
- message(STATUS "Could NOT find Python module ${module}")
- else()
- set(${FOUND_VAR} ON CACHE BOOL "Found python module '${module}'")
- message(STATUS "Found Python module ${module}")
- endif()
-endfunction()
-
-set (PYTHON_MODULES
- pygments
- # Some systems still don't have pygments.lexers.c_cpp which was introduced in
- # version 2.0 in 2014...
- pygments.lexers.c_cpp
- yaml
- )
-foreach(module ${PYTHON_MODULES})
- find_python_module(${module})
-endforeach()
-
-if(PY_PYGMENTS_FOUND AND PY_PYGMENTS_LEXERS_C_CPP_FOUND AND PY_YAML_FOUND)
- set (LLVM_HAVE_OPT_VIEWER_MODULES 1)
-else()
- set (LLVM_HAVE_OPT_VIEWER_MODULES 0)
-endif()
Index: create-13.0.0-llvm-ppc64-patch/llvm-13.0.0-new/llvm/cmake
===================================================================
--- create-13.0.0-llvm-ppc64-patch/llvm-13.0.0-new/llvm/cmake (revision 39)
+++ create-13.0.0-llvm-ppc64-patch/llvm-13.0.0-new/llvm/cmake (nonexistent)
Property changes on: create-13.0.0-llvm-ppc64-patch/llvm-13.0.0-new/llvm/cmake
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-llvm-ppc64-patch/llvm-13.0.0-new/llvm
===================================================================
--- create-13.0.0-llvm-ppc64-patch/llvm-13.0.0-new/llvm (revision 39)
+++ create-13.0.0-llvm-ppc64-patch/llvm-13.0.0-new/llvm (nonexistent)
Property changes on: create-13.0.0-llvm-ppc64-patch/llvm-13.0.0-new/llvm
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-llvm-ppc64-patch/llvm-13.0.0-new
===================================================================
--- create-13.0.0-llvm-ppc64-patch/llvm-13.0.0-new (revision 39)
+++ create-13.0.0-llvm-ppc64-patch/llvm-13.0.0-new (nonexistent)
Property changes on: create-13.0.0-llvm-ppc64-patch/llvm-13.0.0-new
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-llvm-ppc64-patch
===================================================================
--- create-13.0.0-llvm-ppc64-patch (revision 39)
+++ create-13.0.0-llvm-ppc64-patch (nonexistent)
Property changes on: create-13.0.0-llvm-ppc64-patch
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-clang-set-revision-patch/file.list
===================================================================
--- create-15.0.4-clang-set-revision-patch/file.list (revision 39)
+++ create-15.0.4-clang-set-revision-patch/file.list (nonexistent)
@@ -1 +0,0 @@
-llvm-15.0.4/clang/lib/Basic/Version.cpp
Index: create-15.0.4-clang-set-revision-patch/llvm-15.0.4-new/clang/lib/Basic/Version.cpp
===================================================================
--- create-15.0.4-clang-set-revision-patch/llvm-15.0.4-new/clang/lib/Basic/Version.cpp (revision 39)
+++ create-15.0.4-clang-set-revision-patch/llvm-15.0.4-new/clang/lib/Basic/Version.cpp (nonexistent)
@@ -1,106 +0,0 @@
-//===- Version.cpp - Clang Version Number -----------------------*- C++ -*-===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-//
-// This file defines several version-related utility functions for Clang.
-//
-//===----------------------------------------------------------------------===//
-
-#include "clang/Basic/Version.h"
-#include "clang/Basic/LLVM.h"
-#include "clang/Config/config.h"
-#include "llvm/Support/raw_ostream.h"
-#include <cstdlib>
-#include <cstring>
-
-#include "VCSVersion.inc"
-
-namespace clang {
-
-std::string getClangRepositoryPath() {
- return "";
-}
-
-std::string getLLVMRepositoryPath() {
- return "";
-}
-
-std::string getClangRevision() {
- return "";
-}
-
-std::string getLLVMRevision() {
- return "";
-}
-
-std::string getClangFullRepositoryVersion() {
- std::string buf;
- llvm::raw_string_ostream OS(buf);
- std::string Path = getClangRepositoryPath();
- std::string Revision = getClangRevision();
- if (!Path.empty() || !Revision.empty()) {
- OS << '(';
- if (!Path.empty())
- OS << Path;
- if (!Revision.empty()) {
- if (!Path.empty())
- OS << ' ';
- OS << Revision;
- }
- OS << ')';
- }
- // Support LLVM in a separate repository.
- std::string LLVMRev = getLLVMRevision();
- if (!LLVMRev.empty() && LLVMRev != Revision) {
- OS << " (";
- std::string LLVMRepo = getLLVMRepositoryPath();
- if (!LLVMRepo.empty())
- OS << LLVMRepo << ' ';
- OS << LLVMRev << ')';
- }
- return buf;
-}
-
-std::string getClangFullVersion() {
- return getClangToolFullVersion("clang");
-}
-
-std::string getClangToolFullVersion(StringRef ToolName) {
- std::string buf;
- llvm::raw_string_ostream OS(buf);
-#ifdef CLANG_VENDOR
- OS << CLANG_VENDOR;
-#endif
- OS << ToolName << " version " CLANG_VERSION_STRING;
-
- std::string repo = getClangFullRepositoryVersion();
- if (!repo.empty()) {
- OS << " " << repo;
- }
-
- return buf;
-}
-
-std::string getClangFullCPPVersion() {
- // The version string we report in __VERSION__ is just a compacted version of
- // the one we report on the command line.
- std::string buf;
- llvm::raw_string_ostream OS(buf);
-#ifdef CLANG_VENDOR
- OS << CLANG_VENDOR;
-#endif
- OS << "Clang " CLANG_VERSION_STRING;
-
- std::string repo = getClangFullRepositoryVersion();
- if (!repo.empty()) {
- OS << " " << repo;
- }
-
- return buf;
-}
-
-} // end namespace clang
Index: create-15.0.4-clang-set-revision-patch/llvm-15.0.4-new/clang/lib/Basic
===================================================================
--- create-15.0.4-clang-set-revision-patch/llvm-15.0.4-new/clang/lib/Basic (revision 39)
+++ create-15.0.4-clang-set-revision-patch/llvm-15.0.4-new/clang/lib/Basic (nonexistent)
Property changes on: create-15.0.4-clang-set-revision-patch/llvm-15.0.4-new/clang/lib/Basic
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-clang-set-revision-patch/llvm-15.0.4-new/clang/lib
===================================================================
--- create-15.0.4-clang-set-revision-patch/llvm-15.0.4-new/clang/lib (revision 39)
+++ create-15.0.4-clang-set-revision-patch/llvm-15.0.4-new/clang/lib (nonexistent)
Property changes on: create-15.0.4-clang-set-revision-patch/llvm-15.0.4-new/clang/lib
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-clang-set-revision-patch/llvm-15.0.4-new/clang
===================================================================
--- create-15.0.4-clang-set-revision-patch/llvm-15.0.4-new/clang (revision 39)
+++ create-15.0.4-clang-set-revision-patch/llvm-15.0.4-new/clang (nonexistent)
Property changes on: create-15.0.4-clang-set-revision-patch/llvm-15.0.4-new/clang
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-clang-set-revision-patch/llvm-15.0.4-new
===================================================================
--- create-15.0.4-clang-set-revision-patch/llvm-15.0.4-new (revision 39)
+++ create-15.0.4-clang-set-revision-patch/llvm-15.0.4-new (nonexistent)
Property changes on: create-15.0.4-clang-set-revision-patch/llvm-15.0.4-new
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-clang-set-revision-patch/create.patch.sh
===================================================================
--- create-15.0.4-clang-set-revision-patch/create.patch.sh (revision 39)
+++ create-15.0.4-clang-set-revision-patch/create.patch.sh (nonexistent)
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-VERSION=15.0.4
-
-tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
-mv llvm-$VERSION llvm-$VERSION-orig
-
-cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
-
-diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-clang-set-revision.patch
-
-mv llvm-$VERSION-clang-set-revision.patch ../patches
-
-rm -rf ./llvm-$VERSION
-rm -rf ./llvm-$VERSION-orig
Property changes on: create-15.0.4-clang-set-revision-patch/create.patch.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: create-15.0.4-clang-set-revision-patch
===================================================================
--- create-15.0.4-clang-set-revision-patch (revision 39)
+++ create-15.0.4-clang-set-revision-patch (nonexistent)
Property changes on: create-15.0.4-clang-set-revision-patch
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-openmp-perl-patch/file.list
===================================================================
--- create-15.0.4-openmp-perl-patch/file.list (revision 39)
+++ create-15.0.4-openmp-perl-patch/file.list (nonexistent)
@@ -1,2 +0,0 @@
-llvm-15.0.4/openmp/libomptarget/cmake/Modules/LibomptargetGetDependencies.cmake
-llvm-15.0.4/openmp/runtime/cmake/config-ix.cmake
Index: create-15.0.4-openmp-perl-patch/llvm-15.0.4-new/openmp/runtime/cmake/config-ix.cmake
===================================================================
--- create-15.0.4-openmp-perl-patch/llvm-15.0.4-new/openmp/runtime/cmake/config-ix.cmake (revision 39)
+++ create-15.0.4-openmp-perl-patch/llvm-15.0.4-new/openmp/runtime/cmake/config-ix.cmake (nonexistent)
@@ -1,360 +0,0 @@
-#
-#//===----------------------------------------------------------------------===//
-#//
-#// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-#// See https://llvm.org/LICENSE.txt for license information.
-#// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-#//
-#//===----------------------------------------------------------------------===//
-#
-
-include(CheckCCompilerFlag)
-include(CheckCSourceCompiles)
-include(CheckCXXSourceCompiles)
-include(CheckCXXCompilerFlag)
-include(CheckIncludeFile)
-include(CheckLibraryExists)
-include(CheckIncludeFiles)
-include(CheckSymbolExists)
-include(LibompCheckLinkerFlag)
-include(LibompCheckFortranFlag)
-
-# Check for versioned symbols
-function(libomp_check_version_symbols retval)
- set(source_code
- "#include <stdio.h>
- void func1() { printf(\"Hello\"); }
- void func2() { printf(\"World\"); }
- __asm__(\".symver func1, func@VER1\");
- __asm__(\".symver func2, func@VER2\");
- int main() {
- func1();
- func2();
- return 0;
- }")
- set(version_script_source "VER1 { }; VER2 { } VER1;")
- file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/__version_script.txt "${version_script_source}")
- set(CMAKE_REQUIRED_FLAGS -Wl,--version-script=${CMAKE_CURRENT_BINARY_DIR}/__version_script.txt)
- check_c_source_compiles("${source_code}" ${retval})
- set(${retval} ${${retval}} PARENT_SCOPE)
- file(REMOVE ${CMAKE_CURRENT_BINARY_DIR}/__version_script.txt)
-endfunction()
-
-# Includes the architecture flag in both compile and link phase
-function(libomp_check_architecture_flag flag retval)
- set(CMAKE_REQUIRED_FLAGS "${flag}")
- check_c_compiler_flag("${flag}" ${retval})
- set(${retval} ${${retval}} PARENT_SCOPE)
-endfunction()
-
-# Checking CXX, Linker Flags
-check_cxx_compiler_flag(-fno-exceptions LIBOMP_HAVE_FNO_EXCEPTIONS_FLAG)
-check_cxx_compiler_flag(-fno-rtti LIBOMP_HAVE_FNO_RTTI_FLAG)
-check_cxx_compiler_flag(-Wno-class-memaccess LIBOMP_HAVE_WNO_CLASS_MEMACCESS_FLAG)
-check_cxx_compiler_flag(-Wno-covered-switch-default LIBOMP_HAVE_WNO_COVERED_SWITCH_DEFAULT_FLAG)
-check_cxx_compiler_flag(-Wno-frame-address LIBOMP_HAVE_WNO_FRAME_ADDRESS_FLAG)
-check_cxx_compiler_flag(-Wno-strict-aliasing LIBOMP_HAVE_WNO_STRICT_ALIASING_FLAG)
-check_cxx_compiler_flag(-Wstringop-overflow=0 LIBOMP_HAVE_WSTRINGOP_OVERFLOW_FLAG)
-check_cxx_compiler_flag(-Wno-stringop-truncation LIBOMP_HAVE_WNO_STRINGOP_TRUNCATION_FLAG)
-check_cxx_compiler_flag(-Wno-switch LIBOMP_HAVE_WNO_SWITCH_FLAG)
-check_cxx_compiler_flag(-Wno-uninitialized LIBOMP_HAVE_WNO_UNINITIALIZED_FLAG)
-check_cxx_compiler_flag(-Wno-unused-but-set-variable LIBOMP_HAVE_WNO_UNUSED_BUT_SET_VARIABLE_FLAG)
-check_cxx_compiler_flag(-Wno-return-type-c-linkage LIBOMP_HAVE_WNO_RETURN_TYPE_C_LINKAGE_FLAG)
-check_cxx_compiler_flag(-Wno-cast-qual LIBOMP_HAVE_WNO_CAST_QUAL_FLAG)
-check_cxx_compiler_flag(-Wno-int-to-void-pointer-cast LIBOMP_HAVE_WNO_INT_TO_VOID_POINTER_CAST_FLAG)
-# check_cxx_compiler_flag(-Wconversion LIBOMP_HAVE_WCONVERSION_FLAG)
-check_cxx_compiler_flag(-msse2 LIBOMP_HAVE_MSSE2_FLAG)
-check_cxx_compiler_flag(-ftls-model=initial-exec LIBOMP_HAVE_FTLS_MODEL_FLAG)
-libomp_check_architecture_flag(-mmic LIBOMP_HAVE_MMIC_FLAG)
-libomp_check_architecture_flag(-m32 LIBOMP_HAVE_M32_FLAG)
-if(WIN32)
- if(MSVC)
- # Check Windows MSVC style flags.
- check_cxx_compiler_flag(/EHsc LIBOMP_HAVE_EHSC_FLAG)
- check_cxx_compiler_flag(/GS LIBOMP_HAVE_GS_FLAG)
- check_cxx_compiler_flag(/Oy- LIBOMP_HAVE_Oy__FLAG)
- check_cxx_compiler_flag(/arch:SSE2 LIBOMP_HAVE_ARCH_SSE2_FLAG)
- check_cxx_compiler_flag(/Qsafeseh LIBOMP_HAVE_QSAFESEH_FLAG)
- endif()
- check_cxx_compiler_flag(-mrtm LIBOMP_HAVE_MRTM_FLAG)
- # It is difficult to create a dummy masm assembly file
- # and then check the MASM assembler to see if these flags exist and work,
- # so we assume they do for Windows.
- set(LIBOMP_HAVE_SAFESEH_MASM_FLAG TRUE)
- set(LIBOMP_HAVE_COFF_MASM_FLAG TRUE)
- # Change Windows flags /MDx to /MTx
- foreach(libomp_lang IN ITEMS C CXX)
- foreach(libomp_btype IN ITEMS DEBUG RELWITHDEBINFO RELEASE MINSIZEREL)
- string(REPLACE "/MD" "/MT"
- CMAKE_${libomp_lang}_FLAGS_${libomp_btype}
- "${CMAKE_${libomp_lang}_FLAGS_${libomp_btype}}"
- )
- endforeach()
- endforeach()
-else()
- # It is difficult to create a dummy assembly file that compiles into an
- # executable for every architecture and then check the C compiler to
- # see if -x assembler-with-cpp exists and works, so we assume it does for non-Windows.
- set(LIBOMP_HAVE_X_ASSEMBLER_WITH_CPP_FLAG TRUE)
-endif()
-if(${LIBOMP_FORTRAN_MODULES})
- libomp_check_fortran_flag(-m32 LIBOMP_HAVE_M32_FORTRAN_FLAG)
-endif()
-
-# Check for Unix shared memory
-check_symbol_exists(shm_open "sys/mman.h" LIBOMP_HAVE_SHM_OPEN_NO_LRT)
-if (NOT LIBOMP_HAVE_SHM_OPEN_NO_LRT)
- set(CMAKE_REQUIRED_LIBRARIES -lrt)
- check_symbol_exists(shm_open "sys/mman.h" LIBOMP_HAVE_SHM_OPEN_WITH_LRT)
- set(CMAKE_REQUIRED_LIBRARIES)
-endif()
-
-# Check for aligned memory allocator function
-check_include_file(xmmintrin.h LIBOMP_HAVE_XMMINTRIN_H)
-set(OLD_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
-if (LIBOMP_HAVE_XMMINTRIN_H)
- set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -DLIBOMP_HAVE_XMMINTRIN_H")
-endif()
-set(source_code "// check for _mm_malloc
- #ifdef LIBOMP_HAVE_XMMINTRIN_H
- #include <xmmintrin.h>
- #endif
- int main() { void *ptr = _mm_malloc(sizeof(int) * 1000, 64); _mm_free(ptr); return 0; }")
-check_cxx_source_compiles("${source_code}" LIBOMP_HAVE__MM_MALLOC)
-set(CMAKE_REQUIRED_FLAGS ${OLD_CMAKE_REQUIRED_FLAGS})
-check_symbol_exists(aligned_alloc "stdlib.h" LIBOMP_HAVE_ALIGNED_ALLOC)
-check_symbol_exists(posix_memalign "stdlib.h" LIBOMP_HAVE_POSIX_MEMALIGN)
-check_symbol_exists(_aligned_malloc "malloc.h" LIBOMP_HAVE__ALIGNED_MALLOC)
-
-# Check linker flags
-if(WIN32)
- libomp_check_linker_flag(/SAFESEH LIBOMP_HAVE_SAFESEH_FLAG)
-elseif(NOT APPLE)
- libomp_check_linker_flag(-Wl,-x LIBOMP_HAVE_X_FLAG)
- libomp_check_linker_flag(-Wl,--warn-shared-textrel LIBOMP_HAVE_WARN_SHARED_TEXTREL_FLAG)
- libomp_check_linker_flag(-Wl,--as-needed LIBOMP_HAVE_AS_NEEDED_FLAG)
- libomp_check_linker_flag("-Wl,--version-script=${LIBOMP_SRC_DIR}/exports_so.txt" LIBOMP_HAVE_VERSION_SCRIPT_FLAG)
- libomp_check_linker_flag(-static-libgcc LIBOMP_HAVE_STATIC_LIBGCC_FLAG)
- libomp_check_linker_flag(-Wl,-z,noexecstack LIBOMP_HAVE_Z_NOEXECSTACK_FLAG)
-endif()
-
-# Check Intel(R) C Compiler specific flags
-if(CMAKE_C_COMPILER_ID STREQUAL "Intel" OR CMAKE_C_COMPILER_ID STREQUAL "IntelLLVM")
- check_cxx_compiler_flag(/Qlong_double LIBOMP_HAVE_LONG_DOUBLE_FLAG)
- check_cxx_compiler_flag(/Qdiag-disable:177 LIBOMP_HAVE_DIAG_DISABLE_177_FLAG)
- check_cxx_compiler_flag(/Qinline-min-size=1 LIBOMP_HAVE_INLINE_MIN_SIZE_FLAG)
- check_cxx_compiler_flag(-Qoption,cpp,--extended_float_types LIBOMP_HAVE_EXTENDED_FLOAT_TYPES_FLAG)
- check_cxx_compiler_flag(-falign-stack=maintain-16-byte LIBOMP_HAVE_FALIGN_STACK_FLAG)
- check_cxx_compiler_flag("-opt-streaming-stores never" LIBOMP_HAVE_OPT_STREAMING_STORES_FLAG)
- libomp_check_linker_flag(-static-intel LIBOMP_HAVE_STATIC_INTEL_FLAG)
- libomp_check_linker_flag(-no-intel-extensions LIBOMP_HAVE_NO_INTEL_EXTENSIONS_FLAG)
- check_library_exists(irc_pic _intel_fast_memcpy "" LIBOMP_HAVE_IRC_PIC_LIBRARY)
-endif()
-
-# Checking Threading requirements
-find_package(Threads REQUIRED)
-if(WIN32)
- if(NOT CMAKE_USE_WIN32_THREADS_INIT)
- libomp_error_say("Need Win32 thread interface on Windows.")
- endif()
-else()
- if(NOT CMAKE_USE_PTHREADS_INIT)
- libomp_error_say("Need pthread interface on Unix-like systems.")
- endif()
-endif()
-
-# Checking for x86-specific waitpkg and rtm attribute and intrinsics
-if (IA32 OR INTEL64)
- check_include_file(immintrin.h LIBOMP_HAVE_IMMINTRIN_H)
- if (NOT LIBOMP_HAVE_IMMINTRIN_H)
- check_include_file(intrin.h LIBOMP_HAVE_INTRIN_H)
- endif()
- check_cxx_source_compiles("__attribute__((target(\"rtm\")))
- int main() {return 0;}" LIBOMP_HAVE_ATTRIBUTE_RTM)
- check_cxx_source_compiles("__attribute__((target(\"waitpkg\")))
- int main() {return 0;}" LIBOMP_HAVE_ATTRIBUTE_WAITPKG)
- libomp_append(CMAKE_REQUIRED_DEFINITIONS -DIMMINTRIN_H LIBOMP_HAVE_IMMINTRIN_H)
- libomp_append(CMAKE_REQUIRED_DEFINITIONS -DINTRIN_H LIBOMP_HAVE_INTRIN_H)
- libomp_append(CMAKE_REQUIRED_DEFINITIONS -DATTRIBUTE_WAITPKG LIBOMP_HAVE_ATTRIBUTE_WAITPKG)
- libomp_append(CMAKE_REQUIRED_DEFINITIONS -DATTRIBUTE_RTM LIBOMP_HAVE_ATTRIBUTE_RTM)
- set(source_code "// check for attribute and wait pkg intrinsics
- #ifdef IMMINTRIN_H
- #include <immintrin.h>
- #endif
- #ifdef INTRIN_H
- #include <intrin.h>
- #endif
- #ifdef ATTRIBUTE_WAITPKG
- __attribute__((target(\"waitpkg\")))
- #endif
- static inline int __kmp_umwait(unsigned hint, unsigned long long counter) {
- return _umwait(hint, counter);
- }
- int main() { int a = __kmp_umwait(0, 1000); return a; }")
- check_cxx_source_compiles("${source_code}" LIBOMP_HAVE_WAITPKG_INTRINSICS)
- set(OLD_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
- if (LIBOMP_HAVE_MRTM_FLAG)
- set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -mrtm")
- endif()
- set(source_code "// check for attribute rtm and rtm intrinsics
- #ifdef IMMINTRIN_H
- #include <immintrin.h>
- #endif
- #ifdef INTRIN_H
- #include <intrin.h>
- #endif
- #ifdef ATTRIBUTE_RTM
- __attribute__((target(\"rtm\")))
- #endif
- static inline int __kmp_xbegin() {
- return _xbegin();
- }
- int main() { int a = __kmp_xbegin(); return a; }")
- check_cxx_source_compiles("${source_code}" LIBOMP_HAVE_RTM_INTRINSICS)
- set(CMAKE_REQUIRED_DEFINITIONS)
- set(CMAKE_REQUIRED_FLAGS ${OLD_CMAKE_REQUIRED_FLAGS})
-endif()
-
-# Find perl executable
-# Perl is used to create omp.h (and other headers) along with kmp_i18n_id.inc and kmp_i18n_default.inc
-#find_package(Perl REQUIRED)
-# The perl scripts take the --os=/--arch= flags which expect a certain format for operating systems and arch's.
-# Until the perl scripts are removed, the most portable way to handle this is to have all operating systems that
-# are neither Windows nor Mac (Most Unix flavors) be considered lin to the perl scripts. This is rooted
-# in that all the Perl scripts check the operating system and will fail if it isn't "valid". This
-# temporary solution lets us avoid trying to enumerate all the possible OS values inside the Perl modules.
-if(WIN32)
- set(LIBOMP_PERL_SCRIPT_OS win)
-elseif(APPLE)
- set(LIBOMP_PERL_SCRIPT_OS mac)
-else()
- set(LIBOMP_PERL_SCRIPT_OS lin)
-endif()
-if(IA32)
- set(LIBOMP_PERL_SCRIPT_ARCH 32)
-elseif(MIC)
- set(LIBOMP_PERL_SCRIPT_ARCH mic)
-elseif(INTEL64)
- set(LIBOMP_PERL_SCRIPT_ARCH 32e)
-else()
- set(LIBOMP_PERL_SCRIPT_ARCH ${LIBOMP_ARCH})
-endif()
-
-# Checking features
-# Check if version symbol assembler directives are supported
-libomp_check_version_symbols(LIBOMP_HAVE_VERSION_SYMBOLS)
-
-# Check if quad precision types are available
-if(CMAKE_C_COMPILER_ID STREQUAL "GNU")
- set(LIBOMP_HAVE_QUAD_PRECISION TRUE)
-elseif(CMAKE_C_COMPILER_ID STREQUAL "Intel" OR CMAKE_C_COMPILER_ID STREQUAL "IntelLLVM")
- if(LIBOMP_HAVE_EXTENDED_FLOAT_TYPES_FLAG)
- set(LIBOMP_HAVE_QUAD_PRECISION TRUE)
- else()
- set(LIBOMP_HAVE_QUAD_PRECISION TRUE)
- endif()
-else()
- set(LIBOMP_HAVE_QUAD_PRECISION FALSE)
-endif()
-
-# Check if adaptive locks are available
-if((${IA32} OR ${INTEL64}) AND NOT MSVC)
- set(LIBOMP_HAVE_ADAPTIVE_LOCKS TRUE)
-else()
- set(LIBOMP_HAVE_ADAPTIVE_LOCKS FALSE)
-endif()
-
-# Check if stats-gathering is available
-if(${LIBOMP_STATS})
- check_c_source_compiles(
- "__thread int x;
- int main(int argc, char** argv)
- { x = argc; return x; }"
- LIBOMP_HAVE___THREAD)
- check_c_source_compiles(
- "int main(int argc, char** argv)
- { unsigned long long t = __builtin_readcyclecounter(); return 0; }"
- LIBOMP_HAVE___BUILTIN_READCYCLECOUNTER)
- if(NOT LIBOMP_HAVE___BUILTIN_READCYCLECOUNTER)
- if(${IA32} OR ${INTEL64} OR ${MIC})
- check_include_file(x86intrin.h LIBOMP_HAVE_X86INTRIN_H)
- libomp_append(CMAKE_REQUIRED_DEFINITIONS -DLIBOMP_HAVE_X86INTRIN_H LIBOMP_HAVE_X86INTRIN_H)
- check_c_source_compiles(
- "#ifdef LIBOMP_HAVE_X86INTRIN_H
- # include <x86intrin.h>
- #endif
- int main(int argc, char** argv) { unsigned long long t = __rdtsc(); return 0; }" LIBOMP_HAVE___RDTSC)
- set(CMAKE_REQUIRED_DEFINITIONS)
- endif()
- endif()
- if(LIBOMP_HAVE___THREAD AND (LIBOMP_HAVE___RDTSC OR LIBOMP_HAVE___BUILTIN_READCYCLECOUNTER))
- set(LIBOMP_HAVE_STATS TRUE)
- else()
- set(LIBOMP_HAVE_STATS FALSE)
- endif()
-endif()
-
-# Check if OMPT support is available
-# Currently, __builtin_frame_address() is required for OMPT
-# Weak attribute is required for Unices (except Darwin), LIBPSAPI is used for Windows
-check_c_source_compiles("int main(int argc, char** argv) {
- void* p = __builtin_frame_address(0);
- return 0;}" LIBOMP_HAVE___BUILTIN_FRAME_ADDRESS)
-check_c_source_compiles("__attribute__ ((weak)) int foo(int a) { return a*a; }
- int main(int argc, char** argv) {
- return foo(argc);}" LIBOMP_HAVE_WEAK_ATTRIBUTE)
-set(CMAKE_REQUIRED_LIBRARIES psapi)
-check_c_source_compiles("#include <windows.h>
- #include <psapi.h>
- int main(int artc, char** argv) {
- return EnumProcessModules(NULL, NULL, 0, NULL);
- }" LIBOMP_HAVE_PSAPI)
-set(CMAKE_REQUIRED_LIBRARIES)
-if(NOT LIBOMP_HAVE___BUILTIN_FRAME_ADDRESS)
- set(LIBOMP_HAVE_OMPT_SUPPORT FALSE)
-else()
- if( # hardware architecture supported?
- ((LIBOMP_ARCH STREQUAL x86_64) OR
- (LIBOMP_ARCH STREQUAL i386) OR
-# (LIBOMP_ARCH STREQUAL arm) OR
- (LIBOMP_ARCH STREQUAL aarch64) OR
- (LIBOMP_ARCH STREQUAL aarch64_a64fx) OR
- (LIBOMP_ARCH STREQUAL ppc64le) OR
- (LIBOMP_ARCH STREQUAL ppc64) OR
- (LIBOMP_ARCH STREQUAL riscv64))
- AND # OS supported?
- ((WIN32 AND LIBOMP_HAVE_PSAPI) OR APPLE OR (NOT WIN32 AND LIBOMP_HAVE_WEAK_ATTRIBUTE)))
- set(LIBOMP_HAVE_OMPT_SUPPORT TRUE)
- else()
- set(LIBOMP_HAVE_OMPT_SUPPORT FALSE)
- endif()
-endif()
-
-# Check if HWLOC support is available
-if(${LIBOMP_USE_HWLOC})
- find_path(LIBOMP_HWLOC_INCLUDE_DIR NAMES hwloc.h HINTS ${LIBOMP_HWLOC_INSTALL_DIR} PATH_SUFFIXES include)
- set(CMAKE_REQUIRED_INCLUDES ${LIBOMP_HWLOC_INCLUDE_DIR})
- check_include_file(hwloc.h LIBOMP_HAVE_HWLOC_H)
- set(CMAKE_REQUIRED_INCLUDES)
- find_library(LIBOMP_HWLOC_LIBRARY
- NAMES hwloc libhwloc
- HINTS ${LIBOMP_HWLOC_INSTALL_DIR}/lib)
- if(LIBOMP_HWLOC_LIBRARY)
- check_library_exists(${LIBOMP_HWLOC_LIBRARY} hwloc_topology_init
- ${LIBOMP_HWLOC_INSTALL_DIR}/lib LIBOMP_HAVE_LIBHWLOC)
- get_filename_component(LIBOMP_HWLOC_LIBRARY_DIR ${LIBOMP_HWLOC_LIBRARY} PATH)
- endif()
- if(LIBOMP_HAVE_HWLOC_H AND LIBOMP_HAVE_LIBHWLOC AND LIBOMP_HWLOC_LIBRARY)
- set(LIBOMP_HAVE_HWLOC TRUE)
- else()
- set(LIBOMP_HAVE_HWLOC FALSE)
- libomp_say("Could not find hwloc")
- endif()
-endif()
-
-# Check if ThreadSanitizer support is available
-if("${CMAKE_SYSTEM_NAME}" MATCHES "Linux" AND ${INTEL64})
- set(LIBOMP_HAVE_TSAN_SUPPORT TRUE)
-else()
- set(LIBOMP_HAVE_TSAN_SUPPORT FALSE)
-endif()
Index: create-15.0.4-openmp-perl-patch/llvm-15.0.4-new/openmp/runtime/cmake
===================================================================
--- create-15.0.4-openmp-perl-patch/llvm-15.0.4-new/openmp/runtime/cmake (revision 39)
+++ create-15.0.4-openmp-perl-patch/llvm-15.0.4-new/openmp/runtime/cmake (nonexistent)
Property changes on: create-15.0.4-openmp-perl-patch/llvm-15.0.4-new/openmp/runtime/cmake
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-openmp-perl-patch/llvm-15.0.4-new/openmp/runtime
===================================================================
--- create-15.0.4-openmp-perl-patch/llvm-15.0.4-new/openmp/runtime (revision 39)
+++ create-15.0.4-openmp-perl-patch/llvm-15.0.4-new/openmp/runtime (nonexistent)
Property changes on: create-15.0.4-openmp-perl-patch/llvm-15.0.4-new/openmp/runtime
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-openmp-perl-patch/llvm-15.0.4-new/openmp/libomptarget/cmake/Modules/LibomptargetGetDependencies.cmake
===================================================================
--- create-15.0.4-openmp-perl-patch/llvm-15.0.4-new/openmp/libomptarget/cmake/Modules/LibomptargetGetDependencies.cmake (revision 39)
+++ create-15.0.4-openmp-perl-patch/llvm-15.0.4-new/openmp/libomptarget/cmake/Modules/LibomptargetGetDependencies.cmake (nonexistent)
@@ -1,283 +0,0 @@
-#
-#//===----------------------------------------------------------------------===//
-#//
-#// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-#// See https://llvm.org/LICENSE.txt for license information.
-#// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-#//
-#//===----------------------------------------------------------------------===//
-#
-
-# Try to detect in the system several dependencies required by the different
-# components of libomptarget. These are the dependencies we have:
-#
-# libelf : required by some targets to handle the ELF files at runtime.
-# libffi : required to launch target kernels given function and argument
-# pointers.
-# CUDA : required to control offloading to NVIDIA GPUs.
-# VEOS : required to control offloading to NEC Aurora.
-
-include (FindPackageHandleStandardArgs)
-
-################################################################################
-# Looking for LLVM...
-################################################################################
-
-if (OPENMP_STANDALONE_BUILD)
- # Complete LLVM package is required for building libomptarget
- # in an out-of-tree mode.
- find_package(LLVM REQUIRED)
- message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}")
- message(STATUS "Using LLVM in: ${LLVM_DIR}")
- list(APPEND LIBOMPTARGET_LLVM_INCLUDE_DIRS ${LLVM_INCLUDE_DIRS})
- list(APPEND CMAKE_MODULE_PATH ${LLVM_CMAKE_DIR})
- include(AddLLVM)
- if(TARGET omptarget)
- message(FATAL_ERROR "CMake target 'omptarget' already exists. "
- "Use an LLVM installation that doesn't expose its 'omptarget' target.")
- endif()
-else()
- # Note that OPENMP_STANDALONE_BUILD is FALSE, when
- # openmp is built with -DLLVM_ENABLE_RUNTIMES="openmp" vs
- # -DLLVM_ENABLE_PROJECTS="openmp", but openmp build
- # is actually done as a standalone project build with many
- # LLVM CMake variables propagated to it.
- list(APPEND LIBOMPTARGET_LLVM_INCLUDE_DIRS
- ${LLVM_MAIN_INCLUDE_DIR} ${LLVM_BINARY_DIR}/include
- )
- message(STATUS
- "Using LLVM include directories: ${LIBOMPTARGET_LLVM_INCLUDE_DIRS}")
-endif()
-
-################################################################################
-# Looking for libelf...
-################################################################################
-
-find_path (
- LIBOMPTARGET_DEP_LIBELF_INCLUDE_DIR
- NAMES
- libelf.h
- PATHS
- /usr/include
- /usr/local/include
- /opt/local/include
- /sw/include
- ENV CPATH
- PATH_SUFFIXES
- libelf)
-
-find_library (
- LIBOMPTARGET_DEP_LIBELF_LIBRARIES
- NAMES
- elf
- PATHS
- /usr/lib
- /usr/local/lib
- /opt/local/lib
- /sw/lib
- ENV LIBRARY_PATH
- ENV LD_LIBRARY_PATH)
-
-set(LIBOMPTARGET_DEP_LIBELF_INCLUDE_DIRS ${LIBOMPTARGET_DEP_LIBELF_INCLUDE_DIR})
-find_package_handle_standard_args(
- LIBOMPTARGET_DEP_LIBELF
- DEFAULT_MSG
- LIBOMPTARGET_DEP_LIBELF_LIBRARIES
- LIBOMPTARGET_DEP_LIBELF_INCLUDE_DIRS)
-
-mark_as_advanced(
- LIBOMPTARGET_DEP_LIBELF_INCLUDE_DIRS
- LIBOMPTARGET_DEP_LIBELF_LIBRARIES)
-
-################################################################################
-# Looking for libffi...
-################################################################################
-#find_package(PkgConfig)
-
-pkg_check_modules(LIBOMPTARGET_SEARCH_LIBFFI QUIET libffi)
-
-find_path (
- LIBOMPTARGET_DEP_LIBFFI_INCLUDE_DIR
- NAMES
- ffi.h
- HINTS
- ${LIBOMPTARGET_SEARCH_LIBFFI_INCLUDEDIR}
- ${LIBOMPTARGET_SEARCH_LIBFFI_INCLUDE_DIRS}
- PATHS
- /usr/include
- /usr/local/include
- /opt/local/include
- /sw/include
- ENV CPATH)
-
-# Don't bother look for the library if the header files were not found.
-if (LIBOMPTARGET_DEP_LIBFFI_INCLUDE_DIR)
- find_library (
- LIBOMPTARGET_DEP_LIBFFI_LIBRARIES
- NAMES
- ffi
- HINTS
- ${LIBOMPTARGET_SEARCH_LIBFFI_LIBDIR}
- ${LIBOMPTARGET_SEARCH_LIBFFI_LIBRARY_DIRS}
- PATHS
- /usr/lib
- /usr/local/lib
- /opt/local/lib
- /sw/lib
- ENV LIBRARY_PATH
- ENV LD_LIBRARY_PATH)
-endif()
-
-set(LIBOMPTARGET_DEP_LIBFFI_INCLUDE_DIRS ${LIBOMPTARGET_DEP_LIBFFI_INCLUDE_DIR})
-find_package_handle_standard_args(
- LIBOMPTARGET_DEP_LIBFFI
- DEFAULT_MSG
- LIBOMPTARGET_DEP_LIBFFI_LIBRARIES
- LIBOMPTARGET_DEP_LIBFFI_INCLUDE_DIRS)
-
-mark_as_advanced(
- LIBOMPTARGET_DEP_LIBFFI_INCLUDE_DIRS
- LIBOMPTARGET_DEP_LIBFFI_LIBRARIES)
-
-################################################################################
-# Looking for CUDA...
-################################################################################
-if (CUDA_TOOLKIT_ROOT_DIR)
- set(LIBOMPTARGET_CUDA_TOOLKIT_ROOT_DIR_PRESET TRUE)
-endif()
-find_package(CUDA QUIET)
-
-# Try to get the highest Nvidia GPU architecture the system supports
-if (CUDA_FOUND)
- cuda_select_nvcc_arch_flags(CUDA_ARCH_FLAGS)
- string(REGEX MATCH "sm_([0-9]+)" CUDA_ARCH_MATCH_OUTPUT ${CUDA_ARCH_FLAGS})
- if (NOT DEFINED CUDA_ARCH_MATCH_OUTPUT OR "${CMAKE_MATCH_1}" LESS 35)
- libomptarget_warning_say("Setting Nvidia GPU architecture support for OpenMP target runtime library to sm_35 by default")
- set(LIBOMPTARGET_DEP_CUDA_ARCH "35")
- else()
- set(LIBOMPTARGET_DEP_CUDA_ARCH "${CMAKE_MATCH_1}")
- endif()
-endif()
-
-set(LIBOMPTARGET_DEP_CUDA_FOUND ${CUDA_FOUND})
-set(LIBOMPTARGET_DEP_CUDA_INCLUDE_DIRS ${CUDA_INCLUDE_DIRS})
-
-mark_as_advanced(
- LIBOMPTARGET_DEP_CUDA_FOUND
- LIBOMPTARGET_DEP_CUDA_INCLUDE_DIRS)
-
-################################################################################
-# Looking for CUDA Driver API... (needed for CUDA plugin)
-################################################################################
-
-find_library (
- LIBOMPTARGET_DEP_CUDA_DRIVER_LIBRARIES
- NAMES
- cuda
- PATHS
- /lib64)
-
-# There is a libcuda.so in lib64/stubs that can be used for linking.
-if (NOT LIBOMPTARGET_DEP_CUDA_DRIVER_LIBRARIES AND CUDA_FOUND)
- get_filename_component(CUDA_LIBDIR "${CUDA_cudart_static_LIBRARY}" DIRECTORY)
- find_library(
- LIBOMPTARGET_DEP_CUDA_DRIVER_LIBRARIES
- NAMES
- cuda
- HINTS
- "${CUDA_LIBDIR}/stubs")
-endif()
-
-find_package_handle_standard_args(
- LIBOMPTARGET_DEP_CUDA_DRIVER
- DEFAULT_MSG
- LIBOMPTARGET_DEP_CUDA_DRIVER_LIBRARIES)
-
-mark_as_advanced(LIBOMPTARGET_DEP_CUDA_DRIVER_LIBRARIES)
-
-################################################################################
-# Looking for VEO...
-################################################################################
-
-find_path (
- LIBOMPTARGET_DEP_VEO_INCLUDE_DIR
- NAMES
- ve_offload.h
- PATHS
- /usr/include
- /usr/local/include
- /opt/local/include
- /sw/include
- /opt/nec/ve/veos/include
- ENV CPATH
- PATH_SUFFIXES
- libveo)
-
-find_library (
- LIBOMPTARGET_DEP_VEO_LIBRARIES
- NAMES
- veo
- PATHS
- /usr/lib
- /usr/local/lib
- /opt/local/lib
- /sw/lib
- /opt/nec/ve/veos/lib64
- ENV LIBRARY_PATH
- ENV LD_LIBRARY_PATH)
-
-find_library(
- LIBOMPTARGET_DEP_VEOSINFO_LIBRARIES
- NAMES
- veosinfo
- PATHS
- /usr/lib
- /usr/local/lib
- /opt/local/lib
- /sw/lib
- /opt/nec/ve/veos/lib64
- ENV LIBRARY_PATH
- ENV LD_LIBRARY_PATH)
-
-set(LIBOMPTARGET_DEP_VEO_INCLUDE_DIRS ${LIBOMPTARGET_DEP_VEO_INCLUDE_DIR})
-find_package_handle_standard_args(
- LIBOMPTARGET_DEP_VEO
- DEFAULT_MSG
- LIBOMPTARGET_DEP_VEO_LIBRARIES
- LIBOMPTARGET_DEP_VEOSINFO_LIBRARIES
- LIBOMPTARGET_DEP_VEO_INCLUDE_DIRS)
-
-mark_as_advanced(
- LIBOMPTARGET_DEP_VEO_FOUND
- LIBOMPTARGET_DEP_VEO_INCLUDE_DIRS)
-
-# Looking for CUDA libdevice subdirectory
-#
-# Special case for Debian/Ubuntu to have nvidia-cuda-toolkit work
-# out of the box. More info on http://bugs.debian.org/882505
-################################################################################
-
-set(LIBOMPTARGET_CUDA_LIBDEVICE_SUBDIR nvvm/libdevice)
-
-# Don't alter CUDA_TOOLKIT_ROOT_DIR if the user specified it, if a value was
-# already cached for it, or if it already has libdevice. Otherwise, on
-# Debian/Ubuntu, look where the nvidia-cuda-toolkit package normally installs
-# libdevice.
-if (NOT LIBOMPTARGET_CUDA_TOOLKIT_ROOT_DIR_PRESET AND
- NOT EXISTS
- "${CUDA_TOOLKIT_ROOT_DIR}/${LIBOMPTARGET_CUDA_LIBDEVICE_SUBDIR}")
- find_program(LSB_RELEASE lsb_release)
- if (LSB_RELEASE)
- execute_process(COMMAND ${LSB_RELEASE} -is
- OUTPUT_VARIABLE LSB_RELEASE_ID
- OUTPUT_STRIP_TRAILING_WHITESPACE)
- set(candidate_dir /usr/lib/cuda)
- if ((LSB_RELEASE_ID STREQUAL "Debian" OR LSB_RELEASE_ID STREQUAL "Ubuntu")
- AND EXISTS "${candidate_dir}/${LIBOMPTARGET_CUDA_LIBDEVICE_SUBDIR}")
- set(CUDA_TOOLKIT_ROOT_DIR "${candidate_dir}" CACHE PATH
- "Toolkit location." FORCE)
- endif()
- endif()
-endif()
-
-set(OPENMP_PTHREAD_LIB ${LLVM_PTHREAD_LIB})
Index: create-15.0.4-openmp-perl-patch/llvm-15.0.4-new/openmp/libomptarget/cmake/Modules
===================================================================
--- create-15.0.4-openmp-perl-patch/llvm-15.0.4-new/openmp/libomptarget/cmake/Modules (revision 39)
+++ create-15.0.4-openmp-perl-patch/llvm-15.0.4-new/openmp/libomptarget/cmake/Modules (nonexistent)
Property changes on: create-15.0.4-openmp-perl-patch/llvm-15.0.4-new/openmp/libomptarget/cmake/Modules
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-openmp-perl-patch/llvm-15.0.4-new/openmp/libomptarget/cmake
===================================================================
--- create-15.0.4-openmp-perl-patch/llvm-15.0.4-new/openmp/libomptarget/cmake (revision 39)
+++ create-15.0.4-openmp-perl-patch/llvm-15.0.4-new/openmp/libomptarget/cmake (nonexistent)
Property changes on: create-15.0.4-openmp-perl-patch/llvm-15.0.4-new/openmp/libomptarget/cmake
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-openmp-perl-patch/llvm-15.0.4-new/openmp/libomptarget
===================================================================
--- create-15.0.4-openmp-perl-patch/llvm-15.0.4-new/openmp/libomptarget (revision 39)
+++ create-15.0.4-openmp-perl-patch/llvm-15.0.4-new/openmp/libomptarget (nonexistent)
Property changes on: create-15.0.4-openmp-perl-patch/llvm-15.0.4-new/openmp/libomptarget
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-openmp-perl-patch/llvm-15.0.4-new/openmp
===================================================================
--- create-15.0.4-openmp-perl-patch/llvm-15.0.4-new/openmp (revision 39)
+++ create-15.0.4-openmp-perl-patch/llvm-15.0.4-new/openmp (nonexistent)
Property changes on: create-15.0.4-openmp-perl-patch/llvm-15.0.4-new/openmp
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-openmp-perl-patch/llvm-15.0.4-new
===================================================================
--- create-15.0.4-openmp-perl-patch/llvm-15.0.4-new (revision 39)
+++ create-15.0.4-openmp-perl-patch/llvm-15.0.4-new (nonexistent)
Property changes on: create-15.0.4-openmp-perl-patch/llvm-15.0.4-new
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-openmp-perl-patch/create.patch.sh
===================================================================
--- create-15.0.4-openmp-perl-patch/create.patch.sh (revision 39)
+++ create-15.0.4-openmp-perl-patch/create.patch.sh (nonexistent)
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-VERSION=15.0.4
-
-tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
-mv llvm-$VERSION llvm-$VERSION-orig
-
-cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
-
-diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-openmp-perl.patch
-
-mv llvm-$VERSION-openmp-perl.patch ../patches
-
-rm -rf ./llvm-$VERSION
-rm -rf ./llvm-$VERSION-orig
Property changes on: create-15.0.4-openmp-perl-patch/create.patch.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: create-15.0.4-openmp-perl-patch
===================================================================
--- create-15.0.4-openmp-perl-patch (revision 39)
+++ create-15.0.4-openmp-perl-patch (nonexistent)
Property changes on: create-15.0.4-openmp-perl-patch
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-llvm-ppc64-patch/file.list
===================================================================
--- create-15.0.4-llvm-ppc64-patch/file.list (revision 39)
+++ create-15.0.4-llvm-ppc64-patch/file.list (nonexistent)
@@ -1 +0,0 @@
-llvm-15.0.4/llvm/cmake/config-ix.cmake
Index: create-15.0.4-llvm-ppc64-patch/llvm-15.0.4-new/llvm/cmake/config-ix.cmake
===================================================================
--- create-15.0.4-llvm-ppc64-patch/llvm-15.0.4-new/llvm/cmake/config-ix.cmake (revision 39)
+++ create-15.0.4-llvm-ppc64-patch/llvm-15.0.4-new/llvm/cmake/config-ix.cmake (nonexistent)
@@ -1,766 +0,0 @@
-if( WIN32 AND NOT CYGWIN )
- # We consider Cygwin as another Unix
- set(PURE_WINDOWS 1)
-endif()
-
-include(CheckIncludeFile)
-include(CheckLibraryExists)
-include(CheckSymbolExists)
-include(CheckCXXSymbolExists)
-include(CheckFunctionExists)
-include(CheckStructHasMember)
-include(CheckCCompilerFlag)
-include(CMakePushCheckState)
-
-include(CheckCompilerVersion)
-include(CheckProblematicConfigurations)
-include(HandleLLVMStdlib)
-
-if( UNIX AND NOT (APPLE OR BEOS OR HAIKU) )
- # Used by check_symbol_exists:
- list(APPEND CMAKE_REQUIRED_LIBRARIES "m")
-endif()
-# x86_64 FreeBSD 9.2 requires libcxxrt to be specified explicitly.
-if( CMAKE_SYSTEM MATCHES "FreeBSD-9.2-RELEASE" AND
- CMAKE_SIZEOF_VOID_P EQUAL 8 )
- list(APPEND CMAKE_REQUIRED_LIBRARIES "cxxrt")
-endif()
-
-# Do checks with _XOPEN_SOURCE and large-file API on AIX, because we will build
-# with those too.
-if (UNIX AND ${CMAKE_SYSTEM_NAME} MATCHES "AIX")
- list(APPEND CMAKE_REQUIRED_DEFINITIONS "-D_XOPEN_SOURCE=700")
- list(APPEND CMAKE_REQUIRED_DEFINITIONS "-D_LARGE_FILE_API")
-endif()
-
-# Do checks with _FILE_OFFSET_BITS=64 on Solaris, because we will build
-# with those too.
-if (UNIX AND ${CMAKE_SYSTEM_NAME} MATCHES "SunOS")
- list(APPEND CMAKE_REQUIRED_DEFINITIONS "-D_FILE_OFFSET_BITS=64")
-endif()
-
-# include checks
-check_include_file(dlfcn.h HAVE_DLFCN_H)
-check_include_file(errno.h HAVE_ERRNO_H)
-check_include_file(fcntl.h HAVE_FCNTL_H)
-check_include_file(link.h HAVE_LINK_H)
-check_include_file(malloc/malloc.h HAVE_MALLOC_MALLOC_H)
-if( NOT PURE_WINDOWS )
- check_include_file(pthread.h HAVE_PTHREAD_H)
-endif()
-check_include_file(signal.h HAVE_SIGNAL_H)
-check_include_file(sys/ioctl.h HAVE_SYS_IOCTL_H)
-check_include_file(sys/mman.h HAVE_SYS_MMAN_H)
-check_include_file(sys/param.h HAVE_SYS_PARAM_H)
-check_include_file(sys/resource.h HAVE_SYS_RESOURCE_H)
-check_include_file(sys/stat.h HAVE_SYS_STAT_H)
-check_include_file(sys/time.h HAVE_SYS_TIME_H)
-check_include_file(sys/types.h HAVE_SYS_TYPES_H)
-check_include_file(sysexits.h HAVE_SYSEXITS_H)
-check_include_file(termios.h HAVE_TERMIOS_H)
-check_include_file(unistd.h HAVE_UNISTD_H)
-check_include_file(valgrind/valgrind.h HAVE_VALGRIND_VALGRIND_H)
-check_include_file(fenv.h HAVE_FENV_H)
-check_symbol_exists(FE_ALL_EXCEPT "fenv.h" HAVE_DECL_FE_ALL_EXCEPT)
-check_symbol_exists(FE_INEXACT "fenv.h" HAVE_DECL_FE_INEXACT)
-
-check_include_file(mach/mach.h HAVE_MACH_MACH_H)
-check_include_file(CrashReporterClient.h HAVE_CRASHREPORTERCLIENT_H)
-if(APPLE)
- include(CheckCSourceCompiles)
- CHECK_C_SOURCE_COMPILES("
- static const char *__crashreporter_info__ = 0;
- asm(\".desc ___crashreporter_info__, 0x10\");
- int main() { return 0; }"
- HAVE_CRASHREPORTER_INFO)
-endif()
-
-if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
- check_include_file(linux/magic.h HAVE_LINUX_MAGIC_H)
- if(NOT HAVE_LINUX_MAGIC_H)
- # older kernels use split files
- check_include_file(linux/nfs_fs.h HAVE_LINUX_NFS_FS_H)
- check_include_file(linux/smb.h HAVE_LINUX_SMB_H)
- endif()
-endif()
-
-# library checks
-if( NOT PURE_WINDOWS )
- check_library_exists(pthread pthread_create "" HAVE_LIBPTHREAD)
- if (HAVE_LIBPTHREAD)
- check_library_exists(pthread pthread_rwlock_init "" HAVE_PTHREAD_RWLOCK_INIT)
- check_library_exists(pthread pthread_mutex_lock "" HAVE_PTHREAD_MUTEX_LOCK)
- else()
- # this could be Android
- check_library_exists(c pthread_create "" PTHREAD_IN_LIBC)
- if (PTHREAD_IN_LIBC)
- check_library_exists(c pthread_rwlock_init "" HAVE_PTHREAD_RWLOCK_INIT)
- check_library_exists(c pthread_mutex_lock "" HAVE_PTHREAD_MUTEX_LOCK)
- endif()
- endif()
- check_library_exists(dl dlopen "" HAVE_LIBDL)
- check_library_exists(rt clock_gettime "" HAVE_LIBRT)
-endif()
-
-# Check for libpfm.
-include(FindLibpfm)
-
-if(HAVE_LIBPTHREAD)
- # We want to find pthreads library and at the moment we do want to
- # have it reported as '-l<lib>' instead of '-pthread'.
- # TODO: switch to -pthread once the rest of the build system can deal with it.
- set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
- set(THREADS_HAVE_PTHREAD_ARG Off)
- find_package(Threads REQUIRED)
- set(LLVM_PTHREAD_LIB ${CMAKE_THREAD_LIBS_INIT})
-endif()
-
-if(LLVM_ENABLE_ZLIB)
- if(LLVM_ENABLE_ZLIB STREQUAL FORCE_ON)
- find_package(ZLIB REQUIRED)
- elseif(NOT LLVM_USE_SANITIZER MATCHES "Memory.*")
- find_package(ZLIB)
- endif()
- if(ZLIB_FOUND)
- # Check if zlib we found is usable; for example, we may have found a 32-bit
- # library on a 64-bit system which would result in a link-time failure.
- cmake_push_check_state()
- list(APPEND CMAKE_REQUIRED_INCLUDES ${ZLIB_INCLUDE_DIRS})
- list(APPEND CMAKE_REQUIRED_LIBRARIES ${ZLIB_LIBRARY})
- check_symbol_exists(compress2 zlib.h HAVE_ZLIB)
- cmake_pop_check_state()
- if(LLVM_ENABLE_ZLIB STREQUAL FORCE_ON AND NOT HAVE_ZLIB)
- message(FATAL_ERROR "Failed to configure zlib")
- endif()
- endif()
- set(LLVM_ENABLE_ZLIB "${HAVE_ZLIB}")
-else()
- set(LLVM_ENABLE_ZLIB 0)
-endif()
-
-set(zstd_FOUND 0)
-if(LLVM_ENABLE_ZSTD)
- if(LLVM_ENABLE_ZSTD STREQUAL FORCE_ON)
- find_package(zstd REQUIRED)
- if(NOT zstd_FOUND)
- message(FATAL_ERROR "Failed to configure zstd, but LLVM_ENABLE_ZSTD is FORCE_ON")
- endif()
- elseif(NOT LLVM_USE_SANITIZER MATCHES "Memory.*")
- find_package(zstd QUIET)
- endif()
-endif()
-set(LLVM_ENABLE_ZSTD ${zstd_FOUND})
-
-if(LLVM_ENABLE_LIBXML2)
- if(LLVM_ENABLE_LIBXML2 STREQUAL FORCE_ON)
- find_package(LibXml2 REQUIRED)
- elseif(NOT LLVM_USE_SANITIZER MATCHES "Memory.*")
- find_package(LibXml2)
- endif()
- if(LibXml2_FOUND)
- # Check if libxml2 we found is usable; for example, we may have found a 32-bit
- # library on a 64-bit system which would result in a link-time failure.
- cmake_push_check_state()
- list(APPEND CMAKE_REQUIRED_INCLUDES ${LIBXML2_INCLUDE_DIRS})
- list(APPEND CMAKE_REQUIRED_LIBRARIES ${LIBXML2_LIBRARIES})
- list(APPEND CMAKE_REQUIRED_DEFINITIONS ${LIBXML2_DEFINITIONS})
- check_symbol_exists(xmlReadMemory libxml/xmlreader.h HAVE_LIBXML2)
- cmake_pop_check_state()
- if(LLVM_ENABLE_LIBXML2 STREQUAL FORCE_ON AND NOT HAVE_LIBXML2)
- message(FATAL_ERROR "Failed to configure libxml2")
- endif()
- endif()
- set(LLVM_ENABLE_LIBXML2 "${HAVE_LIBXML2}")
-endif()
-
-if(LLVM_ENABLE_CURL)
- if(LLVM_ENABLE_CURL STREQUAL FORCE_ON)
- find_package(CURL REQUIRED)
- else()
- find_package(CURL)
- endif()
- if(CURL_FOUND)
- # Check if curl we found is usable; for example, we may have found a 32-bit
- # library on a 64-bit system which would result in a link-time failure.
- cmake_push_check_state()
- list(APPEND CMAKE_REQUIRED_LIBRARIES CURL::libcurl)
- check_symbol_exists(curl_easy_init curl/curl.h HAVE_CURL)
- cmake_pop_check_state()
- if(LLVM_ENABLE_CURL STREQUAL FORCE_ON AND NOT HAVE_CURL)
- message(FATAL_ERROR "Failed to configure curl")
- endif()
- endif()
- set(LLVM_ENABLE_CURL "${HAVE_CURL}")
-endif()
-
-if(LLVM_ENABLE_HTTPLIB)
- if(LLVM_ENABLE_HTTPLIB STREQUAL FORCE_ON)
- find_package(httplib REQUIRED)
- else()
- find_package(httplib)
- endif()
- if(HTTPLIB_FOUND)
- # Check if the "httplib" we found is usable; for example there may be another
- # library with the same name.
- cmake_push_check_state()
- list(APPEND CMAKE_REQUIRED_LIBRARIES ${HTTPLIB_LIBRARY})
- check_cxx_symbol_exists(CPPHTTPLIB_HTTPLIB_H ${HTTPLIB_HEADER_PATH} HAVE_HTTPLIB)
- cmake_pop_check_state()
- if(LLVM_ENABLE_HTTPLIB STREQUAL FORCE_ON AND NOT HAVE_HTTPLIB)
- message(FATAL_ERROR "Failed to configure cpp-httplib")
- endif()
- endif()
- set(LLVM_ENABLE_HTTPLIB "${HAVE_HTTPLIB}")
-endif()
-
-# Don't look for these libraries if we're using MSan, since uninstrumented third
-# party code may call MSan interceptors like strlen, leading to false positives.
-if(NOT LLVM_USE_SANITIZER MATCHES "Memory.*")
- # Don't look for these libraries on Windows.
- if (NOT PURE_WINDOWS)
- # Skip libedit if using ASan as it contains memory leaks.
- if (LLVM_ENABLE_LIBEDIT AND NOT LLVM_USE_SANITIZER MATCHES ".*Address.*")
- find_package(LibEdit)
- set(HAVE_LIBEDIT ${LibEdit_FOUND})
- else()
- set(HAVE_LIBEDIT 0)
- endif()
- if(LLVM_ENABLE_TERMINFO)
- if(LLVM_ENABLE_TERMINFO STREQUAL FORCE_ON)
- find_package(Terminfo REQUIRED)
- else()
- find_package(Terminfo)
- endif()
- set(LLVM_ENABLE_TERMINFO "${Terminfo_FOUND}")
- endif()
- else()
- set(LLVM_ENABLE_TERMINFO 0)
- endif()
-else()
- set(LLVM_ENABLE_TERMINFO 0)
-endif()
-
-check_library_exists(xar xar_open "" LLVM_HAVE_LIBXAR)
-if(LLVM_HAVE_LIBXAR)
- message(STATUS "The xar file format has been deprecated: LLVM_HAVE_LIBXAR might be removed in the future.")
- # The xar file format has been deprecated since macOS 12.0.
- if (CMAKE_OSX_DEPLOYMENT_TARGET VERSION_GREATER_EQUAL 12)
- set(LLVM_HAVE_LIBXAR 0)
- else()
- set(XAR_LIB xar)
- endif()
-endif()
-
-# function checks
-check_symbol_exists(arc4random "stdlib.h" HAVE_DECL_ARC4RANDOM)
-find_package(Backtrace)
-set(HAVE_BACKTRACE ${Backtrace_FOUND})
-set(BACKTRACE_HEADER ${Backtrace_HEADER})
-
-# Prevent check_symbol_exists from using API that is not supported for a given
-# deployment target.
-check_c_compiler_flag("-Werror=unguarded-availability-new" "C_SUPPORTS_WERROR_UNGUARDED_AVAILABILITY_NEW")
-if(C_SUPPORTS_WERROR_UNGUARDED_AVAILABILITY_NEW)
- set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -Werror=unguarded-availability-new")
-endif()
-
-# Determine whether we can register EH tables.
-check_symbol_exists(__register_frame "${CMAKE_CURRENT_LIST_DIR}/unwind.h" HAVE_REGISTER_FRAME)
-check_symbol_exists(__deregister_frame "${CMAKE_CURRENT_LIST_DIR}/unwind.h" HAVE_DEREGISTER_FRAME)
-check_symbol_exists(__unw_add_dynamic_fde "${CMAKE_CURRENT_LIST_DIR}/unwind.h" HAVE_UNW_ADD_DYNAMIC_FDE)
-
-check_symbol_exists(_Unwind_Backtrace "unwind.h" HAVE__UNWIND_BACKTRACE)
-check_symbol_exists(getpagesize unistd.h HAVE_GETPAGESIZE)
-check_symbol_exists(sysconf unistd.h HAVE_SYSCONF)
-check_symbol_exists(getrusage sys/resource.h HAVE_GETRUSAGE)
-check_symbol_exists(setrlimit sys/resource.h HAVE_SETRLIMIT)
-check_symbol_exists(isatty unistd.h HAVE_ISATTY)
-check_symbol_exists(futimens sys/stat.h HAVE_FUTIMENS)
-check_symbol_exists(futimes sys/time.h HAVE_FUTIMES)
-# AddressSanitizer conflicts with lib/Support/Unix/Signals.inc
-# Avoid sigaltstack on Apple platforms, where backtrace() cannot handle it
-# (rdar://7089625) and _Unwind_Backtrace is unusable because it cannot unwind
-# past the signal handler after an assertion failure (rdar://29866587).
-if( HAVE_SIGNAL_H AND NOT LLVM_USE_SANITIZER MATCHES ".*Address.*" AND NOT APPLE )
- check_symbol_exists(sigaltstack signal.h HAVE_SIGALTSTACK)
-endif()
-set(CMAKE_REQUIRED_DEFINITIONS "-D_LARGEFILE64_SOURCE")
-check_symbol_exists(lseek64 "sys/types.h;unistd.h" HAVE_LSEEK64)
-set(CMAKE_REQUIRED_DEFINITIONS "")
-check_symbol_exists(mallctl malloc_np.h HAVE_MALLCTL)
-check_symbol_exists(mallinfo malloc.h HAVE_MALLINFO)
-check_symbol_exists(mallinfo2 malloc.h HAVE_MALLINFO2)
-check_symbol_exists(malloc_zone_statistics malloc/malloc.h
- HAVE_MALLOC_ZONE_STATISTICS)
-check_symbol_exists(getrlimit "sys/types.h;sys/time.h;sys/resource.h" HAVE_GETRLIMIT)
-check_symbol_exists(posix_spawn spawn.h HAVE_POSIX_SPAWN)
-check_symbol_exists(pread unistd.h HAVE_PREAD)
-check_symbol_exists(sbrk unistd.h HAVE_SBRK)
-check_symbol_exists(strerror string.h HAVE_STRERROR)
-check_symbol_exists(strerror_r string.h HAVE_STRERROR_R)
-check_symbol_exists(strerror_s string.h HAVE_DECL_STRERROR_S)
-check_symbol_exists(setenv stdlib.h HAVE_SETENV)
-if( PURE_WINDOWS )
- check_symbol_exists(_chsize_s io.h HAVE__CHSIZE_S)
-
- check_function_exists(_alloca HAVE__ALLOCA)
- check_function_exists(__alloca HAVE___ALLOCA)
- check_function_exists(__chkstk HAVE___CHKSTK)
- check_function_exists(__chkstk_ms HAVE___CHKSTK_MS)
- check_function_exists(___chkstk HAVE____CHKSTK)
- check_function_exists(___chkstk_ms HAVE____CHKSTK_MS)
-
- check_function_exists(__ashldi3 HAVE___ASHLDI3)
- check_function_exists(__ashrdi3 HAVE___ASHRDI3)
- check_function_exists(__divdi3 HAVE___DIVDI3)
- check_function_exists(__fixdfdi HAVE___FIXDFDI)
- check_function_exists(__fixsfdi HAVE___FIXSFDI)
- check_function_exists(__floatdidf HAVE___FLOATDIDF)
- check_function_exists(__lshrdi3 HAVE___LSHRDI3)
- check_function_exists(__moddi3 HAVE___MODDI3)
- check_function_exists(__udivdi3 HAVE___UDIVDI3)
- check_function_exists(__umoddi3 HAVE___UMODDI3)
-
- check_function_exists(__main HAVE___MAIN)
- check_function_exists(__cmpdi2 HAVE___CMPDI2)
-endif()
-if( HAVE_DLFCN_H )
- if( HAVE_LIBDL )
- list(APPEND CMAKE_REQUIRED_LIBRARIES dl)
- endif()
- check_symbol_exists(dlopen dlfcn.h HAVE_DLOPEN)
- check_symbol_exists(dladdr dlfcn.h HAVE_DLADDR)
- if( HAVE_LIBDL )
- list(REMOVE_ITEM CMAKE_REQUIRED_LIBRARIES dl)
- endif()
-endif()
-
-CHECK_STRUCT_HAS_MEMBER("struct stat" st_mtimespec.tv_nsec
- "sys/types.h;sys/stat.h" HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC)
-if (UNIX AND ${CMAKE_SYSTEM_NAME} MATCHES "AIX")
-# The st_mtim.tv_nsec member of a `stat` structure is not reliable on some AIX
-# environments.
- set(HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 0)
-else()
- CHECK_STRUCT_HAS_MEMBER("struct stat" st_mtim.tv_nsec
- "sys/types.h;sys/stat.h" HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC)
-endif()
-
-check_symbol_exists(__GLIBC__ stdio.h LLVM_USING_GLIBC)
-if( LLVM_USING_GLIBC )
- add_definitions( -D_GNU_SOURCE )
- list(APPEND CMAKE_REQUIRED_DEFINITIONS "-D_GNU_SOURCE")
-endif()
-# This check requires _GNU_SOURCE
-if (NOT PURE_WINDOWS)
- if (LLVM_PTHREAD_LIB)
- list(APPEND CMAKE_REQUIRED_LIBRARIES ${LLVM_PTHREAD_LIB})
- endif()
- check_symbol_exists(pthread_getname_np pthread.h HAVE_PTHREAD_GETNAME_NP)
- check_symbol_exists(pthread_setname_np pthread.h HAVE_PTHREAD_SETNAME_NP)
- if (LLVM_PTHREAD_LIB)
- list(REMOVE_ITEM CMAKE_REQUIRED_LIBRARIES ${LLVM_PTHREAD_LIB})
- endif()
-endif()
-
-# available programs checks
-function(llvm_find_program name)
- string(TOUPPER ${name} NAME)
- string(REGEX REPLACE "\\." "_" NAME ${NAME})
-
- find_program(LLVM_PATH_${NAME} NAMES ${ARGV})
- mark_as_advanced(LLVM_PATH_${NAME})
- if(LLVM_PATH_${NAME})
- set(HAVE_${NAME} 1 CACHE INTERNAL "Is ${name} available ?")
- mark_as_advanced(HAVE_${NAME})
- else(LLVM_PATH_${NAME})
- set(HAVE_${NAME} "" CACHE INTERNAL "Is ${name} available ?")
- endif(LLVM_PATH_${NAME})
-endfunction()
-
-if (LLVM_ENABLE_DOXYGEN)
- llvm_find_program(dot)
-endif ()
-
-if(LLVM_ENABLE_FFI)
- set(FFI_REQUIRE_INCLUDE On)
- if(LLVM_ENABLE_FFI STREQUAL FORCE_ON)
- find_package(FFI REQUIRED)
- else()
- find_package(FFI)
- endif()
- set(LLVM_ENABLE_FFI "${FFI_FOUND}")
-else()
- unset(HAVE_FFI_FFI_H CACHE)
- unset(HAVE_FFI_H CACHE)
- unset(HAVE_FFI_CALL CACHE)
-endif()
-
-check_symbol_exists(proc_pid_rusage "libproc.h" HAVE_PROC_PID_RUSAGE)
-
-# Whether we can use std::is_trivially_copyable to verify llvm::is_trivially_copyable.
-CHECK_CXX_SOURCE_COMPILES("
-#include <type_traits>
-struct T { int val; };
-static_assert(std::is_trivially_copyable<T>::value, \"ok\");
-int main() { return 0;}
-" HAVE_STD_IS_TRIVIALLY_COPYABLE)
-
-
-# Define LLVM_HAS_ATOMICS if gcc or MSVC atomic builtins are supported.
-include(CheckAtomic)
-
-if( LLVM_ENABLE_PIC )
- set(ENABLE_PIC 1)
-else()
- set(ENABLE_PIC 0)
- check_cxx_compiler_flag("-fno-pie" SUPPORTS_NO_PIE_FLAG)
- if(SUPPORTS_NO_PIE_FLAG)
- set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fno-pie")
- endif()
-endif()
-
-check_cxx_compiler_flag("-Wvariadic-macros" SUPPORTS_VARIADIC_MACROS_FLAG)
-check_cxx_compiler_flag("-Wgnu-zero-variadic-macro-arguments"
- SUPPORTS_GNU_ZERO_VARIADIC_MACRO_ARGUMENTS_FLAG)
-
-set(USE_NO_MAYBE_UNINITIALIZED 0)
-set(USE_NO_UNINITIALIZED 0)
-
-# Disable gcc's potentially uninitialized use analysis as it presents lots of
-# false positives.
-if (CMAKE_COMPILER_IS_GNUCXX)
- check_cxx_compiler_flag("-Wmaybe-uninitialized" HAS_MAYBE_UNINITIALIZED)
- if (HAS_MAYBE_UNINITIALIZED)
- set(USE_NO_MAYBE_UNINITIALIZED 1)
- else()
- # Only recent versions of gcc make the distinction between -Wuninitialized
- # and -Wmaybe-uninitialized. If -Wmaybe-uninitialized isn't supported, just
- # turn off all uninitialized use warnings.
- check_cxx_compiler_flag("-Wuninitialized" HAS_UNINITIALIZED)
- set(USE_NO_UNINITIALIZED ${HAS_UNINITIALIZED})
- endif()
-endif()
-
-# By default, we target the host, but this can be overridden at CMake
-# invocation time.
-include(GetHostTriple)
-get_host_triple(LLVM_INFERRED_HOST_TRIPLE)
-
-set(LLVM_HOST_TRIPLE "${LLVM_INFERRED_HOST_TRIPLE}" CACHE STRING
- "Host on which LLVM binaries will run")
-
-# Determine the native architecture.
-string(TOLOWER "${LLVM_TARGET_ARCH}" LLVM_NATIVE_ARCH)
-if( LLVM_NATIVE_ARCH STREQUAL "host" )
- string(REGEX MATCH "^[^-]*" LLVM_NATIVE_ARCH ${LLVM_HOST_TRIPLE})
-endif ()
-
-if (LLVM_NATIVE_ARCH MATCHES "i[2-6]86")
- set(LLVM_NATIVE_ARCH X86)
-elseif (LLVM_NATIVE_ARCH STREQUAL "x86")
- set(LLVM_NATIVE_ARCH X86)
-elseif (LLVM_NATIVE_ARCH STREQUAL "amd64")
- set(LLVM_NATIVE_ARCH X86)
-elseif (LLVM_NATIVE_ARCH STREQUAL "x86_64")
- set(LLVM_NATIVE_ARCH X86)
-elseif (LLVM_NATIVE_ARCH MATCHES "sparc")
- set(LLVM_NATIVE_ARCH Sparc)
-elseif (LLVM_NATIVE_ARCH MATCHES "sparc64")
- set(LLVM_NATIVE_ARCH Sparc)
-elseif (LLVM_NATIVE_ARCH MATCHES "ppc")
- set(LLVM_NATIVE_ARCH PowerPC)
-elseif (LLVM_NATIVE_ARCH MATCHES "powerpc")
- set(LLVM_NATIVE_ARCH PowerPC)
-elseif (LLVM_NATIVE_ARCH MATCHES "ppc64")
- set(LLVM_NATIVE_ARCH PowerPC)
-elseif (LLVM_NATIVE_ARCH MATCHES "ppc64le")
- set(LLVM_NATIVE_ARCH PowerPC)
-elseif (LLVM_NATIVE_ARCH MATCHES "aarch64")
- set(LLVM_NATIVE_ARCH AArch64)
-elseif (LLVM_NATIVE_ARCH MATCHES "arm64")
- set(LLVM_NATIVE_ARCH AArch64)
-elseif (LLVM_NATIVE_ARCH MATCHES "arm")
- set(LLVM_NATIVE_ARCH ARM)
-elseif (LLVM_NATIVE_ARCH MATCHES "avr")
- set(LLVM_NATIVE_ARCH AVR)
-elseif (LLVM_NATIVE_ARCH MATCHES "mips")
- set(LLVM_NATIVE_ARCH Mips)
-elseif (LLVM_NATIVE_ARCH MATCHES "xcore")
- set(LLVM_NATIVE_ARCH XCore)
-elseif (LLVM_NATIVE_ARCH MATCHES "msp430")
- set(LLVM_NATIVE_ARCH MSP430)
-elseif (LLVM_NATIVE_ARCH MATCHES "hexagon")
- set(LLVM_NATIVE_ARCH Hexagon)
-elseif (LLVM_NATIVE_ARCH MATCHES "s390x")
- set(LLVM_NATIVE_ARCH SystemZ)
-elseif (LLVM_NATIVE_ARCH MATCHES "wasm32")
- set(LLVM_NATIVE_ARCH WebAssembly)
-elseif (LLVM_NATIVE_ARCH MATCHES "wasm64")
- set(LLVM_NATIVE_ARCH WebAssembly)
-elseif (LLVM_NATIVE_ARCH MATCHES "riscv32")
- set(LLVM_NATIVE_ARCH RISCV)
-elseif (LLVM_NATIVE_ARCH MATCHES "riscv64")
- set(LLVM_NATIVE_ARCH RISCV)
-elseif (LLVM_NATIVE_ARCH STREQUAL "m68k")
- set(LLVM_NATIVE_ARCH M68k)
-else ()
- message(FATAL_ERROR "Unknown architecture ${LLVM_NATIVE_ARCH}")
-endif ()
-
-# If build targets includes "host" or "Native", then replace with native architecture.
-foreach (NATIVE_KEYWORD host Native)
- list(FIND LLVM_TARGETS_TO_BUILD ${NATIVE_KEYWORD} idx)
- if( NOT idx LESS 0 )
- list(REMOVE_AT LLVM_TARGETS_TO_BUILD ${idx})
- list(APPEND LLVM_TARGETS_TO_BUILD ${LLVM_NATIVE_ARCH})
- list(REMOVE_DUPLICATES LLVM_TARGETS_TO_BUILD)
- endif()
-endforeach()
-
-list(FIND LLVM_TARGETS_TO_BUILD ${LLVM_NATIVE_ARCH} NATIVE_ARCH_IDX)
-if (NATIVE_ARCH_IDX EQUAL -1)
- message(STATUS
- "Native target ${LLVM_NATIVE_ARCH} is not selected; lli will not JIT code")
-else ()
- message(STATUS "Native target architecture is ${LLVM_NATIVE_ARCH}")
- set(LLVM_NATIVE_TARGET LLVMInitialize${LLVM_NATIVE_ARCH}Target)
- set(LLVM_NATIVE_TARGETINFO LLVMInitialize${LLVM_NATIVE_ARCH}TargetInfo)
- set(LLVM_NATIVE_TARGETMC LLVMInitialize${LLVM_NATIVE_ARCH}TargetMC)
- set(LLVM_NATIVE_ASMPRINTER LLVMInitialize${LLVM_NATIVE_ARCH}AsmPrinter)
-
- # We don't have an ASM parser for all architectures yet.
- if (EXISTS ${PROJECT_SOURCE_DIR}/lib/Target/${LLVM_NATIVE_ARCH}/AsmParser/CMakeLists.txt)
- set(LLVM_NATIVE_ASMPARSER LLVMInitialize${LLVM_NATIVE_ARCH}AsmParser)
- endif ()
-
- # We don't have an disassembler for all architectures yet.
- if (EXISTS ${PROJECT_SOURCE_DIR}/lib/Target/${LLVM_NATIVE_ARCH}/Disassembler/CMakeLists.txt)
- set(LLVM_NATIVE_DISASSEMBLER LLVMInitialize${LLVM_NATIVE_ARCH}Disassembler)
- endif ()
-endif ()
-
-if( MSVC )
- set(SHLIBEXT ".lib")
- set(stricmp "_stricmp")
- set(strdup "_strdup")
-
- # Allow setting clang-cl's /winsysroot flag.
- set(LLVM_WINSYSROOT "" CACHE STRING
- "If set, argument to clang-cl's /winsysroot")
-
- if (LLVM_WINSYSROOT)
- set(MSVC_DIA_SDK_DIR "${LLVM_WINSYSROOT}/DIA SDK" CACHE PATH
- "Path to the DIA SDK")
- else()
- set(MSVC_DIA_SDK_DIR "$ENV{VSINSTALLDIR}DIA SDK" CACHE PATH
- "Path to the DIA SDK")
- endif()
-
- # See if the DIA SDK is available and usable.
- # Due to a bug in MSVC 2013's installation software, it is possible
- # for MSVC 2013 to write the DIA SDK into the Visual Studio 2012
- # install directory. If this happens, the installation is corrupt
- # and there's nothing we can do. It happens with enough frequency
- # though that we should handle it. We do so by simply checking that
- # the DIA SDK folder exists. Should this happen you will need to
- # uninstall VS 2012 and then re-install VS 2013.
- if (IS_DIRECTORY "${MSVC_DIA_SDK_DIR}")
- set(HAVE_DIA_SDK 1)
- else()
- set(HAVE_DIA_SDK 0)
- endif()
-
- option(LLVM_ENABLE_DIA_SDK "Use MSVC DIA SDK for debugging if available."
- ${HAVE_DIA_SDK})
-
- if(LLVM_ENABLE_DIA_SDK AND NOT HAVE_DIA_SDK)
- message(FATAL_ERROR "DIA SDK not found. If you have both VS 2012 and 2013 installed, you may need to uninstall the former and re-install the latter afterwards.")
- endif()
-else()
- set(LLVM_ENABLE_DIA_SDK 0)
-endif( MSVC )
-
-if( LLVM_ENABLE_THREADS )
- # Check if threading primitives aren't supported on this platform
- if( NOT HAVE_PTHREAD_H AND NOT WIN32 )
- set(LLVM_ENABLE_THREADS 0)
- endif()
-endif()
-
-if( LLVM_ENABLE_THREADS )
- message(STATUS "Threads enabled.")
-else( LLVM_ENABLE_THREADS )
- message(STATUS "Threads disabled.")
-endif()
-
-if (LLVM_ENABLE_DOXYGEN)
- message(STATUS "Doxygen enabled.")
- find_package(Doxygen REQUIRED)
-
- if (DOXYGEN_FOUND)
- # If we find doxygen and we want to enable doxygen by default create a
- # global aggregate doxygen target for generating llvm and any/all
- # subprojects doxygen documentation.
- if (LLVM_BUILD_DOCS)
- add_custom_target(doxygen ALL)
- endif()
-
- option(LLVM_DOXYGEN_EXTERNAL_SEARCH "Enable doxygen external search." OFF)
- if (LLVM_DOXYGEN_EXTERNAL_SEARCH)
- set(LLVM_DOXYGEN_SEARCHENGINE_URL "" CACHE STRING "URL to use for external search.")
- set(LLVM_DOXYGEN_SEARCH_MAPPINGS "" CACHE STRING "Doxygen Search Mappings")
- endif()
- endif()
-else()
- message(STATUS "Doxygen disabled.")
-endif()
-
-set(LLVM_BINDINGS "")
-find_program(GO_EXECUTABLE NAMES go DOC "go executable")
-if(WIN32 OR NOT LLVM_ENABLE_BINDINGS)
- message(STATUS "Go bindings disabled.")
-else()
- if(GO_EXECUTABLE STREQUAL "GO_EXECUTABLE-NOTFOUND")
- message(STATUS "Go bindings disabled.")
- else()
- execute_process(COMMAND ${GO_EXECUTABLE} run ${PROJECT_SOURCE_DIR}/bindings/go/conftest.go
- RESULT_VARIABLE GO_CONFTEST)
- if(GO_CONFTEST STREQUAL "0")
- set(LLVM_BINDINGS "${LLVM_BINDINGS} go")
- message(STATUS "Go bindings enabled.")
- else()
- message(STATUS "Go bindings disabled, need at least Go 1.2.")
- endif()
- endif()
-endif()
-
-find_program(GOLD_EXECUTABLE NAMES ${LLVM_DEFAULT_TARGET_TRIPLE}-ld.gold ld.gold ${LLVM_DEFAULT_TARGET_TRIPLE}-ld ld DOC "The gold linker")
-set(LLVM_BINUTILS_INCDIR "" CACHE PATH
- "PATH to binutils/include containing plugin-api.h for gold plugin.")
-
-if(CMAKE_GENERATOR MATCHES "Ninja")
- execute_process(COMMAND ${CMAKE_MAKE_PROGRAM} --version
- OUTPUT_VARIABLE NINJA_VERSION
- OUTPUT_STRIP_TRAILING_WHITESPACE)
- set(NINJA_VERSION ${NINJA_VERSION} CACHE STRING "Ninja version number" FORCE)
- message(STATUS "Ninja version: ${NINJA_VERSION}")
-endif()
-
-if(CMAKE_GENERATOR MATCHES "Ninja" AND
- NOT "${NINJA_VERSION}" VERSION_LESS "1.9.0" AND
- CMAKE_HOST_APPLE AND CMAKE_HOST_SYSTEM_VERSION VERSION_GREATER "15.6.0")
- set(LLVM_TOUCH_STATIC_LIBRARIES ON)
-endif()
-
-if(CMAKE_HOST_APPLE AND APPLE)
- if(NOT CMAKE_XCRUN)
- find_program(CMAKE_XCRUN NAMES xcrun)
- endif()
- if(CMAKE_XCRUN)
- execute_process(COMMAND ${CMAKE_XCRUN} -find ld
- OUTPUT_VARIABLE LD64_EXECUTABLE
- OUTPUT_STRIP_TRAILING_WHITESPACE)
- else()
- find_program(LD64_EXECUTABLE NAMES ld DOC "The ld64 linker")
- endif()
-
- if(LD64_EXECUTABLE)
- set(LD64_EXECUTABLE ${LD64_EXECUTABLE} CACHE PATH "ld64 executable")
- message(STATUS "Found ld64 - ${LD64_EXECUTABLE}")
- endif()
-endif()
-
-# Keep the version requirements in sync with bindings/ocaml/README.txt.
-include(FindOCaml)
-include(AddOCaml)
-if(WIN32 OR NOT LLVM_ENABLE_BINDINGS)
- message(STATUS "OCaml bindings disabled.")
-else()
- find_package(OCaml)
- if( NOT OCAML_FOUND )
- message(STATUS "OCaml bindings disabled.")
- else()
- if( OCAML_VERSION VERSION_LESS "4.00.0" )
- message(STATUS "OCaml bindings disabled, need OCaml >=4.00.0.")
- else()
- find_ocamlfind_package(ctypes VERSION 0.4 OPTIONAL)
- if( HAVE_OCAML_CTYPES )
- message(STATUS "OCaml bindings enabled.")
- set(LLVM_BINDINGS "${LLVM_BINDINGS} ocaml")
-
- set(LLVM_OCAML_INSTALL_PATH "${OCAML_STDLIB_PATH}" CACHE STRING
- "Install directory for LLVM OCaml packages")
- else()
- message(STATUS "OCaml bindings disabled, need ctypes >=0.4.")
- endif()
- endif()
- endif()
-endif()
-
-string(REPLACE " " ";" LLVM_BINDINGS_LIST "${LLVM_BINDINGS}")
-
-function(find_python_module module)
- string(REPLACE "." "_" module_name ${module})
- string(TOUPPER ${module_name} module_upper)
- set(FOUND_VAR PY_${module_upper}_FOUND)
- if (DEFINED ${FOUND_VAR})
- return()
- endif()
-
- execute_process(COMMAND "${Python3_EXECUTABLE}" "-c" "import ${module}"
- RESULT_VARIABLE status
- ERROR_QUIET)
-
- if(status)
- set(${FOUND_VAR} OFF CACHE BOOL "Failed to find python module '${module}'")
- message(STATUS "Could NOT find Python module ${module}")
- else()
- set(${FOUND_VAR} ON CACHE BOOL "Found python module '${module}'")
- message(STATUS "Found Python module ${module}")
- endif()
-endfunction()
-
-set (PYTHON_MODULES
- pygments
- # Some systems still don't have pygments.lexers.c_cpp which was introduced in
- # version 2.0 in 2014...
- pygments.lexers.c_cpp
- yaml
- )
-foreach(module ${PYTHON_MODULES})
- find_python_module(${module})
-endforeach()
-
-if(PY_PYGMENTS_FOUND AND PY_PYGMENTS_LEXERS_C_CPP_FOUND AND PY_YAML_FOUND)
- set (LLVM_HAVE_OPT_VIEWER_MODULES 1)
-else()
- set (LLVM_HAVE_OPT_VIEWER_MODULES 0)
-endif()
-
-function(llvm_get_host_prefixes_and_suffixes)
- # Not all platform files will set these variables (relying on them being
- # implicitly empty if they're unset), so unset the variables before including
- # the platform file, to prevent any values from the target system leaking.
- unset(CMAKE_STATIC_LIBRARY_PREFIX)
- unset(CMAKE_STATIC_LIBRARY_SUFFIX)
- unset(CMAKE_SHARED_LIBRARY_PREFIX)
- unset(CMAKE_SHARED_LIBRARY_SUFFIX)
- unset(CMAKE_IMPORT_LIBRARY_PREFIX)
- unset(CMAKE_IMPORT_LIBRARY_SUFFIX)
- unset(CMAKE_EXECUTABLE_SUFFIX)
- unset(CMAKE_LINK_LIBRARY_SUFFIX)
- include(Platform/${CMAKE_HOST_SYSTEM_NAME} OPTIONAL RESULT_VARIABLE _includedFile)
- if (_includedFile)
- set(LLVM_HOST_STATIC_LIBRARY_PREFIX ${CMAKE_STATIC_LIBRARY_PREFIX} PARENT_SCOPE)
- set(LLVM_HOST_STATIC_LIBRARY_SUFFIX ${CMAKE_STATIC_LIBRARY_SUFFIX} PARENT_SCOPE)
- set(LLVM_HOST_SHARED_LIBRARY_PREFIX ${CMAKE_SHARED_LIBRARY_PREFIX} PARENT_SCOPE)
- set(LLVM_HOST_SHARED_LIBRARY_SUFFIX ${CMAKE_SHARED_LIBRARY_SUFFIX} PARENT_SCOPE)
- set(LLVM_HOST_IMPORT_LIBRARY_PREFIX ${CMAKE_IMPORT_LIBRARY_PREFIX} PARENT_SCOPE)
- set(LLVM_HOST_IMPORT_LIBRARY_SUFFIX ${CMAKE_IMPORT_LIBRARY_SUFFIX} PARENT_SCOPE)
- set(LLVM_HOST_EXECUTABLE_SUFFIX ${CMAKE_EXECUTABLE_SUFFIX} PARENT_SCOPE)
- set(LLVM_HOST_LINK_LIBRARY_SUFFIX ${CMAKE_LINK_LIBRARY_SUFFIX} PARENT_SCOPE)
- endif()
-endfunction()
-
-llvm_get_host_prefixes_and_suffixes()
Index: create-15.0.4-llvm-ppc64-patch/llvm-15.0.4-new/llvm/cmake
===================================================================
--- create-15.0.4-llvm-ppc64-patch/llvm-15.0.4-new/llvm/cmake (revision 39)
+++ create-15.0.4-llvm-ppc64-patch/llvm-15.0.4-new/llvm/cmake (nonexistent)
Property changes on: create-15.0.4-llvm-ppc64-patch/llvm-15.0.4-new/llvm/cmake
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-llvm-ppc64-patch/llvm-15.0.4-new/llvm
===================================================================
--- create-15.0.4-llvm-ppc64-patch/llvm-15.0.4-new/llvm (revision 39)
+++ create-15.0.4-llvm-ppc64-patch/llvm-15.0.4-new/llvm (nonexistent)
Property changes on: create-15.0.4-llvm-ppc64-patch/llvm-15.0.4-new/llvm
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-llvm-ppc64-patch/llvm-15.0.4-new
===================================================================
--- create-15.0.4-llvm-ppc64-patch/llvm-15.0.4-new (revision 39)
+++ create-15.0.4-llvm-ppc64-patch/llvm-15.0.4-new (nonexistent)
Property changes on: create-15.0.4-llvm-ppc64-patch/llvm-15.0.4-new
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-llvm-ppc64-patch/create.patch.sh
===================================================================
--- create-15.0.4-llvm-ppc64-patch/create.patch.sh (revision 39)
+++ create-15.0.4-llvm-ppc64-patch/create.patch.sh (nonexistent)
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-VERSION=15.0.4
-
-tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
-mv llvm-$VERSION llvm-$VERSION-orig
-
-cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
-
-diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-llvm-ppc64.patch
-
-mv llvm-$VERSION-llvm-ppc64.patch ../patches
-
-rm -rf ./llvm-$VERSION
-rm -rf ./llvm-$VERSION-orig
Property changes on: create-15.0.4-llvm-ppc64-patch/create.patch.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: create-15.0.4-llvm-ppc64-patch
===================================================================
--- create-15.0.4-llvm-ppc64-patch (revision 39)
+++ create-15.0.4-llvm-ppc64-patch (nonexistent)
Property changes on: create-15.0.4-llvm-ppc64-patch
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-llvm-64bit-atomic-patch/file.list
===================================================================
--- create-13.0.0-llvm-64bit-atomic-patch/file.list (revision 39)
+++ create-13.0.0-llvm-64bit-atomic-patch/file.list (nonexistent)
@@ -1 +0,0 @@
-llvm-13.0.0/llvm/cmake/modules/CheckAtomic.cmake
Index: create-13.0.0-llvm-64bit-atomic-patch/create.patch.sh
===================================================================
--- create-13.0.0-llvm-64bit-atomic-patch/create.patch.sh (revision 39)
+++ create-13.0.0-llvm-64bit-atomic-patch/create.patch.sh (nonexistent)
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-VERSION=13.0.0
-
-tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
-mv llvm-$VERSION llvm-$VERSION-orig
-
-cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
-
-diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-llvm-64bit-atomic.patch
-
-mv llvm-$VERSION-llvm-64bit-atomic.patch ../patches
-
-rm -rf ./llvm-$VERSION
-rm -rf ./llvm-$VERSION-orig
Property changes on: create-13.0.0-llvm-64bit-atomic-patch/create.patch.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: create-13.0.0-llvm-64bit-atomic-patch/llvm-13.0.0-new/llvm/cmake/modules/CheckAtomic.cmake
===================================================================
--- create-13.0.0-llvm-64bit-atomic-patch/llvm-13.0.0-new/llvm/cmake/modules/CheckAtomic.cmake (revision 39)
+++ create-13.0.0-llvm-64bit-atomic-patch/llvm-13.0.0-new/llvm/cmake/modules/CheckAtomic.cmake (nonexistent)
@@ -1,115 +0,0 @@
-# atomic builtins are required for threading support.
-
-INCLUDE(CheckCXXSourceCompiles)
-INCLUDE(CheckLibraryExists)
-
-# Sometimes linking against libatomic is required for atomic ops, if
-# the platform doesn't support lock-free atomics.
-
-function(check_working_cxx_atomics varname)
- set(OLD_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
- set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -std=c++11")
- CHECK_CXX_SOURCE_COMPILES("
-#include <atomic>
-std::atomic<int> x;
-std::atomic<short> y;
-std::atomic<char> z;
-int main() {
- ++z;
- ++y;
- return ++x;
-}
-" ${varname})
- set(CMAKE_REQUIRED_FLAGS ${OLD_CMAKE_REQUIRED_FLAGS})
-endfunction(check_working_cxx_atomics)
-
-function(check_working_cxx_atomics64 varname)
- set(OLD_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
- set(CMAKE_REQUIRED_FLAGS "-std=c++11 ${CMAKE_REQUIRED_FLAGS}")
- CHECK_CXX_SOURCE_COMPILES("
-#include <atomic>
-#include <cstdint>
-std::atomic<uint64_t> x (0);
-std::atomic<double> y (0);
-int main() {
- uint64_t i = x.load(std::memory_order_relaxed);
- double j = y.load(std::memory_order_relaxed);
- (void)i;
- (void)j;
- return 0;
-}
-" ${varname})
- set(CMAKE_REQUIRED_FLAGS ${OLD_CMAKE_REQUIRED_FLAGS})
-endfunction(check_working_cxx_atomics64)
-
-
-# Check for (non-64-bit) atomic operations.
-if(MSVC)
- set(HAVE_CXX_ATOMICS_WITHOUT_LIB True)
-elseif(LLVM_COMPILER_IS_GCC_COMPATIBLE)
- # First check if atomics work without the library.
- check_working_cxx_atomics(HAVE_CXX_ATOMICS_WITHOUT_LIB)
- # If not, check if the library exists, and atomics work with it.
- if(NOT HAVE_CXX_ATOMICS_WITHOUT_LIB)
- check_library_exists(atomic __atomic_fetch_add_4 "" HAVE_LIBATOMIC)
- if(HAVE_LIBATOMIC)
- list(APPEND CMAKE_REQUIRED_LIBRARIES "atomic")
- check_working_cxx_atomics(HAVE_CXX_ATOMICS_WITH_LIB)
- if (NOT HAVE_CXX_ATOMICS_WITH_LIB)
- message(FATAL_ERROR "Host compiler must support std::atomic!")
- endif()
- else()
- message(FATAL_ERROR "Host compiler appears to require libatomic, but cannot find it.")
- endif()
- endif()
-endif()
-
-# Check for 64 bit atomic operations.
-if(MSVC)
- set(HAVE_CXX_ATOMICS64_WITHOUT_LIB True)
-elseif(LLVM_COMPILER_IS_GCC_COMPATIBLE)
- # First check if atomics work without the library.
- check_working_cxx_atomics64(HAVE_CXX_ATOMICS64_WITHOUT_LIB)
- # If not, check if the library exists, and atomics work with it.
- if(NOT HAVE_CXX_ATOMICS64_WITHOUT_LIB)
- check_library_exists(atomic __atomic_load_8 "" HAVE_CXX_LIBATOMICS64)
- if(HAVE_CXX_LIBATOMICS64)
- list(APPEND CMAKE_REQUIRED_LIBRARIES "atomic")
- check_working_cxx_atomics64(HAVE_CXX_ATOMICS64_WITH_LIB)
- if (NOT HAVE_CXX_ATOMICS64_WITH_LIB)
- message(FATAL_ERROR "Host compiler must support 64-bit std::atomic!")
- endif()
- else()
- message(FATAL_ERROR "Host compiler appears to require libatomic for 64-bit operations, but cannot find it.")
- endif()
- endif()
-endif()
-
-## TODO: This define is only used for the legacy atomic operations in
-## llvm's Atomic.h, which should be replaced. Other code simply
-## assumes C++11 <atomic> works.
-CHECK_CXX_SOURCE_COMPILES("
-#ifdef _MSC_VER
-#include <windows.h>
-#endif
-int main() {
-#ifdef _MSC_VER
- volatile LONG val = 1;
- MemoryBarrier();
- InterlockedCompareExchange(&val, 0, 1);
- InterlockedIncrement(&val);
- InterlockedDecrement(&val);
-#else
- volatile unsigned long val = 1;
- __sync_synchronize();
- __sync_val_compare_and_swap(&val, 1, 0);
- __sync_add_and_fetch(&val, 1);
- __sync_sub_and_fetch(&val, 1);
-#endif
- return 0;
- }
-" LLVM_HAS_ATOMICS)
-
-if( NOT LLVM_HAS_ATOMICS )
- message(STATUS "Warning: LLVM will be built thread-unsafe because atomic builtins are missing")
-endif()
Index: create-13.0.0-llvm-64bit-atomic-patch/llvm-13.0.0-new/llvm/cmake/modules
===================================================================
--- create-13.0.0-llvm-64bit-atomic-patch/llvm-13.0.0-new/llvm/cmake/modules (revision 39)
+++ create-13.0.0-llvm-64bit-atomic-patch/llvm-13.0.0-new/llvm/cmake/modules (nonexistent)
Property changes on: create-13.0.0-llvm-64bit-atomic-patch/llvm-13.0.0-new/llvm/cmake/modules
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-llvm-64bit-atomic-patch/llvm-13.0.0-new/llvm/cmake
===================================================================
--- create-13.0.0-llvm-64bit-atomic-patch/llvm-13.0.0-new/llvm/cmake (revision 39)
+++ create-13.0.0-llvm-64bit-atomic-patch/llvm-13.0.0-new/llvm/cmake (nonexistent)
Property changes on: create-13.0.0-llvm-64bit-atomic-patch/llvm-13.0.0-new/llvm/cmake
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-llvm-64bit-atomic-patch/llvm-13.0.0-new/llvm
===================================================================
--- create-13.0.0-llvm-64bit-atomic-patch/llvm-13.0.0-new/llvm (revision 39)
+++ create-13.0.0-llvm-64bit-atomic-patch/llvm-13.0.0-new/llvm (nonexistent)
Property changes on: create-13.0.0-llvm-64bit-atomic-patch/llvm-13.0.0-new/llvm
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-llvm-64bit-atomic-patch/llvm-13.0.0-new
===================================================================
--- create-13.0.0-llvm-64bit-atomic-patch/llvm-13.0.0-new (revision 39)
+++ create-13.0.0-llvm-64bit-atomic-patch/llvm-13.0.0-new (nonexistent)
Property changes on: create-13.0.0-llvm-64bit-atomic-patch/llvm-13.0.0-new
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-llvm-64bit-atomic-patch
===================================================================
--- create-13.0.0-llvm-64bit-atomic-patch (revision 39)
+++ create-13.0.0-llvm-64bit-atomic-patch (nonexistent)
Property changes on: create-13.0.0-llvm-64bit-atomic-patch
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-clang-gnu-triple-patch/file.list
===================================================================
--- create-13.0.0-clang-gnu-triple-patch/file.list (revision 39)
+++ create-13.0.0-clang-gnu-triple-patch/file.list (nonexistent)
@@ -1 +0,0 @@
-llvm-13.0.0/clang/lib/Driver/ToolChains/Gnu.cpp
Index: create-13.0.0-clang-gnu-triple-patch/create.patch.sh
===================================================================
--- create-13.0.0-clang-gnu-triple-patch/create.patch.sh (revision 39)
+++ create-13.0.0-clang-gnu-triple-patch/create.patch.sh (nonexistent)
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-VERSION=13.0.0
-
-tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
-mv llvm-$VERSION llvm-$VERSION-orig
-
-cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
-
-diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-clang-gnu-triple.patch
-
-mv llvm-$VERSION-clang-gnu-triple.patch ../patches
-
-rm -rf ./llvm-$VERSION
-rm -rf ./llvm-$VERSION-orig
Property changes on: create-13.0.0-clang-gnu-triple-patch/create.patch.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: create-13.0.0-clang-gnu-triple-patch/llvm-13.0.0-new/clang/lib/Driver/ToolChains/Gnu.cpp
===================================================================
--- create-13.0.0-clang-gnu-triple-patch/llvm-13.0.0-new/clang/lib/Driver/ToolChains/Gnu.cpp (revision 39)
+++ create-13.0.0-clang-gnu-triple-patch/llvm-13.0.0-new/clang/lib/Driver/ToolChains/Gnu.cpp (nonexistent)
@@ -1,3096 +0,0 @@
-//===--- Gnu.cpp - Gnu Tool and ToolChain Implementations -------*- C++ -*-===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-
-#include "Gnu.h"
-#include "Arch/ARM.h"
-#include "Arch/Mips.h"
-#include "Arch/PPC.h"
-#include "Arch/RISCV.h"
-#include "Arch/Sparc.h"
-#include "Arch/SystemZ.h"
-#include "CommonArgs.h"
-#include "Linux.h"
-#include "clang/Config/config.h" // for GCC_INSTALL_PREFIX
-#include "clang/Driver/Compilation.h"
-#include "clang/Driver/Driver.h"
-#include "clang/Driver/DriverDiagnostic.h"
-#include "clang/Driver/Options.h"
-#include "clang/Driver/Tool.h"
-#include "clang/Driver/ToolChain.h"
-#include "llvm/Option/ArgList.h"
-#include "llvm/Support/CodeGen.h"
-#include "llvm/Support/Path.h"
-#include "llvm/Support/TargetParser.h"
-#include "llvm/Support/VirtualFileSystem.h"
-#include <system_error>
-
-using namespace clang::driver;
-using namespace clang::driver::toolchains;
-using namespace clang;
-using namespace llvm::opt;
-
-using tools::addMultilibFlag;
-using tools::addPathIfExists;
-
-static bool forwardToGCC(const Option &O) {
- // LinkerInput options have been forwarded. Don't duplicate.
- if (O.hasFlag(options::LinkerInput))
- return false;
- return O.matches(options::OPT_Link_Group) || O.hasFlag(options::LinkOption);
-}
-
-// Switch CPU names not recognized by GNU assembler to a close CPU that it does
-// recognize, instead of a lower march from being picked in the absence of a cpu
-// flag.
-static void normalizeCPUNamesForAssembler(const ArgList &Args,
- ArgStringList &CmdArgs) {
- if (Arg *A = Args.getLastArg(options::OPT_mcpu_EQ)) {
- StringRef CPUArg(A->getValue());
- if (CPUArg.equals_insensitive("krait"))
- CmdArgs.push_back("-mcpu=cortex-a15");
- else if (CPUArg.equals_insensitive("kryo"))
- CmdArgs.push_back("-mcpu=cortex-a57");
- else
- Args.AddLastArg(CmdArgs, options::OPT_mcpu_EQ);
- }
-}
-
-void tools::gcc::Common::ConstructJob(Compilation &C, const JobAction &JA,
- const InputInfo &Output,
- const InputInfoList &Inputs,
- const ArgList &Args,
- const char *LinkingOutput) const {
- const Driver &D = getToolChain().getDriver();
- ArgStringList CmdArgs;
-
- for (const auto &A : Args) {
- if (forwardToGCC(A->getOption())) {
- // It is unfortunate that we have to claim here, as this means
- // we will basically never report anything interesting for
- // platforms using a generic gcc, even if we are just using gcc
- // to get to the assembler.
- A->claim();
-
- A->render(Args, CmdArgs);
- }
- }
-
- RenderExtraToolArgs(JA, CmdArgs);
-
- // If using a driver driver, force the arch.
- if (getToolChain().getTriple().isOSDarwin()) {
- CmdArgs.push_back("-arch");
- CmdArgs.push_back(
- Args.MakeArgString(getToolChain().getDefaultUniversalArchName()));
- }
-
- // Try to force gcc to match the tool chain we want, if we recognize
- // the arch.
- //
- // FIXME: The triple class should directly provide the information we want
- // here.
- switch (getToolChain().getArch()) {
- default:
- break;
- case llvm::Triple::x86:
- case llvm::Triple::ppc:
- case llvm::Triple::ppcle:
- CmdArgs.push_back("-m32");
- break;
- case llvm::Triple::x86_64:
- case llvm::Triple::ppc64:
- case llvm::Triple::ppc64le:
- CmdArgs.push_back("-m64");
- break;
- case llvm::Triple::sparcel:
- CmdArgs.push_back("-EL");
- break;
- }
-
- if (Output.isFilename()) {
- CmdArgs.push_back("-o");
- CmdArgs.push_back(Output.getFilename());
- } else {
- assert(Output.isNothing() && "Unexpected output");
- CmdArgs.push_back("-fsyntax-only");
- }
-
- Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA, options::OPT_Xassembler);
-
- // Only pass -x if gcc will understand it; otherwise hope gcc
- // understands the suffix correctly. The main use case this would go
- // wrong in is for linker inputs if they happened to have an odd
- // suffix; really the only way to get this to happen is a command
- // like '-x foobar a.c' which will treat a.c like a linker input.
- //
- // FIXME: For the linker case specifically, can we safely convert
- // inputs into '-Wl,' options?
- for (const auto &II : Inputs) {
- // Don't try to pass LLVM or AST inputs to a generic gcc.
- if (types::isLLVMIR(II.getType()))
- D.Diag(clang::diag::err_drv_no_linker_llvm_support)
- << getToolChain().getTripleString();
- else if (II.getType() == types::TY_AST)
- D.Diag(diag::err_drv_no_ast_support) << getToolChain().getTripleString();
- else if (II.getType() == types::TY_ModuleFile)
- D.Diag(diag::err_drv_no_module_support)
- << getToolChain().getTripleString();
-
- if (types::canTypeBeUserSpecified(II.getType())) {
- CmdArgs.push_back("-x");
- CmdArgs.push_back(types::getTypeName(II.getType()));
- }
-
- if (II.isFilename())
- CmdArgs.push_back(II.getFilename());
- else {
- const Arg &A = II.getInputArg();
-
- // Reverse translate some rewritten options.
- if (A.getOption().matches(options::OPT_Z_reserved_lib_stdcxx)) {
- CmdArgs.push_back("-lstdc++");
- continue;
- }
-
- // Don't render as input, we need gcc to do the translations.
- A.render(Args, CmdArgs);
- }
- }
-
- const std::string &customGCCName = D.getCCCGenericGCCName();
- const char *GCCName;
- if (!customGCCName.empty())
- GCCName = customGCCName.c_str();
- else if (D.CCCIsCXX()) {
- GCCName = "g++";
- } else
- GCCName = "gcc";
-
- const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath(GCCName));
- C.addCommand(std::make_unique<Command>(JA, *this,
- ResponseFileSupport::AtFileCurCP(),
- Exec, CmdArgs, Inputs, Output));
-}
-
-void tools::gcc::Preprocessor::RenderExtraToolArgs(
- const JobAction &JA, ArgStringList &CmdArgs) const {
- CmdArgs.push_back("-E");
-}
-
-void tools::gcc::Compiler::RenderExtraToolArgs(const JobAction &JA,
- ArgStringList &CmdArgs) const {
- const Driver &D = getToolChain().getDriver();
-
- switch (JA.getType()) {
- // If -flto, etc. are present then make sure not to force assembly output.
- case types::TY_LLVM_IR:
- case types::TY_LTO_IR:
- case types::TY_LLVM_BC:
- case types::TY_LTO_BC:
- CmdArgs.push_back("-c");
- break;
- // We assume we've got an "integrated" assembler in that gcc will produce an
- // object file itself.
- case types::TY_Object:
- CmdArgs.push_back("-c");
- break;
- case types::TY_PP_Asm:
- CmdArgs.push_back("-S");
- break;
- case types::TY_Nothing:
- CmdArgs.push_back("-fsyntax-only");
- break;
- default:
- D.Diag(diag::err_drv_invalid_gcc_output_type) << getTypeName(JA.getType());
- }
-}
-
-void tools::gcc::Linker::RenderExtraToolArgs(const JobAction &JA,
- ArgStringList &CmdArgs) const {
- // The types are (hopefully) good enough.
-}
-
-// On Arm the endianness of the output file is determined by the target and
-// can be overridden by the pseudo-target flags '-mlittle-endian'/'-EL' and
-// '-mbig-endian'/'-EB'. Unlike other targets the flag does not result in a
-// normalized triple so we must handle the flag here.
-static bool isArmBigEndian(const llvm::Triple &Triple,
- const ArgList &Args) {
- bool IsBigEndian = false;
- switch (Triple.getArch()) {
- case llvm::Triple::armeb:
- case llvm::Triple::thumbeb:
- IsBigEndian = true;
- LLVM_FALLTHROUGH;
- case llvm::Triple::arm:
- case llvm::Triple::thumb:
- if (Arg *A = Args.getLastArg(options::OPT_mlittle_endian,
- options::OPT_mbig_endian))
- IsBigEndian = !A->getOption().matches(options::OPT_mlittle_endian);
- break;
- default:
- break;
- }
- return IsBigEndian;
-}
-
-static const char *getLDMOption(const llvm::Triple &T, const ArgList &Args) {
- switch (T.getArch()) {
- case llvm::Triple::x86:
- if (T.isOSIAMCU())
- return "elf_iamcu";
- return "elf_i386";
- case llvm::Triple::aarch64:
- return "aarch64linux";
- case llvm::Triple::aarch64_be:
- return "aarch64linuxb";
- case llvm::Triple::arm:
- case llvm::Triple::thumb:
- case llvm::Triple::armeb:
- case llvm::Triple::thumbeb:
- return isArmBigEndian(T, Args) ? "armelfb_linux_eabi" : "armelf_linux_eabi";
- case llvm::Triple::m68k:
- return "m68kelf";
- case llvm::Triple::ppc:
- if (T.isOSLinux())
- return "elf32ppclinux";
- return "elf32ppc";
- case llvm::Triple::ppcle:
- if (T.isOSLinux())
- return "elf32lppclinux";
- return "elf32lppc";
- case llvm::Triple::ppc64:
- return "elf64ppc";
- case llvm::Triple::ppc64le:
- return "elf64lppc";
- case llvm::Triple::riscv32:
- return "elf32lriscv";
- case llvm::Triple::riscv64:
- return "elf64lriscv";
- case llvm::Triple::sparc:
- case llvm::Triple::sparcel:
- return "elf32_sparc";
- case llvm::Triple::sparcv9:
- return "elf64_sparc";
- case llvm::Triple::mips:
- return "elf32btsmip";
- case llvm::Triple::mipsel:
- return "elf32ltsmip";
- case llvm::Triple::mips64:
- if (tools::mips::hasMipsAbiArg(Args, "n32") ||
- T.getEnvironment() == llvm::Triple::GNUABIN32)
- return "elf32btsmipn32";
- return "elf64btsmip";
- case llvm::Triple::mips64el:
- if (tools::mips::hasMipsAbiArg(Args, "n32") ||
- T.getEnvironment() == llvm::Triple::GNUABIN32)
- return "elf32ltsmipn32";
- return "elf64ltsmip";
- case llvm::Triple::systemz:
- return "elf64_s390";
- case llvm::Triple::x86_64:
- if (T.isX32())
- return "elf32_x86_64";
- return "elf_x86_64";
- case llvm::Triple::ve:
- return "elf64ve";
- default:
- return nullptr;
- }
-}
-
-static bool getPIE(const ArgList &Args, const ToolChain &TC) {
- if (Args.hasArg(options::OPT_shared) || Args.hasArg(options::OPT_static) ||
- Args.hasArg(options::OPT_r) || Args.hasArg(options::OPT_static_pie))
- return false;
-
- Arg *A = Args.getLastArg(options::OPT_pie, options::OPT_no_pie,
- options::OPT_nopie);
- if (!A)
- return TC.isPIEDefault();
- return A->getOption().matches(options::OPT_pie);
-}
-
-static bool getStaticPIE(const ArgList &Args, const ToolChain &TC) {
- bool HasStaticPIE = Args.hasArg(options::OPT_static_pie);
- // -no-pie is an alias for -nopie. So, handling -nopie takes care of
- // -no-pie as well.
- if (HasStaticPIE && Args.hasArg(options::OPT_nopie)) {
- const Driver &D = TC.getDriver();
- const llvm::opt::OptTable &Opts = D.getOpts();
- const char *StaticPIEName = Opts.getOptionName(options::OPT_static_pie);
- const char *NoPIEName = Opts.getOptionName(options::OPT_nopie);
- D.Diag(diag::err_drv_cannot_mix_options) << StaticPIEName << NoPIEName;
- }
- return HasStaticPIE;
-}
-
-static bool getStatic(const ArgList &Args) {
- return Args.hasArg(options::OPT_static) &&
- !Args.hasArg(options::OPT_static_pie);
-}
-
-void tools::gnutools::StaticLibTool::ConstructJob(
- Compilation &C, const JobAction &JA, const InputInfo &Output,
- const InputInfoList &Inputs, const ArgList &Args,
- const char *LinkingOutput) const {
- const Driver &D = getToolChain().getDriver();
-
- // Silence warning for "clang -g foo.o -o foo"
- Args.ClaimAllArgs(options::OPT_g_Group);
- // and "clang -emit-llvm foo.o -o foo"
- Args.ClaimAllArgs(options::OPT_emit_llvm);
- // and for "clang -w foo.o -o foo". Other warning options are already
- // handled somewhere else.
- Args.ClaimAllArgs(options::OPT_w);
- // Silence warnings when linking C code with a C++ '-stdlib' argument.
- Args.ClaimAllArgs(options::OPT_stdlib_EQ);
-
- // ar tool command "llvm-ar <options> <output_file> <input_files>".
- ArgStringList CmdArgs;
- // Create and insert file members with a deterministic index.
- CmdArgs.push_back("rcsD");
- CmdArgs.push_back(Output.getFilename());
-
- for (const auto &II : Inputs) {
- if (II.isFilename()) {
- CmdArgs.push_back(II.getFilename());
- }
- }
-
- // Delete old output archive file if it already exists before generating a new
- // archive file.
- auto OutputFileName = Output.getFilename();
- if (Output.isFilename() && llvm::sys::fs::exists(OutputFileName)) {
- if (std::error_code EC = llvm::sys::fs::remove(OutputFileName)) {
- D.Diag(diag::err_drv_unable_to_remove_file) << EC.message();
- return;
- }
- }
-
- const char *Exec = Args.MakeArgString(getToolChain().GetStaticLibToolPath());
- C.addCommand(std::make_unique<Command>(JA, *this,
- ResponseFileSupport::AtFileCurCP(),
- Exec, CmdArgs, Inputs, Output));
-}
-
-void tools::gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA,
- const InputInfo &Output,
- const InputInfoList &Inputs,
- const ArgList &Args,
- const char *LinkingOutput) const {
- // FIXME: The Linker class constructor takes a ToolChain and not a
- // Generic_ELF, so the static_cast might return a reference to a invalid
- // instance (see PR45061). Ideally, the Linker constructor needs to take a
- // Generic_ELF instead.
- const toolchains::Generic_ELF &ToolChain =
- static_cast<const toolchains::Generic_ELF &>(getToolChain());
- const Driver &D = ToolChain.getDriver();
-
- const llvm::Triple &Triple = getToolChain().getEffectiveTriple();
-
- const llvm::Triple::ArchType Arch = ToolChain.getArch();
- const bool isAndroid = ToolChain.getTriple().isAndroid();
- const bool IsIAMCU = ToolChain.getTriple().isOSIAMCU();
- const bool IsVE = ToolChain.getTriple().isVE();
- const bool IsPIE = getPIE(Args, ToolChain);
- const bool IsStaticPIE = getStaticPIE(Args, ToolChain);
- const bool IsStatic = getStatic(Args);
- const bool HasCRTBeginEndFiles =
- ToolChain.getTriple().hasEnvironment() ||
- (ToolChain.getTriple().getVendor() != llvm::Triple::MipsTechnologies);
-
- ArgStringList CmdArgs;
-
- // Silence warning for "clang -g foo.o -o foo"
- Args.ClaimAllArgs(options::OPT_g_Group);
- // and "clang -emit-llvm foo.o -o foo"
- Args.ClaimAllArgs(options::OPT_emit_llvm);
- // and for "clang -w foo.o -o foo". Other warning options are already
- // handled somewhere else.
- Args.ClaimAllArgs(options::OPT_w);
-
- if (!D.SysRoot.empty())
- CmdArgs.push_back(Args.MakeArgString("--sysroot=" + D.SysRoot));
-
- if (IsPIE)
- CmdArgs.push_back("-pie");
-
- if (IsStaticPIE) {
- CmdArgs.push_back("-static");
- CmdArgs.push_back("-pie");
- CmdArgs.push_back("--no-dynamic-linker");
- CmdArgs.push_back("-z");
- CmdArgs.push_back("text");
- }
-
- if (ToolChain.isNoExecStackDefault()) {
- CmdArgs.push_back("-z");
- CmdArgs.push_back("noexecstack");
- }
-
- if (Args.hasArg(options::OPT_rdynamic))
- CmdArgs.push_back("-export-dynamic");
-
- if (Args.hasArg(options::OPT_s))
- CmdArgs.push_back("-s");
-
- if (Triple.isARM() || Triple.isThumb() || Triple.isAArch64()) {
- bool IsBigEndian = isArmBigEndian(Triple, Args);
- if (IsBigEndian)
- arm::appendBE8LinkFlag(Args, CmdArgs, Triple);
- IsBigEndian = IsBigEndian || Arch == llvm::Triple::aarch64_be;
- CmdArgs.push_back(IsBigEndian ? "-EB" : "-EL");
- }
-
- // Most Android ARM64 targets should enable the linker fix for erratum
- // 843419. Only non-Cortex-A53 devices are allowed to skip this flag.
- if (Arch == llvm::Triple::aarch64 && isAndroid) {
- std::string CPU = getCPUName(Args, Triple);
- if (CPU.empty() || CPU == "generic" || CPU == "cortex-a53")
- CmdArgs.push_back("--fix-cortex-a53-843419");
- }
-
- // Android does not allow shared text relocations. Emit a warning if the
- // user's code contains any.
- if (isAndroid)
- CmdArgs.push_back("--warn-shared-textrel");
-
- ToolChain.addExtraOpts(CmdArgs);
-
- CmdArgs.push_back("--eh-frame-hdr");
-
- if (const char *LDMOption = getLDMOption(ToolChain.getTriple(), Args)) {
- CmdArgs.push_back("-m");
- CmdArgs.push_back(LDMOption);
- } else {
- D.Diag(diag::err_target_unknown_triple) << Triple.str();
- return;
- }
-
- if (IsStatic) {
- if (Arch == llvm::Triple::arm || Arch == llvm::Triple::armeb ||
- Arch == llvm::Triple::thumb || Arch == llvm::Triple::thumbeb)
- CmdArgs.push_back("-Bstatic");
- else
- CmdArgs.push_back("-static");
- } else if (Args.hasArg(options::OPT_shared)) {
- CmdArgs.push_back("-shared");
- }
-
- if (!IsStatic) {
- if (Args.hasArg(options::OPT_rdynamic))
- CmdArgs.push_back("-export-dynamic");
-
- if (!Args.hasArg(options::OPT_shared) && !IsStaticPIE) {
- CmdArgs.push_back("-dynamic-linker");
- CmdArgs.push_back(Args.MakeArgString(Twine(D.DyldPrefix) +
- ToolChain.getDynamicLinker(Args)));
- }
- }
-
- CmdArgs.push_back("-o");
- CmdArgs.push_back(Output.getFilename());
-
- if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles)) {
- if (!isAndroid && !IsIAMCU) {
- const char *crt1 = nullptr;
- if (!Args.hasArg(options::OPT_shared)) {
- if (Args.hasArg(options::OPT_pg))
- crt1 = "gcrt1.o";
- else if (IsPIE)
- crt1 = "Scrt1.o";
- else if (IsStaticPIE)
- crt1 = "rcrt1.o";
- else
- crt1 = "crt1.o";
- }
- if (crt1)
- CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath(crt1)));
-
- CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crti.o")));
- }
-
- if (IsVE) {
- CmdArgs.push_back("-z");
- CmdArgs.push_back("max-page-size=0x4000000");
- }
-
- if (IsIAMCU)
- CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crt0.o")));
- else if (HasCRTBeginEndFiles) {
- std::string P;
- if (ToolChain.GetRuntimeLibType(Args) == ToolChain::RLT_CompilerRT &&
- !isAndroid) {
- std::string crtbegin = ToolChain.getCompilerRT(Args, "crtbegin",
- ToolChain::FT_Object);
- if (ToolChain.getVFS().exists(crtbegin))
- P = crtbegin;
- }
- if (P.empty()) {
- const char *crtbegin;
- if (IsStatic)
- crtbegin = isAndroid ? "crtbegin_static.o" : "crtbeginT.o";
- else if (Args.hasArg(options::OPT_shared))
- crtbegin = isAndroid ? "crtbegin_so.o" : "crtbeginS.o";
- else if (IsPIE || IsStaticPIE)
- crtbegin = isAndroid ? "crtbegin_dynamic.o" : "crtbeginS.o";
- else
- crtbegin = isAndroid ? "crtbegin_dynamic.o" : "crtbegin.o";
- P = ToolChain.GetFilePath(crtbegin);
- }
- CmdArgs.push_back(Args.MakeArgString(P));
- }
-
- // Add crtfastmath.o if available and fast math is enabled.
- ToolChain.addFastMathRuntimeIfAvailable(Args, CmdArgs);
- }
-
- Args.AddAllArgs(CmdArgs, options::OPT_L);
- Args.AddAllArgs(CmdArgs, options::OPT_u);
-
- ToolChain.AddFilePathLibArgs(Args, CmdArgs);
-
- if (D.isUsingLTO()) {
- assert(!Inputs.empty() && "Must have at least one input.");
- addLTOOptions(ToolChain, Args, CmdArgs, Output, Inputs[0],
- D.getLTOMode() == LTOK_Thin);
- }
-
- if (Args.hasArg(options::OPT_Z_Xlinker__no_demangle))
- CmdArgs.push_back("--no-demangle");
-
- bool NeedsSanitizerDeps = addSanitizerRuntimes(ToolChain, Args, CmdArgs);
- bool NeedsXRayDeps = addXRayRuntime(ToolChain, Args, CmdArgs);
- addLinkerCompressDebugSectionsOption(ToolChain, Args, CmdArgs);
- AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs, JA);
- // The profile runtime also needs access to system libraries.
- getToolChain().addProfileRTLibs(Args, CmdArgs);
-
- if (D.CCCIsCXX() &&
- !Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs)) {
- if (ToolChain.ShouldLinkCXXStdlib(Args)) {
- bool OnlyLibstdcxxStatic = Args.hasArg(options::OPT_static_libstdcxx) &&
- !Args.hasArg(options::OPT_static);
- if (OnlyLibstdcxxStatic)
- CmdArgs.push_back("-Bstatic");
- ToolChain.AddCXXStdlibLibArgs(Args, CmdArgs);
- if (OnlyLibstdcxxStatic)
- CmdArgs.push_back("-Bdynamic");
- }
- CmdArgs.push_back("-lm");
- }
- // Silence warnings when linking C code with a C++ '-stdlib' argument.
- Args.ClaimAllArgs(options::OPT_stdlib_EQ);
-
- if (!Args.hasArg(options::OPT_nostdlib)) {
- if (!Args.hasArg(options::OPT_nodefaultlibs)) {
- if (IsStatic || IsStaticPIE)
- CmdArgs.push_back("--start-group");
-
- if (NeedsSanitizerDeps)
- linkSanitizerRuntimeDeps(ToolChain, CmdArgs);
-
- if (NeedsXRayDeps)
- linkXRayRuntimeDeps(ToolChain, CmdArgs);
-
- bool WantPthread = Args.hasArg(options::OPT_pthread) ||
- Args.hasArg(options::OPT_pthreads);
-
- // Use the static OpenMP runtime with -static-openmp
- bool StaticOpenMP = Args.hasArg(options::OPT_static_openmp) &&
- !Args.hasArg(options::OPT_static);
-
- // FIXME: Only pass GompNeedsRT = true for platforms with libgomp that
- // require librt. Most modern Linux platforms do, but some may not.
- if (addOpenMPRuntime(CmdArgs, ToolChain, Args, StaticOpenMP,
- JA.isHostOffloading(Action::OFK_OpenMP),
- /* GompNeedsRT= */ true))
- // OpenMP runtimes implies pthreads when using the GNU toolchain.
- // FIXME: Does this really make sense for all GNU toolchains?
- WantPthread = true;
-
- AddRunTimeLibs(ToolChain, D, CmdArgs, Args);
-
- if (WantPthread && !isAndroid)
- CmdArgs.push_back("-lpthread");
-
- if (Args.hasArg(options::OPT_fsplit_stack))
- CmdArgs.push_back("--wrap=pthread_create");
-
- if (!Args.hasArg(options::OPT_nolibc))
- CmdArgs.push_back("-lc");
-
- // Add IAMCU specific libs, if needed.
- if (IsIAMCU)
- CmdArgs.push_back("-lgloss");
-
- if (IsStatic || IsStaticPIE)
- CmdArgs.push_back("--end-group");
- else
- AddRunTimeLibs(ToolChain, D, CmdArgs, Args);
-
- // Add IAMCU specific libs (outside the group), if needed.
- if (IsIAMCU) {
- CmdArgs.push_back("--as-needed");
- CmdArgs.push_back("-lsoftfp");
- CmdArgs.push_back("--no-as-needed");
- }
- }
-
- if (!Args.hasArg(options::OPT_nostartfiles) && !IsIAMCU) {
- if (HasCRTBeginEndFiles) {
- std::string P;
- if (ToolChain.GetRuntimeLibType(Args) == ToolChain::RLT_CompilerRT &&
- !isAndroid) {
- std::string crtend = ToolChain.getCompilerRT(Args, "crtend",
- ToolChain::FT_Object);
- if (ToolChain.getVFS().exists(crtend))
- P = crtend;
- }
- if (P.empty()) {
- const char *crtend;
- if (Args.hasArg(options::OPT_shared))
- crtend = isAndroid ? "crtend_so.o" : "crtendS.o";
- else if (IsPIE || IsStaticPIE)
- crtend = isAndroid ? "crtend_android.o" : "crtendS.o";
- else
- crtend = isAndroid ? "crtend_android.o" : "crtend.o";
- P = ToolChain.GetFilePath(crtend);
- }
- CmdArgs.push_back(Args.MakeArgString(P));
- }
- if (!isAndroid)
- CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crtn.o")));
- }
- }
-
- Args.AddAllArgs(CmdArgs, options::OPT_T);
-
- const char *Exec = Args.MakeArgString(ToolChain.GetLinkerPath());
- C.addCommand(std::make_unique<Command>(JA, *this,
- ResponseFileSupport::AtFileCurCP(),
- Exec, CmdArgs, Inputs, Output));
-}
-
-void tools::gnutools::Assembler::ConstructJob(Compilation &C,
- const JobAction &JA,
- const InputInfo &Output,
- const InputInfoList &Inputs,
- const ArgList &Args,
- const char *LinkingOutput) const {
- const auto &D = getToolChain().getDriver();
-
- claimNoWarnArgs(Args);
-
- ArgStringList CmdArgs;
-
- llvm::Reloc::Model RelocationModel;
- unsigned PICLevel;
- bool IsPIE;
- const char *DefaultAssembler = "as";
- std::tie(RelocationModel, PICLevel, IsPIE) =
- ParsePICArgs(getToolChain(), Args);
-
- if (const Arg *A = Args.getLastArg(options::OPT_gz, options::OPT_gz_EQ)) {
- if (A->getOption().getID() == options::OPT_gz) {
- CmdArgs.push_back("--compress-debug-sections");
- } else {
- StringRef Value = A->getValue();
- if (Value == "none" || Value == "zlib" || Value == "zlib-gnu") {
- CmdArgs.push_back(
- Args.MakeArgString("--compress-debug-sections=" + Twine(Value)));
- } else {
- D.Diag(diag::err_drv_unsupported_option_argument)
- << A->getOption().getName() << Value;
- }
- }
- }
-
- if (getToolChain().isNoExecStackDefault()) {
- CmdArgs.push_back("--noexecstack");
- }
-
- switch (getToolChain().getArch()) {
- default:
- break;
- // Add --32/--64 to make sure we get the format we want.
- // This is incomplete
- case llvm::Triple::x86:
- CmdArgs.push_back("--32");
- break;
- case llvm::Triple::x86_64:
- if (getToolChain().getTriple().isX32())
- CmdArgs.push_back("--x32");
- else
- CmdArgs.push_back("--64");
- break;
- case llvm::Triple::ppc: {
- CmdArgs.push_back("-a32");
- CmdArgs.push_back("-mppc");
- CmdArgs.push_back("-mbig-endian");
- CmdArgs.push_back(
- ppc::getPPCAsmModeForCPU(getCPUName(Args, getToolChain().getTriple())));
- break;
- }
- case llvm::Triple::ppcle: {
- CmdArgs.push_back("-a32");
- CmdArgs.push_back("-mppc");
- CmdArgs.push_back("-mlittle-endian");
- CmdArgs.push_back(
- ppc::getPPCAsmModeForCPU(getCPUName(Args, getToolChain().getTriple())));
- break;
- }
- case llvm::Triple::ppc64: {
- CmdArgs.push_back("-a64");
- CmdArgs.push_back("-mppc64");
- CmdArgs.push_back("-mbig-endian");
- CmdArgs.push_back(
- ppc::getPPCAsmModeForCPU(getCPUName(Args, getToolChain().getTriple())));
- break;
- }
- case llvm::Triple::ppc64le: {
- CmdArgs.push_back("-a64");
- CmdArgs.push_back("-mppc64");
- CmdArgs.push_back("-mlittle-endian");
- CmdArgs.push_back(
- ppc::getPPCAsmModeForCPU(getCPUName(Args, getToolChain().getTriple())));
- break;
- }
- case llvm::Triple::riscv32:
- case llvm::Triple::riscv64: {
- StringRef ABIName = riscv::getRISCVABI(Args, getToolChain().getTriple());
- CmdArgs.push_back("-mabi");
- CmdArgs.push_back(ABIName.data());
- StringRef MArchName = riscv::getRISCVArch(Args, getToolChain().getTriple());
- CmdArgs.push_back("-march");
- CmdArgs.push_back(MArchName.data());
- break;
- }
- case llvm::Triple::sparc:
- case llvm::Triple::sparcel: {
- CmdArgs.push_back("-32");
- std::string CPU = getCPUName(Args, getToolChain().getTriple());
- CmdArgs.push_back(
- sparc::getSparcAsmModeForCPU(CPU, getToolChain().getTriple()));
- AddAssemblerKPIC(getToolChain(), Args, CmdArgs);
- break;
- }
- case llvm::Triple::sparcv9: {
- CmdArgs.push_back("-64");
- std::string CPU = getCPUName(Args, getToolChain().getTriple());
- CmdArgs.push_back(
- sparc::getSparcAsmModeForCPU(CPU, getToolChain().getTriple()));
- AddAssemblerKPIC(getToolChain(), Args, CmdArgs);
- break;
- }
- case llvm::Triple::arm:
- case llvm::Triple::armeb:
- case llvm::Triple::thumb:
- case llvm::Triple::thumbeb: {
- const llvm::Triple &Triple2 = getToolChain().getTriple();
- CmdArgs.push_back(isArmBigEndian(Triple2, Args) ? "-EB" : "-EL");
- switch (Triple2.getSubArch()) {
- case llvm::Triple::ARMSubArch_v7:
- CmdArgs.push_back("-mfpu=neon");
- break;
- case llvm::Triple::ARMSubArch_v8:
- CmdArgs.push_back("-mfpu=crypto-neon-fp-armv8");
- break;
- default:
- break;
- }
-
- switch (arm::getARMFloatABI(getToolChain(), Args)) {
- case arm::FloatABI::Invalid: llvm_unreachable("must have an ABI!");
- case arm::FloatABI::Soft:
- CmdArgs.push_back(Args.MakeArgString("-mfloat-abi=soft"));
- break;
- case arm::FloatABI::SoftFP:
- CmdArgs.push_back(Args.MakeArgString("-mfloat-abi=softfp"));
- break;
- case arm::FloatABI::Hard:
- CmdArgs.push_back(Args.MakeArgString("-mfloat-abi=hard"));
- break;
- }
-
- Args.AddLastArg(CmdArgs, options::OPT_march_EQ);
- normalizeCPUNamesForAssembler(Args, CmdArgs);
-
- Args.AddLastArg(CmdArgs, options::OPT_mfpu_EQ);
- break;
- }
- case llvm::Triple::aarch64:
- case llvm::Triple::aarch64_be: {
- CmdArgs.push_back(
- getToolChain().getArch() == llvm::Triple::aarch64_be ? "-EB" : "-EL");
- Args.AddLastArg(CmdArgs, options::OPT_march_EQ);
- normalizeCPUNamesForAssembler(Args, CmdArgs);
-
- break;
- }
- case llvm::Triple::mips:
- case llvm::Triple::mipsel:
- case llvm::Triple::mips64:
- case llvm::Triple::mips64el: {
- StringRef CPUName;
- StringRef ABIName;
- mips::getMipsCPUAndABI(Args, getToolChain().getTriple(), CPUName, ABIName);
- ABIName = mips::getGnuCompatibleMipsABIName(ABIName);
-
- CmdArgs.push_back("-march");
- CmdArgs.push_back(CPUName.data());
-
- CmdArgs.push_back("-mabi");
- CmdArgs.push_back(ABIName.data());
-
- // -mno-shared should be emitted unless -fpic, -fpie, -fPIC, -fPIE,
- // or -mshared (not implemented) is in effect.
- if (RelocationModel == llvm::Reloc::Static)
- CmdArgs.push_back("-mno-shared");
-
- // LLVM doesn't support -mplt yet and acts as if it is always given.
- // However, -mplt has no effect with the N64 ABI.
- if (ABIName != "64" && !Args.hasArg(options::OPT_mno_abicalls))
- CmdArgs.push_back("-call_nonpic");
-
- if (getToolChain().getTriple().isLittleEndian())
- CmdArgs.push_back("-EL");
- else
- CmdArgs.push_back("-EB");
-
- if (Arg *A = Args.getLastArg(options::OPT_mnan_EQ)) {
- if (StringRef(A->getValue()) == "2008")
- CmdArgs.push_back(Args.MakeArgString("-mnan=2008"));
- }
-
- // Add the last -mfp32/-mfpxx/-mfp64 or -mfpxx if it is enabled by default.
- if (Arg *A = Args.getLastArg(options::OPT_mfp32, options::OPT_mfpxx,
- options::OPT_mfp64)) {
- A->claim();
- A->render(Args, CmdArgs);
- } else if (mips::shouldUseFPXX(
- Args, getToolChain().getTriple(), CPUName, ABIName,
- mips::getMipsFloatABI(getToolChain().getDriver(), Args,
- getToolChain().getTriple())))
- CmdArgs.push_back("-mfpxx");
-
- // Pass on -mmips16 or -mno-mips16. However, the assembler equivalent of
- // -mno-mips16 is actually -no-mips16.
- if (Arg *A =
- Args.getLastArg(options::OPT_mips16, options::OPT_mno_mips16)) {
- if (A->getOption().matches(options::OPT_mips16)) {
- A->claim();
- A->render(Args, CmdArgs);
- } else {
- A->claim();
- CmdArgs.push_back("-no-mips16");
- }
- }
-
- Args.AddLastArg(CmdArgs, options::OPT_mmicromips,
- options::OPT_mno_micromips);
- Args.AddLastArg(CmdArgs, options::OPT_mdsp, options::OPT_mno_dsp);
- Args.AddLastArg(CmdArgs, options::OPT_mdspr2, options::OPT_mno_dspr2);
-
- if (Arg *A = Args.getLastArg(options::OPT_mmsa, options::OPT_mno_msa)) {
- // Do not use AddLastArg because not all versions of MIPS assembler
- // support -mmsa / -mno-msa options.
- if (A->getOption().matches(options::OPT_mmsa))
- CmdArgs.push_back(Args.MakeArgString("-mmsa"));
- }
-
- Args.AddLastArg(CmdArgs, options::OPT_mhard_float,
- options::OPT_msoft_float);
-
- Args.AddLastArg(CmdArgs, options::OPT_mdouble_float,
- options::OPT_msingle_float);
-
- Args.AddLastArg(CmdArgs, options::OPT_modd_spreg,
- options::OPT_mno_odd_spreg);
-
- AddAssemblerKPIC(getToolChain(), Args, CmdArgs);
- break;
- }
- case llvm::Triple::systemz: {
- // Always pass an -march option, since our default of z10 is later
- // than the GNU assembler's default.
- std::string CPUName = systemz::getSystemZTargetCPU(Args);
- CmdArgs.push_back(Args.MakeArgString("-march=" + CPUName));
- break;
- }
- case llvm::Triple::ve:
- DefaultAssembler = "nas";
- }
-
- for (const Arg *A : Args.filtered(options::OPT_ffile_prefix_map_EQ,
- options::OPT_fdebug_prefix_map_EQ)) {
- StringRef Map = A->getValue();
- if (Map.find('=') == StringRef::npos)
- D.Diag(diag::err_drv_invalid_argument_to_option)
- << Map << A->getOption().getName();
- else {
- CmdArgs.push_back(Args.MakeArgString("--debug-prefix-map"));
- CmdArgs.push_back(Args.MakeArgString(Map));
- }
- A->claim();
- }
-
- Args.AddAllArgs(CmdArgs, options::OPT_I);
- Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA, options::OPT_Xassembler);
-
- CmdArgs.push_back("-o");
- CmdArgs.push_back(Output.getFilename());
-
- for (const auto &II : Inputs)
- CmdArgs.push_back(II.getFilename());
-
- const char *Exec =
- Args.MakeArgString(getToolChain().GetProgramPath(DefaultAssembler));
- C.addCommand(std::make_unique<Command>(JA, *this,
- ResponseFileSupport::AtFileCurCP(),
- Exec, CmdArgs, Inputs, Output));
-
- // Handle the debug info splitting at object creation time if we're
- // creating an object.
- // TODO: Currently only works on linux with newer objcopy.
- if (Args.hasArg(options::OPT_gsplit_dwarf) &&
- getToolChain().getTriple().isOSLinux())
- SplitDebugInfo(getToolChain(), C, *this, JA, Args, Output,
- SplitDebugName(JA, Args, Inputs[0], Output));
-}
-
-namespace {
-// Filter to remove Multilibs that don't exist as a suffix to Path
-class FilterNonExistent {
- StringRef Base, File;
- llvm::vfs::FileSystem &VFS;
-
-public:
- FilterNonExistent(StringRef Base, StringRef File, llvm::vfs::FileSystem &VFS)
- : Base(Base), File(File), VFS(VFS) {}
- bool operator()(const Multilib &M) {
- return !VFS.exists(Base + M.gccSuffix() + File);
- }
-};
-} // end anonymous namespace
-
-static bool isSoftFloatABI(const ArgList &Args) {
- Arg *A = Args.getLastArg(options::OPT_msoft_float, options::OPT_mhard_float,
- options::OPT_mfloat_abi_EQ);
- if (!A)
- return false;
-
- return A->getOption().matches(options::OPT_msoft_float) ||
- (A->getOption().matches(options::OPT_mfloat_abi_EQ) &&
- A->getValue() == StringRef("soft"));
-}
-
-static bool isArmOrThumbArch(llvm::Triple::ArchType Arch) {
- return Arch == llvm::Triple::arm || Arch == llvm::Triple::thumb;
-}
-
-static bool isMipsEL(llvm::Triple::ArchType Arch) {
- return Arch == llvm::Triple::mipsel || Arch == llvm::Triple::mips64el;
-}
-
-static bool isMips16(const ArgList &Args) {
- Arg *A = Args.getLastArg(options::OPT_mips16, options::OPT_mno_mips16);
- return A && A->getOption().matches(options::OPT_mips16);
-}
-
-static bool isMicroMips(const ArgList &Args) {
- Arg *A = Args.getLastArg(options::OPT_mmicromips, options::OPT_mno_micromips);
- return A && A->getOption().matches(options::OPT_mmicromips);
-}
-
-static bool isMSP430(llvm::Triple::ArchType Arch) {
- return Arch == llvm::Triple::msp430;
-}
-
-static Multilib makeMultilib(StringRef commonSuffix) {
- return Multilib(commonSuffix, commonSuffix, commonSuffix);
-}
-
-static bool findMipsCsMultilibs(const Multilib::flags_list &Flags,
- FilterNonExistent &NonExistent,
- DetectedMultilibs &Result) {
- // Check for Code Sourcery toolchain multilibs
- MultilibSet CSMipsMultilibs;
- {
- auto MArchMips16 = makeMultilib("/mips16").flag("+m32").flag("+mips16");
-
- auto MArchMicroMips =
- makeMultilib("/micromips").flag("+m32").flag("+mmicromips");
-
- auto MArchDefault = makeMultilib("").flag("-mips16").flag("-mmicromips");
-
- auto UCLibc = makeMultilib("/uclibc").flag("+muclibc");
-
- auto SoftFloat = makeMultilib("/soft-float").flag("+msoft-float");
-
- auto Nan2008 = makeMultilib("/nan2008").flag("+mnan=2008");
-
- auto DefaultFloat =
- makeMultilib("").flag("-msoft-float").flag("-mnan=2008");
-
- auto BigEndian = makeMultilib("").flag("+EB").flag("-EL");
-
- auto LittleEndian = makeMultilib("/el").flag("+EL").flag("-EB");
-
- // Note that this one's osSuffix is ""
- auto MAbi64 = makeMultilib("")
- .gccSuffix("/64")
- .includeSuffix("/64")
- .flag("+mabi=n64")
- .flag("-mabi=n32")
- .flag("-m32");
-
- CSMipsMultilibs =
- MultilibSet()
- .Either(MArchMips16, MArchMicroMips, MArchDefault)
- .Maybe(UCLibc)
- .Either(SoftFloat, Nan2008, DefaultFloat)
- .FilterOut("/micromips/nan2008")
- .FilterOut("/mips16/nan2008")
- .Either(BigEndian, LittleEndian)
- .Maybe(MAbi64)
- .FilterOut("/mips16.*/64")
- .FilterOut("/micromips.*/64")
- .FilterOut(NonExistent)
- .setIncludeDirsCallback([](const Multilib &M) {
- std::vector<std::string> Dirs({"/include"});
- if (StringRef(M.includeSuffix()).startswith("/uclibc"))
- Dirs.push_back(
- "/../../../../mips-linux-gnu/libc/uclibc/usr/include");
- else
- Dirs.push_back("/../../../../mips-linux-gnu/libc/usr/include");
- return Dirs;
- });
- }
-
- MultilibSet DebianMipsMultilibs;
- {
- Multilib MAbiN32 =
- Multilib().gccSuffix("/n32").includeSuffix("/n32").flag("+mabi=n32");
-
- Multilib M64 = Multilib()
- .gccSuffix("/64")
- .includeSuffix("/64")
- .flag("+m64")
- .flag("-m32")
- .flag("-mabi=n32");
-
- Multilib M32 = Multilib().flag("-m64").flag("+m32").flag("-mabi=n32");
-
- DebianMipsMultilibs =
- MultilibSet().Either(M32, M64, MAbiN32).FilterOut(NonExistent);
- }
-
- // Sort candidates. Toolchain that best meets the directories tree goes first.
- // Then select the first toolchains matches command line flags.
- MultilibSet *Candidates[] = {&CSMipsMultilibs, &DebianMipsMultilibs};
- if (CSMipsMultilibs.size() < DebianMipsMultilibs.size())
- std::iter_swap(Candidates, Candidates + 1);
- for (const MultilibSet *Candidate : Candidates) {
- if (Candidate->select(Flags, Result.SelectedMultilib)) {
- if (Candidate == &DebianMipsMultilibs)
- Result.BiarchSibling = Multilib();
- Result.Multilibs = *Candidate;
- return true;
- }
- }
- return false;
-}
-
-static bool findMipsAndroidMultilibs(llvm::vfs::FileSystem &VFS, StringRef Path,
- const Multilib::flags_list &Flags,
- FilterNonExistent &NonExistent,
- DetectedMultilibs &Result) {
-
- MultilibSet AndroidMipsMultilibs =
- MultilibSet()
- .Maybe(Multilib("/mips-r2").flag("+march=mips32r2"))
- .Maybe(Multilib("/mips-r6").flag("+march=mips32r6"))
- .FilterOut(NonExistent);
-
- MultilibSet AndroidMipselMultilibs =
- MultilibSet()
- .Either(Multilib().flag("+march=mips32"),
- Multilib("/mips-r2", "", "/mips-r2").flag("+march=mips32r2"),
- Multilib("/mips-r6", "", "/mips-r6").flag("+march=mips32r6"))
- .FilterOut(NonExistent);
-
- MultilibSet AndroidMips64elMultilibs =
- MultilibSet()
- .Either(
- Multilib().flag("+march=mips64r6"),
- Multilib("/32/mips-r1", "", "/mips-r1").flag("+march=mips32"),
- Multilib("/32/mips-r2", "", "/mips-r2").flag("+march=mips32r2"),
- Multilib("/32/mips-r6", "", "/mips-r6").flag("+march=mips32r6"))
- .FilterOut(NonExistent);
-
- MultilibSet *MS = &AndroidMipsMultilibs;
- if (VFS.exists(Path + "/mips-r6"))
- MS = &AndroidMipselMultilibs;
- else if (VFS.exists(Path + "/32"))
- MS = &AndroidMips64elMultilibs;
- if (MS->select(Flags, Result.SelectedMultilib)) {
- Result.Multilibs = *MS;
- return true;
- }
- return false;
-}
-
-static bool findMipsMuslMultilibs(const Multilib::flags_list &Flags,
- FilterNonExistent &NonExistent,
- DetectedMultilibs &Result) {
- // Musl toolchain multilibs
- MultilibSet MuslMipsMultilibs;
- {
- auto MArchMipsR2 = makeMultilib("")
- .osSuffix("/mips-r2-hard-musl")
- .flag("+EB")
- .flag("-EL")
- .flag("+march=mips32r2");
-
- auto MArchMipselR2 = makeMultilib("/mipsel-r2-hard-musl")
- .flag("-EB")
- .flag("+EL")
- .flag("+march=mips32r2");
-
- MuslMipsMultilibs = MultilibSet().Either(MArchMipsR2, MArchMipselR2);
-
- // Specify the callback that computes the include directories.
- MuslMipsMultilibs.setIncludeDirsCallback([](const Multilib &M) {
- return std::vector<std::string>(
- {"/../sysroot" + M.osSuffix() + "/usr/include"});
- });
- }
- if (MuslMipsMultilibs.select(Flags, Result.SelectedMultilib)) {
- Result.Multilibs = MuslMipsMultilibs;
- return true;
- }
- return false;
-}
-
-static bool findMipsMtiMultilibs(const Multilib::flags_list &Flags,
- FilterNonExistent &NonExistent,
- DetectedMultilibs &Result) {
- // CodeScape MTI toolchain v1.2 and early.
- MultilibSet MtiMipsMultilibsV1;
- {
- auto MArchMips32 = makeMultilib("/mips32")
- .flag("+m32")
- .flag("-m64")
- .flag("-mmicromips")
- .flag("+march=mips32");
-
- auto MArchMicroMips = makeMultilib("/micromips")
- .flag("+m32")
- .flag("-m64")
- .flag("+mmicromips");
-
- auto MArchMips64r2 = makeMultilib("/mips64r2")
- .flag("-m32")
- .flag("+m64")
- .flag("+march=mips64r2");
-
- auto MArchMips64 = makeMultilib("/mips64").flag("-m32").flag("+m64").flag(
- "-march=mips64r2");
-
- auto MArchDefault = makeMultilib("")
- .flag("+m32")
- .flag("-m64")
- .flag("-mmicromips")
- .flag("+march=mips32r2");
-
- auto Mips16 = makeMultilib("/mips16").flag("+mips16");
-
- auto UCLibc = makeMultilib("/uclibc").flag("+muclibc");
-
- auto MAbi64 =
- makeMultilib("/64").flag("+mabi=n64").flag("-mabi=n32").flag("-m32");
-
- auto BigEndian = makeMultilib("").flag("+EB").flag("-EL");
-
- auto LittleEndian = makeMultilib("/el").flag("+EL").flag("-EB");
-
- auto SoftFloat = makeMultilib("/sof").flag("+msoft-float");
-
- auto Nan2008 = makeMultilib("/nan2008").flag("+mnan=2008");
-
- MtiMipsMultilibsV1 =
- MultilibSet()
- .Either(MArchMips32, MArchMicroMips, MArchMips64r2, MArchMips64,
- MArchDefault)
- .Maybe(UCLibc)
- .Maybe(Mips16)
- .FilterOut("/mips64/mips16")
- .FilterOut("/mips64r2/mips16")
- .FilterOut("/micromips/mips16")
- .Maybe(MAbi64)
- .FilterOut("/micromips/64")
- .FilterOut("/mips32/64")
- .FilterOut("^/64")
- .FilterOut("/mips16/64")
- .Either(BigEndian, LittleEndian)
- .Maybe(SoftFloat)
- .Maybe(Nan2008)
- .FilterOut(".*sof/nan2008")
- .FilterOut(NonExistent)
- .setIncludeDirsCallback([](const Multilib &M) {
- std::vector<std::string> Dirs({"/include"});
- if (StringRef(M.includeSuffix()).startswith("/uclibc"))
- Dirs.push_back("/../../../../sysroot/uclibc/usr/include");
- else
- Dirs.push_back("/../../../../sysroot/usr/include");
- return Dirs;
- });
- }
-
- // CodeScape IMG toolchain starting from v1.3.
- MultilibSet MtiMipsMultilibsV2;
- {
- auto BeHard = makeMultilib("/mips-r2-hard")
- .flag("+EB")
- .flag("-msoft-float")
- .flag("-mnan=2008")
- .flag("-muclibc");
- auto BeSoft = makeMultilib("/mips-r2-soft")
- .flag("+EB")
- .flag("+msoft-float")
- .flag("-mnan=2008");
- auto ElHard = makeMultilib("/mipsel-r2-hard")
- .flag("+EL")
- .flag("-msoft-float")
- .flag("-mnan=2008")
- .flag("-muclibc");
- auto ElSoft = makeMultilib("/mipsel-r2-soft")
- .flag("+EL")
- .flag("+msoft-float")
- .flag("-mnan=2008")
- .flag("-mmicromips");
- auto BeHardNan = makeMultilib("/mips-r2-hard-nan2008")
- .flag("+EB")
- .flag("-msoft-float")
- .flag("+mnan=2008")
- .flag("-muclibc");
- auto ElHardNan = makeMultilib("/mipsel-r2-hard-nan2008")
- .flag("+EL")
- .flag("-msoft-float")
- .flag("+mnan=2008")
- .flag("-muclibc")
- .flag("-mmicromips");
- auto BeHardNanUclibc = makeMultilib("/mips-r2-hard-nan2008-uclibc")
- .flag("+EB")
- .flag("-msoft-float")
- .flag("+mnan=2008")
- .flag("+muclibc");
- auto ElHardNanUclibc = makeMultilib("/mipsel-r2-hard-nan2008-uclibc")
- .flag("+EL")
- .flag("-msoft-float")
- .flag("+mnan=2008")
- .flag("+muclibc");
- auto BeHardUclibc = makeMultilib("/mips-r2-hard-uclibc")
- .flag("+EB")
- .flag("-msoft-float")
- .flag("-mnan=2008")
- .flag("+muclibc");
- auto ElHardUclibc = makeMultilib("/mipsel-r2-hard-uclibc")
- .flag("+EL")
- .flag("-msoft-float")
- .flag("-mnan=2008")
- .flag("+muclibc");
- auto ElMicroHardNan = makeMultilib("/micromipsel-r2-hard-nan2008")
- .flag("+EL")
- .flag("-msoft-float")
- .flag("+mnan=2008")
- .flag("+mmicromips");
- auto ElMicroSoft = makeMultilib("/micromipsel-r2-soft")
- .flag("+EL")
- .flag("+msoft-float")
- .flag("-mnan=2008")
- .flag("+mmicromips");
-
- auto O32 =
- makeMultilib("/lib").osSuffix("").flag("-mabi=n32").flag("-mabi=n64");
- auto N32 =
- makeMultilib("/lib32").osSuffix("").flag("+mabi=n32").flag("-mabi=n64");
- auto N64 =
- makeMultilib("/lib64").osSuffix("").flag("-mabi=n32").flag("+mabi=n64");
-
- MtiMipsMultilibsV2 =
- MultilibSet()
- .Either({BeHard, BeSoft, ElHard, ElSoft, BeHardNan, ElHardNan,
- BeHardNanUclibc, ElHardNanUclibc, BeHardUclibc,
- ElHardUclibc, ElMicroHardNan, ElMicroSoft})
- .Either(O32, N32, N64)
- .FilterOut(NonExistent)
- .setIncludeDirsCallback([](const Multilib &M) {
- return std::vector<std::string>({"/../../../../sysroot" +
- M.includeSuffix() +
- "/../usr/include"});
- })
- .setFilePathsCallback([](const Multilib &M) {
- return std::vector<std::string>(
- {"/../../../../mips-mti-linux-gnu/lib" + M.gccSuffix()});
- });
- }
- for (auto Candidate : {&MtiMipsMultilibsV1, &MtiMipsMultilibsV2}) {
- if (Candidate->select(Flags, Result.SelectedMultilib)) {
- Result.Multilibs = *Candidate;
- return true;
- }
- }
- return false;
-}
-
-static bool findMipsImgMultilibs(const Multilib::flags_list &Flags,
- FilterNonExistent &NonExistent,
- DetectedMultilibs &Result) {
- // CodeScape IMG toolchain v1.2 and early.
- MultilibSet ImgMultilibsV1;
- {
- auto Mips64r6 = makeMultilib("/mips64r6").flag("+m64").flag("-m32");
-
- auto LittleEndian = makeMultilib("/el").flag("+EL").flag("-EB");
-
- auto MAbi64 =
- makeMultilib("/64").flag("+mabi=n64").flag("-mabi=n32").flag("-m32");
-
- ImgMultilibsV1 =
- MultilibSet()
- .Maybe(Mips64r6)
- .Maybe(MAbi64)
- .Maybe(LittleEndian)
- .FilterOut(NonExistent)
- .setIncludeDirsCallback([](const Multilib &M) {
- return std::vector<std::string>(
- {"/include", "/../../../../sysroot/usr/include"});
- });
- }
-
- // CodeScape IMG toolchain starting from v1.3.
- MultilibSet ImgMultilibsV2;
- {
- auto BeHard = makeMultilib("/mips-r6-hard")
- .flag("+EB")
- .flag("-msoft-float")
- .flag("-mmicromips");
- auto BeSoft = makeMultilib("/mips-r6-soft")
- .flag("+EB")
- .flag("+msoft-float")
- .flag("-mmicromips");
- auto ElHard = makeMultilib("/mipsel-r6-hard")
- .flag("+EL")
- .flag("-msoft-float")
- .flag("-mmicromips");
- auto ElSoft = makeMultilib("/mipsel-r6-soft")
- .flag("+EL")
- .flag("+msoft-float")
- .flag("-mmicromips");
- auto BeMicroHard = makeMultilib("/micromips-r6-hard")
- .flag("+EB")
- .flag("-msoft-float")
- .flag("+mmicromips");
- auto BeMicroSoft = makeMultilib("/micromips-r6-soft")
- .flag("+EB")
- .flag("+msoft-float")
- .flag("+mmicromips");
- auto ElMicroHard = makeMultilib("/micromipsel-r6-hard")
- .flag("+EL")
- .flag("-msoft-float")
- .flag("+mmicromips");
- auto ElMicroSoft = makeMultilib("/micromipsel-r6-soft")
- .flag("+EL")
- .flag("+msoft-float")
- .flag("+mmicromips");
-
- auto O32 =
- makeMultilib("/lib").osSuffix("").flag("-mabi=n32").flag("-mabi=n64");
- auto N32 =
- makeMultilib("/lib32").osSuffix("").flag("+mabi=n32").flag("-mabi=n64");
- auto N64 =
- makeMultilib("/lib64").osSuffix("").flag("-mabi=n32").flag("+mabi=n64");
-
- ImgMultilibsV2 =
- MultilibSet()
- .Either({BeHard, BeSoft, ElHard, ElSoft, BeMicroHard, BeMicroSoft,
- ElMicroHard, ElMicroSoft})
- .Either(O32, N32, N64)
- .FilterOut(NonExistent)
- .setIncludeDirsCallback([](const Multilib &M) {
- return std::vector<std::string>({"/../../../../sysroot" +
- M.includeSuffix() +
- "/../usr/include"});
- })
- .setFilePathsCallback([](const Multilib &M) {
- return std::vector<std::string>(
- {"/../../../../mips-img-linux-gnu/lib" + M.gccSuffix()});
- });
- }
- for (auto Candidate : {&ImgMultilibsV1, &ImgMultilibsV2}) {
- if (Candidate->select(Flags, Result.SelectedMultilib)) {
- Result.Multilibs = *Candidate;
- return true;
- }
- }
- return false;
-}
-
-bool clang::driver::findMIPSMultilibs(const Driver &D,
- const llvm::Triple &TargetTriple,
- StringRef Path, const ArgList &Args,
- DetectedMultilibs &Result) {
- FilterNonExistent NonExistent(Path, "/crtbegin.o", D.getVFS());
-
- StringRef CPUName;
- StringRef ABIName;
- tools::mips::getMipsCPUAndABI(Args, TargetTriple, CPUName, ABIName);
-
- llvm::Triple::ArchType TargetArch = TargetTriple.getArch();
-
- Multilib::flags_list Flags;
- addMultilibFlag(TargetTriple.isMIPS32(), "m32", Flags);
- addMultilibFlag(TargetTriple.isMIPS64(), "m64", Flags);
- addMultilibFlag(isMips16(Args), "mips16", Flags);
- addMultilibFlag(CPUName == "mips32", "march=mips32", Flags);
- addMultilibFlag(CPUName == "mips32r2" || CPUName == "mips32r3" ||
- CPUName == "mips32r5" || CPUName == "p5600",
- "march=mips32r2", Flags);
- addMultilibFlag(CPUName == "mips32r6", "march=mips32r6", Flags);
- addMultilibFlag(CPUName == "mips64", "march=mips64", Flags);
- addMultilibFlag(CPUName == "mips64r2" || CPUName == "mips64r3" ||
- CPUName == "mips64r5" || CPUName == "octeon" ||
- CPUName == "octeon+",
- "march=mips64r2", Flags);
- addMultilibFlag(CPUName == "mips64r6", "march=mips64r6", Flags);
- addMultilibFlag(isMicroMips(Args), "mmicromips", Flags);
- addMultilibFlag(tools::mips::isUCLibc(Args), "muclibc", Flags);
- addMultilibFlag(tools::mips::isNaN2008(Args, TargetTriple), "mnan=2008",
- Flags);
- addMultilibFlag(ABIName == "n32", "mabi=n32", Flags);
- addMultilibFlag(ABIName == "n64", "mabi=n64", Flags);
- addMultilibFlag(isSoftFloatABI(Args), "msoft-float", Flags);
- addMultilibFlag(!isSoftFloatABI(Args), "mhard-float", Flags);
- addMultilibFlag(isMipsEL(TargetArch), "EL", Flags);
- addMultilibFlag(!isMipsEL(TargetArch), "EB", Flags);
-
- if (TargetTriple.isAndroid())
- return findMipsAndroidMultilibs(D.getVFS(), Path, Flags, NonExistent,
- Result);
-
- if (TargetTriple.getVendor() == llvm::Triple::MipsTechnologies &&
- TargetTriple.getOS() == llvm::Triple::Linux &&
- TargetTriple.getEnvironment() == llvm::Triple::UnknownEnvironment)
- return findMipsMuslMultilibs(Flags, NonExistent, Result);
-
- if (TargetTriple.getVendor() == llvm::Triple::MipsTechnologies &&
- TargetTriple.getOS() == llvm::Triple::Linux &&
- TargetTriple.isGNUEnvironment())
- return findMipsMtiMultilibs(Flags, NonExistent, Result);
-
- if (TargetTriple.getVendor() == llvm::Triple::ImaginationTechnologies &&
- TargetTriple.getOS() == llvm::Triple::Linux &&
- TargetTriple.isGNUEnvironment())
- return findMipsImgMultilibs(Flags, NonExistent, Result);
-
- if (findMipsCsMultilibs(Flags, NonExistent, Result))
- return true;
-
- // Fallback to the regular toolchain-tree structure.
- Multilib Default;
- Result.Multilibs.push_back(Default);
- Result.Multilibs.FilterOut(NonExistent);
-
- if (Result.Multilibs.select(Flags, Result.SelectedMultilib)) {
- Result.BiarchSibling = Multilib();
- return true;
- }
-
- return false;
-}
-
-static void findAndroidArmMultilibs(const Driver &D,
- const llvm::Triple &TargetTriple,
- StringRef Path, const ArgList &Args,
- DetectedMultilibs &Result) {
- // Find multilibs with subdirectories like armv7-a, thumb, armv7-a/thumb.
- FilterNonExistent NonExistent(Path, "/crtbegin.o", D.getVFS());
- Multilib ArmV7Multilib = makeMultilib("/armv7-a")
- .flag("+march=armv7-a")
- .flag("-mthumb");
- Multilib ThumbMultilib = makeMultilib("/thumb")
- .flag("-march=armv7-a")
- .flag("+mthumb");
- Multilib ArmV7ThumbMultilib = makeMultilib("/armv7-a/thumb")
- .flag("+march=armv7-a")
- .flag("+mthumb");
- Multilib DefaultMultilib = makeMultilib("")
- .flag("-march=armv7-a")
- .flag("-mthumb");
- MultilibSet AndroidArmMultilibs =
- MultilibSet()
- .Either(ThumbMultilib, ArmV7Multilib,
- ArmV7ThumbMultilib, DefaultMultilib)
- .FilterOut(NonExistent);
-
- Multilib::flags_list Flags;
- llvm::StringRef Arch = Args.getLastArgValue(options::OPT_march_EQ);
- bool IsArmArch = TargetTriple.getArch() == llvm::Triple::arm;
- bool IsThumbArch = TargetTriple.getArch() == llvm::Triple::thumb;
- bool IsV7SubArch = TargetTriple.getSubArch() == llvm::Triple::ARMSubArch_v7;
- bool IsThumbMode = IsThumbArch ||
- Args.hasFlag(options::OPT_mthumb, options::OPT_mno_thumb, false) ||
- (IsArmArch && llvm::ARM::parseArchISA(Arch) == llvm::ARM::ISAKind::THUMB);
- bool IsArmV7Mode = (IsArmArch || IsThumbArch) &&
- (llvm::ARM::parseArchVersion(Arch) == 7 ||
- (IsArmArch && Arch == "" && IsV7SubArch));
- addMultilibFlag(IsArmV7Mode, "march=armv7-a", Flags);
- addMultilibFlag(IsThumbMode, "mthumb", Flags);
-
- if (AndroidArmMultilibs.select(Flags, Result.SelectedMultilib))
- Result.Multilibs = AndroidArmMultilibs;
-}
-
-static bool findMSP430Multilibs(const Driver &D,
- const llvm::Triple &TargetTriple,
- StringRef Path, const ArgList &Args,
- DetectedMultilibs &Result) {
- FilterNonExistent NonExistent(Path, "/crtbegin.o", D.getVFS());
- Multilib WithoutExceptions = makeMultilib("/430").flag("-exceptions");
- Multilib WithExceptions = makeMultilib("/430/exceptions").flag("+exceptions");
-
- // FIXME: when clang starts to support msp430x ISA additional logic
- // to select between multilib must be implemented
- // Multilib MSP430xMultilib = makeMultilib("/large");
-
- Result.Multilibs.push_back(WithoutExceptions);
- Result.Multilibs.push_back(WithExceptions);
- Result.Multilibs.FilterOut(NonExistent);
-
- Multilib::flags_list Flags;
- addMultilibFlag(Args.hasFlag(options::OPT_fexceptions,
- options::OPT_fno_exceptions, false),
- "exceptions", Flags);
- if (Result.Multilibs.select(Flags, Result.SelectedMultilib))
- return true;
-
- return false;
-}
-
-static void findRISCVBareMetalMultilibs(const Driver &D,
- const llvm::Triple &TargetTriple,
- StringRef Path, const ArgList &Args,
- DetectedMultilibs &Result) {
- FilterNonExistent NonExistent(Path, "/crtbegin.o", D.getVFS());
- struct RiscvMultilib {
- StringRef march;
- StringRef mabi;
- };
- // currently only support the set of multilibs like riscv-gnu-toolchain does.
- // TODO: support MULTILIB_REUSE
- constexpr RiscvMultilib RISCVMultilibSet[] = {
- {"rv32i", "ilp32"}, {"rv32im", "ilp32"}, {"rv32iac", "ilp32"},
- {"rv32imac", "ilp32"}, {"rv32imafc", "ilp32f"}, {"rv64imac", "lp64"},
- {"rv64imafdc", "lp64d"}};
-
- std::vector<Multilib> Ms;
- for (auto Element : RISCVMultilibSet) {
- // multilib path rule is ${march}/${mabi}
- Ms.emplace_back(
- makeMultilib((Twine(Element.march) + "/" + Twine(Element.mabi)).str())
- .flag(Twine("+march=", Element.march).str())
- .flag(Twine("+mabi=", Element.mabi).str()));
- }
- MultilibSet RISCVMultilibs =
- MultilibSet()
- .Either(ArrayRef<Multilib>(Ms))
- .FilterOut(NonExistent)
- .setFilePathsCallback([](const Multilib &M) {
- return std::vector<std::string>(
- {M.gccSuffix(),
- "/../../../../riscv64-unknown-elf/lib" + M.gccSuffix(),
- "/../../../../riscv32-unknown-elf/lib" + M.gccSuffix()});
- });
-
-
- Multilib::flags_list Flags;
- llvm::StringSet<> Added_ABIs;
- StringRef ABIName = tools::riscv::getRISCVABI(Args, TargetTriple);
- StringRef MArch = tools::riscv::getRISCVArch(Args, TargetTriple);
- for (auto Element : RISCVMultilibSet) {
- addMultilibFlag(MArch == Element.march,
- Twine("march=", Element.march).str().c_str(), Flags);
- if (!Added_ABIs.count(Element.mabi)) {
- Added_ABIs.insert(Element.mabi);
- addMultilibFlag(ABIName == Element.mabi,
- Twine("mabi=", Element.mabi).str().c_str(), Flags);
- }
- }
-
- if (RISCVMultilibs.select(Flags, Result.SelectedMultilib))
- Result.Multilibs = RISCVMultilibs;
-}
-
-static void findRISCVMultilibs(const Driver &D,
- const llvm::Triple &TargetTriple, StringRef Path,
- const ArgList &Args, DetectedMultilibs &Result) {
- if (TargetTriple.getOS() == llvm::Triple::UnknownOS)
- return findRISCVBareMetalMultilibs(D, TargetTriple, Path, Args, Result);
-
- FilterNonExistent NonExistent(Path, "/crtbegin.o", D.getVFS());
- Multilib Ilp32 = makeMultilib("lib32/ilp32").flag("+m32").flag("+mabi=ilp32");
- Multilib Ilp32f =
- makeMultilib("lib32/ilp32f").flag("+m32").flag("+mabi=ilp32f");
- Multilib Ilp32d =
- makeMultilib("lib32/ilp32d").flag("+m32").flag("+mabi=ilp32d");
- Multilib Lp64 = makeMultilib("lib64/lp64").flag("+m64").flag("+mabi=lp64");
- Multilib Lp64f = makeMultilib("lib64/lp64f").flag("+m64").flag("+mabi=lp64f");
- Multilib Lp64d = makeMultilib("lib64/lp64d").flag("+m64").flag("+mabi=lp64d");
- MultilibSet RISCVMultilibs =
- MultilibSet()
- .Either({Ilp32, Ilp32f, Ilp32d, Lp64, Lp64f, Lp64d})
- .FilterOut(NonExistent);
-
- Multilib::flags_list Flags;
- bool IsRV64 = TargetTriple.getArch() == llvm::Triple::riscv64;
- StringRef ABIName = tools::riscv::getRISCVABI(Args, TargetTriple);
-
- addMultilibFlag(!IsRV64, "m32", Flags);
- addMultilibFlag(IsRV64, "m64", Flags);
- addMultilibFlag(ABIName == "ilp32", "mabi=ilp32", Flags);
- addMultilibFlag(ABIName == "ilp32f", "mabi=ilp32f", Flags);
- addMultilibFlag(ABIName == "ilp32d", "mabi=ilp32d", Flags);
- addMultilibFlag(ABIName == "lp64", "mabi=lp64", Flags);
- addMultilibFlag(ABIName == "lp64f", "mabi=lp64f", Flags);
- addMultilibFlag(ABIName == "lp64d", "mabi=lp64d", Flags);
-
- if (RISCVMultilibs.select(Flags, Result.SelectedMultilib))
- Result.Multilibs = RISCVMultilibs;
-}
-
-static bool findBiarchMultilibs(const Driver &D,
- const llvm::Triple &TargetTriple,
- StringRef Path, const ArgList &Args,
- bool NeedsBiarchSuffix,
- DetectedMultilibs &Result) {
- Multilib Default;
-
- // Some versions of SUSE and Fedora on ppc64 put 32-bit libs
- // in what would normally be GCCInstallPath and put the 64-bit
- // libs in a subdirectory named 64. The simple logic we follow is that
- // *if* there is a subdirectory of the right name with crtbegin.o in it,
- // we use that. If not, and if not a biarch triple alias, we look for
- // crtbegin.o without the subdirectory.
-
- StringRef Suff64 = "/64";
- // Solaris uses platform-specific suffixes instead of /64.
- if (TargetTriple.getOS() == llvm::Triple::Solaris) {
- switch (TargetTriple.getArch()) {
- case llvm::Triple::x86:
- case llvm::Triple::x86_64:
- Suff64 = "/amd64";
- break;
- case llvm::Triple::sparc:
- case llvm::Triple::sparcv9:
- Suff64 = "/sparcv9";
- break;
- default:
- break;
- }
- }
-
- Multilib Alt64 = Multilib()
- .gccSuffix(Suff64)
- .includeSuffix(Suff64)
- .flag("-m32")
- .flag("+m64")
- .flag("-mx32");
- Multilib Alt32 = Multilib()
- .gccSuffix("/32")
- .includeSuffix("/32")
- .flag("+m32")
- .flag("-m64")
- .flag("-mx32");
- Multilib Altx32 = Multilib()
- .gccSuffix("/x32")
- .includeSuffix("/x32")
- .flag("-m32")
- .flag("-m64")
- .flag("+mx32");
-
- // GCC toolchain for IAMCU doesn't have crtbegin.o, so look for libgcc.a.
- FilterNonExistent NonExistent(
- Path, TargetTriple.isOSIAMCU() ? "/libgcc.a" : "/crtbegin.o", D.getVFS());
-
- // Determine default multilib from: 32, 64, x32
- // Also handle cases such as 64 on 32, 32 on 64, etc.
- enum { UNKNOWN, WANT32, WANT64, WANTX32 } Want = UNKNOWN;
- const bool IsX32 = TargetTriple.isX32();
- if (TargetTriple.isArch32Bit() && !NonExistent(Alt32))
- Want = WANT64;
- else if (TargetTriple.isArch64Bit() && IsX32 && !NonExistent(Altx32))
- Want = WANT64;
- else if (TargetTriple.isArch64Bit() && !IsX32 && !NonExistent(Alt64))
- Want = WANT32;
- else {
- if (TargetTriple.isArch32Bit())
- Want = NeedsBiarchSuffix ? WANT64 : WANT32;
- else if (IsX32)
- Want = NeedsBiarchSuffix ? WANT64 : WANTX32;
- else
- Want = NeedsBiarchSuffix ? WANT32 : WANT64;
- }
-
- if (Want == WANT32)
- Default.flag("+m32").flag("-m64").flag("-mx32");
- else if (Want == WANT64)
- Default.flag("-m32").flag("+m64").flag("-mx32");
- else if (Want == WANTX32)
- Default.flag("-m32").flag("-m64").flag("+mx32");
- else
- return false;
-
- Result.Multilibs.push_back(Default);
- Result.Multilibs.push_back(Alt64);
- Result.Multilibs.push_back(Alt32);
- Result.Multilibs.push_back(Altx32);
-
- Result.Multilibs.FilterOut(NonExistent);
-
- Multilib::flags_list Flags;
- addMultilibFlag(TargetTriple.isArch64Bit() && !IsX32, "m64", Flags);
- addMultilibFlag(TargetTriple.isArch32Bit(), "m32", Flags);
- addMultilibFlag(TargetTriple.isArch64Bit() && IsX32, "mx32", Flags);
-
- if (!Result.Multilibs.select(Flags, Result.SelectedMultilib))
- return false;
-
- if (Result.SelectedMultilib == Alt64 || Result.SelectedMultilib == Alt32 ||
- Result.SelectedMultilib == Altx32)
- Result.BiarchSibling = Default;
-
- return true;
-}
-
-/// Generic_GCC - A tool chain using the 'gcc' command to perform
-/// all subcommands; this relies on gcc translating the majority of
-/// command line options.
-
-/// Less-than for GCCVersion, implementing a Strict Weak Ordering.
-bool Generic_GCC::GCCVersion::isOlderThan(int RHSMajor, int RHSMinor,
- int RHSPatch,
- StringRef RHSPatchSuffix) const {
- if (Major != RHSMajor)
- return Major < RHSMajor;
- if (Minor != RHSMinor)
- return Minor < RHSMinor;
- if (Patch != RHSPatch) {
- // Note that versions without a specified patch sort higher than those with
- // a patch.
- if (RHSPatch == -1)
- return true;
- if (Patch == -1)
- return false;
-
- // Otherwise just sort on the patch itself.
- return Patch < RHSPatch;
- }
- if (PatchSuffix != RHSPatchSuffix) {
- // Sort empty suffixes higher.
- if (RHSPatchSuffix.empty())
- return true;
- if (PatchSuffix.empty())
- return false;
-
- // Provide a lexicographic sort to make this a total ordering.
- return PatchSuffix < RHSPatchSuffix;
- }
-
- // The versions are equal.
- return false;
-}
-
-/// Parse a GCCVersion object out of a string of text.
-///
-/// This is the primary means of forming GCCVersion objects.
-/*static*/
-Generic_GCC::GCCVersion Generic_GCC::GCCVersion::Parse(StringRef VersionText) {
- const GCCVersion BadVersion = {VersionText.str(), -1, -1, -1, "", "", ""};
- std::pair<StringRef, StringRef> First = VersionText.split('.');
- std::pair<StringRef, StringRef> Second = First.second.split('.');
-
- GCCVersion GoodVersion = {VersionText.str(), -1, -1, -1, "", "", ""};
- if (First.first.getAsInteger(10, GoodVersion.Major) || GoodVersion.Major < 0)
- return BadVersion;
- GoodVersion.MajorStr = First.first.str();
- if (First.second.empty())
- return GoodVersion;
- StringRef MinorStr = Second.first;
- if (Second.second.empty()) {
- if (size_t EndNumber = MinorStr.find_first_not_of("0123456789")) {
- GoodVersion.PatchSuffix = std::string(MinorStr.substr(EndNumber));
- MinorStr = MinorStr.slice(0, EndNumber);
- }
- }
- if (!MinorStr.str().empty() &&
- (MinorStr.getAsInteger(10, GoodVersion.Minor) || GoodVersion.Minor < 0))
- return BadVersion;
- GoodVersion.MinorStr = MinorStr.str();
-
- // First look for a number prefix and parse that if present. Otherwise just
- // stash the entire patch string in the suffix, and leave the number
- // unspecified. This covers versions strings such as:
- // 5 (handled above)
- // 4.4
- // 4.4-patched
- // 4.4.0
- // 4.4.x
- // 4.4.2-rc4
- // 4.4.x-patched
- // And retains any patch number it finds.
- StringRef PatchText = Second.second;
- if (!PatchText.empty()) {
- if (size_t EndNumber = PatchText.find_first_not_of("0123456789")) {
- // Try to parse the number and any suffix.
- if (PatchText.slice(0, EndNumber).getAsInteger(10, GoodVersion.Patch) ||
- GoodVersion.Patch < 0)
- return BadVersion;
- GoodVersion.PatchSuffix = std::string(PatchText.substr(EndNumber));
- }
- }
-
- return GoodVersion;
-}
-
-static llvm::StringRef getGCCToolchainDir(const ArgList &Args,
- llvm::StringRef SysRoot) {
- const Arg *A = Args.getLastArg(clang::driver::options::OPT_gcc_toolchain);
- if (A)
- return A->getValue();
-
- // If we have a SysRoot, ignore GCC_INSTALL_PREFIX.
- // GCC_INSTALL_PREFIX specifies the gcc installation for the default
- // sysroot and is likely not valid with a different sysroot.
- if (!SysRoot.empty())
- return "";
-
- return GCC_INSTALL_PREFIX;
-}
-
-/// Initialize a GCCInstallationDetector from the driver.
-///
-/// This performs all of the autodetection and sets up the various paths.
-/// Once constructed, a GCCInstallationDetector is essentially immutable.
-///
-/// FIXME: We shouldn't need an explicit TargetTriple parameter here, and
-/// should instead pull the target out of the driver. This is currently
-/// necessary because the driver doesn't store the final version of the target
-/// triple.
-void Generic_GCC::GCCInstallationDetector::init(
- const llvm::Triple &TargetTriple, const ArgList &Args,
- ArrayRef<std::string> ExtraTripleAliases) {
- llvm::Triple BiarchVariantTriple = TargetTriple.isArch32Bit()
- ? TargetTriple.get64BitArchVariant()
- : TargetTriple.get32BitArchVariant();
- // The library directories which may contain GCC installations.
- SmallVector<StringRef, 4> CandidateLibDirs, CandidateBiarchLibDirs;
- // The compatible GCC triples for this particular architecture.
- SmallVector<StringRef, 16> CandidateTripleAliases;
- SmallVector<StringRef, 16> CandidateBiarchTripleAliases;
- CollectLibDirsAndTriples(TargetTriple, BiarchVariantTriple, CandidateLibDirs,
- CandidateTripleAliases, CandidateBiarchLibDirs,
- CandidateBiarchTripleAliases);
-
- // Compute the set of prefixes for our search.
- SmallVector<std::string, 8> Prefixes;
- StringRef GCCToolchainDir = getGCCToolchainDir(Args, D.SysRoot);
- if (GCCToolchainDir != "") {
- if (GCCToolchainDir.back() == '/')
- GCCToolchainDir = GCCToolchainDir.drop_back(); // remove the /
-
- Prefixes.push_back(std::string(GCCToolchainDir));
- } else {
- // If we have a SysRoot, try that first.
- if (!D.SysRoot.empty()) {
- Prefixes.push_back(D.SysRoot);
- AddDefaultGCCPrefixes(TargetTriple, Prefixes, D.SysRoot);
- }
-
- // Then look for gcc installed alongside clang.
- Prefixes.push_back(D.InstalledDir + "/..");
-
- // Next, look for prefix(es) that correspond to distribution-supplied gcc
- // installations.
- if (D.SysRoot.empty()) {
- // Typically /usr.
- AddDefaultGCCPrefixes(TargetTriple, Prefixes, D.SysRoot);
- }
-
- // Try to respect gcc-config on Gentoo if --gcc-toolchain is not provided.
- // This avoids accidentally enforcing the system GCC version when using a
- // custom toolchain.
- SmallVector<StringRef, 16> GentooTestTriples;
- // Try to match an exact triple as target triple first.
- // e.g. crossdev -S x86_64-gentoo-linux-gnu will install gcc libs for
- // x86_64-gentoo-linux-gnu. But "clang -target x86_64-gentoo-linux-gnu"
- // may pick the libraries for x86_64-pc-linux-gnu even when exact matching
- // triple x86_64-gentoo-linux-gnu is present.
- GentooTestTriples.push_back(TargetTriple.str());
- // Check rest of triples.
- GentooTestTriples.append(ExtraTripleAliases.begin(),
- ExtraTripleAliases.end());
- GentooTestTriples.append(CandidateTripleAliases.begin(),
- CandidateTripleAliases.end());
- if (ScanGentooConfigs(TargetTriple, Args, GentooTestTriples,
- CandidateBiarchTripleAliases))
- return;
- }
-
- // Loop over the various components which exist and select the best GCC
- // installation available. GCC installs are ranked by version number.
- const GCCVersion VersionZero = GCCVersion::Parse("0.0.0");
- Version = VersionZero;
- for (const std::string &Prefix : Prefixes) {
- auto &VFS = D.getVFS();
- if (!VFS.exists(Prefix))
- continue;
- for (StringRef Suffix : CandidateLibDirs) {
- const std::string LibDir = Prefix + Suffix.str();
- if (!VFS.exists(LibDir))
- continue;
- // Maybe filter out <libdir>/gcc and <libdir>/gcc-cross.
- bool GCCDirExists = VFS.exists(LibDir + "/gcc");
- bool GCCCrossDirExists = VFS.exists(LibDir + "/gcc-cross");
- // Try to match the exact target triple first.
- ScanLibDirForGCCTriple(TargetTriple, Args, LibDir, TargetTriple.str(),
- false, GCCDirExists, GCCCrossDirExists);
- // Try rest of possible triples.
- for (StringRef Candidate : ExtraTripleAliases) // Try these first.
- ScanLibDirForGCCTriple(TargetTriple, Args, LibDir, Candidate, false,
- GCCDirExists, GCCCrossDirExists);
- for (StringRef Candidate : CandidateTripleAliases)
- ScanLibDirForGCCTriple(TargetTriple, Args, LibDir, Candidate, false,
- GCCDirExists, GCCCrossDirExists);
- }
- for (StringRef Suffix : CandidateBiarchLibDirs) {
- const std::string LibDir = Prefix + Suffix.str();
- if (!VFS.exists(LibDir))
- continue;
- bool GCCDirExists = VFS.exists(LibDir + "/gcc");
- bool GCCCrossDirExists = VFS.exists(LibDir + "/gcc-cross");
- for (StringRef Candidate : CandidateBiarchTripleAliases)
- ScanLibDirForGCCTriple(TargetTriple, Args, LibDir, Candidate, true,
- GCCDirExists, GCCCrossDirExists);
- }
-
- // Skip other prefixes once a GCC installation is found.
- if (Version > VersionZero)
- break;
- }
-}
-
-void Generic_GCC::GCCInstallationDetector::print(raw_ostream &OS) const {
- for (const auto &InstallPath : CandidateGCCInstallPaths)
- OS << "Found candidate GCC installation: " << InstallPath << "\n";
-
- if (!GCCInstallPath.empty())
- OS << "Selected GCC installation: " << GCCInstallPath << "\n";
-
- for (const auto &Multilib : Multilibs)
- OS << "Candidate multilib: " << Multilib << "\n";
-
- if (Multilibs.size() != 0 || !SelectedMultilib.isDefault())
- OS << "Selected multilib: " << SelectedMultilib << "\n";
-}
-
-bool Generic_GCC::GCCInstallationDetector::getBiarchSibling(Multilib &M) const {
- if (BiarchSibling.hasValue()) {
- M = BiarchSibling.getValue();
- return true;
- }
- return false;
-}
-
-void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes(
- const llvm::Triple &TargetTriple, SmallVectorImpl<std::string> &Prefixes,
- StringRef SysRoot) {
- if (TargetTriple.getOS() == llvm::Triple::Solaris) {
- // Solaris is a special case.
- // The GCC installation is under
- // /usr/gcc/<major>.<minor>/lib/gcc/<triple>/<major>.<minor>.<patch>/
- // so we need to find those /usr/gcc/*/lib/gcc libdirs and go with
- // /usr/gcc/<version> as a prefix.
-
- std::string PrefixDir = SysRoot.str() + "/usr/gcc";
- std::error_code EC;
- for (llvm::vfs::directory_iterator LI = D.getVFS().dir_begin(PrefixDir, EC),
- LE;
- !EC && LI != LE; LI = LI.increment(EC)) {
- StringRef VersionText = llvm::sys::path::filename(LI->path());
- GCCVersion CandidateVersion = GCCVersion::Parse(VersionText);
-
- // Filter out obviously bad entries.
- if (CandidateVersion.Major == -1 || CandidateVersion.isOlderThan(4, 1, 1))
- continue;
-
- std::string CandidatePrefix = PrefixDir + "/" + VersionText.str();
- std::string CandidateLibPath = CandidatePrefix + "/lib/gcc";
- if (!D.getVFS().exists(CandidateLibPath))
- continue;
-
- Prefixes.push_back(CandidatePrefix);
- }
- return;
- }
-
- // Non-Solaris is much simpler - most systems just go with "/usr".
- if (SysRoot.empty() && TargetTriple.getOS() == llvm::Triple::Linux) {
- // Yet, still look for RHEL devtoolsets.
- Prefixes.push_back("/opt/rh/devtoolset-10/root/usr");
- Prefixes.push_back("/opt/rh/devtoolset-9/root/usr");
- Prefixes.push_back("/opt/rh/devtoolset-8/root/usr");
- Prefixes.push_back("/opt/rh/devtoolset-7/root/usr");
- Prefixes.push_back("/opt/rh/devtoolset-6/root/usr");
- Prefixes.push_back("/opt/rh/devtoolset-4/root/usr");
- Prefixes.push_back("/opt/rh/devtoolset-3/root/usr");
- Prefixes.push_back("/opt/rh/devtoolset-2/root/usr");
- }
- Prefixes.push_back(SysRoot.str() + "/usr");
-}
-
-/*static*/ void Generic_GCC::GCCInstallationDetector::CollectLibDirsAndTriples(
- const llvm::Triple &TargetTriple, const llvm::Triple &BiarchTriple,
- SmallVectorImpl<StringRef> &LibDirs,
- SmallVectorImpl<StringRef> &TripleAliases,
- SmallVectorImpl<StringRef> &BiarchLibDirs,
- SmallVectorImpl<StringRef> &BiarchTripleAliases) {
- // Declare a bunch of static data sets that we'll select between below. These
- // are specifically designed to always refer to string literals to avoid any
- // lifetime or initialization issues.
- static const char *const AArch64LibDirs[] = {"/lib64", "/lib"};
- static const char *const AArch64Triples[] = {
- "aarch64-none-linux-gnu", "aarch64-linux-gnu", "aarch64-redhat-linux",
- "aarch64-suse-linux", "aarch64-linux-android"};
- static const char *const AArch64beLibDirs[] = {"/lib"};
- static const char *const AArch64beTriples[] = {"aarch64_be-none-linux-gnu",
- "aarch64_be-linux-gnu"};
-
- static const char *const ARMLibDirs[] = {"/lib"};
- static const char *const ARMTriples[] = {"arm-linux-gnueabi",
- "arm-linux-androideabi"};
- static const char *const ARMHFTriples[] = {"arm-linux-gnueabihf",
- "armv7hl-redhat-linux-gnueabi",
- "armv6hl-suse-linux-gnueabi",
- "armv7hl-suse-linux-gnueabi"};
- static const char *const ARMebLibDirs[] = {"/lib"};
- static const char *const ARMebTriples[] = {"armeb-linux-gnueabi",
- "armeb-linux-androideabi"};
- static const char *const ARMebHFTriples[] = {
- "armeb-linux-gnueabihf", "armebv7hl-redhat-linux-gnueabi"};
-
- static const char *const AVRLibDirs[] = {"/lib"};
- static const char *const AVRTriples[] = {"avr"};
-
- static const char *const X86_64LibDirs[] = {"/lib64", "/lib"};
- static const char *const X86_64Triples[] = {
- "x86_64-linux-gnu", "x86_64-unknown-linux-gnu",
- "x86_64-pc-linux-gnu", "x86_64-redhat-linux6E",
- "x86_64-redhat-linux", "x86_64-suse-linux",
- "x86_64-manbo-linux-gnu", "x86_64-linux-gnu",
- "x86_64-slackware-linux", "x86_64-radix-linux-gnu", "x86_64-unknown-linux",
- "x86_64-amazon-linux", "x86_64-linux-android"};
- static const char *const X32Triples[] = {"x86_64-linux-gnux32",
- "x86_64-pc-linux-gnux32"};
- static const char *const X32LibDirs[] = {"/libx32", "/lib"};
- static const char *const X86LibDirs[] = {"/lib32", "/lib"};
- static const char *const X86Triples[] = {
- "i586-linux-gnu", "i686-linux-gnu",
- "i686-pc-linux-gnu", "i386-redhat-linux6E",
- "i686-redhat-linux", "i386-redhat-linux",
- "i486-slackware-linux", "i586-slackware-linux", "i686-slackware-linux",
- "i586-radix-linux-gnu", "i686-radix-linux-gnu",
- "i586-suse-linux", "i686-montavista-linux",
- "i686-linux-android", "i686-gnu",
- };
-
- static const char *const M68kLibDirs[] = {"/lib"};
- static const char *const M68kTriples[] = {
- "m68k-linux-gnu", "m68k-unknown-linux-gnu", "m68k-suse-linux"};
-
- static const char *const MIPSLibDirs[] = {"/lib"};
- static const char *const MIPSTriples[] = {
- "mips-linux-gnu", "mips-mti-linux", "mips-mti-linux-gnu",
- "mips-img-linux-gnu", "mipsisa32r6-linux-gnu"};
- static const char *const MIPSELLibDirs[] = {"/lib"};
- static const char *const MIPSELTriples[] = {
- "mipsel-linux-gnu", "mips-img-linux-gnu", "mipsisa32r6el-linux-gnu",
- "mipsel-p5600-linux-gnu", "mipsel-jz47xx-linux-gnu",
- "mipsel-radix-linux-gnu",
- "mipsel-linux-android"};
-
- static const char *const MIPS64LibDirs[] = {"/lib64", "/lib"};
- static const char *const MIPS64Triples[] = {
- "mips64-linux-gnu", "mips-mti-linux-gnu",
- "mips-img-linux-gnu", "mips64-linux-gnuabi64",
- "mipsisa64r6-linux-gnu", "mipsisa64r6-linux-gnuabi64"};
- static const char *const MIPS64ELLibDirs[] = {"/lib64", "/lib"};
- static const char *const MIPS64ELTriples[] = {
- "mips64el-linux-gnu", "mips-mti-linux-gnu",
- "mips-img-linux-gnu", "mips64el-linux-gnuabi64",
- "mipsisa64r6el-linux-gnu", "mipsisa64r6el-linux-gnuabi64",
- "mips64el-linux-android"};
-
- static const char *const MIPSN32LibDirs[] = {"/lib32"};
- static const char *const MIPSN32Triples[] = {"mips64-linux-gnuabin32",
- "mipsisa64r6-linux-gnuabin32"};
- static const char *const MIPSN32ELLibDirs[] = {"/lib32"};
- static const char *const MIPSN32ELTriples[] = {
- "mips64el-linux-gnuabin32", "mipsisa64r6el-linux-gnuabin32"};
-
- static const char *const MSP430LibDirs[] = {"/lib"};
- static const char *const MSP430Triples[] = {"msp430-elf"};
-
- static const char *const PPCLibDirs[] = {"/lib32", "/lib"};
- static const char *const PPCTriples[] = {
- "powerpc-linux-gnu", "powerpc-unknown-linux-gnu", "powerpc-linux-gnuspe",
- "powerpc-power8-linux-gnu", "powerpc-power9-linux-gnu",
- "ppc-power8-linux-gnu", "ppc-power9-linux-gnu",
- "powerpc-radix-linux-gnu", "ppc-radix-linux-gnu",
- // On 32-bit PowerPC systems running SUSE Linux, gcc is configured as a
- // 64-bit compiler which defaults to "-m32", hence "powerpc64-suse-linux".
- "powerpc64-suse-linux", "powerpc-montavista-linuxspe"};
- static const char *const PPCLELibDirs[] = {"/lib32", "/lib"};
- static const char *const PPCLETriples[] = {"powerpcle-linux-gnu",
- "powerpcle-unknown-linux-gnu",
- "powerpcle-linux-musl"};
-
- static const char *const PPC64LibDirs[] = {"/lib64", "/lib"};
- static const char *const PPC64Triples[] = {
- "powerpc64-linux-gnu", "powerpc64-unknown-linux-gnu",
- "powerpc64-power8-linux-gnu", "powerpc64-power8-linux-gnu",
- "ppc64-power8-linux-gnu", "ppc64-power8-linux-gnu",
- "powerpc64-radix-linux-gnu", "ppc64-radix-linux-gnu",
- "powerpc64-suse-linux", "ppc64-redhat-linux"};
- static const char *const PPC64LELibDirs[] = {"/lib64", "/lib"};
- static const char *const PPC64LETriples[] = {
- "powerpc64le-linux-gnu", "powerpc64le-unknown-linux-gnu",
- "powerpc64le-none-linux-gnu", "powerpc64le-suse-linux",
- "powerpc64le-power8-linux-gnu", "powerpc64le-power8-linux-gnu",
- "ppc64le-power8-linux-gnu", "ppc64le-power8-linux-gnu",
- "powerpc64le-radix-linux-gnu", "ppc64le-radix-linux-gnu",
- "ppc64le-redhat-linux"};
-
- static const char *const RISCV32LibDirs[] = {"/lib32", "/lib"};
- static const char *const RISCV32Triples[] = {"riscv32-unknown-linux-gnu",
- "riscv32-linux-gnu",
- "riscv32-unknown-elf"};
- static const char *const RISCV64LibDirs[] = {"/lib64", "/lib"};
- static const char *const RISCV64Triples[] = {"riscv64-unknown-linux-gnu",
- "riscv64-linux-gnu",
- "riscv64-unknown-elf",
- "riscv64-rv64gc-linux-gnu", "riscv64-radix-linux-gnu",
- "riscv64-redhat-linux",
- "riscv64-suse-linux"};
-
- static const char *const SPARCv8LibDirs[] = {"/lib32", "/lib"};
- static const char *const SPARCv8Triples[] = {"sparc-linux-gnu",
- "sparcv8-linux-gnu"};
- static const char *const SPARCv9LibDirs[] = {"/lib64", "/lib"};
- static const char *const SPARCv9Triples[] = {"sparc64-linux-gnu",
- "sparcv9-linux-gnu"};
-
- static const char *const SystemZLibDirs[] = {"/lib64", "/lib"};
- static const char *const SystemZTriples[] = {
- "s390x-linux-gnu", "s390x-unknown-linux-gnu", "s390x-ibm-linux-gnu",
- "s390x-suse-linux", "s390x-redhat-linux"};
-
-
- using std::begin;
- using std::end;
-
- if (TargetTriple.getOS() == llvm::Triple::Solaris) {
- static const char *const SolarisLibDirs[] = {"/lib"};
- static const char *const SolarisSparcV8Triples[] = {
- "sparc-sun-solaris2.11", "sparc-sun-solaris2.12"};
- static const char *const SolarisSparcV9Triples[] = {
- "sparcv9-sun-solaris2.11", "sparcv9-sun-solaris2.12"};
- static const char *const SolarisX86Triples[] = {"i386-pc-solaris2.11",
- "i386-pc-solaris2.12"};
- static const char *const SolarisX86_64Triples[] = {"x86_64-pc-solaris2.11",
- "x86_64-pc-solaris2.12"};
- LibDirs.append(begin(SolarisLibDirs), end(SolarisLibDirs));
- BiarchLibDirs.append(begin(SolarisLibDirs), end(SolarisLibDirs));
- switch (TargetTriple.getArch()) {
- case llvm::Triple::x86:
- TripleAliases.append(begin(SolarisX86Triples), end(SolarisX86Triples));
- BiarchTripleAliases.append(begin(SolarisX86_64Triples),
- end(SolarisX86_64Triples));
- break;
- case llvm::Triple::x86_64:
- TripleAliases.append(begin(SolarisX86_64Triples),
- end(SolarisX86_64Triples));
- BiarchTripleAliases.append(begin(SolarisX86Triples),
- end(SolarisX86Triples));
- break;
- case llvm::Triple::sparc:
- TripleAliases.append(begin(SolarisSparcV8Triples),
- end(SolarisSparcV8Triples));
- BiarchTripleAliases.append(begin(SolarisSparcV9Triples),
- end(SolarisSparcV9Triples));
- break;
- case llvm::Triple::sparcv9:
- TripleAliases.append(begin(SolarisSparcV9Triples),
- end(SolarisSparcV9Triples));
- BiarchTripleAliases.append(begin(SolarisSparcV8Triples),
- end(SolarisSparcV8Triples));
- break;
- default:
- break;
- }
- return;
- }
-
- // Android targets should not use GNU/Linux tools or libraries.
- if (TargetTriple.isAndroid()) {
- static const char *const AArch64AndroidTriples[] = {
- "aarch64-linux-android"};
- static const char *const ARMAndroidTriples[] = {"arm-linux-androideabi"};
- static const char *const MIPSELAndroidTriples[] = {"mipsel-linux-android"};
- static const char *const MIPS64ELAndroidTriples[] = {
- "mips64el-linux-android"};
- static const char *const X86AndroidTriples[] = {"i686-linux-android"};
- static const char *const X86_64AndroidTriples[] = {"x86_64-linux-android"};
-
- switch (TargetTriple.getArch()) {
- case llvm::Triple::aarch64:
- LibDirs.append(begin(AArch64LibDirs), end(AArch64LibDirs));
- TripleAliases.append(begin(AArch64AndroidTriples),
- end(AArch64AndroidTriples));
- break;
- case llvm::Triple::arm:
- case llvm::Triple::thumb:
- LibDirs.append(begin(ARMLibDirs), end(ARMLibDirs));
- TripleAliases.append(begin(ARMAndroidTriples), end(ARMAndroidTriples));
- break;
- case llvm::Triple::mipsel:
- LibDirs.append(begin(MIPSELLibDirs), end(MIPSELLibDirs));
- TripleAliases.append(begin(MIPSELAndroidTriples),
- end(MIPSELAndroidTriples));
- BiarchLibDirs.append(begin(MIPS64ELLibDirs), end(MIPS64ELLibDirs));
- BiarchTripleAliases.append(begin(MIPS64ELAndroidTriples),
- end(MIPS64ELAndroidTriples));
- break;
- case llvm::Triple::mips64el:
- LibDirs.append(begin(MIPS64ELLibDirs), end(MIPS64ELLibDirs));
- TripleAliases.append(begin(MIPS64ELAndroidTriples),
- end(MIPS64ELAndroidTriples));
- BiarchLibDirs.append(begin(MIPSELLibDirs), end(MIPSELLibDirs));
- BiarchTripleAliases.append(begin(MIPSELAndroidTriples),
- end(MIPSELAndroidTriples));
- break;
- case llvm::Triple::x86_64:
- LibDirs.append(begin(X86_64LibDirs), end(X86_64LibDirs));
- TripleAliases.append(begin(X86_64AndroidTriples),
- end(X86_64AndroidTriples));
- BiarchLibDirs.append(begin(X86LibDirs), end(X86LibDirs));
- BiarchTripleAliases.append(begin(X86AndroidTriples),
- end(X86AndroidTriples));
- break;
- case llvm::Triple::x86:
- LibDirs.append(begin(X86LibDirs), end(X86LibDirs));
- TripleAliases.append(begin(X86AndroidTriples), end(X86AndroidTriples));
- BiarchLibDirs.append(begin(X86_64LibDirs), end(X86_64LibDirs));
- BiarchTripleAliases.append(begin(X86_64AndroidTriples),
- end(X86_64AndroidTriples));
- break;
- default:
- break;
- }
-
- return;
- }
-
- switch (TargetTriple.getArch()) {
- case llvm::Triple::aarch64:
- LibDirs.append(begin(AArch64LibDirs), end(AArch64LibDirs));
- TripleAliases.append(begin(AArch64Triples), end(AArch64Triples));
- BiarchLibDirs.append(begin(AArch64LibDirs), end(AArch64LibDirs));
- BiarchTripleAliases.append(begin(AArch64Triples), end(AArch64Triples));
- break;
- case llvm::Triple::aarch64_be:
- LibDirs.append(begin(AArch64beLibDirs), end(AArch64beLibDirs));
- TripleAliases.append(begin(AArch64beTriples), end(AArch64beTriples));
- BiarchLibDirs.append(begin(AArch64beLibDirs), end(AArch64beLibDirs));
- BiarchTripleAliases.append(begin(AArch64beTriples), end(AArch64beTriples));
- break;
- case llvm::Triple::arm:
- case llvm::Triple::thumb:
- LibDirs.append(begin(ARMLibDirs), end(ARMLibDirs));
- if (TargetTriple.getEnvironment() == llvm::Triple::GNUEABIHF) {
- TripleAliases.append(begin(ARMHFTriples), end(ARMHFTriples));
- } else {
- TripleAliases.append(begin(ARMTriples), end(ARMTriples));
- }
- break;
- case llvm::Triple::armeb:
- case llvm::Triple::thumbeb:
- LibDirs.append(begin(ARMebLibDirs), end(ARMebLibDirs));
- if (TargetTriple.getEnvironment() == llvm::Triple::GNUEABIHF) {
- TripleAliases.append(begin(ARMebHFTriples), end(ARMebHFTriples));
- } else {
- TripleAliases.append(begin(ARMebTriples), end(ARMebTriples));
- }
- break;
- case llvm::Triple::avr:
- LibDirs.append(begin(AVRLibDirs), end(AVRLibDirs));
- TripleAliases.append(begin(AVRTriples), end(AVRTriples));
- break;
- case llvm::Triple::x86_64:
- if (TargetTriple.isX32()) {
- LibDirs.append(begin(X32LibDirs), end(X32LibDirs));
- TripleAliases.append(begin(X32Triples), end(X32Triples));
- BiarchLibDirs.append(begin(X86_64LibDirs), end(X86_64LibDirs));
- BiarchTripleAliases.append(begin(X86_64Triples), end(X86_64Triples));
- } else {
- LibDirs.append(begin(X86_64LibDirs), end(X86_64LibDirs));
- TripleAliases.append(begin(X86_64Triples), end(X86_64Triples));
- BiarchLibDirs.append(begin(X32LibDirs), end(X32LibDirs));
- BiarchTripleAliases.append(begin(X32Triples), end(X32Triples));
- }
- BiarchLibDirs.append(begin(X86LibDirs), end(X86LibDirs));
- BiarchTripleAliases.append(begin(X86Triples), end(X86Triples));
- break;
- case llvm::Triple::x86:
- LibDirs.append(begin(X86LibDirs), end(X86LibDirs));
- // MCU toolchain is 32 bit only and its triple alias is TargetTriple
- // itself, which will be appended below.
- if (!TargetTriple.isOSIAMCU()) {
- TripleAliases.append(begin(X86Triples), end(X86Triples));
- BiarchLibDirs.append(begin(X86_64LibDirs), end(X86_64LibDirs));
- BiarchTripleAliases.append(begin(X86_64Triples), end(X86_64Triples));
- BiarchLibDirs.append(begin(X32LibDirs), end(X32LibDirs));
- BiarchTripleAliases.append(begin(X32Triples), end(X32Triples));
- }
- break;
- case llvm::Triple::m68k:
- LibDirs.append(begin(M68kLibDirs), end(M68kLibDirs));
- TripleAliases.append(begin(M68kTriples), end(M68kTriples));
- break;
- case llvm::Triple::mips:
- LibDirs.append(begin(MIPSLibDirs), end(MIPSLibDirs));
- TripleAliases.append(begin(MIPSTriples), end(MIPSTriples));
- BiarchLibDirs.append(begin(MIPS64LibDirs), end(MIPS64LibDirs));
- BiarchTripleAliases.append(begin(MIPS64Triples), end(MIPS64Triples));
- BiarchLibDirs.append(begin(MIPSN32LibDirs), end(MIPSN32LibDirs));
- BiarchTripleAliases.append(begin(MIPSN32Triples), end(MIPSN32Triples));
- break;
- case llvm::Triple::mipsel:
- LibDirs.append(begin(MIPSELLibDirs), end(MIPSELLibDirs));
- TripleAliases.append(begin(MIPSELTriples), end(MIPSELTriples));
- TripleAliases.append(begin(MIPSTriples), end(MIPSTriples));
- BiarchLibDirs.append(begin(MIPS64ELLibDirs), end(MIPS64ELLibDirs));
- BiarchTripleAliases.append(begin(MIPS64ELTriples), end(MIPS64ELTriples));
- BiarchLibDirs.append(begin(MIPSN32ELLibDirs), end(MIPSN32ELLibDirs));
- BiarchTripleAliases.append(begin(MIPSN32ELTriples), end(MIPSN32ELTriples));
- break;
- case llvm::Triple::mips64:
- LibDirs.append(begin(MIPS64LibDirs), end(MIPS64LibDirs));
- TripleAliases.append(begin(MIPS64Triples), end(MIPS64Triples));
- BiarchLibDirs.append(begin(MIPSLibDirs), end(MIPSLibDirs));
- BiarchTripleAliases.append(begin(MIPSTriples), end(MIPSTriples));
- BiarchLibDirs.append(begin(MIPSN32LibDirs), end(MIPSN32LibDirs));
- BiarchTripleAliases.append(begin(MIPSN32Triples), end(MIPSN32Triples));
- break;
- case llvm::Triple::mips64el:
- LibDirs.append(begin(MIPS64ELLibDirs), end(MIPS64ELLibDirs));
- TripleAliases.append(begin(MIPS64ELTriples), end(MIPS64ELTriples));
- BiarchLibDirs.append(begin(MIPSELLibDirs), end(MIPSELLibDirs));
- BiarchTripleAliases.append(begin(MIPSELTriples), end(MIPSELTriples));
- BiarchLibDirs.append(begin(MIPSN32ELLibDirs), end(MIPSN32ELLibDirs));
- BiarchTripleAliases.append(begin(MIPSN32ELTriples), end(MIPSN32ELTriples));
- BiarchTripleAliases.append(begin(MIPSTriples), end(MIPSTriples));
- break;
- case llvm::Triple::msp430:
- LibDirs.append(begin(MSP430LibDirs), end(MSP430LibDirs));
- TripleAliases.append(begin(MSP430Triples), end(MSP430Triples));
- break;
- case llvm::Triple::ppc:
- LibDirs.append(begin(PPCLibDirs), end(PPCLibDirs));
- TripleAliases.append(begin(PPCTriples), end(PPCTriples));
- BiarchLibDirs.append(begin(PPC64LibDirs), end(PPC64LibDirs));
- BiarchTripleAliases.append(begin(PPC64Triples), end(PPC64Triples));
- break;
- case llvm::Triple::ppcle:
- LibDirs.append(begin(PPCLELibDirs), end(PPCLELibDirs));
- TripleAliases.append(begin(PPCLETriples), end(PPCLETriples));
- BiarchLibDirs.append(begin(PPC64LELibDirs), end(PPC64LELibDirs));
- BiarchTripleAliases.append(begin(PPC64LETriples), end(PPC64LETriples));
- break;
- case llvm::Triple::ppc64:
- LibDirs.append(begin(PPC64LibDirs), end(PPC64LibDirs));
- TripleAliases.append(begin(PPC64Triples), end(PPC64Triples));
- BiarchLibDirs.append(begin(PPCLibDirs), end(PPCLibDirs));
- BiarchTripleAliases.append(begin(PPCTriples), end(PPCTriples));
- break;
- case llvm::Triple::ppc64le:
- LibDirs.append(begin(PPC64LELibDirs), end(PPC64LELibDirs));
- TripleAliases.append(begin(PPC64LETriples), end(PPC64LETriples));
- BiarchLibDirs.append(begin(PPCLELibDirs), end(PPCLELibDirs));
- BiarchTripleAliases.append(begin(PPCLETriples), end(PPCLETriples));
- break;
- case llvm::Triple::riscv32:
- LibDirs.append(begin(RISCV32LibDirs), end(RISCV32LibDirs));
- TripleAliases.append(begin(RISCV32Triples), end(RISCV32Triples));
- BiarchLibDirs.append(begin(RISCV64LibDirs), end(RISCV64LibDirs));
- BiarchTripleAliases.append(begin(RISCV64Triples), end(RISCV64Triples));
- break;
- case llvm::Triple::riscv64:
- LibDirs.append(begin(RISCV64LibDirs), end(RISCV64LibDirs));
- TripleAliases.append(begin(RISCV64Triples), end(RISCV64Triples));
- BiarchLibDirs.append(begin(RISCV32LibDirs), end(RISCV32LibDirs));
- BiarchTripleAliases.append(begin(RISCV32Triples), end(RISCV32Triples));
- break;
- case llvm::Triple::sparc:
- case llvm::Triple::sparcel:
- LibDirs.append(begin(SPARCv8LibDirs), end(SPARCv8LibDirs));
- TripleAliases.append(begin(SPARCv8Triples), end(SPARCv8Triples));
- BiarchLibDirs.append(begin(SPARCv9LibDirs), end(SPARCv9LibDirs));
- BiarchTripleAliases.append(begin(SPARCv9Triples), end(SPARCv9Triples));
- break;
- case llvm::Triple::sparcv9:
- LibDirs.append(begin(SPARCv9LibDirs), end(SPARCv9LibDirs));
- TripleAliases.append(begin(SPARCv9Triples), end(SPARCv9Triples));
- BiarchLibDirs.append(begin(SPARCv8LibDirs), end(SPARCv8LibDirs));
- BiarchTripleAliases.append(begin(SPARCv8Triples), end(SPARCv8Triples));
- break;
- case llvm::Triple::systemz:
- LibDirs.append(begin(SystemZLibDirs), end(SystemZLibDirs));
- TripleAliases.append(begin(SystemZTriples), end(SystemZTriples));
- break;
- default:
- // By default, just rely on the standard lib directories and the original
- // triple.
- break;
- }
-
- // Always append the drivers target triple to the end, in case it doesn't
- // match any of our aliases.
- TripleAliases.push_back(TargetTriple.str());
-
- // Also include the multiarch variant if it's different.
- if (TargetTriple.str() != BiarchTriple.str())
- BiarchTripleAliases.push_back(BiarchTriple.str());
-}
-
-bool Generic_GCC::GCCInstallationDetector::ScanGCCForMultilibs(
- const llvm::Triple &TargetTriple, const ArgList &Args,
- StringRef Path, bool NeedsBiarchSuffix) {
- llvm::Triple::ArchType TargetArch = TargetTriple.getArch();
- DetectedMultilibs Detected;
-
- // Android standalone toolchain could have multilibs for ARM and Thumb.
- // Debian mips multilibs behave more like the rest of the biarch ones,
- // so handle them there
- if (isArmOrThumbArch(TargetArch) && TargetTriple.isAndroid()) {
- // It should also work without multilibs in a simplified toolchain.
- findAndroidArmMultilibs(D, TargetTriple, Path, Args, Detected);
- } else if (TargetTriple.isMIPS()) {
- if (!findMIPSMultilibs(D, TargetTriple, Path, Args, Detected))
- return false;
- } else if (TargetTriple.isRISCV()) {
- findRISCVMultilibs(D, TargetTriple, Path, Args, Detected);
- } else if (isMSP430(TargetArch)) {
- findMSP430Multilibs(D, TargetTriple, Path, Args, Detected);
- } else if (TargetArch == llvm::Triple::avr) {
- // AVR has no multilibs.
- } else if (!findBiarchMultilibs(D, TargetTriple, Path, Args,
- NeedsBiarchSuffix, Detected)) {
- return false;
- }
-
- Multilibs = Detected.Multilibs;
- SelectedMultilib = Detected.SelectedMultilib;
- BiarchSibling = Detected.BiarchSibling;
-
- return true;
-}
-
-void Generic_GCC::GCCInstallationDetector::ScanLibDirForGCCTriple(
- const llvm::Triple &TargetTriple, const ArgList &Args,
- const std::string &LibDir, StringRef CandidateTriple,
- bool NeedsBiarchSuffix, bool GCCDirExists, bool GCCCrossDirExists) {
- // Locations relative to the system lib directory where GCC's triple-specific
- // directories might reside.
- struct GCCLibSuffix {
- // Path from system lib directory to GCC triple-specific directory.
- std::string LibSuffix;
- // Path from GCC triple-specific directory back to system lib directory.
- // This is one '..' component per component in LibSuffix.
- StringRef ReversePath;
- // Whether this library suffix is relevant for the triple.
- bool Active;
- } Suffixes[] = {
- // This is the normal place.
- {"gcc/" + CandidateTriple.str(), "../..", GCCDirExists},
-
- // Debian puts cross-compilers in gcc-cross.
- {"gcc-cross/" + CandidateTriple.str(), "../..", GCCCrossDirExists},
-
- // The Freescale PPC SDK has the gcc libraries in
- // <sysroot>/usr/lib/<triple>/x.y.z so have a look there as well. Only do
- // this on Freescale triples, though, since some systems put a *lot* of
- // files in that location, not just GCC installation data.
- {CandidateTriple.str(), "..",
- TargetTriple.getVendor() == llvm::Triple::Freescale ||
- TargetTriple.getVendor() == llvm::Triple::OpenEmbedded}};
-
- for (auto &Suffix : Suffixes) {
- if (!Suffix.Active)
- continue;
-
- StringRef LibSuffix = Suffix.LibSuffix;
- std::error_code EC;
- for (llvm::vfs::directory_iterator
- LI = D.getVFS().dir_begin(LibDir + "/" + LibSuffix, EC),
- LE;
- !EC && LI != LE; LI = LI.increment(EC)) {
- StringRef VersionText = llvm::sys::path::filename(LI->path());
- GCCVersion CandidateVersion = GCCVersion::Parse(VersionText);
- if (CandidateVersion.Major != -1) // Filter obviously bad entries.
- if (!CandidateGCCInstallPaths.insert(std::string(LI->path())).second)
- continue; // Saw this path before; no need to look at it again.
- if (CandidateVersion.isOlderThan(4, 1, 1))
- continue;
- if (CandidateVersion <= Version)
- continue;
-
- if (!ScanGCCForMultilibs(TargetTriple, Args, LI->path(),
- NeedsBiarchSuffix))
- continue;
-
- Version = CandidateVersion;
- GCCTriple.setTriple(CandidateTriple);
- // FIXME: We hack together the directory name here instead of
- // using LI to ensure stable path separators across Windows and
- // Linux.
- GCCInstallPath = (LibDir + "/" + LibSuffix + "/" + VersionText).str();
- GCCParentLibPath = (GCCInstallPath + "/../" + Suffix.ReversePath).str();
- IsValid = true;
- }
- }
-}
-
-bool Generic_GCC::GCCInstallationDetector::ScanGentooConfigs(
- const llvm::Triple &TargetTriple, const ArgList &Args,
- const SmallVectorImpl<StringRef> &CandidateTriples,
- const SmallVectorImpl<StringRef> &CandidateBiarchTriples) {
- if (!D.getVFS().exists(D.SysRoot + GentooConfigDir))
- return false;
-
- for (StringRef CandidateTriple : CandidateTriples) {
- if (ScanGentooGccConfig(TargetTriple, Args, CandidateTriple))
- return true;
- }
-
- for (StringRef CandidateTriple : CandidateBiarchTriples) {
- if (ScanGentooGccConfig(TargetTriple, Args, CandidateTriple, true))
- return true;
- }
- return false;
-}
-
-bool Generic_GCC::GCCInstallationDetector::ScanGentooGccConfig(
- const llvm::Triple &TargetTriple, const ArgList &Args,
- StringRef CandidateTriple, bool NeedsBiarchSuffix) {
- llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>> File =
- D.getVFS().getBufferForFile(D.SysRoot + GentooConfigDir + "/config-" +
- CandidateTriple.str());
- if (File) {
- SmallVector<StringRef, 2> Lines;
- File.get()->getBuffer().split(Lines, "\n");
- for (StringRef Line : Lines) {
- Line = Line.trim();
- // CURRENT=triple-version
- if (!Line.consume_front("CURRENT="))
- continue;
- // Process the config file pointed to by CURRENT.
- llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>> ConfigFile =
- D.getVFS().getBufferForFile(D.SysRoot + GentooConfigDir + "/" +
- Line.str());
- std::pair<StringRef, StringRef> ActiveVersion = Line.rsplit('-');
- // List of paths to scan for libraries.
- SmallVector<StringRef, 4> GentooScanPaths;
- // Scan the Config file to find installed GCC libraries path.
- // Typical content of the GCC config file:
- // LDPATH="/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.x:/usr/lib/gcc/
- // (continued from previous line) x86_64-pc-linux-gnu/4.9.x/32"
- // MANPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/4.9.x/man"
- // INFOPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/4.9.x/info"
- // STDCXX_INCDIR="/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.x/include/g++-v4"
- // We are looking for the paths listed in LDPATH=... .
- if (ConfigFile) {
- SmallVector<StringRef, 2> ConfigLines;
- ConfigFile.get()->getBuffer().split(ConfigLines, "\n");
- for (StringRef ConfLine : ConfigLines) {
- ConfLine = ConfLine.trim();
- if (ConfLine.consume_front("LDPATH=")) {
- // Drop '"' from front and back if present.
- ConfLine.consume_back("\"");
- ConfLine.consume_front("\"");
- // Get all paths sperated by ':'
- ConfLine.split(GentooScanPaths, ':', -1, /*AllowEmpty*/ false);
- }
- }
- }
- // Test the path based on the version in /etc/env.d/gcc/config-{tuple}.
- std::string basePath = "/usr/lib/gcc/" + ActiveVersion.first.str() + "/"
- + ActiveVersion.second.str();
- GentooScanPaths.push_back(StringRef(basePath));
-
- // Scan all paths for GCC libraries.
- for (const auto &GentooScanPath : GentooScanPaths) {
- std::string GentooPath = D.SysRoot + std::string(GentooScanPath);
- if (D.getVFS().exists(GentooPath + "/crtbegin.o")) {
- if (!ScanGCCForMultilibs(TargetTriple, Args, GentooPath,
- NeedsBiarchSuffix))
- continue;
-
- Version = GCCVersion::Parse(ActiveVersion.second);
- GCCInstallPath = GentooPath;
- GCCParentLibPath = GentooPath + std::string("/../../..");
- GCCTriple.setTriple(ActiveVersion.first);
- IsValid = true;
- return true;
- }
- }
- }
- }
-
- return false;
-}
-
-Generic_GCC::Generic_GCC(const Driver &D, const llvm::Triple &Triple,
- const ArgList &Args)
- : ToolChain(D, Triple, Args), GCCInstallation(D),
- CudaInstallation(D, Triple, Args), RocmInstallation(D, Triple, Args) {
- getProgramPaths().push_back(getDriver().getInstalledDir());
- if (getDriver().getInstalledDir() != getDriver().Dir)
- getProgramPaths().push_back(getDriver().Dir);
-}
-
-Generic_GCC::~Generic_GCC() {}
-
-Tool *Generic_GCC::getTool(Action::ActionClass AC) const {
- switch (AC) {
- case Action::PreprocessJobClass:
- if (!Preprocess)
- Preprocess.reset(new clang::driver::tools::gcc::Preprocessor(*this));
- return Preprocess.get();
- case Action::CompileJobClass:
- if (!Compile)
- Compile.reset(new tools::gcc::Compiler(*this));
- return Compile.get();
- default:
- return ToolChain::getTool(AC);
- }
-}
-
-Tool *Generic_GCC::buildAssembler() const {
- return new tools::gnutools::Assembler(*this);
-}
-
-Tool *Generic_GCC::buildLinker() const { return new tools::gcc::Linker(*this); }
-
-void Generic_GCC::printVerboseInfo(raw_ostream &OS) const {
- // Print the information about how we detected the GCC installation.
- GCCInstallation.print(OS);
- CudaInstallation.print(OS);
- RocmInstallation.print(OS);
-}
-
-bool Generic_GCC::IsUnwindTablesDefault(const ArgList &Args) const {
- switch (getArch()) {
- case llvm::Triple::aarch64:
- case llvm::Triple::ppc:
- case llvm::Triple::ppcle:
- case llvm::Triple::ppc64:
- case llvm::Triple::ppc64le:
- case llvm::Triple::x86_64:
- return true;
- default:
- return false;
- }
-}
-
-bool Generic_GCC::isPICDefault() const {
- switch (getArch()) {
- case llvm::Triple::x86_64:
- return getTriple().isOSWindows();
- case llvm::Triple::mips64:
- case llvm::Triple::mips64el:
- return true;
- default:
- return false;
- }
-}
-
-bool Generic_GCC::isPIEDefault() const { return false; }
-
-bool Generic_GCC::isPICDefaultForced() const {
- return getArch() == llvm::Triple::x86_64 && getTriple().isOSWindows();
-}
-
-bool Generic_GCC::IsIntegratedAssemblerDefault() const {
- switch (getTriple().getArch()) {
- case llvm::Triple::x86:
- case llvm::Triple::x86_64:
- case llvm::Triple::aarch64:
- case llvm::Triple::aarch64_be:
- case llvm::Triple::arm:
- case llvm::Triple::armeb:
- case llvm::Triple::avr:
- case llvm::Triple::bpfel:
- case llvm::Triple::bpfeb:
- case llvm::Triple::thumb:
- case llvm::Triple::thumbeb:
- case llvm::Triple::ppc:
- case llvm::Triple::ppcle:
- case llvm::Triple::ppc64:
- case llvm::Triple::ppc64le:
- case llvm::Triple::riscv32:
- case llvm::Triple::riscv64:
- case llvm::Triple::systemz:
- case llvm::Triple::mips:
- case llvm::Triple::mipsel:
- case llvm::Triple::mips64:
- case llvm::Triple::mips64el:
- case llvm::Triple::msp430:
- case llvm::Triple::m68k:
- return true;
- case llvm::Triple::sparc:
- case llvm::Triple::sparcel:
- case llvm::Triple::sparcv9:
- if (getTriple().isOSFreeBSD() || getTriple().isOSOpenBSD() ||
- getTriple().isOSSolaris())
- return true;
- return false;
- default:
- return false;
- }
-}
-
-void Generic_GCC::PushPPaths(ToolChain::path_list &PPaths) {
- // Cross-compiling binutils and GCC installations (vanilla and openSUSE at
- // least) put various tools in a triple-prefixed directory off of the parent
- // of the GCC installation. We use the GCC triple here to ensure that we end
- // up with tools that support the same amount of cross compiling as the
- // detected GCC installation. For example, if we find a GCC installation
- // targeting x86_64, but it is a bi-arch GCC installation, it can also be
- // used to target i386.
- if (GCCInstallation.isValid()) {
- PPaths.push_back(Twine(GCCInstallation.getParentLibPath() + "/../" +
- GCCInstallation.getTriple().str() + "/bin")
- .str());
- }
-}
-
-void Generic_GCC::AddMultilibPaths(const Driver &D,
- const std::string &SysRoot,
- const std::string &OSLibDir,
- const std::string &MultiarchTriple,
- path_list &Paths) {
- // Add the multilib suffixed paths where they are available.
- if (GCCInstallation.isValid()) {
- const llvm::Triple &GCCTriple = GCCInstallation.getTriple();
- const std::string &LibPath =
- std::string(GCCInstallation.getParentLibPath());
-
- // Sourcery CodeBench MIPS toolchain holds some libraries under
- // a biarch-like suffix of the GCC installation.
- if (const auto &PathsCallback = Multilibs.filePathsCallback())
- for (const auto &Path : PathsCallback(SelectedMultilib))
- addPathIfExists(D, GCCInstallation.getInstallPath() + Path, Paths);
-
- // Add lib/gcc/$triple/$version, with an optional /multilib suffix.
- addPathIfExists(
- D, GCCInstallation.getInstallPath() + SelectedMultilib.gccSuffix(),
- Paths);
-
- // GCC cross compiling toolchains will install target libraries which ship
- // as part of the toolchain under <prefix>/<triple>/<libdir> rather than as
- // any part of the GCC installation in
- // <prefix>/<libdir>/gcc/<triple>/<version>. This decision is somewhat
- // debatable, but is the reality today. We need to search this tree even
- // when we have a sysroot somewhere else. It is the responsibility of
- // whomever is doing the cross build targeting a sysroot using a GCC
- // installation that is *not* within the system root to ensure two things:
- //
- // 1) Any DSOs that are linked in from this tree or from the install path
- // above must be present on the system root and found via an
- // appropriate rpath.
- // 2) There must not be libraries installed into
- // <prefix>/<triple>/<libdir> unless they should be preferred over
- // those within the system root.
- //
- // Note that this matches the GCC behavior. See the below comment for where
- // Clang diverges from GCC's behavior.
- addPathIfExists(D,
- LibPath + "/../" + GCCTriple.str() + "/lib/../" + OSLibDir +
- SelectedMultilib.osSuffix(),
- Paths);
-
- // If the GCC installation we found is inside of the sysroot, we want to
- // prefer libraries installed in the parent prefix of the GCC installation.
- // It is important to *not* use these paths when the GCC installation is
- // outside of the system root as that can pick up unintended libraries.
- // This usually happens when there is an external cross compiler on the
- // host system, and a more minimal sysroot available that is the target of
- // the cross. Note that GCC does include some of these directories in some
- // configurations but this seems somewhere between questionable and simply
- // a bug.
- if (StringRef(LibPath).startswith(SysRoot))
- addPathIfExists(D, LibPath + "/../" + OSLibDir, Paths);
- }
-}
-
-void Generic_GCC::AddMultiarchPaths(const Driver &D,
- const std::string &SysRoot,
- const std::string &OSLibDir,
- path_list &Paths) {
- if (GCCInstallation.isValid()) {
- const std::string &LibPath =
- std::string(GCCInstallation.getParentLibPath());
- const llvm::Triple &GCCTriple = GCCInstallation.getTriple();
- const Multilib &Multilib = GCCInstallation.getMultilib();
- addPathIfExists(
- D, LibPath + "/../" + GCCTriple.str() + "/lib" + Multilib.osSuffix(),
- Paths);
- }
-}
-
-void Generic_GCC::AddMultilibIncludeArgs(const ArgList &DriverArgs,
- ArgStringList &CC1Args) const {
- // Add include directories specific to the selected multilib set and multilib.
- if (!GCCInstallation.isValid())
- return;
- // gcc TOOL_INCLUDE_DIR.
- const llvm::Triple &GCCTriple = GCCInstallation.getTriple();
- std::string LibPath(GCCInstallation.getParentLibPath());
- addSystemInclude(DriverArgs, CC1Args,
- Twine(LibPath) + "/../" + GCCTriple.str() + "/include");
-
- const auto &Callback = Multilibs.includeDirsCallback();
- if (Callback) {
- for (const auto &Path : Callback(GCCInstallation.getMultilib()))
- addExternCSystemIncludeIfExists(DriverArgs, CC1Args,
- GCCInstallation.getInstallPath() + Path);
- }
-}
-
-void Generic_GCC::AddClangCXXStdlibIncludeArgs(const ArgList &DriverArgs,
- ArgStringList &CC1Args) const {
- if (DriverArgs.hasArg(options::OPT_nostdinc, options::OPT_nostdincxx,
- options::OPT_nostdlibinc))
- return;
-
- switch (GetCXXStdlibType(DriverArgs)) {
- case ToolChain::CST_Libcxx:
- addLibCxxIncludePaths(DriverArgs, CC1Args);
- break;
-
- case ToolChain::CST_Libstdcxx:
- addLibStdCxxIncludePaths(DriverArgs, CC1Args);
- break;
- }
-}
-
-void
-Generic_GCC::addLibCxxIncludePaths(const llvm::opt::ArgList &DriverArgs,
- llvm::opt::ArgStringList &CC1Args) const {
- const Driver &D = getDriver();
- std::string SysRoot = computeSysRoot();
- std::string Target = getTripleString();
-
- auto AddIncludePath = [&](std::string Path) {
- std::string Version = detectLibcxxVersion(Path);
- if (Version.empty())
- return false;
-
- // First add the per-target include path if it exists.
- std::string TargetDir = Path + "/" + Target + "/c++/" + Version;
- if (D.getVFS().exists(TargetDir))
- addSystemInclude(DriverArgs, CC1Args, TargetDir);
-
- // Second add the generic one.
- addSystemInclude(DriverArgs, CC1Args, Path + "/c++/" + Version);
- return true;
- };
-
- // Android never uses the libc++ headers installed alongside the toolchain,
- // which are generally incompatible with the NDK libraries anyway.
- if (!getTriple().isAndroid())
- if (AddIncludePath(getDriver().Dir + "/../include"))
- return;
- // If this is a development, non-installed, clang, libcxx will
- // not be found at ../include/c++ but it likely to be found at
- // one of the following two locations:
- if (AddIncludePath(SysRoot + "/usr/local/include"))
- return;
- if (AddIncludePath(SysRoot + "/usr/include"))
- return;
-}
-
-bool Generic_GCC::addLibStdCXXIncludePaths(Twine IncludeDir, StringRef Triple,
- Twine IncludeSuffix,
- const llvm::opt::ArgList &DriverArgs,
- llvm::opt::ArgStringList &CC1Args,
- bool DetectDebian) const {
- if (!getVFS().exists(IncludeDir))
- return false;
-
- // Debian native gcc uses g++-multiarch-incdir.diff which uses
- // include/x86_64-linux-gnu/c++/10$IncludeSuffix instead of
- // include/c++/10/x86_64-linux-gnu$IncludeSuffix.
- std::string Dir = IncludeDir.str();
- StringRef Include =
- llvm::sys::path::parent_path(llvm::sys::path::parent_path(Dir));
- std::string Path =
- (Include + "/" + Triple + Dir.substr(Include.size()) + IncludeSuffix)
- .str();
- if (DetectDebian && !getVFS().exists(Path))
- return false;
-
- // GPLUSPLUS_INCLUDE_DIR
- addSystemInclude(DriverArgs, CC1Args, IncludeDir);
- // GPLUSPLUS_TOOL_INCLUDE_DIR. If Triple is not empty, add a target-dependent
- // include directory.
- if (DetectDebian)
- addSystemInclude(DriverArgs, CC1Args, Path);
- else if (!Triple.empty())
- addSystemInclude(DriverArgs, CC1Args,
- IncludeDir + "/" + Triple + IncludeSuffix);
- // GPLUSPLUS_BACKWARD_INCLUDE_DIR
- addSystemInclude(DriverArgs, CC1Args, IncludeDir + "/backward");
- return true;
-}
-
-bool Generic_GCC::addGCCLibStdCxxIncludePaths(
- const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args,
- StringRef DebianMultiarch) const {
- assert(GCCInstallation.isValid());
-
- // By default, look for the C++ headers in an include directory adjacent to
- // the lib directory of the GCC installation. Note that this is expect to be
- // equivalent to '/usr/include/c++/X.Y' in almost all cases.
- StringRef LibDir = GCCInstallation.getParentLibPath();
- StringRef InstallDir = GCCInstallation.getInstallPath();
- StringRef TripleStr = GCCInstallation.getTriple().str();
- const Multilib &Multilib = GCCInstallation.getMultilib();
- const GCCVersion &Version = GCCInstallation.getVersion();
-
- // Try /../$triple/include/c++/$version (gcc --print-multiarch is not empty).
- if (addLibStdCXXIncludePaths(
- LibDir.str() + "/../" + TripleStr + "/include/c++/" + Version.Text,
- TripleStr, Multilib.includeSuffix(), DriverArgs, CC1Args))
- return true;
-
- // Detect Debian g++-multiarch-incdir.diff.
- if (addLibStdCXXIncludePaths(LibDir.str() + "/../include/c++/" + Version.Text,
- DebianMultiarch, Multilib.includeSuffix(),
- DriverArgs, CC1Args, /*Debian=*/true))
- return true;
-
- // Try /../include/c++/$version (gcc --print-multiarch is empty).
- if (addLibStdCXXIncludePaths(LibDir.str() + "/../include/c++/" + Version.Text,
- TripleStr, Multilib.includeSuffix(), DriverArgs,
- CC1Args))
- return true;
-
- // Otherwise, fall back on a bunch of options which don't use multiarch
- // layouts for simplicity.
- const std::string LibStdCXXIncludePathCandidates[] = {
- // Gentoo is weird and places its headers inside the GCC install,
- // so if the first attempt to find the headers fails, try these patterns.
- InstallDir.str() + "/include/g++-v" + Version.Text,
- InstallDir.str() + "/include/g++-v" + Version.MajorStr + "." +
- Version.MinorStr,
- InstallDir.str() + "/include/g++-v" + Version.MajorStr,
- };
-
- for (const auto &IncludePath : LibStdCXXIncludePathCandidates) {
- if (addLibStdCXXIncludePaths(IncludePath, TripleStr,
- Multilib.includeSuffix(), DriverArgs, CC1Args))
- return true;
- }
- return false;
-}
-
-void
-Generic_GCC::addLibStdCxxIncludePaths(const llvm::opt::ArgList &DriverArgs,
- llvm::opt::ArgStringList &CC1Args) const {
- if (GCCInstallation.isValid()) {
- addGCCLibStdCxxIncludePaths(DriverArgs, CC1Args,
- GCCInstallation.getTriple().str());
- }
-}
-
-llvm::opt::DerivedArgList *
-Generic_GCC::TranslateArgs(const llvm::opt::DerivedArgList &Args, StringRef,
- Action::OffloadKind DeviceOffloadKind) const {
-
- // If this tool chain is used for an OpenMP offloading device we have to make
- // sure we always generate a shared library regardless of the commands the
- // user passed to the host. This is required because the runtime library
- // is required to load the device image dynamically at run time.
- if (DeviceOffloadKind == Action::OFK_OpenMP) {
- DerivedArgList *DAL = new DerivedArgList(Args.getBaseArgs());
- const OptTable &Opts = getDriver().getOpts();
-
- // Request the shared library. Given that these options are decided
- // implicitly, they do not refer to any base argument.
- DAL->AddFlagArg(/*BaseArg=*/nullptr, Opts.getOption(options::OPT_shared));
- DAL->AddFlagArg(/*BaseArg=*/nullptr, Opts.getOption(options::OPT_fPIC));
-
- // Filter all the arguments we don't care passing to the offloading
- // toolchain as they can mess up with the creation of a shared library.
- for (auto *A : Args) {
- switch ((options::ID)A->getOption().getID()) {
- default:
- DAL->append(A);
- break;
- case options::OPT_shared:
- case options::OPT_dynamic:
- case options::OPT_static:
- case options::OPT_fPIC:
- case options::OPT_fno_PIC:
- case options::OPT_fpic:
- case options::OPT_fno_pic:
- case options::OPT_fPIE:
- case options::OPT_fno_PIE:
- case options::OPT_fpie:
- case options::OPT_fno_pie:
- break;
- }
- }
- return DAL;
- }
- return nullptr;
-}
-
-void Generic_ELF::anchor() {}
-
-void Generic_ELF::addClangTargetOptions(const ArgList &DriverArgs,
- ArgStringList &CC1Args,
- Action::OffloadKind) const {
- if (!DriverArgs.hasFlag(options::OPT_fuse_init_array,
- options::OPT_fno_use_init_array, true))
- CC1Args.push_back("-fno-use-init-array");
-}
Index: create-13.0.0-clang-gnu-triple-patch/llvm-13.0.0-new/clang/lib/Driver/ToolChains
===================================================================
--- create-13.0.0-clang-gnu-triple-patch/llvm-13.0.0-new/clang/lib/Driver/ToolChains (revision 39)
+++ create-13.0.0-clang-gnu-triple-patch/llvm-13.0.0-new/clang/lib/Driver/ToolChains (nonexistent)
Property changes on: create-13.0.0-clang-gnu-triple-patch/llvm-13.0.0-new/clang/lib/Driver/ToolChains
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-clang-gnu-triple-patch/llvm-13.0.0-new/clang/lib/Driver
===================================================================
--- create-13.0.0-clang-gnu-triple-patch/llvm-13.0.0-new/clang/lib/Driver (revision 39)
+++ create-13.0.0-clang-gnu-triple-patch/llvm-13.0.0-new/clang/lib/Driver (nonexistent)
Property changes on: create-13.0.0-clang-gnu-triple-patch/llvm-13.0.0-new/clang/lib/Driver
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-clang-gnu-triple-patch/llvm-13.0.0-new/clang/lib
===================================================================
--- create-13.0.0-clang-gnu-triple-patch/llvm-13.0.0-new/clang/lib (revision 39)
+++ create-13.0.0-clang-gnu-triple-patch/llvm-13.0.0-new/clang/lib (nonexistent)
Property changes on: create-13.0.0-clang-gnu-triple-patch/llvm-13.0.0-new/clang/lib
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-clang-gnu-triple-patch/llvm-13.0.0-new/clang
===================================================================
--- create-13.0.0-clang-gnu-triple-patch/llvm-13.0.0-new/clang (revision 39)
+++ create-13.0.0-clang-gnu-triple-patch/llvm-13.0.0-new/clang (nonexistent)
Property changes on: create-13.0.0-clang-gnu-triple-patch/llvm-13.0.0-new/clang
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-clang-gnu-triple-patch/llvm-13.0.0-new
===================================================================
--- create-13.0.0-clang-gnu-triple-patch/llvm-13.0.0-new (revision 39)
+++ create-13.0.0-clang-gnu-triple-patch/llvm-13.0.0-new (nonexistent)
Property changes on: create-13.0.0-clang-gnu-triple-patch/llvm-13.0.0-new
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-13.0.0-clang-gnu-triple-patch
===================================================================
--- create-13.0.0-clang-gnu-triple-patch (revision 39)
+++ create-13.0.0-clang-gnu-triple-patch (nonexistent)
Property changes on: create-13.0.0-clang-gnu-triple-patch
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-pstl-x32-patch/file.list
===================================================================
--- create-15.0.4-pstl-x32-patch/file.list (revision 39)
+++ create-15.0.4-pstl-x32-patch/file.list (nonexistent)
@@ -1 +0,0 @@
-llvm-15.0.4/pstl/CMakeLists.txt
Index: create-15.0.4-pstl-x32-patch/llvm-15.0.4-new/pstl/CMakeLists.txt
===================================================================
--- create-15.0.4-pstl-x32-patch/llvm-15.0.4-new/pstl/CMakeLists.txt (revision 39)
+++ create-15.0.4-pstl-x32-patch/llvm-15.0.4-new/pstl/CMakeLists.txt (nonexistent)
@@ -1,102 +0,0 @@
-#===-- CMakeLists.txt ----------------------------------------------------===##
-#
-# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-# See https://llvm.org/LICENSE.txt for license information.
-# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-#
-#===----------------------------------------------------------------------===##
-cmake_minimum_required(VERSION 3.13.4)
-
-set(PARALLELSTL_VERSION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/include/pstl/internal/pstl_config.h")
-file(STRINGS "${PARALLELSTL_VERSION_FILE}" PARALLELSTL_VERSION_SOURCE REGEX "#define _PSTL_VERSION .*$")
-string(REGEX REPLACE "#define _PSTL_VERSION (.*)$" "\\1" PARALLELSTL_VERSION_SOURCE "${PARALLELSTL_VERSION_SOURCE}")
-math(EXPR VERSION_MAJOR "(${PARALLELSTL_VERSION_SOURCE} / 1000)")
-math(EXPR VERSION_MINOR "((${PARALLELSTL_VERSION_SOURCE} % 1000) / 10)")
-math(EXPR VERSION_PATCH "(${PARALLELSTL_VERSION_SOURCE} % 10)")
-
-project(ParallelSTL VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH} LANGUAGES CXX)
-
-# Must go below project(..)
-include(GNUInstallDirs)
-
-set(PSTL_PARALLEL_BACKEND "serial" CACHE STRING "Threading backend to use. Valid choices are 'serial', 'omp', and 'tbb'. The default is 'serial'.")
-set(PSTL_HIDE_FROM_ABI_PER_TU OFF CACHE BOOL "Whether to constrain ABI-unstable symbols to each translation unit (basically, mark them with C's static keyword).")
-set(_PSTL_HIDE_FROM_ABI_PER_TU ${PSTL_HIDE_FROM_ABI_PER_TU}) # For __pstl_config_site
-
-if (NOT TBB_DIR)
- get_filename_component(PSTL_DIR_NAME ${CMAKE_CURRENT_SOURCE_DIR} NAME)
- string(REPLACE pstl tbb TBB_DIR_NAME ${PSTL_DIR_NAME})
- if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/../${TBB_DIR_NAME}/cmake")
- get_filename_component(TBB_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../${TBB_DIR_NAME}/cmake" ABSOLUTE)
- endif()
-endif()
-
-###############################################################################
-# Setup the ParallelSTL library target
-###############################################################################
-add_library(ParallelSTL INTERFACE)
-add_library(pstl::ParallelSTL ALIAS ParallelSTL)
-target_compile_features(ParallelSTL INTERFACE cxx_std_17)
-
-if (PSTL_PARALLEL_BACKEND STREQUAL "serial")
- message(STATUS "Parallel STL uses the serial backend")
- set(_PSTL_PAR_BACKEND_SERIAL ON)
-elseif (PSTL_PARALLEL_BACKEND STREQUAL "tbb")
- find_package(TBB 2018 REQUIRED tbb OPTIONAL_COMPONENTS tbbmalloc)
- message(STATUS "Parallel STL uses TBB ${TBB_VERSION} (interface version: ${TBB_INTERFACE_VERSION})")
- target_link_libraries(ParallelSTL INTERFACE TBB::tbb)
- set(_PSTL_PAR_BACKEND_TBB ON)
-elseif (PSTL_PARALLEL_BACKEND STREQUAL "omp")
- message(STATUS "Parallel STL uses the omp backend")
- target_compile_options(ParallelSTL INTERFACE "-fopenmp=libomp")
- set(_PSTL_PAR_BACKEND_OPENMP ON)
-else()
- message(FATAL_ERROR "Requested unknown Parallel STL backend '${PSTL_PARALLEL_BACKEND}'.")
-endif()
-
-set(PSTL_GENERATED_HEADERS_DIR "${CMAKE_CURRENT_BINARY_DIR}/generated_headers")
-set(PSTL_CONFIG_SITE_PATH "${PSTL_GENERATED_HEADERS_DIR}/__pstl_config_site")
-configure_file("include/__pstl_config_site.in"
- "${PSTL_CONFIG_SITE_PATH}"
- @ONLY)
-
-target_include_directories(ParallelSTL
- INTERFACE
- $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
- $<BUILD_INTERFACE:${PSTL_GENERATED_HEADERS_DIR}>
- $<INSTALL_INTERFACE:include>)
-
-###############################################################################
-# Setup tests
-###############################################################################
-enable_testing()
-add_subdirectory(test)
-
-###############################################################################
-# Install the target and the associated CMake files
-###############################################################################
-include(CMakePackageConfigHelpers)
-write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/ParallelSTLConfigVersion.cmake"
- COMPATIBILITY ExactVersion)
-
-configure_file(cmake/ParallelSTLConfig.cmake.in
- "${CMAKE_CURRENT_BINARY_DIR}/ParallelSTLConfig.cmake"
- @ONLY)
-
-install(TARGETS ParallelSTL
- EXPORT ParallelSTLTargets)
-install(EXPORT ParallelSTLTargets
- FILE ParallelSTLTargets.cmake
- NAMESPACE pstl::
- DESTINATION lib32/cmake/ParallelSTL)
-install(FILES "${CMAKE_CURRENT_BINARY_DIR}/ParallelSTLConfig.cmake"
- "${CMAKE_CURRENT_BINARY_DIR}/ParallelSTLConfigVersion.cmake"
- DESTINATION lib32/cmake/ParallelSTL)
-install(DIRECTORY include/
- DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
- PATTERN "*.in" EXCLUDE)
-install(FILES "${PSTL_CONFIG_SITE_PATH}"
- DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
-
-add_custom_target(install-pstl
- COMMAND "${CMAKE_COMMAND}" -P "${PROJECT_BINARY_DIR}/cmake_install.cmake" -DCOMPONENT=ParallelSTL)
Index: create-15.0.4-pstl-x32-patch/llvm-15.0.4-new/pstl
===================================================================
--- create-15.0.4-pstl-x32-patch/llvm-15.0.4-new/pstl (revision 39)
+++ create-15.0.4-pstl-x32-patch/llvm-15.0.4-new/pstl (nonexistent)
Property changes on: create-15.0.4-pstl-x32-patch/llvm-15.0.4-new/pstl
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-pstl-x32-patch/llvm-15.0.4-new
===================================================================
--- create-15.0.4-pstl-x32-patch/llvm-15.0.4-new (revision 39)
+++ create-15.0.4-pstl-x32-patch/llvm-15.0.4-new (nonexistent)
Property changes on: create-15.0.4-pstl-x32-patch/llvm-15.0.4-new
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: create-15.0.4-pstl-x32-patch/create.patch.sh
===================================================================
--- create-15.0.4-pstl-x32-patch/create.patch.sh (revision 39)
+++ create-15.0.4-pstl-x32-patch/create.patch.sh (nonexistent)
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-VERSION=15.0.4
-
-tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
-mv llvm-$VERSION llvm-$VERSION-orig
-
-cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
-
-diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-pstl-x32.patch
-
-mv llvm-$VERSION-pstl-x32.patch ../patches
-
-rm -rf ./llvm-$VERSION
-rm -rf ./llvm-$VERSION-orig
Property changes on: create-15.0.4-pstl-x32-patch/create.patch.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: create-15.0.4-pstl-x32-patch
===================================================================
--- create-15.0.4-pstl-x32-patch (revision 39)
+++ create-15.0.4-pstl-x32-patch (nonexistent)
Property changes on: create-15.0.4-pstl-x32-patch
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: Makefile
===================================================================
--- Makefile (revision 39)
+++ Makefile (revision 40)
@@ -7,7 +7,7 @@
url = $(DOWNLOAD_SERVER)/sources/packages/d/llvm
-versions = 13.0.0 15.0.4
+versions = 16.0.2
pkgname = llvm
suffix = tar.xz
@@ -14,42 +14,29 @@
tarballs = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
sha1s = $(addsuffix .sha1sum, $(tarballs))
-patches = $(CURDIR)/patches/llvm-13.0.0-clang-gnu-triple.patch
-patches += $(CURDIR)/patches/llvm-13.0.0-clang-set-revision.patch
-patches += $(CURDIR)/patches/llvm-13.0.0-clangd-riscv64.patch
-patches += $(CURDIR)/patches/llvm-13.0.0-compiler-rt-p5600.patch
-patches += $(CURDIR)/patches/llvm-13.0.0-compiler-rt-ppc64.patch
-patches += $(CURDIR)/patches/llvm-13.0.0-compiler-rt-synonyms.patch
-patches += $(CURDIR)/patches/llvm-13.0.0-lldb-riscv64.patch
-patches += $(CURDIR)/patches/llvm-13.0.0-lldb-set-revision.patch
-patches += $(CURDIR)/patches/llvm-13.0.0-llvm-64bit-atomic.patch
-patches += $(CURDIR)/patches/llvm-13.0.0-llvm-pass-variables.patch
-patches += $(CURDIR)/patches/llvm-13.0.0-llvm-ppc64.patch
-patches += $(CURDIR)/patches/llvm-13.0.0-llvm-versioning.patch
-patches += $(CURDIR)/patches/llvm-13.0.0-polly-hack.patch
-patches += $(CURDIR)/patches/llvm-13.0.0-python3.patch
-patches += $(CURDIR)/patches/llvm-13.0.0-scan-build-py-x32.patch
+patches = $(CURDIR)/patches/llvm-16.0.2-clang-gnu-triple.patch
+patches += $(CURDIR)/patches/llvm-16.0.2-clang-set-revision.patch
+patches += $(CURDIR)/patches/llvm-16.0.2-clangd-riscv64.patch
+patches += $(CURDIR)/patches/llvm-16.0.2-compiler-rt-mips.patch
+patches += $(CURDIR)/patches/llvm-16.0.2-compiler-rt-jz47xx.patch
+patches += $(CURDIR)/patches/llvm-16.0.2-compiler-rt-p5600.patch
+patches += $(CURDIR)/patches/llvm-16.0.2-compiler-rt-ppc64.patch
+patches += $(CURDIR)/patches/llvm-16.0.2-compiler-rt-synonyms.patch
+patches += $(CURDIR)/patches/llvm-16.0.2-lldb-instr-link.patch
+patches += $(CURDIR)/patches/llvm-16.0.2-lldb-lua-version.patch
+patches += $(CURDIR)/patches/llvm-16.0.2-lldb-riscv64.patch
+patches += $(CURDIR)/patches/llvm-16.0.2-lldb-set-revision.patch
+patches += $(CURDIR)/patches/llvm-16.0.2-llvm-64bit-atomic.patch
+patches += $(CURDIR)/patches/llvm-16.0.2-llvm-install-symlink.patch
+patches += $(CURDIR)/patches/llvm-16.0.2-llvm-pass-variables.patch
+patches += $(CURDIR)/patches/llvm-16.0.2-llvm-ppc64.patch
+patches += $(CURDIR)/patches/llvm-16.0.2-llvm-versioning.patch
+patches += $(CURDIR)/patches/llvm-16.0.2-openmp-perl.patch
+patches += $(CURDIR)/patches/llvm-16.0.2-polly-hack.patch
+patches += $(CURDIR)/patches/llvm-16.0.2-pstl-x32.patch
+patches += $(CURDIR)/patches/llvm-16.0.2-x32-interpreter.patch
+patches += $(CURDIR)/patches/llvm-16.0.2-x64-interpreter.patch
-patches += $(CURDIR)/patches/llvm-15.0.4-clang-gnu-triple.patch
-patches += $(CURDIR)/patches/llvm-15.0.4-clang-set-revision.patch
-patches += $(CURDIR)/patches/llvm-15.0.4-clangd-riscv64.patch
-patches += $(CURDIR)/patches/llvm-15.0.4-compiler-rt-mips.patch
-patches += $(CURDIR)/patches/llvm-15.0.4-compiler-rt-p5600.patch
-patches += $(CURDIR)/patches/llvm-15.0.4-compiler-rt-ppc64.patch
-patches += $(CURDIR)/patches/llvm-15.0.4-compiler-rt-synonyms.patch
-patches += $(CURDIR)/patches/llvm-15.0.4-lldb-lua-version.patch
-patches += $(CURDIR)/patches/llvm-15.0.4-lldb-riscv64.patch
-patches += $(CURDIR)/patches/llvm-15.0.4-lldb-set-revision.patch
-patches += $(CURDIR)/patches/llvm-15.0.4-llvm-64bit-atomic.patch
-patches += $(CURDIR)/patches/llvm-15.0.4-llvm-install-symlink.patch
-patches += $(CURDIR)/patches/llvm-15.0.4-llvm-ppc64.patch
-patches += $(CURDIR)/patches/llvm-15.0.4-llvm-versioning.patch
-patches += $(CURDIR)/patches/llvm-15.0.4-openmp-perl.patch
-patches += $(CURDIR)/patches/llvm-15.0.4-polly-hack.patch
-patches += $(CURDIR)/patches/llvm-15.0.4-python3.patch
-patches += $(CURDIR)/patches/llvm-15.0.4-scan-build-py-x32.patch
-patches += $(CURDIR)/patches/llvm-15.0.4-pstl-x32.patch
-
.NOTPARALLEL: $(patches)
@@ -83,40 +70,28 @@
$(patches): $(sha1s)
@echo -e "\n======= Create Patches =======\n" ; \
- ( cd create-13.0.0-clang-gnu-triple-patch ; ./create.patch.sh ) ; \
- ( cd create-13.0.0-clang-set-revision-patch ; ./create.patch.sh ) ; \
- ( cd create-13.0.0-clangd-riscv64-patch ; ./create.patch.sh ) ; \
- ( cd create-13.0.0-compiler-rt-p5600-patch ; ./create.patch.sh ) ; \
- ( cd create-13.0.0-compiler-rt-ppc64-patch ; ./create.patch.sh ) ; \
- ( cd create-13.0.0-compiler-rt-synonyms-patch ; ./create.patch.sh ) ; \
- ( cd create-13.0.0-lldb-riscv64-patch ; ./create.patch.sh ) ; \
- ( cd create-13.0.0-lldb-set-revision-patch ; ./create.patch.sh ) ; \
- ( cd create-13.0.0-llvm-64bit-atomic-patch ; ./create.patch.sh ) ; \
- ( cd create-13.0.0-llvm-pass-variables-patch ; ./create.patch.sh ) ; \
- ( cd create-13.0.0-llvm-ppc64-patch ; ./create.patch.sh ) ; \
- ( cd create-13.0.0-llvm-versioning-patch ; ./create.patch.sh ) ; \
- ( cd create-13.0.0-polly-hack-patch ; ./create.patch.sh ) ; \
- ( cd create-13.0.0-python3-patch ; ./create.patch.sh ) ; \
- ( cd create-13.0.0-scan-build-py-x32-patch ; ./create.patch.sh ) ; \
- ( cd create-15.0.4-clang-gnu-triple-patch ; ./create.patch.sh ) ; \
- ( cd create-15.0.4-clang-set-revision-patch ; ./create.patch.sh ) ; \
- ( cd create-15.0.4-clangd-riscv64-patch ; ./create.patch.sh ) ; \
- ( cd create-15.0.4-compiler-rt-mips-patch ; ./create.patch.sh ) ; \
- ( cd create-15.0.4-compiler-rt-p5600-patch ; ./create.patch.sh ) ; \
- ( cd create-15.0.4-compiler-rt-ppc64-patch ; ./create.patch.sh ) ; \
- ( cd create-15.0.4-compiler-rt-synonyms-patch ; ./create.patch.sh ) ; \
- ( cd create-15.0.4-lldb-lua-version-patch ; ./create.patch.sh ) ; \
- ( cd create-15.0.4-lldb-riscv64-patch ; ./create.patch.sh ) ; \
- ( cd create-15.0.4-lldb-set-revision-patch ; ./create.patch.sh ) ; \
- ( cd create-15.0.4-llvm-64bit-atomic-patch ; ./create.patch.sh ) ; \
- ( cd create-15.0.4-llvm-install-symlink-patch ; ./create.patch.sh ) ; \
- ( cd create-15.0.4-llvm-ppc64-patch ; ./create.patch.sh ) ; \
- ( cd create-15.0.4-llvm-versioning-patch ; ./create.patch.sh ) ; \
- ( cd create-15.0.4-openmp-perl-patch ; ./create.patch.sh ) ; \
- ( cd create-15.0.4-polly-hack-patch ; ./create.patch.sh ) ; \
- ( cd create-15.0.4-python3-patch ; ./create.patch.sh ) ; \
- ( cd create-15.0.4-scan-build-py-x32-patch ; ./create.patch.sh ) ; \
- ( cd create-15.0.4-pstl-x32-patch ; ./create.patch.sh ) ; \
+ ( cd create-16.0.2-clang-gnu-triple-patch ; ./create.patch.sh ) ; \
+ ( cd create-16.0.2-clang-set-revision-patch ; ./create.patch.sh ) ; \
+ ( cd create-16.0.2-clangd-riscv64-patch ; ./create.patch.sh ) ; \
+ ( cd create-16.0.2-compiler-rt-mips-patch ; ./create.patch.sh ) ; \
+ ( cd create-16.0.2-compiler-rt-jz47xx-patch ; ./create.patch.sh ) ; \
+ ( cd create-16.0.2-compiler-rt-p5600-patch ; ./create.patch.sh ) ; \
+ ( cd create-16.0.2-compiler-rt-ppc64-patch ; ./create.patch.sh ) ; \
+ ( cd create-16.0.2-compiler-rt-synonyms-patch ; ./create.patch.sh ) ; \
+ ( cd create-16.0.2-lldb-instr-link-patch ; ./create.patch.sh ) ; \
+ ( cd create-16.0.2-lldb-lua-version-patch ; ./create.patch.sh ) ; \
+ ( cd create-16.0.2-lldb-riscv64-patch ; ./create.patch.sh ) ; \
+ ( cd create-16.0.2-lldb-set-revision-patch ; ./create.patch.sh ) ; \
+ ( cd create-16.0.2-llvm-64bit-atomic-patch ; ./create.patch.sh ) ; \
+ ( cd create-16.0.2-llvm-install-symlink-patch ; ./create.patch.sh ) ; \
+ ( cd create-16.0.2-llvm-pass-variables-patch ; ./create.patch.sh ) ; \
+ ( cd create-16.0.2-llvm-ppc64-patch ; ./create.patch.sh ) ; \
+ ( cd create-16.0.2-llvm-versioning-patch ; ./create.patch.sh ) ; \
+ ( cd create-16.0.2-openmp-perl-patch ; ./create.patch.sh ) ; \
+ ( cd create-16.0.2-polly-hack-patch ; ./create.patch.sh ) ; \
+ ( cd create-16.0.2-pstl-x32-patch ; ./create.patch.sh ) ; \
+ ( cd create-16.0.2-x32-interpreter-patch ; ./create.patch.sh ) ; \
+ ( cd create-16.0.2-x64-interpreter-patch ; ./create.patch.sh ) ; \
echo -e "\n"
download_clean:
Index: create-16.0.2-clang-gnu-triple-patch/create.patch.sh
===================================================================
--- create-16.0.2-clang-gnu-triple-patch/create.patch.sh (nonexistent)
+++ create-16.0.2-clang-gnu-triple-patch/create.patch.sh (revision 40)
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+VERSION=16.0.2
+
+tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
+mv llvm-$VERSION llvm-$VERSION-orig
+
+cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
+
+diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-clang-gnu-triple.patch
+
+mv llvm-$VERSION-clang-gnu-triple.patch ../patches
+
+rm -rf ./llvm-$VERSION
+rm -rf ./llvm-$VERSION-orig
Property changes on: create-16.0.2-clang-gnu-triple-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: create-16.0.2-clang-gnu-triple-patch/file.list
===================================================================
--- create-16.0.2-clang-gnu-triple-patch/file.list (nonexistent)
+++ create-16.0.2-clang-gnu-triple-patch/file.list (revision 40)
@@ -0,0 +1 @@
+llvm-16.0.2/clang/lib/Driver/ToolChains/Gnu.cpp
Index: create-16.0.2-clang-gnu-triple-patch/llvm-16.0.2-new/clang/lib/Driver/ToolChains/Gnu.cpp
===================================================================
--- create-16.0.2-clang-gnu-triple-patch/llvm-16.0.2-new/clang/lib/Driver/ToolChains/Gnu.cpp (nonexistent)
+++ create-16.0.2-clang-gnu-triple-patch/llvm-16.0.2-new/clang/lib/Driver/ToolChains/Gnu.cpp (revision 40)
@@ -0,0 +1,3281 @@
+//===--- Gnu.cpp - Gnu Tool and ToolChain Implementations -------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "Gnu.h"
+#include "Arch/ARM.h"
+#include "Arch/CSKY.h"
+#include "Arch/Mips.h"
+#include "Arch/PPC.h"
+#include "Arch/RISCV.h"
+#include "Arch/Sparc.h"
+#include "Arch/SystemZ.h"
+#include "CommonArgs.h"
+#include "Linux.h"
+#include "clang/Config/config.h" // for GCC_INSTALL_PREFIX
+#include "clang/Driver/Compilation.h"
+#include "clang/Driver/Driver.h"
+#include "clang/Driver/DriverDiagnostic.h"
+#include "clang/Driver/Options.h"
+#include "clang/Driver/Tool.h"
+#include "clang/Driver/ToolChain.h"
+#include "llvm/ADT/StringSet.h"
+#include "llvm/ADT/Twine.h"
+#include "llvm/Option/ArgList.h"
+#include "llvm/Support/CodeGen.h"
+#include "llvm/Support/Path.h"
+#include "llvm/Support/TargetParser.h"
+#include "llvm/Support/VirtualFileSystem.h"
+#include <system_error>
+
+using namespace clang::driver;
+using namespace clang::driver::toolchains;
+using namespace clang;
+using namespace llvm::opt;
+
+using tools::addMultilibFlag;
+using tools::addPathIfExists;
+
+static bool forwardToGCC(const Option &O) {
+ // LinkerInput options have been forwarded. Don't duplicate.
+ if (O.hasFlag(options::LinkerInput))
+ return false;
+ return O.matches(options::OPT_Link_Group) || O.hasFlag(options::LinkOption);
+}
+
+// Switch CPU names not recognized by GNU assembler to a close CPU that it does
+// recognize, instead of a lower march from being picked in the absence of a cpu
+// flag.
+static void normalizeCPUNamesForAssembler(const ArgList &Args,
+ ArgStringList &CmdArgs) {
+ if (Arg *A = Args.getLastArg(options::OPT_mcpu_EQ)) {
+ StringRef CPUArg(A->getValue());
+ if (CPUArg.equals_insensitive("krait"))
+ CmdArgs.push_back("-mcpu=cortex-a15");
+ else if (CPUArg.equals_insensitive("kryo"))
+ CmdArgs.push_back("-mcpu=cortex-a57");
+ else
+ Args.AddLastArg(CmdArgs, options::OPT_mcpu_EQ);
+ }
+}
+
+void tools::gcc::Common::ConstructJob(Compilation &C, const JobAction &JA,
+ const InputInfo &Output,
+ const InputInfoList &Inputs,
+ const ArgList &Args,
+ const char *LinkingOutput) const {
+ const Driver &D = getToolChain().getDriver();
+ ArgStringList CmdArgs;
+
+ for (const auto &A : Args) {
+ if (forwardToGCC(A->getOption())) {
+ // It is unfortunate that we have to claim here, as this means
+ // we will basically never report anything interesting for
+ // platforms using a generic gcc, even if we are just using gcc
+ // to get to the assembler.
+ A->claim();
+
+ A->render(Args, CmdArgs);
+ }
+ }
+
+ RenderExtraToolArgs(JA, CmdArgs);
+
+ // If using a driver, force the arch.
+ if (getToolChain().getTriple().isOSDarwin()) {
+ CmdArgs.push_back("-arch");
+ CmdArgs.push_back(
+ Args.MakeArgString(getToolChain().getDefaultUniversalArchName()));
+ }
+
+ // Try to force gcc to match the tool chain we want, if we recognize
+ // the arch.
+ //
+ // FIXME: The triple class should directly provide the information we want
+ // here.
+ switch (getToolChain().getArch()) {
+ default:
+ break;
+ case llvm::Triple::x86:
+ case llvm::Triple::ppc:
+ case llvm::Triple::ppcle:
+ CmdArgs.push_back("-m32");
+ break;
+ case llvm::Triple::x86_64:
+ case llvm::Triple::ppc64:
+ case llvm::Triple::ppc64le:
+ CmdArgs.push_back("-m64");
+ break;
+ case llvm::Triple::sparcel:
+ CmdArgs.push_back("-EL");
+ break;
+ }
+
+ if (Output.isFilename()) {
+ CmdArgs.push_back("-o");
+ CmdArgs.push_back(Output.getFilename());
+ } else {
+ assert(Output.isNothing() && "Unexpected output");
+ CmdArgs.push_back("-fsyntax-only");
+ }
+
+ Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA, options::OPT_Xassembler);
+
+ // Only pass -x if gcc will understand it; otherwise hope gcc
+ // understands the suffix correctly. The main use case this would go
+ // wrong in is for linker inputs if they happened to have an odd
+ // suffix; really the only way to get this to happen is a command
+ // like '-x foobar a.c' which will treat a.c like a linker input.
+ //
+ // FIXME: For the linker case specifically, can we safely convert
+ // inputs into '-Wl,' options?
+ for (const auto &II : Inputs) {
+ // Don't try to pass LLVM or AST inputs to a generic gcc.
+ if (types::isLLVMIR(II.getType()))
+ D.Diag(clang::diag::err_drv_no_linker_llvm_support)
+ << getToolChain().getTripleString();
+ else if (II.getType() == types::TY_AST)
+ D.Diag(diag::err_drv_no_ast_support) << getToolChain().getTripleString();
+ else if (II.getType() == types::TY_ModuleFile)
+ D.Diag(diag::err_drv_no_module_support)
+ << getToolChain().getTripleString();
+
+ if (types::canTypeBeUserSpecified(II.getType())) {
+ CmdArgs.push_back("-x");
+ CmdArgs.push_back(types::getTypeName(II.getType()));
+ }
+
+ if (II.isFilename())
+ CmdArgs.push_back(II.getFilename());
+ else {
+ const Arg &A = II.getInputArg();
+
+ // Reverse translate some rewritten options.
+ if (A.getOption().matches(options::OPT_Z_reserved_lib_stdcxx)) {
+ CmdArgs.push_back("-lstdc++");
+ continue;
+ }
+
+ // Don't render as input, we need gcc to do the translations.
+ A.render(Args, CmdArgs);
+ }
+ }
+
+ const std::string &customGCCName = D.getCCCGenericGCCName();
+ const char *GCCName;
+ if (!customGCCName.empty())
+ GCCName = customGCCName.c_str();
+ else if (D.CCCIsCXX()) {
+ GCCName = "g++";
+ } else
+ GCCName = "gcc";
+
+ const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath(GCCName));
+ C.addCommand(std::make_unique<Command>(JA, *this,
+ ResponseFileSupport::AtFileCurCP(),
+ Exec, CmdArgs, Inputs, Output));
+}
+
+void tools::gcc::Preprocessor::RenderExtraToolArgs(
+ const JobAction &JA, ArgStringList &CmdArgs) const {
+ CmdArgs.push_back("-E");
+}
+
+void tools::gcc::Compiler::RenderExtraToolArgs(const JobAction &JA,
+ ArgStringList &CmdArgs) const {
+ const Driver &D = getToolChain().getDriver();
+
+ switch (JA.getType()) {
+ // If -flto, etc. are present then make sure not to force assembly output.
+ case types::TY_LLVM_IR:
+ case types::TY_LTO_IR:
+ case types::TY_LLVM_BC:
+ case types::TY_LTO_BC:
+ CmdArgs.push_back("-c");
+ break;
+ // We assume we've got an "integrated" assembler in that gcc will produce an
+ // object file itself.
+ case types::TY_Object:
+ CmdArgs.push_back("-c");
+ break;
+ case types::TY_PP_Asm:
+ CmdArgs.push_back("-S");
+ break;
+ case types::TY_Nothing:
+ CmdArgs.push_back("-fsyntax-only");
+ break;
+ default:
+ D.Diag(diag::err_drv_invalid_gcc_output_type) << getTypeName(JA.getType());
+ }
+}
+
+void tools::gcc::Linker::RenderExtraToolArgs(const JobAction &JA,
+ ArgStringList &CmdArgs) const {
+ // The types are (hopefully) good enough.
+}
+
+// On Arm the endianness of the output file is determined by the target and
+// can be overridden by the pseudo-target flags '-mlittle-endian'/'-EL' and
+// '-mbig-endian'/'-EB'. Unlike other targets the flag does not result in a
+// normalized triple so we must handle the flag here.
+static bool isArmBigEndian(const llvm::Triple &Triple,
+ const ArgList &Args) {
+ bool IsBigEndian = false;
+ switch (Triple.getArch()) {
+ case llvm::Triple::armeb:
+ case llvm::Triple::thumbeb:
+ IsBigEndian = true;
+ [[fallthrough]];
+ case llvm::Triple::arm:
+ case llvm::Triple::thumb:
+ if (Arg *A = Args.getLastArg(options::OPT_mlittle_endian,
+ options::OPT_mbig_endian))
+ IsBigEndian = !A->getOption().matches(options::OPT_mlittle_endian);
+ break;
+ default:
+ break;
+ }
+ return IsBigEndian;
+}
+
+static const char *getLDMOption(const llvm::Triple &T, const ArgList &Args) {
+ switch (T.getArch()) {
+ case llvm::Triple::x86:
+ if (T.isOSIAMCU())
+ return "elf_iamcu";
+ return "elf_i386";
+ case llvm::Triple::aarch64:
+ return "aarch64linux";
+ case llvm::Triple::aarch64_be:
+ return "aarch64linuxb";
+ case llvm::Triple::arm:
+ case llvm::Triple::thumb:
+ case llvm::Triple::armeb:
+ case llvm::Triple::thumbeb:
+ return isArmBigEndian(T, Args) ? "armelfb_linux_eabi" : "armelf_linux_eabi";
+ case llvm::Triple::m68k:
+ return "m68kelf";
+ case llvm::Triple::ppc:
+ if (T.isOSLinux())
+ return "elf32ppclinux";
+ return "elf32ppc";
+ case llvm::Triple::ppcle:
+ if (T.isOSLinux())
+ return "elf32lppclinux";
+ return "elf32lppc";
+ case llvm::Triple::ppc64:
+ return "elf64ppc";
+ case llvm::Triple::ppc64le:
+ return "elf64lppc";
+ case llvm::Triple::riscv32:
+ return "elf32lriscv";
+ case llvm::Triple::riscv64:
+ return "elf64lriscv";
+ case llvm::Triple::sparc:
+ case llvm::Triple::sparcel:
+ return "elf32_sparc";
+ case llvm::Triple::sparcv9:
+ return "elf64_sparc";
+ case llvm::Triple::loongarch32:
+ return "elf32loongarch";
+ case llvm::Triple::loongarch64:
+ return "elf64loongarch";
+ case llvm::Triple::mips:
+ return "elf32btsmip";
+ case llvm::Triple::mipsel:
+ return "elf32ltsmip";
+ case llvm::Triple::mips64:
+ if (tools::mips::hasMipsAbiArg(Args, "n32") ||
+ T.getEnvironment() == llvm::Triple::GNUABIN32)
+ return "elf32btsmipn32";
+ return "elf64btsmip";
+ case llvm::Triple::mips64el:
+ if (tools::mips::hasMipsAbiArg(Args, "n32") ||
+ T.getEnvironment() == llvm::Triple::GNUABIN32)
+ return "elf32ltsmipn32";
+ return "elf64ltsmip";
+ case llvm::Triple::systemz:
+ return "elf64_s390";
+ case llvm::Triple::x86_64:
+ if (T.isX32())
+ return "elf32_x86_64";
+ return "elf_x86_64";
+ case llvm::Triple::ve:
+ return "elf64ve";
+ case llvm::Triple::csky:
+ return "cskyelf_linux";
+ default:
+ return nullptr;
+ }
+}
+
+static bool getPIE(const ArgList &Args, const ToolChain &TC) {
+ if (Args.hasArg(options::OPT_shared) || Args.hasArg(options::OPT_static) ||
+ Args.hasArg(options::OPT_r) || Args.hasArg(options::OPT_static_pie))
+ return false;
+
+ Arg *A = Args.getLastArg(options::OPT_pie, options::OPT_no_pie,
+ options::OPT_nopie);
+ if (!A)
+ return TC.isPIEDefault(Args);
+ return A->getOption().matches(options::OPT_pie);
+}
+
+static bool getStaticPIE(const ArgList &Args, const ToolChain &TC) {
+ bool HasStaticPIE = Args.hasArg(options::OPT_static_pie);
+ // -no-pie is an alias for -nopie. So, handling -nopie takes care of
+ // -no-pie as well.
+ if (HasStaticPIE && Args.hasArg(options::OPT_nopie)) {
+ const Driver &D = TC.getDriver();
+ const llvm::opt::OptTable &Opts = D.getOpts();
+ StringRef StaticPIEName = Opts.getOptionName(options::OPT_static_pie);
+ StringRef NoPIEName = Opts.getOptionName(options::OPT_nopie);
+ D.Diag(diag::err_drv_cannot_mix_options) << StaticPIEName << NoPIEName;
+ }
+ return HasStaticPIE;
+}
+
+static bool getStatic(const ArgList &Args) {
+ return Args.hasArg(options::OPT_static) &&
+ !Args.hasArg(options::OPT_static_pie);
+}
+
+void tools::gnutools::StaticLibTool::ConstructJob(
+ Compilation &C, const JobAction &JA, const InputInfo &Output,
+ const InputInfoList &Inputs, const ArgList &Args,
+ const char *LinkingOutput) const {
+ const Driver &D = getToolChain().getDriver();
+
+ // Silence warning for "clang -g foo.o -o foo"
+ Args.ClaimAllArgs(options::OPT_g_Group);
+ // and "clang -emit-llvm foo.o -o foo"
+ Args.ClaimAllArgs(options::OPT_emit_llvm);
+ // and for "clang -w foo.o -o foo". Other warning options are already
+ // handled somewhere else.
+ Args.ClaimAllArgs(options::OPT_w);
+ // Silence warnings when linking C code with a C++ '-stdlib' argument.
+ Args.ClaimAllArgs(options::OPT_stdlib_EQ);
+
+ // ar tool command "llvm-ar <options> <output_file> <input_files>".
+ ArgStringList CmdArgs;
+ // Create and insert file members with a deterministic index.
+ CmdArgs.push_back("rcsD");
+ CmdArgs.push_back(Output.getFilename());
+
+ for (const auto &II : Inputs) {
+ if (II.isFilename()) {
+ CmdArgs.push_back(II.getFilename());
+ }
+ }
+
+ // Delete old output archive file if it already exists before generating a new
+ // archive file.
+ auto OutputFileName = Output.getFilename();
+ if (Output.isFilename() && llvm::sys::fs::exists(OutputFileName)) {
+ if (std::error_code EC = llvm::sys::fs::remove(OutputFileName)) {
+ D.Diag(diag::err_drv_unable_to_remove_file) << EC.message();
+ return;
+ }
+ }
+
+ const char *Exec = Args.MakeArgString(getToolChain().GetStaticLibToolPath());
+ C.addCommand(std::make_unique<Command>(JA, *this,
+ ResponseFileSupport::AtFileCurCP(),
+ Exec, CmdArgs, Inputs, Output));
+}
+
+void tools::gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA,
+ const InputInfo &Output,
+ const InputInfoList &Inputs,
+ const ArgList &Args,
+ const char *LinkingOutput) const {
+ // FIXME: The Linker class constructor takes a ToolChain and not a
+ // Generic_ELF, so the static_cast might return a reference to a invalid
+ // instance (see PR45061). Ideally, the Linker constructor needs to take a
+ // Generic_ELF instead.
+ const toolchains::Generic_ELF &ToolChain =
+ static_cast<const toolchains::Generic_ELF &>(getToolChain());
+ const Driver &D = ToolChain.getDriver();
+
+ const llvm::Triple &Triple = getToolChain().getEffectiveTriple();
+
+ const llvm::Triple::ArchType Arch = ToolChain.getArch();
+ const bool isAndroid = ToolChain.getTriple().isAndroid();
+ const bool IsIAMCU = ToolChain.getTriple().isOSIAMCU();
+ const bool IsVE = ToolChain.getTriple().isVE();
+ const bool IsPIE = getPIE(Args, ToolChain);
+ const bool IsStaticPIE = getStaticPIE(Args, ToolChain);
+ const bool IsStatic = getStatic(Args);
+ const bool HasCRTBeginEndFiles =
+ ToolChain.getTriple().hasEnvironment() ||
+ (ToolChain.getTriple().getVendor() != llvm::Triple::MipsTechnologies);
+
+ ArgStringList CmdArgs;
+
+ // Silence warning for "clang -g foo.o -o foo"
+ Args.ClaimAllArgs(options::OPT_g_Group);
+ // and "clang -emit-llvm foo.o -o foo"
+ Args.ClaimAllArgs(options::OPT_emit_llvm);
+ // and for "clang -w foo.o -o foo". Other warning options are already
+ // handled somewhere else.
+ Args.ClaimAllArgs(options::OPT_w);
+
+ if (!D.SysRoot.empty())
+ CmdArgs.push_back(Args.MakeArgString("--sysroot=" + D.SysRoot));
+
+ if (IsPIE)
+ CmdArgs.push_back("-pie");
+
+ if (IsStaticPIE) {
+ CmdArgs.push_back("-static");
+ CmdArgs.push_back("-pie");
+ CmdArgs.push_back("--no-dynamic-linker");
+ CmdArgs.push_back("-z");
+ CmdArgs.push_back("text");
+ }
+
+ if (Args.hasArg(options::OPT_rdynamic))
+ CmdArgs.push_back("-export-dynamic");
+
+ if (Args.hasArg(options::OPT_s))
+ CmdArgs.push_back("-s");
+
+ if (Triple.isARM() || Triple.isThumb() || Triple.isAArch64()) {
+ bool IsBigEndian = isArmBigEndian(Triple, Args);
+ if (IsBigEndian)
+ arm::appendBE8LinkFlag(Args, CmdArgs, Triple);
+ IsBigEndian = IsBigEndian || Arch == llvm::Triple::aarch64_be;
+ CmdArgs.push_back(IsBigEndian ? "-EB" : "-EL");
+ }
+
+ // Most Android ARM64 targets should enable the linker fix for erratum
+ // 843419. Only non-Cortex-A53 devices are allowed to skip this flag.
+ if (Arch == llvm::Triple::aarch64 && isAndroid) {
+ std::string CPU = getCPUName(D, Args, Triple);
+ if (CPU.empty() || CPU == "generic" || CPU == "cortex-a53")
+ CmdArgs.push_back("--fix-cortex-a53-843419");
+ }
+
+ ToolChain.addExtraOpts(CmdArgs);
+
+ CmdArgs.push_back("--eh-frame-hdr");
+
+ if (const char *LDMOption = getLDMOption(ToolChain.getTriple(), Args)) {
+ CmdArgs.push_back("-m");
+ CmdArgs.push_back(LDMOption);
+ } else {
+ D.Diag(diag::err_target_unknown_triple) << Triple.str();
+ return;
+ }
+ if (Triple.isRISCV())
+ CmdArgs.push_back("-X");
+
+ if (Args.hasArg(options::OPT_shared))
+ CmdArgs.push_back("-shared");
+
+ if (IsStatic) {
+ CmdArgs.push_back("-static");
+ } else {
+ if (Args.hasArg(options::OPT_rdynamic))
+ CmdArgs.push_back("-export-dynamic");
+
+ if (!Args.hasArg(options::OPT_shared) && !IsStaticPIE &&
+ !Args.hasArg(options::OPT_r)) {
+ CmdArgs.push_back("-dynamic-linker");
+ CmdArgs.push_back(Args.MakeArgString(Twine(D.DyldPrefix) +
+ ToolChain.getDynamicLinker(Args)));
+ }
+ }
+
+ CmdArgs.push_back("-o");
+ CmdArgs.push_back(Output.getFilename());
+
+ if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles,
+ options::OPT_r)) {
+ if (!isAndroid && !IsIAMCU) {
+ const char *crt1 = nullptr;
+ if (!Args.hasArg(options::OPT_shared)) {
+ if (Args.hasArg(options::OPT_pg))
+ crt1 = "gcrt1.o";
+ else if (IsPIE)
+ crt1 = "Scrt1.o";
+ else if (IsStaticPIE)
+ crt1 = "rcrt1.o";
+ else
+ crt1 = "crt1.o";
+ }
+ if (crt1)
+ CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath(crt1)));
+
+ CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crti.o")));
+ }
+
+ if (IsVE) {
+ CmdArgs.push_back("-z");
+ CmdArgs.push_back("max-page-size=0x4000000");
+ }
+
+ if (IsIAMCU)
+ CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crt0.o")));
+ else if (HasCRTBeginEndFiles) {
+ std::string P;
+ if (ToolChain.GetRuntimeLibType(Args) == ToolChain::RLT_CompilerRT &&
+ !isAndroid) {
+ std::string crtbegin = ToolChain.getCompilerRT(Args, "crtbegin",
+ ToolChain::FT_Object);
+ if (ToolChain.getVFS().exists(crtbegin))
+ P = crtbegin;
+ }
+ if (P.empty()) {
+ const char *crtbegin;
+ if (Args.hasArg(options::OPT_shared))
+ crtbegin = isAndroid ? "crtbegin_so.o" : "crtbeginS.o";
+ else if (IsStatic)
+ crtbegin = isAndroid ? "crtbegin_static.o" : "crtbeginT.o";
+ else if (IsPIE || IsStaticPIE)
+ crtbegin = isAndroid ? "crtbegin_dynamic.o" : "crtbeginS.o";
+ else
+ crtbegin = isAndroid ? "crtbegin_dynamic.o" : "crtbegin.o";
+ P = ToolChain.GetFilePath(crtbegin);
+ }
+ CmdArgs.push_back(Args.MakeArgString(P));
+ }
+
+ // Add crtfastmath.o if available and fast math is enabled.
+ ToolChain.addFastMathRuntimeIfAvailable(Args, CmdArgs);
+ }
+
+ Args.AddAllArgs(CmdArgs, options::OPT_L);
+ Args.AddAllArgs(CmdArgs, options::OPT_u);
+
+ ToolChain.AddFilePathLibArgs(Args, CmdArgs);
+
+ if (D.isUsingLTO()) {
+ assert(!Inputs.empty() && "Must have at least one input.");
+ addLTOOptions(ToolChain, Args, CmdArgs, Output, Inputs[0],
+ D.getLTOMode() == LTOK_Thin);
+ }
+
+ if (Args.hasArg(options::OPT_Z_Xlinker__no_demangle))
+ CmdArgs.push_back("--no-demangle");
+
+ bool NeedsSanitizerDeps = addSanitizerRuntimes(ToolChain, Args, CmdArgs);
+ bool NeedsXRayDeps = addXRayRuntime(ToolChain, Args, CmdArgs);
+ addLinkerCompressDebugSectionsOption(ToolChain, Args, CmdArgs);
+ AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs, JA);
+
+ addHIPRuntimeLibArgs(ToolChain, Args, CmdArgs);
+
+ // The profile runtime also needs access to system libraries.
+ getToolChain().addProfileRTLibs(Args, CmdArgs);
+
+ if (D.CCCIsCXX() &&
+ !Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs,
+ options::OPT_r)) {
+ if (ToolChain.ShouldLinkCXXStdlib(Args)) {
+ bool OnlyLibstdcxxStatic = Args.hasArg(options::OPT_static_libstdcxx) &&
+ !Args.hasArg(options::OPT_static);
+ if (OnlyLibstdcxxStatic)
+ CmdArgs.push_back("-Bstatic");
+ ToolChain.AddCXXStdlibLibArgs(Args, CmdArgs);
+ if (OnlyLibstdcxxStatic)
+ CmdArgs.push_back("-Bdynamic");
+ }
+ CmdArgs.push_back("-lm");
+ }
+
+ // Silence warnings when linking C code with a C++ '-stdlib' argument.
+ Args.ClaimAllArgs(options::OPT_stdlib_EQ);
+
+ // Additional linker set-up and flags for Fortran. This is required in order
+ // to generate executables. As Fortran runtime depends on the C runtime,
+ // these dependencies need to be listed before the C runtime below (i.e.
+ // AddRuntTimeLibs).
+ if (D.IsFlangMode()) {
+ addFortranRuntimeLibraryPath(ToolChain, Args, CmdArgs);
+ addFortranRuntimeLibs(ToolChain, CmdArgs);
+ CmdArgs.push_back("-lm");
+ }
+
+ if (!Args.hasArg(options::OPT_nostdlib, options::OPT_r)) {
+ if (!Args.hasArg(options::OPT_nodefaultlibs)) {
+ if (IsStatic || IsStaticPIE)
+ CmdArgs.push_back("--start-group");
+
+ if (NeedsSanitizerDeps)
+ linkSanitizerRuntimeDeps(ToolChain, CmdArgs);
+
+ if (NeedsXRayDeps)
+ linkXRayRuntimeDeps(ToolChain, CmdArgs);
+
+ bool WantPthread = Args.hasArg(options::OPT_pthread) ||
+ Args.hasArg(options::OPT_pthreads);
+
+ // Use the static OpenMP runtime with -static-openmp
+ bool StaticOpenMP = Args.hasArg(options::OPT_static_openmp) &&
+ !Args.hasArg(options::OPT_static);
+
+ // FIXME: Only pass GompNeedsRT = true for platforms with libgomp that
+ // require librt. Most modern Linux platforms do, but some may not.
+ if (addOpenMPRuntime(CmdArgs, ToolChain, Args, StaticOpenMP,
+ JA.isHostOffloading(Action::OFK_OpenMP),
+ /* GompNeedsRT= */ true))
+ // OpenMP runtimes implies pthreads when using the GNU toolchain.
+ // FIXME: Does this really make sense for all GNU toolchains?
+ WantPthread = true;
+
+ AddRunTimeLibs(ToolChain, D, CmdArgs, Args);
+
+ // LLVM support for atomics on 32-bit SPARC V8+ is incomplete, so
+ // forcibly link with libatomic as a workaround.
+ // TODO: Issue #41880 and D118021.
+ if (getToolChain().getTriple().getArch() == llvm::Triple::sparc) {
+ CmdArgs.push_back("--push-state");
+ CmdArgs.push_back("--as-needed");
+ CmdArgs.push_back("-latomic");
+ CmdArgs.push_back("--pop-state");
+ }
+
+ if (WantPthread && !isAndroid)
+ CmdArgs.push_back("-lpthread");
+
+ if (Args.hasArg(options::OPT_fsplit_stack))
+ CmdArgs.push_back("--wrap=pthread_create");
+
+ if (!Args.hasArg(options::OPT_nolibc))
+ CmdArgs.push_back("-lc");
+
+ // Add IAMCU specific libs, if needed.
+ if (IsIAMCU)
+ CmdArgs.push_back("-lgloss");
+
+ if (IsStatic || IsStaticPIE)
+ CmdArgs.push_back("--end-group");
+ else
+ AddRunTimeLibs(ToolChain, D, CmdArgs, Args);
+
+ // Add IAMCU specific libs (outside the group), if needed.
+ if (IsIAMCU) {
+ CmdArgs.push_back("--as-needed");
+ CmdArgs.push_back("-lsoftfp");
+ CmdArgs.push_back("--no-as-needed");
+ }
+ }
+
+ if (!Args.hasArg(options::OPT_nostartfiles) && !IsIAMCU) {
+ if (HasCRTBeginEndFiles) {
+ std::string P;
+ if (ToolChain.GetRuntimeLibType(Args) == ToolChain::RLT_CompilerRT &&
+ !isAndroid) {
+ std::string crtend = ToolChain.getCompilerRT(Args, "crtend",
+ ToolChain::FT_Object);
+ if (ToolChain.getVFS().exists(crtend))
+ P = crtend;
+ }
+ if (P.empty()) {
+ const char *crtend;
+ if (Args.hasArg(options::OPT_shared))
+ crtend = isAndroid ? "crtend_so.o" : "crtendS.o";
+ else if (IsPIE || IsStaticPIE)
+ crtend = isAndroid ? "crtend_android.o" : "crtendS.o";
+ else
+ crtend = isAndroid ? "crtend_android.o" : "crtend.o";
+ P = ToolChain.GetFilePath(crtend);
+ }
+ CmdArgs.push_back(Args.MakeArgString(P));
+ }
+ if (!isAndroid)
+ CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crtn.o")));
+ }
+ }
+
+ Args.AddAllArgs(CmdArgs, options::OPT_T);
+
+ const char *Exec = Args.MakeArgString(ToolChain.GetLinkerPath());
+ C.addCommand(std::make_unique<Command>(JA, *this,
+ ResponseFileSupport::AtFileCurCP(),
+ Exec, CmdArgs, Inputs, Output));
+}
+
+void tools::gnutools::Assembler::ConstructJob(Compilation &C,
+ const JobAction &JA,
+ const InputInfo &Output,
+ const InputInfoList &Inputs,
+ const ArgList &Args,
+ const char *LinkingOutput) const {
+ const auto &D = getToolChain().getDriver();
+
+ claimNoWarnArgs(Args);
+
+ ArgStringList CmdArgs;
+
+ llvm::Reloc::Model RelocationModel;
+ unsigned PICLevel;
+ bool IsPIE;
+ const char *DefaultAssembler = "as";
+ std::tie(RelocationModel, PICLevel, IsPIE) =
+ ParsePICArgs(getToolChain(), Args);
+
+ if (const Arg *A = Args.getLastArg(options::OPT_gz, options::OPT_gz_EQ)) {
+ if (A->getOption().getID() == options::OPT_gz) {
+ CmdArgs.push_back("--compress-debug-sections");
+ } else {
+ StringRef Value = A->getValue();
+ if (Value == "none" || Value == "zlib" || Value == "zstd") {
+ CmdArgs.push_back(
+ Args.MakeArgString("--compress-debug-sections=" + Twine(Value)));
+ } else {
+ D.Diag(diag::err_drv_unsupported_option_argument)
+ << A->getSpelling() << Value;
+ }
+ }
+ }
+
+ switch (getToolChain().getArch()) {
+ default:
+ break;
+ // Add --32/--64 to make sure we get the format we want.
+ // This is incomplete
+ case llvm::Triple::x86:
+ CmdArgs.push_back("--32");
+ break;
+ case llvm::Triple::x86_64:
+ if (getToolChain().getTriple().isX32())
+ CmdArgs.push_back("--x32");
+ else
+ CmdArgs.push_back("--64");
+ break;
+ case llvm::Triple::ppc: {
+ CmdArgs.push_back("-a32");
+ CmdArgs.push_back("-mppc");
+ CmdArgs.push_back("-mbig-endian");
+ CmdArgs.push_back(ppc::getPPCAsmModeForCPU(
+ getCPUName(D, Args, getToolChain().getTriple())));
+ break;
+ }
+ case llvm::Triple::ppcle: {
+ CmdArgs.push_back("-a32");
+ CmdArgs.push_back("-mppc");
+ CmdArgs.push_back("-mlittle-endian");
+ CmdArgs.push_back(ppc::getPPCAsmModeForCPU(
+ getCPUName(D, Args, getToolChain().getTriple())));
+ break;
+ }
+ case llvm::Triple::ppc64: {
+ CmdArgs.push_back("-a64");
+ CmdArgs.push_back("-mppc64");
+ CmdArgs.push_back("-mbig-endian");
+ CmdArgs.push_back(ppc::getPPCAsmModeForCPU(
+ getCPUName(D, Args, getToolChain().getTriple())));
+ break;
+ }
+ case llvm::Triple::ppc64le: {
+ CmdArgs.push_back("-a64");
+ CmdArgs.push_back("-mppc64");
+ CmdArgs.push_back("-mlittle-endian");
+ CmdArgs.push_back(ppc::getPPCAsmModeForCPU(
+ getCPUName(D, Args, getToolChain().getTriple())));
+ break;
+ }
+ case llvm::Triple::riscv32:
+ case llvm::Triple::riscv64: {
+ StringRef ABIName = riscv::getRISCVABI(Args, getToolChain().getTriple());
+ CmdArgs.push_back("-mabi");
+ CmdArgs.push_back(ABIName.data());
+ StringRef MArchName = riscv::getRISCVArch(Args, getToolChain().getTriple());
+ CmdArgs.push_back("-march");
+ CmdArgs.push_back(MArchName.data());
+ if (!Args.hasFlag(options::OPT_mrelax, options::OPT_mno_relax, true))
+ Args.addOptOutFlag(CmdArgs, options::OPT_mrelax, options::OPT_mno_relax);
+ break;
+ }
+ case llvm::Triple::sparc:
+ case llvm::Triple::sparcel: {
+ CmdArgs.push_back("-32");
+ std::string CPU = getCPUName(D, Args, getToolChain().getTriple());
+ CmdArgs.push_back(
+ sparc::getSparcAsmModeForCPU(CPU, getToolChain().getTriple()));
+ AddAssemblerKPIC(getToolChain(), Args, CmdArgs);
+ break;
+ }
+ case llvm::Triple::sparcv9: {
+ CmdArgs.push_back("-64");
+ std::string CPU = getCPUName(D, Args, getToolChain().getTriple());
+ CmdArgs.push_back(
+ sparc::getSparcAsmModeForCPU(CPU, getToolChain().getTriple()));
+ AddAssemblerKPIC(getToolChain(), Args, CmdArgs);
+ break;
+ }
+ case llvm::Triple::arm:
+ case llvm::Triple::armeb:
+ case llvm::Triple::thumb:
+ case llvm::Triple::thumbeb: {
+ const llvm::Triple &Triple2 = getToolChain().getTriple();
+ CmdArgs.push_back(isArmBigEndian(Triple2, Args) ? "-EB" : "-EL");
+ switch (Triple2.getSubArch()) {
+ case llvm::Triple::ARMSubArch_v7:
+ CmdArgs.push_back("-mfpu=neon");
+ break;
+ case llvm::Triple::ARMSubArch_v8:
+ CmdArgs.push_back("-mfpu=crypto-neon-fp-armv8");
+ break;
+ default:
+ break;
+ }
+
+ switch (arm::getARMFloatABI(getToolChain(), Args)) {
+ case arm::FloatABI::Invalid: llvm_unreachable("must have an ABI!");
+ case arm::FloatABI::Soft:
+ CmdArgs.push_back(Args.MakeArgString("-mfloat-abi=soft"));
+ break;
+ case arm::FloatABI::SoftFP:
+ CmdArgs.push_back(Args.MakeArgString("-mfloat-abi=softfp"));
+ break;
+ case arm::FloatABI::Hard:
+ CmdArgs.push_back(Args.MakeArgString("-mfloat-abi=hard"));
+ break;
+ }
+
+ Args.AddLastArg(CmdArgs, options::OPT_march_EQ);
+ normalizeCPUNamesForAssembler(Args, CmdArgs);
+
+ Args.AddLastArg(CmdArgs, options::OPT_mfpu_EQ);
+ break;
+ }
+ case llvm::Triple::aarch64:
+ case llvm::Triple::aarch64_be: {
+ CmdArgs.push_back(
+ getToolChain().getArch() == llvm::Triple::aarch64_be ? "-EB" : "-EL");
+ Args.AddLastArg(CmdArgs, options::OPT_march_EQ);
+ normalizeCPUNamesForAssembler(Args, CmdArgs);
+
+ break;
+ }
+ case llvm::Triple::mips:
+ case llvm::Triple::mipsel:
+ case llvm::Triple::mips64:
+ case llvm::Triple::mips64el: {
+ StringRef CPUName;
+ StringRef ABIName;
+ mips::getMipsCPUAndABI(Args, getToolChain().getTriple(), CPUName, ABIName);
+ ABIName = mips::getGnuCompatibleMipsABIName(ABIName);
+
+ CmdArgs.push_back("-march");
+ CmdArgs.push_back(CPUName.data());
+
+ CmdArgs.push_back("-mabi");
+ CmdArgs.push_back(ABIName.data());
+
+ // -mno-shared should be emitted unless -fpic, -fpie, -fPIC, -fPIE,
+ // or -mshared (not implemented) is in effect.
+ if (RelocationModel == llvm::Reloc::Static)
+ CmdArgs.push_back("-mno-shared");
+
+ // LLVM doesn't support -mplt yet and acts as if it is always given.
+ // However, -mplt has no effect with the N64 ABI.
+ if (ABIName != "64" && !Args.hasArg(options::OPT_mno_abicalls))
+ CmdArgs.push_back("-call_nonpic");
+
+ if (getToolChain().getTriple().isLittleEndian())
+ CmdArgs.push_back("-EL");
+ else
+ CmdArgs.push_back("-EB");
+
+ if (Arg *A = Args.getLastArg(options::OPT_mnan_EQ)) {
+ if (StringRef(A->getValue()) == "2008")
+ CmdArgs.push_back(Args.MakeArgString("-mnan=2008"));
+ }
+
+ // Add the last -mfp32/-mfpxx/-mfp64 or -mfpxx if it is enabled by default.
+ if (Arg *A = Args.getLastArg(options::OPT_mfp32, options::OPT_mfpxx,
+ options::OPT_mfp64)) {
+ A->claim();
+ A->render(Args, CmdArgs);
+ } else if (mips::shouldUseFPXX(
+ Args, getToolChain().getTriple(), CPUName, ABIName,
+ mips::getMipsFloatABI(getToolChain().getDriver(), Args,
+ getToolChain().getTriple())))
+ CmdArgs.push_back("-mfpxx");
+
+ // Pass on -mmips16 or -mno-mips16. However, the assembler equivalent of
+ // -mno-mips16 is actually -no-mips16.
+ if (Arg *A =
+ Args.getLastArg(options::OPT_mips16, options::OPT_mno_mips16)) {
+ if (A->getOption().matches(options::OPT_mips16)) {
+ A->claim();
+ A->render(Args, CmdArgs);
+ } else {
+ A->claim();
+ CmdArgs.push_back("-no-mips16");
+ }
+ }
+
+ Args.AddLastArg(CmdArgs, options::OPT_mmicromips,
+ options::OPT_mno_micromips);
+ Args.AddLastArg(CmdArgs, options::OPT_mdsp, options::OPT_mno_dsp);
+ Args.AddLastArg(CmdArgs, options::OPT_mdspr2, options::OPT_mno_dspr2);
+
+ if (Arg *A = Args.getLastArg(options::OPT_mmsa, options::OPT_mno_msa)) {
+ // Do not use AddLastArg because not all versions of MIPS assembler
+ // support -mmsa / -mno-msa options.
+ if (A->getOption().matches(options::OPT_mmsa))
+ CmdArgs.push_back(Args.MakeArgString("-mmsa"));
+ }
+
+ Args.AddLastArg(CmdArgs, options::OPT_mhard_float,
+ options::OPT_msoft_float);
+
+ Args.AddLastArg(CmdArgs, options::OPT_mdouble_float,
+ options::OPT_msingle_float);
+
+ Args.AddLastArg(CmdArgs, options::OPT_modd_spreg,
+ options::OPT_mno_odd_spreg);
+
+ AddAssemblerKPIC(getToolChain(), Args, CmdArgs);
+ break;
+ }
+ case llvm::Triple::systemz: {
+ // Always pass an -march option, since our default of z10 is later
+ // than the GNU assembler's default.
+ std::string CPUName = systemz::getSystemZTargetCPU(Args);
+ CmdArgs.push_back(Args.MakeArgString("-march=" + CPUName));
+ break;
+ }
+ case llvm::Triple::ve:
+ DefaultAssembler = "nas";
+ }
+
+ for (const Arg *A : Args.filtered(options::OPT_ffile_prefix_map_EQ,
+ options::OPT_fdebug_prefix_map_EQ)) {
+ StringRef Map = A->getValue();
+ if (!Map.contains('='))
+ D.Diag(diag::err_drv_invalid_argument_to_option)
+ << Map << A->getOption().getName();
+ else {
+ CmdArgs.push_back(Args.MakeArgString("--debug-prefix-map"));
+ CmdArgs.push_back(Args.MakeArgString(Map));
+ }
+ A->claim();
+ }
+
+ Args.AddAllArgs(CmdArgs, options::OPT_I);
+ Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA, options::OPT_Xassembler);
+
+ CmdArgs.push_back("-o");
+ CmdArgs.push_back(Output.getFilename());
+
+ for (const auto &II : Inputs)
+ CmdArgs.push_back(II.getFilename());
+
+ if (Arg *A = Args.getLastArg(options::OPT_g_Flag, options::OPT_gN_Group,
+ options::OPT_gdwarf_2, options::OPT_gdwarf_3,
+ options::OPT_gdwarf_4, options::OPT_gdwarf_5,
+ options::OPT_gdwarf))
+ if (!A->getOption().matches(options::OPT_g0)) {
+ Args.AddLastArg(CmdArgs, options::OPT_g_Flag);
+
+ unsigned DwarfVersion = getDwarfVersion(getToolChain(), Args);
+ CmdArgs.push_back(Args.MakeArgString("-gdwarf-" + Twine(DwarfVersion)));
+ }
+
+ const char *Exec =
+ Args.MakeArgString(getToolChain().GetProgramPath(DefaultAssembler));
+ C.addCommand(std::make_unique<Command>(JA, *this,
+ ResponseFileSupport::AtFileCurCP(),
+ Exec, CmdArgs, Inputs, Output));
+
+ // Handle the debug info splitting at object creation time if we're
+ // creating an object.
+ // TODO: Currently only works on linux with newer objcopy.
+ if (Args.hasArg(options::OPT_gsplit_dwarf) &&
+ getToolChain().getTriple().isOSLinux())
+ SplitDebugInfo(getToolChain(), C, *this, JA, Args, Output,
+ SplitDebugName(JA, Args, Inputs[0], Output));
+}
+
+namespace {
+// Filter to remove Multilibs that don't exist as a suffix to Path
+class FilterNonExistent {
+ StringRef Base, File;
+ llvm::vfs::FileSystem &VFS;
+
+public:
+ FilterNonExistent(StringRef Base, StringRef File, llvm::vfs::FileSystem &VFS)
+ : Base(Base), File(File), VFS(VFS) {}
+ bool operator()(const Multilib &M) {
+ return !VFS.exists(Base + M.gccSuffix() + File);
+ }
+};
+} // end anonymous namespace
+
+static bool isSoftFloatABI(const ArgList &Args) {
+ Arg *A = Args.getLastArg(options::OPT_msoft_float, options::OPT_mhard_float,
+ options::OPT_mfloat_abi_EQ);
+ if (!A)
+ return false;
+
+ return A->getOption().matches(options::OPT_msoft_float) ||
+ (A->getOption().matches(options::OPT_mfloat_abi_EQ) &&
+ A->getValue() == StringRef("soft"));
+}
+
+static bool isArmOrThumbArch(llvm::Triple::ArchType Arch) {
+ return Arch == llvm::Triple::arm || Arch == llvm::Triple::thumb;
+}
+
+static bool isMipsEL(llvm::Triple::ArchType Arch) {
+ return Arch == llvm::Triple::mipsel || Arch == llvm::Triple::mips64el;
+}
+
+static bool isMips16(const ArgList &Args) {
+ Arg *A = Args.getLastArg(options::OPT_mips16, options::OPT_mno_mips16);
+ return A && A->getOption().matches(options::OPT_mips16);
+}
+
+static bool isMicroMips(const ArgList &Args) {
+ Arg *A = Args.getLastArg(options::OPT_mmicromips, options::OPT_mno_micromips);
+ return A && A->getOption().matches(options::OPT_mmicromips);
+}
+
+static bool isMSP430(llvm::Triple::ArchType Arch) {
+ return Arch == llvm::Triple::msp430;
+}
+
+static Multilib makeMultilib(StringRef commonSuffix) {
+ return Multilib(commonSuffix, commonSuffix, commonSuffix);
+}
+
+static bool findMipsCsMultilibs(const Multilib::flags_list &Flags,
+ FilterNonExistent &NonExistent,
+ DetectedMultilibs &Result) {
+ // Check for Code Sourcery toolchain multilibs
+ MultilibSet CSMipsMultilibs;
+ {
+ auto MArchMips16 = makeMultilib("/mips16").flag("+m32").flag("+mips16");
+
+ auto MArchMicroMips =
+ makeMultilib("/micromips").flag("+m32").flag("+mmicromips");
+
+ auto MArchDefault = makeMultilib("").flag("-mips16").flag("-mmicromips");
+
+ auto UCLibc = makeMultilib("/uclibc").flag("+muclibc");
+
+ auto SoftFloat = makeMultilib("/soft-float").flag("+msoft-float");
+
+ auto Nan2008 = makeMultilib("/nan2008").flag("+mnan=2008");
+
+ auto DefaultFloat =
+ makeMultilib("").flag("-msoft-float").flag("-mnan=2008");
+
+ auto BigEndian = makeMultilib("").flag("+EB").flag("-EL");
+
+ auto LittleEndian = makeMultilib("/el").flag("+EL").flag("-EB");
+
+ // Note that this one's osSuffix is ""
+ auto MAbi64 = makeMultilib("")
+ .gccSuffix("/64")
+ .includeSuffix("/64")
+ .flag("+mabi=n64")
+ .flag("-mabi=n32")
+ .flag("-m32");
+
+ CSMipsMultilibs =
+ MultilibSet()
+ .Either(MArchMips16, MArchMicroMips, MArchDefault)
+ .Maybe(UCLibc)
+ .Either(SoftFloat, Nan2008, DefaultFloat)
+ .FilterOut("/micromips/nan2008")
+ .FilterOut("/mips16/nan2008")
+ .Either(BigEndian, LittleEndian)
+ .Maybe(MAbi64)
+ .FilterOut("/mips16.*/64")
+ .FilterOut("/micromips.*/64")
+ .FilterOut(NonExistent)
+ .setIncludeDirsCallback([](const Multilib &M) {
+ std::vector<std::string> Dirs({"/include"});
+ if (StringRef(M.includeSuffix()).startswith("/uclibc"))
+ Dirs.push_back(
+ "/../../../../mips-linux-gnu/libc/uclibc/usr/include");
+ else
+ Dirs.push_back("/../../../../mips-linux-gnu/libc/usr/include");
+ return Dirs;
+ });
+ }
+
+ MultilibSet DebianMipsMultilibs;
+ {
+ Multilib MAbiN32 =
+ Multilib().gccSuffix("/n32").includeSuffix("/n32").flag("+mabi=n32");
+
+ Multilib M64 = Multilib()
+ .gccSuffix("/64")
+ .includeSuffix("/64")
+ .flag("+m64")
+ .flag("-m32")
+ .flag("-mabi=n32");
+
+ Multilib M32 =
+ Multilib().gccSuffix("/32").flag("-m64").flag("+m32").flag("-mabi=n32");
+
+ DebianMipsMultilibs =
+ MultilibSet().Either(M32, M64, MAbiN32).FilterOut(NonExistent);
+ }
+
+ // Sort candidates. Toolchain that best meets the directories tree goes first.
+ // Then select the first toolchains matches command line flags.
+ MultilibSet *Candidates[] = {&CSMipsMultilibs, &DebianMipsMultilibs};
+ if (CSMipsMultilibs.size() < DebianMipsMultilibs.size())
+ std::iter_swap(Candidates, Candidates + 1);
+ for (const MultilibSet *Candidate : Candidates) {
+ if (Candidate->select(Flags, Result.SelectedMultilib)) {
+ if (Candidate == &DebianMipsMultilibs)
+ Result.BiarchSibling = Multilib();
+ Result.Multilibs = *Candidate;
+ return true;
+ }
+ }
+ return false;
+}
+
+static bool findMipsAndroidMultilibs(llvm::vfs::FileSystem &VFS, StringRef Path,
+ const Multilib::flags_list &Flags,
+ FilterNonExistent &NonExistent,
+ DetectedMultilibs &Result) {
+
+ MultilibSet AndroidMipsMultilibs =
+ MultilibSet()
+ .Maybe(Multilib("/mips-r2").flag("+march=mips32r2"))
+ .Maybe(Multilib("/mips-r6").flag("+march=mips32r6"))
+ .FilterOut(NonExistent);
+
+ MultilibSet AndroidMipselMultilibs =
+ MultilibSet()
+ .Either(Multilib().flag("+march=mips32"),
+ Multilib("/mips-r2", "", "/mips-r2").flag("+march=mips32r2"),
+ Multilib("/mips-r6", "", "/mips-r6").flag("+march=mips32r6"))
+ .FilterOut(NonExistent);
+
+ MultilibSet AndroidMips64elMultilibs =
+ MultilibSet()
+ .Either(
+ Multilib().flag("+march=mips64r6"),
+ Multilib("/32/mips-r1", "", "/mips-r1").flag("+march=mips32"),
+ Multilib("/32/mips-r2", "", "/mips-r2").flag("+march=mips32r2"),
+ Multilib("/32/mips-r6", "", "/mips-r6").flag("+march=mips32r6"))
+ .FilterOut(NonExistent);
+
+ MultilibSet *MS = &AndroidMipsMultilibs;
+ if (VFS.exists(Path + "/mips-r6"))
+ MS = &AndroidMipselMultilibs;
+ else if (VFS.exists(Path + "/32"))
+ MS = &AndroidMips64elMultilibs;
+ if (MS->select(Flags, Result.SelectedMultilib)) {
+ Result.Multilibs = *MS;
+ return true;
+ }
+ return false;
+}
+
+static bool findMipsMuslMultilibs(const Multilib::flags_list &Flags,
+ FilterNonExistent &NonExistent,
+ DetectedMultilibs &Result) {
+ // Musl toolchain multilibs
+ MultilibSet MuslMipsMultilibs;
+ {
+ auto MArchMipsR2 = makeMultilib("")
+ .osSuffix("/mips-r2-hard-musl")
+ .flag("+EB")
+ .flag("-EL")
+ .flag("+march=mips32r2");
+
+ auto MArchMipselR2 = makeMultilib("/mipsel-r2-hard-musl")
+ .flag("-EB")
+ .flag("+EL")
+ .flag("+march=mips32r2");
+
+ MuslMipsMultilibs = MultilibSet().Either(MArchMipsR2, MArchMipselR2);
+
+ // Specify the callback that computes the include directories.
+ MuslMipsMultilibs.setIncludeDirsCallback([](const Multilib &M) {
+ return std::vector<std::string>(
+ {"/../sysroot" + M.osSuffix() + "/usr/include"});
+ });
+ }
+ if (MuslMipsMultilibs.select(Flags, Result.SelectedMultilib)) {
+ Result.Multilibs = MuslMipsMultilibs;
+ return true;
+ }
+ return false;
+}
+
+static bool findMipsMtiMultilibs(const Multilib::flags_list &Flags,
+ FilterNonExistent &NonExistent,
+ DetectedMultilibs &Result) {
+ // CodeScape MTI toolchain v1.2 and early.
+ MultilibSet MtiMipsMultilibsV1;
+ {
+ auto MArchMips32 = makeMultilib("/mips32")
+ .flag("+m32")
+ .flag("-m64")
+ .flag("-mmicromips")
+ .flag("+march=mips32");
+
+ auto MArchMicroMips = makeMultilib("/micromips")
+ .flag("+m32")
+ .flag("-m64")
+ .flag("+mmicromips");
+
+ auto MArchMips64r2 = makeMultilib("/mips64r2")
+ .flag("-m32")
+ .flag("+m64")
+ .flag("+march=mips64r2");
+
+ auto MArchMips64 = makeMultilib("/mips64").flag("-m32").flag("+m64").flag(
+ "-march=mips64r2");
+
+ auto MArchDefault = makeMultilib("")
+ .flag("+m32")
+ .flag("-m64")
+ .flag("-mmicromips")
+ .flag("+march=mips32r2");
+
+ auto Mips16 = makeMultilib("/mips16").flag("+mips16");
+
+ auto UCLibc = makeMultilib("/uclibc").flag("+muclibc");
+
+ auto MAbi64 =
+ makeMultilib("/64").flag("+mabi=n64").flag("-mabi=n32").flag("-m32");
+
+ auto BigEndian = makeMultilib("").flag("+EB").flag("-EL");
+
+ auto LittleEndian = makeMultilib("/el").flag("+EL").flag("-EB");
+
+ auto SoftFloat = makeMultilib("/sof").flag("+msoft-float");
+
+ auto Nan2008 = makeMultilib("/nan2008").flag("+mnan=2008");
+
+ MtiMipsMultilibsV1 =
+ MultilibSet()
+ .Either(MArchMips32, MArchMicroMips, MArchMips64r2, MArchMips64,
+ MArchDefault)
+ .Maybe(UCLibc)
+ .Maybe(Mips16)
+ .FilterOut("/mips64/mips16")
+ .FilterOut("/mips64r2/mips16")
+ .FilterOut("/micromips/mips16")
+ .Maybe(MAbi64)
+ .FilterOut("/micromips/64")
+ .FilterOut("/mips32/64")
+ .FilterOut("^/64")
+ .FilterOut("/mips16/64")
+ .Either(BigEndian, LittleEndian)
+ .Maybe(SoftFloat)
+ .Maybe(Nan2008)
+ .FilterOut(".*sof/nan2008")
+ .FilterOut(NonExistent)
+ .setIncludeDirsCallback([](const Multilib &M) {
+ std::vector<std::string> Dirs({"/include"});
+ if (StringRef(M.includeSuffix()).startswith("/uclibc"))
+ Dirs.push_back("/../../../../sysroot/uclibc/usr/include");
+ else
+ Dirs.push_back("/../../../../sysroot/usr/include");
+ return Dirs;
+ });
+ }
+
+ // CodeScape IMG toolchain starting from v1.3.
+ MultilibSet MtiMipsMultilibsV2;
+ {
+ auto BeHard = makeMultilib("/mips-r2-hard")
+ .flag("+EB")
+ .flag("-msoft-float")
+ .flag("-mnan=2008")
+ .flag("-muclibc");
+ auto BeSoft = makeMultilib("/mips-r2-soft")
+ .flag("+EB")
+ .flag("+msoft-float")
+ .flag("-mnan=2008");
+ auto ElHard = makeMultilib("/mipsel-r2-hard")
+ .flag("+EL")
+ .flag("-msoft-float")
+ .flag("-mnan=2008")
+ .flag("-muclibc");
+ auto ElSoft = makeMultilib("/mipsel-r2-soft")
+ .flag("+EL")
+ .flag("+msoft-float")
+ .flag("-mnan=2008")
+ .flag("-mmicromips");
+ auto BeHardNan = makeMultilib("/mips-r2-hard-nan2008")
+ .flag("+EB")
+ .flag("-msoft-float")
+ .flag("+mnan=2008")
+ .flag("-muclibc");
+ auto ElHardNan = makeMultilib("/mipsel-r2-hard-nan2008")
+ .flag("+EL")
+ .flag("-msoft-float")
+ .flag("+mnan=2008")
+ .flag("-muclibc")
+ .flag("-mmicromips");
+ auto BeHardNanUclibc = makeMultilib("/mips-r2-hard-nan2008-uclibc")
+ .flag("+EB")
+ .flag("-msoft-float")
+ .flag("+mnan=2008")
+ .flag("+muclibc");
+ auto ElHardNanUclibc = makeMultilib("/mipsel-r2-hard-nan2008-uclibc")
+ .flag("+EL")
+ .flag("-msoft-float")
+ .flag("+mnan=2008")
+ .flag("+muclibc");
+ auto BeHardUclibc = makeMultilib("/mips-r2-hard-uclibc")
+ .flag("+EB")
+ .flag("-msoft-float")
+ .flag("-mnan=2008")
+ .flag("+muclibc");
+ auto ElHardUclibc = makeMultilib("/mipsel-r2-hard-uclibc")
+ .flag("+EL")
+ .flag("-msoft-float")
+ .flag("-mnan=2008")
+ .flag("+muclibc");
+ auto ElMicroHardNan = makeMultilib("/micromipsel-r2-hard-nan2008")
+ .flag("+EL")
+ .flag("-msoft-float")
+ .flag("+mnan=2008")
+ .flag("+mmicromips");
+ auto ElMicroSoft = makeMultilib("/micromipsel-r2-soft")
+ .flag("+EL")
+ .flag("+msoft-float")
+ .flag("-mnan=2008")
+ .flag("+mmicromips");
+
+ auto O32 =
+ makeMultilib("/lib").osSuffix("").flag("-mabi=n32").flag("-mabi=n64");
+ auto N32 =
+ makeMultilib("/lib32").osSuffix("").flag("+mabi=n32").flag("-mabi=n64");
+ auto N64 =
+ makeMultilib("/lib64").osSuffix("").flag("-mabi=n32").flag("+mabi=n64");
+
+ MtiMipsMultilibsV2 =
+ MultilibSet()
+ .Either({BeHard, BeSoft, ElHard, ElSoft, BeHardNan, ElHardNan,
+ BeHardNanUclibc, ElHardNanUclibc, BeHardUclibc,
+ ElHardUclibc, ElMicroHardNan, ElMicroSoft})
+ .Either(O32, N32, N64)
+ .FilterOut(NonExistent)
+ .setIncludeDirsCallback([](const Multilib &M) {
+ return std::vector<std::string>({"/../../../../sysroot" +
+ M.includeSuffix() +
+ "/../usr/include"});
+ })
+ .setFilePathsCallback([](const Multilib &M) {
+ return std::vector<std::string>(
+ {"/../../../../mips-mti-linux-gnu/lib" + M.gccSuffix()});
+ });
+ }
+ for (auto *Candidate : {&MtiMipsMultilibsV1, &MtiMipsMultilibsV2}) {
+ if (Candidate->select(Flags, Result.SelectedMultilib)) {
+ Result.Multilibs = *Candidate;
+ return true;
+ }
+ }
+ return false;
+}
+
+static bool findMipsImgMultilibs(const Multilib::flags_list &Flags,
+ FilterNonExistent &NonExistent,
+ DetectedMultilibs &Result) {
+ // CodeScape IMG toolchain v1.2 and early.
+ MultilibSet ImgMultilibsV1;
+ {
+ auto Mips64r6 = makeMultilib("/mips64r6").flag("+m64").flag("-m32");
+
+ auto LittleEndian = makeMultilib("/el").flag("+EL").flag("-EB");
+
+ auto MAbi64 =
+ makeMultilib("/64").flag("+mabi=n64").flag("-mabi=n32").flag("-m32");
+
+ ImgMultilibsV1 =
+ MultilibSet()
+ .Maybe(Mips64r6)
+ .Maybe(MAbi64)
+ .Maybe(LittleEndian)
+ .FilterOut(NonExistent)
+ .setIncludeDirsCallback([](const Multilib &M) {
+ return std::vector<std::string>(
+ {"/include", "/../../../../sysroot/usr/include"});
+ });
+ }
+
+ // CodeScape IMG toolchain starting from v1.3.
+ MultilibSet ImgMultilibsV2;
+ {
+ auto BeHard = makeMultilib("/mips-r6-hard")
+ .flag("+EB")
+ .flag("-msoft-float")
+ .flag("-mmicromips");
+ auto BeSoft = makeMultilib("/mips-r6-soft")
+ .flag("+EB")
+ .flag("+msoft-float")
+ .flag("-mmicromips");
+ auto ElHard = makeMultilib("/mipsel-r6-hard")
+ .flag("+EL")
+ .flag("-msoft-float")
+ .flag("-mmicromips");
+ auto ElSoft = makeMultilib("/mipsel-r6-soft")
+ .flag("+EL")
+ .flag("+msoft-float")
+ .flag("-mmicromips");
+ auto BeMicroHard = makeMultilib("/micromips-r6-hard")
+ .flag("+EB")
+ .flag("-msoft-float")
+ .flag("+mmicromips");
+ auto BeMicroSoft = makeMultilib("/micromips-r6-soft")
+ .flag("+EB")
+ .flag("+msoft-float")
+ .flag("+mmicromips");
+ auto ElMicroHard = makeMultilib("/micromipsel-r6-hard")
+ .flag("+EL")
+ .flag("-msoft-float")
+ .flag("+mmicromips");
+ auto ElMicroSoft = makeMultilib("/micromipsel-r6-soft")
+ .flag("+EL")
+ .flag("+msoft-float")
+ .flag("+mmicromips");
+
+ auto O32 =
+ makeMultilib("/lib").osSuffix("").flag("-mabi=n32").flag("-mabi=n64");
+ auto N32 =
+ makeMultilib("/lib32").osSuffix("").flag("+mabi=n32").flag("-mabi=n64");
+ auto N64 =
+ makeMultilib("/lib64").osSuffix("").flag("-mabi=n32").flag("+mabi=n64");
+
+ ImgMultilibsV2 =
+ MultilibSet()
+ .Either({BeHard, BeSoft, ElHard, ElSoft, BeMicroHard, BeMicroSoft,
+ ElMicroHard, ElMicroSoft})
+ .Either(O32, N32, N64)
+ .FilterOut(NonExistent)
+ .setIncludeDirsCallback([](const Multilib &M) {
+ return std::vector<std::string>({"/../../../../sysroot" +
+ M.includeSuffix() +
+ "/../usr/include"});
+ })
+ .setFilePathsCallback([](const Multilib &M) {
+ return std::vector<std::string>(
+ {"/../../../../mips-img-linux-gnu/lib" + M.gccSuffix()});
+ });
+ }
+ for (auto *Candidate : {&ImgMultilibsV1, &ImgMultilibsV2}) {
+ if (Candidate->select(Flags, Result.SelectedMultilib)) {
+ Result.Multilibs = *Candidate;
+ return true;
+ }
+ }
+ return false;
+}
+
+bool clang::driver::findMIPSMultilibs(const Driver &D,
+ const llvm::Triple &TargetTriple,
+ StringRef Path, const ArgList &Args,
+ DetectedMultilibs &Result) {
+ FilterNonExistent NonExistent(Path, "/crtbegin.o", D.getVFS());
+
+ StringRef CPUName;
+ StringRef ABIName;
+ tools::mips::getMipsCPUAndABI(Args, TargetTriple, CPUName, ABIName);
+
+ llvm::Triple::ArchType TargetArch = TargetTriple.getArch();
+
+ Multilib::flags_list Flags;
+ addMultilibFlag(TargetTriple.isMIPS32(), "m32", Flags);
+ addMultilibFlag(TargetTriple.isMIPS64(), "m64", Flags);
+ addMultilibFlag(isMips16(Args), "mips16", Flags);
+ addMultilibFlag(CPUName == "mips32", "march=mips32", Flags);
+ addMultilibFlag(CPUName == "mips32r2" || CPUName == "mips32r3" ||
+ CPUName == "mips32r5" || CPUName == "p5600",
+ "march=mips32r2", Flags);
+ addMultilibFlag(CPUName == "mips32r6", "march=mips32r6", Flags);
+ addMultilibFlag(CPUName == "mips64", "march=mips64", Flags);
+ addMultilibFlag(CPUName == "mips64r2" || CPUName == "mips64r3" ||
+ CPUName == "mips64r5" || CPUName == "octeon" ||
+ CPUName == "octeon+",
+ "march=mips64r2", Flags);
+ addMultilibFlag(CPUName == "mips64r6", "march=mips64r6", Flags);
+ addMultilibFlag(isMicroMips(Args), "mmicromips", Flags);
+ addMultilibFlag(tools::mips::isUCLibc(Args), "muclibc", Flags);
+ addMultilibFlag(tools::mips::isNaN2008(D, Args, TargetTriple), "mnan=2008",
+ Flags);
+ addMultilibFlag(ABIName == "n32", "mabi=n32", Flags);
+ addMultilibFlag(ABIName == "n64", "mabi=n64", Flags);
+ addMultilibFlag(isSoftFloatABI(Args), "msoft-float", Flags);
+ addMultilibFlag(!isSoftFloatABI(Args), "mhard-float", Flags);
+ addMultilibFlag(isMipsEL(TargetArch), "EL", Flags);
+ addMultilibFlag(!isMipsEL(TargetArch), "EB", Flags);
+
+ if (TargetTriple.isAndroid())
+ return findMipsAndroidMultilibs(D.getVFS(), Path, Flags, NonExistent,
+ Result);
+
+ if (TargetTriple.getVendor() == llvm::Triple::MipsTechnologies &&
+ TargetTriple.getOS() == llvm::Triple::Linux &&
+ TargetTriple.getEnvironment() == llvm::Triple::UnknownEnvironment)
+ return findMipsMuslMultilibs(Flags, NonExistent, Result);
+
+ if (TargetTriple.getVendor() == llvm::Triple::MipsTechnologies &&
+ TargetTriple.getOS() == llvm::Triple::Linux &&
+ TargetTriple.isGNUEnvironment())
+ return findMipsMtiMultilibs(Flags, NonExistent, Result);
+
+ if (TargetTriple.getVendor() == llvm::Triple::ImaginationTechnologies &&
+ TargetTriple.getOS() == llvm::Triple::Linux &&
+ TargetTriple.isGNUEnvironment())
+ return findMipsImgMultilibs(Flags, NonExistent, Result);
+
+ if (findMipsCsMultilibs(Flags, NonExistent, Result))
+ return true;
+
+ // Fallback to the regular toolchain-tree structure.
+ Multilib Default;
+ Result.Multilibs.push_back(Default);
+ Result.Multilibs.FilterOut(NonExistent);
+
+ if (Result.Multilibs.select(Flags, Result.SelectedMultilib)) {
+ Result.BiarchSibling = Multilib();
+ return true;
+ }
+
+ return false;
+}
+
+static void findAndroidArmMultilibs(const Driver &D,
+ const llvm::Triple &TargetTriple,
+ StringRef Path, const ArgList &Args,
+ DetectedMultilibs &Result) {
+ // Find multilibs with subdirectories like armv7-a, thumb, armv7-a/thumb.
+ FilterNonExistent NonExistent(Path, "/crtbegin.o", D.getVFS());
+ Multilib ArmV7Multilib = makeMultilib("/armv7-a")
+ .flag("+march=armv7-a")
+ .flag("-mthumb");
+ Multilib ThumbMultilib = makeMultilib("/thumb")
+ .flag("-march=armv7-a")
+ .flag("+mthumb");
+ Multilib ArmV7ThumbMultilib = makeMultilib("/armv7-a/thumb")
+ .flag("+march=armv7-a")
+ .flag("+mthumb");
+ Multilib DefaultMultilib = makeMultilib("")
+ .flag("-march=armv7-a")
+ .flag("-mthumb");
+ MultilibSet AndroidArmMultilibs =
+ MultilibSet()
+ .Either(ThumbMultilib, ArmV7Multilib,
+ ArmV7ThumbMultilib, DefaultMultilib)
+ .FilterOut(NonExistent);
+
+ Multilib::flags_list Flags;
+ llvm::StringRef Arch = Args.getLastArgValue(options::OPT_march_EQ);
+ bool IsArmArch = TargetTriple.getArch() == llvm::Triple::arm;
+ bool IsThumbArch = TargetTriple.getArch() == llvm::Triple::thumb;
+ bool IsV7SubArch = TargetTriple.getSubArch() == llvm::Triple::ARMSubArch_v7;
+ bool IsThumbMode = IsThumbArch ||
+ Args.hasFlag(options::OPT_mthumb, options::OPT_mno_thumb, false) ||
+ (IsArmArch && llvm::ARM::parseArchISA(Arch) == llvm::ARM::ISAKind::THUMB);
+ bool IsArmV7Mode = (IsArmArch || IsThumbArch) &&
+ (llvm::ARM::parseArchVersion(Arch) == 7 ||
+ (IsArmArch && Arch == "" && IsV7SubArch));
+ addMultilibFlag(IsArmV7Mode, "march=armv7-a", Flags);
+ addMultilibFlag(IsThumbMode, "mthumb", Flags);
+
+ if (AndroidArmMultilibs.select(Flags, Result.SelectedMultilib))
+ Result.Multilibs = AndroidArmMultilibs;
+}
+
+static bool findMSP430Multilibs(const Driver &D,
+ const llvm::Triple &TargetTriple,
+ StringRef Path, const ArgList &Args,
+ DetectedMultilibs &Result) {
+ FilterNonExistent NonExistent(Path, "/crtbegin.o", D.getVFS());
+ Multilib WithoutExceptions = makeMultilib("/430").flag("-exceptions");
+ Multilib WithExceptions = makeMultilib("/430/exceptions").flag("+exceptions");
+
+ // FIXME: when clang starts to support msp430x ISA additional logic
+ // to select between multilib must be implemented
+ // Multilib MSP430xMultilib = makeMultilib("/large");
+
+ Result.Multilibs.push_back(WithoutExceptions);
+ Result.Multilibs.push_back(WithExceptions);
+ Result.Multilibs.FilterOut(NonExistent);
+
+ Multilib::flags_list Flags;
+ addMultilibFlag(Args.hasFlag(options::OPT_fexceptions,
+ options::OPT_fno_exceptions, false),
+ "exceptions", Flags);
+ if (Result.Multilibs.select(Flags, Result.SelectedMultilib))
+ return true;
+
+ return false;
+}
+
+static void findCSKYMultilibs(const Driver &D, const llvm::Triple &TargetTriple,
+ StringRef Path, const ArgList &Args,
+ DetectedMultilibs &Result) {
+ FilterNonExistent NonExistent(Path, "/crtbegin.o", D.getVFS());
+
+ tools::csky::FloatABI TheFloatABI = tools::csky::getCSKYFloatABI(D, Args);
+ std::optional<llvm::StringRef> Res =
+ tools::csky::getCSKYArchName(D, Args, TargetTriple);
+
+ if (!Res)
+ return;
+ auto ARCHName = *Res;
+
+ Multilib::flags_list Flags;
+ addMultilibFlag(TheFloatABI == tools::csky::FloatABI::Hard, "hard-fp", Flags);
+ addMultilibFlag(TheFloatABI == tools::csky::FloatABI::SoftFP, "soft-fp",
+ Flags);
+ addMultilibFlag(TheFloatABI == tools::csky::FloatABI::Soft, "soft", Flags);
+ addMultilibFlag(ARCHName == "ck801", "march=ck801", Flags);
+ addMultilibFlag(ARCHName == "ck802", "march=ck802", Flags);
+ addMultilibFlag(ARCHName == "ck803", "march=ck803", Flags);
+ addMultilibFlag(ARCHName == "ck804", "march=ck804", Flags);
+ addMultilibFlag(ARCHName == "ck805", "march=ck805", Flags);
+ addMultilibFlag(ARCHName == "ck807", "march=ck807", Flags);
+ addMultilibFlag(ARCHName == "ck810", "march=ck810", Flags);
+ addMultilibFlag(ARCHName == "ck810v", "march=ck810v", Flags);
+ addMultilibFlag(ARCHName == "ck860", "march=ck860", Flags);
+ addMultilibFlag(ARCHName == "ck860v", "march=ck860v", Flags);
+
+ bool isBigEndian = false;
+ if (Arg *A = Args.getLastArg(options::OPT_mlittle_endian,
+ options::OPT_mbig_endian))
+ isBigEndian = !A->getOption().matches(options::OPT_mlittle_endian);
+ addMultilibFlag(isBigEndian, "EB", Flags);
+
+ auto HardFloat = makeMultilib("/hard-fp").flag("+hard-fp");
+ auto SoftFpFloat = makeMultilib("/soft-fp").flag("+soft-fp");
+ auto SoftFloat = makeMultilib("").flag("+soft");
+ auto Arch801 = makeMultilib("/ck801").flag("+march=ck801");
+ auto Arch802 = makeMultilib("/ck802").flag("+march=ck802");
+ auto Arch803 = makeMultilib("/ck803").flag("+march=ck803");
+ // CK804 use the same library as CK803
+ auto Arch804 = makeMultilib("/ck803").flag("+march=ck804");
+ auto Arch805 = makeMultilib("/ck805").flag("+march=ck805");
+ auto Arch807 = makeMultilib("/ck807").flag("+march=ck807");
+ auto Arch810 = makeMultilib("").flag("+march=ck810");
+ auto Arch810v = makeMultilib("/ck810v").flag("+march=ck810v");
+ auto Arch860 = makeMultilib("/ck860").flag("+march=ck860");
+ auto Arch860v = makeMultilib("/ck860v").flag("+march=ck860v");
+ auto BigEndian = makeMultilib("/big").flag("+EB");
+
+ MultilibSet CSKYMultilibs =
+ MultilibSet()
+ .Maybe(BigEndian)
+ .Either({Arch801, Arch802, Arch803, Arch804, Arch805, Arch807,
+ Arch810, Arch810v, Arch860, Arch860v})
+ .Either(HardFloat, SoftFpFloat, SoftFloat)
+ .FilterOut(NonExistent);
+
+ if (CSKYMultilibs.select(Flags, Result.SelectedMultilib))
+ Result.Multilibs = CSKYMultilibs;
+}
+
+static void findRISCVBareMetalMultilibs(const Driver &D,
+ const llvm::Triple &TargetTriple,
+ StringRef Path, const ArgList &Args,
+ DetectedMultilibs &Result) {
+ FilterNonExistent NonExistent(Path, "/crtbegin.o", D.getVFS());
+ struct RiscvMultilib {
+ StringRef march;
+ StringRef mabi;
+ };
+ // currently only support the set of multilibs like riscv-gnu-toolchain does.
+ // TODO: support MULTILIB_REUSE
+ constexpr RiscvMultilib RISCVMultilibSet[] = {
+ {"rv32i", "ilp32"}, {"rv32im", "ilp32"}, {"rv32iac", "ilp32"},
+ {"rv32imac", "ilp32"}, {"rv32imafc", "ilp32f"}, {"rv64imac", "lp64"},
+ {"rv64imafdc", "lp64d"}};
+
+ std::vector<Multilib> Ms;
+ for (auto Element : RISCVMultilibSet) {
+ // multilib path rule is ${march}/${mabi}
+ Ms.emplace_back(
+ makeMultilib((Twine(Element.march) + "/" + Twine(Element.mabi)).str())
+ .flag(Twine("+march=", Element.march).str())
+ .flag(Twine("+mabi=", Element.mabi).str()));
+ }
+ MultilibSet RISCVMultilibs =
+ MultilibSet()
+ .Either(ArrayRef<Multilib>(Ms))
+ .FilterOut(NonExistent)
+ .setFilePathsCallback([](const Multilib &M) {
+ return std::vector<std::string>(
+ {M.gccSuffix(),
+ "/../../../../riscv64-unknown-elf/lib" + M.gccSuffix(),
+ "/../../../../riscv32-unknown-elf/lib" + M.gccSuffix()});
+ });
+
+
+ Multilib::flags_list Flags;
+ llvm::StringSet<> Added_ABIs;
+ StringRef ABIName = tools::riscv::getRISCVABI(Args, TargetTriple);
+ StringRef MArch = tools::riscv::getRISCVArch(Args, TargetTriple);
+ for (auto Element : RISCVMultilibSet) {
+ addMultilibFlag(MArch == Element.march,
+ Twine("march=", Element.march).str().c_str(), Flags);
+ if (!Added_ABIs.count(Element.mabi)) {
+ Added_ABIs.insert(Element.mabi);
+ addMultilibFlag(ABIName == Element.mabi,
+ Twine("mabi=", Element.mabi).str().c_str(), Flags);
+ }
+ }
+
+ if (RISCVMultilibs.select(Flags, Result.SelectedMultilib))
+ Result.Multilibs = RISCVMultilibs;
+}
+
+static void findRISCVMultilibs(const Driver &D,
+ const llvm::Triple &TargetTriple, StringRef Path,
+ const ArgList &Args, DetectedMultilibs &Result) {
+ if (TargetTriple.getOS() == llvm::Triple::UnknownOS)
+ return findRISCVBareMetalMultilibs(D, TargetTriple, Path, Args, Result);
+
+ FilterNonExistent NonExistent(Path, "/crtbegin.o", D.getVFS());
+ Multilib Ilp32 = makeMultilib("lib32/ilp32").flag("+m32").flag("+mabi=ilp32");
+ Multilib Ilp32f =
+ makeMultilib("lib32/ilp32f").flag("+m32").flag("+mabi=ilp32f");
+ Multilib Ilp32d =
+ makeMultilib("lib32/ilp32d").flag("+m32").flag("+mabi=ilp32d");
+ Multilib Lp64 = makeMultilib("lib64/lp64").flag("+m64").flag("+mabi=lp64");
+ Multilib Lp64f = makeMultilib("lib64/lp64f").flag("+m64").flag("+mabi=lp64f");
+ Multilib Lp64d = makeMultilib("lib64/lp64d").flag("+m64").flag("+mabi=lp64d");
+ MultilibSet RISCVMultilibs =
+ MultilibSet()
+ .Either({Ilp32, Ilp32f, Ilp32d, Lp64, Lp64f, Lp64d})
+ .FilterOut(NonExistent);
+
+ Multilib::flags_list Flags;
+ bool IsRV64 = TargetTriple.getArch() == llvm::Triple::riscv64;
+ StringRef ABIName = tools::riscv::getRISCVABI(Args, TargetTriple);
+
+ addMultilibFlag(!IsRV64, "m32", Flags);
+ addMultilibFlag(IsRV64, "m64", Flags);
+ addMultilibFlag(ABIName == "ilp32", "mabi=ilp32", Flags);
+ addMultilibFlag(ABIName == "ilp32f", "mabi=ilp32f", Flags);
+ addMultilibFlag(ABIName == "ilp32d", "mabi=ilp32d", Flags);
+ addMultilibFlag(ABIName == "lp64", "mabi=lp64", Flags);
+ addMultilibFlag(ABIName == "lp64f", "mabi=lp64f", Flags);
+ addMultilibFlag(ABIName == "lp64d", "mabi=lp64d", Flags);
+
+ if (RISCVMultilibs.select(Flags, Result.SelectedMultilib))
+ Result.Multilibs = RISCVMultilibs;
+}
+
+static bool findBiarchMultilibs(const Driver &D,
+ const llvm::Triple &TargetTriple,
+ StringRef Path, const ArgList &Args,
+ bool NeedsBiarchSuffix,
+ DetectedMultilibs &Result) {
+ Multilib Default;
+
+ // Some versions of SUSE and Fedora on ppc64 put 32-bit libs
+ // in what would normally be GCCInstallPath and put the 64-bit
+ // libs in a subdirectory named 64. The simple logic we follow is that
+ // *if* there is a subdirectory of the right name with crtbegin.o in it,
+ // we use that. If not, and if not a biarch triple alias, we look for
+ // crtbegin.o without the subdirectory.
+
+ StringRef Suff64 = "/64";
+ // Solaris uses platform-specific suffixes instead of /64.
+ if (TargetTriple.getOS() == llvm::Triple::Solaris) {
+ switch (TargetTriple.getArch()) {
+ case llvm::Triple::x86:
+ case llvm::Triple::x86_64:
+ Suff64 = "/amd64";
+ break;
+ case llvm::Triple::sparc:
+ case llvm::Triple::sparcv9:
+ Suff64 = "/sparcv9";
+ break;
+ default:
+ break;
+ }
+ }
+
+ Multilib Alt64 = Multilib()
+ .gccSuffix(Suff64)
+ .includeSuffix(Suff64)
+ .flag("-m32")
+ .flag("+m64")
+ .flag("-mx32");
+ Multilib Alt32 = Multilib()
+ .gccSuffix("/32")
+ .includeSuffix("/32")
+ .flag("+m32")
+ .flag("-m64")
+ .flag("-mx32");
+ Multilib Altx32 = Multilib()
+ .gccSuffix("/x32")
+ .includeSuffix("/x32")
+ .flag("-m32")
+ .flag("-m64")
+ .flag("+mx32");
+
+ // GCC toolchain for IAMCU doesn't have crtbegin.o, so look for libgcc.a.
+ FilterNonExistent NonExistent(
+ Path, TargetTriple.isOSIAMCU() ? "/libgcc.a" : "/crtbegin.o", D.getVFS());
+
+ // Determine default multilib from: 32, 64, x32
+ // Also handle cases such as 64 on 32, 32 on 64, etc.
+ enum { UNKNOWN, WANT32, WANT64, WANTX32 } Want = UNKNOWN;
+ const bool IsX32 = TargetTriple.isX32();
+ if (TargetTriple.isArch32Bit() && !NonExistent(Alt32))
+ Want = WANT64;
+ else if (TargetTriple.isArch64Bit() && IsX32 && !NonExistent(Altx32))
+ Want = WANT64;
+ else if (TargetTriple.isArch64Bit() && !IsX32 && !NonExistent(Alt64))
+ Want = WANT32;
+ else {
+ if (TargetTriple.isArch32Bit())
+ Want = NeedsBiarchSuffix ? WANT64 : WANT32;
+ else if (IsX32)
+ Want = NeedsBiarchSuffix ? WANT64 : WANTX32;
+ else
+ Want = NeedsBiarchSuffix ? WANT32 : WANT64;
+ }
+
+ if (Want == WANT32)
+ Default.flag("+m32").flag("-m64").flag("-mx32");
+ else if (Want == WANT64)
+ Default.flag("-m32").flag("+m64").flag("-mx32");
+ else if (Want == WANTX32)
+ Default.flag("-m32").flag("-m64").flag("+mx32");
+ else
+ return false;
+
+ Result.Multilibs.push_back(Default);
+ Result.Multilibs.push_back(Alt64);
+ Result.Multilibs.push_back(Alt32);
+ Result.Multilibs.push_back(Altx32);
+
+ Result.Multilibs.FilterOut(NonExistent);
+
+ Multilib::flags_list Flags;
+ addMultilibFlag(TargetTriple.isArch64Bit() && !IsX32, "m64", Flags);
+ addMultilibFlag(TargetTriple.isArch32Bit(), "m32", Flags);
+ addMultilibFlag(TargetTriple.isArch64Bit() && IsX32, "mx32", Flags);
+
+ if (!Result.Multilibs.select(Flags, Result.SelectedMultilib))
+ return false;
+
+ if (Result.SelectedMultilib == Alt64 || Result.SelectedMultilib == Alt32 ||
+ Result.SelectedMultilib == Altx32)
+ Result.BiarchSibling = Default;
+
+ return true;
+}
+
+/// Generic_GCC - A tool chain using the 'gcc' command to perform
+/// all subcommands; this relies on gcc translating the majority of
+/// command line options.
+
+/// Less-than for GCCVersion, implementing a Strict Weak Ordering.
+bool Generic_GCC::GCCVersion::isOlderThan(int RHSMajor, int RHSMinor,
+ int RHSPatch,
+ StringRef RHSPatchSuffix) const {
+ if (Major != RHSMajor)
+ return Major < RHSMajor;
+ if (Minor != RHSMinor) {
+ // Note that versions without a specified minor sort higher than those with
+ // a minor.
+ if (RHSMinor == -1)
+ return true;
+ if (Minor == -1)
+ return false;
+ return Minor < RHSMinor;
+ }
+ if (Patch != RHSPatch) {
+ // Note that versions without a specified patch sort higher than those with
+ // a patch.
+ if (RHSPatch == -1)
+ return true;
+ if (Patch == -1)
+ return false;
+
+ // Otherwise just sort on the patch itself.
+ return Patch < RHSPatch;
+ }
+ if (PatchSuffix != RHSPatchSuffix) {
+ // Sort empty suffixes higher.
+ if (RHSPatchSuffix.empty())
+ return true;
+ if (PatchSuffix.empty())
+ return false;
+
+ // Provide a lexicographic sort to make this a total ordering.
+ return PatchSuffix < RHSPatchSuffix;
+ }
+
+ // The versions are equal.
+ return false;
+}
+
+/// Parse a GCCVersion object out of a string of text.
+///
+/// This is the primary means of forming GCCVersion objects.
+/*static*/
+Generic_GCC::GCCVersion Generic_GCC::GCCVersion::Parse(StringRef VersionText) {
+ const GCCVersion BadVersion = {VersionText.str(), -1, -1, -1, "", "", ""};
+ std::pair<StringRef, StringRef> First = VersionText.split('.');
+ std::pair<StringRef, StringRef> Second = First.second.split('.');
+
+ GCCVersion GoodVersion = {VersionText.str(), -1, -1, -1, "", "", ""};
+ if (First.first.getAsInteger(10, GoodVersion.Major) || GoodVersion.Major < 0)
+ return BadVersion;
+ GoodVersion.MajorStr = First.first.str();
+ if (First.second.empty())
+ return GoodVersion;
+ StringRef MinorStr = Second.first;
+ if (Second.second.empty()) {
+ if (size_t EndNumber = MinorStr.find_first_not_of("0123456789")) {
+ GoodVersion.PatchSuffix = std::string(MinorStr.substr(EndNumber));
+ MinorStr = MinorStr.slice(0, EndNumber);
+ }
+ }
+ if (!MinorStr.str().empty() &&
+ (MinorStr.getAsInteger(10, GoodVersion.Minor) || GoodVersion.Minor < 0))
+ return BadVersion;
+ GoodVersion.MinorStr = MinorStr.str();
+
+ // First look for a number prefix and parse that if present. Otherwise just
+ // stash the entire patch string in the suffix, and leave the number
+ // unspecified. This covers versions strings such as:
+ // 5 (handled above)
+ // 4.4
+ // 4.4-patched
+ // 4.4.0
+ // 4.4.x
+ // 4.4.2-rc4
+ // 4.4.x-patched
+ // And retains any patch number it finds.
+ StringRef PatchText = Second.second;
+ if (!PatchText.empty()) {
+ if (size_t EndNumber = PatchText.find_first_not_of("0123456789")) {
+ // Try to parse the number and any suffix.
+ if (PatchText.slice(0, EndNumber).getAsInteger(10, GoodVersion.Patch) ||
+ GoodVersion.Patch < 0)
+ return BadVersion;
+ GoodVersion.PatchSuffix = std::string(PatchText.substr(EndNumber));
+ }
+ }
+
+ return GoodVersion;
+}
+
+static llvm::StringRef getGCCToolchainDir(const ArgList &Args,
+ llvm::StringRef SysRoot) {
+ const Arg *A = Args.getLastArg(clang::driver::options::OPT_gcc_toolchain);
+ if (A)
+ return A->getValue();
+
+ // If we have a SysRoot, ignore GCC_INSTALL_PREFIX.
+ // GCC_INSTALL_PREFIX specifies the gcc installation for the default
+ // sysroot and is likely not valid with a different sysroot.
+ if (!SysRoot.empty())
+ return "";
+
+ return GCC_INSTALL_PREFIX;
+}
+
+/// Initialize a GCCInstallationDetector from the driver.
+///
+/// This performs all of the autodetection and sets up the various paths.
+/// Once constructed, a GCCInstallationDetector is essentially immutable.
+///
+/// FIXME: We shouldn't need an explicit TargetTriple parameter here, and
+/// should instead pull the target out of the driver. This is currently
+/// necessary because the driver doesn't store the final version of the target
+/// triple.
+void Generic_GCC::GCCInstallationDetector::init(
+ const llvm::Triple &TargetTriple, const ArgList &Args,
+ ArrayRef<std::string> ExtraTripleAliases) {
+ llvm::Triple BiarchVariantTriple = TargetTriple.isArch32Bit()
+ ? TargetTriple.get64BitArchVariant()
+ : TargetTriple.get32BitArchVariant();
+ // The library directories which may contain GCC installations.
+ SmallVector<StringRef, 4> CandidateLibDirs, CandidateBiarchLibDirs;
+ // The compatible GCC triples for this particular architecture.
+ SmallVector<StringRef, 16> CandidateTripleAliases;
+ SmallVector<StringRef, 16> CandidateBiarchTripleAliases;
+ CollectLibDirsAndTriples(TargetTriple, BiarchVariantTriple, CandidateLibDirs,
+ CandidateTripleAliases, CandidateBiarchLibDirs,
+ CandidateBiarchTripleAliases);
+
+ // If --gcc-install-dir= is specified, skip filesystem detection.
+ if (const Arg *A =
+ Args.getLastArg(clang::driver::options::OPT_gcc_install_dir_EQ);
+ A && A->getValue()[0]) {
+ StringRef InstallDir = A->getValue();
+ if (!ScanGCCForMultilibs(TargetTriple, Args, InstallDir, false)) {
+ D.Diag(diag::err_drv_invalid_gcc_install_dir) << InstallDir;
+ } else {
+ (void)InstallDir.consume_back("/");
+ StringRef VersionText = llvm::sys::path::filename(InstallDir);
+ StringRef TripleText =
+ llvm::sys::path::filename(llvm::sys::path::parent_path(InstallDir));
+
+ Version = GCCVersion::Parse(VersionText);
+ GCCTriple.setTriple(TripleText);
+ GCCInstallPath = std::string(InstallDir);
+ GCCParentLibPath = GCCInstallPath + "/../../..";
+ IsValid = true;
+ }
+ return;
+ }
+
+ // Compute the set of prefixes for our search.
+ SmallVector<std::string, 8> Prefixes;
+ StringRef GCCToolchainDir = getGCCToolchainDir(Args, D.SysRoot);
+ if (GCCToolchainDir != "") {
+ if (GCCToolchainDir.back() == '/')
+ GCCToolchainDir = GCCToolchainDir.drop_back(); // remove the /
+
+ Prefixes.push_back(std::string(GCCToolchainDir));
+ } else {
+ // If we have a SysRoot, try that first.
+ if (!D.SysRoot.empty()) {
+ Prefixes.push_back(D.SysRoot);
+ AddDefaultGCCPrefixes(TargetTriple, Prefixes, D.SysRoot);
+ }
+
+ // Then look for gcc installed alongside clang.
+ Prefixes.push_back(D.InstalledDir + "/..");
+
+ // Next, look for prefix(es) that correspond to distribution-supplied gcc
+ // installations.
+ if (D.SysRoot.empty()) {
+ // Typically /usr.
+ AddDefaultGCCPrefixes(TargetTriple, Prefixes, D.SysRoot);
+ }
+
+ // Try to respect gcc-config on Gentoo if --gcc-toolchain is not provided.
+ // This avoids accidentally enforcing the system GCC version when using a
+ // custom toolchain.
+ SmallVector<StringRef, 16> GentooTestTriples;
+ // Try to match an exact triple as target triple first.
+ // e.g. crossdev -S x86_64-gentoo-linux-gnu will install gcc libs for
+ // x86_64-gentoo-linux-gnu. But "clang -target x86_64-gentoo-linux-gnu"
+ // may pick the libraries for x86_64-pc-linux-gnu even when exact matching
+ // triple x86_64-gentoo-linux-gnu is present.
+ GentooTestTriples.push_back(TargetTriple.str());
+ // Check rest of triples.
+ GentooTestTriples.append(ExtraTripleAliases.begin(),
+ ExtraTripleAliases.end());
+ GentooTestTriples.append(CandidateTripleAliases.begin(),
+ CandidateTripleAliases.end());
+ if (ScanGentooConfigs(TargetTriple, Args, GentooTestTriples,
+ CandidateBiarchTripleAliases))
+ return;
+ }
+
+ // Loop over the various components which exist and select the best GCC
+ // installation available. GCC installs are ranked by version number.
+ const GCCVersion VersionZero = GCCVersion::Parse("0.0.0");
+ Version = VersionZero;
+ for (const std::string &Prefix : Prefixes) {
+ auto &VFS = D.getVFS();
+ if (!VFS.exists(Prefix))
+ continue;
+ for (StringRef Suffix : CandidateLibDirs) {
+ const std::string LibDir = concat(Prefix, Suffix);
+ if (!VFS.exists(LibDir))
+ continue;
+ // Maybe filter out <libdir>/gcc and <libdir>/gcc-cross.
+ bool GCCDirExists = VFS.exists(LibDir + "/gcc");
+ bool GCCCrossDirExists = VFS.exists(LibDir + "/gcc-cross");
+ // Try to match the exact target triple first.
+ ScanLibDirForGCCTriple(TargetTriple, Args, LibDir, TargetTriple.str(),
+ false, GCCDirExists, GCCCrossDirExists);
+ // Try rest of possible triples.
+ for (StringRef Candidate : ExtraTripleAliases) // Try these first.
+ ScanLibDirForGCCTriple(TargetTriple, Args, LibDir, Candidate, false,
+ GCCDirExists, GCCCrossDirExists);
+ for (StringRef Candidate : CandidateTripleAliases)
+ ScanLibDirForGCCTriple(TargetTriple, Args, LibDir, Candidate, false,
+ GCCDirExists, GCCCrossDirExists);
+ }
+ for (StringRef Suffix : CandidateBiarchLibDirs) {
+ const std::string LibDir = Prefix + Suffix.str();
+ if (!VFS.exists(LibDir))
+ continue;
+ bool GCCDirExists = VFS.exists(LibDir + "/gcc");
+ bool GCCCrossDirExists = VFS.exists(LibDir + "/gcc-cross");
+ for (StringRef Candidate : CandidateBiarchTripleAliases)
+ ScanLibDirForGCCTriple(TargetTriple, Args, LibDir, Candidate, true,
+ GCCDirExists, GCCCrossDirExists);
+ }
+
+ // Skip other prefixes once a GCC installation is found.
+ if (Version > VersionZero)
+ break;
+ }
+}
+
+void Generic_GCC::GCCInstallationDetector::print(raw_ostream &OS) const {
+ for (const auto &InstallPath : CandidateGCCInstallPaths)
+ OS << "Found candidate GCC installation: " << InstallPath << "\n";
+
+ if (!GCCInstallPath.empty())
+ OS << "Selected GCC installation: " << GCCInstallPath << "\n";
+
+ for (const auto &Multilib : Multilibs)
+ OS << "Candidate multilib: " << Multilib << "\n";
+
+ if (Multilibs.size() != 0 || !SelectedMultilib.isDefault())
+ OS << "Selected multilib: " << SelectedMultilib << "\n";
+}
+
+bool Generic_GCC::GCCInstallationDetector::getBiarchSibling(Multilib &M) const {
+ if (BiarchSibling) {
+ M = *BiarchSibling;
+ return true;
+ }
+ return false;
+}
+
+void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes(
+ const llvm::Triple &TargetTriple, SmallVectorImpl<std::string> &Prefixes,
+ StringRef SysRoot) {
+ if (TargetTriple.getOS() == llvm::Triple::Solaris) {
+ // Solaris is a special case.
+ // The GCC installation is under
+ // /usr/gcc/<major>.<minor>/lib/gcc/<triple>/<major>.<minor>.<patch>/
+ // so we need to find those /usr/gcc/*/lib/gcc libdirs and go with
+ // /usr/gcc/<version> as a prefix.
+
+ std::string PrefixDir = concat(SysRoot, "/usr/gcc");
+ std::error_code EC;
+ for (llvm::vfs::directory_iterator LI = D.getVFS().dir_begin(PrefixDir, EC),
+ LE;
+ !EC && LI != LE; LI = LI.increment(EC)) {
+ StringRef VersionText = llvm::sys::path::filename(LI->path());
+ GCCVersion CandidateVersion = GCCVersion::Parse(VersionText);
+
+ // Filter out obviously bad entries.
+ if (CandidateVersion.Major == -1 || CandidateVersion.isOlderThan(4, 1, 1))
+ continue;
+
+ std::string CandidatePrefix = PrefixDir + "/" + VersionText.str();
+ std::string CandidateLibPath = CandidatePrefix + "/lib/gcc";
+ if (!D.getVFS().exists(CandidateLibPath))
+ continue;
+
+ Prefixes.push_back(CandidatePrefix);
+ }
+ return;
+ }
+
+ // For Linux, if --sysroot is not specified, look for RHEL/CentOS devtoolsets
+ // and gcc-toolsets.
+ if (SysRoot.empty() && TargetTriple.getOS() == llvm::Triple::Linux &&
+ D.getVFS().exists("/opt/rh")) {
+ // TODO: We may want to remove this, since the functionality
+ // can be achieved using config files.
+ Prefixes.push_back("/opt/rh/gcc-toolset-12/root/usr");
+ Prefixes.push_back("/opt/rh/gcc-toolset-11/root/usr");
+ Prefixes.push_back("/opt/rh/gcc-toolset-10/root/usr");
+ Prefixes.push_back("/opt/rh/devtoolset-12/root/usr");
+ Prefixes.push_back("/opt/rh/devtoolset-11/root/usr");
+ Prefixes.push_back("/opt/rh/devtoolset-10/root/usr");
+ Prefixes.push_back("/opt/rh/devtoolset-9/root/usr");
+ Prefixes.push_back("/opt/rh/devtoolset-8/root/usr");
+ Prefixes.push_back("/opt/rh/devtoolset-7/root/usr");
+ Prefixes.push_back("/opt/rh/devtoolset-6/root/usr");
+ Prefixes.push_back("/opt/rh/devtoolset-4/root/usr");
+ Prefixes.push_back("/opt/rh/devtoolset-3/root/usr");
+ Prefixes.push_back("/opt/rh/devtoolset-2/root/usr");
+ }
+
+ // Fall back to /usr which is used by most non-Solaris systems.
+ Prefixes.push_back(concat(SysRoot, "/usr"));
+}
+
+/*static*/ void Generic_GCC::GCCInstallationDetector::CollectLibDirsAndTriples(
+ const llvm::Triple &TargetTriple, const llvm::Triple &BiarchTriple,
+ SmallVectorImpl<StringRef> &LibDirs,
+ SmallVectorImpl<StringRef> &TripleAliases,
+ SmallVectorImpl<StringRef> &BiarchLibDirs,
+ SmallVectorImpl<StringRef> &BiarchTripleAliases) {
+ // Declare a bunch of static data sets that we'll select between below. These
+ // are specifically designed to always refer to string literals to avoid any
+ // lifetime or initialization issues.
+ //
+ // The *Triples variables hard code some triples so that, for example,
+ // --target=aarch64 (incomplete triple) can detect lib/aarch64-linux-gnu.
+ // They are not needed when the user has correct LLVM_DEFAULT_TARGET_TRIPLE
+ // and always uses the full --target (e.g. --target=aarch64-linux-gnu). The
+ // lists should shrink over time. Please don't add more elements to *Triples.
+ static const char *const AArch64LibDirs[] = {"/lib64", "/lib"};
+ static const char *const AArch64Triples[] = {
+ "aarch64-none-linux-gnu", "aarch64-linux-gnu", "aarch64-redhat-linux",
+ "aarch64-radix-linux-gnu", "aarch64-a311x-linux-gnu", "aarch64-h5-linux-gnu",
+ "aarch64-m1000-linux-gnu", "aarch64-rk339x-linux-gnu", "aarch64-rk358x-linux-gnu",
+ "aarch64-rk33xx-linux-gnu", "aarch64-s9xx-linux-gnu", "aarch64-suse-linux"};
+ static const char *const AArch64beLibDirs[] = {"/lib"};
+ static const char *const AArch64beTriples[] = {"aarch64_be-none-linux-gnu",
+ "aarch64_be-linux-gnu"};
+
+ static const char *const ARMLibDirs[] = {"/lib"};
+ static const char *const ARMTriples[] = {"arm-linux-gnueabi"};
+ static const char *const ARMHFTriples[] = {"arm-linux-gnueabihf",
+ "arm-a1x-linux-gnueabihf",
+ "arm-a2x-linux-gnueabihf",
+ "arm-am335x-linux-gnueabihf",
+ "arm-h3-linux-gnueabihf",
+ "arm-imx6-linux-gnueabihf",
+ "arm-imx6ull-linux-gnueabihf",
+ "arm-omap543x-linux-gnueabihf",
+ "arm-rk328x-linux-gnueabihf",
+ "arm-s8xx-linux-gnueabihf",
+ "arm-radix-linux-gnueabihf",
+ "armv7hl-redhat-linux-gnueabi",
+ "armv6hl-suse-linux-gnueabi",
+ "armv7hl-suse-linux-gnueabi"};
+ static const char *const ARMebLibDirs[] = {"/lib"};
+ static const char *const ARMebTriples[] = {"armeb-linux-gnueabi"};
+ static const char *const ARMebHFTriples[] = {
+ "armeb-linux-gnueabihf", "armebv7hl-redhat-linux-gnueabi"};
+
+ static const char *const AVRLibDirs[] = {"/lib"};
+ static const char *const AVRTriples[] = {"avr"};
+
+ static const char *const CSKYLibDirs[] = {"/lib"};
+ static const char *const CSKYTriples[] = {
+ "csky-linux-gnuabiv2", "csky-linux-uclibcabiv2", "csky-elf-noneabiv2"};
+
+ static const char *const X86_64LibDirs[] = {"/lib64", "/lib"};
+ static const char *const X86_64Triples[] = {
+ "x86_64-linux-gnu", "x86_64-unknown-linux-gnu",
+ "x86_64-pc-linux-gnu", "x86_64-redhat-linux6E",
+ "x86_64-redhat-linux", "x86_64-suse-linux",
+ "x86_64-manbo-linux-gnu", "x86_64-linux-gnu",
+ "x86_64-slackware-linux", "x86_64-radix-linux-gnu", "x86_64-unknown-linux",
+ "x86_64-amazon-linux"};
+ static const char *const X32Triples[] = {"x86_64-linux-gnux32",
+ "x86_64-pc-linux-gnux32"};
+ static const char *const X32LibDirs[] = {"/libx32", "/lib"};
+ static const char *const X86LibDirs[] = {"/lib32", "/lib"};
+ static const char *const X86Triples[] = {
+ "i586-linux-gnu", "i686-linux-gnu", "i686-pc-linux-gnu",
+ "i386-redhat-linux6E", "i686-redhat-linux", "i386-redhat-linux",
+ "i486-slackware-linux", "i586-slackware-linux", "i686-slackware-linux",
+ "i386-radix-linux-gnu", "i586-radix-linux-gnu", "i686-radix-linux-gnu",
+ "i586-suse-linux", "i686-montavista-linux", "i686-gnu"};
+
+ static const char *const LoongArch64LibDirs[] = {"/lib64", "/lib"};
+ static const char *const LoongArch64Triples[] = {
+ "loongarch64-linux-gnu", "loongarch64-unknown-linux-gnu"};
+
+ static const char *const M68kLibDirs[] = {"/lib"};
+ static const char *const M68kTriples[] = {
+ "m68k-linux-gnu", "m68k-unknown-linux-gnu", "m68k-suse-linux"};
+
+ static const char *const MIPSLibDirs[] = {"/libo32", "/lib"};
+ static const char *const MIPSTriples[] = {
+ "mips-linux-gnu", "mips-mti-linux", "mips-mti-linux-gnu",
+ "mips-img-linux-gnu", "mipsisa32r6-linux-gnu"};
+ static const char *const MIPSELLibDirs[] = {"/libo32", "/lib"};
+ static const char *const MIPSELTriples[] = {
+ "mipsel-linux-gnu", "mips-img-linux-gnu", "mipsisa32r6el-linux-gnu",
+ "mipsel-p5600-linux-gnu", "mipsel-jz47xx-linux-gnu", "mipsel-radix-linux-gnu"};
+
+ static const char *const MIPS64LibDirs[] = {"/lib64", "/lib"};
+ static const char *const MIPS64Triples[] = {
+ "mips64-linux-gnu", "mips-mti-linux-gnu",
+ "mips-img-linux-gnu", "mips64-linux-gnuabi64",
+ "mipsisa64r6-linux-gnu", "mipsisa64r6-linux-gnuabi64"};
+ static const char *const MIPS64ELLibDirs[] = {"/lib64", "/lib"};
+ static const char *const MIPS64ELTriples[] = {
+ "mips64el-linux-gnu", "mips-mti-linux-gnu",
+ "mips-img-linux-gnu", "mips64el-linux-gnuabi64",
+ "mipsisa64r6el-linux-gnu", "mipsisa64r6el-linux-gnuabi64"};
+
+ static const char *const MIPSN32LibDirs[] = {"/lib32"};
+ static const char *const MIPSN32Triples[] = {"mips64-linux-gnuabin32",
+ "mipsisa64r6-linux-gnuabin32"};
+ static const char *const MIPSN32ELLibDirs[] = {"/lib32"};
+ static const char *const MIPSN32ELTriples[] = {
+ "mips64el-linux-gnuabin32", "mipsisa64r6el-linux-gnuabin32"};
+
+ static const char *const MSP430LibDirs[] = {"/lib"};
+ static const char *const MSP430Triples[] = {"msp430-elf"};
+
+ static const char *const PPCLibDirs[] = {"/lib32", "/lib"};
+ static const char *const PPCTriples[] = {
+ "powerpc-linux-gnu", "powerpc-unknown-linux-gnu", "powerpc-linux-gnuspe",
+ "powerpc-power8-linux-gnu", "ppc-power8-linux-gnu",
+ "powerpc-power9-linux-gnu", "ppc-power9-linux-gnu",
+ "powerpc-radix-linux-gnu", "ppc-radix-linux-gnu",
+ // On 32-bit PowerPC systems running SUSE Linux, gcc is configured as a
+ // 64-bit compiler which defaults to "-m32", hence "powerpc64-suse-linux".
+ "powerpc64-suse-linux", "powerpc-montavista-linuxspe"};
+ static const char *const PPCLELibDirs[] = {"/lib32", "/lib"};
+ static const char *const PPCLETriples[] = {"powerpcle-linux-gnu",
+ "powerpcle-unknown-linux-gnu",
+ "powerpcle-linux-musl"};
+
+ static const char *const PPC64LibDirs[] = {"/lib64", "/lib"};
+ static const char *const PPC64Triples[] = {
+ "powerpc64-linux-gnu", "powerpc64-unknown-linux-gnu",
+ "powerpc64-power8-linux-gnu", "ppc64-power8-linux-gnu",
+ "powerpc64-power9-linux-gnu", "ppc64-power9-linux-gnu",
+ "powerpc64-radix-linux-gnu", "ppc64-radix-linux-gnu",
+ "powerpc64-suse-linux", "ppc64-redhat-linux"};
+ static const char *const PPC64LELibDirs[] = {"/lib64", "/lib"};
+ static const char *const PPC64LETriples[] = {
+ "powerpc64le-linux-gnu", "powerpc64le-unknown-linux-gnu",
+ "powerpc64le-none-linux-gnu", "powerpc64le-suse-linux",
+ "powerpc64le-power8-linux-gnu", "ppc64le-power8-linux-gnu",
+ "powerpc64le-power9-linux-gnu", "ppc64le-power9-linux-gnu",
+ "powerpc64le-radix-linux-gnu", "ppc64le-radix-linux-gnu",
+ "ppc64le-redhat-linux"};
+
+ static const char *const RISCV32LibDirs[] = {"/lib32", "/lib"};
+ static const char *const RISCV32Triples[] = {"riscv32-unknown-linux-gnu",
+ "riscv32-linux-gnu",
+ "riscv32-unknown-elf"};
+ static const char *const RISCV64LibDirs[] = {"/lib64", "/lib"};
+ static const char *const RISCV64Triples[] = {"riscv64-unknown-linux-gnu",
+ "riscv64-linux-gnu",
+ "riscv64-rv64gc-linux-gnu",
+ "riscv64-radix-linux-gnu",
+ "riscv64-unknown-elf"};
+
+ static const char *const SPARCv8LibDirs[] = {"/lib32", "/lib"};
+ static const char *const SPARCv8Triples[] = {"sparc-linux-gnu",
+ "sparcv8-linux-gnu"};
+ static const char *const SPARCv9LibDirs[] = {"/lib64", "/lib"};
+ static const char *const SPARCv9Triples[] = {"sparc64-linux-gnu",
+ "sparcv9-linux-gnu"};
+
+ static const char *const SystemZLibDirs[] = {"/lib64", "/lib"};
+ static const char *const SystemZTriples[] = {
+ "s390x-linux-gnu", "s390x-unknown-linux-gnu", "s390x-ibm-linux-gnu",
+ "s390x-suse-linux", "s390x-redhat-linux"};
+
+
+ using std::begin;
+ using std::end;
+
+ if (TargetTriple.getOS() == llvm::Triple::Solaris) {
+ static const char *const SolarisLibDirs[] = {"/lib"};
+ static const char *const SolarisSparcV8Triples[] = {
+ "sparc-sun-solaris2.11", "sparc-sun-solaris2.12"};
+ static const char *const SolarisSparcV9Triples[] = {
+ "sparcv9-sun-solaris2.11", "sparcv9-sun-solaris2.12"};
+ static const char *const SolarisX86Triples[] = {"i386-pc-solaris2.11",
+ "i386-pc-solaris2.12"};
+ static const char *const SolarisX86_64Triples[] = {"x86_64-pc-solaris2.11",
+ "x86_64-pc-solaris2.12"};
+ LibDirs.append(begin(SolarisLibDirs), end(SolarisLibDirs));
+ BiarchLibDirs.append(begin(SolarisLibDirs), end(SolarisLibDirs));
+ switch (TargetTriple.getArch()) {
+ case llvm::Triple::x86:
+ TripleAliases.append(begin(SolarisX86Triples), end(SolarisX86Triples));
+ BiarchTripleAliases.append(begin(SolarisX86_64Triples),
+ end(SolarisX86_64Triples));
+ break;
+ case llvm::Triple::x86_64:
+ TripleAliases.append(begin(SolarisX86_64Triples),
+ end(SolarisX86_64Triples));
+ BiarchTripleAliases.append(begin(SolarisX86Triples),
+ end(SolarisX86Triples));
+ break;
+ case llvm::Triple::sparc:
+ TripleAliases.append(begin(SolarisSparcV8Triples),
+ end(SolarisSparcV8Triples));
+ BiarchTripleAliases.append(begin(SolarisSparcV9Triples),
+ end(SolarisSparcV9Triples));
+ break;
+ case llvm::Triple::sparcv9:
+ TripleAliases.append(begin(SolarisSparcV9Triples),
+ end(SolarisSparcV9Triples));
+ BiarchTripleAliases.append(begin(SolarisSparcV8Triples),
+ end(SolarisSparcV8Triples));
+ break;
+ default:
+ break;
+ }
+ return;
+ }
+
+ // Android targets should not use GNU/Linux tools or libraries.
+ if (TargetTriple.isAndroid()) {
+ static const char *const AArch64AndroidTriples[] = {
+ "aarch64-linux-android"};
+ static const char *const ARMAndroidTriples[] = {"arm-linux-androideabi"};
+ static const char *const MIPSELAndroidTriples[] = {"mipsel-linux-android"};
+ static const char *const MIPS64ELAndroidTriples[] = {
+ "mips64el-linux-android"};
+ static const char *const X86AndroidTriples[] = {"i686-linux-android"};
+ static const char *const X86_64AndroidTriples[] = {"x86_64-linux-android"};
+
+ switch (TargetTriple.getArch()) {
+ case llvm::Triple::aarch64:
+ LibDirs.append(begin(AArch64LibDirs), end(AArch64LibDirs));
+ TripleAliases.append(begin(AArch64AndroidTriples),
+ end(AArch64AndroidTriples));
+ break;
+ case llvm::Triple::arm:
+ case llvm::Triple::thumb:
+ LibDirs.append(begin(ARMLibDirs), end(ARMLibDirs));
+ TripleAliases.append(begin(ARMAndroidTriples), end(ARMAndroidTriples));
+ break;
+ case llvm::Triple::mipsel:
+ LibDirs.append(begin(MIPSELLibDirs), end(MIPSELLibDirs));
+ TripleAliases.append(begin(MIPSELAndroidTriples),
+ end(MIPSELAndroidTriples));
+ BiarchLibDirs.append(begin(MIPS64ELLibDirs), end(MIPS64ELLibDirs));
+ BiarchTripleAliases.append(begin(MIPS64ELAndroidTriples),
+ end(MIPS64ELAndroidTriples));
+ break;
+ case llvm::Triple::mips64el:
+ LibDirs.append(begin(MIPS64ELLibDirs), end(MIPS64ELLibDirs));
+ TripleAliases.append(begin(MIPS64ELAndroidTriples),
+ end(MIPS64ELAndroidTriples));
+ BiarchLibDirs.append(begin(MIPSELLibDirs), end(MIPSELLibDirs));
+ BiarchTripleAliases.append(begin(MIPSELAndroidTriples),
+ end(MIPSELAndroidTriples));
+ break;
+ case llvm::Triple::x86_64:
+ LibDirs.append(begin(X86_64LibDirs), end(X86_64LibDirs));
+ TripleAliases.append(begin(X86_64AndroidTriples),
+ end(X86_64AndroidTriples));
+ BiarchLibDirs.append(begin(X86LibDirs), end(X86LibDirs));
+ BiarchTripleAliases.append(begin(X86AndroidTriples),
+ end(X86AndroidTriples));
+ break;
+ case llvm::Triple::x86:
+ LibDirs.append(begin(X86LibDirs), end(X86LibDirs));
+ TripleAliases.append(begin(X86AndroidTriples), end(X86AndroidTriples));
+ BiarchLibDirs.append(begin(X86_64LibDirs), end(X86_64LibDirs));
+ BiarchTripleAliases.append(begin(X86_64AndroidTriples),
+ end(X86_64AndroidTriples));
+ break;
+ default:
+ break;
+ }
+
+ return;
+ }
+
+ switch (TargetTriple.getArch()) {
+ case llvm::Triple::aarch64:
+ LibDirs.append(begin(AArch64LibDirs), end(AArch64LibDirs));
+ TripleAliases.append(begin(AArch64Triples), end(AArch64Triples));
+ BiarchLibDirs.append(begin(AArch64LibDirs), end(AArch64LibDirs));
+ BiarchTripleAliases.append(begin(AArch64Triples), end(AArch64Triples));
+ break;
+ case llvm::Triple::aarch64_be:
+ LibDirs.append(begin(AArch64beLibDirs), end(AArch64beLibDirs));
+ TripleAliases.append(begin(AArch64beTriples), end(AArch64beTriples));
+ BiarchLibDirs.append(begin(AArch64beLibDirs), end(AArch64beLibDirs));
+ BiarchTripleAliases.append(begin(AArch64beTriples), end(AArch64beTriples));
+ break;
+ case llvm::Triple::arm:
+ case llvm::Triple::thumb:
+ LibDirs.append(begin(ARMLibDirs), end(ARMLibDirs));
+ if (TargetTriple.getEnvironment() == llvm::Triple::GNUEABIHF) {
+ TripleAliases.append(begin(ARMHFTriples), end(ARMHFTriples));
+ } else {
+ TripleAliases.append(begin(ARMTriples), end(ARMTriples));
+ }
+ break;
+ case llvm::Triple::armeb:
+ case llvm::Triple::thumbeb:
+ LibDirs.append(begin(ARMebLibDirs), end(ARMebLibDirs));
+ if (TargetTriple.getEnvironment() == llvm::Triple::GNUEABIHF) {
+ TripleAliases.append(begin(ARMebHFTriples), end(ARMebHFTriples));
+ } else {
+ TripleAliases.append(begin(ARMebTriples), end(ARMebTriples));
+ }
+ break;
+ case llvm::Triple::avr:
+ LibDirs.append(begin(AVRLibDirs), end(AVRLibDirs));
+ TripleAliases.append(begin(AVRTriples), end(AVRTriples));
+ break;
+ case llvm::Triple::csky:
+ LibDirs.append(begin(CSKYLibDirs), end(CSKYLibDirs));
+ TripleAliases.append(begin(CSKYTriples), end(CSKYTriples));
+ break;
+ case llvm::Triple::x86_64:
+ if (TargetTriple.isX32()) {
+ LibDirs.append(begin(X32LibDirs), end(X32LibDirs));
+ TripleAliases.append(begin(X32Triples), end(X32Triples));
+ BiarchLibDirs.append(begin(X86_64LibDirs), end(X86_64LibDirs));
+ BiarchTripleAliases.append(begin(X86_64Triples), end(X86_64Triples));
+ } else {
+ LibDirs.append(begin(X86_64LibDirs), end(X86_64LibDirs));
+ TripleAliases.append(begin(X86_64Triples), end(X86_64Triples));
+ BiarchLibDirs.append(begin(X32LibDirs), end(X32LibDirs));
+ BiarchTripleAliases.append(begin(X32Triples), end(X32Triples));
+ }
+ BiarchLibDirs.append(begin(X86LibDirs), end(X86LibDirs));
+ BiarchTripleAliases.append(begin(X86Triples), end(X86Triples));
+ break;
+ case llvm::Triple::x86:
+ LibDirs.append(begin(X86LibDirs), end(X86LibDirs));
+ // MCU toolchain is 32 bit only and its triple alias is TargetTriple
+ // itself, which will be appended below.
+ if (!TargetTriple.isOSIAMCU()) {
+ TripleAliases.append(begin(X86Triples), end(X86Triples));
+ BiarchLibDirs.append(begin(X86_64LibDirs), end(X86_64LibDirs));
+ BiarchTripleAliases.append(begin(X86_64Triples), end(X86_64Triples));
+ BiarchLibDirs.append(begin(X32LibDirs), end(X32LibDirs));
+ BiarchTripleAliases.append(begin(X32Triples), end(X32Triples));
+ }
+ break;
+ // TODO: Handle loongarch32.
+ case llvm::Triple::loongarch64:
+ LibDirs.append(begin(LoongArch64LibDirs), end(LoongArch64LibDirs));
+ TripleAliases.append(begin(LoongArch64Triples), end(LoongArch64Triples));
+ break;
+ case llvm::Triple::m68k:
+ LibDirs.append(begin(M68kLibDirs), end(M68kLibDirs));
+ TripleAliases.append(begin(M68kTriples), end(M68kTriples));
+ break;
+ case llvm::Triple::mips:
+ LibDirs.append(begin(MIPSLibDirs), end(MIPSLibDirs));
+ TripleAliases.append(begin(MIPSTriples), end(MIPSTriples));
+ BiarchLibDirs.append(begin(MIPS64LibDirs), end(MIPS64LibDirs));
+ BiarchTripleAliases.append(begin(MIPS64Triples), end(MIPS64Triples));
+ BiarchLibDirs.append(begin(MIPSN32LibDirs), end(MIPSN32LibDirs));
+ BiarchTripleAliases.append(begin(MIPSN32Triples), end(MIPSN32Triples));
+ break;
+ case llvm::Triple::mipsel:
+ LibDirs.append(begin(MIPSELLibDirs), end(MIPSELLibDirs));
+ TripleAliases.append(begin(MIPSELTriples), end(MIPSELTriples));
+ TripleAliases.append(begin(MIPSTriples), end(MIPSTriples));
+ BiarchLibDirs.append(begin(MIPS64ELLibDirs), end(MIPS64ELLibDirs));
+ BiarchTripleAliases.append(begin(MIPS64ELTriples), end(MIPS64ELTriples));
+ BiarchLibDirs.append(begin(MIPSN32ELLibDirs), end(MIPSN32ELLibDirs));
+ BiarchTripleAliases.append(begin(MIPSN32ELTriples), end(MIPSN32ELTriples));
+ break;
+ case llvm::Triple::mips64:
+ LibDirs.append(begin(MIPS64LibDirs), end(MIPS64LibDirs));
+ TripleAliases.append(begin(MIPS64Triples), end(MIPS64Triples));
+ BiarchLibDirs.append(begin(MIPSLibDirs), end(MIPSLibDirs));
+ BiarchTripleAliases.append(begin(MIPSTriples), end(MIPSTriples));
+ BiarchLibDirs.append(begin(MIPSN32LibDirs), end(MIPSN32LibDirs));
+ BiarchTripleAliases.append(begin(MIPSN32Triples), end(MIPSN32Triples));
+ break;
+ case llvm::Triple::mips64el:
+ LibDirs.append(begin(MIPS64ELLibDirs), end(MIPS64ELLibDirs));
+ TripleAliases.append(begin(MIPS64ELTriples), end(MIPS64ELTriples));
+ BiarchLibDirs.append(begin(MIPSELLibDirs), end(MIPSELLibDirs));
+ BiarchTripleAliases.append(begin(MIPSELTriples), end(MIPSELTriples));
+ BiarchLibDirs.append(begin(MIPSN32ELLibDirs), end(MIPSN32ELLibDirs));
+ BiarchTripleAliases.append(begin(MIPSN32ELTriples), end(MIPSN32ELTriples));
+ BiarchTripleAliases.append(begin(MIPSTriples), end(MIPSTriples));
+ break;
+ case llvm::Triple::msp430:
+ LibDirs.append(begin(MSP430LibDirs), end(MSP430LibDirs));
+ TripleAliases.append(begin(MSP430Triples), end(MSP430Triples));
+ break;
+ case llvm::Triple::ppc:
+ LibDirs.append(begin(PPCLibDirs), end(PPCLibDirs));
+ TripleAliases.append(begin(PPCTriples), end(PPCTriples));
+ BiarchLibDirs.append(begin(PPC64LibDirs), end(PPC64LibDirs));
+ BiarchTripleAliases.append(begin(PPC64Triples), end(PPC64Triples));
+ break;
+ case llvm::Triple::ppcle:
+ LibDirs.append(begin(PPCLELibDirs), end(PPCLELibDirs));
+ TripleAliases.append(begin(PPCLETriples), end(PPCLETriples));
+ BiarchLibDirs.append(begin(PPC64LELibDirs), end(PPC64LELibDirs));
+ BiarchTripleAliases.append(begin(PPC64LETriples), end(PPC64LETriples));
+ break;
+ case llvm::Triple::ppc64:
+ LibDirs.append(begin(PPC64LibDirs), end(PPC64LibDirs));
+ TripleAliases.append(begin(PPC64Triples), end(PPC64Triples));
+ BiarchLibDirs.append(begin(PPCLibDirs), end(PPCLibDirs));
+ BiarchTripleAliases.append(begin(PPCTriples), end(PPCTriples));
+ break;
+ case llvm::Triple::ppc64le:
+ LibDirs.append(begin(PPC64LELibDirs), end(PPC64LELibDirs));
+ TripleAliases.append(begin(PPC64LETriples), end(PPC64LETriples));
+ BiarchLibDirs.append(begin(PPCLELibDirs), end(PPCLELibDirs));
+ BiarchTripleAliases.append(begin(PPCLETriples), end(PPCLETriples));
+ break;
+ case llvm::Triple::riscv32:
+ LibDirs.append(begin(RISCV32LibDirs), end(RISCV32LibDirs));
+ TripleAliases.append(begin(RISCV32Triples), end(RISCV32Triples));
+ BiarchLibDirs.append(begin(RISCV64LibDirs), end(RISCV64LibDirs));
+ BiarchTripleAliases.append(begin(RISCV64Triples), end(RISCV64Triples));
+ break;
+ case llvm::Triple::riscv64:
+ LibDirs.append(begin(RISCV64LibDirs), end(RISCV64LibDirs));
+ TripleAliases.append(begin(RISCV64Triples), end(RISCV64Triples));
+ BiarchLibDirs.append(begin(RISCV32LibDirs), end(RISCV32LibDirs));
+ BiarchTripleAliases.append(begin(RISCV32Triples), end(RISCV32Triples));
+ break;
+ case llvm::Triple::sparc:
+ case llvm::Triple::sparcel:
+ LibDirs.append(begin(SPARCv8LibDirs), end(SPARCv8LibDirs));
+ TripleAliases.append(begin(SPARCv8Triples), end(SPARCv8Triples));
+ BiarchLibDirs.append(begin(SPARCv9LibDirs), end(SPARCv9LibDirs));
+ BiarchTripleAliases.append(begin(SPARCv9Triples), end(SPARCv9Triples));
+ break;
+ case llvm::Triple::sparcv9:
+ LibDirs.append(begin(SPARCv9LibDirs), end(SPARCv9LibDirs));
+ TripleAliases.append(begin(SPARCv9Triples), end(SPARCv9Triples));
+ BiarchLibDirs.append(begin(SPARCv8LibDirs), end(SPARCv8LibDirs));
+ BiarchTripleAliases.append(begin(SPARCv8Triples), end(SPARCv8Triples));
+ break;
+ case llvm::Triple::systemz:
+ LibDirs.append(begin(SystemZLibDirs), end(SystemZLibDirs));
+ TripleAliases.append(begin(SystemZTriples), end(SystemZTriples));
+ break;
+ default:
+ // By default, just rely on the standard lib directories and the original
+ // triple.
+ break;
+ }
+
+ // Always append the drivers target triple to the end, in case it doesn't
+ // match any of our aliases.
+ TripleAliases.push_back(TargetTriple.str());
+
+ // Also include the multiarch variant if it's different.
+ if (TargetTriple.str() != BiarchTriple.str())
+ BiarchTripleAliases.push_back(BiarchTriple.str());
+}
+
+bool Generic_GCC::GCCInstallationDetector::ScanGCCForMultilibs(
+ const llvm::Triple &TargetTriple, const ArgList &Args,
+ StringRef Path, bool NeedsBiarchSuffix) {
+ llvm::Triple::ArchType TargetArch = TargetTriple.getArch();
+ DetectedMultilibs Detected;
+
+ // Android standalone toolchain could have multilibs for ARM and Thumb.
+ // Debian mips multilibs behave more like the rest of the biarch ones,
+ // so handle them there
+ if (isArmOrThumbArch(TargetArch) && TargetTriple.isAndroid()) {
+ // It should also work without multilibs in a simplified toolchain.
+ findAndroidArmMultilibs(D, TargetTriple, Path, Args, Detected);
+ } else if (TargetTriple.isCSKY()) {
+ findCSKYMultilibs(D, TargetTriple, Path, Args, Detected);
+ } else if (TargetTriple.isMIPS()) {
+ if (!findMIPSMultilibs(D, TargetTriple, Path, Args, Detected))
+ return false;
+ } else if (TargetTriple.isRISCV()) {
+ findRISCVMultilibs(D, TargetTriple, Path, Args, Detected);
+ } else if (isMSP430(TargetArch)) {
+ findMSP430Multilibs(D, TargetTriple, Path, Args, Detected);
+ } else if (TargetArch == llvm::Triple::avr) {
+ // AVR has no multilibs.
+ } else if (!findBiarchMultilibs(D, TargetTriple, Path, Args,
+ NeedsBiarchSuffix, Detected)) {
+ return false;
+ }
+
+ Multilibs = Detected.Multilibs;
+ SelectedMultilib = Detected.SelectedMultilib;
+ BiarchSibling = Detected.BiarchSibling;
+
+ return true;
+}
+
+void Generic_GCC::GCCInstallationDetector::ScanLibDirForGCCTriple(
+ const llvm::Triple &TargetTriple, const ArgList &Args,
+ const std::string &LibDir, StringRef CandidateTriple,
+ bool NeedsBiarchSuffix, bool GCCDirExists, bool GCCCrossDirExists) {
+ // Locations relative to the system lib directory where GCC's triple-specific
+ // directories might reside.
+ struct GCCLibSuffix {
+ // Path from system lib directory to GCC triple-specific directory.
+ std::string LibSuffix;
+ // Path from GCC triple-specific directory back to system lib directory.
+ // This is one '..' component per component in LibSuffix.
+ StringRef ReversePath;
+ // Whether this library suffix is relevant for the triple.
+ bool Active;
+ } Suffixes[] = {
+ // This is the normal place.
+ {"gcc/" + CandidateTriple.str(), "../..", GCCDirExists},
+
+ // Debian puts cross-compilers in gcc-cross.
+ {"gcc-cross/" + CandidateTriple.str(), "../..", GCCCrossDirExists},
+
+ // The Freescale PPC SDK has the gcc libraries in
+ // <sysroot>/usr/lib/<triple>/x.y.z so have a look there as well. Only do
+ // this on Freescale triples, though, since some systems put a *lot* of
+ // files in that location, not just GCC installation data.
+ {CandidateTriple.str(), "..",
+ TargetTriple.getVendor() == llvm::Triple::Freescale ||
+ TargetTriple.getVendor() == llvm::Triple::OpenEmbedded}};
+
+ for (auto &Suffix : Suffixes) {
+ if (!Suffix.Active)
+ continue;
+
+ StringRef LibSuffix = Suffix.LibSuffix;
+ std::error_code EC;
+ for (llvm::vfs::directory_iterator
+ LI = D.getVFS().dir_begin(LibDir + "/" + LibSuffix, EC),
+ LE;
+ !EC && LI != LE; LI = LI.increment(EC)) {
+ StringRef VersionText = llvm::sys::path::filename(LI->path());
+ GCCVersion CandidateVersion = GCCVersion::Parse(VersionText);
+ if (CandidateVersion.Major != -1) // Filter obviously bad entries.
+ if (!CandidateGCCInstallPaths.insert(std::string(LI->path())).second)
+ continue; // Saw this path before; no need to look at it again.
+ if (CandidateVersion.isOlderThan(4, 1, 1))
+ continue;
+ if (CandidateVersion <= Version)
+ continue;
+
+ if (!ScanGCCForMultilibs(TargetTriple, Args, LI->path(),
+ NeedsBiarchSuffix))
+ continue;
+
+ Version = CandidateVersion;
+ GCCTriple.setTriple(CandidateTriple);
+ // FIXME: We hack together the directory name here instead of
+ // using LI to ensure stable path separators across Windows and
+ // Linux.
+ GCCInstallPath = (LibDir + "/" + LibSuffix + "/" + VersionText).str();
+ GCCParentLibPath = (GCCInstallPath + "/../" + Suffix.ReversePath).str();
+ IsValid = true;
+ }
+ }
+}
+
+bool Generic_GCC::GCCInstallationDetector::ScanGentooConfigs(
+ const llvm::Triple &TargetTriple, const ArgList &Args,
+ const SmallVectorImpl<StringRef> &CandidateTriples,
+ const SmallVectorImpl<StringRef> &CandidateBiarchTriples) {
+ if (!D.getVFS().exists(concat(D.SysRoot, GentooConfigDir)))
+ return false;
+
+ for (StringRef CandidateTriple : CandidateTriples) {
+ if (ScanGentooGccConfig(TargetTriple, Args, CandidateTriple))
+ return true;
+ }
+
+ for (StringRef CandidateTriple : CandidateBiarchTriples) {
+ if (ScanGentooGccConfig(TargetTriple, Args, CandidateTriple, true))
+ return true;
+ }
+ return false;
+}
+
+bool Generic_GCC::GCCInstallationDetector::ScanGentooGccConfig(
+ const llvm::Triple &TargetTriple, const ArgList &Args,
+ StringRef CandidateTriple, bool NeedsBiarchSuffix) {
+ llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>> File =
+ D.getVFS().getBufferForFile(concat(D.SysRoot, GentooConfigDir,
+ "/config-" + CandidateTriple.str()));
+ if (File) {
+ SmallVector<StringRef, 2> Lines;
+ File.get()->getBuffer().split(Lines, "\n");
+ for (StringRef Line : Lines) {
+ Line = Line.trim();
+ // CURRENT=triple-version
+ if (!Line.consume_front("CURRENT="))
+ continue;
+ // Process the config file pointed to by CURRENT.
+ llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>> ConfigFile =
+ D.getVFS().getBufferForFile(
+ concat(D.SysRoot, GentooConfigDir, "/" + Line));
+ std::pair<StringRef, StringRef> ActiveVersion = Line.rsplit('-');
+ // List of paths to scan for libraries.
+ SmallVector<StringRef, 4> GentooScanPaths;
+ // Scan the Config file to find installed GCC libraries path.
+ // Typical content of the GCC config file:
+ // LDPATH="/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.x:/usr/lib/gcc/
+ // (continued from previous line) x86_64-pc-linux-gnu/4.9.x/32"
+ // MANPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/4.9.x/man"
+ // INFOPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/4.9.x/info"
+ // STDCXX_INCDIR="/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.x/include/g++-v4"
+ // We are looking for the paths listed in LDPATH=... .
+ if (ConfigFile) {
+ SmallVector<StringRef, 2> ConfigLines;
+ ConfigFile.get()->getBuffer().split(ConfigLines, "\n");
+ for (StringRef ConfLine : ConfigLines) {
+ ConfLine = ConfLine.trim();
+ if (ConfLine.consume_front("LDPATH=")) {
+ // Drop '"' from front and back if present.
+ ConfLine.consume_back("\"");
+ ConfLine.consume_front("\"");
+ // Get all paths sperated by ':'
+ ConfLine.split(GentooScanPaths, ':', -1, /*AllowEmpty*/ false);
+ }
+ }
+ }
+ // Test the path based on the version in /etc/env.d/gcc/config-{tuple}.
+ std::string basePath = "/usr/lib/gcc/" + ActiveVersion.first.str() + "/"
+ + ActiveVersion.second.str();
+ GentooScanPaths.push_back(StringRef(basePath));
+
+ // Scan all paths for GCC libraries.
+ for (const auto &GentooScanPath : GentooScanPaths) {
+ std::string GentooPath = concat(D.SysRoot, GentooScanPath);
+ if (D.getVFS().exists(GentooPath + "/crtbegin.o")) {
+ if (!ScanGCCForMultilibs(TargetTriple, Args, GentooPath,
+ NeedsBiarchSuffix))
+ continue;
+
+ Version = GCCVersion::Parse(ActiveVersion.second);
+ GCCInstallPath = GentooPath;
+ GCCParentLibPath = GentooPath + std::string("/../../..");
+ GCCTriple.setTriple(ActiveVersion.first);
+ IsValid = true;
+ return true;
+ }
+ }
+ }
+ }
+
+ return false;
+}
+
+Generic_GCC::Generic_GCC(const Driver &D, const llvm::Triple &Triple,
+ const ArgList &Args)
+ : ToolChain(D, Triple, Args), GCCInstallation(D),
+ CudaInstallation(D, Triple, Args), RocmInstallation(D, Triple, Args) {
+ getProgramPaths().push_back(getDriver().getInstalledDir());
+ if (getDriver().getInstalledDir() != getDriver().Dir)
+ getProgramPaths().push_back(getDriver().Dir);
+}
+
+Generic_GCC::~Generic_GCC() {}
+
+Tool *Generic_GCC::getTool(Action::ActionClass AC) const {
+ switch (AC) {
+ case Action::PreprocessJobClass:
+ if (!Preprocess)
+ Preprocess.reset(new clang::driver::tools::gcc::Preprocessor(*this));
+ return Preprocess.get();
+ case Action::CompileJobClass:
+ if (!Compile)
+ Compile.reset(new tools::gcc::Compiler(*this));
+ return Compile.get();
+ default:
+ return ToolChain::getTool(AC);
+ }
+}
+
+Tool *Generic_GCC::buildAssembler() const {
+ return new tools::gnutools::Assembler(*this);
+}
+
+Tool *Generic_GCC::buildLinker() const { return new tools::gcc::Linker(*this); }
+
+void Generic_GCC::printVerboseInfo(raw_ostream &OS) const {
+ // Print the information about how we detected the GCC installation.
+ GCCInstallation.print(OS);
+ CudaInstallation.print(OS);
+ RocmInstallation.print(OS);
+}
+
+ToolChain::UnwindTableLevel
+Generic_GCC::getDefaultUnwindTableLevel(const ArgList &Args) const {
+ switch (getArch()) {
+ case llvm::Triple::aarch64:
+ case llvm::Triple::ppc:
+ case llvm::Triple::ppcle:
+ case llvm::Triple::ppc64:
+ case llvm::Triple::ppc64le:
+ case llvm::Triple::x86:
+ case llvm::Triple::x86_64:
+ return UnwindTableLevel::Asynchronous;
+ default:
+ return UnwindTableLevel::None;
+ }
+}
+
+bool Generic_GCC::isPICDefault() const {
+ switch (getArch()) {
+ case llvm::Triple::x86_64:
+ return getTriple().isOSWindows();
+ case llvm::Triple::mips64:
+ case llvm::Triple::mips64el:
+ return true;
+ default:
+ return false;
+ }
+}
+
+bool Generic_GCC::isPIEDefault(const llvm::opt::ArgList &Args) const {
+ return false;
+}
+
+bool Generic_GCC::isPICDefaultForced() const {
+ return getArch() == llvm::Triple::x86_64 && getTriple().isOSWindows();
+}
+
+bool Generic_GCC::IsIntegratedAssemblerDefault() const {
+ switch (getTriple().getArch()) {
+ case llvm::Triple::aarch64:
+ case llvm::Triple::aarch64_be:
+ case llvm::Triple::amdgcn:
+ case llvm::Triple::arm:
+ case llvm::Triple::armeb:
+ case llvm::Triple::avr:
+ case llvm::Triple::bpfel:
+ case llvm::Triple::bpfeb:
+ case llvm::Triple::csky:
+ case llvm::Triple::hexagon:
+ case llvm::Triple::lanai:
+ case llvm::Triple::loongarch32:
+ case llvm::Triple::loongarch64:
+ case llvm::Triple::m68k:
+ case llvm::Triple::mips:
+ case llvm::Triple::mipsel:
+ case llvm::Triple::mips64:
+ case llvm::Triple::mips64el:
+ case llvm::Triple::msp430:
+ case llvm::Triple::ppc:
+ case llvm::Triple::ppcle:
+ case llvm::Triple::ppc64:
+ case llvm::Triple::ppc64le:
+ case llvm::Triple::r600:
+ case llvm::Triple::riscv32:
+ case llvm::Triple::riscv64:
+ case llvm::Triple::sparc:
+ case llvm::Triple::sparcel:
+ case llvm::Triple::sparcv9:
+ case llvm::Triple::systemz:
+ case llvm::Triple::thumb:
+ case llvm::Triple::thumbeb:
+ case llvm::Triple::ve:
+ case llvm::Triple::x86:
+ case llvm::Triple::x86_64:
+ return true;
+ default:
+ return false;
+ }
+}
+
+void Generic_GCC::PushPPaths(ToolChain::path_list &PPaths) {
+ // Cross-compiling binutils and GCC installations (vanilla and openSUSE at
+ // least) put various tools in a triple-prefixed directory off of the parent
+ // of the GCC installation. We use the GCC triple here to ensure that we end
+ // up with tools that support the same amount of cross compiling as the
+ // detected GCC installation. For example, if we find a GCC installation
+ // targeting x86_64, but it is a bi-arch GCC installation, it can also be
+ // used to target i386.
+ if (GCCInstallation.isValid()) {
+ PPaths.push_back(Twine(GCCInstallation.getParentLibPath() + "/../" +
+ GCCInstallation.getTriple().str() + "/bin")
+ .str());
+ }
+}
+
+void Generic_GCC::AddMultilibPaths(const Driver &D,
+ const std::string &SysRoot,
+ const std::string &OSLibDir,
+ const std::string &MultiarchTriple,
+ path_list &Paths) {
+ // Add the multilib suffixed paths where they are available.
+ if (GCCInstallation.isValid()) {
+ const llvm::Triple &GCCTriple = GCCInstallation.getTriple();
+ const std::string &LibPath =
+ std::string(GCCInstallation.getParentLibPath());
+
+ // Sourcery CodeBench MIPS toolchain holds some libraries under
+ // a biarch-like suffix of the GCC installation.
+ if (const auto &PathsCallback = Multilibs.filePathsCallback())
+ for (const auto &Path : PathsCallback(SelectedMultilib))
+ addPathIfExists(D, GCCInstallation.getInstallPath() + Path, Paths);
+
+ // Add lib/gcc/$triple/$version, with an optional /multilib suffix.
+ addPathIfExists(
+ D, GCCInstallation.getInstallPath() + SelectedMultilib.gccSuffix(),
+ Paths);
+
+ // Add lib/gcc/$triple/$libdir
+ // For GCC built with --enable-version-specific-runtime-libs.
+ addPathIfExists(D, GCCInstallation.getInstallPath() + "/../" + OSLibDir,
+ Paths);
+
+ // GCC cross compiling toolchains will install target libraries which ship
+ // as part of the toolchain under <prefix>/<triple>/<libdir> rather than as
+ // any part of the GCC installation in
+ // <prefix>/<libdir>/gcc/<triple>/<version>. This decision is somewhat
+ // debatable, but is the reality today. We need to search this tree even
+ // when we have a sysroot somewhere else. It is the responsibility of
+ // whomever is doing the cross build targeting a sysroot using a GCC
+ // installation that is *not* within the system root to ensure two things:
+ //
+ // 1) Any DSOs that are linked in from this tree or from the install path
+ // above must be present on the system root and found via an
+ // appropriate rpath.
+ // 2) There must not be libraries installed into
+ // <prefix>/<triple>/<libdir> unless they should be preferred over
+ // those within the system root.
+ //
+ // Note that this matches the GCC behavior. See the below comment for where
+ // Clang diverges from GCC's behavior.
+ addPathIfExists(D,
+ LibPath + "/../" + GCCTriple.str() + "/lib/../" + OSLibDir +
+ SelectedMultilib.osSuffix(),
+ Paths);
+
+ // If the GCC installation we found is inside of the sysroot, we want to
+ // prefer libraries installed in the parent prefix of the GCC installation.
+ // It is important to *not* use these paths when the GCC installation is
+ // outside of the system root as that can pick up unintended libraries.
+ // This usually happens when there is an external cross compiler on the
+ // host system, and a more minimal sysroot available that is the target of
+ // the cross. Note that GCC does include some of these directories in some
+ // configurations but this seems somewhere between questionable and simply
+ // a bug.
+ if (StringRef(LibPath).startswith(SysRoot))
+ addPathIfExists(D, LibPath + "/../" + OSLibDir, Paths);
+ }
+}
+
+void Generic_GCC::AddMultiarchPaths(const Driver &D,
+ const std::string &SysRoot,
+ const std::string &OSLibDir,
+ path_list &Paths) {
+ if (GCCInstallation.isValid()) {
+ const std::string &LibPath =
+ std::string(GCCInstallation.getParentLibPath());
+ const llvm::Triple &GCCTriple = GCCInstallation.getTriple();
+ const Multilib &Multilib = GCCInstallation.getMultilib();
+ addPathIfExists(
+ D, LibPath + "/../" + GCCTriple.str() + "/lib" + Multilib.osSuffix(),
+ Paths);
+ }
+}
+
+void Generic_GCC::AddMultilibIncludeArgs(const ArgList &DriverArgs,
+ ArgStringList &CC1Args) const {
+ // Add include directories specific to the selected multilib set and multilib.
+ if (!GCCInstallation.isValid())
+ return;
+ // gcc TOOL_INCLUDE_DIR.
+ const llvm::Triple &GCCTriple = GCCInstallation.getTriple();
+ std::string LibPath(GCCInstallation.getParentLibPath());
+ addSystemInclude(DriverArgs, CC1Args,
+ Twine(LibPath) + "/../" + GCCTriple.str() + "/include");
+
+ const auto &Callback = Multilibs.includeDirsCallback();
+ if (Callback) {
+ for (const auto &Path : Callback(GCCInstallation.getMultilib()))
+ addExternCSystemIncludeIfExists(DriverArgs, CC1Args,
+ GCCInstallation.getInstallPath() + Path);
+ }
+}
+
+void Generic_GCC::AddClangCXXStdlibIncludeArgs(const ArgList &DriverArgs,
+ ArgStringList &CC1Args) const {
+ if (DriverArgs.hasArg(options::OPT_nostdinc, options::OPT_nostdincxx,
+ options::OPT_nostdlibinc))
+ return;
+
+ switch (GetCXXStdlibType(DriverArgs)) {
+ case ToolChain::CST_Libcxx:
+ addLibCxxIncludePaths(DriverArgs, CC1Args);
+ break;
+
+ case ToolChain::CST_Libstdcxx:
+ addLibStdCxxIncludePaths(DriverArgs, CC1Args);
+ break;
+ }
+}
+
+void
+Generic_GCC::addLibCxxIncludePaths(const llvm::opt::ArgList &DriverArgs,
+ llvm::opt::ArgStringList &CC1Args) const {
+ const Driver &D = getDriver();
+ std::string SysRoot = computeSysRoot();
+ std::string Target = getTripleString();
+
+ auto AddIncludePath = [&](std::string Path) {
+ std::string Version = detectLibcxxVersion(Path);
+ if (Version.empty())
+ return false;
+
+ // First add the per-target include path if it exists.
+ std::string TargetDir = Path + "/" + Target + "/c++/" + Version;
+ if (D.getVFS().exists(TargetDir))
+ addSystemInclude(DriverArgs, CC1Args, TargetDir);
+
+ // Second add the generic one.
+ addSystemInclude(DriverArgs, CC1Args, Path + "/c++/" + Version);
+ return true;
+ };
+
+ // Android never uses the libc++ headers installed alongside the toolchain,
+ // which are generally incompatible with the NDK libraries anyway.
+ if (!getTriple().isAndroid())
+ if (AddIncludePath(getDriver().Dir + "/../include"))
+ return;
+ // If this is a development, non-installed, clang, libcxx will
+ // not be found at ../include/c++ but it likely to be found at
+ // one of the following two locations:
+ if (AddIncludePath(concat(SysRoot, "/usr/local/include")))
+ return;
+ if (AddIncludePath(concat(SysRoot, "/usr/include")))
+ return;
+}
+
+bool Generic_GCC::addLibStdCXXIncludePaths(Twine IncludeDir, StringRef Triple,
+ Twine IncludeSuffix,
+ const llvm::opt::ArgList &DriverArgs,
+ llvm::opt::ArgStringList &CC1Args,
+ bool DetectDebian) const {
+ if (!getVFS().exists(IncludeDir))
+ return false;
+
+ // Debian native gcc uses g++-multiarch-incdir.diff which uses
+ // include/x86_64-linux-gnu/c++/10$IncludeSuffix instead of
+ // include/c++/10/x86_64-linux-gnu$IncludeSuffix.
+ std::string Dir = IncludeDir.str();
+ StringRef Include =
+ llvm::sys::path::parent_path(llvm::sys::path::parent_path(Dir));
+ std::string Path =
+ (Include + "/" + Triple + Dir.substr(Include.size()) + IncludeSuffix)
+ .str();
+ if (DetectDebian && !getVFS().exists(Path))
+ return false;
+
+ // GPLUSPLUS_INCLUDE_DIR
+ addSystemInclude(DriverArgs, CC1Args, IncludeDir);
+ // GPLUSPLUS_TOOL_INCLUDE_DIR. If Triple is not empty, add a target-dependent
+ // include directory.
+ if (DetectDebian)
+ addSystemInclude(DriverArgs, CC1Args, Path);
+ else if (!Triple.empty())
+ addSystemInclude(DriverArgs, CC1Args,
+ IncludeDir + "/" + Triple + IncludeSuffix);
+ // GPLUSPLUS_BACKWARD_INCLUDE_DIR
+ addSystemInclude(DriverArgs, CC1Args, IncludeDir + "/backward");
+ return true;
+}
+
+bool Generic_GCC::addGCCLibStdCxxIncludePaths(
+ const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args,
+ StringRef DebianMultiarch) const {
+ assert(GCCInstallation.isValid());
+
+ // By default, look for the C++ headers in an include directory adjacent to
+ // the lib directory of the GCC installation. Note that this is expect to be
+ // equivalent to '/usr/include/c++/X.Y' in almost all cases.
+ StringRef LibDir = GCCInstallation.getParentLibPath();
+ StringRef InstallDir = GCCInstallation.getInstallPath();
+ StringRef TripleStr = GCCInstallation.getTriple().str();
+ const Multilib &Multilib = GCCInstallation.getMultilib();
+ const GCCVersion &Version = GCCInstallation.getVersion();
+
+ // Try /../$triple/include/c++/$version (gcc --print-multiarch is not empty).
+ if (addLibStdCXXIncludePaths(
+ LibDir.str() + "/../" + TripleStr + "/include/c++/" + Version.Text,
+ TripleStr, Multilib.includeSuffix(), DriverArgs, CC1Args))
+ return true;
+
+ // Try /gcc/$triple/$version/include/c++/ (gcc --print-multiarch is not
+ // empty). Like above but for GCC built with
+ // --enable-version-specific-runtime-libs.
+ if (addLibStdCXXIncludePaths(LibDir.str() + "/gcc/" + TripleStr + "/" +
+ Version.Text + "/include/c++/",
+ TripleStr, Multilib.includeSuffix(), DriverArgs,
+ CC1Args))
+ return true;
+
+ // Detect Debian g++-multiarch-incdir.diff.
+ if (addLibStdCXXIncludePaths(LibDir.str() + "/../include/c++/" + Version.Text,
+ DebianMultiarch, Multilib.includeSuffix(),
+ DriverArgs, CC1Args, /*Debian=*/true))
+ return true;
+
+ // Try /../include/c++/$version (gcc --print-multiarch is empty).
+ if (addLibStdCXXIncludePaths(LibDir.str() + "/../include/c++/" + Version.Text,
+ TripleStr, Multilib.includeSuffix(), DriverArgs,
+ CC1Args))
+ return true;
+
+ // Otherwise, fall back on a bunch of options which don't use multiarch
+ // layouts for simplicity.
+ const std::string LibStdCXXIncludePathCandidates[] = {
+ // Gentoo is weird and places its headers inside the GCC install,
+ // so if the first attempt to find the headers fails, try these patterns.
+ InstallDir.str() + "/include/g++-v" + Version.Text,
+ InstallDir.str() + "/include/g++-v" + Version.MajorStr + "." +
+ Version.MinorStr,
+ InstallDir.str() + "/include/g++-v" + Version.MajorStr,
+ };
+
+ for (const auto &IncludePath : LibStdCXXIncludePathCandidates) {
+ if (addLibStdCXXIncludePaths(IncludePath, TripleStr,
+ Multilib.includeSuffix(), DriverArgs, CC1Args))
+ return true;
+ }
+ return false;
+}
+
+void
+Generic_GCC::addLibStdCxxIncludePaths(const llvm::opt::ArgList &DriverArgs,
+ llvm::opt::ArgStringList &CC1Args) const {
+ if (GCCInstallation.isValid()) {
+ addGCCLibStdCxxIncludePaths(DriverArgs, CC1Args,
+ GCCInstallation.getTriple().str());
+ }
+}
+
+llvm::opt::DerivedArgList *
+Generic_GCC::TranslateArgs(const llvm::opt::DerivedArgList &Args, StringRef,
+ Action::OffloadKind DeviceOffloadKind) const {
+
+ // If this tool chain is used for an OpenMP offloading device we have to make
+ // sure we always generate a shared library regardless of the commands the
+ // user passed to the host. This is required because the runtime library
+ // is required to load the device image dynamically at run time.
+ if (DeviceOffloadKind == Action::OFK_OpenMP) {
+ DerivedArgList *DAL = new DerivedArgList(Args.getBaseArgs());
+ const OptTable &Opts = getDriver().getOpts();
+
+ // Request the shared library. Given that these options are decided
+ // implicitly, they do not refer to any base argument.
+ DAL->AddFlagArg(/*BaseArg=*/nullptr, Opts.getOption(options::OPT_shared));
+ DAL->AddFlagArg(/*BaseArg=*/nullptr, Opts.getOption(options::OPT_fPIC));
+
+ // Filter all the arguments we don't care passing to the offloading
+ // toolchain as they can mess up with the creation of a shared library.
+ for (auto *A : Args) {
+ switch ((options::ID)A->getOption().getID()) {
+ default:
+ DAL->append(A);
+ break;
+ case options::OPT_shared:
+ case options::OPT_dynamic:
+ case options::OPT_static:
+ case options::OPT_fPIC:
+ case options::OPT_fno_PIC:
+ case options::OPT_fpic:
+ case options::OPT_fno_pic:
+ case options::OPT_fPIE:
+ case options::OPT_fno_PIE:
+ case options::OPT_fpie:
+ case options::OPT_fno_pie:
+ break;
+ }
+ }
+ return DAL;
+ }
+ return nullptr;
+}
+
+void Generic_ELF::anchor() {}
+
+void Generic_ELF::addClangTargetOptions(const ArgList &DriverArgs,
+ ArgStringList &CC1Args,
+ Action::OffloadKind) const {
+ if (!DriverArgs.hasFlag(options::OPT_fuse_init_array,
+ options::OPT_fno_use_init_array, true))
+ CC1Args.push_back("-fno-use-init-array");
+}
Index: create-16.0.2-clang-set-revision-patch/create.patch.sh
===================================================================
--- create-16.0.2-clang-set-revision-patch/create.patch.sh (nonexistent)
+++ create-16.0.2-clang-set-revision-patch/create.patch.sh (revision 40)
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+VERSION=16.0.2
+
+tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
+mv llvm-$VERSION llvm-$VERSION-orig
+
+cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
+
+diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-clang-set-revision.patch
+
+mv llvm-$VERSION-clang-set-revision.patch ../patches
+
+rm -rf ./llvm-$VERSION
+rm -rf ./llvm-$VERSION-orig
Property changes on: create-16.0.2-clang-set-revision-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: create-16.0.2-clang-set-revision-patch/file.list
===================================================================
--- create-16.0.2-clang-set-revision-patch/file.list (nonexistent)
+++ create-16.0.2-clang-set-revision-patch/file.list (revision 40)
@@ -0,0 +1 @@
+llvm-16.0.2/clang/lib/Basic/Version.cpp
Index: create-16.0.2-clang-set-revision-patch/llvm-16.0.2-new/clang/lib/Basic/Version.cpp
===================================================================
--- create-16.0.2-clang-set-revision-patch/llvm-16.0.2-new/clang/lib/Basic/Version.cpp (nonexistent)
+++ create-16.0.2-clang-set-revision-patch/llvm-16.0.2-new/clang/lib/Basic/Version.cpp (revision 40)
@@ -0,0 +1,106 @@
+//===- Version.cpp - Clang Version Number -----------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// This file defines several version-related utility functions for Clang.
+//
+//===----------------------------------------------------------------------===//
+
+#include "clang/Basic/Version.h"
+#include "clang/Basic/LLVM.h"
+#include "clang/Config/config.h"
+#include "llvm/Support/raw_ostream.h"
+#include <cstdlib>
+#include <cstring>
+
+#include "VCSVersion.inc"
+
+namespace clang {
+
+std::string getClangRepositoryPath() {
+ return "";
+}
+
+std::string getLLVMRepositoryPath() {
+ return "";
+}
+
+std::string getClangRevision() {
+ return "";
+}
+
+std::string getLLVMRevision() {
+ return "";
+}
+
+std::string getClangFullRepositoryVersion() {
+ std::string buf;
+ llvm::raw_string_ostream OS(buf);
+ std::string Path = getClangRepositoryPath();
+ std::string Revision = getClangRevision();
+ if (!Path.empty() || !Revision.empty()) {
+ OS << '(';
+ if (!Path.empty())
+ OS << Path;
+ if (!Revision.empty()) {
+ if (!Path.empty())
+ OS << ' ';
+ OS << Revision;
+ }
+ OS << ')';
+ }
+ // Support LLVM in a separate repository.
+ std::string LLVMRev = getLLVMRevision();
+ if (!LLVMRev.empty() && LLVMRev != Revision) {
+ OS << " (";
+ std::string LLVMRepo = getLLVMRepositoryPath();
+ if (!LLVMRepo.empty())
+ OS << LLVMRepo << ' ';
+ OS << LLVMRev << ')';
+ }
+ return buf;
+}
+
+std::string getClangFullVersion() {
+ return getClangToolFullVersion("clang");
+}
+
+std::string getClangToolFullVersion(StringRef ToolName) {
+ std::string buf;
+ llvm::raw_string_ostream OS(buf);
+#ifdef CLANG_VENDOR
+ OS << CLANG_VENDOR;
+#endif
+ OS << ToolName << " version " CLANG_VERSION_STRING;
+
+ std::string repo = getClangFullRepositoryVersion();
+ if (!repo.empty()) {
+ OS << " " << repo;
+ }
+
+ return buf;
+}
+
+std::string getClangFullCPPVersion() {
+ // The version string we report in __VERSION__ is just a compacted version of
+ // the one we report on the command line.
+ std::string buf;
+ llvm::raw_string_ostream OS(buf);
+#ifdef CLANG_VENDOR
+ OS << CLANG_VENDOR;
+#endif
+ OS << "Clang " CLANG_VERSION_STRING;
+
+ std::string repo = getClangFullRepositoryVersion();
+ if (!repo.empty()) {
+ OS << " " << repo;
+ }
+
+ return buf;
+}
+
+} // end namespace clang
Index: create-16.0.2-clangd-riscv64-patch/create.patch.sh
===================================================================
--- create-16.0.2-clangd-riscv64-patch/create.patch.sh (nonexistent)
+++ create-16.0.2-clangd-riscv64-patch/create.patch.sh (revision 40)
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+VERSION=16.0.2
+
+tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
+mv llvm-$VERSION llvm-$VERSION-orig
+
+cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
+
+diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-clangd-riscv64.patch
+
+mv llvm-$VERSION-clangd-riscv64.patch ../patches
+
+rm -rf ./llvm-$VERSION
+rm -rf ./llvm-$VERSION-orig
Property changes on: create-16.0.2-clangd-riscv64-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: create-16.0.2-clangd-riscv64-patch/file.list
===================================================================
--- create-16.0.2-clangd-riscv64-patch/file.list (nonexistent)
+++ create-16.0.2-clangd-riscv64-patch/file.list (revision 40)
@@ -0,0 +1 @@
+llvm-16.0.2/clang-tools-extra/clangd/CMakeLists.txt
Index: create-16.0.2-clangd-riscv64-patch/llvm-16.0.2-new/clang-tools-extra/clangd/CMakeLists.txt
===================================================================
--- create-16.0.2-clangd-riscv64-patch/llvm-16.0.2-new/clang-tools-extra/clangd/CMakeLists.txt (nonexistent)
+++ create-16.0.2-clangd-riscv64-patch/llvm-16.0.2-new/clang-tools-extra/clangd/CMakeLists.txt (revision 40)
@@ -0,0 +1,224 @@
+# This is a no-op for building files in this dir, but is inherited by subdirs.
+include_directories(${CMAKE_CURRENT_SOURCE_DIR})
+include_directories(${CMAKE_CURRENT_BINARY_DIR})
+
+add_subdirectory(support)
+
+# Configure the Features.inc file.
+if (NOT DEFINED CLANGD_BUILD_XPC)
+ if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+ set(CLANGD_BUILD_XPC_DEFAULT ON)
+ else ()
+ set(CLANGD_BUILD_XPC_DEFAULT OFF)
+ endif ()
+
+ llvm_canonicalize_cmake_booleans(CLANGD_BUILD_XPC_DEFAULT)
+
+ set(CLANGD_BUILD_XPC ${CLANGD_BUILD_XPC_DEFAULT} CACHE BOOL "Build XPC Support For Clangd." FORCE)
+ unset(CLANGD_BUILD_XPC_DEFAULT)
+endif ()
+
+# This involves generating and compiling large source files, which can run into toolchain limitations.
+option(CLANGD_DECISION_FOREST "Enable decision forest model for ranking code completion items" ON)
+option(CLANGD_MALLOC_TRIM "Call malloc_trim(3) periodically in Clangd. (only takes effect when using glibc)" ON)
+# -DCLANG_TIDY_CHECKS=Off avoids a dependency on clang-tidy, reducing rebuilds.
+option(CLANGD_TIDY_CHECKS "Link all clang-tidy checks into clangd" ON)
+
+llvm_canonicalize_cmake_booleans(
+ CLANGD_BUILD_XPC
+ CLANGD_ENABLE_REMOTE
+ ENABLE_GRPC_REFLECTION
+ CLANGD_MALLOC_TRIM
+ CLANGD_TIDY_CHECKS
+ LLVM_ENABLE_ZLIB
+ CLANGD_DECISION_FOREST
+)
+
+configure_file(
+ ${CMAKE_CURRENT_SOURCE_DIR}/Features.inc.in
+ ${CMAKE_CURRENT_BINARY_DIR}/Features.inc
+)
+
+set(LLVM_LINK_COMPONENTS
+ Support
+ AllTargetsInfos
+ FrontendOpenMP
+ Option
+ TargetParser
+ )
+
+set(COMPLETIONMODEL_SOURCES)
+if(CLANGD_DECISION_FOREST)
+ include(${CMAKE_CURRENT_SOURCE_DIR}/quality/CompletionModel.cmake)
+ gen_decision_forest(${CMAKE_CURRENT_SOURCE_DIR}/quality/model CompletionModel clang::clangd::Example)
+ list(APPEND COMPLETIONMODEL_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/CompletionModel.cpp)
+endif()
+
+if(MSVC AND NOT CLANG_CL)
+ set_source_files_properties(CompileCommands.cpp PROPERTIES COMPILE_FLAGS -wd4130) # disables C4130: logical operation on address of string constant
+endif()
+
+include_directories(BEFORE "${CMAKE_CURRENT_BINARY_DIR}/../clang-tidy")
+include_directories(BEFORE "${CMAKE_CURRENT_SOURCE_DIR}/../include-cleaner/include")
+
+add_clang_library(clangDaemon
+ AST.cpp
+ ASTSignals.cpp
+ ClangdLSPServer.cpp
+ ClangdServer.cpp
+ CodeComplete.cpp
+ CodeCompletionStrings.cpp
+ CollectMacros.cpp
+ CompileCommands.cpp
+ Compiler.cpp
+ Config.cpp
+ ConfigCompile.cpp
+ ConfigProvider.cpp
+ ConfigYAML.cpp
+ DecisionForest.cpp
+ Diagnostics.cpp
+ DraftStore.cpp
+ DumpAST.cpp
+ ExpectedTypes.cpp
+ FeatureModule.cpp
+ Feature.cpp
+ FindSymbols.cpp
+ FindTarget.cpp
+ FileDistance.cpp
+ Format.cpp
+ FS.cpp
+ FuzzyMatch.cpp
+ GlobalCompilationDatabase.cpp
+ Headers.cpp
+ HeaderSourceSwitch.cpp
+ HeuristicResolver.cpp
+ Hover.cpp
+ IncludeCleaner.cpp
+ IncludeFixer.cpp
+ InlayHints.cpp
+ JSONTransport.cpp
+ PathMapping.cpp
+ Protocol.cpp
+ Quality.cpp
+ ParsedAST.cpp
+ Preamble.cpp
+ RIFF.cpp
+ Selection.cpp
+ SemanticHighlighting.cpp
+ SemanticSelection.cpp
+ SourceCode.cpp
+ SystemIncludeExtractor.cpp
+ TidyProvider.cpp
+ TUScheduler.cpp
+ URI.cpp
+ XRefs.cpp
+ ${COMPLETIONMODEL_SOURCES}
+
+ index/Background.cpp
+ index/BackgroundIndexLoader.cpp
+ index/BackgroundIndexStorage.cpp
+ index/BackgroundQueue.cpp
+ index/BackgroundRebuild.cpp
+ index/CanonicalIncludes.cpp
+ index/FileIndex.cpp
+ index/Index.cpp
+ index/IndexAction.cpp
+ index/MemIndex.cpp
+ index/Merge.cpp
+ index/ProjectAware.cpp
+ index/Ref.cpp
+ index/Relation.cpp
+ index/Serialization.cpp
+ index/StdLib.cpp
+ index/Symbol.cpp
+ index/SymbolCollector.cpp
+ index/SymbolID.cpp
+ index/SymbolLocation.cpp
+ index/SymbolOrigin.cpp
+ index/YAMLSerialization.cpp
+
+ index/dex/Dex.cpp
+ index/dex/Iterator.cpp
+ index/dex/PostingList.cpp
+ index/dex/Trigram.cpp
+
+ refactor/InsertionPoint.cpp
+ refactor/Rename.cpp
+ refactor/Tweak.cpp
+
+ DEPENDS
+ omp_gen
+ )
+
+# Include generated CompletionModel headers.
+target_include_directories(clangDaemon PUBLIC
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
+)
+
+clang_target_link_libraries(clangDaemon
+ PRIVATE
+ clangAST
+ clangASTMatchers
+ clangBasic
+ clangDriver
+ clangFormat
+ clangFrontend
+ clangIndex
+ clangLex
+ clangSema
+ clangSerialization
+ clangTooling
+ clangToolingCore
+ clangToolingInclusions
+ clangToolingInclusionsStdlib
+ clangToolingSyntax
+ )
+
+if(HAVE_CXX_ATOMICS_WITH_LIB OR HAVE_CXX_ATOMICS64_WITH_LIB)
+ target_link_libraries(clangDaemon PRIVATE atomic)
+endif()
+
+target_link_libraries(clangDaemon
+ PRIVATE
+ ${LLVM_PTHREAD_LIB}
+
+ clangIncludeCleaner
+ clangPseudo
+ clangTidy
+
+ clangdSupport
+ )
+if(CLANGD_TIDY_CHECKS)
+ target_link_libraries(clangDaemon PRIVATE ${ALL_CLANG_TIDY_CHECKS})
+endif()
+
+add_subdirectory(refactor/tweaks)
+if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
+ # FIXME: Make fuzzer not use linux-specific APIs, build it everywhere.
+ add_subdirectory(fuzzer)
+endif()
+add_subdirectory(tool)
+add_subdirectory(indexer)
+
+if (LLVM_INCLUDE_BENCHMARKS)
+ add_subdirectory(benchmarks)
+endif()
+if ( CLANGD_BUILD_XPC )
+ add_subdirectory(xpc)
+endif ()
+
+if (CLANGD_ENABLE_REMOTE)
+ include(AddGRPC)
+endif()
+
+if(CLANG_INCLUDE_TESTS)
+ add_subdirectory(test)
+ add_subdirectory(unittests)
+endif()
+
+# FIXME(kirillbobyrev): Document this in the LLVM docs once remote index is stable.
+option(CLANGD_ENABLE_REMOTE "Use gRPC library to enable remote index support for Clangd" OFF)
+set(GRPC_INSTALL_PATH "" CACHE PATH "Path to gRPC library manual installation.")
+
+add_subdirectory(index/remote)
+add_subdirectory(index/dex/dexp)
Index: create-16.0.2-compiler-rt-jz47xx-patch/create.patch.sh
===================================================================
--- create-16.0.2-compiler-rt-jz47xx-patch/create.patch.sh (nonexistent)
+++ create-16.0.2-compiler-rt-jz47xx-patch/create.patch.sh (revision 40)
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+VERSION=16.0.2
+
+tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
+mv llvm-$VERSION llvm-$VERSION-orig
+
+cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
+
+diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-compiler-rt-jz47xx.patch
+
+mv llvm-$VERSION-compiler-rt-jz47xx.patch ../patches
+
+rm -rf ./llvm-$VERSION
+rm -rf ./llvm-$VERSION-orig
Property changes on: create-16.0.2-compiler-rt-jz47xx-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: create-16.0.2-compiler-rt-jz47xx-patch/file.list
===================================================================
--- create-16.0.2-compiler-rt-jz47xx-patch/file.list (nonexistent)
+++ create-16.0.2-compiler-rt-jz47xx-patch/file.list (revision 40)
@@ -0,0 +1 @@
+llvm-16.0.2/compiler-rt/cmake/base-config-ix.cmake
Index: create-16.0.2-compiler-rt-jz47xx-patch/llvm-16.0.2-new/compiler-rt/cmake/base-config-ix.cmake
===================================================================
--- create-16.0.2-compiler-rt-jz47xx-patch/llvm-16.0.2-new/compiler-rt/cmake/base-config-ix.cmake (nonexistent)
+++ create-16.0.2-compiler-rt-jz47xx-patch/llvm-16.0.2-new/compiler-rt/cmake/base-config-ix.cmake (revision 40)
@@ -0,0 +1,275 @@
+# The CompilerRT build system requires CMake version 2.8.8 or higher in order
+# to use its support for building convenience "libraries" as a collection of
+# .o files. This is particularly useful in producing larger, more complex
+# runtime libraries.
+
+include(BuiltinTests)
+include(CheckIncludeFile)
+include(CheckCXXSourceCompiles)
+include(GNUInstallDirs)
+include(ExtendPath)
+include(CompilerRTDarwinUtils)
+
+check_include_file(unwind.h HAVE_UNWIND_H)
+
+# Used by sanitizer_common and tests.
+check_include_file(rpc/xdr.h HAVE_RPC_XDR_H)
+if (NOT HAVE_RPC_XDR_H)
+ set(HAVE_RPC_XDR_H 0)
+endif()
+
+# Top level target used to build all compiler-rt libraries.
+add_custom_target(compiler-rt ALL)
+add_custom_target(install-compiler-rt)
+add_custom_target(install-compiler-rt-stripped)
+set_property(
+ TARGET
+ compiler-rt
+ install-compiler-rt
+ install-compiler-rt-stripped
+ PROPERTY
+ FOLDER "Compiler-RT Misc"
+)
+
+# Setting these variables from an LLVM build is sufficient that compiler-rt can
+# construct the output paths, so it can behave as if it were in-tree here.
+if (LLVM_LIBRARY_OUTPUT_INTDIR AND LLVM_RUNTIME_OUTPUT_INTDIR AND PACKAGE_VERSION)
+ set(LLVM_TREE_AVAILABLE On)
+endif()
+
+if (LLVM_TREE_AVAILABLE)
+ # Compute the Clang version from the LLVM version.
+ # FIXME: We should be able to reuse CLANG_VERSION_MAJOR variable calculated
+ # in Clang cmake files, instead of copying the rules here.
+ string(REGEX MATCH "^[0-9]+" CLANG_VERSION_MAJOR
+ ${PACKAGE_VERSION})
+ # Setup the paths where compiler-rt runtimes and headers should be stored.
+ set(COMPILER_RT_OUTPUT_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR}/clang/${CLANG_VERSION_MAJOR})
+ set(COMPILER_RT_EXEC_OUTPUT_DIR ${LLVM_RUNTIME_OUTPUT_INTDIR})
+ set(COMPILER_RT_INSTALL_PATH lib${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION_MAJOR})
+ option(COMPILER_RT_INCLUDE_TESTS "Generate and build compiler-rt unit tests."
+ ${LLVM_INCLUDE_TESTS})
+ option(COMPILER_RT_ENABLE_WERROR "Fail and stop if warning is triggered"
+ ${LLVM_ENABLE_WERROR})
+
+ # Use just-built Clang to compile/link tests on all platforms.
+ if (CMAKE_CROSSCOMPILING)
+ if (CMAKE_HOST_WIN32)
+ set(_host_executable_suffix ".exe")
+ else()
+ set(_host_executable_suffix "")
+ endif()
+ else()
+ set(_host_executable_suffix ${CMAKE_EXECUTABLE_SUFFIX})
+ endif()
+ set(COMPILER_RT_TEST_COMPILER
+ ${LLVM_RUNTIME_OUTPUT_INTDIR}/clang${_host_executable_suffix})
+ set(COMPILER_RT_TEST_CXX_COMPILER
+ ${LLVM_RUNTIME_OUTPUT_INTDIR}/clang++${_host_executable_suffix})
+else()
+ # Take output dir and install path from the user.
+ set(COMPILER_RT_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR} CACHE PATH
+ "Path where built compiler-rt libraries should be stored.")
+ set(COMPILER_RT_EXEC_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/bin CACHE PATH
+ "Path where built compiler-rt executables should be stored.")
+ set(COMPILER_RT_INSTALL_PATH "" CACHE PATH
+ "Prefix for directories where built compiler-rt artifacts should be installed.")
+ option(COMPILER_RT_INCLUDE_TESTS "Generate and build compiler-rt unit tests." OFF)
+ option(COMPILER_RT_ENABLE_WERROR "Fail and stop if warning is triggered" OFF)
+ # Use a host compiler to compile/link tests.
+ set(COMPILER_RT_TEST_COMPILER ${CMAKE_C_COMPILER} CACHE PATH "Compiler to use for testing")
+ set(COMPILER_RT_TEST_CXX_COMPILER ${CMAKE_CXX_COMPILER} CACHE PATH "C++ Compiler to use for testing")
+endif()
+
+if("${COMPILER_RT_TEST_COMPILER}" MATCHES "clang[+]*$")
+ set(COMPILER_RT_TEST_COMPILER_ID Clang)
+elseif("${COMPILER_RT_TEST_COMPILER}" MATCHES "clang.*.exe$")
+ set(COMPILER_RT_TEST_COMPILER_ID Clang)
+else()
+ set(COMPILER_RT_TEST_COMPILER_ID GNU)
+endif()
+
+if(NOT DEFINED COMPILER_RT_OS_DIR)
+ if(ANDROID)
+ # The CMAKE_SYSTEM_NAME for Android is Android, but the OS is Linux and the
+ # driver will search for compiler-rt libraries in the "linux" directory.
+ set(COMPILER_RT_OS_DIR linux)
+ else()
+ string(TOLOWER ${CMAKE_SYSTEM_NAME} COMPILER_RT_OS_DIR)
+ endif()
+endif()
+if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)
+ set(COMPILER_RT_OUTPUT_LIBRARY_DIR
+ ${COMPILER_RT_OUTPUT_DIR}/lib)
+ extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" lib)
+ set(COMPILER_RT_INSTALL_LIBRARY_DIR "${default_install_path}" CACHE PATH
+ "Path where built compiler-rt libraries should be installed.")
+else(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)
+ set(COMPILER_RT_OUTPUT_LIBRARY_DIR
+ ${COMPILER_RT_OUTPUT_DIR}/lib/${COMPILER_RT_OS_DIR})
+ extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" "lib/${COMPILER_RT_OS_DIR}")
+ set(COMPILER_RT_INSTALL_LIBRARY_DIR "${default_install_path}" CACHE PATH
+ "Path where built compiler-rt libraries should be installed.")
+endif()
+extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" "${CMAKE_INSTALL_BINDIR}")
+set(COMPILER_RT_INSTALL_BINARY_DIR "${default_install_path}" CACHE PATH
+ "Path where built compiler-rt executables should be installed.")
+extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" "${CMAKE_INSTALL_INCLUDEDIR}")
+set(COMPILER_RT_INSTALL_INCLUDE_DIR "${default_install_path}" CACHE PATH
+ "Path where compiler-rt headers should be installed.")
+extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" "${CMAKE_INSTALL_DATADIR}")
+set(COMPILER_RT_INSTALL_DATA_DIR "${default_install_path}" CACHE PATH
+ "Path where compiler-rt data files should be installed.")
+
+if(APPLE)
+ # On Darwin if /usr/include/c++ doesn't exist, the user probably has Xcode but
+ # not the command line tools (or is using macOS 10.14 or newer). If this is
+ # the case, we need to find the OS X sysroot to pass to clang.
+ if(NOT EXISTS /usr/include/c++)
+ execute_process(COMMAND xcrun -sdk macosx --show-sdk-path
+ OUTPUT_VARIABLE OSX_SYSROOT
+ ERROR_QUIET
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+ if (NOT OSX_SYSROOT OR NOT EXISTS ${OSX_SYSROOT})
+ message(WARNING "Detected OSX_SYSROOT ${OSX_SYSROOT} does not exist")
+ else()
+ message(STATUS "Found OSX_SYSROOT: ${OSX_SYSROOT}")
+ set(OSX_SYSROOT_FLAG "-isysroot${OSX_SYSROOT}")
+ endif()
+ else()
+ set(OSX_SYSROOT_FLAG "")
+ endif()
+
+ try_compile_only(COMPILER_RT_HAS_DARWIN_TARGET_VARIANT_FLAG
+ FLAGS
+ "-target" "x86_64-apple-macos10.15"
+ "-darwin-target-variant" "x86_64-apple-ios13.1-macabi"
+ "-Werror")
+ option(COMPILER_RT_ENABLE_MACCATALYST "Enable building for Mac Catalyst" ${COMPILER_RT_HAS_DARWIN_TARGET_VARIANT_FLAG})
+
+ # Don't enable COMPILER_RT_ENABLE_IOS if we can't find the sdk dir.
+ # This can happen when you only have the commandline tools installed
+ # which doesn't come with the iOS SDK.
+ find_darwin_sdk_dir(HAS_IOS_SDK "iphoneos")
+ set(COMPILER_RT_ENABLE_IOS_DEFAULT On)
+ if("${HAS_IOS_SDK}" STREQUAL "")
+ message(WARNING "iOS SDK not found! Building compiler-rt without iOS support.")
+ set(COMPILER_RT_ENABLE_IOS_DEFAULT Off)
+ endif()
+ option(COMPILER_RT_ENABLE_IOS "Enable building for iOS" ${COMPILER_RT_ENABLE_IOS_DEFAULT})
+
+ option(COMPILER_RT_ENABLE_WATCHOS "Enable building for watchOS - Experimental" Off)
+ option(COMPILER_RT_ENABLE_TVOS "Enable building for tvOS - Experimental" Off)
+
+else()
+ option(COMPILER_RT_DEFAULT_TARGET_ONLY "Build builtins only for the default target" Off)
+endif()
+
+if(WIN32 AND NOT MINGW AND NOT CYGWIN)
+ set(CMAKE_SHARED_LIBRARY_PREFIX_C "")
+ set(CMAKE_SHARED_LIBRARY_PREFIX_CXX "")
+ set(CMAKE_STATIC_LIBRARY_PREFIX_C "")
+ set(CMAKE_STATIC_LIBRARY_PREFIX_CXX "")
+ set(CMAKE_STATIC_LIBRARY_SUFFIX_C ".lib")
+ set(CMAKE_STATIC_LIBRARY_SUFFIX_CXX ".lib")
+endif()
+
+macro(test_targets)
+ # Find and run MSVC (not clang-cl) and get its version. This will tell clang-cl
+ # what version of MSVC to pretend to be so that the STL works.
+ set(MSVC_VERSION_FLAG "")
+ if (MSVC)
+ execute_process(COMMAND "$ENV{VSINSTALLDIR}/VC/bin/cl.exe"
+ OUTPUT_QUIET
+ ERROR_VARIABLE MSVC_COMPAT_VERSION
+ )
+ string(REGEX REPLACE "^.*Compiler Version ([0-9.]+) for .*$" "\\1"
+ MSVC_COMPAT_VERSION "${MSVC_COMPAT_VERSION}")
+ if (MSVC_COMPAT_VERSION MATCHES "^[0-9].+$")
+ set(MSVC_VERSION_FLAG "-fms-compatibility-version=${MSVC_COMPAT_VERSION}")
+ # Add this flag into the host build if this is clang-cl.
+ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+ append("${MSVC_VERSION_FLAG}" CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
+ elseif (COMPILER_RT_TEST_COMPILER_ID MATCHES "Clang")
+ # Add this flag to test compiles to suppress clang's auto-detection
+ # logic.
+ append("${MSVC_VERSION_FLAG}" COMPILER_RT_TEST_COMPILER_CFLAGS)
+ endif()
+ endif()
+ endif()
+
+ # Generate the COMPILER_RT_SUPPORTED_ARCH list.
+ if(ANDROID)
+ # Examine compiler output to determine target architecture.
+ detect_target_arch()
+ set(COMPILER_RT_OS_SUFFIX "-android")
+ elseif(NOT APPLE) # Supported archs for Apple platforms are generated later
+ if(COMPILER_RT_DEFAULT_TARGET_ONLY)
+ add_default_target_arch(${COMPILER_RT_DEFAULT_TARGET_ARCH})
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "i[2-6]86|x86|amd64")
+ if(NOT MSVC)
+ test_target_arch(x86_64 "" "-m64")
+ test_target_arch(i386 __i386__ "-m32")
+ else()
+ if (CMAKE_SIZEOF_VOID_P EQUAL 4)
+ test_target_arch(i386 "" "")
+ else()
+ test_target_arch(x86_64 "" "")
+ endif()
+ endif()
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "loongarch64")
+ test_target_arch(loongarch64 "" "")
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "powerpc64le|ppc64le")
+ test_target_arch(powerpc64le "" "-m64")
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "powerpc")
+ test_target_arch(powerpc "" "-m32")
+ test_target_arch(powerpc64 "" "-m64")
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "s390x")
+ test_target_arch(s390x "" "")
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "sparc")
+ test_target_arch(sparc "" "-m32")
+ test_target_arch(sparcv9 "" "-m64")
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "mips")
+ # FIXME: Ideally, we would build the N32 library too.
+ if("${COMPILER_RT_MIPS_EL}" AND ("${COMPILER_RT_MIPS32R6}" OR "${COMPILER_RT_MIPS64R6}"))
+ test_target_arch(mipsel "" "-mips32r6" "-mabi=32" "-D_LARGEFILE_SOURCE=1" "-D_FILE_OFFSET_BITS=64")
+ test_target_arch(mips64el "" "-mips64r6" "-mabi=64")
+ elseif("${COMPILER_RT_MIPS_EL}")
+ test_target_arch(mipsel "" "-mips32r2" "-mabi=32" "-D_LARGEFILE_SOURCE=1" "-D_FILE_OFFSET_BITS=64")
+ test_target_arch(mips64el "" "-mips64r2" "-mabi=64")
+ elseif("${COMPILER_RT_MIPS32R6}" OR "${COMPILER_RT_MIPS64R6}")
+ test_target_arch(mips "" "-mips32r6" "-mabi=32" "-D_LARGEFILE_SOURCE=1" "-D_FILE_OFFSET_BITS=64")
+ test_target_arch(mips64 "" "-mips64r6" "-mabi=64")
+ else()
+ test_target_arch(mips "" "-mips32r2" "-mabi=32" "-D_LARGEFILE_SOURCE=1" "-D_FILE_OFFSET_BITS=64")
+ test_target_arch(mips64 "" "-mips64r2" "-mabi=64")
+ endif()
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "arm")
+ if(WIN32)
+ test_target_arch(arm "" "" "")
+ else()
+ test_target_arch(armv4t "" "-march=armv4t" "-mfloat-abi=soft")
+ test_target_arch(armv6m "" "-march=armv6m" "-mfloat-abi=soft")
+ test_target_arch(arm "" "-march=armv7-a" "-mfloat-abi=soft")
+ test_target_arch(armhf "" "-march=armv7-a" "-mfloat-abi=hard")
+ endif()
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "avr")
+ test_target_arch(avr "__AVR__" "--target=avr")
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "aarch32")
+ test_target_arch(aarch32 "" "-march=armv8-a")
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "aarch64")
+ test_target_arch(aarch64 "" "-march=armv8-a")
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "riscv32")
+ test_target_arch(riscv32 "" "")
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "riscv64")
+ test_target_arch(riscv64 "" "")
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "wasm32")
+ test_target_arch(wasm32 "" "--target=wasm32-unknown-unknown")
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "wasm64")
+ test_target_arch(wasm64 "" "--target=wasm64-unknown-unknown")
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "ve")
+ test_target_arch(ve "__ve__" "--target=ve-unknown-none")
+ endif()
+ set(COMPILER_RT_OS_SUFFIX "")
+ endif()
+endmacro()
Index: create-16.0.2-compiler-rt-mips-patch/create.patch.sh
===================================================================
--- create-16.0.2-compiler-rt-mips-patch/create.patch.sh (nonexistent)
+++ create-16.0.2-compiler-rt-mips-patch/create.patch.sh (revision 40)
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+VERSION=16.0.2
+
+tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
+mv llvm-$VERSION llvm-$VERSION-orig
+
+cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
+
+diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-compiler-rt-mips.patch
+
+mv llvm-$VERSION-compiler-rt-mips.patch ../patches
+
+rm -rf ./llvm-$VERSION
+rm -rf ./llvm-$VERSION-orig
Property changes on: create-16.0.2-compiler-rt-mips-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: create-16.0.2-compiler-rt-mips-patch/file.list
===================================================================
--- create-16.0.2-compiler-rt-mips-patch/file.list (nonexistent)
+++ create-16.0.2-compiler-rt-mips-patch/file.list (revision 40)
@@ -0,0 +1 @@
+llvm-16.0.2/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
Index: create-16.0.2-compiler-rt-mips-patch/llvm-16.0.2-new/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
===================================================================
--- create-16.0.2-compiler-rt-mips-patch/llvm-16.0.2-new/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h (nonexistent)
+++ create-16.0.2-compiler-rt-mips-patch/llvm-16.0.2-new/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h (revision 40)
@@ -0,0 +1,1509 @@
+//===-- sanitizer_platform_limits_posix.h ---------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// This file is a part of Sanitizer common code.
+//
+// Sizes and layouts of platform-specific POSIX data structures.
+//===----------------------------------------------------------------------===//
+
+#ifndef SANITIZER_PLATFORM_LIMITS_POSIX_H
+#define SANITIZER_PLATFORM_LIMITS_POSIX_H
+
+#if SANITIZER_LINUX || SANITIZER_APPLE
+
+#include "sanitizer_internal_defs.h"
+#include "sanitizer_platform.h"
+
+#if SANITIZER_APPLE
+#include <sys/cdefs.h>
+#if !__DARWIN_ONLY_64_BIT_INO_T
+#define SANITIZER_HAS_STAT64 1
+#define SANITIZER_HAS_STATFS64 1
+#else
+#define SANITIZER_HAS_STAT64 0
+#define SANITIZER_HAS_STATFS64 0
+#endif
+#elif SANITIZER_GLIBC || SANITIZER_ANDROID
+#define SANITIZER_HAS_STAT64 1
+#define SANITIZER_HAS_STATFS64 1
+#endif
+
+#if defined(__sparc__)
+// FIXME: This can't be included from tsan which does not support sparc yet.
+#include "sanitizer_glibc_version.h"
+#endif
+
+# define GET_LINK_MAP_BY_DLOPEN_HANDLE(handle) ((link_map*)(handle))
+
+namespace __sanitizer {
+extern unsigned struct_utsname_sz;
+extern unsigned struct_stat_sz;
+#if SANITIZER_HAS_STAT64
+extern unsigned struct_stat64_sz;
+#endif
+extern unsigned struct_rusage_sz;
+extern unsigned siginfo_t_sz;
+extern unsigned struct_itimerval_sz;
+extern unsigned pthread_t_sz;
+extern unsigned pthread_mutex_t_sz;
+extern unsigned pthread_cond_t_sz;
+extern unsigned pid_t_sz;
+extern unsigned timeval_sz;
+extern unsigned uid_t_sz;
+extern unsigned gid_t_sz;
+extern unsigned mbstate_t_sz;
+extern unsigned struct_timezone_sz;
+extern unsigned struct_tms_sz;
+extern unsigned struct_itimerspec_sz;
+extern unsigned struct_sigevent_sz;
+extern unsigned struct_stack_t_sz;
+extern unsigned struct_sched_param_sz;
+#if SANITIZER_HAS_STATFS64
+extern unsigned struct_statfs64_sz;
+#endif
+extern unsigned struct_regex_sz;
+extern unsigned struct_regmatch_sz;
+
+#if !SANITIZER_ANDROID
+extern unsigned struct_fstab_sz;
+extern unsigned struct_statfs_sz;
+extern unsigned struct_sockaddr_sz;
+unsigned ucontext_t_sz(void *uctx);
+# endif // !SANITIZER_ANDROID
+
+# if SANITIZER_LINUX
+
+# if defined(__x86_64__)
+const unsigned struct_kernel_stat_sz = 144;
+const unsigned struct_kernel_stat64_sz = 0;
+#elif defined(__i386__)
+const unsigned struct_kernel_stat_sz = 64;
+const unsigned struct_kernel_stat64_sz = 96;
+#elif defined(__arm__)
+const unsigned struct_kernel_stat_sz = 64;
+const unsigned struct_kernel_stat64_sz = 104;
+#elif defined(__aarch64__)
+const unsigned struct_kernel_stat_sz = 128;
+const unsigned struct_kernel_stat64_sz = 104;
+#elif defined(__powerpc__) && !defined(__powerpc64__)
+const unsigned struct_kernel_stat_sz = 72;
+const unsigned struct_kernel_stat64_sz = 104;
+#elif defined(__powerpc64__)
+const unsigned struct_kernel_stat_sz = 144;
+const unsigned struct_kernel_stat64_sz = 104;
+#elif defined(__mips__)
+const unsigned struct_kernel_stat_sz =
+ SANITIZER_ANDROID
+ ? FIRST_32_SECOND_64(104, 128)
+ : FIRST_32_SECOND_64((_MIPS_SIM == _ABIO32) ? 160 : 144, 216);
+const unsigned struct_kernel_stat64_sz = 104;
+#elif defined(__s390__) && !defined(__s390x__)
+const unsigned struct_kernel_stat_sz = 64;
+const unsigned struct_kernel_stat64_sz = 104;
+#elif defined(__s390x__)
+const unsigned struct_kernel_stat_sz = 144;
+const unsigned struct_kernel_stat64_sz = 0;
+#elif defined(__sparc__) && defined(__arch64__)
+const unsigned struct___old_kernel_stat_sz = 0;
+const unsigned struct_kernel_stat_sz = 104;
+const unsigned struct_kernel_stat64_sz = 144;
+#elif defined(__sparc__) && !defined(__arch64__)
+const unsigned struct___old_kernel_stat_sz = 0;
+const unsigned struct_kernel_stat_sz = 64;
+const unsigned struct_kernel_stat64_sz = 104;
+#elif SANITIZER_RISCV64
+const unsigned struct_kernel_stat_sz = 128;
+const unsigned struct_kernel_stat64_sz = 0; // RISCV64 does not use stat64
+# elif defined(__hexagon__)
+const unsigned struct_kernel_stat_sz = 128;
+const unsigned struct_kernel_stat64_sz = 0;
+# elif defined(__loongarch__)
+const unsigned struct_kernel_stat_sz = 128;
+const unsigned struct_kernel_stat64_sz = 0;
+# endif
+struct __sanitizer_perf_event_attr {
+ unsigned type;
+ unsigned size;
+ // More fields that vary with the kernel version.
+};
+
+extern unsigned struct_epoll_event_sz;
+extern unsigned struct_sysinfo_sz;
+extern unsigned __user_cap_header_struct_sz;
+extern unsigned __user_cap_data_struct_sz;
+extern unsigned struct_new_utsname_sz;
+extern unsigned struct_old_utsname_sz;
+extern unsigned struct_oldold_utsname_sz;
+
+const unsigned struct_kexec_segment_sz = 4 * sizeof(unsigned long);
+#endif // SANITIZER_LINUX
+
+#if SANITIZER_LINUX
+
+#if defined(__powerpc64__) || defined(__s390__) || defined(__loongarch__)
+const unsigned struct___old_kernel_stat_sz = 0;
+#elif !defined(__sparc__)
+const unsigned struct___old_kernel_stat_sz = 32;
+#endif
+
+extern unsigned struct_rlimit_sz;
+extern unsigned struct_utimbuf_sz;
+extern unsigned struct_timespec_sz;
+
+struct __sanitizer_iocb {
+ u64 aio_data;
+ u32 aio_key_or_aio_reserved1; // Simply crazy.
+ u32 aio_reserved1_or_aio_key; // Luckily, we don't need these.
+ u16 aio_lio_opcode;
+ s16 aio_reqprio;
+ u32 aio_fildes;
+ u64 aio_buf;
+ u64 aio_nbytes;
+ s64 aio_offset;
+ u64 aio_reserved2;
+ u64 aio_reserved3;
+};
+
+struct __sanitizer_io_event {
+ u64 data;
+ u64 obj;
+ u64 res;
+ u64 res2;
+};
+
+const unsigned iocb_cmd_pread = 0;
+const unsigned iocb_cmd_pwrite = 1;
+const unsigned iocb_cmd_preadv = 7;
+const unsigned iocb_cmd_pwritev = 8;
+
+struct __sanitizer___sysctl_args {
+ int *name;
+ int nlen;
+ void *oldval;
+ uptr *oldlenp;
+ void *newval;
+ uptr newlen;
+ unsigned long ___unused[4];
+};
+
+const unsigned old_sigset_t_sz = sizeof(unsigned long);
+
+struct __sanitizer_sem_t {
+#if SANITIZER_ANDROID && defined(_LP64)
+ int data[4];
+#elif SANITIZER_ANDROID && !defined(_LP64)
+ int data;
+#elif SANITIZER_LINUX
+ uptr data[4];
+#endif
+};
+#endif // SANITIZER_LINUX
+
+#if SANITIZER_ANDROID
+struct __sanitizer_struct_mallinfo {
+ uptr v[10];
+};
+#endif
+
+#if SANITIZER_LINUX && !SANITIZER_ANDROID
+struct __sanitizer_struct_mallinfo {
+ int v[10];
+};
+
+extern unsigned struct_ustat_sz;
+extern unsigned struct_rlimit64_sz;
+extern unsigned struct_statvfs64_sz;
+
+struct __sanitizer_ipc_perm {
+ int __key;
+ int uid;
+ int gid;
+ int cuid;
+ int cgid;
+#ifdef __powerpc__
+ unsigned mode;
+ unsigned __seq;
+ u64 __unused1;
+ u64 __unused2;
+#elif defined(__sparc__)
+ unsigned mode;
+ unsigned short __pad2;
+ unsigned short __seq;
+ unsigned long long __unused1;
+ unsigned long long __unused2;
+#else
+ unsigned int mode;
+ unsigned short __seq;
+ unsigned short __pad2;
+#if defined(__x86_64__) && !defined(_LP64)
+ u64 __unused1;
+ u64 __unused2;
+#else
+ unsigned long __unused1;
+ unsigned long __unused2;
+#endif
+#endif
+};
+
+struct __sanitizer_shmid_ds {
+ __sanitizer_ipc_perm shm_perm;
+#if defined(__sparc__)
+#if !defined(__arch64__)
+ u32 __pad1;
+#endif
+ long shm_atime;
+#if !defined(__arch64__)
+ u32 __pad2;
+#endif
+ long shm_dtime;
+#if !defined(__arch64__)
+ u32 __pad3;
+#endif
+ long shm_ctime;
+ uptr shm_segsz;
+ int shm_cpid;
+ int shm_lpid;
+ unsigned long shm_nattch;
+ unsigned long __glibc_reserved1;
+ unsigned long __glibc_reserved2;
+#else
+#ifndef __powerpc__
+ uptr shm_segsz;
+#elif !defined(__powerpc64__)
+ uptr __unused0;
+#endif
+#if defined(__x86_64__) && !defined(_LP64)
+ u64 shm_atime;
+ u64 shm_dtime;
+ u64 shm_ctime;
+#else
+ uptr shm_atime;
+#if !defined(_LP64) && !defined(__mips__)
+ uptr __unused1;
+#endif
+ uptr shm_dtime;
+#if !defined(_LP64) && !defined(__mips__)
+ uptr __unused2;
+#endif
+ uptr shm_ctime;
+#if !defined(_LP64) && !defined(__mips__)
+ uptr __unused3;
+#endif
+#endif
+#ifdef __powerpc__
+ uptr shm_segsz;
+#endif
+ int shm_cpid;
+ int shm_lpid;
+#if defined(__x86_64__) && !defined(_LP64)
+ u64 shm_nattch;
+ u64 __unused4;
+ u64 __unused5;
+#else
+ uptr shm_nattch;
+ uptr __unused4;
+ uptr __unused5;
+#endif
+#endif
+};
+#endif
+
+#if SANITIZER_LINUX && !SANITIZER_ANDROID
+extern unsigned struct_msqid_ds_sz;
+extern unsigned struct_mq_attr_sz;
+extern unsigned struct_timex_sz;
+extern unsigned struct_statvfs_sz;
+extern unsigned struct_crypt_data_sz;
+#endif // SANITIZER_LINUX && !SANITIZER_ANDROID
+
+struct __sanitizer_iovec {
+ void *iov_base;
+ uptr iov_len;
+};
+
+#if !SANITIZER_ANDROID
+struct __sanitizer_ifaddrs {
+ struct __sanitizer_ifaddrs *ifa_next;
+ char *ifa_name;
+ unsigned int ifa_flags;
+ void *ifa_addr; // (struct sockaddr *)
+ void *ifa_netmask; // (struct sockaddr *)
+ // This is a union on Linux.
+# ifdef ifa_dstaddr
+# undef ifa_dstaddr
+# endif
+ void *ifa_dstaddr; // (struct sockaddr *)
+ void *ifa_data;
+};
+#endif // !SANITIZER_ANDROID
+
+#if SANITIZER_APPLE
+typedef unsigned long __sanitizer_pthread_key_t;
+#else
+typedef unsigned __sanitizer_pthread_key_t;
+#endif
+
+#if SANITIZER_LINUX && !SANITIZER_ANDROID
+
+struct __sanitizer_XDR {
+ int x_op;
+ void *x_ops;
+ uptr x_public;
+ uptr x_private;
+ uptr x_base;
+ unsigned x_handy;
+};
+
+const int __sanitizer_XDR_ENCODE = 0;
+const int __sanitizer_XDR_DECODE = 1;
+const int __sanitizer_XDR_FREE = 2;
+#endif
+
+struct __sanitizer_passwd {
+ char *pw_name;
+ char *pw_passwd;
+ int pw_uid;
+ int pw_gid;
+#if SANITIZER_APPLE
+ long pw_change;
+ char *pw_class;
+#endif
+#if !(SANITIZER_ANDROID && (SANITIZER_WORDSIZE == 32))
+ char *pw_gecos;
+#endif
+ char *pw_dir;
+ char *pw_shell;
+#if SANITIZER_APPLE
+ long pw_expire;
+#endif
+};
+
+struct __sanitizer_group {
+ char *gr_name;
+ char *gr_passwd;
+ int gr_gid;
+ char **gr_mem;
+};
+
+# if (SANITIZER_LINUX && !SANITIZER_GLIBC && !SANITIZER_ANDROID) || \
+ (defined(__x86_64__) && !defined(_LP64)) || defined(__hexagon__)
+typedef long long __sanitizer_time_t;
+#else
+typedef long __sanitizer_time_t;
+#endif
+
+typedef long __sanitizer_suseconds_t;
+
+struct __sanitizer_timeval {
+ __sanitizer_time_t tv_sec;
+ __sanitizer_suseconds_t tv_usec;
+};
+
+struct __sanitizer_itimerval {
+ struct __sanitizer_timeval it_interval;
+ struct __sanitizer_timeval it_value;
+};
+
+struct __sanitizer_timeb {
+ __sanitizer_time_t time;
+ unsigned short millitm;
+ short timezone;
+ short dstflag;
+};
+
+struct __sanitizer_ether_addr {
+ u8 octet[6];
+};
+
+struct __sanitizer_tm {
+ int tm_sec;
+ int tm_min;
+ int tm_hour;
+ int tm_mday;
+ int tm_mon;
+ int tm_year;
+ int tm_wday;
+ int tm_yday;
+ int tm_isdst;
+ long int tm_gmtoff;
+ const char *tm_zone;
+};
+
+#if SANITIZER_LINUX
+struct __sanitizer_mntent {
+ char *mnt_fsname;
+ char *mnt_dir;
+ char *mnt_type;
+ char *mnt_opts;
+ int mnt_freq;
+ int mnt_passno;
+};
+
+struct __sanitizer_file_handle {
+ unsigned int handle_bytes;
+ int handle_type;
+ unsigned char f_handle[1]; // variable sized
+};
+#endif
+
+#if SANITIZER_APPLE
+struct __sanitizer_msghdr {
+ void *msg_name;
+ unsigned msg_namelen;
+ struct __sanitizer_iovec *msg_iov;
+ unsigned msg_iovlen;
+ void *msg_control;
+ unsigned msg_controllen;
+ int msg_flags;
+};
+struct __sanitizer_cmsghdr {
+ unsigned cmsg_len;
+ int cmsg_level;
+ int cmsg_type;
+};
+#else
+// In POSIX, int msg_iovlen; socklen_t msg_controllen; socklen_t cmsg_len; but
+// many implementations don't conform to the standard.
+struct __sanitizer_msghdr {
+ void *msg_name;
+ unsigned msg_namelen;
+ struct __sanitizer_iovec *msg_iov;
+ uptr msg_iovlen;
+ void *msg_control;
+ uptr msg_controllen;
+ int msg_flags;
+};
+struct __sanitizer_cmsghdr {
+ uptr cmsg_len;
+ int cmsg_level;
+ int cmsg_type;
+};
+#endif
+
+#if SANITIZER_LINUX
+struct __sanitizer_mmsghdr {
+ __sanitizer_msghdr msg_hdr;
+ unsigned int msg_len;
+};
+#endif
+
+#if SANITIZER_APPLE
+struct __sanitizer_dirent {
+ unsigned long long d_ino;
+ unsigned long long d_seekoff;
+ unsigned short d_reclen;
+ // more fields that we don't care about
+};
+# elif (SANITIZER_LINUX && !SANITIZER_GLIBC) || defined(__x86_64__) || \
+ defined(__hexagon__)
+struct __sanitizer_dirent {
+ unsigned long long d_ino;
+ unsigned long long d_off;
+ unsigned short d_reclen;
+ // more fields that we don't care about
+};
+# else
+struct __sanitizer_dirent {
+ uptr d_ino;
+ uptr d_off;
+ unsigned short d_reclen;
+ // more fields that we don't care about
+};
+# endif
+
+# if SANITIZER_GLIBC
+struct __sanitizer_dirent64 {
+ unsigned long long d_ino;
+ unsigned long long d_off;
+ unsigned short d_reclen;
+ // more fields that we don't care about
+};
+#endif
+
+#if defined(__x86_64__) && !defined(_LP64)
+typedef long long __sanitizer_clock_t;
+#else
+typedef long __sanitizer_clock_t;
+#endif
+
+#if SANITIZER_LINUX
+typedef int __sanitizer_clockid_t;
+#endif
+
+#if SANITIZER_LINUX
+# if defined(_LP64) || defined(__x86_64__) || defined(__powerpc__) || \
+ defined(__mips__) || defined(__hexagon__)
+typedef unsigned __sanitizer___kernel_uid_t;
+typedef unsigned __sanitizer___kernel_gid_t;
+#else
+typedef unsigned short __sanitizer___kernel_uid_t;
+typedef unsigned short __sanitizer___kernel_gid_t;
+#endif
+#if defined(__x86_64__) && !defined(_LP64)
+typedef long long __sanitizer___kernel_off_t;
+#else
+typedef long __sanitizer___kernel_off_t;
+#endif
+
+#if defined(__powerpc__) || defined(__mips__)
+typedef unsigned int __sanitizer___kernel_old_uid_t;
+typedef unsigned int __sanitizer___kernel_old_gid_t;
+#else
+typedef unsigned short __sanitizer___kernel_old_uid_t;
+typedef unsigned short __sanitizer___kernel_old_gid_t;
+#endif
+
+typedef long long __sanitizer___kernel_loff_t;
+typedef struct {
+ unsigned long fds_bits[1024 / (8 * sizeof(long))];
+} __sanitizer___kernel_fd_set;
+#endif
+
+// This thing depends on the platform. We are only interested in the upper
+// limit. Verified with a compiler assert in .cpp.
+union __sanitizer_pthread_attr_t {
+ char size[128];
+ void *align;
+};
+
+#if SANITIZER_ANDROID
+# if SANITIZER_MIPS
+typedef unsigned long __sanitizer_sigset_t[16 / sizeof(unsigned long)];
+# else
+typedef unsigned long __sanitizer_sigset_t;
+# endif
+#elif SANITIZER_APPLE
+typedef unsigned __sanitizer_sigset_t;
+#elif SANITIZER_LINUX
+struct __sanitizer_sigset_t {
+ // The size is determined by looking at sizeof of real sigset_t on linux.
+ uptr val[128 / sizeof(uptr)];
+};
+#endif
+
+struct __sanitizer_siginfo_pad {
+ // Require uptr, because siginfo_t is always pointer-size aligned on Linux.
+ uptr pad[128 / sizeof(uptr)];
+};
+
+#if SANITIZER_LINUX
+# define SANITIZER_HAS_SIGINFO 1
+union __sanitizer_siginfo {
+ struct {
+ int si_signo;
+# if SANITIZER_MIPS
+ int si_code;
+ int si_errno;
+# else
+ int si_errno;
+ int si_code;
+# endif
+ };
+ __sanitizer_siginfo_pad pad;
+};
+#else
+# define SANITIZER_HAS_SIGINFO 0
+typedef __sanitizer_siginfo_pad __sanitizer_siginfo;
+#endif
+
+using __sanitizer_sighandler_ptr = void (*)(int sig);
+using __sanitizer_sigactionhandler_ptr = void (*)(int sig,
+ __sanitizer_siginfo *siginfo,
+ void *uctx);
+
+// Linux system headers define the 'sa_handler' and 'sa_sigaction' macros.
+#if SANITIZER_ANDROID && (SANITIZER_WORDSIZE == 64)
+struct __sanitizer_sigaction {
+ unsigned sa_flags;
+ union {
+ __sanitizer_sigactionhandler_ptr sigaction;
+ __sanitizer_sighandler_ptr handler;
+ };
+ __sanitizer_sigset_t sa_mask;
+ void (*sa_restorer)();
+};
+#elif SANITIZER_ANDROID && SANITIZER_MIPS32 // check this before WORDSIZE == 32
+struct __sanitizer_sigaction {
+ unsigned sa_flags;
+ union {
+ __sanitizer_sigactionhandler_ptr sigaction;
+ __sanitizer_sighandler_ptr handler;
+ };
+ __sanitizer_sigset_t sa_mask;
+};
+#elif SANITIZER_ANDROID && (SANITIZER_WORDSIZE == 32)
+struct __sanitizer_sigaction {
+ union {
+ __sanitizer_sigactionhandler_ptr sigaction;
+ __sanitizer_sighandler_ptr handler;
+ };
+ __sanitizer_sigset_t sa_mask;
+ uptr sa_flags;
+ void (*sa_restorer)();
+};
+#else // !SANITIZER_ANDROID
+struct __sanitizer_sigaction {
+#if defined(__mips__) && !SANITIZER_FREEBSD
+ unsigned int sa_flags;
+#endif
+ union {
+ __sanitizer_sigactionhandler_ptr sigaction;
+ __sanitizer_sighandler_ptr handler;
+ };
+#if SANITIZER_FREEBSD
+ int sa_flags;
+ __sanitizer_sigset_t sa_mask;
+#else
+#if defined(__s390x__)
+ int sa_resv;
+#else
+ __sanitizer_sigset_t sa_mask;
+#endif
+#ifndef __mips__
+#if defined(__sparc__)
+#if __GLIBC_PREREQ (2, 20)
+ // On sparc glibc 2.19 and earlier sa_flags was unsigned long.
+#if defined(__arch64__)
+ // To maintain ABI compatibility on sparc64 when switching to an int,
+ // __glibc_reserved0 was added.
+ int __glibc_reserved0;
+#endif
+ int sa_flags;
+#else
+ unsigned long sa_flags;
+#endif
+#else
+ int sa_flags;
+#endif
+#endif
+#endif
+#if SANITIZER_LINUX
+ void (*sa_restorer)();
+#endif
+#if defined(__mips__) && (SANITIZER_WORDSIZE == 32)
+ int sa_resv[1];
+#endif
+#if defined(__s390x__)
+ __sanitizer_sigset_t sa_mask;
+#endif
+};
+#endif // !SANITIZER_ANDROID
+
+#if defined(__mips__)
+#define __SANITIZER_KERNEL_NSIG 128
+#else
+#define __SANITIZER_KERNEL_NSIG 64
+#endif
+
+struct __sanitizer_kernel_sigset_t {
+ uptr sig[__SANITIZER_KERNEL_NSIG / (sizeof(uptr) * 8)];
+};
+
+// Linux system headers define the 'sa_handler' and 'sa_sigaction' macros.
+#if SANITIZER_MIPS
+struct __sanitizer_kernel_sigaction_t {
+ unsigned int sa_flags;
+ union {
+ void (*handler)(int signo);
+ void (*sigaction)(int signo, __sanitizer_siginfo *info, void *ctx);
+ };
+ __sanitizer_kernel_sigset_t sa_mask;
+ void (*sa_restorer)(void);
+};
+#else
+struct __sanitizer_kernel_sigaction_t {
+ union {
+ void (*handler)(int signo);
+ void (*sigaction)(int signo, __sanitizer_siginfo *info, void *ctx);
+ };
+ unsigned long sa_flags;
+ void (*sa_restorer)(void);
+ __sanitizer_kernel_sigset_t sa_mask;
+};
+#endif
+
+extern const uptr sig_ign;
+extern const uptr sig_dfl;
+extern const uptr sig_err;
+extern const uptr sa_siginfo;
+
+#if SANITIZER_LINUX
+extern int e_tabsz;
+#endif
+
+extern int af_inet;
+extern int af_inet6;
+uptr __sanitizer_in_addr_sz(int af);
+
+#if SANITIZER_LINUX
+struct __sanitizer_dl_phdr_info {
+ uptr dlpi_addr;
+ const char *dlpi_name;
+ const void *dlpi_phdr;
+ short dlpi_phnum;
+};
+
+extern unsigned struct_ElfW_Phdr_sz;
+#endif
+
+struct __sanitizer_protoent {
+ char *p_name;
+ char **p_aliases;
+ int p_proto;
+};
+
+struct __sanitizer_netent {
+ char *n_name;
+ char **n_aliases;
+ int n_addrtype;
+ u32 n_net;
+};
+
+struct __sanitizer_addrinfo {
+ int ai_flags;
+ int ai_family;
+ int ai_socktype;
+ int ai_protocol;
+#if SANITIZER_ANDROID || SANITIZER_APPLE
+ unsigned ai_addrlen;
+ char *ai_canonname;
+ void *ai_addr;
+#else // LINUX
+ unsigned ai_addrlen;
+ void *ai_addr;
+ char *ai_canonname;
+#endif
+ struct __sanitizer_addrinfo *ai_next;
+};
+
+struct __sanitizer_hostent {
+ char *h_name;
+ char **h_aliases;
+ int h_addrtype;
+ int h_length;
+ char **h_addr_list;
+};
+
+struct __sanitizer_pollfd {
+ int fd;
+ short events;
+ short revents;
+};
+
+#if SANITIZER_ANDROID || SANITIZER_APPLE
+typedef unsigned __sanitizer_nfds_t;
+#else
+typedef unsigned long __sanitizer_nfds_t;
+#endif
+
+#if !SANITIZER_ANDROID
+# if SANITIZER_LINUX
+struct __sanitizer_glob_t {
+ uptr gl_pathc;
+ char **gl_pathv;
+ uptr gl_offs;
+ int gl_flags;
+
+ void (*gl_closedir)(void *dirp);
+ void *(*gl_readdir)(void *dirp);
+ void *(*gl_opendir)(const char *);
+ int (*gl_lstat)(const char *, void *);
+ int (*gl_stat)(const char *, void *);
+};
+# endif // SANITIZER_LINUX
+
+# if SANITIZER_LINUX
+extern int glob_nomatch;
+extern int glob_altdirfunc;
+# endif
+#endif // !SANITIZER_ANDROID
+
+extern unsigned path_max;
+
+# if !SANITIZER_ANDROID
+extern const int wordexp_wrde_dooffs;
+# endif // !SANITIZER_ANDROID
+
+struct __sanitizer_wordexp_t {
+ uptr we_wordc;
+ char **we_wordv;
+ uptr we_offs;
+};
+
+#if SANITIZER_LINUX && !SANITIZER_ANDROID
+struct __sanitizer_FILE {
+ int _flags;
+ char *_IO_read_ptr;
+ char *_IO_read_end;
+ char *_IO_read_base;
+ char *_IO_write_base;
+ char *_IO_write_ptr;
+ char *_IO_write_end;
+ char *_IO_buf_base;
+ char *_IO_buf_end;
+ char *_IO_save_base;
+ char *_IO_backup_base;
+ char *_IO_save_end;
+ void *_markers;
+ __sanitizer_FILE *_chain;
+ int _fileno;
+};
+# define SANITIZER_HAS_STRUCT_FILE 1
+#else
+typedef void __sanitizer_FILE;
+# define SANITIZER_HAS_STRUCT_FILE 0
+#endif
+
+#if SANITIZER_LINUX && !SANITIZER_ANDROID && \
+ (defined(__i386) || defined(__x86_64) || defined(__mips64) || \
+ defined(__powerpc64__) || defined(__aarch64__) || defined(__arm__) || \
+ defined(__s390__) || defined(__loongarch__) || SANITIZER_RISCV64)
+extern unsigned struct_user_regs_struct_sz;
+extern unsigned struct_user_fpregs_struct_sz;
+extern unsigned struct_user_fpxregs_struct_sz;
+extern unsigned struct_user_vfpregs_struct_sz;
+
+extern int ptrace_peektext;
+extern int ptrace_peekdata;
+extern int ptrace_peekuser;
+extern int ptrace_getregs;
+extern int ptrace_setregs;
+extern int ptrace_getfpregs;
+extern int ptrace_setfpregs;
+extern int ptrace_getfpxregs;
+extern int ptrace_setfpxregs;
+extern int ptrace_getvfpregs;
+extern int ptrace_setvfpregs;
+extern int ptrace_getsiginfo;
+extern int ptrace_setsiginfo;
+extern int ptrace_getregset;
+extern int ptrace_setregset;
+extern int ptrace_geteventmsg;
+#endif
+
+#if SANITIZER_LINUX && !SANITIZER_ANDROID
+extern unsigned struct_shminfo_sz;
+extern unsigned struct_shm_info_sz;
+extern int shmctl_ipc_stat;
+extern int shmctl_ipc_info;
+extern int shmctl_shm_info;
+extern int shmctl_shm_stat;
+#endif
+
+#if !SANITIZER_APPLE && !SANITIZER_FREEBSD
+extern unsigned struct_utmp_sz;
+#endif
+#if !SANITIZER_ANDROID
+extern unsigned struct_utmpx_sz;
+#endif
+
+extern int map_fixed;
+
+// ioctl arguments
+struct __sanitizer_ifconf {
+ int ifc_len;
+ union {
+ void *ifcu_req;
+ } ifc_ifcu;
+#if SANITIZER_APPLE
+} __attribute__((packed));
+#else
+};
+#endif
+
+#if SANITIZER_LINUX && !SANITIZER_ANDROID
+struct __sanitizer__obstack_chunk {
+ char *limit;
+ struct __sanitizer__obstack_chunk *prev;
+};
+
+struct __sanitizer_obstack {
+ long chunk_size;
+ struct __sanitizer__obstack_chunk *chunk;
+ char *object_base;
+ char *next_free;
+ uptr more_fields[7];
+};
+
+typedef uptr (*__sanitizer_cookie_io_read)(void *cookie, char *buf, uptr size);
+typedef uptr (*__sanitizer_cookie_io_write)(void *cookie, const char *buf,
+ uptr size);
+typedef int (*__sanitizer_cookie_io_seek)(void *cookie, u64 *offset,
+ int whence);
+typedef int (*__sanitizer_cookie_io_close)(void *cookie);
+
+struct __sanitizer_cookie_io_functions_t {
+ __sanitizer_cookie_io_read read;
+ __sanitizer_cookie_io_write write;
+ __sanitizer_cookie_io_seek seek;
+ __sanitizer_cookie_io_close close;
+};
+#endif
+
+#define IOC_NRBITS 8
+#define IOC_TYPEBITS 8
+#if defined(__powerpc__) || defined(__powerpc64__) || defined(__mips__) || \
+ defined(__sparc__)
+#define IOC_SIZEBITS 13
+#define IOC_DIRBITS 3
+#define IOC_NONE 1U
+#define IOC_WRITE 4U
+#define IOC_READ 2U
+#else
+#define IOC_SIZEBITS 14
+#define IOC_DIRBITS 2
+#define IOC_NONE 0U
+#define IOC_WRITE 1U
+#define IOC_READ 2U
+#endif
+#define IOC_NRMASK ((1 << IOC_NRBITS) - 1)
+#define IOC_TYPEMASK ((1 << IOC_TYPEBITS) - 1)
+#define IOC_SIZEMASK ((1 << IOC_SIZEBITS) - 1)
+#if defined(IOC_DIRMASK)
+#undef IOC_DIRMASK
+#endif
+#define IOC_DIRMASK ((1 << IOC_DIRBITS) - 1)
+#define IOC_NRSHIFT 0
+#define IOC_TYPESHIFT (IOC_NRSHIFT + IOC_NRBITS)
+#define IOC_SIZESHIFT (IOC_TYPESHIFT + IOC_TYPEBITS)
+#define IOC_DIRSHIFT (IOC_SIZESHIFT + IOC_SIZEBITS)
+#define EVIOC_EV_MAX 0x1f
+#define EVIOC_ABS_MAX 0x3f
+
+#define IOC_DIR(nr) (((nr) >> IOC_DIRSHIFT) & IOC_DIRMASK)
+#define IOC_TYPE(nr) (((nr) >> IOC_TYPESHIFT) & IOC_TYPEMASK)
+#define IOC_NR(nr) (((nr) >> IOC_NRSHIFT) & IOC_NRMASK)
+
+#if defined(__sparc__)
+// In sparc the 14 bits SIZE field overlaps with the
+// least significant bit of DIR, so either IOC_READ or
+// IOC_WRITE shall be 1 in order to get a non-zero SIZE.
+#define IOC_SIZE(nr) \
+ ((((((nr) >> 29) & 0x7) & (4U | 2U)) == 0) ? 0 : (((nr) >> 16) & 0x3fff))
+#else
+#define IOC_SIZE(nr) (((nr) >> IOC_SIZESHIFT) & IOC_SIZEMASK)
+#endif
+
+extern unsigned struct_ifreq_sz;
+extern unsigned struct_termios_sz;
+extern unsigned struct_winsize_sz;
+
+#if SANITIZER_LINUX
+extern unsigned struct_arpreq_sz;
+extern unsigned struct_cdrom_msf_sz;
+extern unsigned struct_cdrom_multisession_sz;
+extern unsigned struct_cdrom_read_audio_sz;
+extern unsigned struct_cdrom_subchnl_sz;
+extern unsigned struct_cdrom_ti_sz;
+extern unsigned struct_cdrom_tocentry_sz;
+extern unsigned struct_cdrom_tochdr_sz;
+extern unsigned struct_cdrom_volctrl_sz;
+extern unsigned struct_ff_effect_sz;
+extern unsigned struct_floppy_drive_params_sz;
+extern unsigned struct_floppy_drive_struct_sz;
+extern unsigned struct_floppy_fdc_state_sz;
+extern unsigned struct_floppy_max_errors_sz;
+extern unsigned struct_floppy_raw_cmd_sz;
+extern unsigned struct_floppy_struct_sz;
+extern unsigned struct_floppy_write_errors_sz;
+extern unsigned struct_format_descr_sz;
+extern unsigned struct_hd_driveid_sz;
+extern unsigned struct_hd_geometry_sz;
+extern unsigned struct_input_absinfo_sz;
+extern unsigned struct_input_id_sz;
+extern unsigned struct_mtpos_sz;
+extern unsigned struct_termio_sz;
+extern unsigned struct_vt_consize_sz;
+extern unsigned struct_vt_sizes_sz;
+extern unsigned struct_vt_stat_sz;
+#endif // SANITIZER_LINUX
+
+#if SANITIZER_LINUX
+extern unsigned struct_copr_buffer_sz;
+extern unsigned struct_copr_debug_buf_sz;
+extern unsigned struct_copr_msg_sz;
+extern unsigned struct_midi_info_sz;
+extern unsigned struct_mtget_sz;
+extern unsigned struct_mtop_sz;
+extern unsigned struct_rtentry_sz;
+extern unsigned struct_sbi_instrument_sz;
+extern unsigned struct_seq_event_rec_sz;
+extern unsigned struct_synth_info_sz;
+extern unsigned struct_vt_mode_sz;
+#endif // SANITIZER_LINUX
+
+#if SANITIZER_LINUX && !SANITIZER_ANDROID
+extern unsigned struct_ax25_parms_struct_sz;
+extern unsigned struct_input_keymap_entry_sz;
+extern unsigned struct_ipx_config_data_sz;
+extern unsigned struct_kbdiacrs_sz;
+extern unsigned struct_kbentry_sz;
+extern unsigned struct_kbkeycode_sz;
+extern unsigned struct_kbsentry_sz;
+extern unsigned struct_mtconfiginfo_sz;
+extern unsigned struct_nr_parms_struct_sz;
+extern unsigned struct_scc_modem_sz;
+extern unsigned struct_scc_stat_sz;
+extern unsigned struct_serial_multiport_struct_sz;
+extern unsigned struct_serial_struct_sz;
+extern unsigned struct_sockaddr_ax25_sz;
+extern unsigned struct_unimapdesc_sz;
+extern unsigned struct_unimapinit_sz;
+#endif // SANITIZER_LINUX && !SANITIZER_ANDROID
+
+extern const unsigned long __sanitizer_bufsiz;
+
+#if SANITIZER_LINUX && !SANITIZER_ANDROID
+extern unsigned struct_audio_buf_info_sz;
+extern unsigned struct_ppp_stats_sz;
+#endif // (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID
+
+#if !SANITIZER_ANDROID && !SANITIZER_APPLE
+extern unsigned struct_sioc_sg_req_sz;
+extern unsigned struct_sioc_vif_req_sz;
+#endif
+
+// ioctl request identifiers
+
+// A special value to mark ioctls that are not present on the target platform,
+// when it can not be determined without including any system headers.
+extern const unsigned IOCTL_NOT_PRESENT;
+
+extern unsigned IOCTL_FIOASYNC;
+extern unsigned IOCTL_FIOCLEX;
+extern unsigned IOCTL_FIOGETOWN;
+extern unsigned IOCTL_FIONBIO;
+extern unsigned IOCTL_FIONCLEX;
+extern unsigned IOCTL_FIOSETOWN;
+extern unsigned IOCTL_SIOCADDMULTI;
+extern unsigned IOCTL_SIOCATMARK;
+extern unsigned IOCTL_SIOCDELMULTI;
+extern unsigned IOCTL_SIOCGIFADDR;
+extern unsigned IOCTL_SIOCGIFBRDADDR;
+extern unsigned IOCTL_SIOCGIFCONF;
+extern unsigned IOCTL_SIOCGIFDSTADDR;
+extern unsigned IOCTL_SIOCGIFFLAGS;
+extern unsigned IOCTL_SIOCGIFMETRIC;
+extern unsigned IOCTL_SIOCGIFMTU;
+extern unsigned IOCTL_SIOCGIFNETMASK;
+extern unsigned IOCTL_SIOCGPGRP;
+extern unsigned IOCTL_SIOCSIFADDR;
+extern unsigned IOCTL_SIOCSIFBRDADDR;
+extern unsigned IOCTL_SIOCSIFDSTADDR;
+extern unsigned IOCTL_SIOCSIFFLAGS;
+extern unsigned IOCTL_SIOCSIFMETRIC;
+extern unsigned IOCTL_SIOCSIFMTU;
+extern unsigned IOCTL_SIOCSIFNETMASK;
+extern unsigned IOCTL_SIOCSPGRP;
+extern unsigned IOCTL_TIOCCONS;
+extern unsigned IOCTL_TIOCEXCL;
+extern unsigned IOCTL_TIOCGETD;
+extern unsigned IOCTL_TIOCGPGRP;
+extern unsigned IOCTL_TIOCGWINSZ;
+extern unsigned IOCTL_TIOCMBIC;
+extern unsigned IOCTL_TIOCMBIS;
+extern unsigned IOCTL_TIOCMGET;
+extern unsigned IOCTL_TIOCMSET;
+extern unsigned IOCTL_TIOCNOTTY;
+extern unsigned IOCTL_TIOCNXCL;
+extern unsigned IOCTL_TIOCOUTQ;
+extern unsigned IOCTL_TIOCPKT;
+extern unsigned IOCTL_TIOCSCTTY;
+extern unsigned IOCTL_TIOCSETD;
+extern unsigned IOCTL_TIOCSPGRP;
+extern unsigned IOCTL_TIOCSTI;
+extern unsigned IOCTL_TIOCSWINSZ;
+#if SANITIZER_LINUX && !SANITIZER_ANDROID
+extern unsigned IOCTL_SIOCGETSGCNT;
+extern unsigned IOCTL_SIOCGETVIFCNT;
+#endif
+#if SANITIZER_LINUX
+extern unsigned IOCTL_EVIOCGABS;
+extern unsigned IOCTL_EVIOCGBIT;
+extern unsigned IOCTL_EVIOCGEFFECTS;
+extern unsigned IOCTL_EVIOCGID;
+extern unsigned IOCTL_EVIOCGKEY;
+extern unsigned IOCTL_EVIOCGKEYCODE;
+extern unsigned IOCTL_EVIOCGLED;
+extern unsigned IOCTL_EVIOCGNAME;
+extern unsigned IOCTL_EVIOCGPHYS;
+extern unsigned IOCTL_EVIOCGRAB;
+extern unsigned IOCTL_EVIOCGREP;
+extern unsigned IOCTL_EVIOCGSND;
+extern unsigned IOCTL_EVIOCGSW;
+extern unsigned IOCTL_EVIOCGUNIQ;
+extern unsigned IOCTL_EVIOCGVERSION;
+extern unsigned IOCTL_EVIOCRMFF;
+extern unsigned IOCTL_EVIOCSABS;
+extern unsigned IOCTL_EVIOCSFF;
+extern unsigned IOCTL_EVIOCSKEYCODE;
+extern unsigned IOCTL_EVIOCSREP;
+extern unsigned IOCTL_BLKFLSBUF;
+extern unsigned IOCTL_BLKGETSIZE;
+extern unsigned IOCTL_BLKRAGET;
+extern unsigned IOCTL_BLKRASET;
+extern unsigned IOCTL_BLKROGET;
+extern unsigned IOCTL_BLKROSET;
+extern unsigned IOCTL_BLKRRPART;
+extern unsigned IOCTL_BLKFRASET;
+extern unsigned IOCTL_BLKFRAGET;
+extern unsigned IOCTL_BLKSECTSET;
+extern unsigned IOCTL_BLKSECTGET;
+extern unsigned IOCTL_BLKSSZGET;
+extern unsigned IOCTL_BLKBSZGET;
+extern unsigned IOCTL_BLKBSZSET;
+extern unsigned IOCTL_BLKGETSIZE64;
+extern unsigned IOCTL_CDROMAUDIOBUFSIZ;
+extern unsigned IOCTL_CDROMEJECT;
+extern unsigned IOCTL_CDROMEJECT_SW;
+extern unsigned IOCTL_CDROMMULTISESSION;
+extern unsigned IOCTL_CDROMPAUSE;
+extern unsigned IOCTL_CDROMPLAYMSF;
+extern unsigned IOCTL_CDROMPLAYTRKIND;
+extern unsigned IOCTL_CDROMREADAUDIO;
+extern unsigned IOCTL_CDROMREADCOOKED;
+extern unsigned IOCTL_CDROMREADMODE1;
+extern unsigned IOCTL_CDROMREADMODE2;
+extern unsigned IOCTL_CDROMREADRAW;
+extern unsigned IOCTL_CDROMREADTOCENTRY;
+extern unsigned IOCTL_CDROMREADTOCHDR;
+extern unsigned IOCTL_CDROMRESET;
+extern unsigned IOCTL_CDROMRESUME;
+extern unsigned IOCTL_CDROMSEEK;
+extern unsigned IOCTL_CDROMSTART;
+extern unsigned IOCTL_CDROMSTOP;
+extern unsigned IOCTL_CDROMSUBCHNL;
+extern unsigned IOCTL_CDROMVOLCTRL;
+extern unsigned IOCTL_CDROMVOLREAD;
+extern unsigned IOCTL_CDROM_GET_UPC;
+extern unsigned IOCTL_FDCLRPRM;
+extern unsigned IOCTL_FDDEFPRM;
+extern unsigned IOCTL_FDFLUSH;
+extern unsigned IOCTL_FDFMTBEG;
+extern unsigned IOCTL_FDFMTEND;
+extern unsigned IOCTL_FDFMTTRK;
+extern unsigned IOCTL_FDGETDRVPRM;
+extern unsigned IOCTL_FDGETDRVSTAT;
+extern unsigned IOCTL_FDGETDRVTYP;
+extern unsigned IOCTL_FDGETFDCSTAT;
+extern unsigned IOCTL_FDGETMAXERRS;
+extern unsigned IOCTL_FDGETPRM;
+extern unsigned IOCTL_FDMSGOFF;
+extern unsigned IOCTL_FDMSGON;
+extern unsigned IOCTL_FDPOLLDRVSTAT;
+extern unsigned IOCTL_FDRAWCMD;
+extern unsigned IOCTL_FDRESET;
+extern unsigned IOCTL_FDSETDRVPRM;
+extern unsigned IOCTL_FDSETEMSGTRESH;
+extern unsigned IOCTL_FDSETMAXERRS;
+extern unsigned IOCTL_FDSETPRM;
+extern unsigned IOCTL_FDTWADDLE;
+extern unsigned IOCTL_FDWERRORCLR;
+extern unsigned IOCTL_FDWERRORGET;
+extern unsigned IOCTL_HDIO_DRIVE_CMD;
+extern unsigned IOCTL_HDIO_GETGEO;
+extern unsigned IOCTL_HDIO_GET_32BIT;
+extern unsigned IOCTL_HDIO_GET_DMA;
+extern unsigned IOCTL_HDIO_GET_IDENTITY;
+extern unsigned IOCTL_HDIO_GET_KEEPSETTINGS;
+extern unsigned IOCTL_HDIO_GET_MULTCOUNT;
+extern unsigned IOCTL_HDIO_GET_NOWERR;
+extern unsigned IOCTL_HDIO_GET_UNMASKINTR;
+extern unsigned IOCTL_HDIO_SET_32BIT;
+extern unsigned IOCTL_HDIO_SET_DMA;
+extern unsigned IOCTL_HDIO_SET_KEEPSETTINGS;
+extern unsigned IOCTL_HDIO_SET_MULTCOUNT;
+extern unsigned IOCTL_HDIO_SET_NOWERR;
+extern unsigned IOCTL_HDIO_SET_UNMASKINTR;
+extern unsigned IOCTL_MTIOCPOS;
+extern unsigned IOCTL_PPPIOCGASYNCMAP;
+extern unsigned IOCTL_PPPIOCGDEBUG;
+extern unsigned IOCTL_PPPIOCGFLAGS;
+extern unsigned IOCTL_PPPIOCGUNIT;
+extern unsigned IOCTL_PPPIOCGXASYNCMAP;
+extern unsigned IOCTL_PPPIOCSASYNCMAP;
+extern unsigned IOCTL_PPPIOCSDEBUG;
+extern unsigned IOCTL_PPPIOCSFLAGS;
+extern unsigned IOCTL_PPPIOCSMAXCID;
+extern unsigned IOCTL_PPPIOCSMRU;
+extern unsigned IOCTL_PPPIOCSXASYNCMAP;
+extern unsigned IOCTL_SIOCDARP;
+extern unsigned IOCTL_SIOCDRARP;
+extern unsigned IOCTL_SIOCGARP;
+extern unsigned IOCTL_SIOCGIFENCAP;
+extern unsigned IOCTL_SIOCGIFHWADDR;
+extern unsigned IOCTL_SIOCGIFMAP;
+extern unsigned IOCTL_SIOCGIFMEM;
+extern unsigned IOCTL_SIOCGIFNAME;
+extern unsigned IOCTL_SIOCGIFSLAVE;
+extern unsigned IOCTL_SIOCGRARP;
+extern unsigned IOCTL_SIOCGSTAMP;
+extern unsigned IOCTL_SIOCSARP;
+extern unsigned IOCTL_SIOCSIFENCAP;
+extern unsigned IOCTL_SIOCSIFHWADDR;
+extern unsigned IOCTL_SIOCSIFLINK;
+extern unsigned IOCTL_SIOCSIFMAP;
+extern unsigned IOCTL_SIOCSIFMEM;
+extern unsigned IOCTL_SIOCSIFSLAVE;
+extern unsigned IOCTL_SIOCSRARP;
+extern unsigned IOCTL_SNDCTL_COPR_HALT;
+extern unsigned IOCTL_SNDCTL_COPR_LOAD;
+extern unsigned IOCTL_SNDCTL_COPR_RCODE;
+extern unsigned IOCTL_SNDCTL_COPR_RCVMSG;
+extern unsigned IOCTL_SNDCTL_COPR_RDATA;
+extern unsigned IOCTL_SNDCTL_COPR_RESET;
+extern unsigned IOCTL_SNDCTL_COPR_RUN;
+extern unsigned IOCTL_SNDCTL_COPR_SENDMSG;
+extern unsigned IOCTL_SNDCTL_COPR_WCODE;
+extern unsigned IOCTL_SNDCTL_COPR_WDATA;
+extern unsigned IOCTL_TCFLSH;
+extern unsigned IOCTL_TCGETA;
+extern unsigned IOCTL_TCGETS;
+extern unsigned IOCTL_TCSBRK;
+extern unsigned IOCTL_TCSBRKP;
+extern unsigned IOCTL_TCSETA;
+extern unsigned IOCTL_TCSETAF;
+extern unsigned IOCTL_TCSETAW;
+extern unsigned IOCTL_TCSETS;
+extern unsigned IOCTL_TCSETSF;
+extern unsigned IOCTL_TCSETSW;
+extern unsigned IOCTL_TCXONC;
+extern unsigned IOCTL_TIOCGLCKTRMIOS;
+extern unsigned IOCTL_TIOCGSOFTCAR;
+extern unsigned IOCTL_TIOCINQ;
+extern unsigned IOCTL_TIOCLINUX;
+extern unsigned IOCTL_TIOCSERCONFIG;
+extern unsigned IOCTL_TIOCSERGETLSR;
+extern unsigned IOCTL_TIOCSERGWILD;
+extern unsigned IOCTL_TIOCSERSWILD;
+extern unsigned IOCTL_TIOCSLCKTRMIOS;
+extern unsigned IOCTL_TIOCSSOFTCAR;
+extern unsigned IOCTL_VT_DISALLOCATE;
+extern unsigned IOCTL_VT_GETSTATE;
+extern unsigned IOCTL_VT_RESIZE;
+extern unsigned IOCTL_VT_RESIZEX;
+extern unsigned IOCTL_VT_SENDSIG;
+extern unsigned IOCTL_MTIOCGET;
+extern unsigned IOCTL_MTIOCTOP;
+extern unsigned IOCTL_SIOCADDRT;
+extern unsigned IOCTL_SIOCDELRT;
+extern unsigned IOCTL_SNDCTL_DSP_GETBLKSIZE;
+extern unsigned IOCTL_SNDCTL_DSP_GETFMTS;
+extern unsigned IOCTL_SNDCTL_DSP_NONBLOCK;
+extern unsigned IOCTL_SNDCTL_DSP_POST;
+extern unsigned IOCTL_SNDCTL_DSP_RESET;
+extern unsigned IOCTL_SNDCTL_DSP_SETFMT;
+extern unsigned IOCTL_SNDCTL_DSP_SETFRAGMENT;
+extern unsigned IOCTL_SNDCTL_DSP_SPEED;
+extern unsigned IOCTL_SNDCTL_DSP_STEREO;
+extern unsigned IOCTL_SNDCTL_DSP_SUBDIVIDE;
+extern unsigned IOCTL_SNDCTL_DSP_SYNC;
+extern unsigned IOCTL_SNDCTL_FM_4OP_ENABLE;
+extern unsigned IOCTL_SNDCTL_FM_LOAD_INSTR;
+extern unsigned IOCTL_SNDCTL_MIDI_INFO;
+extern unsigned IOCTL_SNDCTL_MIDI_PRETIME;
+extern unsigned IOCTL_SNDCTL_SEQ_CTRLRATE;
+extern unsigned IOCTL_SNDCTL_SEQ_GETINCOUNT;
+extern unsigned IOCTL_SNDCTL_SEQ_GETOUTCOUNT;
+extern unsigned IOCTL_SNDCTL_SEQ_NRMIDIS;
+extern unsigned IOCTL_SNDCTL_SEQ_NRSYNTHS;
+extern unsigned IOCTL_SNDCTL_SEQ_OUTOFBAND;
+extern unsigned IOCTL_SNDCTL_SEQ_PANIC;
+extern unsigned IOCTL_SNDCTL_SEQ_PERCMODE;
+extern unsigned IOCTL_SNDCTL_SEQ_RESET;
+extern unsigned IOCTL_SNDCTL_SEQ_RESETSAMPLES;
+extern unsigned IOCTL_SNDCTL_SEQ_SYNC;
+extern unsigned IOCTL_SNDCTL_SEQ_TESTMIDI;
+extern unsigned IOCTL_SNDCTL_SEQ_THRESHOLD;
+extern unsigned IOCTL_SNDCTL_SYNTH_INFO;
+extern unsigned IOCTL_SNDCTL_SYNTH_MEMAVL;
+extern unsigned IOCTL_SNDCTL_TMR_CONTINUE;
+extern unsigned IOCTL_SNDCTL_TMR_METRONOME;
+extern unsigned IOCTL_SNDCTL_TMR_SELECT;
+extern unsigned IOCTL_SNDCTL_TMR_SOURCE;
+extern unsigned IOCTL_SNDCTL_TMR_START;
+extern unsigned IOCTL_SNDCTL_TMR_STOP;
+extern unsigned IOCTL_SNDCTL_TMR_TEMPO;
+extern unsigned IOCTL_SNDCTL_TMR_TIMEBASE;
+extern unsigned IOCTL_SOUND_MIXER_READ_ALTPCM;
+extern unsigned IOCTL_SOUND_MIXER_READ_BASS;
+extern unsigned IOCTL_SOUND_MIXER_READ_CAPS;
+extern unsigned IOCTL_SOUND_MIXER_READ_CD;
+extern unsigned IOCTL_SOUND_MIXER_READ_DEVMASK;
+extern unsigned IOCTL_SOUND_MIXER_READ_ENHANCE;
+extern unsigned IOCTL_SOUND_MIXER_READ_IGAIN;
+extern unsigned IOCTL_SOUND_MIXER_READ_IMIX;
+extern unsigned IOCTL_SOUND_MIXER_READ_LINE1;
+extern unsigned IOCTL_SOUND_MIXER_READ_LINE2;
+extern unsigned IOCTL_SOUND_MIXER_READ_LINE3;
+extern unsigned IOCTL_SOUND_MIXER_READ_LINE;
+extern unsigned IOCTL_SOUND_MIXER_READ_LOUD;
+extern unsigned IOCTL_SOUND_MIXER_READ_MIC;
+extern unsigned IOCTL_SOUND_MIXER_READ_MUTE;
+extern unsigned IOCTL_SOUND_MIXER_READ_OGAIN;
+extern unsigned IOCTL_SOUND_MIXER_READ_PCM;
+extern unsigned IOCTL_SOUND_MIXER_READ_RECLEV;
+extern unsigned IOCTL_SOUND_MIXER_READ_RECMASK;
+extern unsigned IOCTL_SOUND_MIXER_READ_RECSRC;
+extern unsigned IOCTL_SOUND_MIXER_READ_SPEAKER;
+extern unsigned IOCTL_SOUND_MIXER_READ_STEREODEVS;
+extern unsigned IOCTL_SOUND_MIXER_READ_SYNTH;
+extern unsigned IOCTL_SOUND_MIXER_READ_TREBLE;
+extern unsigned IOCTL_SOUND_MIXER_READ_VOLUME;
+extern unsigned IOCTL_SOUND_MIXER_WRITE_ALTPCM;
+extern unsigned IOCTL_SOUND_MIXER_WRITE_BASS;
+extern unsigned IOCTL_SOUND_MIXER_WRITE_CD;
+extern unsigned IOCTL_SOUND_MIXER_WRITE_ENHANCE;
+extern unsigned IOCTL_SOUND_MIXER_WRITE_IGAIN;
+extern unsigned IOCTL_SOUND_MIXER_WRITE_IMIX;
+extern unsigned IOCTL_SOUND_MIXER_WRITE_LINE1;
+extern unsigned IOCTL_SOUND_MIXER_WRITE_LINE2;
+extern unsigned IOCTL_SOUND_MIXER_WRITE_LINE3;
+extern unsigned IOCTL_SOUND_MIXER_WRITE_LINE;
+extern unsigned IOCTL_SOUND_MIXER_WRITE_LOUD;
+extern unsigned IOCTL_SOUND_MIXER_WRITE_MIC;
+extern unsigned IOCTL_SOUND_MIXER_WRITE_MUTE;
+extern unsigned IOCTL_SOUND_MIXER_WRITE_OGAIN;
+extern unsigned IOCTL_SOUND_MIXER_WRITE_PCM;
+extern unsigned IOCTL_SOUND_MIXER_WRITE_RECLEV;
+extern unsigned IOCTL_SOUND_MIXER_WRITE_RECSRC;
+extern unsigned IOCTL_SOUND_MIXER_WRITE_SPEAKER;
+extern unsigned IOCTL_SOUND_MIXER_WRITE_SYNTH;
+extern unsigned IOCTL_SOUND_MIXER_WRITE_TREBLE;
+extern unsigned IOCTL_SOUND_MIXER_WRITE_VOLUME;
+extern unsigned IOCTL_SOUND_PCM_READ_BITS;
+extern unsigned IOCTL_SOUND_PCM_READ_CHANNELS;
+extern unsigned IOCTL_SOUND_PCM_READ_FILTER;
+extern unsigned IOCTL_SOUND_PCM_READ_RATE;
+extern unsigned IOCTL_SOUND_PCM_WRITE_CHANNELS;
+extern unsigned IOCTL_SOUND_PCM_WRITE_FILTER;
+extern unsigned IOCTL_VT_ACTIVATE;
+extern unsigned IOCTL_VT_GETMODE;
+extern unsigned IOCTL_VT_OPENQRY;
+extern unsigned IOCTL_VT_RELDISP;
+extern unsigned IOCTL_VT_SETMODE;
+extern unsigned IOCTL_VT_WAITACTIVE;
+#endif // SANITIZER_LINUX
+
+#if SANITIZER_LINUX && !SANITIZER_ANDROID
+extern unsigned IOCTL_EQL_EMANCIPATE;
+extern unsigned IOCTL_EQL_ENSLAVE;
+extern unsigned IOCTL_EQL_GETMASTRCFG;
+extern unsigned IOCTL_EQL_GETSLAVECFG;
+extern unsigned IOCTL_EQL_SETMASTRCFG;
+extern unsigned IOCTL_EQL_SETSLAVECFG;
+extern unsigned IOCTL_EVIOCGKEYCODE_V2;
+extern unsigned IOCTL_EVIOCGPROP;
+extern unsigned IOCTL_EVIOCSKEYCODE_V2;
+extern unsigned IOCTL_FS_IOC_GETFLAGS;
+extern unsigned IOCTL_FS_IOC_GETVERSION;
+extern unsigned IOCTL_FS_IOC_SETFLAGS;
+extern unsigned IOCTL_FS_IOC_SETVERSION;
+extern unsigned IOCTL_GIO_CMAP;
+extern unsigned IOCTL_GIO_FONT;
+extern unsigned IOCTL_GIO_UNIMAP;
+extern unsigned IOCTL_GIO_UNISCRNMAP;
+extern unsigned IOCTL_KDADDIO;
+extern unsigned IOCTL_KDDELIO;
+extern unsigned IOCTL_KDGETKEYCODE;
+extern unsigned IOCTL_KDGKBDIACR;
+extern unsigned IOCTL_KDGKBENT;
+extern unsigned IOCTL_KDGKBLED;
+extern unsigned IOCTL_KDGKBMETA;
+extern unsigned IOCTL_KDGKBSENT;
+extern unsigned IOCTL_KDMAPDISP;
+extern unsigned IOCTL_KDSETKEYCODE;
+extern unsigned IOCTL_KDSIGACCEPT;
+extern unsigned IOCTL_KDSKBDIACR;
+extern unsigned IOCTL_KDSKBENT;
+extern unsigned IOCTL_KDSKBLED;
+extern unsigned IOCTL_KDSKBMETA;
+extern unsigned IOCTL_KDSKBSENT;
+extern unsigned IOCTL_KDUNMAPDISP;
+extern unsigned IOCTL_LPABORT;
+extern unsigned IOCTL_LPABORTOPEN;
+extern unsigned IOCTL_LPCAREFUL;
+extern unsigned IOCTL_LPCHAR;
+extern unsigned IOCTL_LPGETIRQ;
+extern unsigned IOCTL_LPGETSTATUS;
+extern unsigned IOCTL_LPRESET;
+extern unsigned IOCTL_LPSETIRQ;
+extern unsigned IOCTL_LPTIME;
+extern unsigned IOCTL_LPWAIT;
+extern unsigned IOCTL_MTIOCGETCONFIG;
+extern unsigned IOCTL_MTIOCSETCONFIG;
+extern unsigned IOCTL_PIO_CMAP;
+extern unsigned IOCTL_PIO_FONT;
+extern unsigned IOCTL_PIO_UNIMAP;
+extern unsigned IOCTL_PIO_UNIMAPCLR;
+extern unsigned IOCTL_PIO_UNISCRNMAP;
+extern unsigned IOCTL_SCSI_IOCTL_GET_IDLUN;
+extern unsigned IOCTL_SCSI_IOCTL_PROBE_HOST;
+extern unsigned IOCTL_SCSI_IOCTL_TAGGED_DISABLE;
+extern unsigned IOCTL_SCSI_IOCTL_TAGGED_ENABLE;
+extern unsigned IOCTL_SIOCAIPXITFCRT;
+extern unsigned IOCTL_SIOCAIPXPRISLT;
+extern unsigned IOCTL_SIOCAX25ADDUID;
+extern unsigned IOCTL_SIOCAX25DELUID;
+extern unsigned IOCTL_SIOCAX25GETPARMS;
+extern unsigned IOCTL_SIOCAX25GETUID;
+extern unsigned IOCTL_SIOCAX25NOUID;
+extern unsigned IOCTL_SIOCAX25SETPARMS;
+extern unsigned IOCTL_SIOCDEVPLIP;
+extern unsigned IOCTL_SIOCIPXCFGDATA;
+extern unsigned IOCTL_SIOCNRDECOBS;
+extern unsigned IOCTL_SIOCNRGETPARMS;
+extern unsigned IOCTL_SIOCNRRTCTL;
+extern unsigned IOCTL_SIOCNRSETPARMS;
+extern unsigned IOCTL_SNDCTL_DSP_GETISPACE;
+extern unsigned IOCTL_SNDCTL_DSP_GETOSPACE;
+extern unsigned IOCTL_TIOCGSERIAL;
+extern unsigned IOCTL_TIOCSERGETMULTI;
+extern unsigned IOCTL_TIOCSERSETMULTI;
+extern unsigned IOCTL_TIOCSSERIAL;
+extern unsigned IOCTL_GIO_SCRNMAP;
+extern unsigned IOCTL_KDDISABIO;
+extern unsigned IOCTL_KDENABIO;
+extern unsigned IOCTL_KDGETLED;
+extern unsigned IOCTL_KDGETMODE;
+extern unsigned IOCTL_KDGKBMODE;
+extern unsigned IOCTL_KDGKBTYPE;
+extern unsigned IOCTL_KDMKTONE;
+extern unsigned IOCTL_KDSETLED;
+extern unsigned IOCTL_KDSETMODE;
+extern unsigned IOCTL_KDSKBMODE;
+extern unsigned IOCTL_KIOCSOUND;
+extern unsigned IOCTL_PIO_SCRNMAP;
+#endif
+
+extern const int si_SEGV_MAPERR;
+extern const int si_SEGV_ACCERR;
+} // namespace __sanitizer
+
+#define CHECK_TYPE_SIZE(TYPE) \
+ COMPILER_CHECK(sizeof(__sanitizer_##TYPE) == sizeof(TYPE))
+
+#define CHECK_SIZE_AND_OFFSET(CLASS, MEMBER) \
+ COMPILER_CHECK(sizeof(((__sanitizer_##CLASS *)NULL)->MEMBER) == \
+ sizeof(((CLASS *)NULL)->MEMBER)); \
+ COMPILER_CHECK(offsetof(__sanitizer_##CLASS, MEMBER) == \
+ offsetof(CLASS, MEMBER))
+
+// For sigaction, which is a function and struct at the same time,
+// and thus requires explicit "struct" in sizeof() expression.
+#define CHECK_STRUCT_SIZE_AND_OFFSET(CLASS, MEMBER) \
+ COMPILER_CHECK(sizeof(((struct __sanitizer_##CLASS *)NULL)->MEMBER) == \
+ sizeof(((struct CLASS *)NULL)->MEMBER)); \
+ COMPILER_CHECK(offsetof(struct __sanitizer_##CLASS, MEMBER) == \
+ offsetof(struct CLASS, MEMBER))
+
+#define SIGACTION_SYMNAME sigaction
+
+#endif // SANITIZER_LINUX || SANITIZER_APPLE
+
+#endif
Index: create-16.0.2-compiler-rt-p5600-patch/create.patch.sh
===================================================================
--- create-16.0.2-compiler-rt-p5600-patch/create.patch.sh (nonexistent)
+++ create-16.0.2-compiler-rt-p5600-patch/create.patch.sh (revision 40)
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+VERSION=16.0.2
+
+tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
+mv llvm-$VERSION llvm-$VERSION-orig
+
+cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
+
+diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-compiler-rt-p5600.patch
+
+mv llvm-$VERSION-compiler-rt-p5600.patch ../patches
+
+rm -rf ./llvm-$VERSION
+rm -rf ./llvm-$VERSION-orig
Property changes on: create-16.0.2-compiler-rt-p5600-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: create-16.0.2-compiler-rt-p5600-patch/file.list
===================================================================
--- create-16.0.2-compiler-rt-p5600-patch/file.list (nonexistent)
+++ create-16.0.2-compiler-rt-p5600-patch/file.list (revision 40)
@@ -0,0 +1 @@
+llvm-16.0.2/compiler-rt/cmake/base-config-ix.cmake
Index: create-16.0.2-compiler-rt-p5600-patch/llvm-16.0.2-new/compiler-rt/cmake/base-config-ix.cmake
===================================================================
--- create-16.0.2-compiler-rt-p5600-patch/llvm-16.0.2-new/compiler-rt/cmake/base-config-ix.cmake (nonexistent)
+++ create-16.0.2-compiler-rt-p5600-patch/llvm-16.0.2-new/compiler-rt/cmake/base-config-ix.cmake (revision 40)
@@ -0,0 +1,275 @@
+# The CompilerRT build system requires CMake version 2.8.8 or higher in order
+# to use its support for building convenience "libraries" as a collection of
+# .o files. This is particularly useful in producing larger, more complex
+# runtime libraries.
+
+include(BuiltinTests)
+include(CheckIncludeFile)
+include(CheckCXXSourceCompiles)
+include(GNUInstallDirs)
+include(ExtendPath)
+include(CompilerRTDarwinUtils)
+
+check_include_file(unwind.h HAVE_UNWIND_H)
+
+# Used by sanitizer_common and tests.
+check_include_file(rpc/xdr.h HAVE_RPC_XDR_H)
+if (NOT HAVE_RPC_XDR_H)
+ set(HAVE_RPC_XDR_H 0)
+endif()
+
+# Top level target used to build all compiler-rt libraries.
+add_custom_target(compiler-rt ALL)
+add_custom_target(install-compiler-rt)
+add_custom_target(install-compiler-rt-stripped)
+set_property(
+ TARGET
+ compiler-rt
+ install-compiler-rt
+ install-compiler-rt-stripped
+ PROPERTY
+ FOLDER "Compiler-RT Misc"
+)
+
+# Setting these variables from an LLVM build is sufficient that compiler-rt can
+# construct the output paths, so it can behave as if it were in-tree here.
+if (LLVM_LIBRARY_OUTPUT_INTDIR AND LLVM_RUNTIME_OUTPUT_INTDIR AND PACKAGE_VERSION)
+ set(LLVM_TREE_AVAILABLE On)
+endif()
+
+if (LLVM_TREE_AVAILABLE)
+ # Compute the Clang version from the LLVM version.
+ # FIXME: We should be able to reuse CLANG_VERSION_MAJOR variable calculated
+ # in Clang cmake files, instead of copying the rules here.
+ string(REGEX MATCH "^[0-9]+" CLANG_VERSION_MAJOR
+ ${PACKAGE_VERSION})
+ # Setup the paths where compiler-rt runtimes and headers should be stored.
+ set(COMPILER_RT_OUTPUT_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR}/clang/${CLANG_VERSION_MAJOR})
+ set(COMPILER_RT_EXEC_OUTPUT_DIR ${LLVM_RUNTIME_OUTPUT_INTDIR})
+ set(COMPILER_RT_INSTALL_PATH lib${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION_MAJOR})
+ option(COMPILER_RT_INCLUDE_TESTS "Generate and build compiler-rt unit tests."
+ ${LLVM_INCLUDE_TESTS})
+ option(COMPILER_RT_ENABLE_WERROR "Fail and stop if warning is triggered"
+ ${LLVM_ENABLE_WERROR})
+
+ # Use just-built Clang to compile/link tests on all platforms.
+ if (CMAKE_CROSSCOMPILING)
+ if (CMAKE_HOST_WIN32)
+ set(_host_executable_suffix ".exe")
+ else()
+ set(_host_executable_suffix "")
+ endif()
+ else()
+ set(_host_executable_suffix ${CMAKE_EXECUTABLE_SUFFIX})
+ endif()
+ set(COMPILER_RT_TEST_COMPILER
+ ${LLVM_RUNTIME_OUTPUT_INTDIR}/clang${_host_executable_suffix})
+ set(COMPILER_RT_TEST_CXX_COMPILER
+ ${LLVM_RUNTIME_OUTPUT_INTDIR}/clang++${_host_executable_suffix})
+else()
+ # Take output dir and install path from the user.
+ set(COMPILER_RT_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR} CACHE PATH
+ "Path where built compiler-rt libraries should be stored.")
+ set(COMPILER_RT_EXEC_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/bin CACHE PATH
+ "Path where built compiler-rt executables should be stored.")
+ set(COMPILER_RT_INSTALL_PATH "" CACHE PATH
+ "Prefix for directories where built compiler-rt artifacts should be installed.")
+ option(COMPILER_RT_INCLUDE_TESTS "Generate and build compiler-rt unit tests." OFF)
+ option(COMPILER_RT_ENABLE_WERROR "Fail and stop if warning is triggered" OFF)
+ # Use a host compiler to compile/link tests.
+ set(COMPILER_RT_TEST_COMPILER ${CMAKE_C_COMPILER} CACHE PATH "Compiler to use for testing")
+ set(COMPILER_RT_TEST_CXX_COMPILER ${CMAKE_CXX_COMPILER} CACHE PATH "C++ Compiler to use for testing")
+endif()
+
+if("${COMPILER_RT_TEST_COMPILER}" MATCHES "clang[+]*$")
+ set(COMPILER_RT_TEST_COMPILER_ID Clang)
+elseif("${COMPILER_RT_TEST_COMPILER}" MATCHES "clang.*.exe$")
+ set(COMPILER_RT_TEST_COMPILER_ID Clang)
+else()
+ set(COMPILER_RT_TEST_COMPILER_ID GNU)
+endif()
+
+if(NOT DEFINED COMPILER_RT_OS_DIR)
+ if(ANDROID)
+ # The CMAKE_SYSTEM_NAME for Android is Android, but the OS is Linux and the
+ # driver will search for compiler-rt libraries in the "linux" directory.
+ set(COMPILER_RT_OS_DIR linux)
+ else()
+ string(TOLOWER ${CMAKE_SYSTEM_NAME} COMPILER_RT_OS_DIR)
+ endif()
+endif()
+if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)
+ set(COMPILER_RT_OUTPUT_LIBRARY_DIR
+ ${COMPILER_RT_OUTPUT_DIR}/lib)
+ extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" lib)
+ set(COMPILER_RT_INSTALL_LIBRARY_DIR "${default_install_path}" CACHE PATH
+ "Path where built compiler-rt libraries should be installed.")
+else(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)
+ set(COMPILER_RT_OUTPUT_LIBRARY_DIR
+ ${COMPILER_RT_OUTPUT_DIR}/lib/${COMPILER_RT_OS_DIR})
+ extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" "lib/${COMPILER_RT_OS_DIR}")
+ set(COMPILER_RT_INSTALL_LIBRARY_DIR "${default_install_path}" CACHE PATH
+ "Path where built compiler-rt libraries should be installed.")
+endif()
+extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" "${CMAKE_INSTALL_BINDIR}")
+set(COMPILER_RT_INSTALL_BINARY_DIR "${default_install_path}" CACHE PATH
+ "Path where built compiler-rt executables should be installed.")
+extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" "${CMAKE_INSTALL_INCLUDEDIR}")
+set(COMPILER_RT_INSTALL_INCLUDE_DIR "${default_install_path}" CACHE PATH
+ "Path where compiler-rt headers should be installed.")
+extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" "${CMAKE_INSTALL_DATADIR}")
+set(COMPILER_RT_INSTALL_DATA_DIR "${default_install_path}" CACHE PATH
+ "Path where compiler-rt data files should be installed.")
+
+if(APPLE)
+ # On Darwin if /usr/include/c++ doesn't exist, the user probably has Xcode but
+ # not the command line tools (or is using macOS 10.14 or newer). If this is
+ # the case, we need to find the OS X sysroot to pass to clang.
+ if(NOT EXISTS /usr/include/c++)
+ execute_process(COMMAND xcrun -sdk macosx --show-sdk-path
+ OUTPUT_VARIABLE OSX_SYSROOT
+ ERROR_QUIET
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+ if (NOT OSX_SYSROOT OR NOT EXISTS ${OSX_SYSROOT})
+ message(WARNING "Detected OSX_SYSROOT ${OSX_SYSROOT} does not exist")
+ else()
+ message(STATUS "Found OSX_SYSROOT: ${OSX_SYSROOT}")
+ set(OSX_SYSROOT_FLAG "-isysroot${OSX_SYSROOT}")
+ endif()
+ else()
+ set(OSX_SYSROOT_FLAG "")
+ endif()
+
+ try_compile_only(COMPILER_RT_HAS_DARWIN_TARGET_VARIANT_FLAG
+ FLAGS
+ "-target" "x86_64-apple-macos10.15"
+ "-darwin-target-variant" "x86_64-apple-ios13.1-macabi"
+ "-Werror")
+ option(COMPILER_RT_ENABLE_MACCATALYST "Enable building for Mac Catalyst" ${COMPILER_RT_HAS_DARWIN_TARGET_VARIANT_FLAG})
+
+ # Don't enable COMPILER_RT_ENABLE_IOS if we can't find the sdk dir.
+ # This can happen when you only have the commandline tools installed
+ # which doesn't come with the iOS SDK.
+ find_darwin_sdk_dir(HAS_IOS_SDK "iphoneos")
+ set(COMPILER_RT_ENABLE_IOS_DEFAULT On)
+ if("${HAS_IOS_SDK}" STREQUAL "")
+ message(WARNING "iOS SDK not found! Building compiler-rt without iOS support.")
+ set(COMPILER_RT_ENABLE_IOS_DEFAULT Off)
+ endif()
+ option(COMPILER_RT_ENABLE_IOS "Enable building for iOS" ${COMPILER_RT_ENABLE_IOS_DEFAULT})
+
+ option(COMPILER_RT_ENABLE_WATCHOS "Enable building for watchOS - Experimental" Off)
+ option(COMPILER_RT_ENABLE_TVOS "Enable building for tvOS - Experimental" Off)
+
+else()
+ option(COMPILER_RT_DEFAULT_TARGET_ONLY "Build builtins only for the default target" Off)
+endif()
+
+if(WIN32 AND NOT MINGW AND NOT CYGWIN)
+ set(CMAKE_SHARED_LIBRARY_PREFIX_C "")
+ set(CMAKE_SHARED_LIBRARY_PREFIX_CXX "")
+ set(CMAKE_STATIC_LIBRARY_PREFIX_C "")
+ set(CMAKE_STATIC_LIBRARY_PREFIX_CXX "")
+ set(CMAKE_STATIC_LIBRARY_SUFFIX_C ".lib")
+ set(CMAKE_STATIC_LIBRARY_SUFFIX_CXX ".lib")
+endif()
+
+macro(test_targets)
+ # Find and run MSVC (not clang-cl) and get its version. This will tell clang-cl
+ # what version of MSVC to pretend to be so that the STL works.
+ set(MSVC_VERSION_FLAG "")
+ if (MSVC)
+ execute_process(COMMAND "$ENV{VSINSTALLDIR}/VC/bin/cl.exe"
+ OUTPUT_QUIET
+ ERROR_VARIABLE MSVC_COMPAT_VERSION
+ )
+ string(REGEX REPLACE "^.*Compiler Version ([0-9.]+) for .*$" "\\1"
+ MSVC_COMPAT_VERSION "${MSVC_COMPAT_VERSION}")
+ if (MSVC_COMPAT_VERSION MATCHES "^[0-9].+$")
+ set(MSVC_VERSION_FLAG "-fms-compatibility-version=${MSVC_COMPAT_VERSION}")
+ # Add this flag into the host build if this is clang-cl.
+ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+ append("${MSVC_VERSION_FLAG}" CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
+ elseif (COMPILER_RT_TEST_COMPILER_ID MATCHES "Clang")
+ # Add this flag to test compiles to suppress clang's auto-detection
+ # logic.
+ append("${MSVC_VERSION_FLAG}" COMPILER_RT_TEST_COMPILER_CFLAGS)
+ endif()
+ endif()
+ endif()
+
+ # Generate the COMPILER_RT_SUPPORTED_ARCH list.
+ if(ANDROID)
+ # Examine compiler output to determine target architecture.
+ detect_target_arch()
+ set(COMPILER_RT_OS_SUFFIX "-android")
+ elseif(NOT APPLE) # Supported archs for Apple platforms are generated later
+ if(COMPILER_RT_DEFAULT_TARGET_ONLY)
+ add_default_target_arch(${COMPILER_RT_DEFAULT_TARGET_ARCH})
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "i[2-6]86|x86|amd64")
+ if(NOT MSVC)
+ test_target_arch(x86_64 "" "-m64")
+ test_target_arch(i386 __i386__ "-m32")
+ else()
+ if (CMAKE_SIZEOF_VOID_P EQUAL 4)
+ test_target_arch(i386 "" "")
+ else()
+ test_target_arch(x86_64 "" "")
+ endif()
+ endif()
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "loongarch64")
+ test_target_arch(loongarch64 "" "")
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "powerpc64le|ppc64le")
+ test_target_arch(powerpc64le "" "-m64")
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "powerpc")
+ test_target_arch(powerpc "" "-m32")
+ test_target_arch(powerpc64 "" "-m64")
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "s390x")
+ test_target_arch(s390x "" "")
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "sparc")
+ test_target_arch(sparc "" "-m32")
+ test_target_arch(sparcv9 "" "-m64")
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "mips")
+ # FIXME: Ideally, we would build the N32 library too.
+ if("${COMPILER_RT_MIPS_EL}" AND ("${COMPILER_RT_MIPS32R6}" OR "${COMPILER_RT_MIPS64R6}"))
+ test_target_arch(mipsel "" "-mips32r6" "-mabi=32" "-D_LARGEFILE_SOURCE=1" "-D_FILE_OFFSET_BITS=64")
+ test_target_arch(mips64el "" "-mips64r6" "-mabi=64")
+ elseif("${COMPILER_RT_MIPS_EL}")
+ test_target_arch(mipsel "" "-mips32r5" "-mabi=32" "-D_LARGEFILE_SOURCE=1" "-D_FILE_OFFSET_BITS=64")
+ test_target_arch(mips64el "" "-mips64r5" "-mabi=64")
+ elseif("${COMPILER_RT_MIPS32R6}" OR "${COMPILER_RT_MIPS64R6}")
+ test_target_arch(mips "" "-mips32r6" "-mabi=32" "-D_LARGEFILE_SOURCE=1" "-D_FILE_OFFSET_BITS=64")
+ test_target_arch(mips64 "" "-mips64r6" "-mabi=64")
+ else()
+ test_target_arch(mips "" "-mips32r5" "-mabi=32" "-D_LARGEFILE_SOURCE=1" "-D_FILE_OFFSET_BITS=64")
+ test_target_arch(mips64 "" "-mips64r5" "-mabi=64")
+ endif()
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "arm")
+ if(WIN32)
+ test_target_arch(arm "" "" "")
+ else()
+ test_target_arch(armv4t "" "-march=armv4t" "-mfloat-abi=soft")
+ test_target_arch(armv6m "" "-march=armv6m" "-mfloat-abi=soft")
+ test_target_arch(arm "" "-march=armv7-a" "-mfloat-abi=soft")
+ test_target_arch(armhf "" "-march=armv7-a" "-mfloat-abi=hard")
+ endif()
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "avr")
+ test_target_arch(avr "__AVR__" "--target=avr")
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "aarch32")
+ test_target_arch(aarch32 "" "-march=armv8-a")
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "aarch64")
+ test_target_arch(aarch64 "" "-march=armv8-a")
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "riscv32")
+ test_target_arch(riscv32 "" "")
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "riscv64")
+ test_target_arch(riscv64 "" "")
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "wasm32")
+ test_target_arch(wasm32 "" "--target=wasm32-unknown-unknown")
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "wasm64")
+ test_target_arch(wasm64 "" "--target=wasm64-unknown-unknown")
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "ve")
+ test_target_arch(ve "__ve__" "--target=ve-unknown-none")
+ endif()
+ set(COMPILER_RT_OS_SUFFIX "")
+ endif()
+endmacro()
Index: create-16.0.2-compiler-rt-ppc64-patch/create.patch.sh
===================================================================
--- create-16.0.2-compiler-rt-ppc64-patch/create.patch.sh (nonexistent)
+++ create-16.0.2-compiler-rt-ppc64-patch/create.patch.sh (revision 40)
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+VERSION=16.0.2
+
+tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
+mv llvm-$VERSION llvm-$VERSION-orig
+
+cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
+
+diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-compiler-rt-ppc64.patch
+
+mv llvm-$VERSION-compiler-rt-ppc64.patch ../patches
+
+rm -rf ./llvm-$VERSION
+rm -rf ./llvm-$VERSION-orig
Property changes on: create-16.0.2-compiler-rt-ppc64-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: create-16.0.2-compiler-rt-ppc64-patch/file.list
===================================================================
--- create-16.0.2-compiler-rt-ppc64-patch/file.list (nonexistent)
+++ create-16.0.2-compiler-rt-ppc64-patch/file.list (revision 40)
@@ -0,0 +1,2 @@
+llvm-16.0.2/compiler-rt/cmake/base-config-ix.cmake
+llvm-16.0.2/compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake
Index: create-16.0.2-compiler-rt-ppc64-patch/llvm-16.0.2-new/compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake
===================================================================
--- create-16.0.2-compiler-rt-ppc64-patch/llvm-16.0.2-new/compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake (nonexistent)
+++ create-16.0.2-compiler-rt-ppc64-patch/llvm-16.0.2-new/compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake (revision 40)
@@ -0,0 +1,88 @@
+set(ARM64 aarch64)
+set(ARM32 arm armhf)
+set(HEXAGON hexagon)
+set(X86 i386)
+set(X86_64 x86_64)
+set(LOONGARCH64 loongarch64)
+set(MIPS32 mips mipsel)
+set(MIPS64 mips64 mips64el)
+set(PPC32 ppc powerpc powerpcspe)
+set(PPC64 ppc64 powerpc64 pc64le powerpc64le)
+set(RISCV32 riscv32)
+set(RISCV64 riscv64)
+set(S390X s390x)
+set(SPARC sparc)
+set(SPARCV9 sparcv9)
+set(WASM32 wasm32)
+set(WASM64 wasm64)
+set(VE ve)
+
+if(APPLE)
+ set(ARM64 arm64)
+ set(ARM32 armv7 armv7s armv7k)
+ set(X86_64 x86_64 x86_64h)
+endif()
+
+set(ALL_SANITIZER_COMMON_SUPPORTED_ARCH ${X86} ${X86_64} ${PPC64} ${RISCV64}
+ ${ARM32} ${ARM64} ${MIPS32} ${MIPS64} ${S390X} ${SPARC} ${SPARCV9}
+ ${HEXAGON} ${LOONGARCH64})
+set(ALL_ASAN_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64} ${RISCV64}
+ ${MIPS32} ${MIPS64} ${PPC64} ${S390X} ${SPARC} ${SPARCV9} ${HEXAGON}
+ ${LOONGARCH64})
+set(ALL_DFSAN_SUPPORTED_ARCH ${X86_64} ${MIPS64} ${ARM64})
+
+if(ANDROID)
+ set(OS_NAME "Android")
+else()
+ set(OS_NAME "${CMAKE_SYSTEM_NAME}")
+endif()
+
+if(OS_NAME MATCHES "Linux")
+ set(ALL_FUZZER_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64} ${S390X})
+elseif (OS_NAME MATCHES "Windows")
+ set(ALL_FUZZER_SUPPORTED_ARCH ${X86} ${X86_64})
+elseif(OS_NAME MATCHES "Android")
+ set(ALL_FUZZER_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64})
+else()
+ set(ALL_FUZZER_SUPPORTED_ARCH ${X86_64} ${ARM64})
+endif()
+
+set(ALL_GWP_ASAN_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64})
+if(APPLE)
+ set(ALL_LSAN_SUPPORTED_ARCH ${X86} ${X86_64} ${MIPS64} ${ARM64})
+else()
+ set(ALL_LSAN_SUPPORTED_ARCH ${X86} ${X86_64} ${MIPS64} ${ARM64} ${ARM32}
+ ${PPC64} ${S390X} ${RISCV64} ${HEXAGON} ${LOONGARCH64})
+endif()
+set(ALL_MSAN_SUPPORTED_ARCH ${X86_64} ${MIPS64} ${ARM64} ${PPC64} ${S390X})
+set(ALL_HWASAN_SUPPORTED_ARCH ${X86_64} ${ARM64} ${RISCV64})
+set(ALL_MEMPROF_SUPPORTED_ARCH ${X86_64})
+set(ALL_PROFILE_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64} ${PPC32} ${PPC64}
+ ${MIPS32} ${MIPS64} ${S390X} ${SPARC} ${SPARCV9} ${HEXAGON}
+ ${RISCV32} ${RISCV64})
+set(ALL_TSAN_SUPPORTED_ARCH ${X86_64} ${MIPS64} ${ARM64} ${PPC64} ${S390X}
+ ${LOONGARCH64})
+set(ALL_UBSAN_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64} ${RISCV64}
+ ${MIPS32} ${MIPS64} ${PPC64} ${S390X} ${SPARC} ${SPARCV9} ${HEXAGON}
+ ${LOONGARCH64})
+set(ALL_SAFESTACK_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM64} ${MIPS32} ${MIPS64}
+ ${HEXAGON} ${LOONGARCH64})
+set(ALL_CFI_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64} ${MIPS64}
+ ${HEXAGON})
+set(ALL_SCUDO_STANDALONE_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64}
+ ${MIPS32} ${MIPS64} ${PPC64} ${HEXAGON} ${LOONGARCH64})
+if(APPLE)
+set(ALL_XRAY_SUPPORTED_ARCH ${X86_64})
+else()
+set(ALL_XRAY_SUPPORTED_ARCH ${X86_64} ${ARM32} ${ARM64} ${MIPS32} ${MIPS64}
+ ppc64le powerpc64le ${HEXAGON})
+endif()
+set(ALL_SHADOWCALLSTACK_SUPPORTED_ARCH ${ARM64})
+
+if (UNIX)
+set(ALL_ORC_SUPPORTED_ARCH ${X86_64} ${ARM64} ${ARM32})
+endif()
+
+if (WIN32)
+ set(ALL_ORC_SUPPORTED_ARCH ${X86_64})
+endif()
Index: create-16.0.2-compiler-rt-ppc64-patch/llvm-16.0.2-new/compiler-rt/cmake/base-config-ix.cmake
===================================================================
--- create-16.0.2-compiler-rt-ppc64-patch/llvm-16.0.2-new/compiler-rt/cmake/base-config-ix.cmake (nonexistent)
+++ create-16.0.2-compiler-rt-ppc64-patch/llvm-16.0.2-new/compiler-rt/cmake/base-config-ix.cmake (revision 40)
@@ -0,0 +1,276 @@
+# The CompilerRT build system requires CMake version 2.8.8 or higher in order
+# to use its support for building convenience "libraries" as a collection of
+# .o files. This is particularly useful in producing larger, more complex
+# runtime libraries.
+
+include(BuiltinTests)
+include(CheckIncludeFile)
+include(CheckCXXSourceCompiles)
+include(GNUInstallDirs)
+include(ExtendPath)
+include(CompilerRTDarwinUtils)
+
+check_include_file(unwind.h HAVE_UNWIND_H)
+
+# Used by sanitizer_common and tests.
+check_include_file(rpc/xdr.h HAVE_RPC_XDR_H)
+if (NOT HAVE_RPC_XDR_H)
+ set(HAVE_RPC_XDR_H 0)
+endif()
+
+# Top level target used to build all compiler-rt libraries.
+add_custom_target(compiler-rt ALL)
+add_custom_target(install-compiler-rt)
+add_custom_target(install-compiler-rt-stripped)
+set_property(
+ TARGET
+ compiler-rt
+ install-compiler-rt
+ install-compiler-rt-stripped
+ PROPERTY
+ FOLDER "Compiler-RT Misc"
+)
+
+# Setting these variables from an LLVM build is sufficient that compiler-rt can
+# construct the output paths, so it can behave as if it were in-tree here.
+if (LLVM_LIBRARY_OUTPUT_INTDIR AND LLVM_RUNTIME_OUTPUT_INTDIR AND PACKAGE_VERSION)
+ set(LLVM_TREE_AVAILABLE On)
+endif()
+
+if (LLVM_TREE_AVAILABLE)
+ # Compute the Clang version from the LLVM version.
+ # FIXME: We should be able to reuse CLANG_VERSION_MAJOR variable calculated
+ # in Clang cmake files, instead of copying the rules here.
+ string(REGEX MATCH "^[0-9]+" CLANG_VERSION_MAJOR
+ ${PACKAGE_VERSION})
+ # Setup the paths where compiler-rt runtimes and headers should be stored.
+ set(COMPILER_RT_OUTPUT_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR}/clang/${CLANG_VERSION_MAJOR})
+ set(COMPILER_RT_EXEC_OUTPUT_DIR ${LLVM_RUNTIME_OUTPUT_INTDIR})
+ set(COMPILER_RT_INSTALL_PATH lib${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION_MAJOR})
+ option(COMPILER_RT_INCLUDE_TESTS "Generate and build compiler-rt unit tests."
+ ${LLVM_INCLUDE_TESTS})
+ option(COMPILER_RT_ENABLE_WERROR "Fail and stop if warning is triggered"
+ ${LLVM_ENABLE_WERROR})
+
+ # Use just-built Clang to compile/link tests on all platforms.
+ if (CMAKE_CROSSCOMPILING)
+ if (CMAKE_HOST_WIN32)
+ set(_host_executable_suffix ".exe")
+ else()
+ set(_host_executable_suffix "")
+ endif()
+ else()
+ set(_host_executable_suffix ${CMAKE_EXECUTABLE_SUFFIX})
+ endif()
+ set(COMPILER_RT_TEST_COMPILER
+ ${LLVM_RUNTIME_OUTPUT_INTDIR}/clang${_host_executable_suffix})
+ set(COMPILER_RT_TEST_CXX_COMPILER
+ ${LLVM_RUNTIME_OUTPUT_INTDIR}/clang++${_host_executable_suffix})
+else()
+ # Take output dir and install path from the user.
+ set(COMPILER_RT_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR} CACHE PATH
+ "Path where built compiler-rt libraries should be stored.")
+ set(COMPILER_RT_EXEC_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/bin CACHE PATH
+ "Path where built compiler-rt executables should be stored.")
+ set(COMPILER_RT_INSTALL_PATH "" CACHE PATH
+ "Prefix for directories where built compiler-rt artifacts should be installed.")
+ option(COMPILER_RT_INCLUDE_TESTS "Generate and build compiler-rt unit tests." OFF)
+ option(COMPILER_RT_ENABLE_WERROR "Fail and stop if warning is triggered" OFF)
+ # Use a host compiler to compile/link tests.
+ set(COMPILER_RT_TEST_COMPILER ${CMAKE_C_COMPILER} CACHE PATH "Compiler to use for testing")
+ set(COMPILER_RT_TEST_CXX_COMPILER ${CMAKE_CXX_COMPILER} CACHE PATH "C++ Compiler to use for testing")
+endif()
+
+if("${COMPILER_RT_TEST_COMPILER}" MATCHES "clang[+]*$")
+ set(COMPILER_RT_TEST_COMPILER_ID Clang)
+elseif("${COMPILER_RT_TEST_COMPILER}" MATCHES "clang.*.exe$")
+ set(COMPILER_RT_TEST_COMPILER_ID Clang)
+else()
+ set(COMPILER_RT_TEST_COMPILER_ID GNU)
+endif()
+
+if(NOT DEFINED COMPILER_RT_OS_DIR)
+ if(ANDROID)
+ # The CMAKE_SYSTEM_NAME for Android is Android, but the OS is Linux and the
+ # driver will search for compiler-rt libraries in the "linux" directory.
+ set(COMPILER_RT_OS_DIR linux)
+ else()
+ string(TOLOWER ${CMAKE_SYSTEM_NAME} COMPILER_RT_OS_DIR)
+ endif()
+endif()
+if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)
+ set(COMPILER_RT_OUTPUT_LIBRARY_DIR
+ ${COMPILER_RT_OUTPUT_DIR}/lib)
+ extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" lib)
+ set(COMPILER_RT_INSTALL_LIBRARY_DIR "${default_install_path}" CACHE PATH
+ "Path where built compiler-rt libraries should be installed.")
+else(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)
+ set(COMPILER_RT_OUTPUT_LIBRARY_DIR
+ ${COMPILER_RT_OUTPUT_DIR}/lib/${COMPILER_RT_OS_DIR})
+ extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" "lib/${COMPILER_RT_OS_DIR}")
+ set(COMPILER_RT_INSTALL_LIBRARY_DIR "${default_install_path}" CACHE PATH
+ "Path where built compiler-rt libraries should be installed.")
+endif()
+extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" "${CMAKE_INSTALL_BINDIR}")
+set(COMPILER_RT_INSTALL_BINARY_DIR "${default_install_path}" CACHE PATH
+ "Path where built compiler-rt executables should be installed.")
+extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" "${CMAKE_INSTALL_INCLUDEDIR}")
+set(COMPILER_RT_INSTALL_INCLUDE_DIR "${default_install_path}" CACHE PATH
+ "Path where compiler-rt headers should be installed.")
+extend_path(default_install_path "${COMPILER_RT_INSTALL_PATH}" "${CMAKE_INSTALL_DATADIR}")
+set(COMPILER_RT_INSTALL_DATA_DIR "${default_install_path}" CACHE PATH
+ "Path where compiler-rt data files should be installed.")
+
+if(APPLE)
+ # On Darwin if /usr/include/c++ doesn't exist, the user probably has Xcode but
+ # not the command line tools (or is using macOS 10.14 or newer). If this is
+ # the case, we need to find the OS X sysroot to pass to clang.
+ if(NOT EXISTS /usr/include/c++)
+ execute_process(COMMAND xcrun -sdk macosx --show-sdk-path
+ OUTPUT_VARIABLE OSX_SYSROOT
+ ERROR_QUIET
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+ if (NOT OSX_SYSROOT OR NOT EXISTS ${OSX_SYSROOT})
+ message(WARNING "Detected OSX_SYSROOT ${OSX_SYSROOT} does not exist")
+ else()
+ message(STATUS "Found OSX_SYSROOT: ${OSX_SYSROOT}")
+ set(OSX_SYSROOT_FLAG "-isysroot${OSX_SYSROOT}")
+ endif()
+ else()
+ set(OSX_SYSROOT_FLAG "")
+ endif()
+
+ try_compile_only(COMPILER_RT_HAS_DARWIN_TARGET_VARIANT_FLAG
+ FLAGS
+ "-target" "x86_64-apple-macos10.15"
+ "-darwin-target-variant" "x86_64-apple-ios13.1-macabi"
+ "-Werror")
+ option(COMPILER_RT_ENABLE_MACCATALYST "Enable building for Mac Catalyst" ${COMPILER_RT_HAS_DARWIN_TARGET_VARIANT_FLAG})
+
+ # Don't enable COMPILER_RT_ENABLE_IOS if we can't find the sdk dir.
+ # This can happen when you only have the commandline tools installed
+ # which doesn't come with the iOS SDK.
+ find_darwin_sdk_dir(HAS_IOS_SDK "iphoneos")
+ set(COMPILER_RT_ENABLE_IOS_DEFAULT On)
+ if("${HAS_IOS_SDK}" STREQUAL "")
+ message(WARNING "iOS SDK not found! Building compiler-rt without iOS support.")
+ set(COMPILER_RT_ENABLE_IOS_DEFAULT Off)
+ endif()
+ option(COMPILER_RT_ENABLE_IOS "Enable building for iOS" ${COMPILER_RT_ENABLE_IOS_DEFAULT})
+
+ option(COMPILER_RT_ENABLE_WATCHOS "Enable building for watchOS - Experimental" Off)
+ option(COMPILER_RT_ENABLE_TVOS "Enable building for tvOS - Experimental" Off)
+
+else()
+ option(COMPILER_RT_DEFAULT_TARGET_ONLY "Build builtins only for the default target" Off)
+endif()
+
+if(WIN32 AND NOT MINGW AND NOT CYGWIN)
+ set(CMAKE_SHARED_LIBRARY_PREFIX_C "")
+ set(CMAKE_SHARED_LIBRARY_PREFIX_CXX "")
+ set(CMAKE_STATIC_LIBRARY_PREFIX_C "")
+ set(CMAKE_STATIC_LIBRARY_PREFIX_CXX "")
+ set(CMAKE_STATIC_LIBRARY_SUFFIX_C ".lib")
+ set(CMAKE_STATIC_LIBRARY_SUFFIX_CXX ".lib")
+endif()
+
+macro(test_targets)
+ # Find and run MSVC (not clang-cl) and get its version. This will tell clang-cl
+ # what version of MSVC to pretend to be so that the STL works.
+ set(MSVC_VERSION_FLAG "")
+ if (MSVC)
+ execute_process(COMMAND "$ENV{VSINSTALLDIR}/VC/bin/cl.exe"
+ OUTPUT_QUIET
+ ERROR_VARIABLE MSVC_COMPAT_VERSION
+ )
+ string(REGEX REPLACE "^.*Compiler Version ([0-9.]+) for .*$" "\\1"
+ MSVC_COMPAT_VERSION "${MSVC_COMPAT_VERSION}")
+ if (MSVC_COMPAT_VERSION MATCHES "^[0-9].+$")
+ set(MSVC_VERSION_FLAG "-fms-compatibility-version=${MSVC_COMPAT_VERSION}")
+ # Add this flag into the host build if this is clang-cl.
+ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+ append("${MSVC_VERSION_FLAG}" CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
+ elseif (COMPILER_RT_TEST_COMPILER_ID MATCHES "Clang")
+ # Add this flag to test compiles to suppress clang's auto-detection
+ # logic.
+ append("${MSVC_VERSION_FLAG}" COMPILER_RT_TEST_COMPILER_CFLAGS)
+ endif()
+ endif()
+ endif()
+
+ # Generate the COMPILER_RT_SUPPORTED_ARCH list.
+ if(ANDROID)
+ # Examine compiler output to determine target architecture.
+ detect_target_arch()
+ set(COMPILER_RT_OS_SUFFIX "-android")
+ elseif(NOT APPLE) # Supported archs for Apple platforms are generated later
+ if(COMPILER_RT_DEFAULT_TARGET_ONLY)
+ add_default_target_arch(${COMPILER_RT_DEFAULT_TARGET_ARCH})
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "i[2-6]86|x86|amd64")
+ if(NOT MSVC)
+ test_target_arch(x86_64 "" "-m64")
+ test_target_arch(i386 __i386__ "-m32")
+ else()
+ if (CMAKE_SIZEOF_VOID_P EQUAL 4)
+ test_target_arch(i386 "" "")
+ else()
+ test_target_arch(x86_64 "" "")
+ endif()
+ endif()
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "loongarch64")
+ test_target_arch(loongarch64 "" "")
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "powerpc64le|ppc64le")
+ test_target_arch(powerpc64le "" "-m64")
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "powerpc|ppc")
+ test_target_arch(powerpc "" "-m32")
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "powerpc64|ppc64")
+ test_target_arch(powerpc64 "" "-m64")
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "s390x")
+ test_target_arch(s390x "" "")
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "sparc")
+ test_target_arch(sparc "" "-m32")
+ test_target_arch(sparcv9 "" "-m64")
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "mips")
+ # FIXME: Ideally, we would build the N32 library too.
+ if("${COMPILER_RT_MIPS_EL}" AND ("${COMPILER_RT_MIPS32R6}" OR "${COMPILER_RT_MIPS64R6}"))
+ test_target_arch(mipsel "" "-mips32r6" "-mabi=32" "-D_LARGEFILE_SOURCE" "-D_FILE_OFFSET_BITS=64")
+ test_target_arch(mips64el "" "-mips64r6" "-mabi=64")
+ elseif("${COMPILER_RT_MIPS_EL}")
+ test_target_arch(mipsel "" "-mips32r2" "-mabi=32" "-D_LARGEFILE_SOURCE" "-D_FILE_OFFSET_BITS=64")
+ test_target_arch(mips64el "" "-mips64r2" "-mabi=64")
+ elseif("${COMPILER_RT_MIPS32R6}" OR "${COMPILER_RT_MIPS64R6}")
+ test_target_arch(mips "" "-mips32r6" "-mabi=32" "-D_LARGEFILE_SOURCE" "-D_FILE_OFFSET_BITS=64")
+ test_target_arch(mips64 "" "-mips64r6" "-mabi=64")
+ else()
+ test_target_arch(mips "" "-mips32r2" "-mabi=32" "-D_LARGEFILE_SOURCE" "-D_FILE_OFFSET_BITS=64")
+ test_target_arch(mips64 "" "-mips64r2" "-mabi=64")
+ endif()
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "arm")
+ if(WIN32)
+ test_target_arch(arm "" "" "")
+ else()
+ test_target_arch(armv4t "" "-march=armv4t" "-mfloat-abi=soft")
+ test_target_arch(armv6m "" "-march=armv6m" "-mfloat-abi=soft")
+ test_target_arch(arm "" "-march=armv7-a" "-mfloat-abi=soft")
+ test_target_arch(armhf "" "-march=armv7-a" "-mfloat-abi=hard")
+ endif()
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "avr")
+ test_target_arch(avr "__AVR__" "--target=avr")
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "aarch32")
+ test_target_arch(aarch32 "" "-march=armv8-a")
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "aarch64")
+ test_target_arch(aarch64 "" "-march=armv8-a")
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "riscv32")
+ test_target_arch(riscv32 "" "")
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "riscv64")
+ test_target_arch(riscv64 "" "")
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "wasm32")
+ test_target_arch(wasm32 "" "--target=wasm32-unknown-unknown")
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "wasm64")
+ test_target_arch(wasm64 "" "--target=wasm64-unknown-unknown")
+ elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "ve")
+ test_target_arch(ve "__ve__" "--target=ve-unknown-none")
+ endif()
+ set(COMPILER_RT_OS_SUFFIX "")
+ endif()
+endmacro()
Index: create-16.0.2-compiler-rt-synonyms-patch/create.patch.sh
===================================================================
--- create-16.0.2-compiler-rt-synonyms-patch/create.patch.sh (nonexistent)
+++ create-16.0.2-compiler-rt-synonyms-patch/create.patch.sh (revision 40)
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+VERSION=16.0.2
+
+tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
+mv llvm-$VERSION llvm-$VERSION-orig
+
+cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
+
+diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-compiler-rt-synonyms.patch
+
+mv llvm-$VERSION-compiler-rt-synonyms.patch ../patches
+
+rm -rf ./llvm-$VERSION
+rm -rf ./llvm-$VERSION-orig
Property changes on: create-16.0.2-compiler-rt-synonyms-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: create-16.0.2-compiler-rt-synonyms-patch/file.list
===================================================================
--- create-16.0.2-compiler-rt-synonyms-patch/file.list (nonexistent)
+++ create-16.0.2-compiler-rt-synonyms-patch/file.list (revision 40)
@@ -0,0 +1,2 @@
+llvm-16.0.2/compiler-rt/cmake/builtin-config-ix.cmake
+llvm-16.0.2/compiler-rt/cmake/crt-config-ix.cmake
Index: create-16.0.2-compiler-rt-synonyms-patch/llvm-16.0.2-new/compiler-rt/cmake/builtin-config-ix.cmake
===================================================================
--- create-16.0.2-compiler-rt-synonyms-patch/llvm-16.0.2-new/compiler-rt/cmake/builtin-config-ix.cmake (nonexistent)
+++ create-16.0.2-compiler-rt-synonyms-patch/llvm-16.0.2-new/compiler-rt/cmake/builtin-config-ix.cmake (revision 40)
@@ -0,0 +1,217 @@
+include(BuiltinTests)
+include(CheckCSourceCompiles)
+
+# Make all the tests only check the compiler
+set(TEST_COMPILE_ONLY On)
+
+# Check host compiler support for certain flags
+builtin_check_c_compiler_flag(-fPIC COMPILER_RT_HAS_FPIC_FLAG)
+builtin_check_c_compiler_flag(-fPIE COMPILER_RT_HAS_FPIE_FLAG)
+builtin_check_c_compiler_flag(-fno-builtin COMPILER_RT_HAS_FNO_BUILTIN_FLAG)
+builtin_check_c_compiler_flag(-std=c11 COMPILER_RT_HAS_STD_C11_FLAG)
+builtin_check_c_compiler_flag(-fvisibility=hidden COMPILER_RT_HAS_VISIBILITY_HIDDEN_FLAG)
+builtin_check_c_compiler_flag(-fomit-frame-pointer COMPILER_RT_HAS_OMIT_FRAME_POINTER_FLAG)
+builtin_check_c_compiler_flag(-ffreestanding COMPILER_RT_HAS_FFREESTANDING_FLAG)
+builtin_check_c_compiler_flag(-fxray-instrument COMPILER_RT_HAS_XRAY_COMPILER_FLAG)
+
+builtin_check_c_compiler_source(COMPILER_RT_HAS_ATOMIC_KEYWORD
+"
+int foo(int x, int y) {
+ _Atomic int result = x * y;
+ return result;
+}
+")
+
+builtin_check_c_compiler_source(COMPILER_RT_HAS_ASM_LSE
+"
+asm(\".arch armv8-a+lse\");
+asm(\"cas w0, w1, [x2]\");
+")
+
+set(ARM64 aarch64)
+set(ARM32 arm armhf armv4t armv5te armv6 armv6m armv7m armv7em armv7 armv7s armv7k armv8m.main armv8.1m.main)
+set(AVR avr)
+set(HEXAGON hexagon)
+set(X86 i386)
+set(X86_64 x86_64)
+set(LOONGARCH64 loongarch64)
+set(MIPS32 mips mipsel)
+set(MIPS64 mips64 mips64el)
+set(PPC32 ppc powerpc powerpcspe)
+set(PPC64 ppc64 powerpc64 ppc64le powerpc64le)
+set(RISCV32 riscv32)
+set(RISCV64 riscv64)
+set(SPARC sparc)
+set(SPARCV9 sparcv9)
+set(WASM32 wasm32)
+set(WASM64 wasm64)
+set(VE ve)
+
+if(APPLE)
+ set(ARM64 arm64 arm64e)
+ set(ARM32 armv7 armv7k armv7s)
+ set(X86_64 x86_64 x86_64h)
+endif()
+
+set(ALL_BUILTIN_SUPPORTED_ARCH
+ ${X86} ${X86_64} ${ARM32} ${ARM64} ${AVR}
+ ${HEXAGON} ${MIPS32} ${MIPS64} ${PPC32} ${PPC64}
+ ${RISCV32} ${RISCV64} ${SPARC} ${SPARCV9}
+ ${WASM32} ${WASM64} ${VE} ${LOONGARCH64})
+
+include(CompilerRTUtils)
+include(CompilerRTDarwinUtils)
+
+if(APPLE)
+
+ find_darwin_sdk_dir(DARWIN_osx_SYSROOT macosx)
+ find_darwin_sdk_dir(DARWIN_iossim_SYSROOT iphonesimulator)
+ find_darwin_sdk_dir(DARWIN_ios_SYSROOT iphoneos)
+ find_darwin_sdk_dir(DARWIN_watchossim_SYSROOT watchsimulator)
+ find_darwin_sdk_dir(DARWIN_watchos_SYSROOT watchos)
+ find_darwin_sdk_dir(DARWIN_tvossim_SYSROOT appletvsimulator)
+ find_darwin_sdk_dir(DARWIN_tvos_SYSROOT appletvos)
+
+ # Get supported architecture from SDKSettings.
+ function(sdk_has_arch_support sdk_path os arch has_support)
+ execute_process(COMMAND
+ /usr/libexec/PlistBuddy -c "Print :SupportedTargets:${os}:Archs" ${sdk_path}/SDKSettings.plist
+ OUTPUT_VARIABLE SDK_SUPPORTED_ARCHS
+ RESULT_VARIABLE PLIST_ERROR
+ ERROR_QUIET)
+ if (PLIST_ERROR EQUAL 0 AND
+ SDK_SUPPORTED_ARCHS MATCHES " ${arch}\n")
+ message(STATUS "Found ${arch} support in ${sdk_path}/SDKSettings.plist")
+ set("${has_support}" On PARENT_SCOPE)
+ else()
+ message(STATUS "No ${arch} support in ${sdk_path}/SDKSettings.plist")
+ set("${has_support}" Off PARENT_SCOPE)
+ endif()
+ endfunction()
+
+ set(DARWIN_EMBEDDED_PLATFORMS)
+ set(DARWIN_osx_BUILTIN_MIN_VER 10.7)
+ set(DARWIN_osx_BUILTIN_MIN_VER_FLAG
+ -mmacosx-version-min=${DARWIN_osx_BUILTIN_MIN_VER})
+ set(DARWIN_osx_BUILTIN_ALL_POSSIBLE_ARCHS ${X86} ${X86_64})
+ # Add support for arm64 macOS if available in SDK.
+ foreach(arch ${ARM64})
+ sdk_has_arch_support(${DARWIN_osx_SYSROOT} macosx ${arch} MACOS_ARM_SUPPORT)
+ if (MACOS_ARM_SUPPORT)
+ list(APPEND DARWIN_osx_BUILTIN_ALL_POSSIBLE_ARCHS ${arch})
+ endif()
+ endforeach(arch)
+
+ if(COMPILER_RT_ENABLE_IOS)
+ list(APPEND DARWIN_EMBEDDED_PLATFORMS ios)
+ set(DARWIN_ios_MIN_VER_FLAG -miphoneos-version-min)
+ set(DARWIN_ios_BUILTIN_MIN_VER 6.0)
+ set(DARWIN_ios_BUILTIN_MIN_VER_FLAG
+ ${DARWIN_ios_MIN_VER_FLAG}=${DARWIN_ios_BUILTIN_MIN_VER})
+ set(DARWIN_ios_BUILTIN_ALL_POSSIBLE_ARCHS ${ARM64} ${ARM32})
+ set(DARWIN_iossim_BUILTIN_ALL_POSSIBLE_ARCHS ${X86} ${X86_64})
+ find_darwin_sdk_version(iossim_sdk_version "iphonesimulator")
+ if ("${iossim_sdk_version}" VERSION_GREATER 14.0 OR "${iossim_sdk_version}" VERSION_EQUAL 14.0)
+ list(APPEND DARWIN_iossim_BUILTIN_ALL_POSSIBLE_ARCHS arm64)
+ endif()
+ endif()
+ if(COMPILER_RT_ENABLE_WATCHOS)
+ list(APPEND DARWIN_EMBEDDED_PLATFORMS watchos)
+ set(DARWIN_watchos_MIN_VER_FLAG -mwatchos-version-min)
+ set(DARWIN_watchos_BUILTIN_MIN_VER 2.0)
+ set(DARWIN_watchos_BUILTIN_MIN_VER_FLAG
+ ${DARWIN_watchos_MIN_VER_FLAG}=${DARWIN_watchos_BUILTIN_MIN_VER})
+ set(DARWIN_watchos_BUILTIN_ALL_POSSIBLE_ARCHS armv7 armv7k arm64_32)
+ set(DARWIN_watchossim_BUILTIN_ALL_POSSIBLE_ARCHS ${X86})
+ find_darwin_sdk_version(watchossim_sdk_version "watchsimulator")
+ if ("${watchossim_sdk_version}" VERSION_GREATER 7.0 OR "${watchossim_sdk_version}" VERSION_EQUAL 7.0)
+ list(APPEND DARWIN_watchossim_BUILTIN_ALL_POSSIBLE_ARCHS arm64)
+ endif()
+ endif()
+ if(COMPILER_RT_ENABLE_TVOS)
+ list(APPEND DARWIN_EMBEDDED_PLATFORMS tvos)
+ set(DARWIN_tvos_MIN_VER_FLAG -mtvos-version-min)
+ set(DARWIN_tvos_BUILTIN_MIN_VER 9.0)
+ set(DARWIN_tvos_BUILTIN_MIN_VER_FLAG
+ ${DARWIN_tvos_MIN_VER_FLAG}=${DARWIN_tvos_BUILTIN_MIN_VER})
+ set(DARWIN_tvos_BUILTIN_ALL_POSSIBLE_ARCHS armv7 arm64)
+ set(DARWIN_tvossim_BUILTIN_ALL_POSSIBLE_ARCHS ${X86} ${X86_64})
+ find_darwin_sdk_version(tvossim_sdk_version "appletvsimulator")
+ if ("${tvossim_sdk_version}" VERSION_GREATER 14.0 OR "${tvossim_sdk_version}" VERSION_EQUAL 14.0)
+ list(APPEND DARWIN_tvossim_BUILTIN_ALL_POSSIBLE_ARCHS arm64)
+ endif()
+ endif()
+
+ set(BUILTIN_SUPPORTED_OS osx)
+
+ # We're setting the flag manually for each target OS
+ set(CMAKE_OSX_DEPLOYMENT_TARGET "")
+
+ # NOTE: We deliberately avoid using `DARWIN_<os>_ARCHS` here because that is
+ # used by `config-ix.cmake` in the context of building the rest of
+ # compiler-rt where the global `${TEST_COMPILE_ONLY}` (used by
+ # `darwin_test_archs()`) has a different value.
+ darwin_test_archs(osx
+ DARWIN_osx_BUILTIN_ARCHS
+ ${DARWIN_osx_BUILTIN_ALL_POSSIBLE_ARCHS}
+ )
+ message(STATUS "OSX supported builtin arches: ${DARWIN_osx_BUILTIN_ARCHS}")
+ foreach(arch ${DARWIN_osx_BUILTIN_ARCHS})
+ list(APPEND COMPILER_RT_SUPPORTED_ARCH ${arch})
+ set(CAN_TARGET_${arch} 1)
+ endforeach()
+
+ foreach(platform ${DARWIN_EMBEDDED_PLATFORMS})
+ if(DARWIN_${platform}sim_SYSROOT)
+ set(DARWIN_${platform}sim_BUILTIN_MIN_VER
+ ${DARWIN_${platform}_BUILTIN_MIN_VER})
+ set(DARWIN_${platform}sim_BUILTIN_MIN_VER_FLAG
+ ${DARWIN_${platform}_BUILTIN_MIN_VER_FLAG})
+
+ set(DARWIN_${platform}sim_SKIP_CC_KEXT On)
+
+ darwin_test_archs(${platform}sim
+ DARWIN_${platform}sim_BUILTIN_ARCHS
+ ${DARWIN_${platform}sim_BUILTIN_ALL_POSSIBLE_ARCHS}
+ )
+ message(STATUS "${platform} Simulator supported builtin arches: ${DARWIN_${platform}sim_BUILTIN_ARCHS}")
+ if(DARWIN_${platform}sim_BUILTIN_ARCHS)
+ list(APPEND BUILTIN_SUPPORTED_OS ${platform}sim)
+ endif()
+ foreach(arch ${DARWIN_${platform}sim_BUILTIN_ARCHS})
+ list(APPEND COMPILER_RT_SUPPORTED_ARCH ${arch})
+ set(CAN_TARGET_${arch} 1)
+ endforeach()
+ endif()
+
+ if(DARWIN_${platform}_SYSROOT)
+ darwin_test_archs(${platform}
+ DARWIN_${platform}_BUILTIN_ARCHS
+ ${DARWIN_${platform}_BUILTIN_ALL_POSSIBLE_ARCHS}
+ )
+ message(STATUS "${platform} supported builtin arches: ${DARWIN_${platform}_BUILTIN_ARCHS}")
+ if(DARWIN_${platform}_BUILTIN_ARCHS)
+ list(APPEND BUILTIN_SUPPORTED_OS ${platform})
+ endif()
+ foreach(arch ${DARWIN_${platform}_BUILTIN_ARCHS})
+ list(APPEND COMPILER_RT_SUPPORTED_ARCH ${arch})
+ set(CAN_TARGET_${arch} 1)
+ endforeach()
+ endif()
+ endforeach()
+
+ list_intersect(BUILTIN_SUPPORTED_ARCH ALL_BUILTIN_SUPPORTED_ARCH COMPILER_RT_SUPPORTED_ARCH)
+
+else()
+ # If we're not building the builtins standalone, just rely on the tests in
+ # config-ix.cmake to tell us what to build. Otherwise we need to do some leg
+ # work here...
+ if(COMPILER_RT_BUILTINS_STANDALONE_BUILD)
+ test_targets()
+ endif()
+ # Architectures supported by compiler-rt libraries.
+ filter_available_targets(BUILTIN_SUPPORTED_ARCH
+ ${ALL_BUILTIN_SUPPORTED_ARCH})
+endif()
+
+message(STATUS "Builtin supported architectures: ${BUILTIN_SUPPORTED_ARCH}")
Index: create-16.0.2-compiler-rt-synonyms-patch/llvm-16.0.2-new/compiler-rt/cmake/crt-config-ix.cmake
===================================================================
--- create-16.0.2-compiler-rt-synonyms-patch/llvm-16.0.2-new/compiler-rt/cmake/crt-config-ix.cmake (nonexistent)
+++ create-16.0.2-compiler-rt-synonyms-patch/llvm-16.0.2-new/compiler-rt/cmake/crt-config-ix.cmake (revision 40)
@@ -0,0 +1,51 @@
+include(BuiltinTests)
+include(CheckCSourceCompiles)
+
+# Make all the tests only check the compiler
+set(TEST_COMPILE_ONLY On)
+
+builtin_check_c_compiler_flag(-fPIC COMPILER_RT_HAS_FPIC_FLAG)
+builtin_check_c_compiler_flag(-std=c11 COMPILER_RT_HAS_STD_C11_FLAG)
+builtin_check_c_compiler_flag(-Wno-pedantic COMPILER_RT_HAS_WNO_PEDANTIC)
+builtin_check_c_compiler_flag(-fno-lto COMPILER_RT_HAS_FNO_LTO_FLAG)
+builtin_check_c_compiler_flag(-fno-profile-generate COMPILER_RT_HAS_FNO_PROFILE_GENERATE_FLAG)
+builtin_check_c_compiler_flag(-fno-profile-instr-generate COMPILER_RT_HAS_FNO_PROFILE_INSTR_GENERATE_FLAG)
+builtin_check_c_compiler_flag(-fno-profile-instr-use COMPILER_RT_HAS_FNO_PROFILE_INSTR_USE_FLAG)
+
+if(ANDROID)
+ set(OS_NAME "Android")
+else()
+ set(OS_NAME "${CMAKE_SYSTEM_NAME}")
+endif()
+
+set(ARM64 aarch64)
+set(ARM32 arm armhf)
+set(HEXAGON hexagon)
+set(X86 i386)
+set(X86_64 x86_64)
+set(LOONGARCH64 loongarch64)
+set(PPC32 ppc powerpc powerpcspe)
+set(PPC64 ppc64 powerpc64 ppc64le powerpc64le)
+set(RISCV32 riscv32)
+set(RISCV64 riscv64)
+set(VE ve)
+
+set(ALL_CRT_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64} ${PPC32}
+ ${PPC64} ${RISCV32} ${RISCV64} ${VE} ${HEXAGON} ${LOONGARCH64})
+
+include(CompilerRTUtils)
+
+if(NOT APPLE)
+ if(COMPILER_RT_CRT_STANDALONE_BUILD)
+ test_targets()
+ endif()
+ # Architectures supported by compiler-rt crt library.
+ filter_available_targets(CRT_SUPPORTED_ARCH ${ALL_CRT_SUPPORTED_ARCH})
+ message(STATUS "Supported architectures for crt: ${CRT_SUPPORTED_ARCH}")
+endif()
+
+if (CRT_SUPPORTED_ARCH AND OS_NAME MATCHES "Linux" AND NOT LLVM_USE_SANITIZER)
+ set(COMPILER_RT_HAS_CRT TRUE)
+else()
+ set(COMPILER_RT_HAS_CRT FALSE)
+endif()
Index: create-16.0.2-lldb-instr-link-patch/create.patch.sh
===================================================================
--- create-16.0.2-lldb-instr-link-patch/create.patch.sh (nonexistent)
+++ create-16.0.2-lldb-instr-link-patch/create.patch.sh (revision 40)
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+VERSION=16.0.2
+
+tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
+mv llvm-$VERSION llvm-$VERSION-orig
+
+cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
+
+diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-lldb-instr-link.patch
+
+mv llvm-$VERSION-lldb-instr-link.patch ../patches
+
+rm -rf ./llvm-$VERSION
+rm -rf ./llvm-$VERSION-orig
Property changes on: create-16.0.2-lldb-instr-link-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: create-16.0.2-lldb-instr-link-patch/file.list
===================================================================
--- create-16.0.2-lldb-instr-link-patch/file.list (nonexistent)
+++ create-16.0.2-lldb-instr-link-patch/file.list (revision 40)
@@ -0,0 +1 @@
+llvm-16.0.2/lldb/tools/lldb-instr/CMakeLists.txt
Index: create-16.0.2-lldb-instr-link-patch/llvm-16.0.2-new/lldb/tools/lldb-instr/CMakeLists.txt
===================================================================
--- create-16.0.2-lldb-instr-link-patch/llvm-16.0.2-new/lldb/tools/lldb-instr/CMakeLists.txt (nonexistent)
+++ create-16.0.2-lldb-instr-link-patch/llvm-16.0.2-new/lldb/tools/lldb-instr/CMakeLists.txt (revision 40)
@@ -0,0 +1,16 @@
+add_lldb_tool(lldb-instr
+ Instrument.cpp
+
+ CLANG_LIBS
+ clangAST
+ clangBasic
+ clangCodeGen
+ clangFrontend
+ clangLex
+ clangRewrite
+ clangSerialization
+ clangTooling
+
+ LINK_COMPONENTS
+ Support
+ )
Index: create-16.0.2-lldb-lua-version-patch/create.patch.sh
===================================================================
--- create-16.0.2-lldb-lua-version-patch/create.patch.sh (nonexistent)
+++ create-16.0.2-lldb-lua-version-patch/create.patch.sh (revision 40)
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+VERSION=16.0.2
+
+tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
+mv llvm-$VERSION llvm-$VERSION-orig
+
+cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
+
+diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-lldb-lua-version.patch
+
+mv llvm-$VERSION-lldb-lua-version.patch ../patches
+
+rm -rf ./llvm-$VERSION
+rm -rf ./llvm-$VERSION-orig
Property changes on: create-16.0.2-lldb-lua-version-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: create-16.0.2-lldb-lua-version-patch/file.list
===================================================================
--- create-16.0.2-lldb-lua-version-patch/file.list (nonexistent)
+++ create-16.0.2-lldb-lua-version-patch/file.list (revision 40)
@@ -0,0 +1 @@
+llvm-16.0.2/lldb/cmake/modules/FindLuaAndSwig.cmake
Index: create-16.0.2-lldb-lua-version-patch/llvm-16.0.2-new/lldb/cmake/modules/FindLuaAndSwig.cmake
===================================================================
--- create-16.0.2-lldb-lua-version-patch/llvm-16.0.2-new/lldb/cmake/modules/FindLuaAndSwig.cmake (nonexistent)
+++ create-16.0.2-lldb-lua-version-patch/llvm-16.0.2-new/lldb/cmake/modules/FindLuaAndSwig.cmake (revision 40)
@@ -0,0 +1,30 @@
+#.rst:
+# FindLuaAndSwig
+# --------------
+#
+# Find Lua and SWIG as a whole.
+
+if(LUA_LIBRARIES AND LUA_INCLUDE_DIR AND LLDB_ENABLE_SWIG)
+ set(LUAANDSWIG_FOUND TRUE)
+else()
+ if (LLDB_ENABLE_SWIG)
+ find_package(Lua 5.4)
+ if(LUA_FOUND)
+ mark_as_advanced(
+ LUA_LIBRARIES
+ LUA_INCLUDE_DIR)
+ endif()
+ else()
+ message(STATUS "SWIG 3 or later is required for Lua support in LLDB but could not be found")
+ endif()
+
+
+ include(FindPackageHandleStandardArgs)
+ find_package_handle_standard_args(LuaAndSwig
+ FOUND_VAR
+ LUAANDSWIG_FOUND
+ REQUIRED_VARS
+ LUA_LIBRARIES
+ LUA_INCLUDE_DIR
+ LLDB_ENABLE_SWIG)
+endif()
Index: create-16.0.2-lldb-riscv64-patch/create.patch.sh
===================================================================
--- create-16.0.2-lldb-riscv64-patch/create.patch.sh (nonexistent)
+++ create-16.0.2-lldb-riscv64-patch/create.patch.sh (revision 40)
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+VERSION=16.0.2
+
+tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
+mv llvm-$VERSION llvm-$VERSION-orig
+
+cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
+
+diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-lldb-riscv64.patch
+
+mv llvm-$VERSION-lldb-riscv64.patch ../patches
+
+rm -rf ./llvm-$VERSION
+rm -rf ./llvm-$VERSION-orig
Property changes on: create-16.0.2-lldb-riscv64-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: create-16.0.2-lldb-riscv64-patch/file.list
===================================================================
--- create-16.0.2-lldb-riscv64-patch/file.list (nonexistent)
+++ create-16.0.2-lldb-riscv64-patch/file.list (revision 40)
@@ -0,0 +1,2 @@
+llvm-16.0.2/lldb/source/API/CMakeLists.txt
+llvm-16.0.2/lldb/tools/lldb-server/CMakeLists.txt
Index: create-16.0.2-lldb-riscv64-patch/llvm-16.0.2-new/lldb/source/API/CMakeLists.txt
===================================================================
--- create-16.0.2-lldb-riscv64-patch/llvm-16.0.2-new/lldb/source/API/CMakeLists.txt (nonexistent)
+++ create-16.0.2-lldb-riscv64-patch/llvm-16.0.2-new/lldb/source/API/CMakeLists.txt (revision 40)
@@ -0,0 +1,228 @@
+get_property(LLDB_ALL_PLUGINS GLOBAL PROPERTY LLDB_PLUGINS)
+
+if(LLDB_BUILD_FRAMEWORK)
+ set(option_install_prefix INSTALL_PREFIX ${LLDB_FRAMEWORK_INSTALL_DIR})
+ set(option_framework FRAMEWORK)
+endif()
+
+if(LLDB_ENABLE_PYTHON)
+ get_target_property(python_bindings_dir swig_wrapper_python BINARY_DIR)
+ set(lldb_python_wrapper ${python_bindings_dir}/LLDBWrapPython.cpp)
+endif()
+
+if(LLDB_ENABLE_LUA)
+ get_target_property(lua_bindings_dir swig_wrapper_lua BINARY_DIR)
+ set(lldb_lua_wrapper ${lua_bindings_dir}/LLDBWrapLua.cpp)
+endif()
+
+add_lldb_library(liblldb SHARED ${option_framework}
+ SBAddress.cpp
+ SBAttachInfo.cpp
+ SBBlock.cpp
+ SBBreakpoint.cpp
+ SBBreakpointLocation.cpp
+ SBBreakpointName.cpp
+ SBBreakpointOptionCommon.cpp
+ SBBroadcaster.cpp
+ SBCommandInterpreter.cpp
+ SBCommandInterpreterRunOptions.cpp
+ SBCommandReturnObject.cpp
+ SBCommunication.cpp
+ SBCompileUnit.cpp
+ SBData.cpp
+ SBDebugger.cpp
+ SBDeclaration.cpp
+ SBEnvironment.cpp
+ SBError.cpp
+ SBEvent.cpp
+ SBExecutionContext.cpp
+ SBExpressionOptions.cpp
+ SBFileSpec.cpp
+ SBFile.cpp
+ SBFileSpecList.cpp
+ SBFrame.cpp
+ SBFunction.cpp
+ SBHostOS.cpp
+ SBInstruction.cpp
+ SBInstructionList.cpp
+ SBLanguageRuntime.cpp
+ SBLaunchInfo.cpp
+ SBLineEntry.cpp
+ SBListener.cpp
+ SBMemoryRegionInfo.cpp
+ SBMemoryRegionInfoList.cpp
+ SBModule.cpp
+ SBModuleSpec.cpp
+ SBPlatform.cpp
+ SBProcess.cpp
+ SBProcessInfo.cpp
+ SBQueue.cpp
+ SBQueueItem.cpp
+ SBReproducer.cpp
+ SBSection.cpp
+ SBSourceManager.cpp
+ SBStream.cpp
+ SBStringList.cpp
+ SBStructuredData.cpp
+ SBSymbol.cpp
+ SBSymbolContext.cpp
+ SBSymbolContextList.cpp
+ SBTarget.cpp
+ SBThread.cpp
+ SBThreadCollection.cpp
+ SBThreadPlan.cpp
+ SBTrace.cpp
+ SBTraceCursor.cpp
+ SBType.cpp
+ SBTypeCategory.cpp
+ SBTypeEnumMember.cpp
+ SBTypeFilter.cpp
+ SBTypeFormat.cpp
+ SBTypeNameSpecifier.cpp
+ SBTypeSummary.cpp
+ SBTypeSynthetic.cpp
+ SBValue.cpp
+ SBValueList.cpp
+ SBVariablesOptions.cpp
+ SBWatchpoint.cpp
+ SBUnixSignals.cpp
+ SystemInitializerFull.cpp
+ ${lldb_python_wrapper}
+ ${lldb_lua_wrapper}
+
+ LINK_LIBS
+ lldbBreakpoint
+ lldbCore
+ lldbDataFormatters
+ lldbExpression
+ lldbHost
+ lldbInitialization
+ lldbInterpreter
+ lldbSymbol
+ lldbTarget
+ lldbUtility
+ lldbVersion
+ ${LLDB_ALL_PLUGINS}
+ LINK_COMPONENTS
+ Support
+
+ ${option_install_prefix}
+)
+
+if(HAVE_CXX_ATOMICS_WITH_LIB OR HAVE_CXX_ATOMICS64_WITH_LIB)
+ target_link_libraries(liblldb PRIVATE atomic)
+endif()
+
+# lib/pythonX.Y/dist-packages/lldb/_lldb.so is a symlink to lib/liblldb.so,
+# which depends on lib/libLLVM*.so (BUILD_SHARED_LIBS) or lib/libLLVM-10git.so
+# (LLVM_LINK_LLVM_DYLIB). Add an additional rpath $ORIGIN/../../../../lib so
+# that _lldb.so can be loaded from Python.
+if(LLDB_ENABLE_PYTHON AND (BUILD_SHARED_LIBS OR LLVM_LINK_LLVM_DYLIB) AND UNIX AND NOT APPLE)
+ set_property(TARGET liblldb APPEND PROPERTY INSTALL_RPATH "\$ORIGIN/../../../../lib${LLVM_LIBDIR_SUFFIX}")
+endif()
+
+if(Python3_RPATH)
+ set_property(TARGET liblldb APPEND PROPERTY INSTALL_RPATH "${Python3_RPATH}")
+ set_property(TARGET liblldb APPEND PROPERTY BUILD_RPATH "${Python3_RPATH}")
+endif()
+
+
+if(LLDB_ENABLE_PYTHON)
+ add_dependencies(liblldb swig_wrapper_python)
+
+ if (MSVC)
+ set_property(SOURCE ${lldb_python_wrapper} APPEND_STRING PROPERTY COMPILE_FLAGS " /W0")
+ else()
+ set_property(SOURCE ${lldb_python_wrapper} APPEND_STRING PROPERTY COMPILE_FLAGS " -w")
+ endif()
+
+ set_source_files_properties(${lldb_python_wrapper} PROPERTIES GENERATED ON)
+ if (CLANG_CL)
+ set_property(SOURCE ${lldb_python_wrapper} APPEND_STRING
+ PROPERTY COMPILE_FLAGS " -Wno-unused-function")
+ endif()
+ if (LLVM_COMPILER_IS_GCC_COMPATIBLE AND
+ NOT "${CMAKE_SYSTEM_NAME}" MATCHES "Darwin")
+ set_property(SOURCE ${lldb_python_wrapper} APPEND_STRING
+ PROPERTY COMPILE_FLAGS " -Wno-sequence-point -Wno-cast-qual")
+ endif ()
+endif()
+
+if(LLDB_ENABLE_LUA)
+ add_dependencies(liblldb swig_wrapper_lua)
+ target_include_directories(liblldb PRIVATE ${LUA_INCLUDE_DIR})
+
+ if (MSVC)
+ set_property(SOURCE ${lldb_lua_wrapper} APPEND_STRING PROPERTY COMPILE_FLAGS " /W0")
+ else()
+ set_property(SOURCE ${lldb_lua_wrapper} APPEND_STRING PROPERTY COMPILE_FLAGS " -w")
+ endif()
+
+ set_source_files_properties(${lldb_lua_wrapper} PROPERTIES GENERATED ON)
+endif()
+
+set_target_properties(liblldb
+ PROPERTIES
+ VERSION ${LLDB_VERSION}
+)
+
+target_compile_definitions(liblldb PRIVATE LLDB_IN_LIBLLDB)
+if (NOT CMAKE_SYSTEM_NAME MATCHES "Windows")
+ if (NOT LLDB_EXPORT_ALL_SYMBOLS)
+ # If we're not exporting all symbols, we'll want to explicitly set
+ # the exported symbols here. This prevents 'log enable --stack ...'
+ # from working on some systems but limits the liblldb size.
+ MESSAGE("-- Symbols (liblldb): exporting all symbols from the lldb namespace")
+ add_llvm_symbol_exports(liblldb ${CMAKE_CURRENT_SOURCE_DIR}/liblldb.exports)
+ else()
+ # Don't use an explicit export. Instead, tell the linker to
+ # export all symbols.
+ MESSAGE("-- Symbols (liblldb): exporting all symbols from the lldb and lldb_private namespaces")
+ add_llvm_symbol_exports(liblldb ${CMAKE_CURRENT_SOURCE_DIR}/liblldb-private.exports)
+ endif()
+ set_target_properties(liblldb_exports PROPERTIES FOLDER "lldb misc")
+endif()
+
+if (NOT MSVC)
+ set_target_properties(liblldb
+ PROPERTIES
+ OUTPUT_NAME lldb
+ )
+endif()
+
+# The Clang expression parser in LLDB requires the Clang resource directory to function.
+if (TARGET clang-resource-headers)
+ # If building alongside Clang, just add a dependency to ensure it is build together with liblldb.
+ add_dependencies(liblldb clang-resource-headers)
+else()
+ # In a standalone build create a symlink from the LLDB library directory that points to the
+ # resource directory in the Clang library directory. LLDB searches relative to its install path,
+ # and the symlink is created in the same relative path as the resource directory of Clang when
+ # building alongside Clang.
+ # When building the LLDB framework, this isn't necessary as there we copy everything we need into
+ # the framework (including the Clang resourece directory).
+ if(NOT LLDB_BUILD_FRAMEWORK)
+ set(LLDB_CLANG_RESOURCE_DIR_PARENT "$<TARGET_FILE_DIR:liblldb>/clang")
+ file(MAKE_DIRECTORY "${LLDB_CLANG_RESOURCE_DIR_PARENT}")
+ add_custom_command(TARGET liblldb POST_BUILD
+ COMMENT "Linking Clang resource dir into LLDB build directory: ${LLDB_CLANG_RESOURCE_DIR_PARENT}"
+ COMMAND ${CMAKE_COMMAND} -E make_directory "${LLDB_CLANG_RESOURCE_DIR_PARENT}"
+ COMMAND ${CMAKE_COMMAND} -E create_symlink "${LLDB_EXTERNAL_CLANG_RESOURCE_DIR}"
+ "${LLDB_CLANG_RESOURCE_DIR_PARENT}/${LLDB_CLANG_RESOURCE_DIR_NAME}"
+ )
+ endif()
+endif()
+
+if(LLDB_BUILD_FRAMEWORK)
+ include(LLDBFramework)
+
+ if (TARGET install-liblldb)
+ add_dependencies(install-liblldb
+ lldb-framework-cleanup)
+ endif()
+
+ if (TARGET install-liblldb-stripped)
+ add_dependencies(install-liblldb-stripped
+ lldb-framework-cleanup)
+ endif()
+endif()
Index: create-16.0.2-lldb-riscv64-patch/llvm-16.0.2-new/lldb/tools/lldb-server/CMakeLists.txt
===================================================================
--- create-16.0.2-lldb-riscv64-patch/llvm-16.0.2-new/lldb/tools/lldb-server/CMakeLists.txt (nonexistent)
+++ create-16.0.2-lldb-riscv64-patch/llvm-16.0.2-new/lldb/tools/lldb-server/CMakeLists.txt (revision 40)
@@ -0,0 +1,74 @@
+set(LLVM_TARGET_DEFINITIONS LLGSOptions.td)
+tablegen(LLVM LLGSOptions.inc -gen-opt-parser-defs)
+add_public_tablegen_target(LLGSOptionsTableGen)
+set_target_properties(LLGSOptionsTableGen PROPERTIES FOLDER "lldb misc")
+
+set(LLDB_PLUGINS)
+
+if(CMAKE_SYSTEM_NAME MATCHES "Linux|Android")
+ list(APPEND LLDB_PLUGINS lldbPluginProcessLinux)
+endif()
+
+if(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
+ list(APPEND LLDB_PLUGINS lldbPluginProcessFreeBSD)
+endif()
+
+if(CMAKE_SYSTEM_NAME MATCHES "NetBSD")
+ list(APPEND LLDB_PLUGINS lldbPluginProcessNetBSD)
+endif()
+
+if(CMAKE_SYSTEM_NAME MATCHES "Darwin")
+ list(APPEND LLDB_PLUGINS lldbPluginObjectFileMachO)
+elseif(CMAKE_SYSTEM_NAME MATCHES "Windows")
+ list(APPEND LLDB_PLUGINS lldbPluginObjectFilePECOFF)
+else()
+ list(APPEND LLDB_PLUGINS lldbPluginObjectFileELF)
+endif()
+
+if(APPLE_EMBEDDED)
+ if(LLDB_CODESIGN_IDENTITY)
+ # Use explicit LLDB identity
+ set(LLVM_CODESIGNING_IDENTITY ${LLDB_CODESIGN_IDENTITY})
+ else()
+ # Use explicit LLVM identity or default to lldb_codesign if empty
+ if(NOT LLVM_CODESIGNING_IDENTITY)
+ set(LLVM_CODESIGNING_IDENTITY lldb_codesign)
+ endif()
+ endif()
+endif()
+
+add_lldb_tool(lldb-server
+ Acceptor.cpp
+ lldb-gdbserver.cpp
+ lldb-platform.cpp
+ lldb-server.cpp
+ LLDBServerUtilities.cpp
+ SystemInitializerLLGS.cpp
+
+ LINK_LIBS
+ lldbHost
+ lldbInitialization
+ lldbVersion
+ ${LLDB_PLUGINS}
+ lldbPluginInstructionARM
+ lldbPluginInstructionLoongArch
+ lldbPluginInstructionMIPS
+ lldbPluginInstructionMIPS64
+ lldbPluginInstructionRISCV
+ ${LLDB_SYSTEM_LIBS}
+
+ LINK_COMPONENTS
+ Option
+ Support
+)
+
+if(HAVE_CXX_ATOMICS_WITH_LIB OR HAVE_CXX_ATOMICS64_WITH_LIB)
+ target_link_libraries(lldb-server PRIVATE atomic)
+endif()
+
+add_dependencies(lldb-server
+ LLGSOptionsTableGen
+ ${tablegen_deps}
+)
+target_include_directories(lldb-server PRIVATE "${LLDB_SOURCE_DIR}/source")
+target_link_libraries(lldb-server PRIVATE ${LLDB_SYSTEM_LIBS})
Index: create-16.0.2-lldb-set-revision-patch/create.patch.sh
===================================================================
--- create-16.0.2-lldb-set-revision-patch/create.patch.sh (nonexistent)
+++ create-16.0.2-lldb-set-revision-patch/create.patch.sh (revision 40)
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+VERSION=16.0.2
+
+tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
+mv llvm-$VERSION llvm-$VERSION-orig
+
+cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
+
+diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-lldb-set-revision.patch
+
+mv llvm-$VERSION-lldb-set-revision.patch ../patches
+
+rm -rf ./llvm-$VERSION
+rm -rf ./llvm-$VERSION-orig
Property changes on: create-16.0.2-lldb-set-revision-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: create-16.0.2-lldb-set-revision-patch/file.list
===================================================================
--- create-16.0.2-lldb-set-revision-patch/file.list (nonexistent)
+++ create-16.0.2-lldb-set-revision-patch/file.list (revision 40)
@@ -0,0 +1 @@
+llvm-16.0.2/lldb/source/Version/Version.cpp
Index: create-16.0.2-lldb-set-revision-patch/llvm-16.0.2-new/lldb/source/Version/Version.cpp
===================================================================
--- create-16.0.2-lldb-set-revision-patch/llvm-16.0.2-new/lldb/source/Version/Version.cpp (nonexistent)
+++ create-16.0.2-lldb-set-revision-patch/llvm-16.0.2-new/lldb/source/Version/Version.cpp (revision 40)
@@ -0,0 +1,65 @@
+//===-- Version.cpp -------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "lldb/Version/Version.h"
+#include "VCSVersion.inc"
+#include "lldb/Version/Version.inc"
+#include "clang/Basic/Version.h"
+
+static const char *GetLLDBVersion() {
+#ifdef LLDB_FULL_VERSION_STRING
+ return LLDB_FULL_VERSION_STRING;
+#else
+ return "lldb version " LLDB_VERSION_STRING;
+#endif
+}
+
+static const char *GetLLDBRevision() {
+ return nullptr;
+}
+
+static const char *GetLLDBRepository() {
+ return nullptr;
+}
+
+const char *lldb_private::GetVersion() {
+ static std::string g_version_str;
+
+ if (g_version_str.empty()) {
+ const char *lldb_version = GetLLDBVersion();
+ const char *lldb_repo = GetLLDBRepository();
+ const char *lldb_rev = GetLLDBRevision();
+ g_version_str += lldb_version;
+ if (lldb_repo || lldb_rev) {
+ g_version_str += " (";
+ if (lldb_repo)
+ g_version_str += lldb_repo;
+ if (lldb_repo && lldb_rev)
+ g_version_str += " ";
+ if (lldb_rev) {
+ g_version_str += "revision ";
+ g_version_str += lldb_rev;
+ }
+ g_version_str += ")";
+ }
+
+ std::string clang_rev(clang::getClangRevision());
+ if (clang_rev.length() > 0) {
+ g_version_str += "\n clang revision ";
+ g_version_str += clang_rev;
+ }
+
+ std::string llvm_rev(clang::getLLVMRevision());
+ if (llvm_rev.length() > 0) {
+ g_version_str += "\n llvm revision ";
+ g_version_str += llvm_rev;
+ }
+ }
+
+ return g_version_str.c_str();
+}
Index: create-16.0.2-llvm-64bit-atomic-patch/create.patch.sh
===================================================================
--- create-16.0.2-llvm-64bit-atomic-patch/create.patch.sh (nonexistent)
+++ create-16.0.2-llvm-64bit-atomic-patch/create.patch.sh (revision 40)
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+VERSION=16.0.2
+
+tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
+mv llvm-$VERSION llvm-$VERSION-orig
+
+cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
+
+diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-llvm-64bit-atomic.patch
+
+mv llvm-$VERSION-llvm-64bit-atomic.patch ../patches
+
+rm -rf ./llvm-$VERSION
+rm -rf ./llvm-$VERSION-orig
Property changes on: create-16.0.2-llvm-64bit-atomic-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: create-16.0.2-llvm-64bit-atomic-patch/file.list
===================================================================
--- create-16.0.2-llvm-64bit-atomic-patch/file.list (nonexistent)
+++ create-16.0.2-llvm-64bit-atomic-patch/file.list (revision 40)
@@ -0,0 +1 @@
+llvm-16.0.2/llvm/cmake/modules/CheckAtomic.cmake
Index: create-16.0.2-llvm-64bit-atomic-patch/llvm-16.0.2-new/llvm/cmake/modules/CheckAtomic.cmake
===================================================================
--- create-16.0.2-llvm-64bit-atomic-patch/llvm-16.0.2-new/llvm/cmake/modules/CheckAtomic.cmake (nonexistent)
+++ create-16.0.2-llvm-64bit-atomic-patch/llvm-16.0.2-new/llvm/cmake/modules/CheckAtomic.cmake (revision 40)
@@ -0,0 +1,128 @@
+# atomic builtins are required for threading support.
+
+INCLUDE(CheckCXXSourceCompiles)
+INCLUDE(CheckLibraryExists)
+
+# Sometimes linking against libatomic is required for atomic ops, if
+# the platform doesn't support lock-free atomics.
+
+function(check_working_cxx_atomics varname)
+ set(OLD_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
+ set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -std=c++11")
+ CHECK_CXX_SOURCE_COMPILES("
+#include <atomic>
+std::atomic<int> x;
+std::atomic<short> y;
+std::atomic<char> z;
+int main() {
+ ++z;
+ ++y;
+ return ++x;
+}
+" ${varname})
+ set(CMAKE_REQUIRED_FLAGS ${OLD_CMAKE_REQUIRED_FLAGS})
+endfunction(check_working_cxx_atomics)
+
+function(check_working_cxx_atomics64 varname)
+ set(OLD_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
+ set(CMAKE_REQUIRED_FLAGS "-std=c++11 ${CMAKE_REQUIRED_FLAGS}")
+ CHECK_CXX_SOURCE_COMPILES("
+#include <atomic>
+#include <cstdint>
+std::atomic<uint64_t> x (0);
+std::atomic<double> y (0);
+int main() {
+ uint64_t i = x.load(std::memory_order_relaxed);
+ double j = y.load(std::memory_order_relaxed);
+ (void)i;
+ (void)j;
+ return 0;
+}
+" ${varname})
+ set(CMAKE_REQUIRED_FLAGS ${OLD_CMAKE_REQUIRED_FLAGS})
+endfunction(check_working_cxx_atomics64)
+
+
+# Check for (non-64-bit) atomic operations.
+if(MSVC)
+ set(HAVE_CXX_ATOMICS_WITHOUT_LIB True)
+elseif(LLVM_COMPILER_IS_GCC_COMPATIBLE OR CMAKE_CXX_COMPILER_ID MATCHES "XL")
+ # First check if atomics work without the library.
+ check_working_cxx_atomics(HAVE_CXX_ATOMICS_WITHOUT_LIB)
+ # If not, check if the library exists, and atomics work with it.
+ if(NOT HAVE_CXX_ATOMICS_WITHOUT_LIB)
+ check_library_exists(atomic __atomic_fetch_add_4 "" HAVE_LIBATOMIC)
+ if(HAVE_LIBATOMIC)
+ list(APPEND CMAKE_REQUIRED_LIBRARIES "atomic")
+ check_working_cxx_atomics(HAVE_CXX_ATOMICS_WITH_LIB)
+ if (NOT HAVE_CXX_ATOMICS_WITH_LIB)
+ message(FATAL_ERROR "Host compiler must support std::atomic!")
+ endif()
+ else()
+ message(FATAL_ERROR "Host compiler appears to require libatomic, but cannot find it.")
+ endif()
+ endif()
+endif()
+
+# Check for 64 bit atomic operations.
+if(MSVC)
+ set(HAVE_CXX_ATOMICS64_WITHOUT_LIB True)
+elseif(LLVM_COMPILER_IS_GCC_COMPATIBLE OR CMAKE_CXX_COMPILER_ID MATCHES "XL")
+ # First check if atomics work without the library.
+ check_working_cxx_atomics64(HAVE_CXX_ATOMICS64_WITHOUT_LIB)
+ # If not, check if the library exists, and atomics work with it.
+ if(NOT HAVE_CXX_ATOMICS64_WITHOUT_LIB)
+ check_library_exists(atomic __atomic_load_8 "" HAVE_CXX_LIBATOMICS64)
+ if(HAVE_CXX_LIBATOMICS64)
+ list(APPEND CMAKE_REQUIRED_LIBRARIES "atomic")
+ check_working_cxx_atomics64(HAVE_CXX_ATOMICS64_WITH_LIB)
+ if (NOT HAVE_CXX_ATOMICS64_WITH_LIB)
+ message(FATAL_ERROR "Host compiler must support 64-bit std::atomic!")
+ endif()
+ else()
+ message(FATAL_ERROR "Host compiler appears to require libatomic for 64-bit operations, but cannot find it.")
+ endif()
+ endif()
+endif()
+
+# Set variable LLVM_ATOMIC_LIB specifying flags for linking against libatomic.
+if(HAVE_CXX_ATOMICS_WITH_LIB OR HAVE_CXX_ATOMICS64_WITH_LIB)
+ # Use options --push-state, --as-needed and --pop-state if linker is known to support them.
+ # Use single option -Wl of compiler driver to avoid incorrect re-ordering of options by CMake.
+ if(LLVM_LINKER_IS_GNULD OR LLVM_LINKER_IS_GOLD OR LLVM_LINKER_IS_LLD OR LLVM_LINKER_IS_MOLD)
+ set(LLVM_ATOMIC_LIB "-Wl,--push-state,--as-needed,-latomic,--pop-state")
+ else()
+ set(LLVM_ATOMIC_LIB "-latomic")
+ endif()
+else()
+ set(LLVM_ATOMIC_LIB)
+endif()
+
+## TODO: This define is only used for the legacy atomic operations in
+## llvm's Atomic.h, which should be replaced. Other code simply
+## assumes C++11 <atomic> works.
+CHECK_CXX_SOURCE_COMPILES("
+#ifdef _MSC_VER
+#include <windows.h>
+#endif
+int main() {
+#ifdef _MSC_VER
+ volatile LONG val = 1;
+ MemoryBarrier();
+ InterlockedCompareExchange(&val, 0, 1);
+ InterlockedIncrement(&val);
+ InterlockedDecrement(&val);
+#else
+ volatile unsigned long val = 1;
+ __sync_synchronize();
+ __sync_val_compare_and_swap(&val, 1, 0);
+ __sync_add_and_fetch(&val, 1);
+ __sync_sub_and_fetch(&val, 1);
+#endif
+ return 0;
+ }
+" LLVM_HAS_ATOMICS)
+
+if( NOT LLVM_HAS_ATOMICS )
+ message(STATUS "Warning: LLVM will be built thread-unsafe because atomic builtins are missing")
+endif()
Index: create-16.0.2-llvm-install-symlink-patch/create.patch.sh
===================================================================
--- create-16.0.2-llvm-install-symlink-patch/create.patch.sh (nonexistent)
+++ create-16.0.2-llvm-install-symlink-patch/create.patch.sh (revision 40)
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+VERSION=16.0.2
+
+tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
+mv llvm-$VERSION llvm-$VERSION-orig
+
+cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
+
+diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-llvm-install-symlink.patch
+
+mv llvm-$VERSION-llvm-install-symlink.patch ../patches
+
+rm -rf ./llvm-$VERSION
+rm -rf ./llvm-$VERSION-orig
Property changes on: create-16.0.2-llvm-install-symlink-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: create-16.0.2-llvm-install-symlink-patch/file.list
===================================================================
--- create-16.0.2-llvm-install-symlink-patch/file.list (nonexistent)
+++ create-16.0.2-llvm-install-symlink-patch/file.list (revision 40)
@@ -0,0 +1 @@
+llvm-16.0.2/llvm/cmake/modules/LLVMInstallSymlink.cmake
Index: create-16.0.2-llvm-install-symlink-patch/llvm-16.0.2-new/llvm/cmake/modules/LLVMInstallSymlink.cmake
===================================================================
--- create-16.0.2-llvm-install-symlink-patch/llvm-16.0.2-new/llvm/cmake/modules/LLVMInstallSymlink.cmake (nonexistent)
+++ create-16.0.2-llvm-install-symlink-patch/llvm-16.0.2-new/llvm/cmake/modules/LLVMInstallSymlink.cmake (revision 40)
@@ -0,0 +1,29 @@
+# We need to execute this script at installation time because the
+# DESTDIR environment variable may be unset at configuration time.
+# See PR8397.
+
+# Set to an arbitrary directory to silence GNUInstallDirs warnings
+# regarding being unable to determine libdir.
+set(CMAKE_INSTALL_LIBDIR "lib")
+# Already included at llvm/CmakeLists.txt:
+#include(GNUInstallDirs)
+
+function(install_symlink name target outdir)
+ set(DESTDIR $ENV{DESTDIR})
+ if(NOT IS_ABSOLUTE "${outdir}")
+ set(outdir "${CMAKE_INSTALL_PREFIX}/${outdir}")
+ endif()
+ set(outdir "${DESTDIR}${outdir}")
+
+ message(STATUS "Creating ${name}")
+
+ execute_process(
+ COMMAND "${CMAKE_COMMAND}" -E create_symlink "${target}" "${name}"
+ WORKING_DIRECTORY "${outdir}" ERROR_VARIABLE has_err)
+ if(CMAKE_HOST_WIN32 AND has_err)
+ execute_process(
+ COMMAND "${CMAKE_COMMAND}" -E copy "${target}" "${name}"
+ WORKING_DIRECTORY "${outdir}")
+ endif()
+
+endfunction()
Index: create-16.0.2-llvm-pass-variables-patch/create.patch.sh
===================================================================
--- create-16.0.2-llvm-pass-variables-patch/create.patch.sh (nonexistent)
+++ create-16.0.2-llvm-pass-variables-patch/create.patch.sh (revision 40)
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+VERSION=16.0.2
+
+tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
+mv llvm-$VERSION llvm-$VERSION-orig
+
+cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
+
+diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-llvm-pass-variables.patch
+
+mv llvm-$VERSION-llvm-pass-variables.patch ../patches
+
+rm -rf ./llvm-$VERSION
+rm -rf ./llvm-$VERSION-orig
Property changes on: create-16.0.2-llvm-pass-variables-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: create-16.0.2-llvm-pass-variables-patch/file.list
===================================================================
--- create-16.0.2-llvm-pass-variables-patch/file.list (nonexistent)
+++ create-16.0.2-llvm-pass-variables-patch/file.list (revision 40)
@@ -0,0 +1 @@
+llvm-16.0.2/llvm/runtimes/CMakeLists.txt
Index: create-16.0.2-llvm-pass-variables-patch/llvm-16.0.2-new/llvm/runtimes/CMakeLists.txt
===================================================================
--- create-16.0.2-llvm-pass-variables-patch/llvm-16.0.2-new/llvm/runtimes/CMakeLists.txt (nonexistent)
+++ create-16.0.2-llvm-pass-variables-patch/llvm-16.0.2-new/llvm/runtimes/CMakeLists.txt (revision 40)
@@ -0,0 +1,535 @@
+# TODO: This file assumes the Clang toolchain so it'd be better if it lived in
+# Clang, except there already is clang/runtime directory which contains
+# similar although simpler functionality. We should figure out how to merge
+# the two files.
+
+set(COMMON_CMAKE_ARGS "-DHAVE_LLVM_LIT=ON")
+foreach(proj ${LLVM_ENABLE_RUNTIMES})
+ set(proj_dir "${CMAKE_CURRENT_SOURCE_DIR}/../../${proj}")
+ if(IS_DIRECTORY ${proj_dir} AND EXISTS ${proj_dir}/CMakeLists.txt)
+ list(APPEND runtimes ${proj_dir})
+ else()
+ message(FATAL_ERROR "LLVM_ENABLE_RUNTIMES requests ${proj} but directory not found: ${proj_dir}")
+ endif()
+ string(TOUPPER "${proj}" canon_name)
+ STRING(REGEX REPLACE "-" "_" canon_name ${canon_name})
+ set(LLVM_EXTERNAL_${canon_name}_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../${proj}")
+endforeach()
+
+function(get_compiler_rt_path path)
+ foreach(entry ${runtimes})
+ get_filename_component(projName ${entry} NAME)
+ if("${projName}" MATCHES "compiler-rt")
+ set(${path} ${entry} PARENT_SCOPE)
+ return()
+ endif()
+ endforeach()
+endfunction()
+
+include(LLVMExternalProjectUtils)
+
+if(NOT LLVM_BUILD_RUNTIMES)
+ set(EXTRA_ARGS EXCLUDE_FROM_ALL)
+endif()
+
+function(check_apple_target triple builtin_or_runtime)
+ set(error "\
+compiler-rt for Darwin builds for all platforms and architectures using a \
+single configuration. Specify only a single darwin triple (e.g. x86_64-apple-darwin) \
+in your targets list (and not a triple for a specific platform such as macos). \
+You can use variables such as COMPILER_RT_ENABLE_IOS and DARWIN_ios_ARCHS to \
+control the specific platforms and architectures to build.")
+
+ set(seen_property ${builtin_or_runtime}_darwin_triple_seen)
+ string(REPLACE "-" ";" triple_components ${triple})
+ foreach(component ${triple_components})
+ string(TOLOWER "${component}" component_lower)
+ if(component_lower MATCHES "^darwin")
+ get_property(darwin_triple_seen GLOBAL PROPERTY ${seen_property})
+ if(darwin_triple_seen)
+ message(FATAL_ERROR "${error}")
+ endif()
+ set_property(GLOBAL PROPERTY ${seen_property} YES)
+ if(NOT RUNTIMES_BUILD_ALLOW_DARWIN)
+ message(FATAL_ERROR "\
+${error} Set RUNTIMES_BUILD_ALLOW_DARWIN to allow a single darwin triple.")
+ endif()
+ elseif(component_lower MATCHES "^ios|^macos|^tvos|^watchos")
+ message(FATAL_ERROR "${error}")
+ endif()
+ endforeach()
+endfunction()
+
+function(builtin_default_target compiler_rt_path)
+ cmake_parse_arguments(ARG "" "" "DEPENDS" ${ARGN})
+
+ set(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR_default ON)
+ # AIX should fold 32-bit & 64-bit arch libraries into a single archive.
+ if (LLVM_TARGET_TRIPLE MATCHES "aix")
+ set(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR_default OFF)
+ endif()
+
+ llvm_ExternalProject_Add(builtins
+ ${compiler_rt_path}/lib/builtins
+ DEPENDS ${ARG_DEPENDS}
+ CMAKE_ARGS -DLLVM_LIBRARY_OUTPUT_INTDIR=${LLVM_LIBRARY_DIR}
+ -DLLVM_RUNTIME_OUTPUT_INTDIR=${LLVM_TOOLS_BINARY_DIR}
+ -DLLVM_DEFAULT_TARGET_TRIPLE=${LLVM_TARGET_TRIPLE}
+ -DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=${LLVM_ENABLE_PER_TARGET_RUNTIME_DIR_default}
+ -DCMAKE_C_COMPILER_WORKS=ON
+ -DCMAKE_ASM_COMPILER_WORKS=ON
+ ${COMMON_CMAKE_ARGS}
+ ${BUILTINS_CMAKE_ARGS}
+ PASSTHROUGH_PREFIXES COMPILER_RT
+ DARWIN
+ SANITIZER
+ USE_TOOLCHAIN
+ TARGET_TRIPLE ${LLVM_TARGET_TRIPLE}
+ ${EXTRA_ARGS})
+endfunction()
+
+function(builtin_register_target compiler_rt_path target)
+ cmake_parse_arguments(ARG "" "" "DEPENDS" ${ARGN})
+
+ check_apple_target(${target} builtin)
+
+ get_cmake_property(variableNames VARIABLES)
+ foreach(variableName ${variableNames})
+ string(FIND "${variableName}" "BUILTINS_${target}" out)
+ if("${out}" EQUAL 0)
+ string(REPLACE "BUILTINS_${target}_" "" new_name ${variableName})
+ string(REPLACE ";" "|" new_value "${${variableName}}")
+ list(APPEND ${target}_extra_args "-D${new_name}=${new_value}")
+ endif()
+ endforeach()
+
+ llvm_ExternalProject_Add(builtins-${target}
+ ${compiler_rt_path}/lib/builtins
+ DEPENDS ${ARG_DEPENDS}
+ CMAKE_ARGS -DLLVM_LIBRARY_OUTPUT_INTDIR=${LLVM_LIBRARY_DIR}
+ -DLLVM_RUNTIME_OUTPUT_INTDIR=${LLVM_TOOLS_BINARY_DIR}
+ -DLLVM_DEFAULT_TARGET_TRIPLE=${target}
+ -DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=ON
+ -DCMAKE_C_COMPILER_WORKS=ON
+ -DCMAKE_ASM_COMPILER_WORKS=ON
+ -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON
+ ${COMMON_CMAKE_ARGS}
+ ${${target}_extra_args}
+ USE_TOOLCHAIN
+ TARGET_TRIPLE ${target}
+ ${EXTRA_ARGS})
+endfunction()
+
+# If compiler-rt is present we need to build the builtin libraries first. This
+# is required because the other runtimes need the builtin libraries present
+# before the just-built compiler can pass the configuration tests.
+get_compiler_rt_path(compiler_rt_path)
+if(compiler_rt_path)
+ if(NOT LLVM_BUILTIN_TARGETS)
+ builtin_default_target(${compiler_rt_path}
+ DEPENDS clang-resource-headers)
+ else()
+ if("default" IN_LIST LLVM_BUILTIN_TARGETS)
+ builtin_default_target(${compiler_rt_path}
+ DEPENDS clang-resource-headers)
+ list(REMOVE_ITEM LLVM_BUILTIN_TARGETS "default")
+ else()
+ add_custom_target(builtins)
+ add_custom_target(install-builtins)
+ add_custom_target(install-builtins-stripped)
+ endif()
+
+ foreach(target ${LLVM_BUILTIN_TARGETS})
+ builtin_register_target(${compiler_rt_path} ${target}
+ DEPENDS clang-resource-headers)
+
+ add_dependencies(builtins builtins-${target})
+ add_dependencies(install-builtins install-builtins-${target})
+ add_dependencies(install-builtins-stripped install-builtins-${target}-stripped)
+ endforeach()
+ endif()
+ set(builtins_dep builtins)
+ # We don't need to depend on the builtins if we're building instrumented
+ # because the next stage will use the same compiler used to build this stage.
+ if(NOT LLVM_BUILD_INSTRUMENTED AND CLANG_ENABLE_BOOTSTRAP)
+ add_dependencies(clang-bootstrap-deps builtins)
+ endif()
+endif()
+
+# Create a list with the names of all the runtime projects in all uppercase and
+# with dashes turned to underscores. This gives us the CMake variable `prefixes`
+# for all variables that will apply to runtimes.
+foreach(entry ${runtimes})
+ get_filename_component(projName ${entry} NAME)
+ if(projName STREQUAL "libc")
+ # For now, we will use the name "llvmlibc" for the libc project as it is
+ # not a full libc yet. Also, if we leave it as is, the "lib" prefix gets
+ # stripped below and the targets endup having the name "c", "check-c" etc.
+ set(projName "llvmlibc")
+ endif()
+ string(REPLACE "-" "_" canon_name ${projName})
+ string(TOUPPER ${canon_name} canon_name)
+ list(APPEND prefixes ${canon_name})
+ if (${canon_name} STREQUAL "OPENMP")
+ list(APPEND prefixes "LIBOMP" "LIBOMPTARGET")
+ endif()
+ # Many compiler-rt options start with SANITIZER_ and DARWIN_ rather than
+ # COMPILER_RT_, so when compiler-rt is enabled, consider both.
+ if(canon_name STREQUAL "COMPILER_RT")
+ list(APPEND prefixes SANITIZER DARWIN)
+ endif()
+ if(canon_name STREQUAL "LLVMLIBC")
+ list(APPEND prefixes "LLVM_LIBC")
+ list(APPEND prefixes "LIBC_")
+ endif()
+
+ string(FIND ${projName} "lib" LIB_IDX)
+ if(LIB_IDX EQUAL 0)
+ string(SUBSTRING ${projName} 3 -1 projName)
+ endif()
+ list(APPEND runtime_names ${projName})
+endforeach()
+
+function(runtime_default_target)
+ cmake_parse_arguments(ARG "" "" "DEPENDS;PREFIXES" ${ARGN})
+
+ include(${LLVM_BINARY_DIR}/runtimes/Components.cmake OPTIONAL)
+ set(SUB_CHECK_TARGETS ${SUB_CHECK_TARGETS} PARENT_SCOPE)
+ set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${LLVM_BINARY_DIR}/runtimes/Components.cmake)
+
+ foreach(runtime_name ${runtime_names})
+ list(APPEND extra_targets
+ ${runtime_name}
+ install-${runtime_name}
+ install-${runtime_name}-stripped)
+ if(LLVM_INCLUDE_TESTS)
+ list(APPEND test_targets check-${runtime_name})
+ endif()
+ endforeach()
+ foreach(component ${LLVM_RUNTIME_DISTRIBUTION_COMPONENTS})
+ if(NOT ${component} IN_LIST SUB_COMPONENTS)
+ list(APPEND extra_targets install-${component} install-${component}-stripped)
+ endif()
+ endforeach()
+
+ if(LLVM_INCLUDE_TESTS)
+ set_property(GLOBAL APPEND PROPERTY LLVM_ALL_LIT_TESTSUITES "@${LLVM_BINARY_DIR}/runtimes/runtimes-bins/lit.tests")
+ list(APPEND test_targets runtimes-test-depends check-runtimes)
+ endif()
+
+ set(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR_default ON)
+ # AIX should fold 32-bit & 64-bit arch libraries into a single archive.
+ if (LLVM_TARGET_TRIPLE MATCHES "aix")
+ set(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR_default OFF)
+ endif()
+
+ llvm_ExternalProject_Add(runtimes
+ ${CMAKE_CURRENT_SOURCE_DIR}/../../runtimes
+ DEPENDS ${ARG_DEPENDS}
+ # Builtins were built separately above
+ CMAKE_ARGS -DCOMPILER_RT_BUILD_BUILTINS=Off
+ -DLIBOMPTARGET_BUILD_DEVICERTL_BCLIB=${LIBOMPTARGET_BUILD_DEVICERTL_BCLIB}
+ -DOPENMP_STANDALONE_BUILD=${OPENMP_STANDALONE_BUILD}
+ -DOPENMP_ENABLE_LIBOMPTARGET=${OPENMP_ENABLE_LIBOMPTARGET}
+ -DOPENMP_LIBDIR_SUFFIX=${OPENMP_LIBDIR_SUFFIX}
+ -DOPENMP_LLVM_LIT_EXECUTABLE=${OPENMP_LLVM_LIT_EXECUTABLE}
+ -DCMAKE_INSTALL_LIBDIR=${CMAKE_INSTALL_LIBDIR}
+ -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
+ -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
+ -DCMAKE_EXE_LINKER_FLAGS=${CMAKE_EXE_LINKER_FLAGS}
+ -DCMAKE_MODULE_LINKER_FLAGS=${CMAKE_MODULE_LINKER_FLAGS}
+ -DCMAKE_SHARED_LINKER_FLAGS=${CMAKE_SHARED_LINKER_FLAGS}
+ -DLLVM_INCLUDE_TESTS=${LLVM_INCLUDE_TESTS}
+ -DLLVM_DEFAULT_TARGET_TRIPLE=${LLVM_TARGET_TRIPLE}
+ -DLLVM_ENABLE_PROJECTS_USED=${LLVM_ENABLE_PROJECTS_USED}
+ -DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=${LLVM_ENABLE_PER_TARGET_RUNTIME_DIR_default}
+ -DLLVM_BUILD_TOOLS=${LLVM_BUILD_TOOLS}
+ -DCMAKE_C_COMPILER_WORKS=ON
+ -DCMAKE_CXX_COMPILER_WORKS=ON
+ -DCMAKE_ASM_COMPILER_WORKS=ON
+ ${COMMON_CMAKE_ARGS}
+ ${RUNTIMES_CMAKE_ARGS}
+ PASSTHROUGH_PREFIXES LLVM_ENABLE_RUNTIMES
+ LLVM_USE_LINKER
+ ${ARG_PREFIXES}
+ EXTRA_TARGETS ${extra_targets}
+ ${test_targets}
+ ${SUB_COMPONENTS}
+ ${SUB_CHECK_TARGETS}
+ ${SUB_INSTALL_TARGETS}
+ USE_TOOLCHAIN
+ TARGET_TRIPLE ${LLVM_TARGET_TRIPLE}
+ ${EXTRA_ARGS})
+endfunction()
+
+# runtime_register_target(target)
+# Utility function to register external runtime target.
+function(runtime_register_target name target)
+ cmake_parse_arguments(ARG "" "" "DEPENDS;CMAKE_ARGS" ${ARGN})
+ include(${LLVM_BINARY_DIR}/runtimes/${name}/Components.cmake OPTIONAL)
+ set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${LLVM_BINARY_DIR}/runtimes/${name}/Components.cmake)
+
+ check_apple_target(${target} runtime)
+
+ set(${name}_deps ${ARG_DEPENDS})
+ if(NOT name STREQUAL target)
+ list(APPEND ${name}_deps runtimes-${target})
+ endif()
+
+ foreach(runtime_name ${runtime_names})
+ set(${runtime_name}-${name} ${runtime_name})
+ set(install-${runtime_name}-${name} install-${runtime_name})
+ set(install-${runtime_name}-${name}-stripped install-${runtime_name}-stripped)
+ list(APPEND ${name}_extra_targets ${runtime_name}-${name} install-${runtime_name}-${name} install-${runtime_name}-${name}-stripped)
+ if(LLVM_INCLUDE_TESTS)
+ set(check-${runtime_name}-${name} check-${runtime_name} )
+ list(APPEND ${name}_test_targets check-${runtime_name}-${name})
+ endif()
+ endforeach()
+
+ foreach(target_name IN LISTS SUB_COMPONENTS)
+ set(${target_name}-${name} ${target_name})
+ list(APPEND ${name}_extra_targets ${target_name}-${name})
+ endforeach()
+
+ foreach(target_name IN LISTS SUB_INSTALL_TARGETS)
+ set(${target_name}-${name} ${target_name})
+ set(${target_name}-${name}-stripped ${target_name}-stripped)
+ list(APPEND ${name}_extra_targets ${target_name}-${name} ${target_name}-${name}-stripped)
+ endforeach()
+
+ foreach(component ${LLVM_RUNTIME_DISTRIBUTION_COMPONENTS})
+ if(NOT component IN_LIST SUB_COMPONENTS)
+ set(${component}-${name} ${component})
+ set(install-${component}-${name} install-${component})
+ set(install-${component}-${name}-stripped install-${component}-stripped)
+ list(APPEND ${name}_extra_targets ${component}-${name} install-${component}-${name} install-${component}-${name}-stripped)
+ endif()
+ endforeach()
+
+ if(LLVM_INCLUDE_TESTS)
+ set_property(GLOBAL APPEND PROPERTY LLVM_ALL_LIT_TESTSUITES "@${LLVM_BINARY_DIR}/runtimes/runtimes-${name}-bins/lit.tests")
+ set(runtimes-test-depends-${name} runtimes-test-depends)
+ set(check-runtimes-${name} check-runtimes)
+ list(APPEND ${name}_test_targets runtimes-test-depends-${name} check-runtimes-${name})
+ list(APPEND test_targets ${${name}_test_targets})
+
+ set(component_check_targets)
+ foreach(component IN LISTS LLVM_RUNTIME_DISTRIBUTION_COMPONENTS)
+ if(NOT "check-${component}" IN_LIST SUB_CHECK_TARGETS)
+ list(APPEND component_check_targets "check-${component}")
+ endif()
+ endforeach()
+
+ foreach(target_name IN LISTS SUB_CHECK_TARGETS component_check_targets)
+ set(${target_name}-${name} ${target_name})
+ list(APPEND ${name}_test_targets ${target_name}-${name})
+ list(APPEND test_targets ${target_name}-${name})
+ endforeach()
+ set(test_targets "${test_targets}" PARENT_SCOPE)
+ endif()
+
+ set(${name}_extra_args ${ARG_CMAKE_ARGS})
+ get_cmake_property(variableNames VARIABLES)
+ foreach(variableName ${variableNames})
+ string(FIND "${variableName}" "RUNTIMES_${target}_" out)
+ if("${out}" EQUAL 0)
+ string(REPLACE "RUNTIMES_${target}_" "" new_name ${variableName})
+ string(REPLACE ";" "|" new_value "${${variableName}}")
+ list(APPEND ${name}_extra_args "-D${new_name}=${new_value}")
+ endif()
+ endforeach()
+ if(NOT "${name}" STREQUAL "${target}")
+ foreach(variableName ${variableNames})
+ string(FIND "${variableName}" "RUNTIMES_${name}_" out)
+ if("${out}" EQUAL 0)
+ string(REPLACE "RUNTIMES_${name}_" "" new_name ${variableName})
+ string(REPLACE ";" "|" new_value "${${variableName}}")
+ list(APPEND ${name}_extra_args "-D${new_name}=${new_value}")
+ endif()
+ endforeach()
+ endif()
+
+ if(NOT RUNTIMES_${name}_LLVM_ENABLE_RUNTIMES AND NOT RUNTIMES_${target}_LLVM_ENABLE_RUNTIMES)
+ string(REPLACE ";" "|" LLVM_ENABLE_RUNTIMES_PASSTHROUGH "${LLVM_ENABLE_RUNTIMES}")
+ list(APPEND ${name}_extra_args -DLLVM_ENABLE_RUNTIMES=${LLVM_ENABLE_RUNTIMES_PASSTHROUGH})
+ endif()
+
+ if(NOT RUNTIMES_${name}_LLVM_USE_LINKER AND NOT RUNTIMES_${target}_LLVM_USE_LINKER)
+ list(APPEND ${name}_extra_args -DLLVM_USE_LINKER=${LLVM_USE_LINKER})
+ endif()
+
+ llvm_ExternalProject_Add(runtimes-${name}
+ ${CMAKE_CURRENT_SOURCE_DIR}/../../runtimes
+ DEPENDS ${${name}_deps}
+ # Builtins were built separately above
+ CMAKE_ARGS -DCOMPILER_RT_BUILD_BUILTINS=Off
+ -DLIBOMPTARGET_BUILD_DEVICERTL_BCLIB=${LIBOMPTARGET_BUILD_DEVICERTL_BCLIB}
+ -DOPENMP_STANDALONE_BUILD=${OPENMP_STANDALONE_BUILD}
+ -DOPENMP_ENABLE_LIBOMPTARGET=${OPENMP_ENABLE_LIBOMPTARGET}
+ -DOPENMP_LIBDIR_SUFFIX=${OPENMP_LIBDIR_SUFFIX}
+ -DOPENMP_LLVM_LIT_EXECUTABLE=${OPENMP_LLVM_LIT_EXECUTABLE}
+ -DCMAKE_INSTALL_LIBDIR=${CMAKE_INSTALL_LIBDIR}
+ -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
+ -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
+ -DCMAKE_EXE_LINKER_FLAGS=${CMAKE_EXE_LINKER_FLAGS}
+ -DCMAKE_MODULE_LINKER_FLAGS=${CMAKE_MODULE_LINKER_FLAGS}
+ -DCMAKE_SHARED_LINKER_FLAGS=${CMAKE_SHARED_LINKER_FLAGS}
+ -DLLVM_INCLUDE_TESTS=${LLVM_INCLUDE_TESTS}
+ -DLLVM_DEFAULT_TARGET_TRIPLE=${target}
+ -DLLVM_ENABLE_PROJECTS_USED=${LLVM_ENABLE_PROJECTS_USED}
+ -DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=ON
+ -DCMAKE_C_COMPILER_WORKS=ON
+ -DCMAKE_CXX_COMPILER_WORKS=ON
+ -DCMAKE_ASM_COMPILER_WORKS=ON
+ -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON
+ -DLLVM_RUNTIMES_TARGET=${name}
+ ${COMMON_CMAKE_ARGS}
+ ${${name}_extra_args}
+ EXTRA_TARGETS ${${name}_extra_targets}
+ ${${name}_test_targets}
+ USE_TOOLCHAIN
+ TARGET_TRIPLE ${target}
+ ${EXTRA_ARGS})
+endfunction()
+
+if(runtimes)
+ # Create a runtimes target that uses this file as its top-level CMake file.
+ # The runtimes target is a configuration of all the runtime libraries
+ # together in a single CMake invocation.
+ set(extra_deps "")
+ if("openmp" IN_LIST LLVM_ENABLE_RUNTIMES)
+ if(TARGET opt)
+ list(APPEND extra_deps opt)
+ endif()
+ if(TARGET llvm-link)
+ list(APPEND extra_deps llvm-link)
+ endif()
+ endif()
+ if(NOT LLVM_RUNTIME_TARGETS)
+ runtime_default_target(
+ DEPENDS ${builtins_dep} ${extra_deps}
+ PREFIXES ${prefixes})
+ set(test_targets check-runtimes)
+ else()
+ if("default" IN_LIST LLVM_RUNTIME_TARGETS)
+ runtime_default_target(
+ DEPENDS ${builtins_dep} ${extra_deps}
+ PREFIXES ${prefixes})
+ list(REMOVE_ITEM LLVM_RUNTIME_TARGETS "default")
+ else()
+ add_custom_target(runtimes)
+ add_custom_target(runtimes-configure)
+ add_custom_target(install-runtimes)
+ add_custom_target(install-runtimes-stripped)
+ if(LLVM_INCLUDE_TESTS)
+ add_custom_target(check-runtimes)
+ add_custom_target(runtimes-test-depends)
+ set(test_targets "")
+ endif()
+ foreach(runtime_name ${runtime_names})
+ add_custom_target(${runtime_name})
+ add_custom_target(install-${runtime_name})
+ add_custom_target(install-${runtime_name}-stripped)
+ endforeach()
+ if(LLVM_RUNTIME_DISTRIBUTION_COMPONENTS)
+ foreach(component ${LLVM_RUNTIME_DISTRIBUTION_COMPONENTS})
+ add_custom_target(${component})
+ add_custom_target(install-${component})
+ add_custom_target(install-${component}-stripped)
+ endforeach()
+ endif()
+ endif()
+
+ foreach(name ${LLVM_RUNTIME_TARGETS})
+ if(builtins_dep)
+ if (LLVM_BUILTIN_TARGETS)
+ set(builtins_dep_name "${builtins_dep}-${name}")
+ else()
+ set(builtins_dep_name ${builtins_dep})
+ endif()
+ endif()
+ runtime_register_target(${name} ${name}
+ DEPENDS ${builtins_dep_name})
+
+ add_dependencies(runtimes runtimes-${name})
+ add_dependencies(runtimes-configure runtimes-${name}-configure)
+ add_dependencies(install-runtimes install-runtimes-${name})
+ add_dependencies(install-runtimes-stripped install-runtimes-${name}-stripped)
+ if(LLVM_INCLUDE_TESTS)
+ add_dependencies(check-runtimes check-runtimes-${name})
+ add_dependencies(runtimes-test-depends runtimes-test-depends-${name})
+ endif()
+ foreach(runtime_name ${runtime_names})
+ add_dependencies(${runtime_name} ${runtime_name}-${name})
+ add_dependencies(install-${runtime_name} install-${runtime_name}-${name})
+ add_dependencies(install-${runtime_name}-stripped install-${runtime_name}-${name}-stripped)
+ endforeach()
+ foreach(component ${LLVM_RUNTIME_DISTRIBUTION_COMPONENTS})
+ add_dependencies(${component} ${component}-${name})
+ add_dependencies(install-${component} install-${component}-${name})
+ add_dependencies(install-${component}-stripped install-${component}-${name}-stripped)
+ endforeach()
+ endforeach()
+
+ foreach(multilib ${LLVM_RUNTIME_MULTILIBS})
+ foreach(name ${LLVM_RUNTIME_MULTILIB_${multilib}_TARGETS})
+ runtime_register_target(${name}+${multilib} ${name}
+ DEPENDS runtimes-${name}
+ CMAKE_ARGS -DLLVM_RUNTIMES_PREFIX=${name}/
+ -DLLVM_RUNTIMES_LIBDIR_SUBDIR=${multilib})
+ add_dependencies(runtimes runtimes-${name}+${multilib})
+ add_dependencies(runtimes-configure runtimes-${name}+${multilib}-configure)
+ add_dependencies(install-runtimes install-runtimes-${name}+${multilib})
+ add_dependencies(install-runtimes-stripped install-runtimes-${name}+${multilib}-stripped)
+ foreach(runtime_name ${runtime_names})
+ add_dependencies(${runtime_name} ${runtime_name}-${name}+${multilib})
+ add_dependencies(install-${runtime_name} install-${runtime_name}-${name}+${multilib})
+ add_dependencies(install-${runtime_name}-stripped install-${runtime_name}-${name}+${multilib}-stripped)
+ endforeach()
+ foreach(component ${LLVM_RUNTIME_DISTRIBUTION_COMPONENTS})
+ add_dependencies(${component} ${component}-${name}+${multilib})
+ add_dependencies(install-${component} install-${component}-${name}+${multilib})
+ add_dependencies(install-${component}-stripped install-${component}-${name}+${multilib}-stripped)
+ endforeach()
+ endforeach()
+ endforeach()
+ endif()
+
+ if(NOT LLVM_BUILD_INSTRUMENTED AND CLANG_ENABLE_BOOTSTRAP)
+ # TODO: This is a hack needed because the libcxx headers are copied into the
+ # build directory during configuration. Without that step the clang in the
+ # build directory cannot find the C++ headers in certain configurations.
+ # I need to build a mechanism for runtime projects to provide CMake code
+ # that executes at LLVM configuration time to handle this case.
+ add_dependencies(clang-bootstrap-deps runtimes-configure)
+ # We need to add the runtimes as a dependency because compiler-rt can be
+ # built as part of runtimes and we need the profile runtime for PGO
+ add_dependencies(clang-bootstrap-deps runtimes)
+ endif()
+
+ if(LLVM_INCLUDE_TESTS)
+ set_property(GLOBAL APPEND PROPERTY LLVM_ALL_ADDITIONAL_TEST_DEPENDS runtimes-test-depends)
+
+ set(RUNTIMES_TEST_DEPENDS
+ FileCheck
+ count
+ llvm-cov
+ llvm-nm
+ llvm-objdump
+ llvm-profdata
+ llvm-xray
+ not
+ obj2yaml
+ sancov
+ sanstats
+ llvm_gtest_main
+ llvm_gtest
+ )
+ foreach(target ${test_targets} ${SUB_CHECK_TARGETS})
+ add_dependencies(${target} ${RUNTIMES_TEST_DEPENDS})
+ endforeach()
+
+ set_property(GLOBAL APPEND PROPERTY LLVM_ALL_ADDITIONAL_TEST_TARGETS runtimes ${RUNTIMES_TEST_DEPENDS})
+ endif()
+endif()
Index: create-16.0.2-llvm-ppc64-patch/create.patch.sh
===================================================================
--- create-16.0.2-llvm-ppc64-patch/create.patch.sh (nonexistent)
+++ create-16.0.2-llvm-ppc64-patch/create.patch.sh (revision 40)
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+VERSION=16.0.2
+
+tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
+mv llvm-$VERSION llvm-$VERSION-orig
+
+cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
+
+diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-llvm-ppc64.patch
+
+mv llvm-$VERSION-llvm-ppc64.patch ../patches
+
+rm -rf ./llvm-$VERSION
+rm -rf ./llvm-$VERSION-orig
Property changes on: create-16.0.2-llvm-ppc64-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: create-16.0.2-llvm-ppc64-patch/file.list
===================================================================
--- create-16.0.2-llvm-ppc64-patch/file.list (nonexistent)
+++ create-16.0.2-llvm-ppc64-patch/file.list (revision 40)
@@ -0,0 +1 @@
+llvm-16.0.2/llvm/cmake/config-ix.cmake
Index: create-16.0.2-llvm-ppc64-patch/llvm-16.0.2-new/llvm/cmake/config-ix.cmake
===================================================================
--- create-16.0.2-llvm-ppc64-patch/llvm-16.0.2-new/llvm/cmake/config-ix.cmake (nonexistent)
+++ create-16.0.2-llvm-ppc64-patch/llvm-16.0.2-new/llvm/cmake/config-ix.cmake (revision 40)
@@ -0,0 +1,747 @@
+if( WIN32 AND NOT CYGWIN )
+ # We consider Cygwin as another Unix
+ set(PURE_WINDOWS 1)
+endif()
+
+include(CheckIncludeFile)
+include(CheckLibraryExists)
+include(CheckSymbolExists)
+include(CheckCXXSymbolExists)
+include(CheckFunctionExists)
+include(CheckStructHasMember)
+include(CheckCCompilerFlag)
+include(CMakePushCheckState)
+
+include(CheckCompilerVersion)
+include(CheckProblematicConfigurations)
+include(HandleLLVMStdlib)
+
+if( UNIX AND NOT (APPLE OR BEOS OR HAIKU) )
+ # Used by check_symbol_exists:
+ list(APPEND CMAKE_REQUIRED_LIBRARIES "m")
+endif()
+# x86_64 FreeBSD 9.2 requires libcxxrt to be specified explicitly.
+if( CMAKE_SYSTEM MATCHES "FreeBSD-9.2-RELEASE" AND
+ CMAKE_SIZEOF_VOID_P EQUAL 8 )
+ list(APPEND CMAKE_REQUIRED_LIBRARIES "cxxrt")
+endif()
+
+# Do checks with _XOPEN_SOURCE and large-file API on AIX, because we will build
+# with those too.
+if (UNIX AND ${CMAKE_SYSTEM_NAME} MATCHES "AIX")
+ list(APPEND CMAKE_REQUIRED_DEFINITIONS "-D_XOPEN_SOURCE=700")
+ list(APPEND CMAKE_REQUIRED_DEFINITIONS "-D_LARGE_FILE_API")
+endif()
+
+# Do checks with _FILE_OFFSET_BITS=64 on Solaris, because we will build
+# with those too.
+if (UNIX AND ${CMAKE_SYSTEM_NAME} MATCHES "SunOS")
+ list(APPEND CMAKE_REQUIRED_DEFINITIONS "-D_FILE_OFFSET_BITS=64")
+endif()
+
+# include checks
+check_include_file(dlfcn.h HAVE_DLFCN_H)
+check_include_file(errno.h HAVE_ERRNO_H)
+check_include_file(fcntl.h HAVE_FCNTL_H)
+check_include_file(link.h HAVE_LINK_H)
+check_include_file(malloc/malloc.h HAVE_MALLOC_MALLOC_H)
+if( NOT PURE_WINDOWS )
+ check_include_file(pthread.h HAVE_PTHREAD_H)
+endif()
+check_include_file(signal.h HAVE_SIGNAL_H)
+check_include_file(sys/ioctl.h HAVE_SYS_IOCTL_H)
+check_include_file(sys/mman.h HAVE_SYS_MMAN_H)
+check_include_file(sys/param.h HAVE_SYS_PARAM_H)
+check_include_file(sys/resource.h HAVE_SYS_RESOURCE_H)
+check_include_file(sys/stat.h HAVE_SYS_STAT_H)
+check_include_file(sys/time.h HAVE_SYS_TIME_H)
+check_include_file(sys/types.h HAVE_SYS_TYPES_H)
+check_include_file(sysexits.h HAVE_SYSEXITS_H)
+check_include_file(termios.h HAVE_TERMIOS_H)
+check_include_file(unistd.h HAVE_UNISTD_H)
+check_include_file(valgrind/valgrind.h HAVE_VALGRIND_VALGRIND_H)
+check_include_file(fenv.h HAVE_FENV_H)
+check_symbol_exists(FE_ALL_EXCEPT "fenv.h" HAVE_DECL_FE_ALL_EXCEPT)
+check_symbol_exists(FE_INEXACT "fenv.h" HAVE_DECL_FE_INEXACT)
+
+check_include_file(mach/mach.h HAVE_MACH_MACH_H)
+check_include_file(CrashReporterClient.h HAVE_CRASHREPORTERCLIENT_H)
+if(APPLE)
+ include(CheckCSourceCompiles)
+ CHECK_C_SOURCE_COMPILES("
+ static const char *__crashreporter_info__ = 0;
+ asm(\".desc ___crashreporter_info__, 0x10\");
+ int main(void) { return 0; }"
+ HAVE_CRASHREPORTER_INFO)
+endif()
+
+if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
+ check_include_file(linux/magic.h HAVE_LINUX_MAGIC_H)
+ if(NOT HAVE_LINUX_MAGIC_H)
+ # older kernels use split files
+ check_include_file(linux/nfs_fs.h HAVE_LINUX_NFS_FS_H)
+ check_include_file(linux/smb.h HAVE_LINUX_SMB_H)
+ endif()
+endif()
+
+# library checks
+if( NOT PURE_WINDOWS )
+ check_library_exists(pthread pthread_create "" HAVE_LIBPTHREAD)
+ if (HAVE_LIBPTHREAD)
+ check_library_exists(pthread pthread_rwlock_init "" HAVE_PTHREAD_RWLOCK_INIT)
+ check_library_exists(pthread pthread_mutex_lock "" HAVE_PTHREAD_MUTEX_LOCK)
+ else()
+ # this could be Android
+ check_library_exists(c pthread_create "" PTHREAD_IN_LIBC)
+ if (PTHREAD_IN_LIBC)
+ check_library_exists(c pthread_rwlock_init "" HAVE_PTHREAD_RWLOCK_INIT)
+ check_library_exists(c pthread_mutex_lock "" HAVE_PTHREAD_MUTEX_LOCK)
+ endif()
+ endif()
+ check_library_exists(dl dlopen "" HAVE_LIBDL)
+ check_library_exists(rt clock_gettime "" HAVE_LIBRT)
+endif()
+
+# Check for libpfm.
+include(FindLibpfm)
+
+if(HAVE_LIBPTHREAD)
+ # We want to find pthreads library and at the moment we do want to
+ # have it reported as '-l<lib>' instead of '-pthread'.
+ # TODO: switch to -pthread once the rest of the build system can deal with it.
+ set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
+ set(THREADS_HAVE_PTHREAD_ARG Off)
+ find_package(Threads REQUIRED)
+ set(LLVM_PTHREAD_LIB ${CMAKE_THREAD_LIBS_INIT})
+endif()
+
+if(LLVM_ENABLE_ZLIB)
+ if(LLVM_ENABLE_ZLIB STREQUAL FORCE_ON)
+ find_package(ZLIB REQUIRED)
+ elseif(NOT LLVM_USE_SANITIZER MATCHES "Memory.*")
+ find_package(ZLIB)
+ endif()
+ if(ZLIB_FOUND)
+ # Check if zlib we found is usable; for example, we may have found a 32-bit
+ # library on a 64-bit system which would result in a link-time failure.
+ cmake_push_check_state()
+ list(APPEND CMAKE_REQUIRED_INCLUDES ${ZLIB_INCLUDE_DIRS})
+ list(APPEND CMAKE_REQUIRED_LIBRARIES ${ZLIB_LIBRARY})
+ check_symbol_exists(compress2 zlib.h HAVE_ZLIB)
+ cmake_pop_check_state()
+ if(LLVM_ENABLE_ZLIB STREQUAL FORCE_ON AND NOT HAVE_ZLIB)
+ message(FATAL_ERROR "Failed to configure zlib")
+ endif()
+ endif()
+ set(LLVM_ENABLE_ZLIB "${HAVE_ZLIB}")
+else()
+ set(LLVM_ENABLE_ZLIB 0)
+endif()
+
+set(zstd_FOUND 0)
+if(LLVM_ENABLE_ZSTD)
+ if(LLVM_ENABLE_ZSTD STREQUAL FORCE_ON)
+ find_package(zstd REQUIRED)
+ if(NOT zstd_FOUND)
+ message(FATAL_ERROR "Failed to configure zstd, but LLVM_ENABLE_ZSTD is FORCE_ON")
+ endif()
+ elseif(NOT LLVM_USE_SANITIZER MATCHES "Memory.*")
+ find_package(zstd QUIET)
+ endif()
+endif()
+set(LLVM_ENABLE_ZSTD ${zstd_FOUND})
+
+if(LLVM_ENABLE_LIBXML2)
+ if(LLVM_ENABLE_LIBXML2 STREQUAL FORCE_ON)
+ find_package(LibXml2 REQUIRED)
+ elseif(NOT LLVM_USE_SANITIZER MATCHES "Memory.*")
+ find_package(LibXml2)
+ endif()
+ if(LibXml2_FOUND)
+ # Check if libxml2 we found is usable; for example, we may have found a 32-bit
+ # library on a 64-bit system which would result in a link-time failure.
+ cmake_push_check_state()
+ list(APPEND CMAKE_REQUIRED_INCLUDES ${LIBXML2_INCLUDE_DIRS})
+ list(APPEND CMAKE_REQUIRED_LIBRARIES ${LIBXML2_LIBRARIES})
+ list(APPEND CMAKE_REQUIRED_DEFINITIONS ${LIBXML2_DEFINITIONS})
+ check_symbol_exists(xmlReadMemory libxml/xmlreader.h HAVE_LIBXML2)
+ cmake_pop_check_state()
+ if(LLVM_ENABLE_LIBXML2 STREQUAL FORCE_ON AND NOT HAVE_LIBXML2)
+ message(FATAL_ERROR "Failed to configure libxml2")
+ endif()
+ endif()
+ set(LLVM_ENABLE_LIBXML2 "${HAVE_LIBXML2}")
+endif()
+
+if(LLVM_ENABLE_CURL)
+ if(LLVM_ENABLE_CURL STREQUAL FORCE_ON)
+ find_package(CURL REQUIRED)
+ else()
+ find_package(CURL)
+ endif()
+ if(CURL_FOUND)
+ # Check if curl we found is usable; for example, we may have found a 32-bit
+ # library on a 64-bit system which would result in a link-time failure.
+ cmake_push_check_state()
+ list(APPEND CMAKE_REQUIRED_LIBRARIES CURL::libcurl)
+ check_symbol_exists(curl_easy_init curl/curl.h HAVE_CURL)
+ cmake_pop_check_state()
+ if(LLVM_ENABLE_CURL STREQUAL FORCE_ON AND NOT HAVE_CURL)
+ message(FATAL_ERROR "Failed to configure curl")
+ endif()
+ endif()
+ set(LLVM_ENABLE_CURL "${HAVE_CURL}")
+endif()
+
+if(LLVM_ENABLE_HTTPLIB)
+ if(LLVM_ENABLE_HTTPLIB STREQUAL FORCE_ON)
+ find_package(httplib REQUIRED)
+ else()
+ find_package(httplib)
+ endif()
+ if(HTTPLIB_FOUND)
+ # Check if the "httplib" we found is usable; for example there may be another
+ # library with the same name.
+ cmake_push_check_state()
+ list(APPEND CMAKE_REQUIRED_LIBRARIES ${HTTPLIB_LIBRARY})
+ check_cxx_symbol_exists(CPPHTTPLIB_HTTPLIB_H ${HTTPLIB_HEADER_PATH} HAVE_HTTPLIB)
+ cmake_pop_check_state()
+ if(LLVM_ENABLE_HTTPLIB STREQUAL FORCE_ON AND NOT HAVE_HTTPLIB)
+ message(FATAL_ERROR "Failed to configure cpp-httplib")
+ endif()
+ endif()
+ set(LLVM_ENABLE_HTTPLIB "${HAVE_HTTPLIB}")
+endif()
+
+# Don't look for these libraries if we're using MSan, since uninstrumented third
+# party code may call MSan interceptors like strlen, leading to false positives.
+if(NOT LLVM_USE_SANITIZER MATCHES "Memory.*")
+ # Don't look for these libraries on Windows.
+ if (NOT PURE_WINDOWS)
+ # Skip libedit if using ASan as it contains memory leaks.
+ if (LLVM_ENABLE_LIBEDIT AND NOT LLVM_USE_SANITIZER MATCHES ".*Address.*")
+ find_package(LibEdit)
+ set(HAVE_LIBEDIT ${LibEdit_FOUND})
+ else()
+ set(HAVE_LIBEDIT 0)
+ endif()
+ if(LLVM_ENABLE_TERMINFO)
+ if(LLVM_ENABLE_TERMINFO STREQUAL FORCE_ON)
+ find_package(Terminfo REQUIRED)
+ else()
+ find_package(Terminfo)
+ endif()
+ set(LLVM_ENABLE_TERMINFO "${Terminfo_FOUND}")
+ endif()
+ else()
+ set(LLVM_ENABLE_TERMINFO 0)
+ endif()
+else()
+ set(LLVM_ENABLE_TERMINFO 0)
+endif()
+
+check_library_exists(xar xar_open "" LLVM_HAVE_LIBXAR)
+if(LLVM_HAVE_LIBXAR)
+ message(STATUS "The xar file format has been deprecated: LLVM_HAVE_LIBXAR might be removed in the future.")
+ # The xar file format has been deprecated since macOS 12.0.
+ if (CMAKE_OSX_DEPLOYMENT_TARGET VERSION_GREATER_EQUAL 12)
+ set(LLVM_HAVE_LIBXAR 0)
+ else()
+ set(XAR_LIB xar)
+ endif()
+endif()
+
+# function checks
+check_symbol_exists(arc4random "stdlib.h" HAVE_DECL_ARC4RANDOM)
+find_package(Backtrace)
+set(HAVE_BACKTRACE ${Backtrace_FOUND})
+set(BACKTRACE_HEADER ${Backtrace_HEADER})
+
+# Prevent check_symbol_exists from using API that is not supported for a given
+# deployment target.
+check_c_compiler_flag("-Werror=unguarded-availability-new" "C_SUPPORTS_WERROR_UNGUARDED_AVAILABILITY_NEW")
+if(C_SUPPORTS_WERROR_UNGUARDED_AVAILABILITY_NEW)
+ set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -Werror=unguarded-availability-new")
+endif()
+
+# Determine whether we can register EH tables.
+check_symbol_exists(__register_frame "${CMAKE_CURRENT_LIST_DIR}/unwind.h" HAVE_REGISTER_FRAME)
+check_symbol_exists(__deregister_frame "${CMAKE_CURRENT_LIST_DIR}/unwind.h" HAVE_DEREGISTER_FRAME)
+check_symbol_exists(__unw_add_dynamic_fde "${CMAKE_CURRENT_LIST_DIR}/unwind.h" HAVE_UNW_ADD_DYNAMIC_FDE)
+
+check_symbol_exists(_Unwind_Backtrace "unwind.h" HAVE__UNWIND_BACKTRACE)
+check_symbol_exists(getpagesize unistd.h HAVE_GETPAGESIZE)
+check_symbol_exists(sysconf unistd.h HAVE_SYSCONF)
+check_symbol_exists(getrusage sys/resource.h HAVE_GETRUSAGE)
+check_symbol_exists(setrlimit sys/resource.h HAVE_SETRLIMIT)
+check_symbol_exists(isatty unistd.h HAVE_ISATTY)
+check_symbol_exists(futimens sys/stat.h HAVE_FUTIMENS)
+check_symbol_exists(futimes sys/time.h HAVE_FUTIMES)
+# AddressSanitizer conflicts with lib/Support/Unix/Signals.inc
+# Avoid sigaltstack on Apple platforms, where backtrace() cannot handle it
+# (rdar://7089625) and _Unwind_Backtrace is unusable because it cannot unwind
+# past the signal handler after an assertion failure (rdar://29866587).
+if( HAVE_SIGNAL_H AND NOT LLVM_USE_SANITIZER MATCHES ".*Address.*" AND NOT APPLE )
+ check_symbol_exists(sigaltstack signal.h HAVE_SIGALTSTACK)
+endif()
+check_symbol_exists(mallctl malloc_np.h HAVE_MALLCTL)
+check_symbol_exists(mallinfo malloc.h HAVE_MALLINFO)
+check_symbol_exists(mallinfo2 malloc.h HAVE_MALLINFO2)
+check_symbol_exists(malloc_zone_statistics malloc/malloc.h
+ HAVE_MALLOC_ZONE_STATISTICS)
+check_symbol_exists(getrlimit "sys/types.h;sys/time.h;sys/resource.h" HAVE_GETRLIMIT)
+check_symbol_exists(posix_spawn spawn.h HAVE_POSIX_SPAWN)
+check_symbol_exists(pread unistd.h HAVE_PREAD)
+check_symbol_exists(sbrk unistd.h HAVE_SBRK)
+check_symbol_exists(strerror string.h HAVE_STRERROR)
+check_symbol_exists(strerror_r string.h HAVE_STRERROR_R)
+check_symbol_exists(strerror_s string.h HAVE_DECL_STRERROR_S)
+check_symbol_exists(setenv stdlib.h HAVE_SETENV)
+if( PURE_WINDOWS )
+ check_symbol_exists(_chsize_s io.h HAVE__CHSIZE_S)
+
+ check_function_exists(_alloca HAVE__ALLOCA)
+ check_function_exists(__alloca HAVE___ALLOCA)
+ check_function_exists(__chkstk HAVE___CHKSTK)
+ check_function_exists(__chkstk_ms HAVE___CHKSTK_MS)
+ check_function_exists(___chkstk HAVE____CHKSTK)
+ check_function_exists(___chkstk_ms HAVE____CHKSTK_MS)
+
+ check_function_exists(__ashldi3 HAVE___ASHLDI3)
+ check_function_exists(__ashrdi3 HAVE___ASHRDI3)
+ check_function_exists(__divdi3 HAVE___DIVDI3)
+ check_function_exists(__fixdfdi HAVE___FIXDFDI)
+ check_function_exists(__fixsfdi HAVE___FIXSFDI)
+ check_function_exists(__floatdidf HAVE___FLOATDIDF)
+ check_function_exists(__lshrdi3 HAVE___LSHRDI3)
+ check_function_exists(__moddi3 HAVE___MODDI3)
+ check_function_exists(__udivdi3 HAVE___UDIVDI3)
+ check_function_exists(__umoddi3 HAVE___UMODDI3)
+
+ check_function_exists(__main HAVE___MAIN)
+ check_function_exists(__cmpdi2 HAVE___CMPDI2)
+endif()
+
+CHECK_STRUCT_HAS_MEMBER("struct stat" st_mtimespec.tv_nsec
+ "sys/types.h;sys/stat.h" HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC)
+if (UNIX AND ${CMAKE_SYSTEM_NAME} MATCHES "AIX")
+# The st_mtim.tv_nsec member of a `stat` structure is not reliable on some AIX
+# environments.
+ set(HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 0)
+else()
+ CHECK_STRUCT_HAS_MEMBER("struct stat" st_mtim.tv_nsec
+ "sys/types.h;sys/stat.h" HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC)
+endif()
+
+check_symbol_exists(__GLIBC__ stdio.h LLVM_USING_GLIBC)
+if( LLVM_USING_GLIBC )
+ add_compile_definitions(_GNU_SOURCE)
+ list(APPEND CMAKE_REQUIRED_DEFINITIONS "-D_GNU_SOURCE")
+# enable 64bit off_t on 32bit systems using glibc
+ if (CMAKE_SIZEOF_VOID_P EQUAL 4)
+ add_compile_definitions(_FILE_OFFSET_BITS=64)
+ list(APPEND CMAKE_REQUIRED_DEFINITIONS "-D_FILE_OFFSET_BITS=64")
+ endif()
+endif()
+
+# This check requires _GNU_SOURCE.
+if (NOT PURE_WINDOWS)
+ if (LLVM_PTHREAD_LIB)
+ list(APPEND CMAKE_REQUIRED_LIBRARIES ${LLVM_PTHREAD_LIB})
+ endif()
+ check_symbol_exists(pthread_getname_np pthread.h HAVE_PTHREAD_GETNAME_NP)
+ check_symbol_exists(pthread_setname_np pthread.h HAVE_PTHREAD_SETNAME_NP)
+ if (LLVM_PTHREAD_LIB)
+ list(REMOVE_ITEM CMAKE_REQUIRED_LIBRARIES ${LLVM_PTHREAD_LIB})
+ endif()
+endif()
+
+# This check requires _GNU_SOURCE.
+if( HAVE_DLFCN_H )
+ if( HAVE_LIBDL )
+ list(APPEND CMAKE_REQUIRED_LIBRARIES dl)
+ endif()
+ check_symbol_exists(dlopen dlfcn.h HAVE_DLOPEN)
+ check_symbol_exists(dladdr dlfcn.h HAVE_DLADDR)
+ if( HAVE_LIBDL )
+ list(REMOVE_ITEM CMAKE_REQUIRED_LIBRARIES dl)
+ endif()
+endif()
+
+# available programs checks
+function(llvm_find_program name)
+ string(TOUPPER ${name} NAME)
+ string(REGEX REPLACE "\\." "_" NAME ${NAME})
+
+ find_program(LLVM_PATH_${NAME} NAMES ${ARGV})
+ mark_as_advanced(LLVM_PATH_${NAME})
+ if(LLVM_PATH_${NAME})
+ set(HAVE_${NAME} 1 CACHE INTERNAL "Is ${name} available ?")
+ mark_as_advanced(HAVE_${NAME})
+ else(LLVM_PATH_${NAME})
+ set(HAVE_${NAME} "" CACHE INTERNAL "Is ${name} available ?")
+ endif(LLVM_PATH_${NAME})
+endfunction()
+
+if (LLVM_ENABLE_DOXYGEN)
+ llvm_find_program(dot)
+endif ()
+
+if(LLVM_ENABLE_FFI)
+ set(FFI_REQUIRE_INCLUDE On)
+ if(LLVM_ENABLE_FFI STREQUAL FORCE_ON)
+ find_package(FFI REQUIRED)
+ else()
+ find_package(FFI)
+ endif()
+ set(LLVM_ENABLE_FFI "${FFI_FOUND}")
+else()
+ unset(HAVE_FFI_FFI_H CACHE)
+ unset(HAVE_FFI_H CACHE)
+ unset(HAVE_FFI_CALL CACHE)
+endif()
+
+check_symbol_exists(proc_pid_rusage "libproc.h" HAVE_PROC_PID_RUSAGE)
+
+# Define LLVM_HAS_ATOMICS if gcc or MSVC atomic builtins are supported.
+include(CheckAtomic)
+
+if( LLVM_ENABLE_PIC )
+ set(ENABLE_PIC 1)
+else()
+ set(ENABLE_PIC 0)
+ check_cxx_compiler_flag("-fno-pie" SUPPORTS_NO_PIE_FLAG)
+ if(SUPPORTS_NO_PIE_FLAG)
+ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fno-pie")
+ endif()
+endif()
+
+check_cxx_compiler_flag("-Wvariadic-macros" SUPPORTS_VARIADIC_MACROS_FLAG)
+check_cxx_compiler_flag("-Wgnu-zero-variadic-macro-arguments"
+ SUPPORTS_GNU_ZERO_VARIADIC_MACRO_ARGUMENTS_FLAG)
+
+set(USE_NO_MAYBE_UNINITIALIZED 0)
+set(USE_NO_UNINITIALIZED 0)
+
+# Disable gcc's potentially uninitialized use analysis as it presents lots of
+# false positives.
+if (CMAKE_COMPILER_IS_GNUCXX)
+ check_cxx_compiler_flag("-Wmaybe-uninitialized" HAS_MAYBE_UNINITIALIZED)
+ if (HAS_MAYBE_UNINITIALIZED)
+ set(USE_NO_MAYBE_UNINITIALIZED 1)
+ else()
+ # Only recent versions of gcc make the distinction between -Wuninitialized
+ # and -Wmaybe-uninitialized. If -Wmaybe-uninitialized isn't supported, just
+ # turn off all uninitialized use warnings.
+ check_cxx_compiler_flag("-Wuninitialized" HAS_UNINITIALIZED)
+ set(USE_NO_UNINITIALIZED ${HAS_UNINITIALIZED})
+ endif()
+endif()
+
+# By default, we target the host, but this can be overridden at CMake
+# invocation time.
+include(GetHostTriple)
+get_host_triple(LLVM_INFERRED_HOST_TRIPLE)
+
+set(LLVM_HOST_TRIPLE "${LLVM_INFERRED_HOST_TRIPLE}" CACHE STRING
+ "Host on which LLVM binaries will run")
+
+# Determine the native architecture.
+string(TOLOWER "${LLVM_TARGET_ARCH}" LLVM_NATIVE_ARCH)
+if( LLVM_NATIVE_ARCH STREQUAL "host" )
+ string(REGEX MATCH "^[^-]*" LLVM_NATIVE_ARCH ${LLVM_HOST_TRIPLE})
+endif ()
+
+if (LLVM_NATIVE_ARCH MATCHES "i[2-6]86")
+ set(LLVM_NATIVE_ARCH X86)
+elseif (LLVM_NATIVE_ARCH STREQUAL "x86")
+ set(LLVM_NATIVE_ARCH X86)
+elseif (LLVM_NATIVE_ARCH STREQUAL "amd64")
+ set(LLVM_NATIVE_ARCH X86)
+elseif (LLVM_NATIVE_ARCH STREQUAL "x86_64")
+ set(LLVM_NATIVE_ARCH X86)
+elseif (LLVM_NATIVE_ARCH MATCHES "sparc")
+ set(LLVM_NATIVE_ARCH Sparc)
+elseif (LLVM_NATIVE_ARCH MATCHES "sparc64")
+ set(LLVM_NATIVE_ARCH Sparc)
+elseif (LLVM_NATIVE_ARCH MATCHES "ppc")
+ set(LLVM_NATIVE_ARCH PowerPC)
+elseif (LLVM_NATIVE_ARCH MATCHES "powerpc")
+ set(LLVM_NATIVE_ARCH PowerPC)
+elseif (LLVM_NATIVE_ARCH MATCHES "ppc64")
+ set(LLVM_NATIVE_ARCH PowerPC)
+elseif (LLVM_NATIVE_ARCH MATCHES "ppc64le")
+ set(LLVM_NATIVE_ARCH PowerPC)
+elseif (LLVM_NATIVE_ARCH MATCHES "aarch64")
+ set(LLVM_NATIVE_ARCH AArch64)
+elseif (LLVM_NATIVE_ARCH MATCHES "arm64")
+ set(LLVM_NATIVE_ARCH AArch64)
+elseif (LLVM_NATIVE_ARCH MATCHES "arm")
+ set(LLVM_NATIVE_ARCH ARM)
+elseif (LLVM_NATIVE_ARCH MATCHES "avr")
+ set(LLVM_NATIVE_ARCH AVR)
+elseif (LLVM_NATIVE_ARCH MATCHES "mips")
+ set(LLVM_NATIVE_ARCH Mips)
+elseif (LLVM_NATIVE_ARCH MATCHES "xcore")
+ set(LLVM_NATIVE_ARCH XCore)
+elseif (LLVM_NATIVE_ARCH MATCHES "msp430")
+ set(LLVM_NATIVE_ARCH MSP430)
+elseif (LLVM_NATIVE_ARCH MATCHES "hexagon")
+ set(LLVM_NATIVE_ARCH Hexagon)
+elseif (LLVM_NATIVE_ARCH MATCHES "s390x")
+ set(LLVM_NATIVE_ARCH SystemZ)
+elseif (LLVM_NATIVE_ARCH MATCHES "wasm32")
+ set(LLVM_NATIVE_ARCH WebAssembly)
+elseif (LLVM_NATIVE_ARCH MATCHES "wasm64")
+ set(LLVM_NATIVE_ARCH WebAssembly)
+elseif (LLVM_NATIVE_ARCH MATCHES "riscv32")
+ set(LLVM_NATIVE_ARCH RISCV)
+elseif (LLVM_NATIVE_ARCH MATCHES "riscv64")
+ set(LLVM_NATIVE_ARCH RISCV)
+elseif (LLVM_NATIVE_ARCH STREQUAL "m68k")
+ set(LLVM_NATIVE_ARCH M68k)
+elseif (LLVM_NATIVE_ARCH MATCHES "loongarch")
+ set(LLVM_NATIVE_ARCH LoongArch)
+else ()
+ message(FATAL_ERROR "Unknown architecture ${LLVM_NATIVE_ARCH}")
+endif ()
+
+# If build targets includes "host" or "Native", then replace with native architecture.
+foreach (NATIVE_KEYWORD host Native)
+ list(FIND LLVM_TARGETS_TO_BUILD ${NATIVE_KEYWORD} idx)
+ if( NOT idx LESS 0 )
+ list(REMOVE_AT LLVM_TARGETS_TO_BUILD ${idx})
+ list(APPEND LLVM_TARGETS_TO_BUILD ${LLVM_NATIVE_ARCH})
+ list(REMOVE_DUPLICATES LLVM_TARGETS_TO_BUILD)
+ endif()
+endforeach()
+
+if (NOT ${LLVM_NATIVE_ARCH} IN_LIST LLVM_TARGETS_TO_BUILD)
+ message(STATUS
+ "Native target ${LLVM_NATIVE_ARCH} is not selected; lli will not JIT code")
+else ()
+ message(STATUS "Native target architecture is ${LLVM_NATIVE_ARCH}")
+ set(LLVM_NATIVE_TARGET LLVMInitialize${LLVM_NATIVE_ARCH}Target)
+ set(LLVM_NATIVE_TARGETINFO LLVMInitialize${LLVM_NATIVE_ARCH}TargetInfo)
+ set(LLVM_NATIVE_TARGETMC LLVMInitialize${LLVM_NATIVE_ARCH}TargetMC)
+ set(LLVM_NATIVE_ASMPRINTER LLVMInitialize${LLVM_NATIVE_ARCH}AsmPrinter)
+
+ # We don't have an ASM parser for all architectures yet.
+ if (EXISTS ${PROJECT_SOURCE_DIR}/lib/Target/${LLVM_NATIVE_ARCH}/AsmParser/CMakeLists.txt)
+ set(LLVM_NATIVE_ASMPARSER LLVMInitialize${LLVM_NATIVE_ARCH}AsmParser)
+ endif ()
+
+ # We don't have an disassembler for all architectures yet.
+ if (EXISTS ${PROJECT_SOURCE_DIR}/lib/Target/${LLVM_NATIVE_ARCH}/Disassembler/CMakeLists.txt)
+ set(LLVM_NATIVE_DISASSEMBLER LLVMInitialize${LLVM_NATIVE_ARCH}Disassembler)
+ endif ()
+endif ()
+
+if( MSVC )
+ set(SHLIBEXT ".lib")
+ set(stricmp "_stricmp")
+ set(strdup "_strdup")
+
+ # Allow setting clang-cl's /winsysroot flag.
+ set(LLVM_WINSYSROOT "" CACHE STRING
+ "If set, argument to clang-cl's /winsysroot")
+
+ if (LLVM_WINSYSROOT)
+ set(MSVC_DIA_SDK_DIR "${LLVM_WINSYSROOT}/DIA SDK" CACHE PATH
+ "Path to the DIA SDK")
+ else()
+ set(MSVC_DIA_SDK_DIR "$ENV{VSINSTALLDIR}DIA SDK" CACHE PATH
+ "Path to the DIA SDK")
+ endif()
+
+ # See if the DIA SDK is available and usable.
+ # Due to a bug in MSVC 2013's installation software, it is possible
+ # for MSVC 2013 to write the DIA SDK into the Visual Studio 2012
+ # install directory. If this happens, the installation is corrupt
+ # and there's nothing we can do. It happens with enough frequency
+ # though that we should handle it. We do so by simply checking that
+ # the DIA SDK folder exists. Should this happen you will need to
+ # uninstall VS 2012 and then re-install VS 2013.
+ if (IS_DIRECTORY "${MSVC_DIA_SDK_DIR}")
+ set(HAVE_DIA_SDK 1)
+ else()
+ set(HAVE_DIA_SDK 0)
+ endif()
+
+ option(LLVM_ENABLE_DIA_SDK "Use MSVC DIA SDK for debugging if available."
+ ${HAVE_DIA_SDK})
+
+ if(LLVM_ENABLE_DIA_SDK AND NOT HAVE_DIA_SDK)
+ message(FATAL_ERROR "DIA SDK not found. If you have both VS 2012 and 2013 installed, you may need to uninstall the former and re-install the latter afterwards.")
+ endif()
+else()
+ set(LLVM_ENABLE_DIA_SDK 0)
+endif( MSVC )
+
+if( LLVM_ENABLE_THREADS )
+ # Check if threading primitives aren't supported on this platform
+ if( NOT HAVE_PTHREAD_H AND NOT WIN32 )
+ set(LLVM_ENABLE_THREADS 0)
+ endif()
+endif()
+
+if( LLVM_ENABLE_THREADS )
+ message(STATUS "Threads enabled.")
+else( LLVM_ENABLE_THREADS )
+ message(STATUS "Threads disabled.")
+endif()
+
+if (LLVM_ENABLE_DOXYGEN)
+ message(STATUS "Doxygen enabled.")
+ find_package(Doxygen REQUIRED)
+
+ if (DOXYGEN_FOUND)
+ # If we find doxygen and we want to enable doxygen by default create a
+ # global aggregate doxygen target for generating llvm and any/all
+ # subprojects doxygen documentation.
+ if (LLVM_BUILD_DOCS)
+ add_custom_target(doxygen ALL)
+ endif()
+
+ option(LLVM_DOXYGEN_EXTERNAL_SEARCH "Enable doxygen external search." OFF)
+ if (LLVM_DOXYGEN_EXTERNAL_SEARCH)
+ set(LLVM_DOXYGEN_SEARCHENGINE_URL "" CACHE STRING "URL to use for external search.")
+ set(LLVM_DOXYGEN_SEARCH_MAPPINGS "" CACHE STRING "Doxygen Search Mappings")
+ endif()
+ endif()
+else()
+ message(STATUS "Doxygen disabled.")
+endif()
+
+find_program(GOLD_EXECUTABLE NAMES ${LLVM_DEFAULT_TARGET_TRIPLE}-ld.gold ld.gold ${LLVM_DEFAULT_TARGET_TRIPLE}-ld ld DOC "The gold linker")
+set(LLVM_BINUTILS_INCDIR "" CACHE PATH
+ "PATH to binutils/include containing plugin-api.h for gold plugin.")
+
+if(CMAKE_GENERATOR MATCHES "Ninja")
+ execute_process(COMMAND ${CMAKE_MAKE_PROGRAM} --version
+ OUTPUT_VARIABLE NINJA_VERSION
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+ set(NINJA_VERSION ${NINJA_VERSION} CACHE STRING "Ninja version number" FORCE)
+ message(STATUS "Ninja version: ${NINJA_VERSION}")
+endif()
+
+if(CMAKE_GENERATOR MATCHES "Ninja" AND
+ NOT "${NINJA_VERSION}" VERSION_LESS "1.9.0" AND
+ CMAKE_HOST_APPLE AND CMAKE_HOST_SYSTEM_VERSION VERSION_GREATER "15.6.0")
+ set(LLVM_TOUCH_STATIC_LIBRARIES ON)
+endif()
+
+if(CMAKE_HOST_APPLE AND APPLE)
+ if(NOT LD64_EXECUTABLE)
+ if(NOT CMAKE_XCRUN)
+ find_program(CMAKE_XCRUN NAMES xcrun)
+ endif()
+ if(CMAKE_XCRUN)
+ execute_process(COMMAND ${CMAKE_XCRUN} -find ld
+ OUTPUT_VARIABLE LD64_EXECUTABLE
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+ else()
+ find_program(LD64_EXECUTABLE NAMES ld DOC "The ld64 linker")
+ endif()
+ endif()
+
+ if(LD64_EXECUTABLE)
+ set(LD64_EXECUTABLE ${LD64_EXECUTABLE} CACHE PATH "ld64 executable")
+ message(STATUS "Found ld64 - ${LD64_EXECUTABLE}")
+ endif()
+endif()
+
+# Keep the version requirements in sync with bindings/ocaml/README.txt.
+set(LLVM_BINDINGS "")
+include(FindOCaml)
+include(AddOCaml)
+if(WIN32 OR NOT LLVM_ENABLE_BINDINGS)
+ message(STATUS "OCaml bindings disabled.")
+else()
+ find_package(OCaml)
+ if( NOT OCAML_FOUND )
+ message(STATUS "OCaml bindings disabled.")
+ else()
+ if( OCAML_VERSION VERSION_LESS "4.00.0" )
+ message(STATUS "OCaml bindings disabled, need OCaml >=4.00.0.")
+ else()
+ find_ocamlfind_package(ctypes VERSION 0.4 OPTIONAL)
+ if( HAVE_OCAML_CTYPES )
+ message(STATUS "OCaml bindings enabled.")
+ set(LLVM_BINDINGS "${LLVM_BINDINGS} ocaml")
+
+ set(LLVM_OCAML_INSTALL_PATH "${OCAML_STDLIB_PATH}" CACHE STRING
+ "Install directory for LLVM OCaml packages")
+ else()
+ message(STATUS "OCaml bindings disabled, need ctypes >=0.4.")
+ endif()
+ endif()
+ endif()
+endif()
+
+string(REPLACE " " ";" LLVM_BINDINGS_LIST "${LLVM_BINDINGS}")
+
+function(find_python_module module)
+ string(REPLACE "." "_" module_name ${module})
+ string(TOUPPER ${module_name} module_upper)
+ set(FOUND_VAR PY_${module_upper}_FOUND)
+ if (DEFINED ${FOUND_VAR})
+ return()
+ endif()
+
+ execute_process(COMMAND "${Python3_EXECUTABLE}" "-c" "import ${module}"
+ RESULT_VARIABLE status
+ ERROR_QUIET)
+
+ if(status)
+ set(${FOUND_VAR} OFF CACHE BOOL "Failed to find python module '${module}'")
+ message(STATUS "Could NOT find Python module ${module}")
+ else()
+ set(${FOUND_VAR} ON CACHE BOOL "Found python module '${module}'")
+ message(STATUS "Found Python module ${module}")
+ endif()
+endfunction()
+
+set (PYTHON_MODULES
+ pygments
+ # Some systems still don't have pygments.lexers.c_cpp which was introduced in
+ # version 2.0 in 2014...
+ pygments.lexers.c_cpp
+ yaml
+ )
+foreach(module ${PYTHON_MODULES})
+ find_python_module(${module})
+endforeach()
+
+if(PY_PYGMENTS_FOUND AND PY_PYGMENTS_LEXERS_C_CPP_FOUND AND PY_YAML_FOUND)
+ set (LLVM_HAVE_OPT_VIEWER_MODULES 1)
+else()
+ set (LLVM_HAVE_OPT_VIEWER_MODULES 0)
+endif()
+
+function(llvm_get_host_prefixes_and_suffixes)
+ # Not all platform files will set these variables (relying on them being
+ # implicitly empty if they're unset), so unset the variables before including
+ # the platform file, to prevent any values from the target system leaking.
+ unset(CMAKE_STATIC_LIBRARY_PREFIX)
+ unset(CMAKE_STATIC_LIBRARY_SUFFIX)
+ unset(CMAKE_SHARED_LIBRARY_PREFIX)
+ unset(CMAKE_SHARED_LIBRARY_SUFFIX)
+ unset(CMAKE_IMPORT_LIBRARY_PREFIX)
+ unset(CMAKE_IMPORT_LIBRARY_SUFFIX)
+ unset(CMAKE_EXECUTABLE_SUFFIX)
+ unset(CMAKE_LINK_LIBRARY_SUFFIX)
+ include(Platform/${CMAKE_HOST_SYSTEM_NAME} OPTIONAL RESULT_VARIABLE _includedFile)
+ if (_includedFile)
+ set(LLVM_HOST_STATIC_LIBRARY_PREFIX ${CMAKE_STATIC_LIBRARY_PREFIX} PARENT_SCOPE)
+ set(LLVM_HOST_STATIC_LIBRARY_SUFFIX ${CMAKE_STATIC_LIBRARY_SUFFIX} PARENT_SCOPE)
+ set(LLVM_HOST_SHARED_LIBRARY_PREFIX ${CMAKE_SHARED_LIBRARY_PREFIX} PARENT_SCOPE)
+ set(LLVM_HOST_SHARED_LIBRARY_SUFFIX ${CMAKE_SHARED_LIBRARY_SUFFIX} PARENT_SCOPE)
+ set(LLVM_HOST_IMPORT_LIBRARY_PREFIX ${CMAKE_IMPORT_LIBRARY_PREFIX} PARENT_SCOPE)
+ set(LLVM_HOST_IMPORT_LIBRARY_SUFFIX ${CMAKE_IMPORT_LIBRARY_SUFFIX} PARENT_SCOPE)
+ set(LLVM_HOST_EXECUTABLE_SUFFIX ${CMAKE_EXECUTABLE_SUFFIX} PARENT_SCOPE)
+ set(LLVM_HOST_LINK_LIBRARY_SUFFIX ${CMAKE_LINK_LIBRARY_SUFFIX} PARENT_SCOPE)
+ endif()
+endfunction()
+
+llvm_get_host_prefixes_and_suffixes()
Index: create-16.0.2-llvm-versioning-patch/create.patch.sh
===================================================================
--- create-16.0.2-llvm-versioning-patch/create.patch.sh (nonexistent)
+++ create-16.0.2-llvm-versioning-patch/create.patch.sh (revision 40)
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+VERSION=16.0.2
+
+tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
+mv llvm-$VERSION llvm-$VERSION-orig
+
+cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
+
+diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-llvm-versioning.patch
+
+mv llvm-$VERSION-llvm-versioning.patch ../patches
+
+rm -rf ./llvm-$VERSION
+rm -rf ./llvm-$VERSION-orig
Property changes on: create-16.0.2-llvm-versioning-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: create-16.0.2-llvm-versioning-patch/file.list
===================================================================
--- create-16.0.2-llvm-versioning-patch/file.list (nonexistent)
+++ create-16.0.2-llvm-versioning-patch/file.list (revision 40)
@@ -0,0 +1 @@
+llvm-16.0.2/llvm/tools/llvm-config/llvm-config.cpp
Index: create-16.0.2-llvm-versioning-patch/llvm-16.0.2-new/llvm/tools/llvm-config/llvm-config.cpp
===================================================================
--- create-16.0.2-llvm-versioning-patch/llvm-16.0.2-new/llvm/tools/llvm-config/llvm-config.cpp (nonexistent)
+++ create-16.0.2-llvm-versioning-patch/llvm-16.0.2-new/llvm/tools/llvm-config/llvm-config.cpp (revision 40)
@@ -0,0 +1,748 @@
+//===-- llvm-config.cpp - LLVM project configuration utility --------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// This tool encapsulates information about an LLVM project configuration for
+// use by other project's build environments (to determine installed path,
+// available features, required libraries, etc.).
+//
+// Note that although this tool *may* be used by some parts of LLVM's build
+// itself (i.e., the Makefiles use it to compute required libraries when linking
+// tools), this tool is primarily designed to support external projects.
+//
+//===----------------------------------------------------------------------===//
+
+#include "llvm/Config/llvm-config.h"
+#include "llvm/ADT/STLExtras.h"
+#include "llvm/ADT/StringMap.h"
+#include "llvm/ADT/StringRef.h"
+#include "llvm/ADT/Triple.h"
+#include "llvm/ADT/Twine.h"
+#include "llvm/Config/config.h"
+#include "llvm/Support/FileSystem.h"
+#include "llvm/Support/Path.h"
+#include "llvm/Support/WithColor.h"
+#include "llvm/Support/raw_ostream.h"
+#include <cstdlib>
+#include <set>
+#include <unordered_set>
+#include <vector>
+
+using namespace llvm;
+
+// Include the build time variables we can report to the user. This is generated
+// at build time from the BuildVariables.inc.in file by the build system.
+#include "BuildVariables.inc"
+
+// Include the component table. This creates an array of struct
+// AvailableComponent entries, which record the component name, library name,
+// and required components for all of the available libraries.
+//
+// Not all components define a library, we also use "library groups" as a way to
+// create entries for pseudo groups like x86 or all-targets.
+#include "LibraryDependencies.inc"
+
+// Built-in extensions also register their dependencies, but in a separate file,
+// later in the process.
+#include "ExtensionDependencies.inc"
+
+// LinkMode determines what libraries and flags are returned by llvm-config.
+enum LinkMode {
+ // LinkModeAuto will link with the default link mode for the installation,
+ // which is dependent on the value of LLVM_LINK_LLVM_DYLIB, and fall back
+ // to the alternative if the required libraries are not available.
+ LinkModeAuto = 0,
+
+ // LinkModeShared will link with the dynamic component libraries if they
+ // exist, and return an error otherwise.
+ LinkModeShared = 1,
+
+ // LinkModeStatic will link with the static component libraries if they
+ // exist, and return an error otherwise.
+ LinkModeStatic = 2,
+};
+
+/// Traverse a single component adding to the topological ordering in
+/// \arg RequiredLibs.
+///
+/// \param Name - The component to traverse.
+/// \param ComponentMap - A prebuilt map of component names to descriptors.
+/// \param VisitedComponents [in] [out] - The set of already visited components.
+/// \param RequiredLibs [out] - The ordered list of required
+/// libraries.
+/// \param GetComponentNames - Get the component names instead of the
+/// library name.
+static void VisitComponent(const std::string &Name,
+ const StringMap<AvailableComponent *> &ComponentMap,
+ std::set<AvailableComponent *> &VisitedComponents,
+ std::vector<std::string> &RequiredLibs,
+ bool IncludeNonInstalled, bool GetComponentNames,
+ const std::function<std::string(const StringRef &)>
+ *GetComponentLibraryPath,
+ std::vector<std::string> *Missing,
+ const std::string &DirSep) {
+ // Lookup the component.
+ AvailableComponent *AC = ComponentMap.lookup(Name);
+ if (!AC) {
+ errs() << "Can't find component: '" << Name << "' in the map. Available components are: ";
+ for (const auto &Component : ComponentMap) {
+ errs() << "'" << Component.first() << "' ";
+ }
+ errs() << "\n";
+ report_fatal_error("abort");
+ }
+ assert(AC && "Invalid component name!");
+
+ // Add to the visited table.
+ if (!VisitedComponents.insert(AC).second) {
+ // We are done if the component has already been visited.
+ return;
+ }
+
+ // Only include non-installed components if requested.
+ if (!AC->IsInstalled && !IncludeNonInstalled)
+ return;
+
+ // Otherwise, visit all the dependencies.
+ for (unsigned i = 0; AC->RequiredLibraries[i]; ++i) {
+ VisitComponent(AC->RequiredLibraries[i], ComponentMap, VisitedComponents,
+ RequiredLibs, IncludeNonInstalled, GetComponentNames,
+ GetComponentLibraryPath, Missing, DirSep);
+ }
+
+ // Special handling for the special 'extensions' component. Its content is
+ // not populated by llvm-build, but later in the process and loaded from
+ // ExtensionDependencies.inc.
+ if (Name == "extensions") {
+ for (auto const &AvailableExtension : AvailableExtensions) {
+ for (const char *const *Iter = &AvailableExtension.RequiredLibraries[0];
+ *Iter; ++Iter) {
+ AvailableComponent *AC = ComponentMap.lookup(*Iter);
+ if (!AC) {
+ RequiredLibs.push_back(*Iter);
+ } else {
+ VisitComponent(*Iter, ComponentMap, VisitedComponents, RequiredLibs,
+ IncludeNonInstalled, GetComponentNames,
+ GetComponentLibraryPath, Missing, DirSep);
+ }
+ }
+ }
+ }
+
+ if (GetComponentNames) {
+ RequiredLibs.push_back(Name);
+ return;
+ }
+
+ // Add to the required library list.
+ if (AC->Library) {
+ if (Missing && GetComponentLibraryPath) {
+ std::string path = (*GetComponentLibraryPath)(AC->Library);
+ if (DirSep == "\\") {
+ std::replace(path.begin(), path.end(), '/', '\\');
+ }
+ if (!sys::fs::exists(path))
+ Missing->push_back(path);
+ }
+ RequiredLibs.push_back(AC->Library);
+ }
+}
+
+/// Compute the list of required libraries for a given list of
+/// components, in an order suitable for passing to a linker (that is, libraries
+/// appear prior to their dependencies).
+///
+/// \param Components - The names of the components to find libraries for.
+/// \param IncludeNonInstalled - Whether non-installed components should be
+/// reported.
+/// \param GetComponentNames - True if one would prefer the component names.
+static std::vector<std::string> ComputeLibsForComponents(
+ const std::vector<StringRef> &Components, bool IncludeNonInstalled,
+ bool GetComponentNames, const std::function<std::string(const StringRef &)>
+ *GetComponentLibraryPath,
+ std::vector<std::string> *Missing, const std::string &DirSep) {
+ std::vector<std::string> RequiredLibs;
+ std::set<AvailableComponent *> VisitedComponents;
+
+ // Build a map of component names to information.
+ StringMap<AvailableComponent *> ComponentMap;
+ for (auto &AC : AvailableComponents)
+ ComponentMap[AC.Name] = &AC;
+
+ // Visit the components.
+ for (unsigned i = 0, e = Components.size(); i != e; ++i) {
+ // Users are allowed to provide mixed case component names.
+ std::string ComponentLower = Components[i].lower();
+
+ // Validate that the user supplied a valid component name.
+ if (!ComponentMap.count(ComponentLower)) {
+ llvm::errs() << "llvm-config: unknown component name: " << Components[i]
+ << "\n";
+ exit(1);
+ }
+
+ VisitComponent(ComponentLower, ComponentMap, VisitedComponents,
+ RequiredLibs, IncludeNonInstalled, GetComponentNames,
+ GetComponentLibraryPath, Missing, DirSep);
+ }
+
+ // The list is now ordered with leafs first, we want the libraries to printed
+ // in the reverse order of dependency.
+ std::reverse(RequiredLibs.begin(), RequiredLibs.end());
+
+ return RequiredLibs;
+}
+
+/* *** */
+
+static void usage(bool ExitWithFailure = true) {
+ errs() << "\
+usage: llvm-config <OPTION>... [<COMPONENT>...]\n\
+\n\
+Get various configuration information needed to compile programs which use\n\
+LLVM. Typically called from 'configure' scripts. Examples:\n\
+ llvm-config --cxxflags\n\
+ llvm-config --ldflags\n\
+ llvm-config --libs engine bcreader scalaropts\n\
+\n\
+Options:\n\
+ --assertion-mode Print assertion mode of LLVM tree (ON or OFF).\n\
+ --bindir Directory containing LLVM executables.\n\
+ --build-mode Print build mode of LLVM tree (e.g. Debug or Release).\n\
+ --build-system Print the build system used to build LLVM (e.g. `cmake` or `gn`).\n\
+ --cflags C compiler flags for files that include LLVM headers.\n\
+ --cmakedir Directory containing LLVM CMake modules.\n\
+ --components List of all possible components.\n\
+ --cppflags C preprocessor flags for files that include LLVM headers.\n\
+ --cxxflags C++ compiler flags for files that include LLVM headers.\n\
+ --has-rtti Print whether or not LLVM was built with rtti (YES or NO).\n\
+ --help Print a summary of llvm-config arguments.\n\
+ --host-target Target triple used to configure LLVM.\n\
+ --ignore-libllvm Ignore libLLVM and link component libraries instead.\n\
+ --includedir Directory containing LLVM headers.\n\
+ --ldflags Print Linker flags.\n\
+ --libdir Directory containing LLVM libraries.\n\
+ --libfiles Fully qualified library filenames for makefile depends.\n\
+ --libnames Bare library names for in-tree builds.\n\
+ --libs Libraries needed to link against LLVM components.\n\
+ --link-shared Link the components as shared libraries.\n\
+ --link-static Link the component libraries statically.\n\
+ --obj-root Print the object root used to build LLVM.\n\
+ --prefix Print the installation prefix.\n\
+ --shared-mode Print how the provided components can be collectively linked (`shared` or `static`).\n\
+ --system-libs System Libraries needed to link against LLVM components.\n\
+ --targets-built List of all targets currently built.\n\
+ --version Print LLVM version.\n\
+Typical components:\n\
+ all All LLVM libraries (default).\n\
+ engine Either a native JIT or a bitcode interpreter.\n";
+ if (ExitWithFailure)
+ exit(1);
+}
+
+/// Compute the path to the main executable.
+std::string GetExecutablePath(const char *Argv0) {
+ // This just needs to be some symbol in the binary; C++ doesn't
+ // allow taking the address of ::main however.
+ void *P = (void *)(intptr_t)GetExecutablePath;
+ return llvm::sys::fs::getMainExecutable(Argv0, P);
+}
+
+/// Expand the semi-colon delimited LLVM_DYLIB_COMPONENTS into
+/// the full list of components.
+std::vector<std::string> GetAllDyLibComponents(const bool IsInDevelopmentTree,
+ const bool GetComponentNames,
+ const std::string &DirSep) {
+ std::vector<StringRef> DyLibComponents;
+
+ StringRef DyLibComponentsStr(LLVM_DYLIB_COMPONENTS);
+ size_t Offset = 0;
+ while (true) {
+ const size_t NextOffset = DyLibComponentsStr.find(';', Offset);
+ DyLibComponents.push_back(DyLibComponentsStr.substr(Offset, NextOffset-Offset));
+ if (NextOffset == std::string::npos) {
+ break;
+ }
+ Offset = NextOffset + 1;
+ }
+
+ assert(!DyLibComponents.empty());
+
+ return ComputeLibsForComponents(DyLibComponents,
+ /*IncludeNonInstalled=*/IsInDevelopmentTree,
+ GetComponentNames, nullptr, nullptr, DirSep);
+}
+
+int main(int argc, char **argv) {
+ std::vector<StringRef> Components;
+ bool PrintLibs = false, PrintLibNames = false, PrintLibFiles = false;
+ bool PrintSystemLibs = false, PrintSharedMode = false;
+ bool HasAnyOption = false;
+
+ // llvm-config is designed to support being run both from a development tree
+ // and from an installed path. We try and auto-detect which case we are in so
+ // that we can report the correct information when run from a development
+ // tree.
+ bool IsInDevelopmentTree;
+ enum { CMakeStyle, CMakeBuildModeStyle } DevelopmentTreeLayout;
+ llvm::SmallString<256> CurrentPath(GetExecutablePath(argv[0]));
+ std::string CurrentExecPrefix;
+ std::string ActiveObjRoot;
+
+ // If CMAKE_CFG_INTDIR is given, honor it as build mode.
+ char const *build_mode = LLVM_BUILDMODE;
+#if defined(CMAKE_CFG_INTDIR)
+ if (!(CMAKE_CFG_INTDIR[0] == '.' && CMAKE_CFG_INTDIR[1] == '\0'))
+ build_mode = CMAKE_CFG_INTDIR;
+#endif
+
+ // Create an absolute path, and pop up one directory (we expect to be inside a
+ // bin dir).
+ sys::fs::make_absolute(CurrentPath);
+ CurrentExecPrefix =
+ sys::path::parent_path(sys::path::parent_path(CurrentPath)).str();
+
+ // Check to see if we are inside a development tree by comparing to possible
+ // locations (prefix style or CMake style).
+ if (sys::fs::equivalent(CurrentExecPrefix, LLVM_OBJ_ROOT)) {
+ IsInDevelopmentTree = true;
+ DevelopmentTreeLayout = CMakeStyle;
+ ActiveObjRoot = LLVM_OBJ_ROOT;
+ } else if (sys::fs::equivalent(sys::path::parent_path(CurrentExecPrefix),
+ LLVM_OBJ_ROOT)) {
+ IsInDevelopmentTree = true;
+ DevelopmentTreeLayout = CMakeBuildModeStyle;
+ ActiveObjRoot = LLVM_OBJ_ROOT;
+ } else {
+ IsInDevelopmentTree = false;
+ DevelopmentTreeLayout = CMakeStyle; // Initialized to avoid warnings.
+ }
+
+ // Compute various directory locations based on the derived location
+ // information.
+ std::string ActivePrefix, ActiveBinDir, ActiveIncludeDir, ActiveLibDir,
+ ActiveCMakeDir;
+ std::string ActiveIncludeOption;
+ if (IsInDevelopmentTree) {
+ ActiveIncludeDir = std::string(LLVM_SRC_ROOT) + "/include";
+ ActivePrefix = CurrentExecPrefix;
+
+ // CMake organizes the products differently than a normal prefix style
+ // layout.
+ switch (DevelopmentTreeLayout) {
+ case CMakeStyle:
+ ActiveBinDir = ActiveObjRoot + "/bin";
+ ActiveLibDir = ActiveObjRoot + "/lib" + LLVM_LIBDIR_SUFFIX;
+ ActiveCMakeDir = ActiveLibDir + "/cmake/llvm";
+ break;
+ case CMakeBuildModeStyle:
+ // FIXME: Should we consider the build-mode-specific path as the prefix?
+ ActivePrefix = ActiveObjRoot;
+ ActiveBinDir = ActiveObjRoot + "/" + build_mode + "/bin";
+ ActiveLibDir =
+ ActiveObjRoot + "/" + build_mode + "/lib" + LLVM_LIBDIR_SUFFIX;
+ // The CMake directory isn't separated by build mode.
+ ActiveCMakeDir =
+ ActivePrefix + "/lib" + LLVM_LIBDIR_SUFFIX + "/cmake/llvm";
+ break;
+ }
+
+ // We need to include files from both the source and object trees.
+ ActiveIncludeOption =
+ ("-I" + ActiveIncludeDir + " " + "-I" + ActiveObjRoot + "/include");
+ } else {
+ ActivePrefix = CurrentExecPrefix;
+ {
+ SmallString<256> Path(LLVM_INSTALL_INCLUDEDIR);
+ sys::fs::make_absolute(ActivePrefix, Path);
+ ActiveIncludeDir = std::string(Path.str());
+ }
+ {
+ SmallString<256> Path(LLVM_TOOLS_INSTALL_DIR);
+ sys::fs::make_absolute(ActivePrefix, Path);
+ ActiveBinDir = std::string(Path.str());
+ }
+ ActiveLibDir = ActivePrefix + "/lib" + LLVM_LIBDIR_SUFFIX;
+ {
+ SmallString<256> Path(LLVM_INSTALL_PACKAGE_DIR);
+ sys::fs::make_absolute(ActivePrefix, Path);
+ ActiveCMakeDir = std::string(Path.str());
+ }
+ ActiveIncludeOption = "-I" + ActiveIncludeDir;
+ }
+
+ /// We only use `shared library` mode in cases where the static library form
+ /// of the components provided are not available; note however that this is
+ /// skipped if we're run from within the build dir. However, once installed,
+ /// we still need to provide correct output when the static archives are
+ /// removed or, as in the case of CMake's `BUILD_SHARED_LIBS`, never present
+ /// in the first place. This can't be done at configure/build time.
+
+ StringRef SharedExt, SharedVersionedExt, SharedDir, SharedPrefix, StaticExt,
+ StaticPrefix, StaticDir = "lib";
+ std::string DirSep = "/";
+ const Triple HostTriple(Triple::normalize(LLVM_HOST_TRIPLE));
+ if (HostTriple.isOSWindows()) {
+ SharedExt = "dll";
+ SharedVersionedExt = LLVM_DYLIB_VERSION ".dll";
+ if (HostTriple.isOSCygMing()) {
+ SharedPrefix = "lib";
+ StaticExt = "a";
+ StaticPrefix = "lib";
+ } else {
+ StaticExt = "lib";
+ DirSep = "\\";
+ std::replace(ActiveObjRoot.begin(), ActiveObjRoot.end(), '/', '\\');
+ std::replace(ActivePrefix.begin(), ActivePrefix.end(), '/', '\\');
+ std::replace(ActiveBinDir.begin(), ActiveBinDir.end(), '/', '\\');
+ std::replace(ActiveLibDir.begin(), ActiveLibDir.end(), '/', '\\');
+ std::replace(ActiveCMakeDir.begin(), ActiveCMakeDir.end(), '/', '\\');
+ std::replace(ActiveIncludeOption.begin(), ActiveIncludeOption.end(), '/',
+ '\\');
+ }
+ SharedDir = ActiveBinDir;
+ StaticDir = ActiveLibDir;
+ } else if (HostTriple.isOSDarwin()) {
+ SharedExt = "dylib";
+ SharedVersionedExt = LLVM_DYLIB_VERSION ".dylib";
+ StaticExt = "a";
+ StaticDir = SharedDir = ActiveLibDir;
+ StaticPrefix = SharedPrefix = "lib";
+ } else {
+ // default to the unix values:
+ SharedExt = "so";
+ StaticExt = "a";
+ StaticDir = SharedDir = ActiveLibDir;
+ StaticPrefix = SharedPrefix = "lib";
+ }
+
+ const bool BuiltDyLib = !!LLVM_ENABLE_DYLIB;
+
+ /// CMake style shared libs, ie each component is in a shared library.
+ const bool BuiltSharedLibs = !!LLVM_ENABLE_SHARED;
+
+ bool DyLibExists = false;
+ const std::string DyLibName =
+ (SharedPrefix + "LLVM." + SharedExt).str();
+
+ // If LLVM_LINK_DYLIB is ON, the single shared library will be returned
+ // for "--libs", etc, if they exist. This behaviour can be overridden with
+ // --link-static or --link-shared.
+ bool LinkDyLib = !!LLVM_LINK_DYLIB;
+
+ if (BuiltDyLib) {
+ std::string path((SharedDir + DirSep + DyLibName).str());
+ if (DirSep == "\\") {
+ std::replace(path.begin(), path.end(), '/', '\\');
+ }
+ DyLibExists = sys::fs::exists(path);
+ if (!DyLibExists) {
+ // The shared library does not exist: don't error unless the user
+ // explicitly passes --link-shared.
+ LinkDyLib = false;
+ }
+ }
+ LinkMode LinkMode =
+ (LinkDyLib || BuiltSharedLibs) ? LinkModeShared : LinkModeAuto;
+
+ /// Get the component's library name without the lib prefix and the
+ /// extension. Returns true if Lib is in a recognized format.
+ auto GetComponentLibraryNameSlice = [&](const StringRef &Lib,
+ StringRef &Out) {
+ if (Lib.startswith("lib")) {
+ unsigned FromEnd;
+ if (Lib.endswith(StaticExt)) {
+ FromEnd = StaticExt.size() + 1;
+ } else if (Lib.endswith(SharedExt)) {
+ FromEnd = SharedExt.size() + 1;
+ } else {
+ FromEnd = 0;
+ }
+
+ if (FromEnd != 0) {
+ Out = Lib.slice(3, Lib.size() - FromEnd);
+ return true;
+ }
+ }
+
+ return false;
+ };
+ /// Maps Unixizms to the host platform.
+ auto GetComponentLibraryFileName = [&](const StringRef &Lib,
+ const bool Shared) {
+ std::string LibFileName;
+ if (Shared) {
+ if (Lib == DyLibName) {
+ // Treat the DyLibName specially. It is not a component library and
+ // already has the necessary prefix and suffix (e.g. `.so`) added so
+ // just return it unmodified.
+ assert(Lib.endswith(SharedExt) && "DyLib is missing suffix");
+ LibFileName = std::string(Lib);
+ } else {
+ LibFileName = (SharedPrefix + Lib + "." + SharedExt).str();
+ }
+ } else {
+ // default to static
+ LibFileName = (StaticPrefix + Lib + "." + StaticExt).str();
+ }
+
+ return LibFileName;
+ };
+ /// Get the full path for a possibly shared component library.
+ auto GetComponentLibraryPath = [&](const StringRef &Name, const bool Shared) {
+ auto LibFileName = GetComponentLibraryFileName(Name, Shared);
+ if (Shared) {
+ return (SharedDir + DirSep + LibFileName).str();
+ } else {
+ return (StaticDir + DirSep + LibFileName).str();
+ }
+ };
+
+ raw_ostream &OS = outs();
+ for (int i = 1; i != argc; ++i) {
+ StringRef Arg = argv[i];
+
+ if (Arg.startswith("-")) {
+ HasAnyOption = true;
+ if (Arg == "--version") {
+ OS << PACKAGE_VERSION << '\n';
+ } else if (Arg == "--prefix") {
+ OS << ActivePrefix << '\n';
+ } else if (Arg == "--bindir") {
+ OS << ActiveBinDir << '\n';
+ } else if (Arg == "--includedir") {
+ OS << ActiveIncludeDir << '\n';
+ } else if (Arg == "--libdir") {
+ OS << ActiveLibDir << '\n';
+ } else if (Arg == "--cmakedir") {
+ OS << ActiveCMakeDir << '\n';
+ } else if (Arg == "--cppflags") {
+ OS << ActiveIncludeOption << ' ' << LLVM_CPPFLAGS << '\n';
+ } else if (Arg == "--cflags") {
+ OS << ActiveIncludeOption << ' ' << LLVM_CFLAGS << '\n';
+ } else if (Arg == "--cxxflags") {
+ OS << ActiveIncludeOption << ' ' << LLVM_CXXFLAGS << '\n';
+ } else if (Arg == "--ldflags") {
+ OS << ((HostTriple.isWindowsMSVCEnvironment()) ? "-LIBPATH:" : "-L")
+ << ActiveLibDir << ' ' << LLVM_LDFLAGS << '\n';
+ } else if (Arg == "--system-libs") {
+ PrintSystemLibs = true;
+ } else if (Arg == "--libs") {
+ PrintLibs = true;
+ } else if (Arg == "--libnames") {
+ PrintLibNames = true;
+ } else if (Arg == "--libfiles") {
+ PrintLibFiles = true;
+ } else if (Arg == "--components") {
+ /// If there are missing static archives and a dylib was
+ /// built, print LLVM_DYLIB_COMPONENTS instead of everything
+ /// in the manifest.
+ std::vector<std::string> Components;
+ for (const auto &AC : AvailableComponents) {
+ // Only include non-installed components when in a development tree.
+ if (!AC.IsInstalled && !IsInDevelopmentTree)
+ continue;
+
+ Components.push_back(AC.Name);
+ if (AC.Library && !IsInDevelopmentTree) {
+ std::string path(GetComponentLibraryPath(AC.Library, false));
+ if (DirSep == "\\") {
+ std::replace(path.begin(), path.end(), '/', '\\');
+ }
+ if (DyLibExists && !sys::fs::exists(path)) {
+ Components =
+ GetAllDyLibComponents(IsInDevelopmentTree, true, DirSep);
+ llvm::sort(Components);
+ break;
+ }
+ }
+ }
+
+ for (unsigned I = 0; I < Components.size(); ++I) {
+ if (I) {
+ OS << ' ';
+ }
+
+ OS << Components[I];
+ }
+ OS << '\n';
+ } else if (Arg == "--targets-built") {
+ OS << LLVM_TARGETS_BUILT << '\n';
+ } else if (Arg == "--host-target") {
+ OS << Triple::normalize(LLVM_DEFAULT_TARGET_TRIPLE) << '\n';
+ } else if (Arg == "--build-mode") {
+ OS << build_mode << '\n';
+ } else if (Arg == "--assertion-mode") {
+#if defined(NDEBUG)
+ OS << "OFF\n";
+#else
+ OS << "ON\n";
+#endif
+ } else if (Arg == "--build-system") {
+ OS << LLVM_BUILD_SYSTEM << '\n';
+ } else if (Arg == "--has-rtti") {
+ OS << (LLVM_HAS_RTTI ? "YES" : "NO") << '\n';
+ } else if (Arg == "--shared-mode") {
+ PrintSharedMode = true;
+ } else if (Arg == "--obj-root") {
+ OS << ActivePrefix << '\n';
+ } else if (Arg == "--ignore-libllvm") {
+ LinkDyLib = false;
+ LinkMode = BuiltSharedLibs ? LinkModeShared : LinkModeAuto;
+ } else if (Arg == "--link-shared") {
+ LinkMode = LinkModeShared;
+ } else if (Arg == "--link-static") {
+ LinkMode = LinkModeStatic;
+ } else if (Arg == "--help") {
+ usage(false);
+ } else {
+ usage();
+ }
+ } else {
+ Components.push_back(Arg);
+ }
+ }
+
+ if (!HasAnyOption)
+ usage();
+
+ if (LinkMode == LinkModeShared && !DyLibExists && !BuiltSharedLibs) {
+ WithColor::error(errs(), "llvm-config") << DyLibName << " is missing\n";
+ return 1;
+ }
+
+ if (PrintLibs || PrintLibNames || PrintLibFiles || PrintSystemLibs ||
+ PrintSharedMode) {
+
+ if (PrintSharedMode && BuiltSharedLibs) {
+ OS << "shared\n";
+ return 0;
+ }
+
+ // If no components were specified, default to "all".
+ if (Components.empty())
+ Components.push_back("all");
+
+ // Construct the list of all the required libraries.
+ std::function<std::string(const StringRef &)>
+ GetComponentLibraryPathFunction = [&](const StringRef &Name) {
+ return GetComponentLibraryPath(Name, LinkMode == LinkModeShared);
+ };
+ std::vector<std::string> MissingLibs;
+ std::vector<std::string> RequiredLibs = ComputeLibsForComponents(
+ Components,
+ /*IncludeNonInstalled=*/IsInDevelopmentTree, false,
+ &GetComponentLibraryPathFunction, &MissingLibs, DirSep);
+ if (!MissingLibs.empty()) {
+ switch (LinkMode) {
+ case LinkModeShared:
+ if (LinkDyLib && !BuiltSharedLibs)
+ break;
+ // Using component shared libraries.
+ for (auto &Lib : MissingLibs)
+ WithColor::error(errs(), "llvm-config") << "missing: " << Lib << "\n";
+ return 1;
+ case LinkModeAuto:
+ if (DyLibExists) {
+ LinkMode = LinkModeShared;
+ break;
+ }
+ WithColor::error(errs(), "llvm-config")
+ << "component libraries and shared library\n\n";
+ [[fallthrough]];
+ case LinkModeStatic:
+ for (auto &Lib : MissingLibs)
+ WithColor::error(errs(), "llvm-config") << "missing: " << Lib << "\n";
+ return 1;
+ }
+ } else if (LinkMode == LinkModeAuto) {
+ LinkMode = LinkModeStatic;
+ }
+
+ if (PrintSharedMode) {
+ std::unordered_set<std::string> FullDyLibComponents;
+ std::vector<std::string> DyLibComponents =
+ GetAllDyLibComponents(IsInDevelopmentTree, false, DirSep);
+
+ for (auto &Component : DyLibComponents) {
+ FullDyLibComponents.insert(Component);
+ }
+ DyLibComponents.clear();
+
+ for (auto &Lib : RequiredLibs) {
+ if (!FullDyLibComponents.count(Lib)) {
+ OS << "static\n";
+ return 0;
+ }
+ }
+ FullDyLibComponents.clear();
+
+ if (LinkMode == LinkModeShared) {
+ OS << "shared\n";
+ return 0;
+ } else {
+ OS << "static\n";
+ return 0;
+ }
+ }
+
+ if (PrintLibs || PrintLibNames || PrintLibFiles) {
+
+ auto PrintForLib = [&](const StringRef &Lib) {
+ const bool Shared = LinkMode == LinkModeShared;
+ if (PrintLibNames) {
+ OS << GetComponentLibraryFileName(Lib, Shared);
+ } else if (PrintLibFiles) {
+ OS << GetComponentLibraryPath(Lib, Shared);
+ } else if (PrintLibs) {
+ // On Windows, output full path to library without parameters.
+ // Elsewhere, if this is a typical library name, include it using -l.
+ if (HostTriple.isWindowsMSVCEnvironment()) {
+ OS << GetComponentLibraryPath(Lib, Shared);
+ } else {
+ StringRef LibName;
+ if (GetComponentLibraryNameSlice(Lib, LibName)) {
+ // Extract library name (remove prefix and suffix).
+ OS << "-l" << LibName;
+ } else {
+ // Lib is already a library name without prefix and suffix.
+ OS << "-l" << Lib;
+ }
+ }
+ }
+ };
+
+ if (LinkMode == LinkModeShared && LinkDyLib) {
+ PrintForLib(DyLibName);
+ } else {
+ for (unsigned i = 0, e = RequiredLibs.size(); i != e; ++i) {
+ auto Lib = RequiredLibs[i];
+ if (i)
+ OS << ' ';
+
+ PrintForLib(Lib);
+ }
+ }
+ OS << '\n';
+ }
+
+ // Print SYSTEM_LIBS after --libs.
+ // FIXME: Each LLVM component may have its dependent system libs.
+ if (PrintSystemLibs) {
+ // Output system libraries only if linking against a static
+ // library (since the shared library links to all system libs
+ // already)
+ OS << (LinkMode == LinkModeStatic ? LLVM_SYSTEM_LIBS : "") << '\n';
+ }
+ } else if (!Components.empty()) {
+ WithColor::error(errs(), "llvm-config")
+ << "components given, but unused\n\n";
+ usage();
+ }
+
+ return 0;
+}
Index: create-16.0.2-openmp-perl-patch/create.patch.sh
===================================================================
--- create-16.0.2-openmp-perl-patch/create.patch.sh (nonexistent)
+++ create-16.0.2-openmp-perl-patch/create.patch.sh (revision 40)
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+VERSION=16.0.2
+
+tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
+mv llvm-$VERSION llvm-$VERSION-orig
+
+cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
+
+diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-openmp-perl.patch
+
+mv llvm-$VERSION-openmp-perl.patch ../patches
+
+rm -rf ./llvm-$VERSION
+rm -rf ./llvm-$VERSION-orig
Property changes on: create-16.0.2-openmp-perl-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: create-16.0.2-openmp-perl-patch/file.list
===================================================================
--- create-16.0.2-openmp-perl-patch/file.list (nonexistent)
+++ create-16.0.2-openmp-perl-patch/file.list (revision 40)
@@ -0,0 +1,2 @@
+llvm-16.0.2/openmp/libomptarget/cmake/Modules/LibomptargetGetDependencies.cmake
+llvm-16.0.2/openmp/runtime/cmake/config-ix.cmake
Index: create-16.0.2-openmp-perl-patch/llvm-16.0.2-new/openmp/libomptarget/cmake/Modules/LibomptargetGetDependencies.cmake
===================================================================
--- create-16.0.2-openmp-perl-patch/llvm-16.0.2-new/openmp/libomptarget/cmake/Modules/LibomptargetGetDependencies.cmake (nonexistent)
+++ create-16.0.2-openmp-perl-patch/llvm-16.0.2-new/openmp/libomptarget/cmake/Modules/LibomptargetGetDependencies.cmake (revision 40)
@@ -0,0 +1,266 @@
+#
+#//===----------------------------------------------------------------------===//
+#//
+#// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+#// See https://llvm.org/LICENSE.txt for license information.
+#// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+#//
+#//===----------------------------------------------------------------------===//
+#
+
+# Try to detect in the system several dependencies required by the different
+# components of libomptarget. These are the dependencies we have:
+#
+# libffi : required to launch target kernels given function and argument
+# pointers.
+# CUDA : required to control offloading to NVIDIA GPUs.
+# VEOS : required to control offloading to NEC Aurora.
+
+include (FindPackageHandleStandardArgs)
+
+################################################################################
+# Looking for LLVM...
+################################################################################
+
+if (OPENMP_STANDALONE_BUILD)
+ # Complete LLVM package is required for building libomptarget
+ # in an out-of-tree mode.
+ find_package(LLVM REQUIRED)
+ message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}")
+ message(STATUS "Using LLVM in: ${LLVM_DIR}")
+ list(APPEND LIBOMPTARGET_LLVM_INCLUDE_DIRS ${LLVM_INCLUDE_DIRS})
+ list(APPEND CMAKE_MODULE_PATH ${LLVM_CMAKE_DIR})
+ include(AddLLVM)
+ if(TARGET omptarget)
+ message(FATAL_ERROR "CMake target 'omptarget' already exists. "
+ "Use an LLVM installation that doesn't expose its 'omptarget' target.")
+ endif()
+else()
+ # Note that OPENMP_STANDALONE_BUILD is FALSE, when
+ # openmp is built with -DLLVM_ENABLE_RUNTIMES="openmp" vs
+ # -DLLVM_ENABLE_PROJECTS="openmp", but openmp build
+ # is actually done as a standalone project build with many
+ # LLVM CMake variables propagated to it.
+ list(APPEND LIBOMPTARGET_LLVM_INCLUDE_DIRS
+ ${LLVM_MAIN_INCLUDE_DIR} ${LLVM_BINARY_DIR}/include
+ )
+ message(STATUS
+ "Using LLVM include directories: ${LIBOMPTARGET_LLVM_INCLUDE_DIRS}")
+endif()
+
+################################################################################
+# Looking for libffi...
+################################################################################
+#find_package(PkgConfig)
+
+pkg_check_modules(LIBOMPTARGET_SEARCH_LIBFFI QUIET libffi)
+
+find_path (
+ LIBOMPTARGET_DEP_LIBFFI_INCLUDE_DIR
+ NAMES
+ ffi.h
+ HINTS
+ ${LIBOMPTARGET_SEARCH_LIBFFI_INCLUDEDIR}
+ ${LIBOMPTARGET_SEARCH_LIBFFI_INCLUDE_DIRS}
+ PATHS
+ /usr/include
+ /usr/local/include
+ /opt/local/include
+ /sw/include
+ ENV CPATH)
+
+# Don't bother look for the library if the header files were not found.
+if (LIBOMPTARGET_DEP_LIBFFI_INCLUDE_DIR)
+ find_library (
+ LIBOMPTARGET_DEP_LIBFFI_LIBRARIES
+ NAMES
+ ffi
+ HINTS
+ ${LIBOMPTARGET_SEARCH_LIBFFI_LIBDIR}
+ ${LIBOMPTARGET_SEARCH_LIBFFI_LIBRARY_DIRS}
+ PATHS
+ /usr/lib
+ /usr/local/lib
+ /opt/local/lib
+ /sw/lib
+ ENV LIBRARY_PATH
+ ENV LD_LIBRARY_PATH)
+endif()
+
+set(LIBOMPTARGET_DEP_LIBFFI_INCLUDE_DIRS ${LIBOMPTARGET_DEP_LIBFFI_INCLUDE_DIR})
+find_package_handle_standard_args(
+ LIBOMPTARGET_DEP_LIBFFI
+ DEFAULT_MSG
+ LIBOMPTARGET_DEP_LIBFFI_LIBRARIES
+ LIBOMPTARGET_DEP_LIBFFI_INCLUDE_DIRS)
+
+mark_as_advanced(
+ LIBOMPTARGET_DEP_LIBFFI_INCLUDE_DIRS
+ LIBOMPTARGET_DEP_LIBFFI_LIBRARIES)
+
+################################################################################
+# Looking for CUDA...
+################################################################################
+if (CUDA_TOOLKIT_ROOT_DIR)
+ set(LIBOMPTARGET_CUDA_TOOLKIT_ROOT_DIR_PRESET TRUE)
+endif()
+find_package(CUDA QUIET)
+
+# Identify any locally installed GPUs to use for testing.
+set(LIBOMPTARGET_DEP_CUDA_ARCH "sm_35")
+
+find_program(LIBOMPTARGET_NVPTX_ARCH NAMES nvptx-arch PATHS ${LLVM_BINARY_DIR}/bin)
+if(LIBOMPTARGET_NVPTX_ARCH)
+ execute_process(COMMAND ${LIBOMPTARGET_NVPTX_ARCH}
+ OUTPUT_VARIABLE LIBOMPTARGET_NVPTX_ARCH_OUTPUT
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+ string(FIND "${LIBOMPTARGET_NVPTX_ARCH_OUTPUT}" "\n" first_arch_string)
+ string(SUBSTRING "${LIBOMPTARGET_NVPTX_ARCH_OUTPUT}" 0 ${first_arch_string}
+ arch_string)
+ if(arch_string)
+ set(LIBOMPTARGET_FOUND_NVIDIA_GPU TRUE)
+ set(LIBOMPTARGET_DEP_CUDA_ARCH "${arch_string}")
+ endif()
+endif()
+
+set(LIBOMPTARGET_DEP_CUDA_FOUND ${CUDA_FOUND})
+set(LIBOMPTARGET_DEP_CUDA_INCLUDE_DIRS ${CUDA_INCLUDE_DIRS})
+
+mark_as_advanced(
+ LIBOMPTARGET_DEP_CUDA_FOUND
+ LIBOMPTARGET_DEP_CUDA_INCLUDE_DIRS)
+
+################################################################################
+# Looking for CUDA Driver API... (needed for CUDA plugin)
+################################################################################
+
+find_library (
+ LIBOMPTARGET_DEP_CUDA_DRIVER_LIBRARIES
+ NAMES
+ cuda
+ PATHS
+ /lib64)
+
+# There is a libcuda.so in lib64/stubs that can be used for linking.
+if (NOT LIBOMPTARGET_DEP_CUDA_DRIVER_LIBRARIES AND CUDA_FOUND)
+ get_filename_component(CUDA_LIBDIR "${CUDA_cudart_static_LIBRARY}" DIRECTORY)
+ find_library(
+ LIBOMPTARGET_DEP_CUDA_DRIVER_LIBRARIES
+ NAMES
+ cuda
+ HINTS
+ "${CUDA_LIBDIR}/stubs")
+endif()
+
+find_package_handle_standard_args(
+ LIBOMPTARGET_DEP_CUDA_DRIVER
+ DEFAULT_MSG
+ LIBOMPTARGET_DEP_CUDA_DRIVER_LIBRARIES)
+
+mark_as_advanced(LIBOMPTARGET_DEP_CUDA_DRIVER_LIBRARIES)
+
+################################################################################
+# Looking for AMD GPUs...
+################################################################################
+
+find_program(LIBOMPTARGET_AMDGPU_ARCH NAMES amdgpu-arch PATHS ${LLVM_BINARY_DIR}/bin)
+if(LIBOMPTARGET_AMDGPU_ARCH)
+ execute_process(COMMAND ${LIBOMPTARGET_AMDGPU_ARCH}
+ OUTPUT_VARIABLE LIBOMPTARGET_AMDGPU_ARCH_OUTPUT
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+ string(FIND "${LIBOMPTARGET_AMDGPU_ARCH_OUTPUT}" "\n" first_arch_string)
+ string(SUBSTRING "${LIBOMPTARGET_AMDGPU_ARCH_OUTPUT}" 0 ${first_arch_string}
+ arch_string)
+ if(arch_string)
+ set(LIBOMPTARGET_FOUND_AMDGPU_GPU TRUE)
+ set(LIBOMPTARGET_DEP_AMDGPU_ARCH "${arch_string}")
+ endif()
+endif()
+
+
+################################################################################
+# Looking for VEO...
+################################################################################
+
+find_path (
+ LIBOMPTARGET_DEP_VEO_INCLUDE_DIR
+ NAMES
+ ve_offload.h
+ PATHS
+ /usr/include
+ /usr/local/include
+ /opt/local/include
+ /sw/include
+ /opt/nec/ve/veos/include
+ ENV CPATH
+ PATH_SUFFIXES
+ libveo)
+
+find_library (
+ LIBOMPTARGET_DEP_VEO_LIBRARIES
+ NAMES
+ veo
+ PATHS
+ /usr/lib
+ /usr/local/lib
+ /opt/local/lib
+ /sw/lib
+ /opt/nec/ve/veos/lib64
+ ENV LIBRARY_PATH
+ ENV LD_LIBRARY_PATH)
+
+find_library(
+ LIBOMPTARGET_DEP_VEOSINFO_LIBRARIES
+ NAMES
+ veosinfo
+ PATHS
+ /usr/lib
+ /usr/local/lib
+ /opt/local/lib
+ /sw/lib
+ /opt/nec/ve/veos/lib64
+ ENV LIBRARY_PATH
+ ENV LD_LIBRARY_PATH)
+
+set(LIBOMPTARGET_DEP_VEO_INCLUDE_DIRS ${LIBOMPTARGET_DEP_VEO_INCLUDE_DIR})
+find_package_handle_standard_args(
+ LIBOMPTARGET_DEP_VEO
+ DEFAULT_MSG
+ LIBOMPTARGET_DEP_VEO_LIBRARIES
+ LIBOMPTARGET_DEP_VEOSINFO_LIBRARIES
+ LIBOMPTARGET_DEP_VEO_INCLUDE_DIRS)
+
+mark_as_advanced(
+ LIBOMPTARGET_DEP_VEO_FOUND
+ LIBOMPTARGET_DEP_VEO_INCLUDE_DIRS)
+
+# Looking for CUDA libdevice subdirectory
+#
+# Special case for Debian/Ubuntu to have nvidia-cuda-toolkit work
+# out of the box. More info on http://bugs.debian.org/882505
+################################################################################
+
+set(LIBOMPTARGET_CUDA_LIBDEVICE_SUBDIR nvvm/libdevice)
+
+# Don't alter CUDA_TOOLKIT_ROOT_DIR if the user specified it, if a value was
+# already cached for it, or if it already has libdevice. Otherwise, on
+# Debian/Ubuntu, look where the nvidia-cuda-toolkit package normally installs
+# libdevice.
+if (NOT LIBOMPTARGET_CUDA_TOOLKIT_ROOT_DIR_PRESET AND
+ NOT EXISTS
+ "${CUDA_TOOLKIT_ROOT_DIR}/${LIBOMPTARGET_CUDA_LIBDEVICE_SUBDIR}")
+ find_program(LSB_RELEASE lsb_release)
+ if (LSB_RELEASE)
+ execute_process(COMMAND ${LSB_RELEASE} -is
+ OUTPUT_VARIABLE LSB_RELEASE_ID
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+ set(candidate_dir /usr/lib/cuda)
+ if ((LSB_RELEASE_ID STREQUAL "Debian" OR LSB_RELEASE_ID STREQUAL "Ubuntu")
+ AND EXISTS "${candidate_dir}/${LIBOMPTARGET_CUDA_LIBDEVICE_SUBDIR}")
+ set(CUDA_TOOLKIT_ROOT_DIR "${candidate_dir}" CACHE PATH
+ "Toolkit location." FORCE)
+ endif()
+ endif()
+endif()
+
+set(OPENMP_PTHREAD_LIB ${LLVM_PTHREAD_LIB})
Index: create-16.0.2-openmp-perl-patch/llvm-16.0.2-new/openmp/runtime/cmake/config-ix.cmake
===================================================================
--- create-16.0.2-openmp-perl-patch/llvm-16.0.2-new/openmp/runtime/cmake/config-ix.cmake (nonexistent)
+++ create-16.0.2-openmp-perl-patch/llvm-16.0.2-new/openmp/runtime/cmake/config-ix.cmake (revision 40)
@@ -0,0 +1,371 @@
+#
+#//===----------------------------------------------------------------------===//
+#//
+#// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+#// See https://llvm.org/LICENSE.txt for license information.
+#// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+#//
+#//===----------------------------------------------------------------------===//
+#
+
+include(CheckCCompilerFlag)
+include(CheckCSourceCompiles)
+include(CheckCXXSourceCompiles)
+include(CheckCXXCompilerFlag)
+include(CheckIncludeFile)
+include(CheckLibraryExists)
+include(CheckIncludeFiles)
+include(CheckSymbolExists)
+include(LibompCheckLinkerFlag)
+include(LibompCheckFortranFlag)
+
+# Check for versioned symbols
+function(libomp_check_version_symbols retval)
+ set(source_code
+ "#include <stdio.h>
+ void func1() { printf(\"Hello\"); }
+ void func2() { printf(\"World\"); }
+ __asm__(\".symver func1, func@VER1\");
+ __asm__(\".symver func2, func@VER2\");
+ int main(void) {
+ func1();
+ func2();
+ return 0;
+ }")
+ set(version_script_source "VER1 { }; VER2 { } VER1;")
+ file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/__version_script.txt "${version_script_source}")
+ set(CMAKE_REQUIRED_FLAGS -Wl,--version-script=${CMAKE_CURRENT_BINARY_DIR}/__version_script.txt)
+ check_c_source_compiles("${source_code}" ${retval})
+ set(${retval} ${${retval}} PARENT_SCOPE)
+ file(REMOVE ${CMAKE_CURRENT_BINARY_DIR}/__version_script.txt)
+endfunction()
+
+# Includes the architecture flag in both compile and link phase
+function(libomp_check_architecture_flag flag retval)
+ set(CMAKE_REQUIRED_FLAGS "${flag}")
+ check_c_compiler_flag("${flag}" ${retval})
+ set(${retval} ${${retval}} PARENT_SCOPE)
+endfunction()
+
+# Checking CXX, Linker Flags
+
+# GCC silently accepts any -Wno-<foo> option, but warns about those options
+# being unrecognized only if the compilation triggers other warnings to be
+# printed. Therefore, check for whether the compiler supports options in the
+# form -W<foo>, and if supported, add the corresponding -Wno-<foo> option.
+
+check_cxx_compiler_flag(-fno-exceptions LIBOMP_HAVE_FNO_EXCEPTIONS_FLAG)
+check_cxx_compiler_flag(-fno-rtti LIBOMP_HAVE_FNO_RTTI_FLAG)
+check_cxx_compiler_flag(-Wclass-memaccess LIBOMP_HAVE_WCLASS_MEMACCESS_FLAG)
+check_cxx_compiler_flag(-Wcovered-switch-default LIBOMP_HAVE_WCOVERED_SWITCH_DEFAULT_FLAG)
+check_cxx_compiler_flag(-Wframe-address LIBOMP_HAVE_WFRAME_ADDRESS_FLAG)
+check_cxx_compiler_flag(-Wstrict-aliasing LIBOMP_HAVE_WSTRICT_ALIASING_FLAG)
+check_cxx_compiler_flag(-Wstringop-overflow=0 LIBOMP_HAVE_WSTRINGOP_OVERFLOW_FLAG)
+check_cxx_compiler_flag(-Wstringop-truncation LIBOMP_HAVE_WSTRINGOP_TRUNCATION_FLAG)
+check_cxx_compiler_flag(-Wswitch LIBOMP_HAVE_WSWITCH_FLAG)
+check_cxx_compiler_flag(-Wuninitialized LIBOMP_HAVE_WUNINITIALIZED_FLAG)
+check_cxx_compiler_flag(-Wreturn-type-c-linkage LIBOMP_HAVE_WRETURN_TYPE_C_LINKAGE_FLAG)
+check_cxx_compiler_flag(-Wcast-qual LIBOMP_HAVE_WCAST_QUAL_FLAG)
+check_cxx_compiler_flag(-Wint-to-void-pointer-cast LIBOMP_HAVE_WINT_TO_VOID_POINTER_CAST_FLAG)
+# check_cxx_compiler_flag(-Wconversion LIBOMP_HAVE_WCONVERSION_FLAG)
+check_cxx_compiler_flag(-msse2 LIBOMP_HAVE_MSSE2_FLAG)
+check_cxx_compiler_flag(-ftls-model=initial-exec LIBOMP_HAVE_FTLS_MODEL_FLAG)
+libomp_check_architecture_flag(-mmic LIBOMP_HAVE_MMIC_FLAG)
+libomp_check_architecture_flag(-m32 LIBOMP_HAVE_M32_FLAG)
+if(WIN32)
+ if(MSVC)
+ # Check Windows MSVC style flags.
+ check_cxx_compiler_flag(/EHsc LIBOMP_HAVE_EHSC_FLAG)
+ check_cxx_compiler_flag(/GS LIBOMP_HAVE_GS_FLAG)
+ check_cxx_compiler_flag(/Oy- LIBOMP_HAVE_Oy__FLAG)
+ check_cxx_compiler_flag(/arch:SSE2 LIBOMP_HAVE_ARCH_SSE2_FLAG)
+ check_cxx_compiler_flag(/Qsafeseh LIBOMP_HAVE_QSAFESEH_FLAG)
+ endif()
+ check_cxx_compiler_flag(-mrtm LIBOMP_HAVE_MRTM_FLAG)
+ # It is difficult to create a dummy masm assembly file
+ # and then check the MASM assembler to see if these flags exist and work,
+ # so we assume they do for Windows.
+ set(LIBOMP_HAVE_SAFESEH_MASM_FLAG TRUE)
+ set(LIBOMP_HAVE_COFF_MASM_FLAG TRUE)
+ # Change Windows flags /MDx to /MTx
+ foreach(libomp_lang IN ITEMS C CXX)
+ foreach(libomp_btype IN ITEMS DEBUG RELWITHDEBINFO RELEASE MINSIZEREL)
+ string(REPLACE "/MD" "/MT"
+ CMAKE_${libomp_lang}_FLAGS_${libomp_btype}
+ "${CMAKE_${libomp_lang}_FLAGS_${libomp_btype}}"
+ )
+ endforeach()
+ endforeach()
+else()
+ # It is difficult to create a dummy assembly file that compiles into an
+ # executable for every architecture and then check the C compiler to
+ # see if -x assembler-with-cpp exists and works, so we assume it does for non-Windows.
+ set(LIBOMP_HAVE_X_ASSEMBLER_WITH_CPP_FLAG TRUE)
+endif()
+if(${LIBOMP_FORTRAN_MODULES})
+ libomp_check_fortran_flag(-m32 LIBOMP_HAVE_M32_FORTRAN_FLAG)
+endif()
+
+# Check for Unix shared memory
+check_symbol_exists(shm_open "sys/mman.h" LIBOMP_HAVE_SHM_OPEN_NO_LRT)
+if (NOT LIBOMP_HAVE_SHM_OPEN_NO_LRT)
+ set(CMAKE_REQUIRED_LIBRARIES -lrt)
+ check_symbol_exists(shm_open "sys/mman.h" LIBOMP_HAVE_SHM_OPEN_WITH_LRT)
+ set(CMAKE_REQUIRED_LIBRARIES)
+endif()
+
+# Check for aligned memory allocator function
+check_include_file(xmmintrin.h LIBOMP_HAVE_XMMINTRIN_H)
+set(OLD_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
+if (LIBOMP_HAVE_XMMINTRIN_H)
+ set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -DLIBOMP_HAVE_XMMINTRIN_H")
+endif()
+set(source_code "// check for _mm_malloc
+ #ifdef LIBOMP_HAVE_XMMINTRIN_H
+ #include <xmmintrin.h>
+ #endif
+ int main() { void *ptr = _mm_malloc(sizeof(int) * 1000, 64); _mm_free(ptr); return 0; }")
+check_cxx_source_compiles("${source_code}" LIBOMP_HAVE__MM_MALLOC)
+set(CMAKE_REQUIRED_FLAGS ${OLD_CMAKE_REQUIRED_FLAGS})
+check_symbol_exists(aligned_alloc "stdlib.h" LIBOMP_HAVE_ALIGNED_ALLOC)
+check_symbol_exists(posix_memalign "stdlib.h" LIBOMP_HAVE_POSIX_MEMALIGN)
+check_symbol_exists(_aligned_malloc "malloc.h" LIBOMP_HAVE__ALIGNED_MALLOC)
+
+# Check linker flags
+if(WIN32)
+ libomp_check_linker_flag(/SAFESEH LIBOMP_HAVE_SAFESEH_FLAG)
+elseif(NOT APPLE)
+ libomp_check_linker_flag(-Wl,-x LIBOMP_HAVE_X_FLAG)
+ libomp_check_linker_flag(-Wl,--as-needed LIBOMP_HAVE_AS_NEEDED_FLAG)
+ libomp_check_linker_flag("-Wl,--version-script=${LIBOMP_SRC_DIR}/exports_test_so.txt" LIBOMP_HAVE_VERSION_SCRIPT_FLAG)
+ libomp_check_linker_flag(-static-libgcc LIBOMP_HAVE_STATIC_LIBGCC_FLAG)
+ libomp_check_linker_flag(-Wl,-z,noexecstack LIBOMP_HAVE_Z_NOEXECSTACK_FLAG)
+endif()
+
+# Check Intel(R) C Compiler specific flags
+if(CMAKE_C_COMPILER_ID STREQUAL "Intel" OR CMAKE_C_COMPILER_ID STREQUAL "IntelLLVM")
+ check_cxx_compiler_flag(/Qlong_double LIBOMP_HAVE_LONG_DOUBLE_FLAG)
+ check_cxx_compiler_flag(/Qdiag-disable:177 LIBOMP_HAVE_DIAG_DISABLE_177_FLAG)
+ check_cxx_compiler_flag(/Qinline-min-size=1 LIBOMP_HAVE_INLINE_MIN_SIZE_FLAG)
+ check_cxx_compiler_flag(-Qoption,cpp,--extended_float_types LIBOMP_HAVE_EXTENDED_FLOAT_TYPES_FLAG)
+ check_cxx_compiler_flag(-falign-stack=maintain-16-byte LIBOMP_HAVE_FALIGN_STACK_FLAG)
+ check_cxx_compiler_flag("-opt-streaming-stores never" LIBOMP_HAVE_OPT_STREAMING_STORES_FLAG)
+ libomp_check_linker_flag(-static-intel LIBOMP_HAVE_STATIC_INTEL_FLAG)
+ libomp_check_linker_flag(-no-intel-extensions LIBOMP_HAVE_NO_INTEL_EXTENSIONS_FLAG)
+ check_library_exists(irc_pic _intel_fast_memcpy "" LIBOMP_HAVE_IRC_PIC_LIBRARY)
+endif()
+
+# Checking Threading requirements
+find_package(Threads REQUIRED)
+if(WIN32)
+ if(NOT CMAKE_USE_WIN32_THREADS_INIT)
+ libomp_error_say("Need Win32 thread interface on Windows.")
+ endif()
+else()
+ if(NOT CMAKE_USE_PTHREADS_INIT)
+ libomp_error_say("Need pthread interface on Unix-like systems.")
+ endif()
+endif()
+
+# Checking for x86-specific waitpkg and rtm attribute and intrinsics
+if (IA32 OR INTEL64)
+ check_include_file(immintrin.h LIBOMP_HAVE_IMMINTRIN_H)
+ if (NOT LIBOMP_HAVE_IMMINTRIN_H)
+ check_include_file(intrin.h LIBOMP_HAVE_INTRIN_H)
+ endif()
+ check_cxx_source_compiles("__attribute__((target(\"rtm\")))
+ int main() {return 0;}" LIBOMP_HAVE_ATTRIBUTE_RTM)
+ check_cxx_source_compiles("__attribute__((target(\"waitpkg\")))
+ int main() {return 0;}" LIBOMP_HAVE_ATTRIBUTE_WAITPKG)
+ libomp_append(CMAKE_REQUIRED_DEFINITIONS -DIMMINTRIN_H LIBOMP_HAVE_IMMINTRIN_H)
+ libomp_append(CMAKE_REQUIRED_DEFINITIONS -DINTRIN_H LIBOMP_HAVE_INTRIN_H)
+ libomp_append(CMAKE_REQUIRED_DEFINITIONS -DATTRIBUTE_WAITPKG LIBOMP_HAVE_ATTRIBUTE_WAITPKG)
+ libomp_append(CMAKE_REQUIRED_DEFINITIONS -DATTRIBUTE_RTM LIBOMP_HAVE_ATTRIBUTE_RTM)
+ set(source_code "// check for attribute and wait pkg intrinsics
+ #ifdef IMMINTRIN_H
+ #include <immintrin.h>
+ #endif
+ #ifdef INTRIN_H
+ #include <intrin.h>
+ #endif
+ #ifdef ATTRIBUTE_WAITPKG
+ __attribute__((target(\"waitpkg\")))
+ #endif
+ static inline int __kmp_umwait(unsigned hint, unsigned long long counter) {
+ return _umwait(hint, counter);
+ }
+ int main() { int a = __kmp_umwait(0, 1000); return a; }")
+ check_cxx_source_compiles("${source_code}" LIBOMP_HAVE_WAITPKG_INTRINSICS)
+ set(OLD_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
+ if (LIBOMP_HAVE_MRTM_FLAG)
+ set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -mrtm")
+ endif()
+ set(source_code "// check for attribute rtm and rtm intrinsics
+ #ifdef IMMINTRIN_H
+ #include <immintrin.h>
+ #endif
+ #ifdef INTRIN_H
+ #include <intrin.h>
+ #endif
+ #ifdef ATTRIBUTE_RTM
+ __attribute__((target(\"rtm\")))
+ #endif
+ static inline int __kmp_xbegin() {
+ return _xbegin();
+ }
+ int main() { int a = __kmp_xbegin(); return a; }")
+ check_cxx_source_compiles("${source_code}" LIBOMP_HAVE_RTM_INTRINSICS)
+ set(CMAKE_REQUIRED_DEFINITIONS)
+ set(CMAKE_REQUIRED_FLAGS ${OLD_CMAKE_REQUIRED_FLAGS})
+endif()
+
+# Find perl executable
+# Perl is used to create omp.h (and other headers) along with kmp_i18n_id.inc and kmp_i18n_default.inc
+#find_package(Perl REQUIRED)
+# The perl scripts take the --os=/--arch= flags which expect a certain format for operating systems and arch's.
+# Until the perl scripts are removed, the most portable way to handle this is to have all operating systems that
+# are neither Windows nor Mac (Most Unix flavors) be considered lin to the perl scripts. This is rooted
+# in that all the Perl scripts check the operating system and will fail if it isn't "valid". This
+# temporary solution lets us avoid trying to enumerate all the possible OS values inside the Perl modules.
+if(WIN32)
+ set(LIBOMP_PERL_SCRIPT_OS win)
+elseif(APPLE)
+ set(LIBOMP_PERL_SCRIPT_OS mac)
+else()
+ set(LIBOMP_PERL_SCRIPT_OS lin)
+endif()
+if(IA32)
+ set(LIBOMP_PERL_SCRIPT_ARCH 32)
+elseif(MIC)
+ set(LIBOMP_PERL_SCRIPT_ARCH mic)
+elseif(INTEL64)
+ set(LIBOMP_PERL_SCRIPT_ARCH 32e)
+else()
+ set(LIBOMP_PERL_SCRIPT_ARCH ${LIBOMP_ARCH})
+endif()
+
+# Checking features
+# Check if version symbol assembler directives are supported
+if (LIBOMP_HAVE_VERSION_SCRIPT_FLAG)
+ libomp_check_version_symbols(LIBOMP_HAVE_VERSION_SYMBOLS)
+else()
+ set(LIBOMP_HAVE_VERSION_SYMBOLS FALSE)
+endif()
+
+# Check if quad precision types are available
+if(CMAKE_C_COMPILER_ID STREQUAL "GNU")
+ set(LIBOMP_HAVE_QUAD_PRECISION TRUE)
+elseif(CMAKE_C_COMPILER_ID STREQUAL "Intel" OR CMAKE_C_COMPILER_ID STREQUAL "IntelLLVM")
+ if(LIBOMP_HAVE_EXTENDED_FLOAT_TYPES_FLAG)
+ set(LIBOMP_HAVE_QUAD_PRECISION TRUE)
+ else()
+ set(LIBOMP_HAVE_QUAD_PRECISION TRUE)
+ endif()
+else()
+ set(LIBOMP_HAVE_QUAD_PRECISION FALSE)
+endif()
+
+# Check if adaptive locks are available
+if((${IA32} OR ${INTEL64}) AND NOT MSVC)
+ set(LIBOMP_HAVE_ADAPTIVE_LOCKS TRUE)
+else()
+ set(LIBOMP_HAVE_ADAPTIVE_LOCKS FALSE)
+endif()
+
+# Check if stats-gathering is available
+if(${LIBOMP_STATS})
+ check_c_source_compiles(
+ "__thread int x;
+ int main(int argc, char** argv)
+ { x = argc; return x; }"
+ LIBOMP_HAVE___THREAD)
+ check_c_source_compiles(
+ "int main(int argc, char** argv)
+ { unsigned long long t = __builtin_readcyclecounter(); return 0; }"
+ LIBOMP_HAVE___BUILTIN_READCYCLECOUNTER)
+ if(NOT LIBOMP_HAVE___BUILTIN_READCYCLECOUNTER)
+ if(${IA32} OR ${INTEL64} OR ${MIC})
+ check_include_file(x86intrin.h LIBOMP_HAVE_X86INTRIN_H)
+ libomp_append(CMAKE_REQUIRED_DEFINITIONS -DLIBOMP_HAVE_X86INTRIN_H LIBOMP_HAVE_X86INTRIN_H)
+ check_c_source_compiles(
+ "#ifdef LIBOMP_HAVE_X86INTRIN_H
+ # include <x86intrin.h>
+ #endif
+ int main(int argc, char** argv) { unsigned long long t = __rdtsc(); return 0; }" LIBOMP_HAVE___RDTSC)
+ set(CMAKE_REQUIRED_DEFINITIONS)
+ endif()
+ endif()
+ if(LIBOMP_HAVE___THREAD AND (LIBOMP_HAVE___RDTSC OR LIBOMP_HAVE___BUILTIN_READCYCLECOUNTER))
+ set(LIBOMP_HAVE_STATS TRUE)
+ else()
+ set(LIBOMP_HAVE_STATS FALSE)
+ endif()
+endif()
+
+# Check if OMPT support is available
+# Currently, __builtin_frame_address() is required for OMPT
+# Weak attribute is required for Unices (except Darwin), LIBPSAPI is used for Windows
+check_c_source_compiles("int main(int argc, char** argv) {
+ void* p = __builtin_frame_address(0);
+ return 0;}" LIBOMP_HAVE___BUILTIN_FRAME_ADDRESS)
+check_c_source_compiles("__attribute__ ((weak)) int foo(int a) { return a*a; }
+ int main(int argc, char** argv) {
+ return foo(argc);}" LIBOMP_HAVE_WEAK_ATTRIBUTE)
+set(CMAKE_REQUIRED_LIBRARIES psapi)
+check_c_source_compiles("#include <windows.h>
+ #include <psapi.h>
+ int main(int artc, char** argv) {
+ return EnumProcessModules(NULL, NULL, 0, NULL);
+ }" LIBOMP_HAVE_PSAPI)
+set(CMAKE_REQUIRED_LIBRARIES)
+if(NOT LIBOMP_HAVE___BUILTIN_FRAME_ADDRESS)
+ set(LIBOMP_HAVE_OMPT_SUPPORT FALSE)
+else()
+ if( # hardware architecture supported?
+ ((LIBOMP_ARCH STREQUAL x86_64) OR
+ (LIBOMP_ARCH STREQUAL i386) OR
+# (LIBOMP_ARCH STREQUAL arm) OR
+ (LIBOMP_ARCH STREQUAL aarch64) OR
+ (LIBOMP_ARCH STREQUAL aarch64_a64fx) OR
+ (LIBOMP_ARCH STREQUAL ppc64le) OR
+ (LIBOMP_ARCH STREQUAL ppc64) OR
+ (LIBOMP_ARCH STREQUAL riscv64) OR
+ (LIBOMP_ARCH STREQUAL loongarch64))
+ AND # OS supported?
+ ((WIN32 AND LIBOMP_HAVE_PSAPI) OR APPLE OR (NOT WIN32 AND LIBOMP_HAVE_WEAK_ATTRIBUTE)))
+ set(LIBOMP_HAVE_OMPT_SUPPORT TRUE)
+ else()
+ set(LIBOMP_HAVE_OMPT_SUPPORT FALSE)
+ endif()
+endif()
+
+set(LIBOMP_HAVE_OMPT_SUPPORT ${LIBOMP_HAVE_OMPT_SUPPORT} PARENT_SCOPE)
+
+# Check if HWLOC support is available
+if(${LIBOMP_USE_HWLOC})
+ find_path(LIBOMP_HWLOC_INCLUDE_DIR NAMES hwloc.h HINTS ${LIBOMP_HWLOC_INSTALL_DIR} PATH_SUFFIXES include)
+ set(CMAKE_REQUIRED_INCLUDES ${LIBOMP_HWLOC_INCLUDE_DIR})
+ check_include_file(hwloc.h LIBOMP_HAVE_HWLOC_H)
+ set(CMAKE_REQUIRED_INCLUDES)
+ find_library(LIBOMP_HWLOC_LIBRARY
+ NAMES hwloc libhwloc
+ HINTS ${LIBOMP_HWLOC_INSTALL_DIR}/lib)
+ if(LIBOMP_HWLOC_LIBRARY)
+ check_library_exists(${LIBOMP_HWLOC_LIBRARY} hwloc_topology_init
+ ${LIBOMP_HWLOC_INSTALL_DIR}/lib LIBOMP_HAVE_LIBHWLOC)
+ get_filename_component(LIBOMP_HWLOC_LIBRARY_DIR ${LIBOMP_HWLOC_LIBRARY} PATH)
+ endif()
+ if(LIBOMP_HAVE_HWLOC_H AND LIBOMP_HAVE_LIBHWLOC AND LIBOMP_HWLOC_LIBRARY)
+ set(LIBOMP_HAVE_HWLOC TRUE)
+ else()
+ set(LIBOMP_HAVE_HWLOC FALSE)
+ libomp_say("Could not find hwloc")
+ endif()
+endif()
+
+# Check if ThreadSanitizer support is available
+if("${CMAKE_SYSTEM_NAME}" MATCHES "Linux" AND ${INTEL64})
+ set(LIBOMP_HAVE_TSAN_SUPPORT TRUE)
+else()
+ set(LIBOMP_HAVE_TSAN_SUPPORT FALSE)
+endif()
Index: create-16.0.2-polly-hack-patch/create.patch.sh
===================================================================
--- create-16.0.2-polly-hack-patch/create.patch.sh (nonexistent)
+++ create-16.0.2-polly-hack-patch/create.patch.sh (revision 40)
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+VERSION=16.0.2
+
+tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
+mv llvm-$VERSION llvm-$VERSION-orig
+
+cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
+
+diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-polly-hack.patch
+
+mv llvm-$VERSION-polly-hack.patch ../patches
+
+rm -rf ./llvm-$VERSION
+rm -rf ./llvm-$VERSION-orig
Property changes on: create-16.0.2-polly-hack-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: create-16.0.2-polly-hack-patch/file.list
===================================================================
--- create-16.0.2-polly-hack-patch/file.list (nonexistent)
+++ create-16.0.2-polly-hack-patch/file.list (revision 40)
@@ -0,0 +1 @@
+llvm-16.0.2/polly/lib/CMakeLists.txt
Index: create-16.0.2-polly-hack-patch/llvm-16.0.2-new/polly/lib/CMakeLists.txt
===================================================================
--- create-16.0.2-polly-hack-patch/llvm-16.0.2-new/polly/lib/CMakeLists.txt (nonexistent)
+++ create-16.0.2-polly-hack-patch/llvm-16.0.2-new/polly/lib/CMakeLists.txt (revision 40)
@@ -0,0 +1,177 @@
+set(LLVM_NO_RTTI 1)
+
+set(ISL_CODEGEN_FILES
+ CodeGen/IslAst.cpp
+ CodeGen/IslExprBuilder.cpp
+ CodeGen/IslNodeBuilder.cpp
+ CodeGen/CodeGeneration.cpp)
+
+if (GPU_CODEGEN)
+ set (GPGPU_CODEGEN_FILES
+ CodeGen/PPCGCodeGeneration.cpp
+ CodeGen/ManagedMemoryRewrite.cpp
+ )
+endif (GPU_CODEGEN)
+
+# Compile ISL into a separate library.
+add_subdirectory(External)
+
+set(POLLY_HEADER_FILES)
+if (MSVC_IDE OR XCODE)
+ file(GLOB_RECURSE POLLY_HEADER_FILES "${POLLY_SOURCE_DIR}/include/polly/*.h")
+endif ()
+
+set(POLLY_COMPONENTS
+ Support
+ Core
+ ScalarOpts
+ InstCombine
+ TransformUtils
+ Analysis
+ ipo
+ MC
+ Passes
+ Linker
+ IRReader
+ Analysis
+ # The libraries below are required for darwin: http://PR26392
+ BitReader
+ MCParser
+ Object
+ ProfileData
+ Target
+ TargetParser
+ Vectorize
+)
+
+# Polly-ACC requires the NVPTX backend to work. Ask LLVM about its libraries.
+if (GPU_CODEGEN)
+ # This call emits an error if they NVPTX backend is not enable.
+ list(APPEND POLLY_COMPONENTS NVPTX)
+endif ()
+
+# Use an object-library to add the same files to multiple libs without requiring
+# the sources them to be recompiled for each of them.
+add_llvm_pass_plugin(Polly
+ NO_MODULE
+ SUBPROJECT Polly
+ Analysis/DependenceInfo.cpp
+ Analysis/PolyhedralInfo.cpp
+ Analysis/ScopDetection.cpp
+ Analysis/ScopDetectionDiagnostic.cpp
+ Analysis/ScopInfo.cpp
+ Analysis/ScopBuilder.cpp
+ Analysis/ScopGraphPrinter.cpp
+ Analysis/ScopPass.cpp
+ Analysis/PruneUnprofitable.cpp
+ CodeGen/BlockGenerators.cpp
+ ${ISL_CODEGEN_FILES}
+ CodeGen/LoopGenerators.cpp
+ CodeGen/LoopGeneratorsGOMP.cpp
+ CodeGen/LoopGeneratorsKMP.cpp
+ CodeGen/IRBuilder.cpp
+ CodeGen/Utils.cpp
+ CodeGen/RuntimeDebugBuilder.cpp
+ CodeGen/CodegenCleanup.cpp
+ CodeGen/PerfMonitor.cpp
+ ${GPGPU_CODEGEN_FILES}
+ Exchange/JSONExporter.cpp
+ Support/GICHelper.cpp
+ Support/SCEVAffinator.cpp
+ Support/SCEVValidator.cpp
+ Support/RegisterPasses.cpp
+ Support/ScopHelper.cpp
+ Support/ScopLocation.cpp
+ Support/ISLTools.cpp
+ Support/DumpModulePass.cpp
+ Support/DumpFunctionPass.cpp
+ Support/VirtualInstruction.cpp
+ Transform/Canonicalization.cpp
+ Transform/CodePreparation.cpp
+ Transform/DeadCodeElimination.cpp
+ Transform/ScheduleOptimizer.cpp
+ Transform/ScheduleTreeTransform.cpp
+ Transform/FlattenSchedule.cpp
+ Transform/FlattenAlgo.cpp
+ Transform/ForwardOpTree.cpp
+ Transform/DeLICM.cpp
+ Transform/ZoneAlgo.cpp
+ Transform/Simplify.cpp
+ Transform/MaximalStaticExpansion.cpp
+ Transform/ScopInliner.cpp
+ Transform/ManualOptimizer.cpp
+ Transform/MatmulOptimizer.cpp
+ ${POLLY_HEADER_FILES}
+
+ LINK_COMPONENTS
+ ${POLLY_COMPONENTS}
+ )
+set_target_properties(obj.Polly PROPERTIES FOLDER "Polly")
+set_target_properties(Polly PROPERTIES FOLDER "Polly")
+
+if (MSVC_IDE OR XCODE)
+ # Configure source groups for Polly source files. By default, in the IDE there
+ # will be a source and include folder. In the source folder will be all the
+ # source files in a flat list, and in the include folder will be all the
+ # headers in a flat list. Sets the CMake source_group for each folder such
+ # the organization of the sources and headers in the IDE matches how it is
+ # laid out on disk
+ setup_polly_source_groups(${CMAKE_CURRENT_LIST_DIR}
+ ${CMAKE_CURRENT_LIST_DIR}/../include/polly)
+endif()
+
+# Create the library that can be linked into LLVM's tools and Polly's unittests.
+# It depends on all library it needs, such that with
+# LLVM_POLLY_LINK_INTO_TOOLS=ON, its dependencies like PollyISL are linked as
+# well.
+target_link_libraries(Polly PUBLIC
+ ${ISL_TARGET}
+)
+
+# Additional dependencies for Polly-ACC.
+if (GPU_CODEGEN)
+ target_link_libraries(Polly PUBLIC PollyPPCG)
+endif ()
+
+if (NOT LLVM_LINK_LLVM_DYLIB AND NOT LLVM_POLLY_LINK_INTO_TOOLS)
+ # Polly-ACC requires the NVPTX target to be present in the executable it is linked to
+ # Randomly commented to fix build lol
+ #set_property(TARGET bugpoint APPEND PROPERTY LINK_LIBRARIES LLVMTarget)
+endif ()
+
+# Create a loadable module Polly.so that can be loaded using
+# LLVM's/clang's "-load" option.
+if (WIN32 OR NOT LLVM_ENABLE_PIC)
+ # Add dummy target, either because loadable modules are not supported
+ # as on Windows or because PIC code has been disabled
+ add_custom_target(LLVMPolly)
+ set_target_properties(LLVMPolly PROPERTIES FOLDER "Polly")
+else ()
+ add_polly_loadable_module(LLVMPolly
+ Plugin/Polly.cpp
+ $<TARGET_OBJECTS:obj.Polly>
+ )
+
+ # Only add the dependencies that are not part of LLVM. The latter are assumed
+ # to be already available in the address space the module is loaded into.
+ # Adding them once more would have the effect that both copies try to register
+ # the same command line options, to which LLVM reacts with an error.
+ # If Polly-ACC is enabled, the NVPTX target is also expected to reside in the
+ # hosts. This is not the case for bugpoint. Use LLVM_POLLY_LINK_INTO_TOOLS=ON
+ # instead which will automatically resolve the additional dependencies by
+ # Polly.
+ target_link_libraries(LLVMPolly PUBLIC ${ISL_TARGET})
+ if (GPU_CODEGEN)
+ target_link_libraries(LLVMPolly PUBLIC PollyPPCG)
+ endif ()
+
+ set_target_properties(LLVMPolly
+ PROPERTIES
+ LINKER_LANGUAGE CXX
+ PREFIX "")
+endif ()
+
+if (TARGET intrinsics_gen)
+ # Check if we are building as part of an LLVM build
+ add_dependencies(obj.Polly intrinsics_gen)
+endif()
Index: create-16.0.2-pstl-x32-patch/create.patch.sh
===================================================================
--- create-16.0.2-pstl-x32-patch/create.patch.sh (nonexistent)
+++ create-16.0.2-pstl-x32-patch/create.patch.sh (revision 40)
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+VERSION=16.0.2
+
+tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
+mv llvm-$VERSION llvm-$VERSION-orig
+
+cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
+
+diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-pstl-x32.patch
+
+mv llvm-$VERSION-pstl-x32.patch ../patches
+
+rm -rf ./llvm-$VERSION
+rm -rf ./llvm-$VERSION-orig
Property changes on: create-16.0.2-pstl-x32-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: create-16.0.2-pstl-x32-patch/file.list
===================================================================
--- create-16.0.2-pstl-x32-patch/file.list (nonexistent)
+++ create-16.0.2-pstl-x32-patch/file.list (revision 40)
@@ -0,0 +1 @@
+llvm-16.0.2/pstl/CMakeLists.txt
Index: create-16.0.2-pstl-x32-patch/llvm-16.0.2-new/pstl/CMakeLists.txt
===================================================================
--- create-16.0.2-pstl-x32-patch/llvm-16.0.2-new/pstl/CMakeLists.txt (nonexistent)
+++ create-16.0.2-pstl-x32-patch/llvm-16.0.2-new/pstl/CMakeLists.txt (revision 40)
@@ -0,0 +1,102 @@
+#===-- CMakeLists.txt ----------------------------------------------------===##
+#
+# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+# See https://llvm.org/LICENSE.txt for license information.
+# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+#
+#===----------------------------------------------------------------------===##
+cmake_minimum_required(VERSION 3.13.4)
+
+set(PARALLELSTL_VERSION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/include/pstl/internal/pstl_config.h")
+file(STRINGS "${PARALLELSTL_VERSION_FILE}" PARALLELSTL_VERSION_SOURCE REGEX "#define _PSTL_VERSION .*$")
+string(REGEX REPLACE "#define _PSTL_VERSION (.*)$" "\\1" PARALLELSTL_VERSION_SOURCE "${PARALLELSTL_VERSION_SOURCE}")
+math(EXPR VERSION_MAJOR "(${PARALLELSTL_VERSION_SOURCE} / 1000)")
+math(EXPR VERSION_MINOR "((${PARALLELSTL_VERSION_SOURCE} % 1000) / 10)")
+math(EXPR VERSION_PATCH "(${PARALLELSTL_VERSION_SOURCE} % 10)")
+
+project(ParallelSTL VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH} LANGUAGES CXX)
+
+# Must go below project(..)
+include(GNUInstallDirs)
+
+set(PSTL_PARALLEL_BACKEND "serial" CACHE STRING "Threading backend to use. Valid choices are 'serial', 'omp', and 'tbb'. The default is 'serial'.")
+set(PSTL_HIDE_FROM_ABI_PER_TU OFF CACHE BOOL "Whether to constrain ABI-unstable symbols to each translation unit (basically, mark them with C's static keyword).")
+set(_PSTL_HIDE_FROM_ABI_PER_TU ${PSTL_HIDE_FROM_ABI_PER_TU}) # For __pstl_config_site
+
+if (NOT TBB_DIR)
+ get_filename_component(PSTL_DIR_NAME ${CMAKE_CURRENT_SOURCE_DIR} NAME)
+ string(REPLACE pstl tbb TBB_DIR_NAME ${PSTL_DIR_NAME})
+ if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/../${TBB_DIR_NAME}/cmake")
+ get_filename_component(TBB_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../${TBB_DIR_NAME}/cmake" ABSOLUTE)
+ endif()
+endif()
+
+###############################################################################
+# Setup the ParallelSTL library target
+###############################################################################
+add_library(ParallelSTL INTERFACE)
+add_library(pstl::ParallelSTL ALIAS ParallelSTL)
+target_compile_features(ParallelSTL INTERFACE cxx_std_17)
+
+if (PSTL_PARALLEL_BACKEND STREQUAL "serial")
+ message(STATUS "Parallel STL uses the serial backend")
+ set(_PSTL_PAR_BACKEND_SERIAL ON)
+elseif (PSTL_PARALLEL_BACKEND STREQUAL "tbb")
+ find_package(TBB 2018 REQUIRED tbb OPTIONAL_COMPONENTS tbbmalloc)
+ message(STATUS "Parallel STL uses TBB ${TBB_VERSION} (interface version: ${TBB_INTERFACE_VERSION})")
+ target_link_libraries(ParallelSTL INTERFACE TBB::tbb)
+ set(_PSTL_PAR_BACKEND_TBB ON)
+elseif (PSTL_PARALLEL_BACKEND STREQUAL "omp")
+ message(STATUS "Parallel STL uses the omp backend")
+ target_compile_options(ParallelSTL INTERFACE "-fopenmp=libomp")
+ set(_PSTL_PAR_BACKEND_OPENMP ON)
+else()
+ message(FATAL_ERROR "Requested unknown Parallel STL backend '${PSTL_PARALLEL_BACKEND}'.")
+endif()
+
+set(PSTL_GENERATED_HEADERS_DIR "${CMAKE_CURRENT_BINARY_DIR}/generated_headers")
+set(PSTL_CONFIG_SITE_PATH "${PSTL_GENERATED_HEADERS_DIR}/__pstl_config_site")
+configure_file("include/__pstl_config_site.in"
+ "${PSTL_CONFIG_SITE_PATH}"
+ @ONLY)
+
+target_include_directories(ParallelSTL
+ INTERFACE
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+ $<BUILD_INTERFACE:${PSTL_GENERATED_HEADERS_DIR}>
+ $<INSTALL_INTERFACE:include>)
+
+###############################################################################
+# Setup tests
+###############################################################################
+enable_testing()
+add_subdirectory(test)
+
+###############################################################################
+# Install the target and the associated CMake files
+###############################################################################
+include(CMakePackageConfigHelpers)
+write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/ParallelSTLConfigVersion.cmake"
+ COMPATIBILITY ExactVersion)
+
+configure_file(cmake/ParallelSTLConfig.cmake.in
+ "${CMAKE_CURRENT_BINARY_DIR}/ParallelSTLConfig.cmake"
+ @ONLY)
+
+install(TARGETS ParallelSTL
+ EXPORT ParallelSTLTargets)
+install(EXPORT ParallelSTLTargets
+ FILE ParallelSTLTargets.cmake
+ NAMESPACE pstl::
+ DESTINATION lib32/cmake/ParallelSTL)
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/ParallelSTLConfig.cmake"
+ "${CMAKE_CURRENT_BINARY_DIR}/ParallelSTLConfigVersion.cmake"
+ DESTINATION lib32/cmake/ParallelSTL)
+install(DIRECTORY include/
+ DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
+ PATTERN "*.in" EXCLUDE)
+install(FILES "${PSTL_CONFIG_SITE_PATH}"
+ DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
+
+add_custom_target(install-pstl
+ COMMAND "${CMAKE_COMMAND}" -P "${PROJECT_BINARY_DIR}/cmake_install.cmake" -DCOMPONENT=ParallelSTL)
Index: create-16.0.2-x32-interpreter-patch/create.patch.sh
===================================================================
--- create-16.0.2-x32-interpreter-patch/create.patch.sh (nonexistent)
+++ create-16.0.2-x32-interpreter-patch/create.patch.sh (revision 40)
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+VERSION=16.0.2
+
+tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
+mv llvm-$VERSION llvm-$VERSION-orig
+
+cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
+
+diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-x32-interpreter.patch
+
+mv llvm-$VERSION-x32-interpreter.patch ../patches
+
+rm -rf ./llvm-$VERSION
+rm -rf ./llvm-$VERSION-orig
Property changes on: create-16.0.2-x32-interpreter-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: create-16.0.2-x32-interpreter-patch/file.list
===================================================================
--- create-16.0.2-x32-interpreter-patch/file.list (nonexistent)
+++ create-16.0.2-x32-interpreter-patch/file.list (revision 40)
@@ -0,0 +1 @@
+llvm-16.0.2/clang/lib/Driver/ToolChains/Linux.cpp
Index: create-16.0.2-x32-interpreter-patch/llvm-16.0.2-new/clang/lib/Driver/ToolChains/Linux.cpp
===================================================================
--- create-16.0.2-x32-interpreter-patch/llvm-16.0.2-new/clang/lib/Driver/ToolChains/Linux.cpp (nonexistent)
+++ create-16.0.2-x32-interpreter-patch/llvm-16.0.2-new/clang/lib/Driver/ToolChains/Linux.cpp (revision 40)
@@ -0,0 +1,828 @@
+//===--- Linux.h - Linux ToolChain Implementations --------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "Linux.h"
+#include "Arch/ARM.h"
+#include "Arch/LoongArch.h"
+#include "Arch/Mips.h"
+#include "Arch/PPC.h"
+#include "Arch/RISCV.h"
+#include "CommonArgs.h"
+#include "clang/Config/config.h"
+#include "clang/Driver/Distro.h"
+#include "clang/Driver/Driver.h"
+#include "clang/Driver/Options.h"
+#include "clang/Driver/SanitizerArgs.h"
+#include "llvm/Option/ArgList.h"
+#include "llvm/ProfileData/InstrProf.h"
+#include "llvm/Support/Path.h"
+#include "llvm/Support/ScopedPrinter.h"
+#include "llvm/Support/VirtualFileSystem.h"
+#include <system_error>
+
+using namespace clang::driver;
+using namespace clang::driver::toolchains;
+using namespace clang;
+using namespace llvm::opt;
+
+using tools::addPathIfExists;
+
+/// Get our best guess at the multiarch triple for a target.
+///
+/// Debian-based systems are starting to use a multiarch setup where they use
+/// a target-triple directory in the library and header search paths.
+/// Unfortunately, this triple does not align with the vanilla target triple,
+/// so we provide a rough mapping here.
+std::string Linux::getMultiarchTriple(const Driver &D,
+ const llvm::Triple &TargetTriple,
+ StringRef SysRoot) const {
+ llvm::Triple::EnvironmentType TargetEnvironment =
+ TargetTriple.getEnvironment();
+ bool IsAndroid = TargetTriple.isAndroid();
+ bool IsMipsR6 = TargetTriple.getSubArch() == llvm::Triple::MipsSubArch_r6;
+ bool IsMipsN32Abi = TargetTriple.getEnvironment() == llvm::Triple::GNUABIN32;
+
+ // For most architectures, just use whatever we have rather than trying to be
+ // clever.
+ switch (TargetTriple.getArch()) {
+ default:
+ break;
+
+ // We use the existence of '/lib/<triple>' as a directory to detect some
+ // common linux triples that don't quite match the Clang triple for both
+ // 32-bit and 64-bit targets. Multiarch fixes its install triples to these
+ // regardless of what the actual target triple is.
+ case llvm::Triple::arm:
+ case llvm::Triple::thumb:
+ if (IsAndroid)
+ return "arm-linux-androideabi";
+ if (TargetEnvironment == llvm::Triple::GNUEABIHF)
+ return "arm-linux-gnueabihf";
+ return "arm-linux-gnueabi";
+ case llvm::Triple::armeb:
+ case llvm::Triple::thumbeb:
+ if (TargetEnvironment == llvm::Triple::GNUEABIHF)
+ return "armeb-linux-gnueabihf";
+ return "armeb-linux-gnueabi";
+ case llvm::Triple::x86:
+ if (IsAndroid)
+ return "i686-linux-android";
+ return "i386-linux-gnu";
+ case llvm::Triple::x86_64:
+ if (IsAndroid)
+ return "x86_64-linux-android";
+ if (TargetEnvironment == llvm::Triple::GNUX32)
+ return "x86_64-linux-gnux32";
+ return "x86_64-linux-gnu";
+ case llvm::Triple::aarch64:
+ if (IsAndroid)
+ return "aarch64-linux-android";
+ return "aarch64-linux-gnu";
+ case llvm::Triple::aarch64_be:
+ return "aarch64_be-linux-gnu";
+
+ case llvm::Triple::m68k:
+ return "m68k-linux-gnu";
+
+ case llvm::Triple::mips:
+ return IsMipsR6 ? "mipsisa32r6-linux-gnu" : "mips-linux-gnu";
+ case llvm::Triple::mipsel:
+ if (IsAndroid)
+ return "mipsel-linux-android";
+ return IsMipsR6 ? "mipsisa32r6el-linux-gnu" : "mipsel-linux-gnu";
+ case llvm::Triple::mips64: {
+ std::string MT = std::string(IsMipsR6 ? "mipsisa64r6" : "mips64") +
+ "-linux-" + (IsMipsN32Abi ? "gnuabin32" : "gnuabi64");
+ if (D.getVFS().exists(concat(SysRoot, "/lib", MT)))
+ return MT;
+ if (D.getVFS().exists(concat(SysRoot, "/lib/mips64-linux-gnu")))
+ return "mips64-linux-gnu";
+ break;
+ }
+ case llvm::Triple::mips64el: {
+ if (IsAndroid)
+ return "mips64el-linux-android";
+ std::string MT = std::string(IsMipsR6 ? "mipsisa64r6el" : "mips64el") +
+ "-linux-" + (IsMipsN32Abi ? "gnuabin32" : "gnuabi64");
+ if (D.getVFS().exists(concat(SysRoot, "/lib", MT)))
+ return MT;
+ if (D.getVFS().exists(concat(SysRoot, "/lib/mips64el-linux-gnu")))
+ return "mips64el-linux-gnu";
+ break;
+ }
+ case llvm::Triple::ppc:
+ if (D.getVFS().exists(concat(SysRoot, "/lib/powerpc-linux-gnuspe")))
+ return "powerpc-linux-gnuspe";
+ return "powerpc-linux-gnu";
+ case llvm::Triple::ppcle:
+ return "powerpcle-linux-gnu";
+ case llvm::Triple::ppc64:
+ return "powerpc64-linux-gnu";
+ case llvm::Triple::ppc64le:
+ return "powerpc64le-linux-gnu";
+ case llvm::Triple::riscv64:
+ return "riscv64-linux-gnu";
+ case llvm::Triple::sparc:
+ return "sparc-linux-gnu";
+ case llvm::Triple::sparcv9:
+ return "sparc64-linux-gnu";
+ case llvm::Triple::systemz:
+ return "s390x-linux-gnu";
+ }
+ return TargetTriple.str();
+}
+
+static StringRef getOSLibDir(const llvm::Triple &Triple, const ArgList &Args) {
+ if (Triple.isMIPS()) {
+ if (Triple.isAndroid()) {
+ StringRef CPUName;
+ StringRef ABIName;
+ tools::mips::getMipsCPUAndABI(Args, Triple, CPUName, ABIName);
+ if (CPUName == "mips32r6")
+ return "libr6";
+ if (CPUName == "mips32r2")
+ return "libr2";
+ }
+ // lib32 directory has a special meaning on MIPS targets.
+ // It contains N32 ABI binaries. Use this folder if produce
+ // code for N32 ABI only.
+ if (tools::mips::hasMipsAbiArg(Args, "n32"))
+ return "lib32";
+ return Triple.isArch32Bit() ? "lib" : "lib64";
+ }
+
+ // It happens that only x86, PPC and SPARC use the 'lib32' variant of
+ // oslibdir, and using that variant while targeting other architectures causes
+ // problems because the libraries are laid out in shared system roots that
+ // can't cope with a 'lib32' library search path being considered. So we only
+ // enable them when we know we may need it.
+ //
+ // FIXME: This is a bit of a hack. We should really unify this code for
+ // reasoning about oslibdir spellings with the lib dir spellings in the
+ // GCCInstallationDetector, but that is a more significant refactoring.
+ if (Triple.getArch() == llvm::Triple::x86 || Triple.isPPC32() ||
+ Triple.getArch() == llvm::Triple::sparc)
+ return "lib32";
+
+ if (Triple.getArch() == llvm::Triple::x86_64 && Triple.isX32())
+ return "libx32";
+
+ if (Triple.getArch() == llvm::Triple::riscv32)
+ return "lib32";
+
+ return Triple.isArch32Bit() ? "lib" : "lib64";
+}
+
+Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
+ : Generic_ELF(D, Triple, Args) {
+ GCCInstallation.init(Triple, Args);
+ Multilibs = GCCInstallation.getMultilibs();
+ SelectedMultilib = GCCInstallation.getMultilib();
+ llvm::Triple::ArchType Arch = Triple.getArch();
+ std::string SysRoot = computeSysRoot();
+ ToolChain::path_list &PPaths = getProgramPaths();
+
+ Generic_GCC::PushPPaths(PPaths);
+
+ Distro Distro(D.getVFS(), Triple);
+
+ if (Distro.IsAlpineLinux() || Triple.isAndroid()) {
+ ExtraOpts.push_back("-z");
+ ExtraOpts.push_back("now");
+ }
+
+ if (Distro.IsOpenSUSE() || Distro.IsUbuntu() || Distro.IsAlpineLinux() ||
+ Triple.isAndroid()) {
+ ExtraOpts.push_back("-z");
+ ExtraOpts.push_back("relro");
+ }
+
+ // Android ARM/AArch64 use max-page-size=4096 to reduce VMA usage. Note, lld
+ // from 11 onwards default max-page-size to 65536 for both ARM and AArch64.
+ if ((Triple.isARM() || Triple.isAArch64()) && Triple.isAndroid()) {
+ ExtraOpts.push_back("-z");
+ ExtraOpts.push_back("max-page-size=4096");
+ }
+
+ if (GCCInstallation.getParentLibPath().contains("opt/rh/"))
+ // With devtoolset on RHEL, we want to add a bin directory that is relative
+ // to the detected gcc install, because if we are using devtoolset gcc then
+ // we want to use other tools from devtoolset (e.g. ld) instead of the
+ // standard system tools.
+ PPaths.push_back(Twine(GCCInstallation.getParentLibPath() +
+ "/../bin").str());
+
+ if (Arch == llvm::Triple::arm || Arch == llvm::Triple::thumb)
+ ExtraOpts.push_back("-X");
+
+ const bool IsAndroid = Triple.isAndroid();
+ const bool IsMips = Triple.isMIPS();
+ const bool IsHexagon = Arch == llvm::Triple::hexagon;
+ const bool IsRISCV = Triple.isRISCV();
+ const bool IsCSKY = Triple.isCSKY();
+
+ if (IsCSKY)
+ SysRoot = SysRoot + SelectedMultilib.osSuffix();
+
+ if ((IsMips || IsCSKY) && !SysRoot.empty())
+ ExtraOpts.push_back("--sysroot=" + SysRoot);
+
+ // Do not use 'gnu' hash style for Mips targets because .gnu.hash
+ // and the MIPS ABI require .dynsym to be sorted in different ways.
+ // .gnu.hash needs symbols to be grouped by hash code whereas the MIPS
+ // ABI requires a mapping between the GOT and the symbol table.
+ // Android loader does not support .gnu.hash until API 23.
+ // Hexagon linker/loader does not support .gnu.hash
+ if (!IsMips && !IsHexagon) {
+ if (Distro.IsOpenSUSE() || Distro == Distro::UbuntuLucid ||
+ Distro == Distro::UbuntuJaunty || Distro == Distro::UbuntuKarmic ||
+ (IsAndroid && Triple.isAndroidVersionLT(23)))
+ ExtraOpts.push_back("--hash-style=both");
+ else
+ ExtraOpts.push_back("--hash-style=gnu");
+ }
+
+#ifdef ENABLE_LINKER_BUILD_ID
+ ExtraOpts.push_back("--build-id");
+#endif
+
+ // The selection of paths to try here is designed to match the patterns which
+ // the GCC driver itself uses, as this is part of the GCC-compatible driver.
+ // This was determined by running GCC in a fake filesystem, creating all
+ // possible permutations of these directories, and seeing which ones it added
+ // to the link paths.
+ path_list &Paths = getFilePaths();
+
+ const std::string OSLibDir = std::string(getOSLibDir(Triple, Args));
+ const std::string MultiarchTriple = getMultiarchTriple(D, Triple, SysRoot);
+
+ // mips32: Debian multilib, we use /libo32, while in other case, /lib is
+ // used. We need add both libo32 and /lib.
+ if (Arch == llvm::Triple::mips || Arch == llvm::Triple::mipsel) {
+ Generic_GCC::AddMultilibPaths(D, SysRoot, "libo32", MultiarchTriple, Paths);
+ addPathIfExists(D, concat(SysRoot, "/libo32"), Paths);
+ addPathIfExists(D, concat(SysRoot, "/usr/libo32"), Paths);
+ }
+ Generic_GCC::AddMultilibPaths(D, SysRoot, OSLibDir, MultiarchTriple, Paths);
+
+ addPathIfExists(D, concat(SysRoot, "/lib", MultiarchTriple), Paths);
+ addPathIfExists(D, concat(SysRoot, "/lib/..", OSLibDir), Paths);
+
+ if (IsAndroid) {
+ // Android sysroots contain a library directory for each supported OS
+ // version as well as some unversioned libraries in the usual multiarch
+ // directory.
+ addPathIfExists(
+ D,
+ concat(SysRoot, "/usr/lib", MultiarchTriple,
+ llvm::to_string(Triple.getEnvironmentVersion().getMajor())),
+ Paths);
+ }
+
+ addPathIfExists(D, concat(SysRoot, "/usr/lib", MultiarchTriple), Paths);
+ // 64-bit OpenEmbedded sysroots may not have a /usr/lib dir. So they cannot
+ // find /usr/lib64 as it is referenced as /usr/lib/../lib64. So we handle
+ // this here.
+ if (Triple.getVendor() == llvm::Triple::OpenEmbedded &&
+ Triple.isArch64Bit())
+ addPathIfExists(D, concat(SysRoot, "/usr", OSLibDir), Paths);
+ else
+ addPathIfExists(D, concat(SysRoot, "/usr/lib/..", OSLibDir), Paths);
+ if (IsRISCV) {
+ StringRef ABIName = tools::riscv::getRISCVABI(Args, Triple);
+ addPathIfExists(D, concat(SysRoot, "/", OSLibDir, ABIName), Paths);
+ addPathIfExists(D, concat(SysRoot, "/usr", OSLibDir, ABIName), Paths);
+ }
+
+ Generic_GCC::AddMultiarchPaths(D, SysRoot, OSLibDir, Paths);
+
+ // The deprecated -DLLVM_ENABLE_PROJECTS=libcxx configuration installs
+ // libc++.so in D.Dir+"/../lib/". Detect this path.
+ // TODO Remove once LLVM_ENABLE_PROJECTS=libcxx is unsupported.
+ if (StringRef(D.Dir).startswith(SysRoot) &&
+ D.getVFS().exists(D.Dir + "/../lib/libc++.so"))
+ addPathIfExists(D, D.Dir + "/../lib", Paths);
+
+ addPathIfExists(D, concat(SysRoot, "/lib"), Paths);
+ addPathIfExists(D, concat(SysRoot, "/usr/lib"), Paths);
+}
+
+ToolChain::RuntimeLibType Linux::GetDefaultRuntimeLibType() const {
+ if (getTriple().isAndroid())
+ return ToolChain::RLT_CompilerRT;
+ return Generic_ELF::GetDefaultRuntimeLibType();
+}
+
+unsigned Linux::GetDefaultDwarfVersion() const {
+ if (getTriple().isAndroid())
+ return 4;
+ return ToolChain::GetDefaultDwarfVersion();
+}
+
+ToolChain::CXXStdlibType Linux::GetDefaultCXXStdlibType() const {
+ if (getTriple().isAndroid())
+ return ToolChain::CST_Libcxx;
+ return ToolChain::CST_Libstdcxx;
+}
+
+bool Linux::HasNativeLLVMSupport() const { return true; }
+
+Tool *Linux::buildLinker() const { return new tools::gnutools::Linker(*this); }
+
+Tool *Linux::buildStaticLibTool() const {
+ return new tools::gnutools::StaticLibTool(*this);
+}
+
+Tool *Linux::buildAssembler() const {
+ return new tools::gnutools::Assembler(*this);
+}
+
+std::string Linux::computeSysRoot() const {
+ if (!getDriver().SysRoot.empty())
+ return getDriver().SysRoot;
+
+ if (getTriple().isAndroid()) {
+ // Android toolchains typically include a sysroot at ../sysroot relative to
+ // the clang binary.
+ const StringRef ClangDir = getDriver().getInstalledDir();
+ std::string AndroidSysRootPath = (ClangDir + "/../sysroot").str();
+ if (getVFS().exists(AndroidSysRootPath))
+ return AndroidSysRootPath;
+ }
+
+ if (getTriple().isCSKY()) {
+ // CSKY toolchains use different names for sysroot folder.
+ if (!GCCInstallation.isValid())
+ return std::string();
+ // GCCInstallation.getInstallPath() =
+ // $GCCToolchainPath/lib/gcc/csky-linux-gnuabiv2/6.3.0
+ // Path = $GCCToolchainPath/csky-linux-gnuabiv2/libc
+ std::string Path = (GCCInstallation.getInstallPath() + "/../../../../" +
+ GCCInstallation.getTriple().str() + "/libc")
+ .str();
+ if (getVFS().exists(Path))
+ return Path;
+ return std::string();
+ }
+
+ if (!GCCInstallation.isValid() || !getTriple().isMIPS())
+ return std::string();
+
+ // Standalone MIPS toolchains use different names for sysroot folder
+ // and put it into different places. Here we try to check some known
+ // variants.
+
+ const StringRef InstallDir = GCCInstallation.getInstallPath();
+ const StringRef TripleStr = GCCInstallation.getTriple().str();
+ const Multilib &Multilib = GCCInstallation.getMultilib();
+
+ std::string Path =
+ (InstallDir + "/../../../../" + TripleStr + "/libc" + Multilib.osSuffix())
+ .str();
+
+ if (getVFS().exists(Path))
+ return Path;
+
+ Path = (InstallDir + "/../../../../sysroot" + Multilib.osSuffix()).str();
+
+ if (getVFS().exists(Path))
+ return Path;
+
+ return std::string();
+}
+
+std::string Linux::getDynamicLinker(const ArgList &Args) const {
+ const llvm::Triple::ArchType Arch = getArch();
+ const llvm::Triple &Triple = getTriple();
+
+ const Distro Distro(getDriver().getVFS(), Triple);
+
+ if (Triple.isAndroid())
+ return Triple.isArch64Bit() ? "/system/bin/linker64" : "/system/bin/linker";
+
+ if (Triple.isMusl()) {
+ std::string ArchName;
+ bool IsArm = false;
+
+ switch (Arch) {
+ case llvm::Triple::arm:
+ case llvm::Triple::thumb:
+ ArchName = "arm";
+ IsArm = true;
+ break;
+ case llvm::Triple::armeb:
+ case llvm::Triple::thumbeb:
+ ArchName = "armeb";
+ IsArm = true;
+ break;
+ case llvm::Triple::x86:
+ ArchName = "i386";
+ break;
+ case llvm::Triple::x86_64:
+ ArchName = Triple.isX32() ? "x32" : Triple.getArchName().str();
+ break;
+ default:
+ ArchName = Triple.getArchName().str();
+ }
+ if (IsArm &&
+ (Triple.getEnvironment() == llvm::Triple::MuslEABIHF ||
+ tools::arm::getARMFloatABI(*this, Args) == tools::arm::FloatABI::Hard))
+ ArchName += "hf";
+ if (Arch == llvm::Triple::ppc &&
+ Triple.getSubArch() == llvm::Triple::PPCSubArch_spe)
+ ArchName = "powerpc-sf";
+
+ return "/lib/ld-musl-" + ArchName + ".so.1";
+ }
+
+ std::string LibDir;
+ std::string Loader;
+
+ switch (Arch) {
+ default:
+ llvm_unreachable("unsupported architecture");
+
+ case llvm::Triple::aarch64:
+ LibDir = "lib";
+ Loader = "ld-linux-aarch64.so.1";
+ break;
+ case llvm::Triple::aarch64_be:
+ LibDir = "lib";
+ Loader = "ld-linux-aarch64_be.so.1";
+ break;
+ case llvm::Triple::arm:
+ case llvm::Triple::thumb:
+ case llvm::Triple::armeb:
+ case llvm::Triple::thumbeb: {
+ const bool HF =
+ Triple.getEnvironment() == llvm::Triple::GNUEABIHF ||
+ tools::arm::getARMFloatABI(*this, Args) == tools::arm::FloatABI::Hard;
+
+ LibDir = "lib";
+ Loader = HF ? "ld-linux-armhf.so.3" : "ld-linux.so.3";
+ break;
+ }
+ case llvm::Triple::loongarch32: {
+ LibDir = "lib32";
+ Loader =
+ ("ld-linux-loongarch-" +
+ tools::loongarch::getLoongArchABI(getDriver(), Args, Triple) + ".so.1")
+ .str();
+ break;
+ }
+ case llvm::Triple::loongarch64: {
+ LibDir = "lib64";
+ Loader =
+ ("ld-linux-loongarch-" +
+ tools::loongarch::getLoongArchABI(getDriver(), Args, Triple) + ".so.1")
+ .str();
+ break;
+ }
+ case llvm::Triple::m68k:
+ LibDir = "lib";
+ Loader = "ld.so.1";
+ break;
+ case llvm::Triple::mips:
+ case llvm::Triple::mipsel:
+ case llvm::Triple::mips64:
+ case llvm::Triple::mips64el: {
+ bool IsNaN2008 = tools::mips::isNaN2008(getDriver(), Args, Triple);
+
+ LibDir = "lib" + tools::mips::getMipsABILibSuffix(Args, Triple);
+
+ if (tools::mips::isUCLibc(Args))
+ Loader = IsNaN2008 ? "ld-uClibc-mipsn8.so.0" : "ld-uClibc.so.0";
+ else if (!Triple.hasEnvironment() &&
+ Triple.getVendor() == llvm::Triple::VendorType::MipsTechnologies)
+ Loader =
+ Triple.isLittleEndian() ? "ld-musl-mipsel.so.1" : "ld-musl-mips.so.1";
+ else
+ Loader = IsNaN2008 ? "ld-linux-mipsn8.so.1" : "ld.so.1";
+
+ break;
+ }
+ case llvm::Triple::ppc:
+ LibDir = "lib32";
+ Loader = "ld.so.1";
+ break;
+ case llvm::Triple::ppcle:
+ LibDir = "lib";
+ Loader = "ld.so.1";
+ break;
+ case llvm::Triple::ppc64:
+ LibDir = "lib";
+ Loader =
+ (tools::ppc::hasPPCAbiArg(Args, "elfv2")) ? "ld64.so.2" : "ld64.so.1";
+ break;
+ case llvm::Triple::ppc64le:
+ LibDir = "lib";
+ Loader =
+ (tools::ppc::hasPPCAbiArg(Args, "elfv1")) ? "ld64.so.1" : "ld64.so.2";
+ break;
+ case llvm::Triple::riscv32: {
+ StringRef ABIName = tools::riscv::getRISCVABI(Args, Triple);
+ LibDir = "lib";
+ Loader = ("ld-linux-riscv32-" + ABIName + ".so.1").str();
+ break;
+ }
+ case llvm::Triple::riscv64: {
+ StringRef ABIName = tools::riscv::getRISCVABI(Args, Triple);
+ LibDir = "lib";
+ Loader = ("ld-linux-riscv64-" + ABIName + ".so.1").str();
+ break;
+ }
+ case llvm::Triple::sparc:
+ case llvm::Triple::sparcel:
+ LibDir = "lib";
+ Loader = "ld-linux.so.2";
+ break;
+ case llvm::Triple::sparcv9:
+ LibDir = "lib64";
+ Loader = "ld-linux.so.2";
+ break;
+ case llvm::Triple::systemz:
+ LibDir = "lib";
+ Loader = "ld64.so.1";
+ break;
+ case llvm::Triple::x86:
+ LibDir = "lib32";
+ Loader = "ld-linux.so.2";
+ break;
+ case llvm::Triple::x86_64: {
+ bool X32 = Triple.isX32();
+
+ LibDir = X32 ? "libx32" : "lib";
+ Loader = X32 ? "ld-linux-x32.so.2" : "ld-linux-x86-64.so.2";
+ break;
+ }
+ case llvm::Triple::ve:
+ return "/opt/nec/ve/lib/ld-linux-ve.so.1";
+ case llvm::Triple::csky: {
+ LibDir = "lib";
+ Loader = "ld.so.1";
+ break;
+ }
+ }
+
+ if (Distro == Distro::Exherbo &&
+ (Triple.getVendor() == llvm::Triple::UnknownVendor ||
+ Triple.getVendor() == llvm::Triple::PC))
+ return "/usr/" + Triple.str() + "/lib/" + Loader;
+ return "/" + LibDir + "/" + Loader;
+}
+
+void Linux::AddClangSystemIncludeArgs(const ArgList &DriverArgs,
+ ArgStringList &CC1Args) const {
+ const Driver &D = getDriver();
+ std::string SysRoot = computeSysRoot();
+
+ if (DriverArgs.hasArg(clang::driver::options::OPT_nostdinc))
+ return;
+
+ // Add 'include' in the resource directory, which is similar to
+ // GCC_INCLUDE_DIR (private headers) in GCC. Note: the include directory
+ // contains some files conflicting with system /usr/include. musl systems
+ // prefer the /usr/include copies which are more relevant.
+ SmallString<128> ResourceDirInclude(D.ResourceDir);
+ llvm::sys::path::append(ResourceDirInclude, "include");
+ if (!DriverArgs.hasArg(options::OPT_nobuiltininc) &&
+ (!getTriple().isMusl() || DriverArgs.hasArg(options::OPT_nostdlibinc)))
+ addSystemInclude(DriverArgs, CC1Args, ResourceDirInclude);
+
+ if (DriverArgs.hasArg(options::OPT_nostdlibinc))
+ return;
+
+ // LOCAL_INCLUDE_DIR
+ addSystemInclude(DriverArgs, CC1Args, concat(SysRoot, "/usr/local/include"));
+ // TOOL_INCLUDE_DIR
+ AddMultilibIncludeArgs(DriverArgs, CC1Args);
+
+ // Check for configure-time C include directories.
+ StringRef CIncludeDirs(C_INCLUDE_DIRS);
+ if (CIncludeDirs != "") {
+ SmallVector<StringRef, 5> dirs;
+ CIncludeDirs.split(dirs, ":");
+ for (StringRef dir : dirs) {
+ StringRef Prefix =
+ llvm::sys::path::is_absolute(dir) ? "" : StringRef(SysRoot);
+ addExternCSystemInclude(DriverArgs, CC1Args, Prefix + dir);
+ }
+ return;
+ }
+
+ // On systems using multiarch and Android, add /usr/include/$triple before
+ // /usr/include.
+ std::string MultiarchIncludeDir = getMultiarchTriple(D, getTriple(), SysRoot);
+ if (!MultiarchIncludeDir.empty() &&
+ D.getVFS().exists(concat(SysRoot, "/usr/include", MultiarchIncludeDir)))
+ addExternCSystemInclude(
+ DriverArgs, CC1Args,
+ concat(SysRoot, "/usr/include", MultiarchIncludeDir));
+
+ if (getTriple().getOS() == llvm::Triple::RTEMS)
+ return;
+
+ // Add an include of '/include' directly. This isn't provided by default by
+ // system GCCs, but is often used with cross-compiling GCCs, and harmless to
+ // add even when Clang is acting as-if it were a system compiler.
+ addExternCSystemInclude(DriverArgs, CC1Args, concat(SysRoot, "/include"));
+
+ addExternCSystemInclude(DriverArgs, CC1Args, concat(SysRoot, "/usr/include"));
+
+ if (!DriverArgs.hasArg(options::OPT_nobuiltininc) && getTriple().isMusl())
+ addSystemInclude(DriverArgs, CC1Args, ResourceDirInclude);
+}
+
+void Linux::addLibStdCxxIncludePaths(const llvm::opt::ArgList &DriverArgs,
+ llvm::opt::ArgStringList &CC1Args) const {
+ // We need a detected GCC installation on Linux to provide libstdc++'s
+ // headers in odd Linuxish places.
+ if (!GCCInstallation.isValid())
+ return;
+
+ // Detect Debian g++-multiarch-incdir.diff.
+ StringRef TripleStr = GCCInstallation.getTriple().str();
+ StringRef DebianMultiarch =
+ GCCInstallation.getTriple().getArch() == llvm::Triple::x86
+ ? "i386-linux-gnu"
+ : TripleStr;
+
+ // Try generic GCC detection first.
+ if (Generic_GCC::addGCCLibStdCxxIncludePaths(DriverArgs, CC1Args,
+ DebianMultiarch))
+ return;
+
+ StringRef LibDir = GCCInstallation.getParentLibPath();
+ const Multilib &Multilib = GCCInstallation.getMultilib();
+ const GCCVersion &Version = GCCInstallation.getVersion();
+
+ const std::string LibStdCXXIncludePathCandidates[] = {
+ // Android standalone toolchain has C++ headers in yet another place.
+ LibDir.str() + "/../" + TripleStr.str() + "/include/c++/" + Version.Text,
+ // Freescale SDK C++ headers are directly in <sysroot>/usr/include/c++,
+ // without a subdirectory corresponding to the gcc version.
+ LibDir.str() + "/../include/c++",
+ // Cray's gcc installation puts headers under "g++" without a
+ // version suffix.
+ LibDir.str() + "/../include/g++",
+ };
+
+ for (const auto &IncludePath : LibStdCXXIncludePathCandidates) {
+ if (addLibStdCXXIncludePaths(IncludePath, TripleStr,
+ Multilib.includeSuffix(), DriverArgs, CC1Args))
+ break;
+ }
+}
+
+void Linux::AddCudaIncludeArgs(const ArgList &DriverArgs,
+ ArgStringList &CC1Args) const {
+ CudaInstallation.AddCudaIncludeArgs(DriverArgs, CC1Args);
+}
+
+void Linux::AddHIPIncludeArgs(const ArgList &DriverArgs,
+ ArgStringList &CC1Args) const {
+ RocmInstallation.AddHIPIncludeArgs(DriverArgs, CC1Args);
+}
+
+void Linux::AddHIPRuntimeLibArgs(const ArgList &Args,
+ ArgStringList &CmdArgs) const {
+ CmdArgs.push_back(
+ Args.MakeArgString(StringRef("-L") + RocmInstallation.getLibPath()));
+
+ if (Args.hasFlag(options::OPT_offload_add_rpath,
+ options::OPT_no_offload_add_rpath, false))
+ CmdArgs.append(
+ {"-rpath", Args.MakeArgString(RocmInstallation.getLibPath())});
+
+ CmdArgs.push_back("-lamdhip64");
+}
+
+void Linux::AddIAMCUIncludeArgs(const ArgList &DriverArgs,
+ ArgStringList &CC1Args) const {
+ if (GCCInstallation.isValid()) {
+ CC1Args.push_back("-isystem");
+ CC1Args.push_back(DriverArgs.MakeArgString(
+ GCCInstallation.getParentLibPath() + "/../" +
+ GCCInstallation.getTriple().str() + "/include"));
+ }
+}
+
+bool Linux::isPIEDefault(const llvm::opt::ArgList &Args) const {
+ return CLANG_DEFAULT_PIE_ON_LINUX || getTriple().isAndroid() ||
+ getTriple().isMusl() || getSanitizerArgs(Args).requiresPIE();
+}
+
+bool Linux::IsAArch64OutlineAtomicsDefault(const ArgList &Args) const {
+ // Outline atomics for AArch64 are supported by compiler-rt
+ // and libgcc since 9.3.1
+ assert(getTriple().isAArch64() && "expected AArch64 target!");
+ ToolChain::RuntimeLibType RtLib = GetRuntimeLibType(Args);
+ if (RtLib == ToolChain::RLT_CompilerRT)
+ return true;
+ assert(RtLib == ToolChain::RLT_Libgcc && "unexpected runtime library type!");
+ if (GCCInstallation.getVersion().isOlderThan(9, 3, 1))
+ return false;
+ return true;
+}
+
+bool Linux::IsMathErrnoDefault() const {
+ if (getTriple().isAndroid() || getTriple().isMusl())
+ return false;
+ return Generic_ELF::IsMathErrnoDefault();
+}
+
+SanitizerMask Linux::getSupportedSanitizers() const {
+ const bool IsX86 = getTriple().getArch() == llvm::Triple::x86;
+ const bool IsX86_64 = getTriple().getArch() == llvm::Triple::x86_64;
+ const bool IsMIPS = getTriple().isMIPS32();
+ const bool IsMIPS64 = getTriple().isMIPS64();
+ const bool IsPowerPC64 = getTriple().getArch() == llvm::Triple::ppc64 ||
+ getTriple().getArch() == llvm::Triple::ppc64le;
+ const bool IsAArch64 = getTriple().getArch() == llvm::Triple::aarch64 ||
+ getTriple().getArch() == llvm::Triple::aarch64_be;
+ const bool IsArmArch = getTriple().getArch() == llvm::Triple::arm ||
+ getTriple().getArch() == llvm::Triple::thumb ||
+ getTriple().getArch() == llvm::Triple::armeb ||
+ getTriple().getArch() == llvm::Triple::thumbeb;
+ const bool IsLoongArch64 = getTriple().getArch() == llvm::Triple::loongarch64;
+ const bool IsRISCV64 = getTriple().getArch() == llvm::Triple::riscv64;
+ const bool IsSystemZ = getTriple().getArch() == llvm::Triple::systemz;
+ const bool IsHexagon = getTriple().getArch() == llvm::Triple::hexagon;
+ SanitizerMask Res = ToolChain::getSupportedSanitizers();
+ Res |= SanitizerKind::Address;
+ Res |= SanitizerKind::PointerCompare;
+ Res |= SanitizerKind::PointerSubtract;
+ Res |= SanitizerKind::Fuzzer;
+ Res |= SanitizerKind::FuzzerNoLink;
+ Res |= SanitizerKind::KernelAddress;
+ Res |= SanitizerKind::Memory;
+ Res |= SanitizerKind::Vptr;
+ Res |= SanitizerKind::SafeStack;
+ if (IsX86_64 || IsMIPS64 || IsAArch64)
+ Res |= SanitizerKind::DataFlow;
+ if (IsX86_64 || IsMIPS64 || IsAArch64 || IsX86 || IsArmArch || IsPowerPC64 ||
+ IsRISCV64 || IsSystemZ || IsHexagon || IsLoongArch64)
+ Res |= SanitizerKind::Leak;
+ if (IsX86_64 || IsMIPS64 || IsAArch64 || IsPowerPC64 || IsSystemZ ||
+ IsLoongArch64)
+ Res |= SanitizerKind::Thread;
+ if (IsX86_64)
+ Res |= SanitizerKind::KernelMemory;
+ if (IsX86 || IsX86_64)
+ Res |= SanitizerKind::Function;
+ if (IsX86_64 || IsMIPS64 || IsAArch64 || IsX86 || IsMIPS || IsArmArch ||
+ IsPowerPC64 || IsHexagon || IsLoongArch64)
+ Res |= SanitizerKind::Scudo;
+ if (IsX86_64 || IsAArch64 || IsRISCV64) {
+ Res |= SanitizerKind::HWAddress;
+ }
+ if (IsX86_64 || IsAArch64) {
+ Res |= SanitizerKind::KernelHWAddress;
+ }
+ return Res;
+}
+
+void Linux::addProfileRTLibs(const llvm::opt::ArgList &Args,
+ llvm::opt::ArgStringList &CmdArgs) const {
+ // Add linker option -u__llvm_profile_runtime to cause runtime
+ // initialization module to be linked in.
+ if (needsProfileRT(Args))
+ CmdArgs.push_back(Args.MakeArgString(
+ Twine("-u", llvm::getInstrProfRuntimeHookVarName())));
+ ToolChain::addProfileRTLibs(Args, CmdArgs);
+}
+
+llvm::DenormalMode
+Linux::getDefaultDenormalModeForType(const llvm::opt::ArgList &DriverArgs,
+ const JobAction &JA,
+ const llvm::fltSemantics *FPType) const {
+ switch (getTriple().getArch()) {
+ case llvm::Triple::x86:
+ case llvm::Triple::x86_64: {
+ std::string Unused;
+ // DAZ and FTZ are turned on in crtfastmath.o
+ if (!DriverArgs.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles) &&
+ isFastMathRuntimeAvailable(DriverArgs, Unused))
+ return llvm::DenormalMode::getPreserveSign();
+ return llvm::DenormalMode::getIEEE();
+ }
+ default:
+ return llvm::DenormalMode::getIEEE();
+ }
+}
+
+void Linux::addExtraOpts(llvm::opt::ArgStringList &CmdArgs) const {
+ for (const auto &Opt : ExtraOpts)
+ CmdArgs.push_back(Opt.c_str());
+}
+
+const char *Linux::getDefaultLinker() const {
+ if (getTriple().isAndroid())
+ return "ld.lld";
+ return Generic_ELF::getDefaultLinker();
+}
Index: create-16.0.2-x64-interpreter-patch/create.patch.sh
===================================================================
--- create-16.0.2-x64-interpreter-patch/create.patch.sh (nonexistent)
+++ create-16.0.2-x64-interpreter-patch/create.patch.sh (revision 40)
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+VERSION=16.0.2
+
+tar --files-from=file.list -xJvf ../llvm-$VERSION.tar.xz
+mv llvm-$VERSION llvm-$VERSION-orig
+
+cp -rf ./llvm-$VERSION-new ./llvm-$VERSION
+
+diff --unified -Nr llvm-$VERSION-orig llvm-$VERSION > llvm-$VERSION-x64-interpreter.patch
+
+mv llvm-$VERSION-x64-interpreter.patch ../patches
+
+rm -rf ./llvm-$VERSION
+rm -rf ./llvm-$VERSION-orig
Property changes on: create-16.0.2-x64-interpreter-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: create-16.0.2-x64-interpreter-patch/file.list
===================================================================
--- create-16.0.2-x64-interpreter-patch/file.list (nonexistent)
+++ create-16.0.2-x64-interpreter-patch/file.list (revision 40)
@@ -0,0 +1 @@
+llvm-16.0.2/clang/lib/Driver/ToolChains/Linux.cpp
Index: create-16.0.2-x64-interpreter-patch/llvm-16.0.2-new/clang/lib/Driver/ToolChains/Linux.cpp
===================================================================
--- create-16.0.2-x64-interpreter-patch/llvm-16.0.2-new/clang/lib/Driver/ToolChains/Linux.cpp (nonexistent)
+++ create-16.0.2-x64-interpreter-patch/llvm-16.0.2-new/clang/lib/Driver/ToolChains/Linux.cpp (revision 40)
@@ -0,0 +1,828 @@
+//===--- Linux.h - Linux ToolChain Implementations --------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "Linux.h"
+#include "Arch/ARM.h"
+#include "Arch/LoongArch.h"
+#include "Arch/Mips.h"
+#include "Arch/PPC.h"
+#include "Arch/RISCV.h"
+#include "CommonArgs.h"
+#include "clang/Config/config.h"
+#include "clang/Driver/Distro.h"
+#include "clang/Driver/Driver.h"
+#include "clang/Driver/Options.h"
+#include "clang/Driver/SanitizerArgs.h"
+#include "llvm/Option/ArgList.h"
+#include "llvm/ProfileData/InstrProf.h"
+#include "llvm/Support/Path.h"
+#include "llvm/Support/ScopedPrinter.h"
+#include "llvm/Support/VirtualFileSystem.h"
+#include <system_error>
+
+using namespace clang::driver;
+using namespace clang::driver::toolchains;
+using namespace clang;
+using namespace llvm::opt;
+
+using tools::addPathIfExists;
+
+/// Get our best guess at the multiarch triple for a target.
+///
+/// Debian-based systems are starting to use a multiarch setup where they use
+/// a target-triple directory in the library and header search paths.
+/// Unfortunately, this triple does not align with the vanilla target triple,
+/// so we provide a rough mapping here.
+std::string Linux::getMultiarchTriple(const Driver &D,
+ const llvm::Triple &TargetTriple,
+ StringRef SysRoot) const {
+ llvm::Triple::EnvironmentType TargetEnvironment =
+ TargetTriple.getEnvironment();
+ bool IsAndroid = TargetTriple.isAndroid();
+ bool IsMipsR6 = TargetTriple.getSubArch() == llvm::Triple::MipsSubArch_r6;
+ bool IsMipsN32Abi = TargetTriple.getEnvironment() == llvm::Triple::GNUABIN32;
+
+ // For most architectures, just use whatever we have rather than trying to be
+ // clever.
+ switch (TargetTriple.getArch()) {
+ default:
+ break;
+
+ // We use the existence of '/lib/<triple>' as a directory to detect some
+ // common linux triples that don't quite match the Clang triple for both
+ // 32-bit and 64-bit targets. Multiarch fixes its install triples to these
+ // regardless of what the actual target triple is.
+ case llvm::Triple::arm:
+ case llvm::Triple::thumb:
+ if (IsAndroid)
+ return "arm-linux-androideabi";
+ if (TargetEnvironment == llvm::Triple::GNUEABIHF)
+ return "arm-linux-gnueabihf";
+ return "arm-linux-gnueabi";
+ case llvm::Triple::armeb:
+ case llvm::Triple::thumbeb:
+ if (TargetEnvironment == llvm::Triple::GNUEABIHF)
+ return "armeb-linux-gnueabihf";
+ return "armeb-linux-gnueabi";
+ case llvm::Triple::x86:
+ if (IsAndroid)
+ return "i686-linux-android";
+ return "i386-linux-gnu";
+ case llvm::Triple::x86_64:
+ if (IsAndroid)
+ return "x86_64-linux-android";
+ if (TargetEnvironment == llvm::Triple::GNUX32)
+ return "x86_64-linux-gnux32";
+ return "x86_64-linux-gnu";
+ case llvm::Triple::aarch64:
+ if (IsAndroid)
+ return "aarch64-linux-android";
+ return "aarch64-linux-gnu";
+ case llvm::Triple::aarch64_be:
+ return "aarch64_be-linux-gnu";
+
+ case llvm::Triple::m68k:
+ return "m68k-linux-gnu";
+
+ case llvm::Triple::mips:
+ return IsMipsR6 ? "mipsisa32r6-linux-gnu" : "mips-linux-gnu";
+ case llvm::Triple::mipsel:
+ if (IsAndroid)
+ return "mipsel-linux-android";
+ return IsMipsR6 ? "mipsisa32r6el-linux-gnu" : "mipsel-linux-gnu";
+ case llvm::Triple::mips64: {
+ std::string MT = std::string(IsMipsR6 ? "mipsisa64r6" : "mips64") +
+ "-linux-" + (IsMipsN32Abi ? "gnuabin32" : "gnuabi64");
+ if (D.getVFS().exists(concat(SysRoot, "/lib", MT)))
+ return MT;
+ if (D.getVFS().exists(concat(SysRoot, "/lib/mips64-linux-gnu")))
+ return "mips64-linux-gnu";
+ break;
+ }
+ case llvm::Triple::mips64el: {
+ if (IsAndroid)
+ return "mips64el-linux-android";
+ std::string MT = std::string(IsMipsR6 ? "mipsisa64r6el" : "mips64el") +
+ "-linux-" + (IsMipsN32Abi ? "gnuabin32" : "gnuabi64");
+ if (D.getVFS().exists(concat(SysRoot, "/lib", MT)))
+ return MT;
+ if (D.getVFS().exists(concat(SysRoot, "/lib/mips64el-linux-gnu")))
+ return "mips64el-linux-gnu";
+ break;
+ }
+ case llvm::Triple::ppc:
+ if (D.getVFS().exists(concat(SysRoot, "/lib/powerpc-linux-gnuspe")))
+ return "powerpc-linux-gnuspe";
+ return "powerpc-linux-gnu";
+ case llvm::Triple::ppcle:
+ return "powerpcle-linux-gnu";
+ case llvm::Triple::ppc64:
+ return "powerpc64-linux-gnu";
+ case llvm::Triple::ppc64le:
+ return "powerpc64le-linux-gnu";
+ case llvm::Triple::riscv64:
+ return "riscv64-linux-gnu";
+ case llvm::Triple::sparc:
+ return "sparc-linux-gnu";
+ case llvm::Triple::sparcv9:
+ return "sparc64-linux-gnu";
+ case llvm::Triple::systemz:
+ return "s390x-linux-gnu";
+ }
+ return TargetTriple.str();
+}
+
+static StringRef getOSLibDir(const llvm::Triple &Triple, const ArgList &Args) {
+ if (Triple.isMIPS()) {
+ if (Triple.isAndroid()) {
+ StringRef CPUName;
+ StringRef ABIName;
+ tools::mips::getMipsCPUAndABI(Args, Triple, CPUName, ABIName);
+ if (CPUName == "mips32r6")
+ return "libr6";
+ if (CPUName == "mips32r2")
+ return "libr2";
+ }
+ // lib32 directory has a special meaning on MIPS targets.
+ // It contains N32 ABI binaries. Use this folder if produce
+ // code for N32 ABI only.
+ if (tools::mips::hasMipsAbiArg(Args, "n32"))
+ return "lib32";
+ return Triple.isArch32Bit() ? "lib" : "lib64";
+ }
+
+ // It happens that only x86, PPC and SPARC use the 'lib32' variant of
+ // oslibdir, and using that variant while targeting other architectures causes
+ // problems because the libraries are laid out in shared system roots that
+ // can't cope with a 'lib32' library search path being considered. So we only
+ // enable them when we know we may need it.
+ //
+ // FIXME: This is a bit of a hack. We should really unify this code for
+ // reasoning about oslibdir spellings with the lib dir spellings in the
+ // GCCInstallationDetector, but that is a more significant refactoring.
+ if (Triple.getArch() == llvm::Triple::x86 || Triple.isPPC32() ||
+ Triple.getArch() == llvm::Triple::sparc)
+ return "lib32";
+
+ if (Triple.getArch() == llvm::Triple::x86_64 && Triple.isX32())
+ return "libx32";
+
+ if (Triple.getArch() == llvm::Triple::riscv32)
+ return "lib32";
+
+ return Triple.isArch32Bit() ? "lib" : "lib64";
+}
+
+Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
+ : Generic_ELF(D, Triple, Args) {
+ GCCInstallation.init(Triple, Args);
+ Multilibs = GCCInstallation.getMultilibs();
+ SelectedMultilib = GCCInstallation.getMultilib();
+ llvm::Triple::ArchType Arch = Triple.getArch();
+ std::string SysRoot = computeSysRoot();
+ ToolChain::path_list &PPaths = getProgramPaths();
+
+ Generic_GCC::PushPPaths(PPaths);
+
+ Distro Distro(D.getVFS(), Triple);
+
+ if (Distro.IsAlpineLinux() || Triple.isAndroid()) {
+ ExtraOpts.push_back("-z");
+ ExtraOpts.push_back("now");
+ }
+
+ if (Distro.IsOpenSUSE() || Distro.IsUbuntu() || Distro.IsAlpineLinux() ||
+ Triple.isAndroid()) {
+ ExtraOpts.push_back("-z");
+ ExtraOpts.push_back("relro");
+ }
+
+ // Android ARM/AArch64 use max-page-size=4096 to reduce VMA usage. Note, lld
+ // from 11 onwards default max-page-size to 65536 for both ARM and AArch64.
+ if ((Triple.isARM() || Triple.isAArch64()) && Triple.isAndroid()) {
+ ExtraOpts.push_back("-z");
+ ExtraOpts.push_back("max-page-size=4096");
+ }
+
+ if (GCCInstallation.getParentLibPath().contains("opt/rh/"))
+ // With devtoolset on RHEL, we want to add a bin directory that is relative
+ // to the detected gcc install, because if we are using devtoolset gcc then
+ // we want to use other tools from devtoolset (e.g. ld) instead of the
+ // standard system tools.
+ PPaths.push_back(Twine(GCCInstallation.getParentLibPath() +
+ "/../bin").str());
+
+ if (Arch == llvm::Triple::arm || Arch == llvm::Triple::thumb)
+ ExtraOpts.push_back("-X");
+
+ const bool IsAndroid = Triple.isAndroid();
+ const bool IsMips = Triple.isMIPS();
+ const bool IsHexagon = Arch == llvm::Triple::hexagon;
+ const bool IsRISCV = Triple.isRISCV();
+ const bool IsCSKY = Triple.isCSKY();
+
+ if (IsCSKY)
+ SysRoot = SysRoot + SelectedMultilib.osSuffix();
+
+ if ((IsMips || IsCSKY) && !SysRoot.empty())
+ ExtraOpts.push_back("--sysroot=" + SysRoot);
+
+ // Do not use 'gnu' hash style for Mips targets because .gnu.hash
+ // and the MIPS ABI require .dynsym to be sorted in different ways.
+ // .gnu.hash needs symbols to be grouped by hash code whereas the MIPS
+ // ABI requires a mapping between the GOT and the symbol table.
+ // Android loader does not support .gnu.hash until API 23.
+ // Hexagon linker/loader does not support .gnu.hash
+ if (!IsMips && !IsHexagon) {
+ if (Distro.IsOpenSUSE() || Distro == Distro::UbuntuLucid ||
+ Distro == Distro::UbuntuJaunty || Distro == Distro::UbuntuKarmic ||
+ (IsAndroid && Triple.isAndroidVersionLT(23)))
+ ExtraOpts.push_back("--hash-style=both");
+ else
+ ExtraOpts.push_back("--hash-style=gnu");
+ }
+
+#ifdef ENABLE_LINKER_BUILD_ID
+ ExtraOpts.push_back("--build-id");
+#endif
+
+ // The selection of paths to try here is designed to match the patterns which
+ // the GCC driver itself uses, as this is part of the GCC-compatible driver.
+ // This was determined by running GCC in a fake filesystem, creating all
+ // possible permutations of these directories, and seeing which ones it added
+ // to the link paths.
+ path_list &Paths = getFilePaths();
+
+ const std::string OSLibDir = std::string(getOSLibDir(Triple, Args));
+ const std::string MultiarchTriple = getMultiarchTriple(D, Triple, SysRoot);
+
+ // mips32: Debian multilib, we use /libo32, while in other case, /lib is
+ // used. We need add both libo32 and /lib.
+ if (Arch == llvm::Triple::mips || Arch == llvm::Triple::mipsel) {
+ Generic_GCC::AddMultilibPaths(D, SysRoot, "libo32", MultiarchTriple, Paths);
+ addPathIfExists(D, concat(SysRoot, "/libo32"), Paths);
+ addPathIfExists(D, concat(SysRoot, "/usr/libo32"), Paths);
+ }
+ Generic_GCC::AddMultilibPaths(D, SysRoot, OSLibDir, MultiarchTriple, Paths);
+
+ addPathIfExists(D, concat(SysRoot, "/lib", MultiarchTriple), Paths);
+ addPathIfExists(D, concat(SysRoot, "/lib/..", OSLibDir), Paths);
+
+ if (IsAndroid) {
+ // Android sysroots contain a library directory for each supported OS
+ // version as well as some unversioned libraries in the usual multiarch
+ // directory.
+ addPathIfExists(
+ D,
+ concat(SysRoot, "/usr/lib", MultiarchTriple,
+ llvm::to_string(Triple.getEnvironmentVersion().getMajor())),
+ Paths);
+ }
+
+ addPathIfExists(D, concat(SysRoot, "/usr/lib", MultiarchTriple), Paths);
+ // 64-bit OpenEmbedded sysroots may not have a /usr/lib dir. So they cannot
+ // find /usr/lib64 as it is referenced as /usr/lib/../lib64. So we handle
+ // this here.
+ if (Triple.getVendor() == llvm::Triple::OpenEmbedded &&
+ Triple.isArch64Bit())
+ addPathIfExists(D, concat(SysRoot, "/usr", OSLibDir), Paths);
+ else
+ addPathIfExists(D, concat(SysRoot, "/usr/lib/..", OSLibDir), Paths);
+ if (IsRISCV) {
+ StringRef ABIName = tools::riscv::getRISCVABI(Args, Triple);
+ addPathIfExists(D, concat(SysRoot, "/", OSLibDir, ABIName), Paths);
+ addPathIfExists(D, concat(SysRoot, "/usr", OSLibDir, ABIName), Paths);
+ }
+
+ Generic_GCC::AddMultiarchPaths(D, SysRoot, OSLibDir, Paths);
+
+ // The deprecated -DLLVM_ENABLE_PROJECTS=libcxx configuration installs
+ // libc++.so in D.Dir+"/../lib/". Detect this path.
+ // TODO Remove once LLVM_ENABLE_PROJECTS=libcxx is unsupported.
+ if (StringRef(D.Dir).startswith(SysRoot) &&
+ D.getVFS().exists(D.Dir + "/../lib/libc++.so"))
+ addPathIfExists(D, D.Dir + "/../lib", Paths);
+
+ addPathIfExists(D, concat(SysRoot, "/lib"), Paths);
+ addPathIfExists(D, concat(SysRoot, "/usr/lib"), Paths);
+}
+
+ToolChain::RuntimeLibType Linux::GetDefaultRuntimeLibType() const {
+ if (getTriple().isAndroid())
+ return ToolChain::RLT_CompilerRT;
+ return Generic_ELF::GetDefaultRuntimeLibType();
+}
+
+unsigned Linux::GetDefaultDwarfVersion() const {
+ if (getTriple().isAndroid())
+ return 4;
+ return ToolChain::GetDefaultDwarfVersion();
+}
+
+ToolChain::CXXStdlibType Linux::GetDefaultCXXStdlibType() const {
+ if (getTriple().isAndroid())
+ return ToolChain::CST_Libcxx;
+ return ToolChain::CST_Libstdcxx;
+}
+
+bool Linux::HasNativeLLVMSupport() const { return true; }
+
+Tool *Linux::buildLinker() const { return new tools::gnutools::Linker(*this); }
+
+Tool *Linux::buildStaticLibTool() const {
+ return new tools::gnutools::StaticLibTool(*this);
+}
+
+Tool *Linux::buildAssembler() const {
+ return new tools::gnutools::Assembler(*this);
+}
+
+std::string Linux::computeSysRoot() const {
+ if (!getDriver().SysRoot.empty())
+ return getDriver().SysRoot;
+
+ if (getTriple().isAndroid()) {
+ // Android toolchains typically include a sysroot at ../sysroot relative to
+ // the clang binary.
+ const StringRef ClangDir = getDriver().getInstalledDir();
+ std::string AndroidSysRootPath = (ClangDir + "/../sysroot").str();
+ if (getVFS().exists(AndroidSysRootPath))
+ return AndroidSysRootPath;
+ }
+
+ if (getTriple().isCSKY()) {
+ // CSKY toolchains use different names for sysroot folder.
+ if (!GCCInstallation.isValid())
+ return std::string();
+ // GCCInstallation.getInstallPath() =
+ // $GCCToolchainPath/lib/gcc/csky-linux-gnuabiv2/6.3.0
+ // Path = $GCCToolchainPath/csky-linux-gnuabiv2/libc
+ std::string Path = (GCCInstallation.getInstallPath() + "/../../../../" +
+ GCCInstallation.getTriple().str() + "/libc")
+ .str();
+ if (getVFS().exists(Path))
+ return Path;
+ return std::string();
+ }
+
+ if (!GCCInstallation.isValid() || !getTriple().isMIPS())
+ return std::string();
+
+ // Standalone MIPS toolchains use different names for sysroot folder
+ // and put it into different places. Here we try to check some known
+ // variants.
+
+ const StringRef InstallDir = GCCInstallation.getInstallPath();
+ const StringRef TripleStr = GCCInstallation.getTriple().str();
+ const Multilib &Multilib = GCCInstallation.getMultilib();
+
+ std::string Path =
+ (InstallDir + "/../../../../" + TripleStr + "/libc" + Multilib.osSuffix())
+ .str();
+
+ if (getVFS().exists(Path))
+ return Path;
+
+ Path = (InstallDir + "/../../../../sysroot" + Multilib.osSuffix()).str();
+
+ if (getVFS().exists(Path))
+ return Path;
+
+ return std::string();
+}
+
+std::string Linux::getDynamicLinker(const ArgList &Args) const {
+ const llvm::Triple::ArchType Arch = getArch();
+ const llvm::Triple &Triple = getTriple();
+
+ const Distro Distro(getDriver().getVFS(), Triple);
+
+ if (Triple.isAndroid())
+ return Triple.isArch64Bit() ? "/system/bin/linker64" : "/system/bin/linker";
+
+ if (Triple.isMusl()) {
+ std::string ArchName;
+ bool IsArm = false;
+
+ switch (Arch) {
+ case llvm::Triple::arm:
+ case llvm::Triple::thumb:
+ ArchName = "arm";
+ IsArm = true;
+ break;
+ case llvm::Triple::armeb:
+ case llvm::Triple::thumbeb:
+ ArchName = "armeb";
+ IsArm = true;
+ break;
+ case llvm::Triple::x86:
+ ArchName = "i386";
+ break;
+ case llvm::Triple::x86_64:
+ ArchName = Triple.isX32() ? "x32" : Triple.getArchName().str();
+ break;
+ default:
+ ArchName = Triple.getArchName().str();
+ }
+ if (IsArm &&
+ (Triple.getEnvironment() == llvm::Triple::MuslEABIHF ||
+ tools::arm::getARMFloatABI(*this, Args) == tools::arm::FloatABI::Hard))
+ ArchName += "hf";
+ if (Arch == llvm::Triple::ppc &&
+ Triple.getSubArch() == llvm::Triple::PPCSubArch_spe)
+ ArchName = "powerpc-sf";
+
+ return "/lib/ld-musl-" + ArchName + ".so.1";
+ }
+
+ std::string LibDir;
+ std::string Loader;
+
+ switch (Arch) {
+ default:
+ llvm_unreachable("unsupported architecture");
+
+ case llvm::Triple::aarch64:
+ LibDir = "lib";
+ Loader = "ld-linux-aarch64.so.1";
+ break;
+ case llvm::Triple::aarch64_be:
+ LibDir = "lib";
+ Loader = "ld-linux-aarch64_be.so.1";
+ break;
+ case llvm::Triple::arm:
+ case llvm::Triple::thumb:
+ case llvm::Triple::armeb:
+ case llvm::Triple::thumbeb: {
+ const bool HF =
+ Triple.getEnvironment() == llvm::Triple::GNUEABIHF ||
+ tools::arm::getARMFloatABI(*this, Args) == tools::arm::FloatABI::Hard;
+
+ LibDir = "lib";
+ Loader = HF ? "ld-linux-armhf.so.3" : "ld-linux.so.3";
+ break;
+ }
+ case llvm::Triple::loongarch32: {
+ LibDir = "lib32";
+ Loader =
+ ("ld-linux-loongarch-" +
+ tools::loongarch::getLoongArchABI(getDriver(), Args, Triple) + ".so.1")
+ .str();
+ break;
+ }
+ case llvm::Triple::loongarch64: {
+ LibDir = "lib64";
+ Loader =
+ ("ld-linux-loongarch-" +
+ tools::loongarch::getLoongArchABI(getDriver(), Args, Triple) + ".so.1")
+ .str();
+ break;
+ }
+ case llvm::Triple::m68k:
+ LibDir = "lib";
+ Loader = "ld.so.1";
+ break;
+ case llvm::Triple::mips:
+ case llvm::Triple::mipsel:
+ case llvm::Triple::mips64:
+ case llvm::Triple::mips64el: {
+ bool IsNaN2008 = tools::mips::isNaN2008(getDriver(), Args, Triple);
+
+ LibDir = "lib" + tools::mips::getMipsABILibSuffix(Args, Triple);
+
+ if (tools::mips::isUCLibc(Args))
+ Loader = IsNaN2008 ? "ld-uClibc-mipsn8.so.0" : "ld-uClibc.so.0";
+ else if (!Triple.hasEnvironment() &&
+ Triple.getVendor() == llvm::Triple::VendorType::MipsTechnologies)
+ Loader =
+ Triple.isLittleEndian() ? "ld-musl-mipsel.so.1" : "ld-musl-mips.so.1";
+ else
+ Loader = IsNaN2008 ? "ld-linux-mipsn8.so.1" : "ld.so.1";
+
+ break;
+ }
+ case llvm::Triple::ppc:
+ LibDir = "lib";
+ Loader = "ld.so.1";
+ break;
+ case llvm::Triple::ppcle:
+ LibDir = "lib";
+ Loader = "ld.so.1";
+ break;
+ case llvm::Triple::ppc64:
+ LibDir = "lib";
+ Loader =
+ (tools::ppc::hasPPCAbiArg(Args, "elfv2")) ? "ld64.so.2" : "ld64.so.1";
+ break;
+ case llvm::Triple::ppc64le:
+ LibDir = "lib";
+ Loader =
+ (tools::ppc::hasPPCAbiArg(Args, "elfv1")) ? "ld64.so.1" : "ld64.so.2";
+ break;
+ case llvm::Triple::riscv32: {
+ StringRef ABIName = tools::riscv::getRISCVABI(Args, Triple);
+ LibDir = "lib";
+ Loader = ("ld-linux-riscv32-" + ABIName + ".so.1").str();
+ break;
+ }
+ case llvm::Triple::riscv64: {
+ StringRef ABIName = tools::riscv::getRISCVABI(Args, Triple);
+ LibDir = "lib";
+ Loader = ("ld-linux-riscv64-" + ABIName + ".so.1").str();
+ break;
+ }
+ case llvm::Triple::sparc:
+ case llvm::Triple::sparcel:
+ LibDir = "lib";
+ Loader = "ld-linux.so.2";
+ break;
+ case llvm::Triple::sparcv9:
+ LibDir = "lib64";
+ Loader = "ld-linux.so.2";
+ break;
+ case llvm::Triple::systemz:
+ LibDir = "lib";
+ Loader = "ld64.so.1";
+ break;
+ case llvm::Triple::x86:
+ LibDir = "lib";
+ Loader = "ld-linux.so.2";
+ break;
+ case llvm::Triple::x86_64: {
+ bool X32 = Triple.isX32();
+
+ LibDir = X32 ? "libx32" : "lib";
+ Loader = X32 ? "ld-linux-x32.so.2" : "ld-linux-x86-64.so.2";
+ break;
+ }
+ case llvm::Triple::ve:
+ return "/opt/nec/ve/lib/ld-linux-ve.so.1";
+ case llvm::Triple::csky: {
+ LibDir = "lib";
+ Loader = "ld.so.1";
+ break;
+ }
+ }
+
+ if (Distro == Distro::Exherbo &&
+ (Triple.getVendor() == llvm::Triple::UnknownVendor ||
+ Triple.getVendor() == llvm::Triple::PC))
+ return "/usr/" + Triple.str() + "/lib/" + Loader;
+ return "/" + LibDir + "/" + Loader;
+}
+
+void Linux::AddClangSystemIncludeArgs(const ArgList &DriverArgs,
+ ArgStringList &CC1Args) const {
+ const Driver &D = getDriver();
+ std::string SysRoot = computeSysRoot();
+
+ if (DriverArgs.hasArg(clang::driver::options::OPT_nostdinc))
+ return;
+
+ // Add 'include' in the resource directory, which is similar to
+ // GCC_INCLUDE_DIR (private headers) in GCC. Note: the include directory
+ // contains some files conflicting with system /usr/include. musl systems
+ // prefer the /usr/include copies which are more relevant.
+ SmallString<128> ResourceDirInclude(D.ResourceDir);
+ llvm::sys::path::append(ResourceDirInclude, "include");
+ if (!DriverArgs.hasArg(options::OPT_nobuiltininc) &&
+ (!getTriple().isMusl() || DriverArgs.hasArg(options::OPT_nostdlibinc)))
+ addSystemInclude(DriverArgs, CC1Args, ResourceDirInclude);
+
+ if (DriverArgs.hasArg(options::OPT_nostdlibinc))
+ return;
+
+ // LOCAL_INCLUDE_DIR
+ addSystemInclude(DriverArgs, CC1Args, concat(SysRoot, "/usr/local/include"));
+ // TOOL_INCLUDE_DIR
+ AddMultilibIncludeArgs(DriverArgs, CC1Args);
+
+ // Check for configure-time C include directories.
+ StringRef CIncludeDirs(C_INCLUDE_DIRS);
+ if (CIncludeDirs != "") {
+ SmallVector<StringRef, 5> dirs;
+ CIncludeDirs.split(dirs, ":");
+ for (StringRef dir : dirs) {
+ StringRef Prefix =
+ llvm::sys::path::is_absolute(dir) ? "" : StringRef(SysRoot);
+ addExternCSystemInclude(DriverArgs, CC1Args, Prefix + dir);
+ }
+ return;
+ }
+
+ // On systems using multiarch and Android, add /usr/include/$triple before
+ // /usr/include.
+ std::string MultiarchIncludeDir = getMultiarchTriple(D, getTriple(), SysRoot);
+ if (!MultiarchIncludeDir.empty() &&
+ D.getVFS().exists(concat(SysRoot, "/usr/include", MultiarchIncludeDir)))
+ addExternCSystemInclude(
+ DriverArgs, CC1Args,
+ concat(SysRoot, "/usr/include", MultiarchIncludeDir));
+
+ if (getTriple().getOS() == llvm::Triple::RTEMS)
+ return;
+
+ // Add an include of '/include' directly. This isn't provided by default by
+ // system GCCs, but is often used with cross-compiling GCCs, and harmless to
+ // add even when Clang is acting as-if it were a system compiler.
+ addExternCSystemInclude(DriverArgs, CC1Args, concat(SysRoot, "/include"));
+
+ addExternCSystemInclude(DriverArgs, CC1Args, concat(SysRoot, "/usr/include"));
+
+ if (!DriverArgs.hasArg(options::OPT_nobuiltininc) && getTriple().isMusl())
+ addSystemInclude(DriverArgs, CC1Args, ResourceDirInclude);
+}
+
+void Linux::addLibStdCxxIncludePaths(const llvm::opt::ArgList &DriverArgs,
+ llvm::opt::ArgStringList &CC1Args) const {
+ // We need a detected GCC installation on Linux to provide libstdc++'s
+ // headers in odd Linuxish places.
+ if (!GCCInstallation.isValid())
+ return;
+
+ // Detect Debian g++-multiarch-incdir.diff.
+ StringRef TripleStr = GCCInstallation.getTriple().str();
+ StringRef DebianMultiarch =
+ GCCInstallation.getTriple().getArch() == llvm::Triple::x86
+ ? "i386-linux-gnu"
+ : TripleStr;
+
+ // Try generic GCC detection first.
+ if (Generic_GCC::addGCCLibStdCxxIncludePaths(DriverArgs, CC1Args,
+ DebianMultiarch))
+ return;
+
+ StringRef LibDir = GCCInstallation.getParentLibPath();
+ const Multilib &Multilib = GCCInstallation.getMultilib();
+ const GCCVersion &Version = GCCInstallation.getVersion();
+
+ const std::string LibStdCXXIncludePathCandidates[] = {
+ // Android standalone toolchain has C++ headers in yet another place.
+ LibDir.str() + "/../" + TripleStr.str() + "/include/c++/" + Version.Text,
+ // Freescale SDK C++ headers are directly in <sysroot>/usr/include/c++,
+ // without a subdirectory corresponding to the gcc version.
+ LibDir.str() + "/../include/c++",
+ // Cray's gcc installation puts headers under "g++" without a
+ // version suffix.
+ LibDir.str() + "/../include/g++",
+ };
+
+ for (const auto &IncludePath : LibStdCXXIncludePathCandidates) {
+ if (addLibStdCXXIncludePaths(IncludePath, TripleStr,
+ Multilib.includeSuffix(), DriverArgs, CC1Args))
+ break;
+ }
+}
+
+void Linux::AddCudaIncludeArgs(const ArgList &DriverArgs,
+ ArgStringList &CC1Args) const {
+ CudaInstallation.AddCudaIncludeArgs(DriverArgs, CC1Args);
+}
+
+void Linux::AddHIPIncludeArgs(const ArgList &DriverArgs,
+ ArgStringList &CC1Args) const {
+ RocmInstallation.AddHIPIncludeArgs(DriverArgs, CC1Args);
+}
+
+void Linux::AddHIPRuntimeLibArgs(const ArgList &Args,
+ ArgStringList &CmdArgs) const {
+ CmdArgs.push_back(
+ Args.MakeArgString(StringRef("-L") + RocmInstallation.getLibPath()));
+
+ if (Args.hasFlag(options::OPT_offload_add_rpath,
+ options::OPT_no_offload_add_rpath, false))
+ CmdArgs.append(
+ {"-rpath", Args.MakeArgString(RocmInstallation.getLibPath())});
+
+ CmdArgs.push_back("-lamdhip64");
+}
+
+void Linux::AddIAMCUIncludeArgs(const ArgList &DriverArgs,
+ ArgStringList &CC1Args) const {
+ if (GCCInstallation.isValid()) {
+ CC1Args.push_back("-isystem");
+ CC1Args.push_back(DriverArgs.MakeArgString(
+ GCCInstallation.getParentLibPath() + "/../" +
+ GCCInstallation.getTriple().str() + "/include"));
+ }
+}
+
+bool Linux::isPIEDefault(const llvm::opt::ArgList &Args) const {
+ return CLANG_DEFAULT_PIE_ON_LINUX || getTriple().isAndroid() ||
+ getTriple().isMusl() || getSanitizerArgs(Args).requiresPIE();
+}
+
+bool Linux::IsAArch64OutlineAtomicsDefault(const ArgList &Args) const {
+ // Outline atomics for AArch64 are supported by compiler-rt
+ // and libgcc since 9.3.1
+ assert(getTriple().isAArch64() && "expected AArch64 target!");
+ ToolChain::RuntimeLibType RtLib = GetRuntimeLibType(Args);
+ if (RtLib == ToolChain::RLT_CompilerRT)
+ return true;
+ assert(RtLib == ToolChain::RLT_Libgcc && "unexpected runtime library type!");
+ if (GCCInstallation.getVersion().isOlderThan(9, 3, 1))
+ return false;
+ return true;
+}
+
+bool Linux::IsMathErrnoDefault() const {
+ if (getTriple().isAndroid() || getTriple().isMusl())
+ return false;
+ return Generic_ELF::IsMathErrnoDefault();
+}
+
+SanitizerMask Linux::getSupportedSanitizers() const {
+ const bool IsX86 = getTriple().getArch() == llvm::Triple::x86;
+ const bool IsX86_64 = getTriple().getArch() == llvm::Triple::x86_64;
+ const bool IsMIPS = getTriple().isMIPS32();
+ const bool IsMIPS64 = getTriple().isMIPS64();
+ const bool IsPowerPC64 = getTriple().getArch() == llvm::Triple::ppc64 ||
+ getTriple().getArch() == llvm::Triple::ppc64le;
+ const bool IsAArch64 = getTriple().getArch() == llvm::Triple::aarch64 ||
+ getTriple().getArch() == llvm::Triple::aarch64_be;
+ const bool IsArmArch = getTriple().getArch() == llvm::Triple::arm ||
+ getTriple().getArch() == llvm::Triple::thumb ||
+ getTriple().getArch() == llvm::Triple::armeb ||
+ getTriple().getArch() == llvm::Triple::thumbeb;
+ const bool IsLoongArch64 = getTriple().getArch() == llvm::Triple::loongarch64;
+ const bool IsRISCV64 = getTriple().getArch() == llvm::Triple::riscv64;
+ const bool IsSystemZ = getTriple().getArch() == llvm::Triple::systemz;
+ const bool IsHexagon = getTriple().getArch() == llvm::Triple::hexagon;
+ SanitizerMask Res = ToolChain::getSupportedSanitizers();
+ Res |= SanitizerKind::Address;
+ Res |= SanitizerKind::PointerCompare;
+ Res |= SanitizerKind::PointerSubtract;
+ Res |= SanitizerKind::Fuzzer;
+ Res |= SanitizerKind::FuzzerNoLink;
+ Res |= SanitizerKind::KernelAddress;
+ Res |= SanitizerKind::Memory;
+ Res |= SanitizerKind::Vptr;
+ Res |= SanitizerKind::SafeStack;
+ if (IsX86_64 || IsMIPS64 || IsAArch64)
+ Res |= SanitizerKind::DataFlow;
+ if (IsX86_64 || IsMIPS64 || IsAArch64 || IsX86 || IsArmArch || IsPowerPC64 ||
+ IsRISCV64 || IsSystemZ || IsHexagon || IsLoongArch64)
+ Res |= SanitizerKind::Leak;
+ if (IsX86_64 || IsMIPS64 || IsAArch64 || IsPowerPC64 || IsSystemZ ||
+ IsLoongArch64)
+ Res |= SanitizerKind::Thread;
+ if (IsX86_64)
+ Res |= SanitizerKind::KernelMemory;
+ if (IsX86 || IsX86_64)
+ Res |= SanitizerKind::Function;
+ if (IsX86_64 || IsMIPS64 || IsAArch64 || IsX86 || IsMIPS || IsArmArch ||
+ IsPowerPC64 || IsHexagon || IsLoongArch64)
+ Res |= SanitizerKind::Scudo;
+ if (IsX86_64 || IsAArch64 || IsRISCV64) {
+ Res |= SanitizerKind::HWAddress;
+ }
+ if (IsX86_64 || IsAArch64) {
+ Res |= SanitizerKind::KernelHWAddress;
+ }
+ return Res;
+}
+
+void Linux::addProfileRTLibs(const llvm::opt::ArgList &Args,
+ llvm::opt::ArgStringList &CmdArgs) const {
+ // Add linker option -u__llvm_profile_runtime to cause runtime
+ // initialization module to be linked in.
+ if (needsProfileRT(Args))
+ CmdArgs.push_back(Args.MakeArgString(
+ Twine("-u", llvm::getInstrProfRuntimeHookVarName())));
+ ToolChain::addProfileRTLibs(Args, CmdArgs);
+}
+
+llvm::DenormalMode
+Linux::getDefaultDenormalModeForType(const llvm::opt::ArgList &DriverArgs,
+ const JobAction &JA,
+ const llvm::fltSemantics *FPType) const {
+ switch (getTriple().getArch()) {
+ case llvm::Triple::x86:
+ case llvm::Triple::x86_64: {
+ std::string Unused;
+ // DAZ and FTZ are turned on in crtfastmath.o
+ if (!DriverArgs.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles) &&
+ isFastMathRuntimeAvailable(DriverArgs, Unused))
+ return llvm::DenormalMode::getPreserveSign();
+ return llvm::DenormalMode::getIEEE();
+ }
+ default:
+ return llvm::DenormalMode::getIEEE();
+ }
+}
+
+void Linux::addExtraOpts(llvm::opt::ArgStringList &CmdArgs) const {
+ for (const auto &Opt : ExtraOpts)
+ CmdArgs.push_back(Opt.c_str());
+}
+
+const char *Linux::getDefaultLinker() const {
+ if (getTriple().isAndroid())
+ return "ld.lld";
+ return Generic_ELF::getDefaultLinker();
+}
Index: patches/README
===================================================================
--- patches/README (revision 39)
+++ patches/README (revision 40)
@@ -3,7 +3,7 @@
Patch order:
===========
- llvm-15.0.4-compiler-rt-p5600.patch
- llvm-15.0.4-compiler-rt-ppc64.patch
+ llvm-16.0.2-compiler-rt-p5600.patch
+ llvm-16.0.2-compiler-rt-ppc64.patch
* end */