// Copied from https://github.com/llvm/llvm-project/blob/3d3ef9d073e1e27ea57480b371b7f5a9f5642ed2/llvm/include/llvm/Object/ArchiveWriter.h //===- ArchiveWriter.h - ar archive file format writer ----------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // Declares the writeArchive function for writing an archive file. // //===----------------------------------------------------------------------===// #ifndef LLVM_OBJECT_ARCHIVEWRITER_H #define LLVM_OBJECT_ARCHIVEWRITER_H #include "llvm/Object/Archive.h" namespace llvm { struct NewArchiveMember { std::unique_ptr Buf; StringRef MemberName; sys::TimePoint ModTime; unsigned UID = 0, GID = 0, Perms = 0644; NewArchiveMember() = default; NewArchiveMember(MemoryBufferRef BufRef); // Detect the archive format from the object or bitcode file. This helps // assume the archive format when creating or editing archives in the case // one isn't explicitly set. object::Archive::Kind detectKindFromObject() const; static Expected getOldMember(const object::Archive::Child &OldMember, bool Deterministic); static Expected getFile(StringRef FileName, bool Deterministic); }; Expected computeArchiveRelativePath(StringRef From, StringRef To); Error writeArchive(StringRef ArcName, ArrayRef NewMembers, bool WriteSymtab, object::Archive::Kind Kind, bool Deterministic, bool Thin, std::unique_ptr OldArchiveBuf = nullptr); // writeArchiveToBuffer is similar to writeArchive but returns the Archive in a // buffer instead of writing it out to a file. Expected> writeArchiveToBuffer(ArrayRef NewMembers, bool WriteSymtab, object::Archive::Kind Kind, bool Deterministic, bool Thin); } #endif