home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 2 / FFMCD02.bin / new / dev / misc / p2c / src / makefile < prev    next >
Makefile  |  1993-12-21  |  5KB  |  208 lines

  1. # Makefile for "p2c", the Pascal to C translator.
  2. #  Copyright (C) 1989, 1990, 1991 Free Software Foundation.
  3. #  Author: Dave Gillespie.
  4. #  Author's address: daveg@csvax.caltech.edu; 256-80 Caltech/Pasadena CA 91125.
  5.  
  6. # This program is free software; you can redistribute it and/or modify
  7. # it under the terms of the GNU General Public License as published by
  8. # the Free Software Foundation (any version).
  9.  
  10. # This program is distributed in the hope that it will be useful,
  11. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13. # GNU General Public License for more details.
  14.  
  15. # You should have received a copy of the GNU General Public License
  16. # along with this program; see the file COPYING.  If not, write to
  17. # the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  18.  
  19.  
  20. # Directories (private version)
  21. HOMEDIR = ../home
  22. INCDIR = ../home/p2c
  23. BINDIR = ..
  24. LIBDIR = ../home
  25. MANDIR = ../home
  26. MANFILE = p2c.cat          # human-readable manual (for cat.1)
  27. #MANFILE = p2c.man.inst    # uncompressed nroff source (for man.1)
  28. #MANFILE = p2c.man.Z       # compressed nroff source (for man.1.Z)
  29.  
  30. # Directories (public version)
  31. #HOMEDIR = /usr/lib/p2c
  32. #INCDIR = /usr/include/p2c
  33. #BINDIR = /usr/bin
  34. #LIBDIR = /usr/lib
  35. #MANDIR = /usr/man/man1
  36. #MANFILE = p2c.man.inst
  37.  
  38. # Compiler options
  39. CC = cc                    # you may wish to use gcc here instead
  40. OPT = # -O           # uncomment this for optimization
  41. DEB = # -g           # uncomment this for debugging
  42. DEFS =               # place other -D types of things here
  43. CFLAGS = $(OPT) $(DEB) $(DEFS)
  44. LFLAGS =
  45.  
  46.  
  47. # Custom translator modules
  48. CUSTSRCS = hpmods.c citmods.c
  49. CUSTOBJS = hpmods.o citmods.o
  50. CUSTDEFS = -DCUST1=hpmods -DCUST2=citmods
  51.  
  52.  
  53. # File names
  54. P2CSRCS = trans.c stuff.c out.c comment.c lex.c parse.c decl.c \
  55.           expr.c pexpr.c funcs.c dir.c
  56. P2COBJS = trans.o stuff.o out.o comment.o lex.o parse.o decl.o \
  57.           expr.o pexpr.o funcs.o dir.o
  58.  
  59. SRCS = $(P2CSRCS) $(CUSTSRCS)
  60. OBJS = $(P2COBJS) $(CUSTOBJS)
  61.  
  62. LIBSRCS = p2clib.c loc.p2clib.c
  63. LIBOBJS = p2clib.o loc.p2clib.o
  64. OTHERLIBOBJS =
  65.  
  66. ABSHOMEDIR = `cd $(HOMEDIR); pwd`
  67. ABSINCDIR = `cd $(INCDIR); pwd`
  68. ABSLIBDIR = `cd $(LIBDIR); pwd`
  69.  
  70. MISCSRCS = makeproto.c
  71. PROTOS = p2c.proto p2c.hdrs
  72. HDRS = trans.h p2c.h
  73.  
  74.  
  75. # Top-level targets
  76. all: proto p2c libp2c.a p2c.cat
  77. proto: $(PROTOS)
  78.  
  79.  
  80. # Making p2c
  81. p2c: $(OBJS)
  82.     $(CC) $(LFLAGS) $(OBJS) -o p2c
  83.  
  84. dir.o: dir.c trans.h
  85.     $(CC) -c $(CFLAGS) $(CUSTDEFS) dir.c
  86.  
  87. trans.o: trans.c trans.h
  88.     $(CC) -c $(CFLAGS) -DHASDUMPS -DP2C_HOME=\"$(ABSHOMEDIR)\" trans.c
  89.  
  90.  
  91. # Making and using makeproto
  92. p2c.hdrs: $(SRCS) makeproto
  93.     ./makeproto -n -m -h -t16 -a35 -s0 -x $(SRCS) -o p2c.hdrs
  94.  
  95. p2c.proto: $(SRCS) makeproto
  96.     ./makeproto -n -m -h -t16 -a35 -s1 -i $(SRCS) -o p2c.proto
  97.  
  98. makeproto: makeproto.c
  99.     $(CC) $(CFLAGS) $(LFLAGS) makeproto.c -o makeproto
  100.  
  101.  
  102. # Making the p2c runtime library
  103. libp2c.a: $(LIBOBJS)
  104.     ar r libp2c.a $(LIBOBJS) $(OTHERLIBOBJS)
  105.  
  106. p2clib.o: p2clib.c
  107.     $(CC) -c $(CFLAGS) p2clib.c
  108.  
  109.  
  110. # Making the p2c man page
  111. p2c.man.inst: p2c.man
  112.     sed -e "s;--HOMEDIR--;$(ABSHOMEDIR);"   \
  113.             -e "s;--INCDIR--;$(ABSINCDIR);"     \
  114.             -e "s;--LIBDIR--;$(ABSLIBDIR);"     \
  115.             p2c.man >p2c.man.inst
  116.  
  117. p2c.man.Z: p2c.man.inst
  118.     compress -c p2c.man.inst >p2c.man.Z
  119.  
  120. p2c.cat: p2c.man.inst
  121.     if [ -f /usr/bin/nroff -o -f /bin/nroff ];  \
  122.         then nroff -man p2c.man.inst >p2c.cat; fi
  123.  
  124.  
  125.  
  126. # Initially installing p2c:
  127. #  First, make sure $(HOMEDIR) and $(INCDIR) exist and are writable;
  128. #  Second, make sure $(LIBDIR), $(BINDIR) and $(MANDIR) are writable;
  129. #  Third, execute "make install" to compile and set things up.
  130. # (You may need to have a system operator do these steps for you.)
  131.  
  132. COPY = cp
  133.  
  134. newhome:
  135.     rm -f trans.o     # force trans.c to be recompiled (if HOMEDIR changes)
  136.  
  137. install: proto \
  138.     makedirs \
  139.     $(BINDIR)/p2c         \
  140.     $(LIBDIR)/libp2c.a    \
  141.     $(MANDIR)/p2c.1          \
  142.     $(INCDIR)/p2c.h          \
  143.     $(HOMEDIR)/p2crc      \
  144.     $(HOMEDIR)/loc.p2crc  \
  145.     $(HOMEDIR)/system.imp \
  146.     $(HOMEDIR)/system.m2  \
  147.     $(HOMEDIR)/turbo.imp  \
  148.     $(HOMEDIR)/string.pas
  149.  
  150. SHELL=/bin/sh
  151. makedirs:
  152.     if [ ! -d $(HOMEDIR) ]; then mkdir $(HOMEDIR); fi
  153.     if [ ! -d $(BINDIR) ]; then mkdir $(BINDIR); fi
  154.     if [ ! -d $(LIBDIR) ]; then mkdir $(LIBDIR); fi
  155.     if [ ! -d $(MANDIR) ]; then mkdir $(MANDIR); fi
  156.     if [ ! -d $(INCDIR) ]; then mkdir $(INCDIR); fi
  157.  
  158. $(BINDIR)/p2c: p2c
  159.     $(COPY)  p2c          $(BINDIR)/p2c
  160.  
  161. $(LIBDIR)/libp2c.a: libp2c.a
  162.     $(COPY)  libp2c.a     $(LIBDIR)/libp2c.a
  163.     if [ -f /usr/bin/ranlib -o -f /bin/ranlib ]; then ranlib $(LIBDIR)/libp2c.a; fi
  164.  
  165. $(MANDIR)/p2c.1: $(MANFILE)
  166.     $(COPY)  $(MANFILE)   $(MANDIR)/p2c.1
  167.  
  168. $(INCDIR)/p2c.h: p2c.h
  169.     $(COPY)  p2c.h        $(INCDIR)/p2c.h
  170.  
  171. $(HOMEDIR)/p2crc: sys.p2crc
  172.     $(COPY)  sys.p2crc    $(HOMEDIR)/p2crc
  173.  
  174. $(HOMEDIR)/loc.p2crc: loc.p2crc
  175.     $(COPY)  loc.p2crc    $(HOMEDIR)/loc.p2crc
  176.  
  177. $(HOMEDIR)/system.imp: system.imp
  178.     $(COPY)  system.imp   $(HOMEDIR)/system.imp
  179.  
  180. $(HOMEDIR)/system.m2: system.m2
  181.     $(COPY)  system.m2    $(HOMEDIR)/system.m2
  182.  
  183. $(HOMEDIR)/turbo.imp: turbo.imp
  184.     $(COPY)  turbo.imp    $(HOMEDIR)/turbo.imp
  185.  
  186. $(HOMEDIR)/string.pas: string.pas
  187.     $(COPY)  string.pas   $(HOMEDIR)/string.pas
  188.  
  189.  
  190.  
  191. # Miscellaneous
  192. tags:
  193.     etags $(SRCS) $(LIBSRCS) $(MISCSRCS) $(HDRS)
  194.  
  195. clean.o:
  196.     rm $(OBJS)
  197.  
  198. clean:
  199.     rm $(OBJS) $(LIBOBJS) $(PROTOS) p2c
  200.  
  201. wc:
  202.     wc $(SRCS) $(LIBSRCS) trans.h
  203.  
  204. test:
  205.     echo '"make test" should be used in the outer-level p2c directory.'
  206.     echo 'Type "cd .." and "make test" again.'
  207.  
  208.