summaryrefslogtreecommitdiff
path: root/src/skin/slbt_skin_default.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/skin/slbt_skin_default.c')
-rw-r--r--src/skin/slbt_skin_default.c168
1 files changed, 106 insertions, 62 deletions
diff --git a/src/skin/slbt_skin_default.c b/src/skin/slbt_skin_default.c
index 3be3b74..07f099d 100644
--- a/src/skin/slbt_skin_default.c
+++ b/src/skin/slbt_skin_default.c
@@ -1,15 +1,16 @@
#include "slibtool_driver_impl.h"
+#include "slibtool_visibility_impl.h"
#include "argv/argv.h"
-const struct argv_option slbt_default_options[] = {
+const slbt_hidden struct argv_option slbt_default_options[] = {
{"version", 0,TAG_VERSION,ARGV_OPTARG_NONE,0,0,0,
- "show version information"},
+ "show version information."},
{"help", 'h',TAG_HELP,ARGV_OPTARG_OPTIONAL,0,0,0,
- "show usage information"},
+ "show usage information."},
{"help-all", 'h',TAG_HELP_ALL,ARGV_OPTARG_NONE,0,0,0,
- "show comprehensive help information"},
+ "show comprehensive help information."},
{"heuristics", 0,TAG_HEURISTICS,ARGV_OPTARG_OPTIONAL,0,0,"<path>",
"enable/disable creation of shared/static libraries "
@@ -17,36 +18,63 @@ const struct argv_option slbt_default_options[] = {
"the %s of which is either provided via this "
"command-line argument, or detected by the program."},
+ {"mkvars", 0,TAG_MKVARS,ARGV_OPTARG_REQUIRED,0,0,"<makefile>",
+ "obtain information about the current build project "
+ "from the specified %s."},
+
{"mode", 0,TAG_MODE,ARGV_OPTARG_REQUIRED,0,
"clean|compile|execute|finish"
- "|install|link|uninstall",0,
+ "|install|link|uninstall|ar"
+ "|stoolie|slibtoolize",0,
"set the execution mode, where <mode> "
"is one of {%s}. of the above modes, "
"'finish' is not needed and is therefore "
"a no-op; 'clean' is currently not implemented, "
"however its addition is expected before the "
- "next major release"},
+ "next major release."},
+
+ {"print-aux-dir", 0,TAG_PRINT_AUX_DIR,ARGV_OPTARG_NONE,
+ ARGV_OPTION_HYBRID_ONLY,0,0,
+ "print the directory of the package-installed, "
+ "backward-compatible ltmain.sh and slibtool.sh; "
+ "for additional information, see the slibtoolize(1) "
+ "manual page."},
+
+ {"print-m4-dir", 0,TAG_PRINT_M4_DIR,ARGV_OPTARG_NONE,
+ ARGV_OPTION_HYBRID_ONLY,0,0,
+ "print the directory of the package-installed slibtool.m4; "
+ "for additional information, see the slibtoolize(1) "
+ "manual page."},
{"finish", 0,TAG_FINISH,ARGV_OPTARG_NONE,0,0,0,
"same as --mode=finish"},
{"dry-run", 'n',TAG_DRY_RUN,ARGV_OPTARG_NONE,0,0,0,
"do not spawn any processes, "
- "do not make any changes to the file system"},
+ "do not make any changes to the file system."},
{"tag", 0,TAG_TAG,ARGV_OPTARG_REQUIRED,0,
- "CC|CXX|FC|F77|NASM|RC|disable-static|disable-shared",0,
+ "CC|CXX|FC|F77|ASM|NASM|RC|disable-static|disable-shared",0,
"a universal playground game; "
- "currently accepted tags are {%s}"},
+ "currently accepted tags are {%s}."},
{"config", 0,TAG_CONFIG,ARGV_OPTARG_NONE,0,0,0,
- "display configuration information"},
+ "print a compatible --config output"},
+
+ {"info", 0,TAG_INFO,ARGV_OPTARG_NONE,0,0,0,
+ "display detected (or cached) environment information."},
+
+ {"rosylee", 0,TAG_INFO,ARGV_OPTARG_NONE,0,0,0,
+ "synonym for --info"},
+
+ {"valerius", 0,TAG_INFO,ARGV_OPTARG_NONE,0,0,0,
+ "alternative for --rosylee"},
{"debug", 0,TAG_DEBUG,ARGV_OPTARG_NONE,0,0,0,
- "display internal debug information"},
+ "display internal debug information."},
{"features", 0,TAG_FEATURES,ARGV_OPTARG_NONE,0,0,0,
- "show feature information"},
+ "show feature information."},
{"dumpmachine", 0,TAG_DUMPMACHINE,ARGV_OPTARG_NONE,0,0,0,
"print the cached result of the native compiler's "
@@ -73,7 +101,7 @@ const struct argv_option slbt_default_options[] = {
{"no-warnings", 0,TAG_WARNINGS,ARGV_OPTARG_NONE,0,0,0,""},
{"preserve-dup-deps", 0,TAG_DEPS,ARGV_OPTARG_NONE,0,0,0,
- "leave the dependency list alone"},
+ "leave the dependency list alone."},
{"annotate", 0,TAG_ANNOTATE,ARGV_OPTARG_REQUIRED,0,
"always|never|minimal|full",0,
@@ -81,67 +109,74 @@ const struct argv_option slbt_default_options[] = {
"the defautls are full annotation when "
"stdout is a tty, and no annotation "
"at all otherwise; accepted modes "
- "are {%s}"},
+ "are {%s}."},
{"quiet", 0,TAG_SILENT,ARGV_OPTARG_NONE,0,0,0,
- "do not say anything"},
+ "do not say anything."},
{"silent", 0,TAG_SILENT,ARGV_OPTARG_NONE,0,0,0,
- "say absolutely nothing"},
+ "say absolutely nothing."},
{"verbose", 0,TAG_VERBOSE,ARGV_OPTARG_NONE,0,0,0,
"generate lots of informational messages "
- "that nobody can understand"},
+ "that nobody can understand."},
{"host", 0,TAG_HOST,ARGV_OPTARG_REQUIRED,0,0,"<host>",
- "set an explicit (cross-)host"},
+ "set an explicit (cross-)host."},
{"flavor", 0,TAG_FLAVOR,ARGV_OPTARG_REQUIRED,0,
"bsd|cygwin|darwin|linux|midipix|mingw",
0,"explicitly specify the host's flavor; "
- "currently accepted flavors are {%s}"},
+ "currently accepted flavors are {%s}."},
{"ar", 0,TAG_AR,ARGV_OPTARG_REQUIRED,0,0,"<ar>",
- "explicitly specify the archiver to be used"},
+ "explicitly specify the archiver to be used."},
+
+ {"as", 0,TAG_AS,ARGV_OPTARG_REQUIRED,0,0,"<as>",
+ "explicitly specify the assembler to be used (with dlltool)."},
+
+ {"nm", 0,TAG_NM,ARGV_OPTARG_REQUIRED,0,0,"<nm>",
+ "explicitly specify the name mangler to be used."},
{"ranlib", 0,TAG_RANLIB,ARGV_OPTARG_REQUIRED,0,0,"<ranlib>",
- "explicitly specify the librarian to be used"},
+ "explicitly specify the librarian to be used."},
{"dlltool", 0,TAG_DLLTOOL,ARGV_OPTARG_REQUIRED,0,0,"<dlltool>",
"explicitly specify the PE import library generator "
- "to be used"},
+ "to be used."},
{"mdso", 0,TAG_MDSO,ARGV_OPTARG_REQUIRED,0,0,"<mdso>",
"explicitly specify the PE custom import library "
- "generator to be used"},
+ "generator to be used."},
{"windres", 0,TAG_WINDRES,ARGV_OPTARG_REQUIRED,0,0,"<windres>",
"explicitly specify the PE resource compiler "
- "to be used"},
+ "to be used."},
{"implib", 0,TAG_IMPLIB,ARGV_OPTARG_REQUIRED,0,
"idata|dsometa",0,
"PE import libraries should either use the legacy "
"format (.idata section) and be generated by dlltool, "
"or the custom format (.dsometa section) and be "
- "generated by mdso"},
+ "generated by mdso."},
{"warnings", 0,TAG_WARNINGS,ARGV_OPTARG_REQUIRED,0,
"all|none|error",0,
"set the warning reporting level; "
- "accepted levels are {%s}"},
+ "accepted levels are {%s}."},
{"W", 0,TAG_WARNINGS,ARGV_OPTARG_REQUIRED,
ARGV_OPTION_HYBRID_ONLY|ARGV_OPTION_HYBRID_JOINED,
"all|none|error","",
- "convenient shorthands for the above"},
+ "convenient shorthands for the above."},
{"output", 'o',TAG_OUTPUT,ARGV_OPTARG_REQUIRED,0,0,"<file>",
- "write output to %s"},
+ "write output to %s."},
- {"target", 0,TAG_TARGET,ARGV_OPTARG_REQUIRED,0,0,"<target>",
+ {"target", 0,TAG_TARGET,ARGV_OPTARG_REQUIRED,
+ ARGV_OPTION_HYBRID_SPACE,0,"<target>",
"set an explicit (cross-)target, then pass it to "
- "the compiler"},
+ "the compiler."},
{"R", 0,TAG_LDRPATH,ARGV_OPTARG_REQUIRED,
ARGV_OPTION_HYBRID_ONLY|ARGV_OPTION_HYBRID_CIRCUS,0,0,
@@ -152,7 +187,7 @@ const struct argv_option slbt_default_options[] = {
ARGV_OPTION_HYBRID_ONLY|ARGV_OPTION_HYBRID_SPACE,0,0,
"override destination directory when installing "
"PE shared libraries. Not needed, ignored for "
- "compatibility"},
+ "compatibility."},
{"shrext", 0,TAG_SHREXT,ARGV_OPTARG_REQUIRED,
ARGV_OPTION_HYBRID_ONLY|ARGV_OPTION_HYBRID_SPACE,0,0,
@@ -168,103 +203,112 @@ const struct argv_option slbt_default_options[] = {
{"sysroot", 0,TAG_SYSROOT,ARGV_OPTARG_REQUIRED,0,0,"<sysroot>",
"an absolute sysroot path to pass to the compiler "
- "or linker driver"},
+ "or linker driver."},
{"release", 0,TAG_RELEASE,ARGV_OPTARG_REQUIRED,
ARGV_OPTION_HYBRID_ONLY|ARGV_OPTION_HYBRID_SPACE,0,0,
"specify release information; this will result "
"in the generation of libfoo-x.y.z.so, "
"followed by the creation of libfoo.so "
- "as a symlink thereto"},
+ "as a symlink thereto."},
+
+ {"objectlist", 0,TAG_OBJECTLIST,ARGV_OPTARG_REQUIRED,
+ ARGV_OPTION_HYBRID_ONLY|ARGV_OPTION_HYBRID_SPACE,
+ 0,"<file>",
+ "add the object listed in %s to the object vector}."},
{"dlopen", 0,TAG_DLOPEN,ARGV_OPTARG_REQUIRED,
ARGV_OPTION_HYBRID_ONLY|ARGV_OPTION_HYBRID_SPACE,
0,"<module>",
- "add the directory containing %s to the library path "
- "[currently a no-op]"},
+ "create and link into the dynamic library, dynamic module, "
+ "or executable program a minimal, backward-compatible dlsyms "
+ "vtable. On modern systems, this has the same effect as "
+ "``-dlpreopen force``."},
{"dlpreopen", 0,TAG_DLPREOPEN,ARGV_OPTARG_REQUIRED,
ARGV_OPTION_HYBRID_ONLY|ARGV_OPTION_HYBRID_SPACE,
0,"<FILE>",
"Link the specified %s into the generated library "
- "or executable"},
+ "or executable, and make it available to the compiled "
+ "shared library, dynamic module, or executable program "
+ "via a backward-compatible dlsymas vtable. The special "
+ "arguments 'self' and 'force' can be used to request "
+ "that symbols from the executable program be added "
+ "to the vtable, and that a vtable always be created, "
+ "respectively."},
{"export-dynamic", 0,TAG_EXPORT_DYNAMIC,ARGV_OPTARG_NONE,
ARGV_OPTION_HYBRID_ONLY,0,0,
- "allow symbols in the output file to be resolved via dlsym() "
- "[currently a no-op]"},
+ "allow symbols in the output file to be resolved via dlsym()."},
- {"export-symbols", 0,TAG_EXPSYM_FILE,ARGV_OPTARG_REQUIRED,
+ {"export-symbols", 0,TAG_EXPSYMS_FILE,ARGV_OPTARG_REQUIRED,
ARGV_OPTION_HYBRID_ONLY|ARGV_OPTION_HYBRID_SPACE,
0,"<symfile>",
- "only export the symbols that are listed in %s "
- "[currently a no-op]"},
+ "only export the symbols that are listed in %s."},
- {"export-symbols-regex",0,TAG_EXPSYM_REGEX,ARGV_OPTARG_REQUIRED,
+ {"export-symbols-regex",0,TAG_EXPSYMS_REGEX,ARGV_OPTARG_REQUIRED,
ARGV_OPTION_HYBRID_ONLY|ARGV_OPTION_HYBRID_SPACE,
0,"<regex>",
- "only export symbols mathing the regex expression %s "
- "[currently a no-op]"},
+ "only export symbols mathing the regex expression %s."},
{"module", 0,TAG_MODULE,ARGV_OPTARG_NONE,
ARGV_OPTION_HYBRID_ONLY,0,0,
"create a shared object that will only be "
"loaded at runtime via dlopen(3). the shared "
"object name need not follow the platform's "
- "library naming conventions"},
+ "library naming conventions."},
{"all-static", 0,TAG_ALL_STATIC,ARGV_OPTARG_NONE,
ARGV_OPTION_HYBRID_ONLY,0,0,
"for programs, create a zero-dependency, "
"statically linked binary; for libraries, "
- "only create an archive of non-pic objects"},
+ "only create an archive of non-pic objects."},
{"disable-static", 0,TAG_DISABLE_STATIC,ARGV_OPTARG_NONE,
ARGV_OPTION_HYBRID_ONLY,0,0,
"for libraries, only create a shared library, "
"and accordingly do not create an archive "
- "containing the individual object files. "
- "[currently a no-op]"},
+ "containing the individual object files."},
{"disable-shared", 0,TAG_DISABLE_SHARED,ARGV_OPTARG_NONE,
ARGV_OPTION_HYBRID_ONLY,0,0,
"for libraries, only create an archive "
"containing the individual object files, and "
- "accordingly do not create a shared library"},
+ "accordingly do not create a shared library."},
{"avoid-version", 0,TAG_AVOID_VERSION,ARGV_OPTARG_NONE,
ARGV_OPTION_HYBRID_ONLY,0,0,
"do not store version information, "
- "do not create version-specific symlinks"},
+ "do not create version-specific symlinks."},
{"version-info", 0,TAG_VERSION_INFO,ARGV_OPTARG_REQUIRED,
ARGV_OPTION_HYBRID_ONLY|ARGV_OPTION_HYBRID_SPACE,0,
"<current>[:<revision>[:<age>]]",
- "specify version information using a %s syntax"},
+ "specify version information using a %s syntax."},
{"version-number", 0,TAG_VERSION_NUMBER,ARGV_OPTARG_REQUIRED,
ARGV_OPTION_HYBRID_ONLY|ARGV_OPTION_HYBRID_SPACE,0,
"<major>[:<minor>[:<revision>]]",
- "specify version information using a %s syntax"},
+ "specify version information using a %s syntax."},
{"no-suppress", 0,TAG_NO_SUPPRESS,ARGV_OPTARG_NONE,
ARGV_OPTION_HYBRID_ONLY,0,0,
"transparently forward all "
- "compiler-generated output"},
+ "compiler-generated output."},
{"no-install", 0,TAG_NO_INSTALL,ARGV_OPTARG_NONE,
ARGV_OPTION_HYBRID_ONLY,0,0,
"consider the executable image wrapper "
"to be optional "
- "[currently a no-op]"},
+ "[currently a no-op]."},
{"prefer-pic", 0,TAG_PREFER_PIC,ARGV_OPTARG_NONE,
ARGV_OPTION_HYBRID_ONLY,0,0,
- "pick on non-PIC objects"},
+ "pick on non-PIC objects."},
{"prefer-non-pic", 0,TAG_PREFER_NON_PIC,ARGV_OPTARG_NONE,
ARGV_OPTION_HYBRID_ONLY,0,0,
- "pick on PIC objects"},
+ "pick on PIC objects."},
{"shared", 0,TAG_SHARED,ARGV_OPTARG_NONE,
ARGV_OPTION_HYBRID_ONLY,0,0,
@@ -288,30 +332,30 @@ const struct argv_option slbt_default_options[] = {
{"Xcompiler", 0,TAG_VERBATIM_FLAG,ARGV_OPTARG_REQUIRED,
ARGV_OPTION_HYBRID_ONLY|ARGV_OPTION_HYBRID_SPACE,
0,"<flag>",
- "pass a raw flag to the compiler"},
+ "pass a raw flag to the compiler."},
{"Xlinker", 0,TAG_VERBATIM_FLAG,ARGV_OPTARG_REQUIRED,
ARGV_OPTION_HYBRID_ONLY|ARGV_OPTION_HYBRID_SPACE,
0,"<flag>",
- "pass a raw flag to the compiler linker-driver"},
+ "pass a raw flag to the compiler linker-driver."},
{"XCClinker", 0,TAG_VERBATIM_FLAG,ARGV_OPTARG_REQUIRED,
ARGV_OPTION_HYBRID_ONLY|ARGV_OPTION_HYBRID_SPACE,
0,"<flag>",
- "pass a raw flag to the compiler linker-driver"},
+ "pass a raw flag to the compiler linker-driver."},
{"weak", 0,TAG_WEAK,ARGV_OPTARG_REQUIRED,
ARGV_OPTION_HYBRID_ONLY|ARGV_OPTION_HYBRID_SPACE,
0,"<LIBNAME>",
- "hint only, currently a no-op"},
+ "hint only, currently a no-op."},
{"no-undefined", 0,TAG_NO_UNDEFINED,ARGV_OPTARG_NONE,
ARGV_OPTION_HYBRID_ONLY,0,0,
- "disallow unresolved references"},
+ "disallow unresolved references."},
{"thread-safe", 0,TAG_THREAD_SAFE,ARGV_OPTARG_NONE,
ARGV_OPTION_HYBRID_ONLY,0,0,
- "sleep tight, your threads are now safe"},
+ "sleep tight, your threads are now safe."},
{0,0,0,0,0,0,0,0}
};