1 | //===- ArchiveWriter.h - ar archive file format writer ----------*- 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 | // Declares the writeArchive function for writing an archive file. |
11 | // |
12 | //===----------------------------------------------------------------------===// |
13 | |
14 | #ifndef LLVM_OBJECT_ARCHIVEWRITER_H |
15 | #define LLVM_OBJECT_ARCHIVEWRITER_H |
16 | |
17 | #include "llvm/ADT/StringRef.h" |
18 | #include "llvm/Object/Archive.h" |
19 | #include "llvm/Support/Error.h" |
20 | #include "llvm/Support/FileSystem.h" |
21 | |
22 | namespace llvm { |
23 | |
24 | struct NewArchiveMember { |
25 | std::unique_ptr<MemoryBuffer> Buf; |
26 | StringRef MemberName; |
27 | sys::TimePoint<std::chrono::seconds> ModTime; |
28 | unsigned UID = 0, GID = 0, Perms = 0644; |
29 | |
30 | bool IsNew = false; |
31 | NewArchiveMember() = default; |
32 | NewArchiveMember(MemoryBufferRef BufRef); |
33 | |
34 | static Expected<NewArchiveMember> |
35 | getOldMember(const object::Archive::Child &OldMember, bool Deterministic); |
36 | |
37 | static Expected<NewArchiveMember> getFile(StringRef FileName, |
38 | bool Deterministic); |
39 | }; |
40 | |
41 | Error writeArchive(StringRef ArcName, ArrayRef<NewArchiveMember> NewMembers, |
42 | bool WriteSymtab, object::Archive::Kind Kind, |
43 | bool Deterministic, bool Thin, |
44 | std::unique_ptr<MemoryBuffer> OldArchiveBuf = nullptr); |
45 | } |
46 | |
47 | #endif |
48 | |