10e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar//===--- DependencyOutputOptions.h ------------------------------*- C++ -*-===// 20e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar// 30e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar// The LLVM Compiler Infrastructure 40e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar// 50e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar// This file is distributed under the University of Illinois Open Source 60e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar// License. See LICENSE.TXT for details. 70e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar// 80e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar//===----------------------------------------------------------------------===// 90e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar 100e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar#ifndef LLVM_CLANG_FRONTEND_DEPENDENCYOUTPUTOPTIONS_H 110e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar#define LLVM_CLANG_FRONTEND_DEPENDENCYOUTPUTOPTIONS_H 120e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar 13a61066310d4544d6343154eb3f4448fec0b15420Douglas Gregor#include <string> 140e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar#include <vector> 150e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar 160e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbarnamespace clang { 170e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar 180e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar/// DependencyOutputOptions - Options for controlling the compiler dependency 190e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar/// file generation. 200e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbarclass DependencyOutputOptions { 210e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbarpublic: 220e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar unsigned IncludeSystemHeaders : 1; ///< Include system header dependencies. 23b34d69b9292534c1c574f168f0ac10aea652adcaDaniel Dunbar unsigned ShowHeaderIncludes : 1; ///< Show header inclusions (-H). 240e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar unsigned UsePhonyTargets : 1; ///< Include phony targets for each 250e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar /// dependency, which can avoid some 'make' 260e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar /// problems. 27bb52786da8d055568eef6e5694288c1258bc8c2aPeter Collingbourne unsigned AddMissingHeaderDeps : 1; ///< Add missing headers to dependency list 28708002ede3938256a6223d153a0c040f7a40f5ccHans Wennborg unsigned PrintShowIncludes : 1; ///< Print cl.exe style /showIncludes info. 29651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines unsigned IncludeModuleFiles : 1; ///< Include module file dependencies. 30c69a181049ab52da29f8f69316a34c90c3ea3b8eDouglas Gregor 31b17cc9e904c277b97cc4d57227122acd8d46ed36Nick Lewycky /// The file to write dependency output to. 320e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar std::string OutputFile; 330e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar 34b34d69b9292534c1c574f168f0ac10aea652adcaDaniel Dunbar /// The file to write header include output to. This is orthogonal to 35b34d69b9292534c1c574f168f0ac10aea652adcaDaniel Dunbar /// ShowHeaderIncludes (-H) and will include headers mentioned in the 36b34d69b9292534c1c574f168f0ac10aea652adcaDaniel Dunbar /// predefines buffer. If the output file is "-", output will be sent to 37b34d69b9292534c1c574f168f0ac10aea652adcaDaniel Dunbar /// stderr. 38b34d69b9292534c1c574f168f0ac10aea652adcaDaniel Dunbar std::string HeaderIncludeOutputFile; 39b34d69b9292534c1c574f168f0ac10aea652adcaDaniel Dunbar 400e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar /// A list of names to use as the targets in the dependency file; this list 410e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar /// must contain at least one entry. 420e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar std::vector<std::string> Targets; 430e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar 44c69a181049ab52da29f8f69316a34c90c3ea3b8eDouglas Gregor /// \brief The file to write GraphViz-formatted header dependencies to. 45773303a505c23d73da624f1e6abcf41a393dad2bDouglas Gregor std::string DOTOutputFile; 46ef8225444452a1486bd721f3285301fe84643b00Stephen Hines 47ef8225444452a1486bd721f3285301fe84643b00Stephen Hines /// \brief The directory to copy module dependencies to when collecting them. 48ef8225444452a1486bd721f3285301fe84643b00Stephen Hines std::string ModuleDependencyOutputDir; 49ef8225444452a1486bd721f3285301fe84643b00Stephen Hines 500e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbarpublic: 510e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar DependencyOutputOptions() { 520e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar IncludeSystemHeaders = 0; 53eef63e0997e0f6d6436736ea919b851cfe34955aDaniel Dunbar ShowHeaderIncludes = 0; 540e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar UsePhonyTargets = 0; 55bb52786da8d055568eef6e5694288c1258bc8c2aPeter Collingbourne AddMissingHeaderDeps = 0; 56708002ede3938256a6223d153a0c040f7a40f5ccHans Wennborg PrintShowIncludes = 0; 57651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines IncludeModuleFiles = 0; 580e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar } 590e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar}; 600e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar 610e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar} // end namespace clang 620e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar 630e0bae8139e25de81f18b6a519783a06f7ba1e25Daniel Dunbar#endif 64