dsp => vmake
Installation:
-
es ist Teil der normalen SAP DB Entwicklungstools
Aufruf-Optionen:
zusätzlich zur Kommandozeile können diese auch in einer
Environment-Variablen DSP2VMAKE_OPTION angegeben werde.
-
-inDEV <directory>
-
das oberste Source-Verzeichnis (im allgemeinen $SRC)
-
-outSys <directory>
-
$OWN/sys
-
-config <configFile>
-
format: Python source. kann defaults für -inDEC und -outSys enthalten
-
-v
-
verbose, schreibt die Namen der generierten Dateien nach Standardout.
-
-ignore <filename>
-
eine Textdatei. Für alle Treffer in dieser Datei werden keine
vmake-Descriptions generiert
Der Treffer kann irgendwo innerhalb des Dateinamens erfolgen:
-
\aps\ berücksichtigt keine Verzeichnisse unterhalb von aps
-
xyz.dsp would exclude any file named xyz.dsp
-
-nodep
-
generiert nicht #include-Anhängigkeiten (sollte nur zum Debugging verwendet
werden)
-
-projectfiles <filename>
-
add projects in file <filename>.
-
<filename> is relative to -inDEV
-
filenames inside this file are relative to -inDEV
-
# (hashmark) can be used as a comment
-
non-existant files abort the script
-
-globals <vmake def>
-
generiert <vmake def> in every .com-Description (default: *.cpp -except)
-
-warn
-
generiert Warnungen, wenn die gleiche Source-Datei mit unterschiedlichen
Optionen benutzt wird.
-
-smartVariants
-
Varianten wie ReleaseSim werden als eine Kombination der Varianten Release
und Sim interpretiert. Dies funktioniert nur für Release und Debug.
-
-ignoreVariant <variant name>
-
alles, was im Zusammenhang mit <variant name> steht, wird nicht in
die generierten Dateien übernommen
-
-onlyVariant <variant name>
-
nur hier angegebene Varianten werden generiert
-
-unifiedSys
-
(veraltet, da $SRC == $DESC nunmehr der Default ist)
-
-cache
-
(veraltet)
-
-dumbVariants
-
(veraltet, siehe -smartVariants)
Link-Descriptions:
-
für jede .dsp-Datei in einem Verzeichnisbaum wird ein vmake-Description
erzeugt (je nach # TARGTYPE .lib, .dll, .lnk, .mac), aus ltt\LTT.dps wird
sys/desc/ltt/LTT.lib
-
Es können auch Workspace-Dateien (.dsw) in der Kommandozeile angegeben
werden, in diesem Fall werden alle in der Datei referenzierten .dsp-Dateien
konvertiert
-
Es können auch Projekt-Dateien (.dsp) in der Kommandozeile angegeben
werden. Dies ist aber nur zum Debugging sinnvoll, da andernfalls die erzeugten
.com-Descriptions nicht vollständig sind.
-
Source-Dateien aus dem gleichen Verzeichnis werden über die
'defaultlayer'-Notation aufgeführt. Alle anderen Dateien werden
vmake-absolut aufgeführt (d.h.relativ zu $SRC), die Dateien sind sortiert.
-
von einer DLL genutzte .lib-Dateien werden
-
per '-lib=...' angegeben, wenn es sich um Systemlibs handelt
-
per '::path' angegeben, wenn es sich um eine selbst zu erzeugende Lib handelt.
Dies wird dadurch entschieden, daß in einem ersten Schritt die namen
und Typen von allen angesprochenen .dsp-Dateien ermittelt wird.
-
das Kopieren der .lst-Dateien wird bislang nicht in die Descriptions
übernommen.
.com-Descriptions
-
für jedes Verzeichnis wird eine .com-Description erzeugt, die alle
.cpp-Dateien enthält
-
intern wird imkdep aufgerufen, um die Abhängigkeiten zu pflegen.
-
/I-Optionen werden nicht übernommen, wenn sie sich auf relative
Verzeichnisse beziehen. Es wird davon ausgegangen, daß alle
#include-Anweisungen künftig den Dateinamen relativ zu $SRC oder $SRC/APO
enthalten.
-
Sonstige Optionen werden auf den allgemeinen Fall (*) übertragen, wenn
sie für alle Sourcen dieses Verzeichnisses gelten.(z.B. sys\desc\lcsim.com)
Anpassungen
Die Datei $SRC/specialCases.py (alternative $TOOL/bin/specialCases.py)
enthält zusätzliche Regeln, mit der man die Generierung der
Descriptions beinflussen kann. Diese Datei ist eine Python-Source und exportiert
die folgenden Variablen und Funktionen:
-
getAdditionalLayer ():
-
liefert ein List von Verzeichnissen, für die .com-Description angelegt
werden sollen, Dies sind z.B. Verzeichnisse, die nur Header-Dateien enthalten.
-
cases
-
eine List mit Python-Objekten. Diese enthalten ein Attribut filename (auf
diese Datei wird der case angewandt) und eine Methode apply. So sorgt z.B.
ein Append-Objekt dafür, daß an bestimmte Descriptions noch ein
festgelegter Text angehängt wird.
-
optionsToIgnore
-
Compiler-Optionen, die nicht mit in die Descriptions übernommen werden
(sie sind so allgemein, daß dsie in toolvars.pl gesetzt werden)
-
shortOptionsToIgnore
-
siehe oben. Diese Optionen haben in der Regel noch ein angehängtes Argument
('/W' gilt für /W3, /W4 etc.
-
definesToIgnore
-
/D Optionen, die nicht mit in die Descriptions übernommen werden sollen
-
specialLibraries
-
eine Liste von Paaren (regular expression, replacement). Entspricht ein in
der .dsp-Datei referenzierte Library einer der regular expression, so wird
der Eintrag in der generierten Description durch das entsprechende replacement
ersetzt:
(r'(?P<dir>.*)[/\\]liboms.lib', '-lib=%(dir)s/liboms')
aus $(LC_LIB)/liboms.lib
wird -lib=$(LC_LIB)/liboms
-
filesToIgnore
-
eine Liste von Filename-Pattern wie sie auch in der Datei für die Option
-ignore angegeben werden können.
2002-03-12 Daniel Dittmar