Frage

Ich bin mit einem Compiler für TI DSPs, so dass das Standard-CC und LINK und AS Werkzeuge keinen Sinn machen. Nachfolgend finden Sie eine SConstruct Datei, das funktioniert für mich, ich frage mich, wenn jemand Vorschläge hat es besser zu machen. Einige Probleme:

  1. Ich möchte es irgendwie sagen, dass meine OBJ-Dateien in einem anderen Verzeichnis als die Quelle .c Dateien gehen sollte. (Es wissen muss, wo, um herauszufinden, die Quellen für den Link Schritt, und die Abhängigkeiten für Kompilierung / Verknüpfung) Es wäre schön, dies in zu binden mit dem „-fr“ und „-fs“ Argumenten für den Compiler , aber ich habe nichts dagegen, dass manuell zu tun.
  2. Es gibt einige Lager C-Dateien in der SConstruct Datei unten, beginnen alle mit dem Präfix DSP2804x_. Gerade jetzt scons kann nicht die Abhängigkeiten für diese herauszufinden, weil ich es erwartet die OBJ-Dateien erraten im gleichen Verzeichnis zu leben, während meiner Verwendung von „-fr“ und „-fs“ für die Compiler-Mittel dieser OBJ-Dateien Ende im selben Verzeichnis wie die SConstruct Datei auf. Gibt es einen besseren Weg, dies zu tun? Ich vermute, ich sollte wohl einen Build Schritt haben, dass Kopien dieser Referenzdateien in ein lokales Verzeichnis. Wenn ich sie ändern, ich will die Änderungen für alle Projekte propagieren, die sie verwenden

Seufzer ....

env = Environment(
   CC = 'C:/appl/ti/ccs/3.3/C2000/cgtools/bin/cl2000',
   CCCOM = '$CC $CFLAGS $CCFLAGS $SOURCES',
   CCFLAGS = Split('-g -q -pdr -d"_DEBUG" -d"LARGE_MODEL" -ml -mt -v28'),

   LINKCOM = '$LINK $LINKFLAGS ${SOURCES.file} -o ${TARGET.base}.out',
   LINK = 'C:/appl/ti/ccs/3.3/C2000/cgtools/bin/cl2000',
   LINKFLAGS = Split('-z -q -c -ecode_start -stack0x200 -w -x'),

   ASCOM = '$CC $CFLAGS $CCFLAGS $SOURCES',
#Bizarre but true. assembly is just like compiling C.
   );


includes = {'CCFLAGS' : [
  '-i../common/headers/include',
  '-i../common/include',
  '-fr.',
  '-fs.'
  ]};
env.MergeFlags(includes);

links = {'LINKFLAGS' : [
  '-m./Debug/Example_2804xGpioToggle.map',
  '-i../common/headers/include', 
  '-iC:/appl/ti/ccs/3.3/C2000/xdais/lib',
  '-iC:/appl/ti/ccs/3.3/C2000/cgtools/lib', 
  '-lrts2800_ml.lib',
  '../common/cmd/28044_RAM_lnk.cmd',
  '../common/headers/cmd/DSP2804x_Headers_nonBIOS.cmd'
  ]};
env.MergeFlags(links);

print "CCCOM is:", env['CCCOM'], "\n", env['LINKCOM'], '\n', env['ASCOM'];

env.Program('blink_gpio', [
  'Example_2804xGpioToggle.c',
  '../common/headers/source/DSP2804x_GlobalVariableDefs.c',
  '../common/source/DSP2804x_CodeStartBranch.asm',
  '../common/source/DSP2804x_DefaultIsr.c',
  '../common/source/DSP2804x_PieCtrl.c',
  '../common/source/DSP2804x_PieVect.c',
  '../common/source/DSP2804x_SysCtrl.c'
  ]);
War es hilfreich?

Lösung

Ich löste beide Probleme durch eine zu tun hierarchischen build und mit -fr=${TARGET.dir} in meinem Compiler-Flags.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top