A set of rules can be used to adopt information about external files and search paths. They all start with string External in their names. Hence, external files which are not controlled by VMake can be used for building projects. Additional information about external sources is included into the dependence database and managed consistently.
External-IncludeSearchPath
This rule defines an external search path for include files. The path is
used to search for include files included by double quotes for C and
C++ sources. For FORTRAN the file must be included either by
single quotes or by using the Cpp preprocessor. The generated information
is maintained with the dependence database.
External-LibrarySearchPath
This rule defines a search path for external libraries specified by the
External-Library. The search path can be in a conditional form
(see Section 4.3) to distinguish between different configurations
and operating systems.
External-Library
External libraries defined by this rule will be searched and must exist in
one of the directories given by External-LibrarySearchPath, if
they are not labeled as system libraries by the key system.
The libname is used to create the system dependent name of the
library. In case of UNIX and VMS this name is formed by a prefix
``lib'' and a system dependent extension depending whether it is an archive
or a shared library specified by the boolean key shared. An
external shared library can be used as dependent library of a shared project
library generated by Library-Target (see
Library-Target) with the key shared.
For UNIX a system library marked with the key system has to be located within the default library search path of the system, for VMS it has to be located within the directory defined by the logical SYS$LIBRARY.
The key language is important for program generation. Normally VMake knows the programming language as it knows the source of each object and library from the compilation rules. This allows to select the correct commands for creating programs. For external pre-compiled library files no information is implicitly available. The default programming language is C. If the library includes objects from other programming languages this key is required for correct operation of VMake.
External-Object
This rule allows to use an external object file in a project.
The key object gives the system dependent file name, including path
information, of the external object file.
The key language is important for generation similar to External-Library (see External-Library).
External-Program
This rule allows the execution of external programs by VMake.
The key program gives the system dependent name of the
executable. If the path information is omitted, the default search path is
used, e.g., the environment variable PATH for UNIX or the logical
DCL$PATH for VMS.
External-File
This rule allows VMake to process external data files.
The key file gives the system dependent filename including path
information which is bound to the symbolicName.
Project-RuleFile
This rule allows to define additional rules which can be used in the current
project and all projects which depend on it. Two examples for the definition
of new rules are found within the VISTA TCAD project
[Sel91, Hal93, Hal95a] which are the grid support
Voops-Target[Fas94a] and the adaption of BISON[Don96] and
FLEX[Pax96] by defining Bison-Target and
Flex-Target (see Appendix D).
The key file defines the filename without extension for the rule
definition file. The extension is predefined by ``vrf''. This file
contains the new object type and the definition of the new rules. Related
information can be found in Section 4.4 and
Section 8.3. Some examples are shown in Appendix D.