1//===--- DarwinSDKInfo.h - SDK Information parser for darwin ----*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef LLVM_CLANG_DRIVER_DARWIN_SDK_INFO_H
10#define LLVM_CLANG_DRIVER_DARWIN_SDK_INFO_H
11
12#include "clang/Basic/LLVM.h"
13#include "llvm/Support/Error.h"
14#include "llvm/Support/VersionTuple.h"
15#include "llvm/Support/VirtualFileSystem.h"
16
17namespace clang {
18namespace driver {
19
20/// The information about the darwin SDK that was used during this compilation.
21class DarwinSDKInfo {
22public:
23  DarwinSDKInfo(llvm::VersionTuple Version) : Version(Version) {}
24
25  const llvm::VersionTuple &getVersion() const { return Version; }
26
27private:
28  llvm::VersionTuple Version;
29};
30
31/// Parse the SDK information from the SDKSettings.json file.
32///
33/// \returns an error if the SDKSettings.json file is invalid, None if the
34/// SDK has no SDKSettings.json, or a valid \c DarwinSDKInfo otherwise.
35Expected<Optional<DarwinSDKInfo>> parseDarwinSDKInfo(llvm::vfs::FileSystem &VFS,
36                                                     StringRef SDKRootPath);
37
38} // end namespace driver
39} // end namespace clang
40
41#endif // LLVM_CLANG_DRIVER_DARWIN_SDK_INFO_H
42