svn commit: r193344 - in projects/clangbsd/contrib/llvm/tools/clang: lib/Driver lib/Frontend tools/clang-cc

Ed Schouten ed at FreeBSD.org
Tue Jun 2 20:40:24 UTC 2009


Author: ed
Date: Tue Jun  2 20:40:23 2009
New Revision: 193344
URL: http://svn.freebsd.org/changeset/base/193344

Log:
  Add local modifications to the Clang sources.
  
  - Custom include paths. Use proper relative pathnames, to prevent stock
    header files from being included during buildworld, etc.
  - Experimental ARM modifications. I haven't submitted these yet, because
    I haven't tested them enough.

Modified:
  projects/clangbsd/contrib/llvm/tools/clang/lib/Driver/Driver.cpp
  projects/clangbsd/contrib/llvm/tools/clang/lib/Driver/Tools.cpp
  projects/clangbsd/contrib/llvm/tools/clang/lib/Frontend/InitHeaderSearch.cpp
  projects/clangbsd/contrib/llvm/tools/clang/tools/clang-cc/clang-cc.cpp

Modified: projects/clangbsd/contrib/llvm/tools/clang/lib/Driver/Driver.cpp
==============================================================================
--- projects/clangbsd/contrib/llvm/tools/clang/lib/Driver/Driver.cpp	Tue Jun  2 20:35:15 2009	(r193343)
+++ projects/clangbsd/contrib/llvm/tools/clang/lib/Driver/Driver.cpp	Tue Jun  2 20:40:23 2009	(r193344)
@@ -53,6 +53,9 @@ Driver::Driver(const char *_Name, const 
   // Only use clang on i386 and x86_64 by default.
   CCCClangArchs.insert("i386");
   CCCClangArchs.insert("x86_64");
+
+  // XXX: Enable ARM
+  CCCClangArchs.insert("arm");
 }
 
 Driver::~Driver() {

Modified: projects/clangbsd/contrib/llvm/tools/clang/lib/Driver/Tools.cpp
==============================================================================
--- projects/clangbsd/contrib/llvm/tools/clang/lib/Driver/Tools.cpp	Tue Jun  2 20:35:15 2009	(r193343)
+++ projects/clangbsd/contrib/llvm/tools/clang/lib/Driver/Tools.cpp	Tue Jun  2 20:40:23 2009	(r193344)
@@ -352,7 +352,7 @@ void Clang::ConstructJob(Compilation &C,
       if (getToolChain().getArchName() == "x86_64")
         CmdArgs.push_back("--mcpu=x86-64");
       else if (getToolChain().getArchName() == "i386")
-        CmdArgs.push_back("--mcpu=pentium4");
+        CmdArgs.push_back("--mcpu=i486");
     }
   }
 
@@ -1734,6 +1734,8 @@ void freebsd::Assemble::ConstructJob(Com
   // instruct as in the base system to assemble 32-bit code.
   if (getToolChain().getArchName() == "i386")
     CmdArgs.push_back("--32");
+  else if (getToolChain().getArchName() == "arm")
+    CmdArgs.push_back("-mfpu=softvfp");
 
   Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA,
                        options::OPT_Xassembler);

Modified: projects/clangbsd/contrib/llvm/tools/clang/lib/Frontend/InitHeaderSearch.cpp
==============================================================================
--- projects/clangbsd/contrib/llvm/tools/clang/lib/Frontend/InitHeaderSearch.cpp	Tue Jun  2 20:35:15 2009	(r193343)
+++ projects/clangbsd/contrib/llvm/tools/clang/lib/Frontend/InitHeaderSearch.cpp	Tue Jun  2 20:40:23 2009	(r193344)
@@ -106,7 +106,11 @@ void InitHeaderSearch::AddDefaultSystemI
   // FIXME: temporary hack: hard-coded paths.
   // FIXME: get these from the target?
 
-#ifdef LLVM_ON_WIN32
+#if defined(LLVM_ON_FREEBSD)
+  if (Lang.CPlusPlus)
+    AddPath("/usr/include/c++/4.2", System, true, false, false);
+  AddPath("/usr/include", System, false, false, false);
+#elif defined(LLVM_ON_WIN32)
   if (Lang.CPlusPlus) {
     // Mingw32 GCC version 4
     AddPath("c:/mingw/lib/gcc/mingw32/4.3.0/include/c++",

Modified: projects/clangbsd/contrib/llvm/tools/clang/tools/clang-cc/clang-cc.cpp
==============================================================================
--- projects/clangbsd/contrib/llvm/tools/clang/tools/clang-cc/clang-cc.cpp	Tue Jun  2 20:35:15 2009	(r193343)
+++ projects/clangbsd/contrib/llvm/tools/clang/tools/clang-cc/clang-cc.cpp	Tue Jun  2 20:40:23 2009	(r193344)
@@ -1214,15 +1214,36 @@ void InitializeIncludePaths(const char *
     MainExecutablePath.eraseComponent();  // Remove /bin   from foo/bin
 
     // Get foo/lib/clang/<version>/include    
+#ifdef LLVM_ON_FREEBSD
+    MainExecutablePath.appendComponent("include");
+    MainExecutablePath.appendComponent("clang");
+    MainExecutablePath.appendComponent("1.0");
+#else
     MainExecutablePath.appendComponent("lib");
     MainExecutablePath.appendComponent("clang");
     MainExecutablePath.appendComponent(CLANG_VERSION_STRING);
     MainExecutablePath.appendComponent("include");
+#endif
     
     // We pass true to ignore sysroot so that we *always* look for clang headers
     // relative to our executable, never relative to -isysroot.
     Init.AddPath(MainExecutablePath.c_str(), InitHeaderSearch::System,
                  false, false, false, true /*ignore sysroot*/);
+
+#ifdef LLVM_ON_FREEBSD
+    if (!nostdinc) {
+      MainExecutablePath.eraseComponent();
+      MainExecutablePath.eraseComponent();
+      if (Lang.CPlusPlus) {
+        MainExecutablePath.appendComponent("c++");
+        MainExecutablePath.appendComponent("4.2");
+        Init.AddPath(MainExecutablePath.c_str(), InitHeaderSearch::System, true, false, false);
+        MainExecutablePath.eraseComponent();
+        MainExecutablePath.eraseComponent();
+      }
+      Init.AddPath(MainExecutablePath.c_str(), InitHeaderSearch::System, false, false, false);
+    }
+#endif
   }
   
   if (!nostdinc) 


More information about the svn-src-projects mailing list