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/FileSystem.h" 20 21 namespace llvm { 22 23 struct NewArchiveMember { 24 std::unique_ptr<MemoryBuffer> Buf; 25 StringRef MemberName; 26 sys::TimePoint<std::chrono::seconds> ModTime; 27 unsigned UID = 0, GID = 0, Perms = 0644; 28 29 bool IsNew = false; 30 NewArchiveMember() = default; 31 NewArchiveMember(MemoryBufferRef BufRef); 32 33 static Expected<NewArchiveMember> 34 getOldMember(const object::Archive::Child &OldMember, bool Deterministic); 35 36 static Expected<NewArchiveMember> getFile(StringRef FileName, 37 bool Deterministic); 38 }; 39 40 std::pair<StringRef, std::error_code> 41 writeArchive(StringRef ArcName, std::vector<NewArchiveMember> &NewMembers, 42 bool WriteSymtab, object::Archive::Kind Kind, bool Deterministic, 43 bool Thin, std::unique_ptr<MemoryBuffer> OldArchiveBuf = nullptr); 44 } 45 46 #endif 47