]> granicus.if.org Git - clang/commitdiff
Driver: Add support for a CLANGXX_IS_PRODUCTION build variable, which enable
authorDaniel Dunbar <daniel@zuster.org>
Thu, 1 Apr 2010 18:21:41 +0000 (18:21 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Thu, 1 Apr 2010 18:21:41 +0000 (18:21 +0000)
Clang++ support, even in "Production" mode (for testing purposes).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100119 91177308-0d34-0410-b5e6-96231b3b80d8

examples/clang-interpreter/main.cpp
include/clang/Driver/Driver.h
lib/Driver/Driver.cpp
lib/Frontend/ASTUnit.cpp
tools/driver/Makefile
tools/driver/driver.cpp

index b739b7156bb1e35f098fc7743f659f701e60299f..4eaa1dddc5e48ca9507eb7af57532147ecd4c6e5 100644 (file)
@@ -71,7 +71,8 @@ int main(int argc, const char **argv, char * const *envp) {
   Diagnostic Diags(&DiagClient);
   Driver TheDriver(Path.getBasename(), Path.getDirname(),
                    llvm::sys::getHostTriple(),
-                   "a.out", /*IsProduction=*/false, Diags);
+                   "a.out", /*IsProduction=*/false, /*CXXIsProduction=*/false,
+                   Diags);
   TheDriver.setTitle("clang interpreter");
 
   // FIXME: This is a hack to try to force the driver to do something we can
index 37575fc303fc26d710a4be4d14ad0cd2e632fd74..90c3a0dcdc1897d1022862c5d7f5b3ee832886e9 100644 (file)
@@ -139,7 +139,8 @@ public:
   Driver(llvm::StringRef _Name, llvm::StringRef _Dir,
          llvm::StringRef _DefaultHostTriple,
          llvm::StringRef _DefaultImageName,
-         bool IsProduction, Diagnostic &_Diags);
+         bool IsProduction, bool CXXIsProduction,
+         Diagnostic &_Diags);
   ~Driver();
 
   /// @name Accessors
index aa55d3988664af36cd7cf0d95c3cabbf0b2ce9d4..921147f7a09b9afc46593444ff079209fbc09954 100644 (file)
@@ -45,7 +45,8 @@ using namespace clang;
 Driver::Driver(llvm::StringRef _Name, llvm::StringRef _Dir,
                llvm::StringRef _DefaultHostTriple,
                llvm::StringRef _DefaultImageName,
-               bool IsProduction, Diagnostic &_Diags)
+               bool IsProduction, bool CXXIsProduction,
+               Diagnostic &_Diags)
   : Opts(createDriverOptTable()), Diags(_Diags),
     Name(_Name), Dir(_Dir), DefaultHostTriple(_DefaultHostTriple),
     DefaultImageName(_DefaultImageName),
@@ -66,7 +67,8 @@ Driver::Driver(llvm::StringRef _Name, llvm::StringRef _Dir,
     CCCClangArchs.insert(llvm::Triple::x86_64);
     CCCClangArchs.insert(llvm::Triple::arm);
 
-    CCCUseClangCXX = false;
+    if (!CXXIsProduction)
+      CCCUseClangCXX = false;
   }
 
   // Compute the path to the resource directory.
index 935c415243702871ea5df18ccc9c7aecb2bc994c..7243f709cc65ed2b2fc290bef912b3f21590e6bf 100644 (file)
@@ -378,7 +378,7 @@ ASTUnit *ASTUnit::LoadFromCommandLine(const char **ArgBegin,
 
   // FIXME: We shouldn't have to pass in the path info.
   driver::Driver TheDriver("clang", "/", llvm::sys::getHostTriple(),
-                           "a.out", false, Diags);
+                           "a.out", false, false, Diags);
 
   // Don't check that inputs exist, they have been remapped.
   TheDriver.setCheckInputsExist(false);
index 6434cb4ef551b3a3b8b788aae4ede8ee464c3a30..f88d229d00c1d1fb087cd632176751a5ac54a673 100644 (file)
@@ -11,6 +11,10 @@ LEVEL = ../../../..
 TOOLNAME = clang
 ifndef CLANG_IS_PRODUCTION
 TOOLALIAS = clang++
+else
+  ifdef CLANGXX_IS_PRODUCTION
+    TOOLALIAS = clang++
+  endif
 endif
 CPP.Flags += -I$(PROJ_SRC_DIR)/../../include -I$(PROJ_OBJ_DIR)/../../include
 
@@ -33,4 +37,6 @@ include $(LLVM_SRC_ROOT)/Makefile.rules
 ifdef CLANG_IS_PRODUCTION
 CPP.Defines += -DCLANG_IS_PRODUCTION
 endif
-
+ifdef CLANGXX_IS_PRODUCTION
+CPP.Defines += -DCLANGXX_IS_PRODUCTION
+endif
index daab519e95fbe1c54aa2af6e79448ac69a5f9778..3f1cca1f887a2cb52e26eed0948a1867a0a7c193 100644 (file)
@@ -197,12 +197,19 @@ int main(int argc, const char **argv) {
 
 #ifdef CLANG_IS_PRODUCTION
   const bool IsProduction = true;
+#  ifdef CLANGXX_IS_PRODUCTION
+  const bool CXXIsProduction = true;
+#  else
+  const bool CXXIsProduction = false;
+#  endif
 #else
   const bool IsProduction = false;
+  const bool CXXIsProduction = false;
 #endif
   Driver TheDriver(Path.getBasename(), Path.getDirname(),
                    llvm::sys::getHostTriple(),
-                   "a.out", IsProduction, Diags);
+                   "a.out", IsProduction, CXXIsProduction,
+                   Diags);
 
   // Check for ".*++" or ".*++-[^-]*" to determine if we are a C++
   // compiler. This matches things like "c++", "clang++", and "clang++-1.1".