home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 42 / Amiga Format AFCD42 (Issue 126, Aug 1999).iso / -serious- / programming / c / pmm / make / projekt < prev    next >
Encoding:
Text File  |  1999-05-17  |  8.3 KB  |  192 lines

  1. ; Diese Datei stellt ein Projekt dar. Hier wird auf die
  2. ; Programm-Dateien verwiesen, alle Pfade werden hier
  3. ; gesetzt. * gilt immer, außer ein Programm übersteuert.
  4. ; $1, $2 ... $9 (Variablen für pmm.cfg)
  5. ; $$.c=  Pfad für Source, wenn nicht identisch mit PFAD=
  6. ;
  7. ; Wichtig:
  8. ; Hier angegebene Include-Pfade sind nur für den Compiler
  9. ; und nicht für den Depend-Scan. Der Scan hat seine Include-
  10. ; pfade in der Pmm.UsrIncludes. Aufbau: Pro Zeile ein Include.
  11. ; Der Compiler sucht natürlich auch in in den Standard-Compiler-
  12. ; includes während der Depend-Scan ALLE Pfade mit den eigenen Dateien
  13. ; enthält. Bei Bedarf kommt vielleicht include/libraries mit da rein.
  14. ; Aber jedes Compiler-.h-File zu prüfen ist Unsinn. Nach einem Compiler-
  15. ; update sollte man ohnehin alles einheitlich neu übersetzen.
  16. ; Es ist für den Dependscan nicht nötig programmabhängig zu verwalten.
  17. ; Die Config dient mehr dem Ausschluß von Pfaden, nur wäre das wesent-
  18. ; lich mehr Arbeit. Der Homepfad der Sourcen ist für Depend immer ent-
  19. ; halten. Beim Compilieren wird der Pfad gebraucht, weil er an den
  20. ; Preprozessor übergeben werden muß. Pmm könnte das zwar auch alleine
  21. ; einsetzen, aber das würde die Möglichkeiten beschränken. Also immer
  22. ; -I$I als Include übergeben.
  23. ;
  24. ; Die Zeilen mit MAKE am Anfang:
  25. ; Hier bekommen die Zahlencodes 1%, 2% usw. ihre Zuordnung.
  26. ; MAKE=5 bedeutet: Make ohne Zusatz stellt Definition 5 her (ist als
  27. ;                  68040 vordefiniert).
  28. ; MAKE:xyz=1,2,3   Besagt nichts weiter als das Pmm ... -o xyz die
  29. ;                  Definitionen 1, 2 und 3 erstellen soll, so wie
  30. ;                  bei Make xyz im Makefile 'xyz:' als Festlegung für
  31. ;                  Aufrufparameter steht.
  32. ; MAKE:ALL=....    Das ist die Festlegung, welche Definitionen bei
  33. ;                  Pmm A, Q, I oder Pmm -o ALL erzeugt werden.
  34. ; Diese Einstellungen sind eine Erweiterung zu Pmm.Cfg, aber es geht
  35. ; weiter...
  36. ;
  37. ; Source und sonstige Files:
  38. ; $&.c ist source.c     Preprozessor Input  ( .c -> vcpp )
  39. ; $&.i ist soirce.i     Preprozessor Output ( .c -> vcpp -> .i )
  40. ; $&.a ist source.asm   Compiler Output     ( .i -> vbcc -> .asm )
  41. ; $&.s ist source.s     Compiler Output     ( .i -> vbcc -> .s (vsc) -> .asm )
  42. ; $&.o ist source.o     Assembler Output    ( .asm -> Assembler -> .o [ -> Linker] )
  43. ; $$   ist PROGRAMM     Letzter Output (Programm, Library, Lib etc.)
  44. ; vsc ist der Scheduler, siehe Docs für Warp-Version!!!
  45. ; Dies alles geschieht automatisch. Für .i, .a, .s und .o werden nur noch die
  46. ; Pfade festgelegt. Bei $$ der Name des Programmes INCL. Pfad, wenn gewünscht.
  47. ; Falls nicht, wird a.out imaktuellen Verzeichnis benutzt. Siehe $$ unten...
  48. ; $L Ergänzung der .Lib/.a-Dateien für den Linker.
  49. ;
  50. ; Warum dieser Eintrag, ginge doch genauso gut in Pmm.Cfg?
  51. ; WEIL Pmm.Cfg nur Dinge enthalten sollte die allgemein gültig sind.
  52. ; Diese Projektdatei wird künftig mehrfach angelegt werden können, so
  53. ; das Projekte in Sub-Projekte unterteilt werden können, bzw. auch
  54. ; mehrere Projekte möglich werden. Dann sollte hier das stehen, was
  55. ; für das Projekt vom sonstigen Standard abweicht.
  56. ;
  57. :BEGIN *
  58. MAKE=5
  59. MAKE:60=5,6
  60. MAKE:PPC=7,8
  61. MAKE:ALL=1,2,3,4,5,6,7,8
  62. 1%$&.o=obj/000/
  63. 2%$&.o=obj/010/
  64. 3%$&.o=obj/020/
  65. 4%$&.o=obj/030/
  66. 5%$&.o=obj/040/
  67. 6%$&.o=obj/060/
  68. 7%$&.o=obj/ppc/
  69. 8%$&.o=obj/wos/
  70. $&.i=T:
  71. $&.a=T:
  72. $&.s=T:
  73. $$=a.out
  74. 1%$L=-Bsymbolic Lib:DOSLIB_000.Lib Lib:All.Lib
  75. 2%$L=-Bsymbolic Lib:DOSLIB_010.Lib Lib:All.Lib
  76. 3%$L=-Bsymbolic Lib:DOSLIB_020.Lib Lib:All.Lib
  77. 4%$L=-Bsymbolic Lib:DOSLIB_030.Lib Lib:All.Lib
  78. 5%$L=-Bsymbolic Lib:DOSLIB_040.Lib Lib:All_040.Lib
  79. 6%$L=-Bsymbolic Lib:DOSLIB_060.Lib Lib:All_040.Lib
  80. 7%$L=-Bdynamic Lib:DOSLIB_ppc.a Lib:All_ppc.a
  81. 8%$L=-Bsymbolic Lib:DOSLIB_wos.Lib Lib:All_wos.Lib
  82. $o=T:LinkOBJ
  83. :END
  84. ;    <- Das END in der vorigen Zeile beendet die Config. AB hier kann
  85. ;       wieder ein BEGIN gesetzt werden. $o ist der Name für ein Temp-File
  86. ;       das die Lise der Objektfiles für den Linker enthält. Diese wird
  87. ;       von Pmm erstellt.
  88. ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  89. ;
  90. ; DEMO-EINTRAG -- KEINE FUNKTION --
  91. ; ----------------------------------
  92. ; DOSLIB ist ein SPECIAL, der Linker wird übersteuert mit L=PmmLibr!
  93. ;        Hier entsteht eine .LIB, gesteuert über den eigenen Libr-Befehl
  94. ;        Um Libr wie einen Linker funktionieren zu lassen ist die
  95. ;        Steuerung F aufgenommen worden. Diese Version eines Libr könnte
  96. ;        auch ohne Probleme z.B. in vc integriert werden. Da hätte nur
  97. ;        mal jemand früher drauf kommen müssen (meine erste Version war
  98. ;        ein List-Batch wie bei 7% noch zu sehen).
  99. ;        Y0 startet einen Stub-Batch der weitere Link-Libs erstellt, wenn
  100. ;        dies notwendig ist (siehe Verzeichnis Batch).
  101. ;        Bei PPC wird Y1 als Erweiterung von L= eingesetzt, so kommt der
  102. ;        Batch zur Ausführung und das .a-File für PPC wird gebildet. 
  103. ;
  104. :BEGIN DOSLIB
  105. PFAD=Proj:DOSLIB
  106. $5=-Ivinclude: -IInclude: -I$I
  107. 7%$5=-Ivincludeppc: -IInclude: -I$I
  108. 8%$5=-Ivincludewos: -IInclude: -I$I
  109. 1%$$=Lib:DOSLIB_000.Lib
  110. 2%$$=Lib:DOSLIB_010.Lib
  111. 3%$$=Lib:DOSLIB_020.Lib
  112. 4%$$=Lib:DOSLIB_030.Lib
  113. 5%$$=Lib:DOSLIB_040.Lib
  114. 6%$$=Lib:DOSLIB_060.Lib
  115. 7%$$=Lib:DOSLIB_ppc.a
  116. 8%$$=Lib:DOSLIB_wos.Lib
  117. $o=T:LibList
  118. 1%L=PmmLibr F Lib:DosLib_000 $o
  119. 2%L=PmmLibr F Lib:DosLib_010 $o
  120. 3%L=PmmLibr F Lib:DosLib_020 $o
  121. 4%L=PmmLibr F Lib:DosLib_030 $o
  122. 5%L=PmmLibr F Lib:DosLib_040 $o
  123. 6%L=PmmLibr F Lib:DosLib_060 $o
  124. 7%L=List Proj:DOSLIB/obj/ppc/#?.o lformat="ppc-amigaos-ar q Lib:DOSLIB_ppc.a %s%s" >Ram:LibList
  125. 8%L=PmmLibr F Lib:DosLib_wos $o
  126. 5%X5=Execute Pmm:Batch/ManProto.s Proj:DOSLIB Include:DOSLIB_protos.h
  127. Y0=Execute Pmm:Batch/MakeStubAll.s
  128. 7%Y1=Execute Ram:LibList
  129. :END
  130. ;
  131. ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  132. ;
  133. ; Als Demo habe ich das zum vbcc-Compiler gehörende Programm vc gewählt
  134. ; PFAD=    Wo liegen die Sourcen?
  135. ; $9=      Variable, wird in Pmm.Cfg eingefügt, vc muß mit -DAMIGA übersetzt werden
  136. ; $$=      Executable (hier gleich 8 unterschiedliche, aufgeteilt in eigene Verzeich-
  137. ;          nissse in denen auch die .o-Files gelagert werden). Mag etwas übertrieben
  138. ;          aussehen, aber bei 100 .c-Files kämen 800 .o-Files raus. Wer's nicht, oder
  139. ;          anders möchte kann sich das ja umstellen.
  140. ; $L       Link-Lib, Erweiterung zum Standard, hier auskommentiert, vc braucht meine
  141. ;          persönlichen Files nicht. Das muß auch jede Nutzer selber einrichten.
  142. ; $o       Obj-Liste für den Linker (Temp-File)
  143. ; X0       Aufruf Programmes VOR dem Make z.b. Versionsdumper
  144. ; Y0       Copy der 68040-Version ins vbcc-bin-Verzeichnis (zur Sicherheit aber
  145. ;          unter anderem Namen). Und, als Demo, 4 der maximal 8 Versionen werden
  146. ;          kopiert.
  147. ;
  148. :BEGIN vc
  149. PFAD=vbcc://frontend
  150. $9=-DAMIGA
  151. 1%$$=obj/000/vc
  152. 2%$$=obj/010/vc
  153. 3%$$=obj/020/vc
  154. 4%$$=obj/030/vc
  155. 5%$$=obj/040/vc
  156. 6%$$=obj/060/vc
  157. 7%$$=obj/ppc/vc.elf
  158. 8%$$=obj/wos/vc
  159. ;
  160. ;     Die folgenden Zeilen definieren .Lib's für den Linker.
  161. ;     Sie sind jetzt auskommentiert, da das eigene Lib's sind und vc
  162. ;     braucht sie definitiv nicht.
  163. ;
  164. ;1%$L=-Bsymbolic Lib:DOSLIB_000.Lib Lib:All.Lib
  165. ;2%$L=-Bsymbolic Lib:DOSLIB_010.Lib Lib:All.Lib
  166. ;3%$L=-Bsymbolic Lib:DOSLIB_020.Lib Lib:All.Lib
  167. ;4%$L=-Bsymbolic Lib:DOSLIB_030.Lib Lib:All.Lib
  168. ;5%$L=-Bsymbolic Lib:DOSLIB_040.Lib Lib:All_040.Lib
  169. ;6%$L=-Bsymbolic Lib:DOSLIB_060.Lib Lib:All_040.Lib
  170. ;7%$L=-Bdynamic Lib:DOSLIB_ppc.a Lib:All_ppc.a
  171. ;8%$L=-Bsymbolic Lib:DOSLIB_wos.Lib Lib:All_wos.Lib
  172. $o=T:LinkVC
  173. 5%X0=Echo "Ich simuliere einen Versionsdumper, der aber nur bei 68040 anläuft."
  174. 1%Y0=Copy obj/000/vc vbcc://bin/vc_000
  175. 5%Y0=Copy obj/040/vc vbcc://bin/vc_040
  176. 7%Y0=Copy obj/ppc/vc.elf vbcc://bin/vc_ppc
  177. 8%Y0=Copy obj/040/vc vbcc://bin/vc_wos
  178. :END
  179.  
  180. ; :BEGIN xxx ist der Anfang einer Programmdefinition. Diese muß mit :END beendet
  181. ; werden. Der Name hinter BEGIN hat keine Bedeutung für's Compilat, er verbindet
  182. ; jedoch diese Definition mit den Dateien List_xxx und Work_xxx und ist auch der
  183. ; Parameter für Pmm 'Pmm -p xxx'. Der Programmname den der Compiler erzeugt ist
  184. ; in $$ festgelegt, ggf. auch mehrmals (siehe oben). BEGIN/END dürfen immer nur
  185. ; im Wechsel genau EINMAL benutzt werden. Alle anderen Zeilen können mit #%, also
  186. ; 0%, 1% ... 9% CPU-typisch gesetzt werden. An Y0 ist zu erkennen, wie eine
  187. ; Funktion nur bei einzelnen CPU's benutzt wird. $L zeigt eine Variante wo es
  188. ; einen Standard-Wert gibt, der in Einzelfällen verändert ist. $$ wiederum ist
  189. ; für alle CPU's einzeln festgelegt. PFAD ist die letzte Möglichkeit, nur eine
  190. ; Definition für alle ($9 und $o dito).
  191.