next up previous contents
Next: E.3 Example Configuration Up: E Defining new Configurations Previous: System Include Files and

E.2 Defining System Commands

  This section describes the command definition syntax used by VMake to get the information, e.g., how to activate a compiler, from the configuration file. Again a LISP syntax was selected. A command is defined by the using defcommand.
vmrule5590
The symbol can be one of the commands defined in Table E.4. The information is then stored in the class variables of the associated file classes (see Section 8.3).

  table5598
Tabelle E.4: Command configuration

The keys which can be used for the different commands are listed in Table E.5-E.13. All values are one or multiple string values. Many of these strings are directly used as LISP format strings for output in command generation so that the developer has to take care of correct definition. In addition many keys are marked optional, but may be required to create a working configuration for your requirements.

  table5644
Tabelle E.5: Command definition keys for compilers

In the Table E.5 the definition for command fortran90 is identical to fortran and for command fortran90/cpp to fortran/cpp. The F90 compiler is used for F77 files too, if only a F90 compiler exists for a configuration (backward compatibility). Since many FORTRAN compilers are not able to implicitly use the Cpp preprocessor to include files, the definition of the commands fortran/cpp and fortran90/cpp are allowed to be missing. In this case the Cpp run is made explicitly by VMake to create a temporary FORTRAN source file which is then compiled as usual. Some Cpp preprocessors are not suitable for converting FORTRAN sources because they combine multiple spaces to single ones and ignore so the requirements of FORTRAN, e.g., that six spaces must be at the beginning of a code line. There is no own command definition for pascal/cpp for PASCAL because the Cpp preprocessor run is made in front of the compilation.

The command cpp is allowed to be missing. In this case VMake uses a Cpp replacement written in LISP. The sysdefs for the Fortran-Target and Pascal-Target should be used to give some configuration and/or system dependent defines used by the LISP preprocessor.

The command definition keys are shown in Table E.6 for an archive library generator used by VMake.

  table5710
Tabelle E.6: Command definition keys for library generation

For many systems it is possible to create shared libraries from objects, a task which is also supported by VMake. In Table E.7 the keys to implement shared libraries are shown. This lowers the memory and disc space needed by an executable if the same shared libraries are used multiple times by different executables. Since shared libraries are sometimes very complex, for some configurations an optional supporting module may be loaded, e.g., for AIX for IBM computers a special module ``ibmshlib.lsp'' has to be loaded from within the configuration. This can be done from within the configuration definition file by using loadmodule.
vmrule5731
The string is used as filename (given without extension). This file is then loaded to add additional configuration dependent functionality to VMake concerning some very specific configuration. For all other commands the keys have enough functionality to allow adaption to all currently supported configurations. To minimize build problems between different operating systems no unresolved external function and variables are allowed in shared libraries. This can be always be achieved by using function pointers to allow overriding default functions. This requirement is needed for shared libraries under the operating system AIX, since no unresolved external symbols are allowed. In this case all required shared libraries must be specified during creation of a new shared library. This problem is solved by the key depends of Library-Target. For other operating systems allowing unresolved externals the startup phase of the program is faster.

  table5740
Tabelle E.7: Command definition keys for shared library generation

  table5766
Tabelle E.8: Command definition keys for installation

  table5778
Tabelle E.9: Command definition keys for cleaning

  table5788
Tabelle E.10: Command definition keys for program generation

  table5855
Tabelle E.11: Command definition keys for language binding

  table5880
Tabelle E.12: Command definition keys for automatic code generation

  table5938
Tabelle E.13: Command definition keys for CVS


next up previous contents
Next: E.3 Example Configuration Up: E Defining new Configurations Previous: System Include Files and

IUE WWW server
Fri Jan 3 17:00:13 MET 1997