summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorMikhail Glushenkov <foldr@codedgers.com>2008-05-06 16:34:12 +0000
committerMikhail Glushenkov <foldr@codedgers.com>2008-05-06 16:34:12 +0000
commitb90cd834ca5a849fcfcb6bbca5d38f73f5c37fcf (patch)
tree06d11382719346c723e1b8ec588232fd39bd34da /tools
parentc8d9fe6bf92ac5a7ee48c328cd412bf052e6b07b (diff)
downloadllvm-b90cd834ca5a849fcfcb6bbca5d38f73f5c37fcf.tar.gz
llvm-b90cd834ca5a849fcfcb6bbca5d38f73f5c37fcf.tar.bz2
llvm-b90cd834ca5a849fcfcb6bbca5d38f73f5c37fcf.tar.xz
Code reorg
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50722 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools')
-rw-r--r--tools/llvmc2/Action.cpp58
-rw-r--r--tools/llvmc2/Action.h36
-rw-r--r--tools/llvmc2/AutoGenerated.cpp (renamed from tools/llvmc2/Tools.cpp)14
-rw-r--r--tools/llvmc2/AutoGenerated.h (renamed from tools/llvmc2/Tools.h)18
-rw-r--r--tools/llvmc2/CompilationGraph.cpp (renamed from tools/llvmc2/Core.cpp)35
-rw-r--r--tools/llvmc2/CompilationGraph.h36
-rw-r--r--tools/llvmc2/Makefile6
-rw-r--r--tools/llvmc2/Tool.cpp21
-rw-r--r--tools/llvmc2/Tool.h (renamed from tools/llvmc2/Core.h)42
-rw-r--r--tools/llvmc2/Utility.cpp39
-rw-r--r--tools/llvmc2/Utility.h27
-rw-r--r--tools/llvmc2/llvmc.cpp (renamed from tools/llvmc2/llvmcc.cpp)11
12 files changed, 188 insertions, 155 deletions
diff --git a/tools/llvmc2/Action.cpp b/tools/llvmc2/Action.cpp
new file mode 100644
index 0000000000..82a1e0c4c9
--- /dev/null
+++ b/tools/llvmc2/Action.cpp
@@ -0,0 +1,58 @@
+//===--- Tools.h - The LLVM Compiler Driver ---------------------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open
+// Source License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// Action class - implementation and auxiliary functions.
+//
+//===----------------------------------------------------------------------===//
+
+#include "Action.h"
+
+#include "llvm/Support/CommandLine.h"
+#include "llvm/System/Program.h"
+
+#include <iostream>
+#include <stdexcept>
+
+using namespace llvm;
+
+extern cl::opt<bool> VerboseMode;
+
+namespace {
+ int ExecuteProgram(const std::string& name,
+ const std::vector<std::string>& args) {
+ sys::Path prog = sys::Program::FindProgramByName(name);
+
+ if (prog.isEmpty())
+ throw std::runtime_error("Can't find program '" + name + "'");
+ if (!prog.canExecute())
+ throw std::runtime_error("Program '" + name + "' is not executable.");
+
+ // Invoke the program
+ std::vector<const char*> argv((args.size()+2));
+ argv[0] = name.c_str();
+ for (unsigned i = 1; i <= args.size(); ++i)
+ argv[i] = args[i-1].c_str();
+ argv[args.size()+1] = 0; // null terminate list.
+
+ return sys::Program::ExecuteAndWait(prog, &argv[0]);
+ }
+
+ void print_string (const std::string& str) {
+ std::cerr << str << ' ';
+ }
+}
+
+int llvmcc::Action::Execute() {
+ if (VerboseMode) {
+ std::cerr << Command_ << " ";
+ std::for_each(Args_.begin(), Args_.end(), print_string);
+ std::cerr << '\n';
+ }
+ return ExecuteProgram(Command_, Args_);
+}
diff --git a/tools/llvmc2/Action.h b/tools/llvmc2/Action.h
new file mode 100644
index 0000000000..43495c463a
--- /dev/null
+++ b/tools/llvmc2/Action.h
@@ -0,0 +1,36 @@
+//===--- Tools.h - The LLVM Compiler Driver ---------------------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open
+// Source License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// Action - encapsulates a single shell command.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_TOOLS_LLVMC2_ACTION_H
+#define LLVM_TOOLS_LLVMC2_ACTION_H
+
+#include <string>
+#include <vector>
+
+namespace llvmcc {
+
+ class Action {
+ std::string Command_;
+ std::vector<std::string> Args_;
+ public:
+ Action (std::string const& C,
+ std::vector<std::string> const& A)
+ : Command_(C), Args_(A)
+ {}
+
+ int Execute();
+ };
+
+}
+
+#endif // LLVM_TOOLS_LLVMC2_ACTION_H
diff --git a/tools/llvmc2/Tools.cpp b/tools/llvmc2/AutoGenerated.cpp
index 7a9921c54b..327e8e758e 100644
--- a/tools/llvmc2/Tools.cpp
+++ b/tools/llvmc2/AutoGenerated.cpp
@@ -7,22 +7,20 @@
//
//===----------------------------------------------------------------------===//
//
-// Auto-generated tool descriptions.
+// Auto-generated tool descriptions - implementation.
//
//===----------------------------------------------------------------------===//
-#include "Tools.h"
-#include "Core.h"
+#include "AutoGenerated.h"
+#include "CompilationGraph.h"
+#include "Tool.h"
-#include "llvm/ADT/IntrusiveRefCntPtr.h"
#include "llvm/Support/CommandLine.h"
#include <stdexcept>
-#include <string>
-#include <vector>
using namespace llvm;
using namespace llvmcc;
-// Include the auto-generated file
-#include "Tools.inc"
+// The auto-generated file
+#include "AutoGenerated.inc"
diff --git a/tools/llvmc2/Tools.h b/tools/llvmc2/AutoGenerated.h
index ba8f06dbd6..686ae3feaf 100644
--- a/tools/llvmc2/Tools.h
+++ b/tools/llvmc2/AutoGenerated.h
@@ -1,4 +1,4 @@
-//===--- Tools.h - The LLVM Compiler Driver ---------------------*- C++ -*-===//
+//===--- Tools.cpp - The LLVM Compiler Driver -------------------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
@@ -7,20 +7,24 @@
//
//===----------------------------------------------------------------------===//
//
-// Auto-generated tool descriptions.
+// Auto-generated tool descriptions - public interface.
//
//===----------------------------------------------------------------------===//
-#ifndef LLVM_TOOLS_LLVMCC_TOOLS_H
-#define LLVM_TOOLS_LLVMCC_TOOLS_H
+#ifndef LLVM_TOOLS_LLVMC2_AUTOGENERATED_H
+#define LLVM_TOOLS_LLVMC2_AUTOGENERATED_H
-#include "Core.h"
+#include "llvm/ADT/StringMap.h"
+
+#include <string>
namespace llvmcc {
+ typedef llvm::StringMap<std::string> LanguageMap;
+ class CompilationGraph;
+
void PopulateLanguageMap(LanguageMap& language_map);
void PopulateCompilationGraph(CompilationGraph& tools);
-
}
-#endif //LLVM_TOOLS_LLVMCC_TOOLS_H
+#endif // LLVM_TOOLS_LLVMC2_AUTOGENERATED_H
diff --git a/tools/llvmc2/Core.cpp b/tools/llvmc2/CompilationGraph.cpp
index d08ee7c00f..36e5fc7c0a 100644
--- a/tools/llvmc2/Core.cpp
+++ b/tools/llvmc2/CompilationGraph.cpp
@@ -1,4 +1,4 @@
-//===--- Core.cpp - The LLVM Compiler Driver --------------------*- C++ -*-===//
+//===--- CompilationGraph.cpp - The LLVM Compiler Driver --------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
@@ -7,42 +7,21 @@
//
//===----------------------------------------------------------------------===//
//
-// Core driver abstractions.
+// Compilation graph - implementation.
//
//===----------------------------------------------------------------------===//
-#include "Core.h"
-#include "Utility.h"
+#include "CompilationGraph.h"
-#include "llvm/ADT/STLExtras.h"
-#include "llvm/ADT/StringExtras.h"
#include "llvm/Support/CommandLine.h"
+#include "llvm/ADT/STLExtras.h"
-#include <algorithm>
-#include <iostream>
#include <stdexcept>
using namespace llvm;
-using namespace llvmcc;
extern cl::list<std::string> InputFilenames;
extern cl::opt<std::string> OutputFilename;
-extern cl::opt<bool> VerboseMode;
-
-namespace {
- void print_string (const std::string& str) {
- std::cerr << str << ' ';
- }
-}
-
-int llvmcc::Action::Execute() {
- if (VerboseMode) {
- std::cerr << Command_ << " ";
- std::for_each(Args_.begin(), Args_.end(), print_string);
- std::cerr << '\n';
- }
- return ExecuteProgram(Command_, Args_);
-}
int llvmcc::CompilationGraph::Build (const sys::Path& tempDir) const {
sys::Path In(InputFilenames.at(0)), Out;
@@ -107,9 +86,3 @@ int llvmcc::CompilationGraph::Build (const sys::Path& tempDir) const {
return 0;
}
-
-void llvmcc::Tool::UnpackValues (const std::string& from,
- std::vector<std::string>& to) const {
- SplitString(from, to, ",");
-}
-
diff --git a/tools/llvmc2/CompilationGraph.h b/tools/llvmc2/CompilationGraph.h
new file mode 100644
index 0000000000..c34b58ff5e
--- /dev/null
+++ b/tools/llvmc2/CompilationGraph.h
@@ -0,0 +1,36 @@
+//===--- CompilationGraph.h - The LLVM Compiler Driver ----------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open
+// Source License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// Compilation graph - definition.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_TOOLS_LLVMC2_COMPILATION_GRAPH_H
+#define LLVM_TOOLS_LLVMC2_COMPILATION_GRAPH_H
+
+#include "AutoGenerated.h"
+#include "Tool.h"
+
+#include "llvm/ADT/StringMap.h"
+#include "llvm/System/Path.h"
+
+namespace llvmcc {
+
+ typedef std::vector<llvm::IntrusiveRefCntPtr<Tool> > ToolChain;
+ typedef llvm::StringMap<ToolChain> ToolChainMap;
+
+ struct CompilationGraph {
+ ToolChainMap ToolChains;
+ LanguageMap ExtsToLangs;
+
+ int Build(llvm::sys::Path const& tempDir) const;
+ };
+}
+
+#endif // LLVM_TOOLS_LLVMC2_COMPILATION_GRAPH_H
diff --git a/tools/llvmc2/Makefile b/tools/llvmc2/Makefile
index ab8ff478c9..8fe1e81871 100644
--- a/tools/llvmc2/Makefile
+++ b/tools/llvmc2/Makefile
@@ -8,7 +8,7 @@
##===----------------------------------------------------------------------===##
LEVEL = ../..
TOOLNAME = llvmc2
-BUILT_SOURCES = Tools.inc
+BUILT_SOURCES = AutoGenerated.inc
LINK_COMPONENTS = support system
REQUIRES_EH := 1
@@ -23,10 +23,10 @@ endif
# TOFIX: integrate this part into Makefile.rules?
# The degree of horrorshowness in that file is too much for me atm.
-$(ObjDir)/Tools.inc.tmp: $(TOOLS_SOURCE) $(ObjDir)/.dir
+$(ObjDir)/AutoGenerated.inc.tmp: $(TOOLS_SOURCE) $(ObjDir)/.dir
$(Echo) "Building LLVMCC configuration library with tblgen"
$(Verb) $(TableGen) -gen-llvmcc -o $(call SYSPATH, $@) $<
-Tools.inc : $(ObjDir)/Tools.inc.tmp
+AutoGenerated.inc : $(ObjDir)/AutoGenerated.inc.tmp
$(Verb) $(CMP) -s $@ $< || $(CP) $< $@
diff --git a/tools/llvmc2/Tool.cpp b/tools/llvmc2/Tool.cpp
new file mode 100644
index 0000000000..d0e703a9c1
--- /dev/null
+++ b/tools/llvmc2/Tool.cpp
@@ -0,0 +1,21 @@
+//===--- Tools.cpp - The LLVM Compiler Driver -------------------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open
+// Source License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// Tool abstract base class - implementation of the auxiliary functions.
+//
+//===----------------------------------------------------------------------===//
+
+#include "Tool.h"
+
+#include "llvm/ADT/StringExtras.h"
+
+void llvmcc::Tool::UnpackValues (const std::string& from,
+ std::vector<std::string>& to) {
+ llvm::SplitString(from, to, ",");
+}
diff --git a/tools/llvmc2/Core.h b/tools/llvmc2/Tool.h
index f82e0fa98e..b0cd237303 100644
--- a/tools/llvmc2/Core.h
+++ b/tools/llvmc2/Tool.h
@@ -1,4 +1,4 @@
-//===--- Core.h - The LLVM Compiler Driver ----------------------*- C++ -*-===//
+//===--- Tools.h - The LLVM Compiler Driver ---------------------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
@@ -7,41 +7,24 @@
//
//===----------------------------------------------------------------------===//
//
-// Core driver abstractions.
+// Tool abstract base class - an interface to tool descriptions.
//
//===----------------------------------------------------------------------===//
-#ifndef LLVM_TOOLS_LLVMCC_CORE_H
-#define LLVM_TOOLS_LLVMCC_CORE_H
+#ifndef LLVM_TOOLS_LLVMC2_TOOL_H
+#define LLVM_TOOLS_LLVMC2_TOOL_H
-#include "Utility.h"
+#include "Action.h"
#include "llvm/ADT/IntrusiveRefCntPtr.h"
-#include "llvm/ADT/StringMap.h"
#include "llvm/System/Path.h"
-#include <stdexcept>
#include <string>
#include <vector>
-// Core functionality
-
namespace llvmcc {
typedef std::vector<llvm::sys::Path> PathVector;
- typedef llvm::StringMap<std::string> LanguageMap;
-
- class Action {
- std::string Command_;
- std::vector<std::string> Args_;
- public:
- Action (std::string const& C,
- std::vector<std::string> const& A)
- : Command_(C), Args_(A)
- {}
-
- int Execute();
- };
class Tool : public llvm::RefCountedBaseVPTR<Tool> {
public:
@@ -62,22 +45,13 @@ namespace llvmcc {
// Helper function that is called by the auto-generated code
// Splits strings of the form ",-foo,-bar,-baz"
// TOFIX: find a better name
- void UnpackValues (std::string const& from,
- std::vector<std::string>& to) const;
+ static void UnpackValues (std::string const& from,
+ std::vector<std::string>& to);
virtual ~Tool()
{}
};
- typedef std::vector<llvm::IntrusiveRefCntPtr<Tool> > ToolChain;
- typedef llvm::StringMap<ToolChain> ToolChainMap;
-
- struct CompilationGraph {
- ToolChainMap ToolChains;
- LanguageMap ExtsToLangs;
-
- int Build(llvm::sys::Path const& tempDir) const;
- };
}
-#endif // LLVM_TOOLS_LLVMCC_CORE_H
+#endif //LLVM_TOOLS_LLVMC2_TOOL_H
diff --git a/tools/llvmc2/Utility.cpp b/tools/llvmc2/Utility.cpp
deleted file mode 100644
index c53578ad44..0000000000
--- a/tools/llvmc2/Utility.cpp
+++ /dev/null
@@ -1,39 +0,0 @@
-//===--- Utility.cpp - The LLVM Compiler Driver -----------------*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open
-// Source License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// Various helper and utility functions - implementation.
-//
-//===----------------------------------------------------------------------===//
-
-#include "Utility.h"
-
-#include "llvm/System/Program.h"
-
-#include <stdexcept>
-
-using namespace llvm;
-
-int llvmcc::ExecuteProgram(const std::string& name,
- const std::vector<std::string>& args) {
- sys::Path prog = sys::Program::FindProgramByName(name);
-
- if (prog.isEmpty())
- throw std::runtime_error("Can't find program '" + name + "'");
- if (!prog.canExecute())
- throw std::runtime_error("Program '" + name + "' is not executable.");
-
- // Invoke the program
- std::vector<const char*> argv((args.size()+2));
- argv[0] = name.c_str();
- for (unsigned i = 1; i <= args.size(); ++i)
- argv[i] = args[i-1].c_str();
- argv[args.size()+1] = 0; // null terminate list.
-
- return sys::Program::ExecuteAndWait(prog, &argv[0]);
-}
diff --git a/tools/llvmc2/Utility.h b/tools/llvmc2/Utility.h
deleted file mode 100644
index 3c985a49fc..0000000000
--- a/tools/llvmc2/Utility.h
+++ /dev/null
@@ -1,27 +0,0 @@
-//===--- Utility.h - The LLVM Compiler Driver -------------------*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open
-// Source License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// Various helper and utility functions.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_TOOLS_LLVMCC_UTILITY_H
-#define LLVM_TOOLS_LLVMCC_UTILITY_H
-
-#include <string>
-#include <vector>
-
-namespace llvmcc {
-
- int ExecuteProgram (const std::string& name,
- const std::vector<std::string>& arguments);
-
-}
-
-#endif // LLVM_TOOLS_LLVMCC_UTILITY_H
diff --git a/tools/llvmc2/llvmcc.cpp b/tools/llvmc2/llvmc.cpp
index c5edac9606..feed61f89f 100644
--- a/tools/llvmc2/llvmcc.cpp
+++ b/tools/llvmc2/llvmc.cpp
@@ -14,9 +14,8 @@
//
//===----------------------------------------------------------------------===//
-#include "Core.h"
-#include "Utility.h"
-#include "Tools.h"
+#include "CompilationGraph.h"
+#include "Tool.h"
#include "llvm/System/Path.h"
#include "llvm/Support/CommandLine.h"
@@ -25,11 +24,11 @@
#include <stdexcept>
#include <string>
-using namespace llvm;
+namespace cl = llvm::cl;
+namespace sys = llvm::sys;
using namespace llvmcc;
-// These variables are also used in Core.cpp,
-// so they should have external linkage.
+// External linkage here is intentional.
cl::list<std::string> InputFilenames(cl::Positional,
cl::desc("<input file>"), cl::OneOrMore);
cl::opt<std::string> OutputFilename("o", cl::desc("Output file name"),