1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
#ifndef SOFORT_DRIVER_IMPL_H
#define SOFORT_DRIVER_IMPL_H
#include <stdint.h>
#include <stdio.h>
#include <sys/types.h>
#include <slibtool/slibtool.h>
#include "argv/argv.h"
extern const struct argv_option slbt_default_options[];
enum app_tags {
TAG_HELP,
TAG_HELP_ALL,
TAG_VERSION,
TAG_CONFIG,
TAG_DEBUG,
TAG_DRY_RUN,
TAG_FEATURES,
TAG_LEGABITS,
TAG_MODE,
TAG_FINISH,
TAG_WARNINGS,
TAG_ANNOTATE,
TAG_DEPS,
TAG_SILENT,
TAG_TAG,
TAG_VERBOSE,
TAG_TARGET,
TAG_HOST,
TAG_FLAVOR,
TAG_AR,
TAG_RANLIB,
TAG_DLLTOOL,
TAG_OUTPUT,
TAG_BINDIR,
TAG_LDRPATH,
TAG_SHREXT,
TAG_RPATH,
TAG_RELEASE,
TAG_EXPSYM_FILE,
TAG_EXPSYM_REGEX,
TAG_VERSION_INFO,
TAG_VERSION_NUMBER,
TAG_NO_SUPPRESS,
TAG_NO_INSTALL,
TAG_PREFER_PIC,
TAG_PREFER_NON_PIC,
TAG_SHARED,
TAG_STATIC,
TAG_ALL_STATIC,
TAG_DISABLE_STATIC,
TAG_DISABLE_SHARED,
TAG_NO_UNDEFINED,
TAG_MODULE,
TAG_AVOID_VERSION,
TAG_COMPILER_FLAG,
TAG_VERBATIM_FLAG,
};
struct slbt_host_strs {
char * host;
char * flavor;
char * ar;
char * ranlib;
char * dlltool;
};
struct slbt_driver_ctx_impl {
struct slbt_common_ctx cctx;
struct slbt_driver_ctx ctx;
struct slbt_host_strs host;
struct slbt_host_strs ahost;
char * libname;
char ** targv;
char ** cargv;
};
struct slbt_unit_ctx_impl {
const char * path;
struct slbt_input map;
struct slbt_common_ctx cctx;
struct slbt_unit_ctx uctx;
};
static inline struct slbt_driver_ctx_impl * slbt_get_driver_ictx(const struct slbt_driver_ctx * dctx)
{
uintptr_t addr;
if (dctx) {
addr = (uintptr_t)dctx - offsetof(struct slbt_driver_ctx_impl,ctx);
return (struct slbt_driver_ctx_impl *)addr;
}
return 0;
}
#endif
|