@@ -604,172 +604,11 @@ void Linux::AddClangSystemIncludeArgs(const ArgList &DriverArgs,
604
604
return ;
605
605
}
606
606
607
- // Implement generic Debian multiarch support.
608
- const StringRef X86_64MultiarchIncludeDirs[] = {
609
- " /usr/include/x86_64-linux-gnu" ,
610
-
611
- // FIXME: These are older forms of multiarch. It's not clear that they're
612
- // in use in any released version of Debian, so we should consider
613
- // removing them.
614
- " /usr/include/i686-linux-gnu/64" , " /usr/include/i486-linux-gnu/64" };
615
- const StringRef X86MultiarchIncludeDirs[] = {
616
- " /usr/include/i386-linux-gnu" ,
617
-
618
- // FIXME: These are older forms of multiarch. It's not clear that they're
619
- // in use in any released version of Debian, so we should consider
620
- // removing them.
621
- " /usr/include/x86_64-linux-gnu/32" , " /usr/include/i686-linux-gnu" ,
622
- " /usr/include/i486-linux-gnu" };
623
- const StringRef AArch64MultiarchIncludeDirs[] = {
624
- " /usr/include/aarch64-linux-gnu" };
625
- const StringRef ARMMultiarchIncludeDirs[] = {
626
- " /usr/include/arm-linux-gnueabi" };
627
- const StringRef ARMHFMultiarchIncludeDirs[] = {
628
- " /usr/include/arm-linux-gnueabihf" };
629
- const StringRef ARMEBMultiarchIncludeDirs[] = {
630
- " /usr/include/armeb-linux-gnueabi" };
631
- const StringRef ARMEBHFMultiarchIncludeDirs[] = {
632
- " /usr/include/armeb-linux-gnueabihf" };
633
- const StringRef M68kMultiarchIncludeDirs[] = {" /usr/include/m68k-linux-gnu" };
634
- const StringRef MIPSMultiarchIncludeDirs[] = {" /usr/include/mips-linux-gnu" };
635
- const StringRef MIPSELMultiarchIncludeDirs[] = {
636
- " /usr/include/mipsel-linux-gnu" };
637
- const StringRef MIPS64MultiarchIncludeDirs[] = {
638
- " /usr/include/mips64-linux-gnuabi64" };
639
- const StringRef MIPS64ELMultiarchIncludeDirs[] = {
640
- " /usr/include/mips64el-linux-gnuabi64" };
641
- const StringRef MIPSN32MultiarchIncludeDirs[] = {
642
- " /usr/include/mips64-linux-gnuabin32" };
643
- const StringRef MIPSN32ELMultiarchIncludeDirs[] = {
644
- " /usr/include/mips64el-linux-gnuabin32" };
645
- const StringRef MIPSR6MultiarchIncludeDirs[] = {
646
- " /usr/include/mipsisa32-linux-gnu" };
647
- const StringRef MIPSR6ELMultiarchIncludeDirs[] = {
648
- " /usr/include/mipsisa32r6el-linux-gnu" };
649
- const StringRef MIPS64R6MultiarchIncludeDirs[] = {
650
- " /usr/include/mipsisa64r6-linux-gnuabi64" };
651
- const StringRef MIPS64R6ELMultiarchIncludeDirs[] = {
652
- " /usr/include/mipsisa64r6el-linux-gnuabi64" };
653
- const StringRef MIPSN32R6MultiarchIncludeDirs[] = {
654
- " /usr/include/mipsisa64r6-linux-gnuabin32" };
655
- const StringRef MIPSN32R6ELMultiarchIncludeDirs[] = {
656
- " /usr/include/mipsisa64r6el-linux-gnuabin32" };
657
- const StringRef PPCMultiarchIncludeDirs[] = {
658
- " /usr/include/powerpc-linux-gnu" ,
659
- " /usr/include/powerpc-linux-gnuspe" };
660
- const StringRef PPCLEMultiarchIncludeDirs[] = {
661
- " /usr/include/powerpcle-linux-gnu" };
662
- const StringRef PPC64MultiarchIncludeDirs[] = {
663
- " /usr/include/powerpc64-linux-gnu" };
664
- const StringRef PPC64LEMultiarchIncludeDirs[] = {
665
- " /usr/include/powerpc64le-linux-gnu" };
666
- const StringRef SparcMultiarchIncludeDirs[] = {
667
- " /usr/include/sparc-linux-gnu" };
668
- const StringRef Sparc64MultiarchIncludeDirs[] = {
669
- " /usr/include/sparc64-linux-gnu" };
670
- const StringRef SYSTEMZMultiarchIncludeDirs[] = {
671
- " /usr/include/s390x-linux-gnu" };
672
- ArrayRef<StringRef> MultiarchIncludeDirs;
673
- switch (getTriple ().getArch ()) {
674
- case llvm::Triple::x86_64:
675
- MultiarchIncludeDirs = X86_64MultiarchIncludeDirs;
676
- break ;
677
- case llvm::Triple::x86:
678
- MultiarchIncludeDirs = X86MultiarchIncludeDirs;
679
- break ;
680
- case llvm::Triple::aarch64:
681
- case llvm::Triple::aarch64_be:
682
- MultiarchIncludeDirs = AArch64MultiarchIncludeDirs;
683
- break ;
684
- case llvm::Triple::arm:
685
- case llvm::Triple::thumb:
686
- if (getTriple ().getEnvironment () == llvm::Triple::GNUEABIHF)
687
- MultiarchIncludeDirs = ARMHFMultiarchIncludeDirs;
688
- else
689
- MultiarchIncludeDirs = ARMMultiarchIncludeDirs;
690
- break ;
691
- case llvm::Triple::armeb:
692
- case llvm::Triple::thumbeb:
693
- if (getTriple ().getEnvironment () == llvm::Triple::GNUEABIHF)
694
- MultiarchIncludeDirs = ARMEBHFMultiarchIncludeDirs;
695
- else
696
- MultiarchIncludeDirs = ARMEBMultiarchIncludeDirs;
697
- break ;
698
- case llvm::Triple::m68k:
699
- MultiarchIncludeDirs = M68kMultiarchIncludeDirs;
700
- break ;
701
- case llvm::Triple::mips:
702
- if (getTriple ().getSubArch () == llvm::Triple::MipsSubArch_r6)
703
- MultiarchIncludeDirs = MIPSR6MultiarchIncludeDirs;
704
- else
705
- MultiarchIncludeDirs = MIPSMultiarchIncludeDirs;
706
- break ;
707
- case llvm::Triple::mipsel:
708
- if (getTriple ().getSubArch () == llvm::Triple::MipsSubArch_r6)
709
- MultiarchIncludeDirs = MIPSR6ELMultiarchIncludeDirs;
710
- else
711
- MultiarchIncludeDirs = MIPSELMultiarchIncludeDirs;
712
- break ;
713
- case llvm::Triple::mips64:
714
- if (getTriple ().getSubArch () == llvm::Triple::MipsSubArch_r6)
715
- if (getTriple ().getEnvironment () == llvm::Triple::GNUABIN32)
716
- MultiarchIncludeDirs = MIPSN32R6MultiarchIncludeDirs;
717
- else
718
- MultiarchIncludeDirs = MIPS64R6MultiarchIncludeDirs;
719
- else if (getTriple ().getEnvironment () == llvm::Triple::GNUABIN32)
720
- MultiarchIncludeDirs = MIPSN32MultiarchIncludeDirs;
721
- else
722
- MultiarchIncludeDirs = MIPS64MultiarchIncludeDirs;
723
- break ;
724
- case llvm::Triple::mips64el:
725
- if (getTriple ().getSubArch () == llvm::Triple::MipsSubArch_r6)
726
- if (getTriple ().getEnvironment () == llvm::Triple::GNUABIN32)
727
- MultiarchIncludeDirs = MIPSN32R6ELMultiarchIncludeDirs;
728
- else
729
- MultiarchIncludeDirs = MIPS64R6ELMultiarchIncludeDirs;
730
- else if (getTriple ().getEnvironment () == llvm::Triple::GNUABIN32)
731
- MultiarchIncludeDirs = MIPSN32ELMultiarchIncludeDirs;
732
- else
733
- MultiarchIncludeDirs = MIPS64ELMultiarchIncludeDirs;
734
- break ;
735
- case llvm::Triple::ppc:
736
- MultiarchIncludeDirs = PPCMultiarchIncludeDirs;
737
- break ;
738
- case llvm::Triple::ppcle:
739
- MultiarchIncludeDirs = PPCLEMultiarchIncludeDirs;
740
- break ;
741
- case llvm::Triple::ppc64:
742
- MultiarchIncludeDirs = PPC64MultiarchIncludeDirs;
743
- break ;
744
- case llvm::Triple::ppc64le:
745
- MultiarchIncludeDirs = PPC64LEMultiarchIncludeDirs;
746
- break ;
747
- case llvm::Triple::sparc:
748
- MultiarchIncludeDirs = SparcMultiarchIncludeDirs;
749
- break ;
750
- case llvm::Triple::sparcv9:
751
- MultiarchIncludeDirs = Sparc64MultiarchIncludeDirs;
752
- break ;
753
- case llvm::Triple::systemz:
754
- MultiarchIncludeDirs = SYSTEMZMultiarchIncludeDirs;
755
- break ;
756
- default :
757
- break ;
758
- }
759
-
760
- const std::string AndroidMultiarchIncludeDir =
761
- std::string (" /usr/include/" ) +
762
- getMultiarchTriple (D, getTriple (), SysRoot);
763
- const StringRef AndroidMultiarchIncludeDirs[] = {AndroidMultiarchIncludeDir};
764
- if (getTriple ().isAndroid ())
765
- MultiarchIncludeDirs = AndroidMultiarchIncludeDirs;
766
-
767
- for (StringRef Dir : MultiarchIncludeDirs) {
768
- if (D.getVFS ().exists (SysRoot + Dir)) {
769
- addExternCSystemInclude (DriverArgs, CC1Args, SysRoot + Dir);
770
- break ;
771
- }
772
- }
607
+ // On Android and Debian, add /usr/include/$triple if exists.
608
+ std::string MultiarchIncludeDir = getMultiarchTriple (D, getTriple (), SysRoot);
609
+ if (!MultiarchIncludeDir.empty () &&
610
+ D.getVFS ().exists (SysRoot + " /usr/include/" + MultiarchIncludeDir))
611
+ addExternCSystemInclude (DriverArgs, CC1Args, SysRoot + " /usr/include/" + MultiarchIncludeDir);
773
612
774
613
if (getTriple ().getOS () == llvm::Triple::RTEMS)
775
614
return ;
0 commit comments