|
|
9ca8c4 |
#include "slibtool_driver_impl.h"
|
|
|
9ca8c4 |
#include "argv/argv.h"
|
|
|
9ca8c4 |
|
|
|
9ca8c4 |
const struct argv_option slbt_default_options[] = {
|
|
|
070b2a |
{"version", 0,TAG_VERSION,ARGV_OPTARG_NONE,0,0,0,
|
|
|
9ca8c4 |
"show version information"},
|
|
|
9ca8c4 |
|
|
|
803034 |
{"help", 'h',TAG_HELP,ARGV_OPTARG_OPTIONAL,0,0,0,
|
|
|
803034 |
"show usage information"},
|
|
|
9ca8c4 |
|
|
|
efd47f |
{"help-all", 'h',TAG_HELP_ALL,ARGV_OPTARG_NONE,0,0,0,
|
|
|
efd47f |
"show comprehensive help information"},
|
|
|
efd47f |
|
|
|
499a71 |
{"heuristics", 0,TAG_HEURISTICS,ARGV_OPTARG_OPTIONAL,0,0,"<path>",
|
|
|
499a71 |
"enable/disable creation of shared/static libraries "
|
|
|
499a71 |
"by parsing a project-specific shell script, "
|
|
|
499a71 |
"the %s of which is either provided via this "
|
|
|
499a71 |
"command-line argument, or detected by the program."},
|
|
|
499a71 |
|
|
|
efd47f |
{"mode", 0,TAG_MODE,ARGV_OPTARG_REQUIRED,0,
|
|
|
efd47f |
"clean|compile|execute|finish"
|
|
|
efd47f |
"|install|link|uninstall",0,
|
|
|
242ef8 |
"set the execution mode, where <mode> "
|
|
|
242ef8 |
"is one of {%s}. of the above modes, "
|
|
|
242ef8 |
"'finish' is not needed and is therefore "
|
|
|
0066a6 |
"a no-op; 'clean' is currently not implemented, "
|
|
|
0066a6 |
"however its addition is expected before the "
|
|
|
0066a6 |
"next major release"},
|
|
|
efd47f |
|
|
|
b9575f |
{"finish", 0,TAG_FINISH,ARGV_OPTARG_NONE,0,0,0,
|
|
|
b9575f |
"same as --mode=finish"},
|
|
|
b9575f |
|
|
|
efd47f |
{"dry-run", 'n',TAG_DRY_RUN,ARGV_OPTARG_NONE,0,0,0,
|
|
|
efd47f |
"do not spawn any processes, "
|
|
|
efd47f |
"do not make any changes to the file system"},
|
|
|
efd47f |
|
|
|
efd47f |
{"tag", 0,TAG_TAG,ARGV_OPTARG_REQUIRED,0,
|
|
|
6e6b0f |
"CC|CXX|FC|F77|NASM|RC|disable-static|disable-shared",0,
|
|
|
242ef8 |
"a universal playground game; "
|
|
|
242ef8 |
"currently accepted tags are {%s}"},
|
|
|
efd47f |
|
|
|
efd47f |
{"config", 0,TAG_CONFIG,ARGV_OPTARG_NONE,0,0,0,
|
|
|
efd47f |
"display configuration information"},
|
|
|
efd47f |
|
|
|
efd47f |
{"debug", 0,TAG_DEBUG,ARGV_OPTARG_NONE,0,0,0,
|
|
|
efd47f |
"display internal debug information"},
|
|
|
efd47f |
|
|
|
efd47f |
{"features", 0,TAG_FEATURES,ARGV_OPTARG_NONE,0,0,0,
|
|
|
efd47f |
"show feature information"},
|
|
|
efd47f |
|
|
|
0a9bff |
{"legabits", 0,TAG_LEGABITS,ARGV_OPTARG_OPTIONAL,0,
|
|
|
0a9bff |
"enabled|disabled",0,
|
|
|
0a9bff |
"enable/disable legacy bits, i.e. "
|
|
|
0a9bff |
"the installation of an .la wrapper "
|
|
|
0a9bff |
"along with its associated shared library "
|
|
|
0a9bff |
"and/or static archive. option syntax is "
|
|
|
0a9bff |
"--legabits[=%s]"},
|
|
|
0a9bff |
|
|
|
34988f |
{"ccwrap", 0,TAG_CCWRAP,ARGV_OPTARG_REQUIRED,0,0,
|
|
|
34988f |
"<program>",
|
|
|
34988f |
"use %s as a compiler driver wrapper; "
|
|
|
34988f |
"for the purpose of compatibility, "
|
|
|
34988f |
"this switch may be omitted for known "
|
|
|
34988f |
"wrappers (ccache, compiler, distcc, "
|
|
|
34988f |
"and purify) when immediately followed "
|
|
|
34988f |
"by the compiler argument."},
|
|
|
34988f |
|
|
|
efd47f |
{"no-warnings", 0,TAG_WARNINGS,ARGV_OPTARG_NONE,0,0,0,""},
|
|
|
efd47f |
|
|
|
efd47f |
{"preserve-dup-deps", 0,TAG_DEPS,ARGV_OPTARG_NONE,0,0,0,
|
|
|
efd47f |
"leave the dependency list alone"},
|
|
|
efd47f |
|
|
|
2bc175 |
{"annotate", 0,TAG_ANNOTATE,ARGV_OPTARG_REQUIRED,0,
|
|
|
2bc175 |
"always|never|minimal|full",0,
|
|
|
2bc175 |
"modify default annotation options; "
|
|
|
2bc175 |
"the defautls are full annotation when "
|
|
|
2bc175 |
"stdout is a tty, and no annotation "
|
|
|
242ef8 |
"at all otherwise; accepted modes "
|
|
|
242ef8 |
"are {%s}"},
|
|
|
2bc175 |
|
|
|
efd47f |
{"quiet", 0,TAG_SILENT,ARGV_OPTARG_NONE,0,0,0,
|
|
|
efd47f |
"do not say anything"},
|
|
|
efd47f |
|
|
|
efd47f |
{"silent", 0,TAG_SILENT,ARGV_OPTARG_NONE,0,0,0,
|
|
|
efd47f |
"say absolutely nothing"},
|
|
|
efd47f |
|
|
|
efd47f |
{"verbose", 0,TAG_VERBOSE,ARGV_OPTARG_NONE,0,0,0,
|
|
|
efd47f |
"generate lots of informational messages "
|
|
|
efd47f |
"that nobody can understand"},
|
|
|
efd47f |
|
|
|
302dac |
{"host", 0,TAG_HOST,ARGV_OPTARG_REQUIRED,0,0,"<host>",
|
|
|
302dac |
"set an explicit (cross-)host"},
|
|
|
302dac |
|
|
|
302dac |
{"flavor", 0,TAG_FLAVOR,ARGV_OPTARG_REQUIRED,0,
|
|
|
302dac |
"bsd|cygwin|darwin|linux|midipix|mingw",
|
|
|
242ef8 |
0,"explicitly specify the host's flavor; "
|
|
|
242ef8 |
"currently accepted flavors are {%s}"},
|
|
|
302dac |
|
|
|
302dac |
{"ar", 0,TAG_AR,ARGV_OPTARG_REQUIRED,0,0,"<ar>",
|
|
|
302dac |
"explicitly specify the archiver to be used"},
|
|
|
302dac |
|
|
|
302dac |
{"ranlib", 0,TAG_RANLIB,ARGV_OPTARG_REQUIRED,0,0,"<ranlib>",
|
|
|
302dac |
"explicitly specify the librarian to be used"},
|
|
|
302dac |
|
|
|
302dac |
{"dlltool", 0,TAG_DLLTOOL,ARGV_OPTARG_REQUIRED,0,0,"<dlltool>",
|
|
|
302dac |
"explicitly specify the PE import library generator "
|
|
|
302dac |
"to be used"},
|
|
|
302dac |
|
|
|
fbda3a |
{"mdso", 0,TAG_MDSO,ARGV_OPTARG_REQUIRED,0,0,"<mdso>",
|
|
|
fbda3a |
"explicitly specify the PE custom import library "
|
|
|
fbda3a |
"generator to be used"},
|
|
|
fbda3a |
|
|
|
9a02e2 |
{"windres", 0,TAG_WINDRES,ARGV_OPTARG_REQUIRED,0,0,"<windres>",
|
|
|
9a02e2 |
"explicitly specify the PE resource compiler "
|
|
|
9a02e2 |
"to be used"},
|
|
|
9a02e2 |
|
|
|
fbda3a |
{"implib", 0,TAG_IMPLIB,ARGV_OPTARG_REQUIRED,0,
|
|
|
fbda3a |
"idata|dsometa",0,
|
|
|
fbda3a |
"PE import libraries should either use the legacy "
|
|
|
fbda3a |
"format (.idata section) and be generated by dlltool, "
|
|
|
fbda3a |
"or the custom format (.dsometa section) and be "
|
|
|
fbda3a |
"generated by mdso"},
|
|
|
fbda3a |
|
|
|
efd47f |
{"warnings", 0,TAG_WARNINGS,ARGV_OPTARG_REQUIRED,0,
|
|
|
efd47f |
"all|none|error",0,
|
|
|
242ef8 |
"set the warning reporting level; "
|
|
|
242ef8 |
"accepted levels are {%s}"},
|
|
|
efd47f |
|
|
|
efd47f |
{"W", 0,TAG_WARNINGS,ARGV_OPTARG_REQUIRED,
|
|
|
efd47f |
ARGV_OPTION_HYBRID_ONLY|ARGV_OPTION_HYBRID_JOINED,
|
|
|
efd47f |
"all|none|error","",
|
|
|
efd47f |
"convenient shorthands for the above"},
|
|
|
efd47f |
|
|
|
116dbb |
{"output", 'o',TAG_OUTPUT,ARGV_OPTARG_REQUIRED,0,0,"<file>",
|
|
|
116dbb |
"write output to %s"},
|
|
|
116dbb |
|
|
|
e39281 |
{"target", 0,TAG_TARGET,ARGV_OPTARG_REQUIRED,0,0,"<target>",
|
|
|
e39281 |
"set an explicit (cross-)target, then pass it to "
|
|
|
e39281 |
"the compiler"},
|
|
|
e39281 |
|
|
|
523027 |
{"R", 0,TAG_LDRPATH,ARGV_OPTARG_REQUIRED,
|
|
|
523027 |
ARGV_OPTION_HYBRID_ONLY|ARGV_OPTION_HYBRID_CIRCUS,0,0,
|
|
|
523027 |
"encode library path into the executable image "
|
|
|
523027 |
"[currently a no-op]"},
|
|
|
523027 |
|
|
|
63a1b4 |
{"bindir", 0,TAG_BINDIR,ARGV_OPTARG_REQUIRED,
|
|
|
63a1b4 |
ARGV_OPTION_HYBRID_ONLY|ARGV_OPTION_HYBRID_SPACE,0,0,
|
|
|
63a1b4 |
"override destination directory when installing "
|
|
|
63a1b4 |
"PE shared libraries. Not needed, ignored for "
|
|
|
63a1b4 |
"compatibility"},
|
|
|
63a1b4 |
|
|
|
bfa8ca |
{"shrext", 0,TAG_SHREXT,ARGV_OPTARG_REQUIRED,
|
|
|
bfa8ca |
ARGV_OPTION_HYBRID_ONLY|ARGV_OPTION_HYBRID_SPACE,0,0,
|
|
|
bfa8ca |
"shared library extention, including the dot, that "
|
|
|
bfa8ca |
"should override the default for the target system. "
|
|
|
bfa8ca |
"regardless of build target and type (native/cross), "
|
|
|
bfa8ca |
"you should never need to use this option."},
|
|
|
bfa8ca |
|
|
|
9c664d |
{"rpath", 0,TAG_RPATH,ARGV_OPTARG_REQUIRED,
|
|
|
9c664d |
ARGV_OPTION_HYBRID_ONLY|ARGV_OPTION_HYBRID_SPACE,0,0,
|
|
|
9c664d |
"where a library should eventually be "
|
|
|
9c664d |
"installed, relative to $(DESTDIR)$(PREFIX)"},
|
|
|
9c664d |
|
|
|
9aa1f4 |
{"release", 0,TAG_RELEASE,ARGV_OPTARG_REQUIRED,
|
|
|
9aa1f4 |
ARGV_OPTION_HYBRID_ONLY|ARGV_OPTION_HYBRID_SPACE,0,0,
|
|
|
112a2b |
"specify release information; this will result "
|
|
|
112a2b |
"in the generation of libfoo-x.y.z.so, "
|
|
|
112a2b |
"followed by the creation of libfoo.so "
|
|
|
112a2b |
"as a symlink thereto"},
|
|
|
9aa1f4 |
|
|
|
05ca7e |
{"dlopen", 0,TAG_DLOPEN,ARGV_OPTARG_REQUIRED,
|
|
|
05ca7e |
ARGV_OPTION_HYBRID_ONLY|ARGV_OPTION_HYBRID_SPACE,
|
|
|
05ca7e |
0,"<module>",
|
|
|
05ca7e |
"add the directory containing %s to the library path "
|
|
|
05ca7e |
"[currently a no-op]"},
|
|
|
05ca7e |
|
|
|
bb5843 |
{"dlpreopen", 0,TAG_DLPREOPEN,ARGV_OPTARG_REQUIRED,
|
|
|
bb5843 |
ARGV_OPTION_HYBRID_ONLY|ARGV_OPTION_HYBRID_SPACE,
|
|
|
bb5843 |
0,"<FILE>",
|
|
|
bb5843 |
"Link the specified %s into the generated library "
|
|
|
bb5843 |
"or executable"},
|
|
|
bb5843 |
|
|
|
916050 |
{"export-dynamic", 0,TAG_EXPORT_DYNAMIC,ARGV_OPTARG_NONE,
|
|
|
916050 |
ARGV_OPTION_HYBRID_ONLY,0,0,
|
|
|
916050 |
"allow symbols in the output file to be resolved via dlsym() "
|
|
|
916050 |
"[currently a no-op]"},
|
|
|
916050 |
|
|
|
873ecb |
{"export-symbols", 0,TAG_EXPSYM_FILE,ARGV_OPTARG_REQUIRED,
|
|
|
873ecb |
ARGV_OPTION_HYBRID_ONLY|ARGV_OPTION_HYBRID_SPACE,
|
|
|
873ecb |
0,"<symfile>",
|
|
|
873ecb |
"only export the symbols that are listed in %s "
|
|
|
873ecb |
"[currently a no-op]"},
|
|
|
873ecb |
|
|
|
73ca78 |
{"export-symbols-regex",0,TAG_EXPSYM_REGEX,ARGV_OPTARG_REQUIRED,
|
|
|
73ca78 |
ARGV_OPTION_HYBRID_ONLY|ARGV_OPTION_HYBRID_SPACE,
|
|
|
73ca78 |
0,"<regex>",
|
|
|
a2d9fc |
"only export symbols mathing the regex expression %s "
|
|
|
a2d9fc |
"[currently a no-op]"},
|
|
|
73ca78 |
|
|
|
a943fc |
{"module", 0,TAG_MODULE,ARGV_OPTARG_NONE,
|
|
|
a943fc |
ARGV_OPTION_HYBRID_ONLY,0,0,
|
|
|
a943fc |
"create a shared object that will only be "
|
|
|
a943fc |
"loaded at runtime via dlopen(3). the shared "
|
|
|
a943fc |
"object name need not follow the platform's "
|
|
|
a943fc |
"library naming conventions"},
|
|
|
a943fc |
|
|
|
f7645c |
{"all-static", 0,TAG_ALL_STATIC,ARGV_OPTARG_NONE,
|
|
|
f7645c |
ARGV_OPTION_HYBRID_ONLY,0,0,
|
|
|
f7645c |
"for programs, create a zero-dependency, "
|
|
|
f7645c |
"statically linked binary; for libraries, "
|
|
|
f7645c |
"only create an archive of non-pic objects"},
|
|
|
f7645c |
|
|
|
0e609b |
{"disable-static", 0,TAG_DISABLE_STATIC,ARGV_OPTARG_NONE,
|
|
|
0e609b |
ARGV_OPTION_HYBRID_ONLY,0,0,
|
|
|
0e609b |
"for libraries, only create a shared library, "
|
|
|
0e609b |
"and accordingly do not create an archive "
|
|
|
0e609b |
"containing the individual object files. "
|
|
|
0e609b |
"[currently a no-op]"},
|
|
|
0e609b |
|
|
|
f5fa4c |
{"disable-shared", 0,TAG_DISABLE_SHARED,ARGV_OPTARG_NONE,
|
|
|
f5fa4c |
ARGV_OPTION_HYBRID_ONLY,0,0,
|
|
|
f5fa4c |
"for libraries, only create an archive "
|
|
|
f5fa4c |
"containing the individual object files, and "
|
|
|
f782a1 |
"accordingly do not create a shared library"},
|
|
|
f5fa4c |
|
|
|
68f313 |
{"avoid-version", 0,TAG_AVOID_VERSION,ARGV_OPTARG_NONE,
|
|
|
68f313 |
ARGV_OPTION_HYBRID_ONLY,0,0,
|
|
|
68f313 |
"do not store version information, "
|
|
|
68f313 |
"do not create version-specific symlinks"},
|
|
|
68f313 |
|
|
|
5a9161 |
{"version-info", 0,TAG_VERSION_INFO,ARGV_OPTARG_REQUIRED,
|
|
|
5a9161 |
ARGV_OPTION_HYBRID_ONLY|ARGV_OPTION_HYBRID_SPACE,0,
|
|
|
5a9161 |
"<current>[:<revision>[:<age>]]",
|
|
|
242ef8 |
"specify version information using a %s syntax"},
|
|
|
5a9161 |
|
|
|
cd3d41 |
{"version-number", 0,TAG_VERSION_NUMBER,ARGV_OPTARG_REQUIRED,
|
|
|
cd3d41 |
ARGV_OPTION_HYBRID_ONLY|ARGV_OPTION_HYBRID_SPACE,0,
|
|
|
cd3d41 |
"<major>[:<minor>[:<revision>]]",
|
|
|
242ef8 |
"specify version information using a %s syntax"},
|
|
|
cd3d41 |
|
|
|
116dbb |
{"no-suppress", 0,TAG_NO_SUPPRESS,ARGV_OPTARG_NONE,
|
|
|
116dbb |
ARGV_OPTION_HYBRID_ONLY,0,0,
|
|
|
116dbb |
"transparently forward all "
|
|
|
116dbb |
"compiler-generated output"},
|
|
|
116dbb |
|
|
|
b76221 |
{"no-install", 0,TAG_NO_INSTALL,ARGV_OPTARG_NONE,
|
|
|
b76221 |
ARGV_OPTION_HYBRID_ONLY,0,0,
|
|
|
b76221 |
"consider the executable image wrapper "
|
|
|
b76221 |
"to be optional "
|
|
|
b76221 |
"[currently a no-op]"},
|
|
|
b76221 |
|
|
|
116dbb |
{"prefer-pic", 0,TAG_PREFER_PIC,ARGV_OPTARG_NONE,
|
|
|
116dbb |
ARGV_OPTION_HYBRID_ONLY,0,0,
|
|
|
116dbb |
"pick on non-PIC objects"},
|
|
|
116dbb |
|
|
|
116dbb |
{"prefer-non-pic", 0,TAG_PREFER_NON_PIC,ARGV_OPTARG_NONE,
|
|
|
116dbb |
ARGV_OPTION_HYBRID_ONLY,0,0,
|
|
|
116dbb |
"pick on PIC objects"},
|
|
|
116dbb |
|
|
|
116dbb |
{"shared", 0,TAG_SHARED,ARGV_OPTARG_NONE,
|
|
|
116dbb |
ARGV_OPTION_HYBRID_ONLY,0,0,
|
|
|
116dbb |
"only build .libs/srcfile.o"},
|
|
|
116dbb |
|
|
|
116dbb |
{"static", 0,TAG_STATIC,ARGV_OPTARG_NONE,
|
|
|
116dbb |
ARGV_OPTION_HYBRID_ONLY,0,0,
|
|
|
116dbb |
"only build ./srcfile.o"},
|
|
|
116dbb |
|
|
|
116dbb |
{"Wc", 0,TAG_COMPILER_FLAG,ARGV_OPTARG_REQUIRED,
|
|
|
116dbb |
ARGV_OPTION_HYBRID_ONLY|ARGV_OPTION_HYBRID_COMMA,
|
|
|
116dbb |
0,"<flag>[,
|
|
|
242ef8 |
"pass comma-separated flags to the compiler; "
|
|
|
242ef8 |
"syntax: -Wc,%s"},
|
|
|
116dbb |
|
|
|
116dbb |
{"Xcompiler", 0,TAG_VERBATIM_FLAG,ARGV_OPTARG_REQUIRED,
|
|
|
116dbb |
ARGV_OPTION_HYBRID_ONLY|ARGV_OPTION_HYBRID_SPACE,
|
|
|
116dbb |
0,"<flag>",
|
|
|
116dbb |
"pass a raw flag to the compiler"},
|
|
|
116dbb |
|
|
|
2c4e5f |
{"Xlinker", 0,TAG_VERBATIM_FLAG,ARGV_OPTARG_REQUIRED,
|
|
|
2c4e5f |
ARGV_OPTION_HYBRID_ONLY|ARGV_OPTION_HYBRID_SPACE,
|
|
|
2c4e5f |
0,"<flag>",
|
|
|
2c4e5f |
"pass a raw flag to the compiler linker-driver"},
|
|
|
2c4e5f |
|
|
|
0d693e |
{"XCClinker", 0,TAG_VERBATIM_FLAG,ARGV_OPTARG_REQUIRED,
|
|
|
0d693e |
ARGV_OPTION_HYBRID_ONLY|ARGV_OPTION_HYBRID_SPACE,
|
|
|
0d693e |
0,"<flag>",
|
|
|
0d693e |
"pass a raw flag to the compiler linker-driver"},
|
|
|
0d693e |
|
|
|
93b62c |
{"no-undefined", 0,TAG_NO_UNDEFINED,ARGV_OPTARG_NONE,
|
|
|
93b62c |
ARGV_OPTION_HYBRID_ONLY,0,0,
|
|
|
93b62c |
"disallow unresolved references"},
|
|
|
93b62c |
|
|
|
53b931 |
{"thread-safe", 0,TAG_THREAD_SAFE,ARGV_OPTARG_NONE,
|
|
|
53b931 |
ARGV_OPTION_HYBRID_ONLY,0,0,
|
|
|
53b931 |
"sleep tight, your threads are now safe"},
|
|
|
53b931 |
|
|
|
9ca8c4 |
{0,0,0,0,0,0,0,0}
|
|
|
9ca8c4 |
};
|