firasuke / cross / slibtool

Forked from cross/slibtool a month ago
Clone

Blame src/skin/slbt_skin_default.c

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"
11f3c7
				"|install|link|uninstall|ar",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,
fb5e7f
				"CC|CXX|FC|F77|ASM|NASM|RC|disable-static|disable-shared",0,
242ef8
				"a universal playground game; "
242ef8
				"currently accepted tags are {%s}"},
efd47f
c1f216
	{"config",		0,TAG_CONFIG,ARGV_OPTARG_NONE,0,0,0,
c1f216
				"print a compatible --config output"},
c1f216
c57816
	{"info",		0,TAG_INFO,ARGV_OPTARG_NONE,0,0,0,
c57816
				"display detected (or cached) environment information"},
efd47f
c2dde6
	{"rosylee",		0,TAG_INFO,ARGV_OPTARG_NONE,0,0,0,
c2dde6
				"synonym for --info"},
c2dde6
c2dde6
	{"valerius",		0,TAG_INFO,ARGV_OPTARG_NONE,0,0,0,
c2dde6
				"alternative for --rosylee"},
c2dde6
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
6f4115
	{"dumpmachine",		0,TAG_DUMPMACHINE,ARGV_OPTARG_NONE,0,0,0,
6f4115
				"print the cached result of the native compiler's "
6f4115
				"-dumpmachine output (bootstrapping: print the cached, "
6f4115
				"manual setting of CCHOST)."},
6f4115
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
6bc170
	{"as",			0,TAG_AS,ARGV_OPTARG_REQUIRED,0,0,"<as>",
6bc170
				"explicitly specify the assembler to be used (with dlltool)"},
6bc170
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
80b431
	{"target",		0,TAG_TARGET,ARGV_OPTARG_REQUIRED,
80b431
				ARGV_OPTION_HYBRID_SPACE,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
17e18a
	{"sysroot",		0,TAG_SYSROOT,ARGV_OPTARG_REQUIRED,0,0,"<sysroot>",
17e18a
				"an absolute sysroot path to pass to the compiler "
17e18a
				"or linker driver"},
17e18a
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
a126a7
	{"objectlist",		0,TAG_OBJECTLIST,ARGV_OPTARG_REQUIRED,
a126a7
				ARGV_OPTION_HYBRID_ONLY|ARGV_OPTION_HYBRID_SPACE,
a126a7
				0,"<file>",
a126a7
				"add the object listed in %s to the object vector}"},
a126a7
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
21bb4b
	{"export-symbols",	0,TAG_EXPSYMS_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
21bb4b
	{"export-symbols-regex",0,TAG_EXPSYMS_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
56f236
	{"static-libtool-libs",	0,TAG_STATIC_LIBTOOL_LIBS,ARGV_OPTARG_NONE,
56f236
				ARGV_OPTION_HYBRID_ONLY,0,0,
56f236
				"statically link libtool libraries "
56f236
				"[currently a no-op]"},
56f236
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
5e0269
	{"weak",		0,TAG_WEAK,ARGV_OPTARG_REQUIRED,
5e0269
				ARGV_OPTION_HYBRID_ONLY|ARGV_OPTION_HYBRID_SPACE,
5e0269
				0,"<LIBNAME>",
5e0269
				"hint only, currently a no-op"},
5e0269
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
};