/* $VER: vlink version.c V0.6b (16.01.99)
 *
 * This file is part of vlink, a portable linker for multiple
 * object formats.
 * Copyright (c) 1997-99  Frank Wille
 *
 * vlink is freeware and part of the portable and retargetable ANSI C
 * compiler vbcc, copyright (c) 1995-99 by Volker Barthelmann.
 * vlink may be freely redistributed as long as no modifications are
 * made and nothing is charged for it. Non-commercial usage is allowed
 * without any restrictions.
 * EVERY PRODUCT OR PROGRAM DERIVED DIRECTLY FROM MY SOURCE MAY NOT BE
 * SOLD COMMERCIALLY WITHOUT PERMISSION FROM THE AUTHOR.
 *
 *
 * v0.6b (16.01.99) phx
 *       Changed copyright for 1999.
 * v0.5a (28.06.98) phx
 *       text "-w suppress warnings" was missing.
 * v0.4  (06.06.98) phx
 *       -sc forces merging of all code sections in an executable.
 *       -sd forces merging of all data and bss sections in an executable.
 *       -multibase prevents auto-merging of sections, which are accessed
 *       base-relative.
 * v0.3a (18.04.98) phx
 *       -baseoff was missing in help text.
 *       Updated some other help texts.
 * v0.3  (16.04.98) phx
 *       -R directs vlink to generate short relocs, if the target format
 *       allows this. It is for example supported by ELF and AmigaDos.
 *       Commented some options out, which are still not supported.
 *       -F for reading files, which contain a list of input files
 * v0.1  (27.02.98) phx
 *       First version that seems to link AmigaOS ADOS and EHF
 *       objects and libraries. Many common features, like linking
 *       sections together which have relative references, are
 *       still missing. Also, PowerPC-ELF32 support is about to come.
 * v0.0  (04.08.97) phx
 *       File created. Project started on a beautiful summer-day
 *       at the North Sea beach of Cuxhaven. :)
 */


#define VERSION_C
#include "vlink.h"


void show_version(void)
{
  printf(PNAME " V%d.%d%c (c)1997-99 by Frank Wille\n"
         "build date: " __DATE__ ", " __TIME__ "\n\n"
         ,VERSION,REVISION,PLEVEL?('a'+PLEVEL-1):' ');
}


void show_usage(void)
{
  show_version();

  printf("Usage: " PNAME " [-dhrstvwxMRSX] [-B linkmode] [-b targetname] "
         "[-baseoff offset] "
#if 0 /* not implemented */
         "[-D symbol[=value]] [-e entrypoint] "
#endif
         "[-F filename] [-L library-search-path] [-l library-specifier] "
         "[-multibase] [-nostdlib] [-o filename] [-sc] [-sd] "
#if 0 /* not implemented */
         "[-T seg addr] [-u symbol] "
#endif
         "[-V version] [-y symbol] "
         "input-files...\n\nOptions:\n"

         "<input-files>     object files and libraries to link\n"
         "-F<file>          read a list of input files from <file>\n"
         "-o<output>        output file name\n"
         "-b<target>        output file format\n"
         "-l<libspec>       link with specified library (static or dynamic)\n"
         "-L<libpath>       add search path for libraries\n"
#if 0 /* not implemented */
         "-e<entrypoint>    address of program's entry point\n"
#endif
         "-y<symbol>        trace symbol accesses by the linker\n"
#if 0 /* not implemented */
         "-D<symbol>[=exp]  define a symbol\n"
         "-u<symbol>        mark a symbol as undefined\n"
         "-T<name> <addr>   define base address of a section\n"
#endif
         "-B<mode>          link mode: static, dynamic, shareable, symbolic\n"
         "-dn               same as: -Bstatic\n"
         "-dy               same as: -Bdynamic\n"
         "-V<version>       minimum version of shared object\n"
         "-baseoff<offset>  offset for base relative relocations\n"
         "-nostdlib         don't use default search path\n"
         "-multibase        don't auto-merge base-relative accessed sections\n"
         "-sc               merge all code sections\n"
         "-sd               merge all data and bss sections\n"
         "-t                trace file accesses by the linker\n"
         "-M                print segment mappings and symbol values\n"
         "-r                generate relocatable object\n"
         "-R                use short form for relocations\n"
         "-s                strip all symbols\n"
         "-S                strip debugging symbols only\n"
         "-x                discard all local symbols\n"
         "-X                discard temporary local symbols\n"
         "-w                suppress warnings\n"
         "-v                print version and implemented targets\n"
         "-h                shows this help text\n"
         );
}
