Support merging many .a files into one .a file

This commit is contained in:
Justine Tunney 2024-09-05 19:28:14 -07:00
parent df04ab846a
commit 1e9902af8b
No known key found for this signature in database
GPG key ID: BE714B4575D6E328
6 changed files with 422 additions and 141 deletions

29
tool/build/lib/ar.h Normal file
View file

@ -0,0 +1,29 @@
#ifndef COSMOPOLITAN_TOOL_BUILD_LIB_AR_H_
#define COSMOPOLITAN_TOOL_BUILD_LIB_AR_H_
#include "libc/calls/struct/stat.h"
#include "libc/limits.h"
COSMOPOLITAN_C_START_
struct Ar {
const char *path;
int fd;
struct stat st;
char *map;
size_t offset;
const char *filenames;
size_t filenames_size;
};
struct ArFile {
void *data;
size_t size;
size_t offset;
char name[PATH_MAX];
};
void openar(struct Ar *, const char *);
void closear(struct Ar *);
bool readar(struct Ar *, struct ArFile *);
COSMOPOLITAN_C_END_
#endif /* COSMOPOLITAN_TOOL_BUILD_LIB_AR_H_ */