Blame include/slibtool/slibtool.h

6b23ba
#ifndef SLIBTOOL_H
6b23ba
#define SLIBTOOL_H
9ca8c4
c8d21a
#include <fcntl.h>
9ca8c4
#include <stdint.h>
528799
#include <stddef.h>
9ca8c4
#include <stdio.h>
528799
#include <unistd.h>
9ca8c4
9ca8c4
#include "slibtool_api.h"
d4473b
#include "slibtool_arbits.h"
9ca8c4
9ca8c4
#ifdef __cplusplus
9ca8c4
extern "C" {
9ca8c4
#endif
9ca8c4
9ca8c4
/* pre-alpha */
9ca8c4
#ifndef SLBT_APP
9ca8c4
#ifndef SLBT_PRE_ALPHA
9ca8c4
#error  libslibtool: pre-alpha: ABI is not final!
9ca8c4
#error  to use the library, please pass -DSLBT_PRE_ALPHA to the compiler.
9ca8c4
#endif
9ca8c4
#endif
9ca8c4
9ca8c4
/* status codes */
9ca8c4
#define SLBT_OK				0x00
9ca8c4
#define SLBT_USAGE			0x01
0254df
#define SLBT_ERROR			0x02
9ca8c4
9ca8c4
/* driver flags */
47b7ad
#define SLBT_DRIVER_XFLAG(x)		((uint64_t)(x) << 32)
fbda3a
9ca8c4
#define SLBT_DRIVER_VERBOSITY_NONE	0x0000
9ca8c4
#define SLBT_DRIVER_VERBOSITY_ERRORS	0x0001
9ca8c4
#define SLBT_DRIVER_VERBOSITY_STATUS	0x0002
9ca8c4
#define SLBT_DRIVER_VERBOSITY_USAGE	0x0004
9ca8c4
#define SLBT_DRIVER_CLONE_VECTOR	0x0008
9ca8c4
9ca8c4
#define SLBT_DRIVER_VERSION		0x0010
9ca8c4
#define SLBT_DRIVER_DRY_RUN		0x0020
c57816
#define SLBT_DRIVER_INFO		0x0040
fea1b8
#define SLBT_DRIVER_DEBUG		0x0080
d03fbc
#define SLBT_DRIVER_FEATURES		0x0100
40fabb
#define SLBT_DRIVER_DEPS		0x0200
398419
#define SLBT_DRIVER_SILENT		0x0400
25956b
#define SLBT_DRIVER_VERBOSE		0x0800
4f1b20
#define SLBT_DRIVER_PRO_PIC		0x1000
4f1b20
#define SLBT_DRIVER_ANTI_PIC		0x2000
9c25c7
#define SLBT_DRIVER_SHARED		0x4000
9c25c7
#define SLBT_DRIVER_STATIC		0x8000
9ca8c4
499a71
#define SLBT_DRIVER_HEURISTICS		0x010000
e4a8ce
#define SLBT_DRIVER_STRICT		0x020000
93b62c
#define SLBT_DRIVER_NO_UNDEFINED	0x040000
a943fc
#define SLBT_DRIVER_MODULE		0x080000
68f313
#define SLBT_DRIVER_AVOID_VERSION	0x100000
bcd5af
#define SLBT_DRIVER_IMAGE_ELF		0x200000
bcd5af
#define SLBT_DRIVER_IMAGE_PE		0x400000
bcd5af
#define SLBT_DRIVER_IMAGE_MACHO		0x800000
e4a8ce
f7645c
#define SLBT_DRIVER_ALL_STATIC		0x01000000
0e609b
#define SLBT_DRIVER_DISABLE_STATIC	0x02000000
f5fa4c
#define SLBT_DRIVER_DISABLE_SHARED	0x04000000
0a9bff
#define SLBT_DRIVER_LEGABITS		0x08000000
f7645c
2bc175
#define SLBT_DRIVER_ANNOTATE_ALWAYS	0x10000000
2bc175
#define SLBT_DRIVER_ANNOTATE_NEVER	0x20000000
2bc175
#define SLBT_DRIVER_ANNOTATE_FULL	0x40000000
2bc175
fbda3a
#define SLBT_DRIVER_IMPLIB_IDATA	SLBT_DRIVER_XFLAG(0x0001)
fbda3a
#define SLBT_DRIVER_IMPLIB_DSOMETA	SLBT_DRIVER_XFLAG(0x0002)
916050
#define SLBT_DRIVER_EXPORT_DYNAMIC	SLBT_DRIVER_XFLAG(0x0010)
56f236
#define SLBT_DRIVER_STATIC_LIBTOOL_LIBS	SLBT_DRIVER_XFLAG(0x0100)
805666
6f4115
#define SLBT_DRIVER_OUTPUT_MACHINE	SLBT_DRIVER_XFLAG(0x1000)
c1f216
#define SLBT_DRIVER_OUTPUT_CONFIG	SLBT_DRIVER_XFLAG(0x2000)
805666
#define SLBT_DRIVER_OUTPUT_AUX_DIR	SLBT_DRIVER_XFLAG(0x4000)
805666
#define SLBT_DRIVER_OUTPUT_M4_DIR	SLBT_DRIVER_XFLAG(0x8000)
fbda3a
11f3c7
#define SLBT_DRIVER_MODE_AR		SLBT_DRIVER_XFLAG(0x010000)
af36ce
#define SLBT_DRIVER_MODE_AR_CHECK	SLBT_DRIVER_XFLAG(0x020000)
0b177b
#define SLBT_DRIVER_MODE_AR_MERGE	SLBT_DRIVER_XFLAG(0x040000)
11f3c7
4c3fb7
#define SLBT_DRIVER_MODE_STOOLIE	SLBT_DRIVER_XFLAG(0x080000)
4c3fb7
#define SLBT_DRIVER_MODE_SLIBTOOLIZE    SLBT_DRIVER_XFLAG(0x080000)
4c3fb7
b48cb7
#define SLBT_DRIVER_PREFER_SHARED       SLBT_DRIVER_XFLAG(0x100000)
b48cb7
#define SLBT_DRIVER_PREFER_STATIC       SLBT_DRIVER_XFLAG(0x200000)
b48cb7
af48d3
#define SLBT_DRIVER_STOOLIE_COPY        SLBT_DRIVER_XFLAG(0x01000000)
af48d3
#define SLBT_DRIVER_STOOLIE_FORCE       SLBT_DRIVER_XFLAG(0x02000000)
af48d3
#define SLBT_DRIVER_STOOLIE_INSTALL     SLBT_DRIVER_XFLAG(0x04000000)
af48d3
ec3617
#define SLBT_DRIVER_DLOPEN_SELF         SLBT_DRIVER_XFLAG(0x10000000)
ec3617
#define SLBT_DRIVER_DLOPEN_FORCE        SLBT_DRIVER_XFLAG(0x20000000)
ec3617
#define SLBT_DRIVER_DLPREOPEN_SELF      SLBT_DRIVER_XFLAG(0x40000000)
ec3617
#define SLBT_DRIVER_DLPREOPEN_FORCE     SLBT_DRIVER_XFLAG(0x80000000)
ec3617
7bab5a
/* unit action flags */
7bab5a
#define SLBT_ACTION_MAP_READWRITE	0x0001
7bab5a
6dc887
/* error flags */
6dc887
#define SLBT_ERROR_TOP_LEVEL		0x0001
6dc887
#define SLBT_ERROR_NESTED		0x0002
6dc887
#define SLBT_ERROR_CHILD		0x0004
6dc887
#define SLBT_ERROR_CUSTOM		0x0008
6dc887
210852
enum slbt_custom_error {
210852
	SLBT_ERR_FLOW_ERROR,
210852
	SLBT_ERR_FLEE_ERROR,
639534
	SLBT_ERR_COMPILE_ERROR,
5c4295
	SLBT_ERR_LINK_ERROR,
3056ff
	SLBT_ERR_INSTALL_ERROR,
5c4295
	SLBT_ERR_AR_ERROR,
fcfea7
	SLBT_ERR_COPY_ERROR,
5c4295
	SLBT_ERR_MDSO_ERROR,
5c4295
	SLBT_ERR_DLLTOOL_ERROR,
210852
	SLBT_ERR_ARCHIVE_IMPORT,
210852
	SLBT_ERR_HOST_INIT,
210852
	SLBT_ERR_INSTALL_FAIL,
210852
	SLBT_ERR_INSTALL_FLOW,
210852
	SLBT_ERR_INSTALL_REV,
210852
	SLBT_ERR_LDRPATH_INIT,
210852
	SLBT_ERR_LINK_FLOW,
210852
	SLBT_ERR_LINK_FREQ,
62ed2e
	SLBT_ERR_BAD_DATA,
210852
	SLBT_ERR_UNINSTALL_FAIL,
0801fe
	SLBT_ERR_LCONF_OPEN,
0801fe
	SLBT_ERR_LCONF_MAP,
0801fe
	SLBT_ERR_LCONF_PARSE,
c6ecfc
	SLBT_ERR_MKVARS_OPEN,
c6ecfc
	SLBT_ERR_MKVARS_MAP,
c6ecfc
	SLBT_ERR_MKVARS_PARSE,
11f3c7
	SLBT_ERR_AR_FAIL,
d4473b
	SLBT_ERR_AR_EMPTY_FILE,
d4473b
	SLBT_ERR_AR_INVALID_SIGNATURE,
d4473b
	SLBT_ERR_AR_INVALID_HEADER,
d4473b
	SLBT_ERR_AR_TRUNCATED_DATA,
d4473b
	SLBT_ERR_AR_DUPLICATE_LONG_NAMES,
d4473b
	SLBT_ERR_AR_DUPLICATE_ARMAP_MEMBER,
d4473b
	SLBT_ERR_AR_MISPLACED_ARMAP_MEMBER,
af36ce
	SLBT_ERR_AR_NO_ACTION_SPECIFIED,
af36ce
	SLBT_ERR_AR_NO_INPUT_SPECIFIED,
db49af
	SLBT_ERR_AR_DRIVER_MISMATCH,
db49af
	SLBT_ERR_AR_ARMAP_MISMATCH,
80052a
	SLBT_ERR_AR_INVALID_ARMAP_NUMBER_OF_SYMS,
c37698
	SLBT_ERR_AR_INVALID_ARMAP_SIZE_OF_REFS,
c37698
	SLBT_ERR_AR_INVALID_ARMAP_SIZE_OF_STRS,
c37698
	SLBT_ERR_AR_INVALID_ARMAP_STRING_TABLE,
1f3f88
	SLBT_ERR_AR_INVALID_ARMAP_MEMBER_OFFSET,
5ac87e
	SLBT_ERR_AR_INVALID_ARMAP_NAME_OFFSET,
a2500c
	SLBT_ERR_AR_DLUNIT_NOT_SPECIFIED,
0b177b
	SLBT_ERR_AR_OUTPUT_NOT_SPECIFIED,
0b177b
	SLBT_ERR_AR_OUTPUT_NOT_APPLICABLE,
210852
};
210852
ed069f
/* execution modes */
ed069f
enum slbt_mode {
ed069f
	SLBT_MODE_UNKNOWN,
c1f216
	SLBT_MODE_CONFIG,
3c1679
	SLBT_MODE_INFO,
ed069f
	SLBT_MODE_CLEAN,
ed069f
	SLBT_MODE_COMPILE,
ed069f
	SLBT_MODE_EXECUTE,
ed069f
	SLBT_MODE_FINISH,
ed069f
	SLBT_MODE_INSTALL,
ed069f
	SLBT_MODE_LINK,
ed069f
	SLBT_MODE_UNINSTALL,
11f3c7
	SLBT_MODE_AR,
4c3fb7
	SLBT_MODE_STOOLIE,
ed069f
};
ed069f
53f4ec
enum slbt_tag {
53f4ec
	SLBT_TAG_UNKNOWN,
53f4ec
	SLBT_TAG_CC,
53f4ec
	SLBT_TAG_CXX,
6e6b0f
	SLBT_TAG_FC,
1bd7a3
	SLBT_TAG_F77,
fb5e7f
	SLBT_TAG_ASM,
62b4bb
	SLBT_TAG_NASM,
4127b5
	SLBT_TAG_RC,
53f4ec
};
53f4ec
6376f0
enum slbt_warning_level {
6376f0
	SLBT_WARNING_LEVEL_UNKNOWN,
6376f0
	SLBT_WARNING_LEVEL_ALL,
6376f0
	SLBT_WARNING_LEVEL_ERROR,
6376f0
	SLBT_WARNING_LEVEL_NONE,
6376f0
};
6376f0
e99ba2
struct slbt_input {
e99ba2
	void *		addr;
e99ba2
	size_t		size;
e99ba2
};
e99ba2
9f24d2
struct slbt_source_version {
9f24d2
	int		major;
9f24d2
	int		minor;
9f24d2
	int		revision;
9f24d2
	const char *	commit;
9f24d2
};
9f24d2
a82cc2
struct slbt_fd_ctx {
16c8da
	int		fdin;
16c8da
	int		fdout;
16c8da
	int		fderr;
16c8da
	int		fdlog;
16c8da
	int		fdcwd;
16c8da
	int		fddst;
a82cc2
};
a82cc2
528799
struct slbt_exec_ctx {
16c8da
	char *		program;
16c8da
	char *		compiler;
70541a
16c8da
	char **		cargv;
16c8da
	char **		xargv;
16c8da
	char **		argv;
16c8da
	char **		envp;
16c8da
	char ** 	altv;
70541a
16c8da
	char ** 	dpic;
16c8da
	char ** 	fpic;
70541a
16c8da
	char ** 	cass;
16c8da
	char ** 	noundef;
16c8da
	char ** 	soname;
16c8da
	char ** 	lsoname;
70541a
16c8da
	char ** 	symdefs;
16c8da
	char ** 	symfile;
70541a
f42074
	char **         explarg;
f42074
	char **         expsyms;
f42074
16c8da
	char ** 	lout[2];
16c8da
	char ** 	mout[2];
16c8da
	char ** 	rpath[2];
70541a
16c8da
	char ** 	sentinel;
16c8da
	char *		csrc;
70541a
16c8da
	int		ldirdepth;
16c8da
	char *		ldirname;
16c8da
	char *		lbasename;
70541a
16c8da
	char *		lobjname;
16c8da
	char *		aobjname;
16c8da
	char *		ltobjname;
70541a
39e52e
	char *		dlunit;
39e52e
	char *		dlopensrc;
39e52e
	char *		dlopenobj;
a07095
	char *		dlpreopen;
39e52e
16c8da
	char *		arfilename;
16c8da
	char *		lafilename;
16c8da
	char *		laifilename;
70541a
08f5f9
	char *		dsobasename;
16c8da
	char *		dsofilename;
70541a
16c8da
	char *		relfilename;
16c8da
	char *		dsorellnkname;
16c8da
	char *		deffilename;
f42074
	char *		mapfilename;
16c8da
	char *		rpathfilename;
70541a
16c8da
	char *		dimpfilename;
16c8da
	char *		pimpfilename;
16c8da
	char *		vimpfilename;
70541a
16c8da
	char *		exefilename;
16c8da
	char *		sonameprefix;
70541a
16c8da
	pid_t		pid;
16c8da
	int		exitcode;
528799
};
528799
5a9161
struct slbt_version_info {
16c8da
	int		major;
16c8da
	int		minor;
16c8da
	int		revision;
16c8da
	const char *	verinfo;
16c8da
	const char *	vernumber;
5a9161
};
5a9161
6dc887
struct slbt_error_info {
cacd3e
	const struct slbt_driver_ctx *	edctx;
cacd3e
	int				esyscode;
cacd3e
	int				elibcode;
cacd3e
	const char *			efunction;
cacd3e
	int				eline;
cacd3e
	unsigned			eflags;
cacd3e
	void *				eany;
6dc887
};
6dc887
a2fcc0
struct slbt_host_params {
a2fcc0
	const char *			host;
a2fcc0
	const char *			flavor;
a2fcc0
	const char *			ar;
6bc170
	const char *			as;
b5e104
	const char *			nm;
a2fcc0
	const char *			ranlib;
9a02e2
	const char *			windres;
a2fcc0
	const char *			dlltool;
fbda3a
	const char *			mdso;
af7db9
	const char *			ldrpath;
a2fcc0
};
a2fcc0
a66d34
struct slbt_flavor_settings {
bcd5af
	const char *			imagefmt;
a66d34
	const char *			arprefix;
a66d34
	const char *			arsuffix;
a66d34
	const char *			dsoprefix;
a66d34
	const char *			dsosuffix;
339022
	const char *			osdsuffix;
339022
	const char *			osdfussix;
a66d34
	const char *			exeprefix;
a66d34
	const char *			exesuffix;
a66d34
	const char *			impprefix;
a66d34
	const char *			impsuffix;
98dca8
	const char *			mapsuffix;
41790b
	const char *			ldpathenv;
11e277
	char *				picswitch;
a66d34
};
a66d34
9ca8c4
struct slbt_common_ctx {
9ca8c4
	uint64_t			drvflags;
9ca8c4
	uint64_t			actflags;
9ca8c4
	uint64_t			fmtflags;
a2fcc0
	struct slbt_host_params		host;
a2fcc0
	struct slbt_host_params		cfgmeta;
a66d34
	struct slbt_flavor_settings	settings;
a313a4
	struct slbt_host_params		ahost;
a313a4
	struct slbt_host_params		acfgmeta;
a313a4
	struct slbt_flavor_settings	asettings;
5a9161
	struct slbt_version_info	verinfo;
667ce2
	enum slbt_mode			mode;
53f4ec
	enum slbt_tag			tag;
6376f0
	enum slbt_warning_level		warnings;
36a4c5
	char **				cargv;
36a4c5
	char **				targv;
36a4c5
	char *				libname;
dcf6a5
	const char *			dlunit;
34988f
	const char *			ccwrap;
4df790
	const char *			target;
b83b64
	const char *			output;
bfa8ca
	const char *			shrext;
9c664d
	const char *			rpath;
17e18a
	const char *			sysroot;
9aa1f4
	const char *			release;
161c3d
	const char *			expsyms;
73ca78
	const char *			regex;
9b5eec
	const char *			user;
9ca8c4
};
9ca8c4
9ca8c4
struct slbt_driver_ctx {
9ca8c4
	const char *			program;
9ca8c4
	const char *			module;
9ca8c4
	const struct slbt_common_ctx *	cctx;
6dc887
	struct slbt_error_info **	errv;
9ca8c4
	void *				any;
9ca8c4
};
9ca8c4
d4473b
struct slbt_raw_archive {
d4473b
	void *				map_addr;
d4473b
	size_t				map_size;
d4473b
};
d4473b
d4473b
struct slbt_archive_meta {
d4473b
	struct slbt_raw_archive         r_archive;
d4473b
	struct ar_raw_signature *       r_signature;
d4473b
d4473b
	struct ar_meta_signature *      m_signature;
d4473b
d4473b
	struct ar_meta_member_info **   a_memberv;
8a77f6
	struct ar_meta_member_info *    a_arref_longnames;
d4473b
	struct ar_meta_armap_info       a_armap_primary;
d4473b
	struct ar_meta_armap_info       a_armap_pecoff;
d4473b
};
d4473b
d4473b
struct slbt_archive_ctx {
d4473b
	const char * const *		path;
d4473b
	const struct slbt_raw_archive *	map;
d4473b
	const struct slbt_archive_meta *meta;
d4473b
	void *				any;
d4473b
};
d4473b
d42469
struct slbt_symlist_ctx {
d42469
	const char * const *            path;
d42469
	const char **                   symstrv;
d42469
};
d42469
b1be90
struct slbt_txtfile_ctx {
b1be90
	const char * const *            path;
b1be90
	const char **                   txtlinev;
b1be90
};
b1be90
83bcd3
struct slbt_stoolie_ctx {
83bcd3
	const char * const *		path;
83bcd3
	const struct slbt_txtfile_ctx * acinc;
83bcd3
	const struct slbt_txtfile_ctx * cfgac;
83bcd3
	const struct slbt_txtfile_ctx * makam;
83bcd3
	const char * const *            auxarg;
83bcd3
	const char * const *            m4arg;
83bcd3
};
83bcd3
e99ba2
/* raw input api */
932ec0
slbt_api int  slbt_fs_map_input         (const struct slbt_driver_ctx *,
e99ba2
                                         int, const char *, int,
e99ba2
                                         struct slbt_input *);
e99ba2
932ec0
slbt_api int  slbt_fs_unmap_input       (struct slbt_input *);
e99ba2
9ca8c4
/* driver api */
ea4137
slbt_api int  slbt_lib_get_driver_ctx   (char ** argv, char ** envp, uint64_t flags,
d48926
                                         const struct slbt_fd_ctx *,
d48926
                                         struct slbt_driver_ctx **);
d48926
ea4137
slbt_api void slbt_lib_free_driver_ctx  (struct slbt_driver_ctx *);
9ca8c4
ea4137
slbt_api int  slbt_lib_get_driver_fdctx (const struct slbt_driver_ctx *, struct slbt_fd_ctx *);
a01f33
ea4137
slbt_api int  slbt_lib_set_driver_fdctx (struct slbt_driver_ctx *, const struct slbt_fd_ctx *);
a82cc2
d42469
slbt_api int  slbt_lib_get_symlist_ctx  (const struct slbt_driver_ctx *, const char *, struct slbt_symlist_ctx **);
d42469
d42469
slbt_api void slbt_lib_free_symlist_ctx (struct slbt_symlist_ctx *);
d42469
b1be90
slbt_api int  slbt_lib_get_txtfile_ctx  (const struct slbt_driver_ctx *, const char *, struct slbt_txtfile_ctx **);
b1be90
b1be90
slbt_api void slbt_lib_free_txtfile_ctx (struct slbt_txtfile_ctx *);
b1be90
f3d47a
/* command execution context api */
f3d47a
slbt_api int  slbt_ectx_get_exec_ctx    (const struct slbt_driver_ctx *, struct slbt_exec_ctx **);
f3d47a
slbt_api void slbt_ectx_free_exec_ctx   (struct slbt_exec_ctx *);
f3d47a
slbt_api void slbt_ectx_reset_argvector (struct slbt_exec_ctx *);
f3d47a
slbt_api void slbt_ectx_reset_arguments (struct slbt_exec_ctx *);
528799
5e3f48
/* core api */
2e30eb
slbt_api int  slbt_exec_compile         (const struct slbt_driver_ctx *);
2e30eb
slbt_api int  slbt_exec_execute         (const struct slbt_driver_ctx *);
2e30eb
slbt_api int  slbt_exec_install         (const struct slbt_driver_ctx *);
2e30eb
slbt_api int  slbt_exec_link            (const struct slbt_driver_ctx *);
2e30eb
slbt_api int  slbt_exec_uninstall       (const struct slbt_driver_ctx *);
2e30eb
slbt_api int  slbt_exec_ar              (const struct slbt_driver_ctx *);
4c3fb7
slbt_api int  slbt_exec_stoolie         (const struct slbt_driver_ctx *);
4c3fb7
slbt_api int  slbt_exec_slibtoolize     (const struct slbt_driver_ctx *);
36de3e
a01f33
/* host and flavor interfaces */
4373b8
slbt_api int  slbt_host_set_althost     (const struct slbt_driver_ctx *, const char * host, const char * flavor);
a01f33
4373b8
slbt_api void slbt_host_reset_althost   (const struct slbt_driver_ctx *);
a313a4
f248f3
slbt_api int slbt_host_objfmt_is_coff   (const struct slbt_driver_ctx *);
f248f3
f248f3
slbt_api int slbt_host_objfmt_is_macho  (const struct slbt_driver_ctx *);
f248f3
f248f3
slbt_api int slbt_host_group_is_winnt   (const struct slbt_driver_ctx *);
f248f3
f248f3
slbt_api int slbt_host_group_is_darwin  (const struct slbt_driver_ctx *);
f248f3
4373b8
slbt_api int  slbt_host_flavor_settings (const char *, const struct slbt_flavor_settings **);
1f2c01
8dc63d
/* utility helper interfaces */
f3e7bb
slbt_api int  slbt_util_import_archive  (const struct slbt_exec_ctx *,
38c2e7
                                         char * dstarchive, char * srcarchive);
a01f33
fc7ad9
slbt_api int  slbt_util_copy_file       (struct slbt_exec_ctx *,
fc7ad9
                                         const char * from, const char * to);
f7b3fd
fc7ad9
slbt_api int  slbt_util_create_mapfile  (const struct slbt_symlist_ctx *, const char *, mode_t);
a01f33
f4ad24
slbt_api int  slbt_util_create_symfile  (const struct slbt_symlist_ctx *, const char *, mode_t);
f4ad24
8dc63d
slbt_api int  slbt_util_dump_machine    (const char * compiler, char * machine, size_t bufsize);
a01f33
81e063
slbt_api int  slbt_util_real_path       (int, const char *, int, char *, size_t);
9ca8c4
d4473b
/* archiver api */
51c276
slbt_api int  slbt_ar_get_archive_ctx   (const struct slbt_driver_ctx *, const char * path,
7bab5a
                                         struct slbt_archive_ctx **);
7bab5a
51c276
slbt_api void slbt_ar_free_archive_ctx  (struct slbt_archive_ctx *);
7bab5a
e06cc0
slbt_api int  slbt_ar_get_varchive_ctx  (const struct slbt_driver_ctx *,
e06cc0
                                         struct slbt_archive_ctx **);
e06cc0
51c276
slbt_api int  slbt_ar_get_archive_meta  (const struct slbt_driver_ctx *,
d4473b
                                         const struct slbt_raw_archive *,
d4473b
                                         struct slbt_archive_meta **);
d4473b
51c276
slbt_api void slbt_ar_free_archive_meta (struct slbt_archive_meta *);
d4473b
51c276
slbt_api int  slbt_ar_merge_archives    (struct slbt_archive_ctx * const [],
db49af
                                         struct slbt_archive_ctx **);
db49af
51c276
slbt_api int  slbt_ar_store_archive     (struct slbt_archive_ctx *,
c8d21a
                                         const char *, mode_t);
c8d21a
51c276
slbt_api int  slbt_ar_create_mapfile    (const struct slbt_archive_meta *, const char *, mode_t);
14302e
77c7bc
slbt_api int  slbt_ar_create_symfile    (const struct slbt_archive_meta *, const char *, mode_t);
77c7bc
2ec747
slbt_api int slbt_ar_create_dlsyms      (struct slbt_archive_ctx **, const char *, const char *, mode_t);
2ec747
83bcd3
/* slibtoolize api */
83bcd3
slbt_api int  slbt_st_get_stoolie_ctx   (const struct slbt_driver_ctx *, const char * path,
83bcd3
                                         struct slbt_stoolie_ctx **);
83bcd3
83bcd3
slbt_api void slbt_st_free_stoolie_ctx  (struct slbt_stoolie_ctx *);
83bcd3
9ca8c4
/* utility api */
633f4e
slbt_api int  slbt_main                 (char **, char **,
a82cc2
                                         const struct slbt_fd_ctx *);
d48926
c57816
slbt_api int  slbt_output_info          (const struct slbt_driver_ctx *);
33a569
slbt_api int  slbt_output_config        (const struct slbt_driver_ctx *);
e0e31f
slbt_api int  slbt_output_machine       (const struct slbt_driver_ctx *);
38c2e7
slbt_api int  slbt_output_features      (const struct slbt_driver_ctx *);
89ace8
slbt_api int  slbt_output_fdcwd         (const struct slbt_driver_ctx *);
33a569
33a569
slbt_api int  slbt_output_exec          (const struct slbt_exec_ctx *, const char *);
33a569
slbt_api int  slbt_output_compile       (const struct slbt_exec_ctx *);
33a569
slbt_api int  slbt_output_execute       (const struct slbt_exec_ctx *);
33a569
slbt_api int  slbt_output_install       (const struct slbt_exec_ctx *);
33a569
slbt_api int  slbt_output_link          (const struct slbt_exec_ctx *);
33a569
slbt_api int  slbt_output_uninstall     (const struct slbt_exec_ctx *);
24d7f9
slbt_api int  slbt_output_mapfile       (const struct slbt_symlist_ctx *);
38c2e7
33a569
slbt_api int  slbt_output_error_vector  (const struct slbt_driver_ctx *);
33a569
slbt_api int  slbt_output_error_record  (const struct slbt_driver_ctx *, const struct slbt_error_info *);
33a569
47341a
/* archiver utility api */
3fa3e3
slbt_api int  slbt_au_output_arname     (const struct slbt_archive_ctx *);
3fa3e3
slbt_api int  slbt_au_output_members    (const struct slbt_archive_meta *);
3fa3e3
slbt_api int  slbt_au_output_symbols    (const struct slbt_archive_meta *);
3fa3e3
slbt_api int  slbt_au_output_mapfile    (const struct slbt_archive_meta *);
47341a
36c203
slbt_api int  slbt_au_output_dlsyms     (struct slbt_archive_ctx **, const char *);
36c203
38c2e7
/* package info */
f0270a
slbt_api const struct slbt_source_version * slbt_api_source_version(void);
9ca8c4
9ca8c4
#ifdef __cplusplus
9ca8c4
}
9ca8c4
#endif
9ca8c4
9ca8c4
#endif