blob: ef24fc6b3e7ed4e67a5bdded6eb003a0bd4455b5 [file] [log] [blame]
John Thompson5ab4f112013-10-15 13:52:33 +00001//===--- Modularize.h - Common definitions for Modularize -*- C++ -*-----===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===--------------------------------------------------------------------===//
9///
10/// \file
11/// \brief Common definitions for Modularize.
12///
13//===--------------------------------------------------------------------===//
14
15#ifndef MODULARIZE_H
16#define MODULARIZE_H
17
18#include "llvm/ADT/ArrayRef.h"
19#include "llvm/ADT/SmallString.h"
20#include "llvm/ADT/SmallVector.h"
21#include "llvm/ADT/StringMap.h"
22#include "llvm/ADT/StringRef.h"
23#include <string>
24#include <vector>
25
26// Save the program name for error messages.
27extern const char *Argv0;
28// Save the command line for comments.
29extern std::string CommandLine;
30
31// Dependency types.
32typedef llvm::SmallVector<std::string, 4> DependentsVector;
33typedef llvm::StringMap<DependentsVector> DependencyMap;
34
35// Global function declarations.
36
37/// Create the module map file.
38/// \param ModuleMapPath The path to the module map file to be generated.
39/// \param HeaderFileNames The list of header files, absolute native paths.
40/// \param Dependencies Map of headers that depend on other headers.
41/// \param HeaderPrefix Tells the code where the headers are, if they
42/// aren's in the current directory, allowing the generator to strip
43/// the leading, non-relative beginning of the header paths.
44/// \brief RootModuleName If not empty, specifies that a root module
45/// should be created with this name.
46/// \returns True if successful.
47bool createModuleMap(llvm::StringRef ModuleMapPath,
48 llvm::ArrayRef<std::string> HeaderFileNames,
49 DependencyMap &Dependencies, llvm::StringRef HeaderPrefix,
50 llvm::StringRef RootModuleName);
51
52#endif // MODULARIZE_H