Sudipto Mallick:

> When I compiled a recent version of tinycc from mob, I
> looked at the source of the manpage. I don't like it.

What did not you like?

> I learnt about the mdoc(7) format for writing man pages
> and thought to use that format for the tcc man page. The
> rewrite is attached.

The processed result is attached. While processing, GNU
Troff reported the following warnings:

   mdoc warning: A .Bl directive has no matching .El (#287)
   mdoc warning: Empty input line #376
   mdoc warning: Empty input line #387
   mdoc warning: Empty input line #392
   mdoc warning: Empty input line #394
   mdoc warning: Empty input line #409

> What do you think about this mdoc formatted manual page?

I disike lines longer than 78 characters and lack of
vertical spacing between logical sections. You can do them
like this:

   end of previous secgtion
   .
   .Sh SYNOPSIS
   .
   text text text.

> Please give suggestion to complete it.

I personally prefer the original -man package to -mdoc...
TCC(1)                    BSD General Commands Manual                   TCC(1)

NAME
     tcc -- Tiny C Compiler

SYNOPSIS
     tcc [options] [infile1 infile2 ...] [-run infile args ...]

DESCRIPTION
     Tiny C Compiler is a lightweight and fast C compiler.  Unlike other C
     compilers, it can run programs directly from memory without generating
     executable files, almost like scripting languages!  tcc runs on Linux,
     Windows, macOS, FreeBSD, NetBSD and OpenBSD operating systems.  tcc can
     compile C code for i386, x86_64, arm, arm64 and riscv64 architectures.

OPTIONS
   General options
     -c      Generate an object file.

     -o outfile
             Put object file, executable, or dll into output file outfile.

     -run source [args ...]
             Compile file source and run it with the command line arguments
             args.  In order to be able to give more than one argument to a
             script, several tcc options can be given after the -run option,
             separated by spaces:
                   tcc "-run -L/usr/X11R6/lib -lX11" ex4.c
             In a script, it gives the following header:
                   #!/usr/local/bin/tcc -run -L/usr/X11R6/lib -lX11

     -v      Display TCC version.

     -vv     Show included files. As sole argument, print search dirs.  -vvv
             shows too.

     -bench  Display compilation statistics.

   Preprocessor options
     -Idir   Specify an additional include path. Include paths are searched in
             the order they are specified.

             System include paths are always searched after. The default sys-
             tem include paths are: /usr/local/include, /usr/include and
             PREFIX/lib/tcc/include.  (PREFIX is usually /usr or /usr/local).

     -Dsym[=val]
             Define preprocessor symbol `sym' to `val'.  If `val' is not pre-
             sent, its value is `1'.  Function-like macros can also be
             defined: `-DF(a)=a+1'

     -Usym   Undefine preprocessor symbol `sym'.

     -E      Preprocess only, to stdout or file (with -o).

   Compilation flags
     Note: each of the following options has a negative form beginning with
     -fno-.

     -funsigned-char
             Let the char type be unsigned.

     -fsigned-char
             Let the char type be signed.

     -fno-common
             Do not generate common symbols for uninitialized data.

     -fleading-underscore
             Add a leading underscore at the beginning of each C symbol.

     -fms-extensions
             Allow a MS C compiler extensions to the language. Currently this
             assumes a nested named structure declaration without an identi-
             fier behaves like an unnamed one.

     -fdollars-in-identifiers
             Allow dollar signs in identifiers.

   Warning options
     -w      Disable all warnings.
     Note: each of the following warning options has a negative form beginning
     with -Wno-.

     -Wimplicit-function-declaration
             Warn about implicit function declaration.

     -Wunsupported
             Warn about unsupported GCC features that are ignored by TCC.

     -Wwrite-strings
             Make string constants be of type const char * instead of char *.

     -Werror
             Abort compilation if warnings are issued.

     -Wall   Activate all warnings, except -Werror, -Wunusupported and
             -Wwrite-strings.

   Linker options
     -Ldir   Specify an additional static library path for the -l option.  The
             default library paths are /usr/local/lib, /usr/lib and /lib.

     -lname  Link your program with dynamic library libname.so or static
             library libname.a.  The library is searched in the paths speci-
             fied by the -L option and LIBRARY_PATH variable.

     -Bdir   Set the path where the tcc internal libraries (and include files)
             can be found (default is PREFIX/lib/tcc).

     -shared
             Generate a shared library instead of an executable.

     -soname name
             set name for shared library to be used at runtime.

     -static
             Generate a statically linked executable (default is a shared
             linked executable).

     -rdynamic
             Export global symbols to the dynamic linker. It is useful when a
             library opened with dlopen(3) needs to access executable symbols.

     -r      Generate an object file combining all input files.

     -Wl,-rpath=path
             Put custom search path for dynamic libraries into executable.

     -Wl,--enable-new-dtags
             When putting a custom search path for dynamic libraries into the
             executable, create the new ELF dynamic tag DT_RUNPATH instead of
             the old legacy DT_RPATH.

     -Wl,--oformat=fmt
             Use fmt as output format. The supported output formats are:

             elf32-i386
                     ELF output format (default)

             binary  Binary image (only for executable output)

             coff    COFF output format (only for executable output for
                     TMS320C67xx target)

     -Wl,--export-all-symbols

     -Wl,--export-dynamic
             Export global symbols to the dynamic linker. It is useful when a
             library opened with dlopen(3) needs to access executable symbols.

     -Wl,-subsystem=console/gui/wince/...
             Set type for PE (Windows) executables.

     -Wl,-T[text=# | section-alignment=# | file-alignment=# | image-base=# |
             stack=#]
             Modify executable layout.

     -Wl,-Bsymbolic
             Set DT_SYMBOLIC tag.

     -Wl,-[no-]whole-archive
             Turn on/off linking of all objects in archives.

   Debugger options
     -g      Generate run time debug information so that you get clear run
             time error messages:
                   test.c:68: in function 'test5()': dereferencing invalid
                   pointer
             instead of the laconic `Segmentation fault'.

     -b      Generate additional support code to check memory allocations and
             array/pointer bounds.  -g is implied.

     -bt[N]  Display N callers in stack traces. This is useful with -g or -b.

             With executables, additional support for stack traces is
             included.

             A function int tcc_backtrace(const char *fmt, ...)  is provided
             to trigger a stack trace with a message on demand.

   Miscellanious options
     -MD     Generate makefile fragment with dependencies.

     -MF depfile
             Use depfile as output for -MD.

     -print-search-dirs
             Print the configured installation directory and a list of library
             and include directories tcc will search.

     -dumpversion
             Print version.

   Target specific options
     -mms-bitfields
             Use an algorithm for bitfield alignment consistent with MSVC.
             Default is gcc(1)'s algorithm.

     -mfloat-abi (ARM only)
             Select the float ABI. Possible values: softfp and hard.

     -mno-sse
             Do not use sse registers on x86_64

     -m32, -m64
             Pass command line to the i386/x86_64 cross compiler.

             Note: gcc(1) options -Ox, -fx and -mx are ignored.

ENVIRONMENT
     Environment variables that affect how tcc operates.

     CPATH

     C_INCLUDE_PATH
             A colon-separated list of directories searched for include files,
             directories given with -I are searched first.

     LIBRARY_PATH
             A colon-separated list of directories searched for libraries for
             the -l option, directories given with -L are searched first.

EXAMPLES
     Compile a.c and execute it directly:
           tcc -run a.c

     Compile a.c and execute it directly.  arg1 is given as first argument to
     the `main()' of a.c.
           tcc -run a.c arg1

     Compile a.c and b.c, link them together and execute them.  arg1 is given
     as first argument to the `main()' of the resulting program.
           tcc a.c -run b.c arg1

     Compile a.c and b.c, link them and generate the executable myprog.
           tcc -o myprog a.c b.c

     Link a.o and b.o together and generate the executable myprog.
           tcc -o myprog a.o b.o

     Compile a.c and generate object file a.o.
           tcc -c a.c

     Preprocess with C preprocess and assemble asmfile.S and generate object
     file asmfile.o.
           tcc -c asmfile.S

     Assemble (but not preprocess) asmfile.s and generate object file
     asmfile.o.
           tcc -c asmfile.s

     Compile a.c and b.c, link them together and generate the object file
     ab.o.
           tcc -r -o ab.o a.c b.c

   Scripting
     tcc can be invoked from scripts, just as shell scripts. You just need to
     add `#!/usr/local/bin/tcc -run' at the start of your C source:


           #!/usr/local/bin/tcc -run
           #include <stdio.h>

           int main()
           {
               printf("Hello World\n");
               return 0;
           }

     tcc can read C source code from standard input. Use - in the place of
     input file names. For example::

           echo 'main(){puts("hello");}' | tcc -run -


EXIT STATUS
     The tcc utility exits 0 on success, and >0 if an error occurs.

SEE ALSO
     cc(1), cpp(1), dlopen(3), elf(5), gcc(1), ld(1).

AUTHORS
     Fabrice Bellard


BSD                            December 25, 2020                           BSD
_______________________________________________
Tinycc-devel mailing list
Tinycc-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/tinycc-devel

Reply via email to