home *** CD-ROM | disk | FTP | other *** search
/ Il CD di internet / CD.iso / SOURCE / D / CLISP / CLISPSRC.TAR / clisp-1995-01-01 / amiga / GMakefile < prev    next >
Encoding:
Makefile  |  1994-10-24  |  6.7 KB  |  282 lines

  1. # GNU-Makefile fⁿr CLISP mit GNU-ANSI-C-Compiler
  2. # J÷rg H÷hle 6.10.94
  3. # Optionen: GCC26, C20, WIDE, HIGH, KI, KA, LMEM
  4. #  HIGH => C20
  5. #  WIDE => C20
  6. # keeping intermediate files means keeping assembly files
  7. ifdef KI
  8. KA=1
  9. endif
  10.  
  11. ifdef HIGH
  12. C20=1
  13. endif
  14. ifdef WIDE
  15. C20=1
  16. endif
  17.  
  18. ifndef C20
  19. MPFLAGS=-Dmc68010
  20. MCFLAGS=-m68000
  21. MAFLAGS=-mc68010
  22. else
  23. MPFLAGS=-Dmc68010 -DMC680Y0
  24. MCFLAGS=-m68020
  25. MAFLAGS=-mc68020
  26. endif
  27.  
  28. WPFLAGS=
  29. ifdef WIDE
  30. WPFLAGS=-DWIDE -DHAVE_LONGLONG
  31. endif
  32. ifdef HIGH
  33. WPFLAGS=-DAMIGA3000
  34. endif
  35.  
  36. IXCFLAGS= >NIL: -a -.
  37.  
  38. ifdef GCC26
  39. # Use GCC259/GCC26
  40. # Path GNU:bin/ GNU:lib/gcc-lib/mc68000-cbm-amigados/2.5.90/
  41. IXCONFIG=GNU:ixem/bin/ixconfig
  42. CC  = gcc
  43. CPP = cpp -undef -D__GNUC__=2 -D__GNUC_MINOR__=5 -lang-c -v
  44. CC1 = cc1 -version
  45. AS  = as
  46.  
  47. CPPSTACK = 20000
  48. CC1STACK = 400000
  49. LDSTACK  = 180000
  50.  
  51. INCPATH=-I. -IAB:usr/include/Amiga31 -IGCC258:os-include -IBen:p/gccsmalllib/include -IGCC258:include
  52. LD     = ld $(LIBPATH) $(CRT0)
  53. LIBPATH=-nostdlib -LBen:p/gccsmalllib/lib
  54. LIBS   =-lclisp
  55. CRT0   =Ben:p/gccsmalllib/lib/crt0.o
  56.  
  57. else
  58. # Use GCC25x
  59. # Path GCC258:bin/ GCC258:lib/gcc-lib/amigados/2.5.8/
  60. # PATH=/GCC258/bin:/GCC258/lib/gcc-lib/amigados/2.5.8:/C
  61. IXCONFIG=GCC258:gnu/ixem/bin/ixconfig
  62. CC  = gcc
  63. CPP = cpp -undef -D__GNUC__=2 -D__GNUC_MINOR__=5 -lang-c -v
  64. CC1 = cc1 -version
  65. AS  = as
  66.  
  67. CPPSTACK = 20000
  68. CC1STACK = 380000
  69. LDSTACK  = 180000
  70.  
  71. INCPATH=-I. -IAB:usr/include/Amiga31 -IGCC258:os-include -IBen:p/gccsmalllib/include -IGCC258:include
  72. LD     = ld $(LIBPATH) $(CRT0)
  73. LIBPATH=-nostdlib -LBen:p/gccsmalllib/lib
  74. LIBS   =-lclisp
  75. CRT0   =Ben:p/gccsmalllib/lib/crt0.o
  76. endif
  77.  
  78.  
  79. CPPFLAGS = -Wcomment -nostdinc $(INCPATH) -D__OPTIMIZE__ -DSTDC_HEADERS -Damiga -DNO_CLISP_H $(MPFLAGS) $(WPFLAGS)
  80. CC1FLAGS = -quiet -O2 -W -Wimplicit -Wreturn-type -Wswitch -Wcomment -Wpointer-arith\
  81.  -ffixed-a4 -fomit-frame-pointer -fno-strength-reduce $(MCFLAGS)
  82. ASFLAGS  = $(MAFLAGS)
  83. LDFLAGS  =
  84. CFLAGS   = $(LDFLAGS) $(CPPFLAGS) $(CC1FLAGS)
  85.  
  86. TMPDIR   = T:
  87. FSTMPDIR = RAM:
  88.  
  89. COMMENT = /utils/comment5
  90. ANSIDECL = /utils/ansidecl
  91. PRESTACK = 20000
  92.  
  93. # Remote file prefix
  94. R=/src/
  95.  
  96. D_INC_MACHINE = amiga.d
  97. D_INC_SPECIAL = amiga2.d
  98. D_INC_FURTHER = avl.d sort.d ari68000.d ari68020.d arilev1e.d arilev1i.d
  99. D_INC_NORMAL = lispbibl.d fsubr.d subr.d pseudofun.d constsym.d \
  100.  constobj.d constpack.d aridecl.d arilev0.d $(D_INC_MACHINE)
  101. D_INC_ALL = $(D_INC_NORMAL) $(D_INC_SPECIAL) $(D_INC_FURTHER)
  102. #D_LISPARIT = arilev1c.d arilev1e.d arilev1i.d arlev1m.d $(D_ARI)
  103. ifdef C20
  104. D_AMODULES = ari68020.d
  105. else
  106. D_AMODULES = ari68000.d
  107. endif
  108. D_EMODULES = # affi.d
  109. D_CMODULES_SPECIAL = rexx.d
  110. D_CMODULES = spvw.d spvwtabf.d spvwtabs.d spvwtabo.d \
  111.  eval.d control.d pathname.d stream.d io.d error.d \
  112.  array.d hashtabl.d list.d package.d record.d sequence.d \
  113.  charstrg.d debug.d misc.d predtype.d symbol.d dbxtypes.d \
  114.  lisparit0.d modules.d $(D_CMODULES_SPECIAL) $(D_EMODULES)
  115. #D_MODULES = $(D_CMODULES) $(D_AMODULES)
  116. DFILES_OTHERARIT = \
  117.  aridecl.d arilev0.d arilev1.d intelem.d intlog.d intplus.d \
  118.  intcomp.d intbyte.d intmal.d intdiv.d intgcd.d int2adic.d \
  119.  intsqrt.d intprint.d intread.d rational.d sfloat.d ffloat.d \
  120.  dfloat.d lfloat.d flo_konv.d flo_rest.d realelem.d realrand.d \
  121.  realtran.d compelem.d comptran.d
  122. RDFILES_OTHERARIT = $(addprefix $(R),$(DFILES_OTHERARIT))
  123.  
  124. C_INC_SPECIAL = $(subst .d,.c,$(D_INC_SPECIAL))
  125. C_INC_NORMAL = $(subst .d,.c,$(D_INC_NORMAL))
  126. C_INC_ALL = $(subst .d,.c,$(D_INC_ALL))
  127.  
  128. OBJECTS_SPECIAL = $(subst .d,.o,$(D_CMODULES_SPECIAL))
  129. OBJECTS_C = $(subst .d,.o,$(D_CMODULES))
  130. OBJECTS_A = $(subst .d,.o,$(D_AMODULES))
  131. OBJECTS = $(OBJECTS_C) $(OBJECTS_A)
  132.  
  133. LSPFILES = \
  134.  init.lsp defseq.lsp backquot.lsp defmacro.lsp macros1.lsp macros2.lsp \
  135.  defs1.lsp places.lsp floatpri.lsp type.lsp defstruc.lsp format.lsp \
  136.  user1.lsp user2.lsp trace.lsp macros3.lsp config.lsp compiler.lsp \
  137.  timezone.lsp defs2.lsp clos.lsp conditio.lsp defs3.lsp gstream.lsp \
  138.  loop.lsp rexx.lsp
  139. FASFILES = $(subst .lsp,.fas,$(LSPFILES))
  140. RFASFILES = $(addprefix $(R),$(FASFILES))
  141.  
  142. IMEMFILE = interpreted.mem
  143. CMEMFILE = compiled.mem
  144. CLISPEXE = lisp.run
  145. DMEMFILE = compiled.mem_
  146.  
  147. .SUFFIXES: .d .lsp
  148.  
  149. # No need to make .d or .lsp files
  150. %.d:
  151.  
  152. %.lsp:
  153.  
  154. #%.c: $(R)%.d
  155.  
  156. all: init allc allo lisp.run
  157.  
  158. #init: .NEVER
  159.  
  160. allc: $(C_INC_ALL)
  161.  
  162. allo: $(OBJECTS)
  163.  
  164. # Various dependencies
  165. $(OBJECTS_C): $(C_INC_NORMAL)
  166.  
  167. $(OBJECTS_SPECIAL): $(C_INC_SPECIAL)
  168.  
  169. spvw.o: avl.c sort.c
  170.  
  171. modules.o: $(R)modules.h
  172.  
  173. lisparit0.o: ari68000.c ari68020.c arilev1e.c arilev1i.c
  174.  
  175. .PHONY: all init allc allo clean force
  176.  
  177. $(R)lisparit1.d: $(R)lisparit.d
  178.     head >$@ -19 $<
  179. $(R)lisparit2.d: $(R)lisparit.d
  180.     tail >$@ +53 $<
  181. $(R)lisparit0.d: $(R)lisparit1.d $(RDFILES_OTHERARIT) $(R)lisparit2.d
  182.     join $(R)lisparit1.d $(RDFILES_OTHERARIT) $(R)lisparit2.d as $@
  183.  
  184. # In order to save diskspace, we don't keep intermediary .c, .i or .s files
  185.  
  186. # Make all include files
  187. $(C_INC_ALL): %.c: $(R)%.d
  188.     stack $(PRESTACK)
  189. #    Named pipes make it slower!
  190. #    run $(COMMENT) $(R)$*.d >FIFO:prepclisp/mwek
  191. #    $(ANSIDECL) <FIFO:prepclisp/r >$@
  192. #    run $(COMMENT) $(R)$*.d >PIPE:prepclisp
  193. #    $(ANSIDECL) <PIPE:prepclisp/r >$@
  194.     $(COMMENT) $(R)$*.d $(FSTMPDIR)$*.dc
  195.     $(ANSIDECL) <$(FSTMPDIR)$*.dc >$@
  196.     delete $(FSTMPDIR)$*.dc
  197.  
  198. # Make all assembly objects
  199. # Here only when .c is available
  200. $(OBJECTS_A): %.o: %.c
  201.     stack $(CPPSTACK)
  202.     $(CPP) -DUNDERSCORE $(CPPFLAGS) $*.c $(TMPDIR)$*.s
  203.     stack $(CC1STACK)
  204.     $(AS) $(ASFLAGS) -o $@ $(TMPDIR)$*.s
  205.     delete $(TMPDIR)$*.s
  206.  
  207. # Make all C objects
  208. $(OBJECTS_C) testd.o testn.o: %.o: $(R)%.d
  209.     @date
  210.     stack $(PRESTACK)
  211.     $(COMMENT) $(R)$*.d $(FSTMPDIR)$*.dc
  212.     $(ANSIDECL) <$(FSTMPDIR)$*.dc >$(TMPDIR)$*.c
  213.     delete $(FSTMPDIR)$*.dc
  214. ifdef LMEM
  215.     @avail >nil: flush
  216.     @$(IXCONFIG) $(IXCFLAGS)
  217. endif
  218.     stack $(CPPSTACK)
  219.     $(CPP) $(CPPFLAGS) $(TMPDIR)$*.c $(TMPDIR)$*.i
  220. ifndef KI
  221.     delete $(TMPDIR)$*.c
  222. endif
  223. ifdef LMEM
  224.     @avail >nil: flush
  225.     @$(IXCONFIG) $(IXCFLAGS)
  226. endif
  227.     stack $(CC1STACK)
  228.     -$(CC1) $(CC1FLAGS) -o $(TMPDIR)$*.s $(TMPDIR)$*.i
  229. ifndef KI
  230.     delete $(TMPDIR)$*.i
  231. endif
  232. ifdef YES_HIGH
  233.     copy $(TMPDIR)$*.s to $(FSTMPDIR)$*.es
  234. #    Some lines are too long for Edit
  235.     sed >$(TMPDIR)$*.s -e "s/^I.even/^I.align 2/" $(FSTMPDIR)$*.es
  236.     delete $(FSTMPDIR)$*.es
  237. endif
  238.     $(AS) $(ASFLAGS) -o $@ $(TMPDIR)$*.s
  239. ifndef KA
  240.     delete $(TMPDIR)$*.s
  241. endif
  242.  
  243. lisp.run: $(OBJECTS)
  244.     @date
  245.     stack $(LDSTACK)
  246.     $(LD) $(LDFLAGS) -o $@ $(OBJECTS) $(LIBS)
  247.  
  248. testd: testd.o
  249.     stack $(LDSTACK)
  250.     $(LD) $(LDFLAGS) -o $@ $*.o $(LIBS)
  251.  
  252. testn: testn.o
  253.     stack 300000
  254.     $(CC) -v -o $@ $*.o -lc
  255.  
  256. # make an interpreted world
  257. $(IMEMFILE):
  258.     @avail >nil: flush
  259.     @date
  260.     $(CLISPEXE) -x (cd"/src/")(load"init.lsp")(saveinitmem)(exit)
  261.     @date
  262.     mv $(R)lispinit.mem $@
  263.  
  264. # compile LISP files
  265. $(RFASFILES): %.fas: %.lsp
  266.     @avail >nil: flush
  267.     @date
  268.     $(CLISPEXE) -M $(DMEMFILE) -c $*.lsp
  269.     @date
  270.  
  271. # make a compiled world
  272. $(CMEMFILE): $(RFASFILES)
  273.     @avail >nil: flush
  274.     @date
  275.     $(CLISPEXE) -x (cd"/src/")(load"init.fas")(saveinitmem)(exit)
  276.     @date
  277.     mv $(R)lispinit.mem $@
  278.  
  279. clean:
  280.     delete $(C_INC_ALL) $(OBJECTS)
  281. force:
  282.