alicelinux

A lightweight musl + clang/llvm + libressl + busybox distro
git clone https://codeberg.org/emmett1/alicelinux
Log | Files | Refs | README | LICENSE

musl-targets.patch (5560B)


      1 diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp
      2 index 543f396..24ee06b 100644
      3 --- a/clang/lib/Driver/ToolChains/Gnu.cpp
      4 +++ b/clang/lib/Driver/ToolChains/Gnu.cpp
      5 @@ -2545,8 +2545,7 @@ void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes(
      6        // 64-bit compiler which defaults to "-m32", hence "powerpc64-suse-linux".
      7        "powerpc64-suse-linux", "powerpc-montavista-linuxspe"};
      8    static const char *const PPCLELibDirs[] = {"/lib32", "/lib"};
      9 -  static const char *const PPCLETriples[] = {"powerpcle-unknown-linux-gnu",
     10 -                                             "powerpcle-linux-musl"};
     11 +  static const char *const PPCLETriples[] = {"powerpcle-unknown-linux-gnu"};
     12  
     13    static const char *const PPC64LibDirs[] = {"/lib64", "/lib"};
     14    static const char *const PPC64Triples[] = {"powerpc64-unknown-linux-gnu",
     15 @@ -2619,6 +2618,95 @@ void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes(
     16      return;
     17    }
     18  
     19 +  if (TargetTriple.isMusl()) {
     20 +    static const char *const AArch64MuslTriples[] = {"aarch64-linux-musl"};
     21 +    static const char *const ARMHFMuslTriples[] = {
     22 +        "arm-linux-musleabihf", "armv7l-linux-musleabihf"
     23 +    };
     24 +    static const char *const ARMMuslTriples[] = {"arm-linux-musleabi"};
     25 +    static const char *const X86_64MuslTriples[] = {
     26 +        "x86_64-linux-musl",
     27 +        "x86_64-pc-linux-musl", "x86_64-unknown-linux-musl"
     28 +    };
     29 +    static const char *const X86MuslTriples[] = {"i686-linux-musl"};
     30 +    static const char *const MIPSMuslTriples[] = {
     31 +        "mips-linux-musl", "mipsel-linux-musl",
     32 +        "mipsel-linux-muslhf", "mips-linux-muslhf"
     33 +    };
     34 +    static const char *const PPCMuslTriples[] = {"powerpc-linux-musl"};
     35 +    static const char *const PPCLEMuslTriples[] = {"powerpcle-linux-musl"};
     36 +    static const char *const PPC64MuslTriples[] = {"powerpc64-linux-musl"};
     37 +    static const char *const PPC64LEMuslTriples[] = {"powerpc64le-linux-musl"};
     38 +    static const char *const RISCV64MuslTriples[] = {"riscv64-linux-musl"};
     39 +
     40 +    switch (TargetTriple.getArch()) {
     41 +    case llvm::Triple::aarch64:
     42 +      LibDirs.append(begin(AArch64LibDirs), end(AArch64LibDirs));
     43 +      TripleAliases.append(begin(AArch64MuslTriples), end(AArch64MuslTriples));
     44 +      BiarchLibDirs.append(begin(AArch64LibDirs), end(AArch64LibDirs));
     45 +      BiarchTripleAliases.append(begin(AArch64MuslTriples), end(AArch64MuslTriples));
     46 +      break;
     47 +    case llvm::Triple::arm:
     48 +      LibDirs.append(begin(ARMLibDirs), end(ARMLibDirs));
     49 +      if (TargetTriple.getEnvironment() == llvm::Triple::MuslEABIHF) {
     50 +        TripleAliases.append(begin(ARMHFMuslTriples), end(ARMHFMuslTriples));
     51 +      } else {
     52 +        TripleAliases.append(begin(ARMMuslTriples), end(ARMMuslTriples));
     53 +      }
     54 +      break;
     55 +    case llvm::Triple::x86_64:
     56 +      LibDirs.append(begin(X86_64LibDirs), end(X86_64LibDirs));
     57 +      TripleAliases.append(begin(X86_64MuslTriples), end(X86_64MuslTriples));
     58 +      BiarchLibDirs.append(begin(X86LibDirs), end(X86LibDirs));
     59 +      BiarchTripleAliases.append(begin(X86MuslTriples), end(X86MuslTriples));
     60 +      break;
     61 +    case llvm::Triple::x86:
     62 +      LibDirs.append(begin(X86LibDirs), end(X86LibDirs));
     63 +      TripleAliases.append(begin(X86MuslTriples), end(X86MuslTriples));
     64 +      BiarchLibDirs.append(begin(X86_64LibDirs), end(X86_64LibDirs));
     65 +      BiarchTripleAliases.append(begin(X86_64MuslTriples), end(X86_64MuslTriples));
     66 +      break;
     67 +    case llvm::Triple::mips:
     68 +      LibDirs.append(begin(MIPSLibDirs), end(MIPSLibDirs));
     69 +      TripleAliases.append(begin(MIPSMuslTriples), end(MIPSMuslTriples));
     70 +      break;
     71 +    case llvm::Triple::ppc:
     72 +      LibDirs.append(begin(PPCLibDirs), end(PPCLibDirs));
     73 +      TripleAliases.append(begin(PPCMuslTriples), end(PPCMuslTriples));
     74 +      BiarchLibDirs.append(begin(PPC64LibDirs), end(PPC64LibDirs));
     75 +      BiarchTripleAliases.append(begin(PPC64MuslTriples), end(PPC64MuslTriples));
     76 +      break;
     77 +    case llvm::Triple::ppcle:
     78 +      LibDirs.append(begin(PPCLELibDirs), end(PPCLELibDirs));
     79 +      TripleAliases.append(begin(PPCLEMuslTriples), end(PPCLEMuslTriples));
     80 +      BiarchLibDirs.append(begin(PPC64LELibDirs), end(PPC64LELibDirs));
     81 +      BiarchTripleAliases.append(begin(PPC64LEMuslTriples), end(PPC64LEMuslTriples));
     82 +      break;
     83 +    case llvm::Triple::ppc64:
     84 +      LibDirs.append(begin(PPC64LibDirs), end(PPC64LibDirs));
     85 +      TripleAliases.append(begin(PPC64MuslTriples), end(PPC64MuslTriples));
     86 +      BiarchLibDirs.append(begin(PPCLibDirs), end(PPCLibDirs));
     87 +      BiarchTripleAliases.append(begin(PPCMuslTriples), end(PPCMuslTriples));
     88 +      break;
     89 +    case llvm::Triple::ppc64le:
     90 +      LibDirs.append(begin(PPC64LELibDirs), end(PPC64LELibDirs));
     91 +      TripleAliases.append(begin(PPC64LEMuslTriples), end(PPC64LEMuslTriples));
     92 +      BiarchLibDirs.append(begin(PPCLELibDirs), end(PPCLELibDirs));
     93 +      BiarchTripleAliases.append(begin(PPCLEMuslTriples), end(PPCLEMuslTriples));
     94 +      break;
     95 +    case llvm::Triple::riscv64:
     96 +      LibDirs.append(begin(RISCV64LibDirs), end(RISCV64LibDirs));
     97 +      TripleAliases.append(begin(RISCV64MuslTriples), end(RISCV64MuslTriples));
     98 +      break;
     99 +    default:
    100 +      break;
    101 +    }
    102 +    TripleAliases.push_back(TargetTriple.str());
    103 +    if (TargetTriple.str() != BiarchTriple.str())
    104 +      BiarchTripleAliases.push_back(BiarchTriple.str());
    105 +    return;
    106 +  }
    107 +
    108    // Android targets should not use GNU/Linux tools or libraries.
    109    if (TargetTriple.isAndroid()) {
    110      static const char *const AArch64AndroidTriples[] = {