home *** CD-ROM | disk | FTP | other *** search
/ BCI NET 2 / BCI NET 2.iso / archives / programming / misc / amigem.lha / amigem / macro / makefile < prev   
Encoding:
Makefile  |  1995-01-22  |  2.0 KB  |  62 lines

  1. %.o: %.c
  2.     $(CC) $(CFLAGS) -I .. -c $^ 2>&1|tee $*.err
  3.     -if test ! -s $*.err; then rm $*.err; fi
  4.  
  5. $(TARGET)_functable.c: $(TARGET).fd
  6.     gawk '/@offset/ { while(offset<$$2-1) { print "0," >"tabl";offset++ } } \
  7.           ! /@/ { if(index($$1,",")) fun=substr($$1,1,index($$1,",")-1); \
  8.                   else fun=$$1; print "&__" fun "," >"tabl"; \
  9.                   print "void __" fun "();" >"prot";offset++ }' $(TARGET).fd
  10.     ( cat prot; \
  11.       echo "void (*const $(TARGET)_funcTable[])()={"; \
  12.       cat tabl; \
  13.       echo "(void (*)())-1 };"; ) >$@
  14.     -rm tabl prot
  15.  
  16. $(TARGET)_fc.h:
  17.     gawk '/FC/ { print $$0 }' *.c >$@
  18.  
  19. $(TARGET)_fd.h:
  20.     gawk '/FD/ { print $$0 }' *.c >$@
  21.  
  22. $(TARGET).fc: $(TARGET)_fc.h ../macro/fch2fc.h
  23.     gcc -E -P -include ../macro/fch2fc.h $(TARGET)_fc.h | \
  24.     tr -d ' \t\n' | tr '.;' ' \n' >$@
  25.  
  26. $(TARGET).fd: $(TARGET)_fd.h ../macro/fdh2fd.h
  27.     gcc -E -P -include ../macro/fdh2fd.h $(TARGET)_fd.h | \
  28.     sort -n | \
  29.     ( echo "@basevar.SysBase;"; \
  30.       gawk '{ if($$1!=""){ if(offset!=$$1) print "@offset." $$1 ";"; \
  31.             offset=$$1+1; for(i=2;i<=NF;i++) print $$i } }' ) | \
  32.     tr -d ' \t\n' | tr '.;' ' \n' >$@
  33.  
  34. _$(TARGET).h: $(TARGET)_fd.h
  35.     ( echo "#define LIBBASE $(LIBBASE)"; \
  36.       echo "#define LIBTYPE $(LIBTYPE) *"; ) >_base.h
  37.     ( echo "%ifndef __$(TARGET)_h_^"; \
  38.       echo "%define __$(TARGET)_h_^"; \
  39.       ( for lib in $(PREINCLUDE); do echo "%include <$$lib.h>^"; done ); \
  40.       echo "$(LIBTYPE);^"; \
  41.       gcc -E -P -include ../macro/fdh2_h.h -include _base.h $(TARGET)_fd.h; \
  42.       echo "%endif"; ) | \
  43.     tr -d '\n' | tr '^%' '\n#' >$@
  44.     -rm _base.h
  45.  
  46. lib$(TARGET).a: $(TARGET).fd
  47.     mkdir tmp
  48.     cd tmp;../../genglue/genglue -s ../$(TARGET).fd
  49.     cd tmp;../../genglue/genglue -s -l -p _ ../$(TARGET).fd
  50.     cd tmp;gcc -c *.s
  51.     cd tmp;ar -q ../lib$(TARGET).a *.o
  52.     rm -r tmp
  53.  
  54. lib_$(TARGET).a: $(TARGET).fd $(TARGET).fc
  55.     mkdir tmp
  56.     cd tmp;../../genglue/genglue -s -r -l -p __ -q ___ ../$(TARGET).fd
  57.     cd tmp;../../genglue/genglue -s -l ../$(TARGET).fc
  58.     cd tmp;../../genglue/genglue -s -r -l -p __ -q ___ ../$(TARGET).fc
  59.     cd tmp;gcc -c *.s
  60.     cd tmp;ar -q ../lib_$(TARGET).a *.o
  61.     rm -r tmp
  62.