The FlagShip development system consists of four main parts:
The FlagShip compiler
The static and dynamic libraries
Additional tools and utilities
Optional Third Party Tools
Of course, none of these are required by the end-user, i.e. for executing the FlagShip compiled (i.e. your) application on the target system. Instead, these are tools for the software developer only, where parts of it (e.g. the dynamic library or some of the additional tools) may be passed on to the end-user too (details are in the License Agreement and the manual section "SYS.")
A. The FlagShip Compiler
In a similar fashion to other state-of-the-art compilers (like C, C++, Clipper and VO), FlagShip provides several compiling steps.
Preprocesses the sources, resolve #[x]command, #[x]translate, #define, #ifdef, #include and other preprocessor directives. The input is from either .prg, .fmt, or .c source files.
Compiles the preprocessed sources and creates plain .c code (see *).
Invokes the system specific C compiler to produce native .o (object) code.
Invokes the linker to statically or dynamically bind the objects and libraries to a ready-to-run executable.
All these steps are performed automatically, but you may control the behavior by specifying switches and executing any of the steps separately. Of course, standard make files are supported too.
In order to be able to produce a true native executable (including objects in the machine code + system library), all these steps run directly on the target system.
Note (*): Don't think of the FlagShip package as a "translator from prg to C" or "a compiler" only. The intermediately produced C code and objects cannot be linked alone without the FlagShip library (see below), in the same way that "pure C" or "pure Clipper" cannot be linked without the C or Clipper library. The (static or dynamic) FlagShip library provides the functionality of the prg language.
B. The FlagShip Library
Although many statements in the prg source code are translated directly to C code, an additional library is supplied with FlagShip, which has similar functionality to the libc.a library of C or Clipper.lib for DOS. This FlagShip library includes all the standard functions that handle dynamic variable scoping, macros, input and output, database access and so on.
For the most systems, both the static and dynamic libraries are supplied. On a few operating systems, where dynamic linking is not available or not standardized (like the older SCO rel 3.2.2, AIX, and the old Linux aout), the static (but not the dynamic library) is available.
Note: The software developer may decide how the executable should be linked. Usually, the executables that access dynamic libraries (similar to .dll's in MS-Windows) are significantly smaller in disk size (which saves disk space and loading overhead), but are more sensitive to the currently used release of the operating system. On the other hand, by using statically linked executables, the whole machine code is already burned in, so it is best suited for distribution of the application. It is then usable on a wide range of subreleases of the target operating system.
C. Additional Tools Included in the FlagShip Package
For your convenience, the FlagShip package includes a set of additional tools and files. There are several scripts for copying or translating DOS source files into Unix format, for specifying user-definable sorting tables, for mapping different input and output tables, extended terminfo tables and many more. The FlagShip manual (sections GEN, FSC and SYS) describes them in detail.
D. Add-On Tools by Third Parties
You may even extend standard FlagShip functionality by using additional packages, available from multisoft or several 3rd party vendors. Some of these are shareware or public domain, other are commercialy sold. There are tools for WWW access, Fox compatibility, replaceable database drivers (including ISAM and shortly SQL), screen generators, an NT2/CA3 compatible library and so on. See more in the Tools section.
If you have, or wish to create some add-on tools, contact multisoft for advanced support, and to list your tools here.