home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 18 REXX / 18-REXX.zip / rximc175.zip / Makefile.REXXimc < prev    next >
Makefile  |  1999-02-11  |  6KB  |  207 lines

  1. #Makefile for REXX/imc
  2.  
  3. SO = librexx.so
  4. SONAME= $(SO).$(VER)
  5.  
  6. DATE = -DDAY=$(RXDAY) -DMONTH=$(RXMONTH) -DYEAR=$(RXYEAR)
  7.  
  8. REXX = $(BINDIR)/rexx rxque rxstack $(MATH)
  9. RXCFILES = $(SRC)/rexx.c $(SRC)/util.c $(SRC)/calc.c $(SRC)/rxfn.c $(SRC)/shell.c \
  10.            $(SRC)/interface.c $(SRC)/globals.c $(SRC)/main.c $(SRC)/rxmathfn.c
  11. CFILES = $(RXCFILES) $(SRC)/rxque.c $(SRC)/rxstack.c
  12. OFILES = rxfn.o calc.o util.o shell.o interface.o globals.o main.o rexx.o
  13. LIBFILES = rexx.o rxfn.o calc.o util.o shell.o interface.o globals.o
  14. HFILES = $(SRC)/const.h $(SRC)/globals.h $(SRC)/functions.h $(SRC)/rexxsaa.h
  15. JUNKFILES = *.o rexx rxque rxstack rxmathfn.rxfn librexx.* rexx.1
  16. FILEDEFS = -DREXXIMC=\"$(REXXIMC)\" -DREXXLIB=\"$(REXXLIBDIR)\"
  17.  
  18. default:
  19.     @echo "REXX/imc make must be invoked via: Make [check|test|install]"
  20.  
  21. all: $(REXX) rexx.1
  22.  
  23. # Install does a final "build" because the use of dynamic libraries are best
  24. # linked within the module than thru LD_LIBRARY_PATH.  This avoids penalizing 
  25. # the entire system's performance...
  26. #
  27. # rxque and rxstack are not linked to the dynamic library so they can just
  28. # be copied.  The math functions are also copied.
  29.  
  30. install: install-pgm install-fn install-man
  31.  
  32. install-pgm: all
  33.     $(VERBOSE) "install-pgm:"
  34.     cp -p rxque rxstack $(BINDIR)
  35.  
  36. install-fn: $(MATH)
  37.     $(VERBOSE) "install-fn:"
  38.     test -f rxmathfn.rxfn && cp -p rxmathfn.rxfn $(SRC)/rxmathfn.rxlib $(REXXLIBDIR) \
  39.     || cp -p $(SRC)/rxmathfn.rexx $(SRC)/rxmathfn.rxlib $(REXXLIBDIR)
  40.  
  41. install-man: rexx.1
  42.     $(VERBOSE) "install-man:"
  43.     cp -p rexx.1 $(SRC)/rxque.1 $(SRC)/rxstack.1 $(MANDIR)
  44.  
  45. uninstall: uninstall-pgm uninstall-fn uninstall-man
  46.  
  47. uninstall-pgm:
  48.     $(VERBOSE) "uninstall-pgm:"
  49.     rm -f $(LIBDIR)/librexx.* $(BINDIR)/rexx $(BINDIR)/rxque $(BINDIR)/rxstack 
  50.  
  51. # uninstall removes the math lib from both old and new locations
  52. uninstall-fn:
  53.     $(VERBOSE) "uninstall-fn:"
  54.     rm -f $(BINDIR)/rxmathfn.rxfn $(BINDIR)/rxmathfn.exec $(BINDIR)/rxmathfn.rxlib \
  55.     $(REXXLIBDIR)/rxmathfn.rxfn $(REXXLIBDIR)/rxmathfn.rexx $(REXXLIBDIR)/rxmathfn.rxlib
  56.  
  57. uninstall-man:
  58.     $(VERBOSE) "uninstall-man:"
  59.     rm -f $(MANDIR)/rexx.1 $(MANDIR)/rxque.1 $(MANDIR)/rxstack.1
  60.  
  61. $(BINDIR)/rexx: main.o $(REXXLIB) $(SOLINK)
  62.     $(VERBOSE) "$(BINDIR)/rexx:"
  63.     $(LINK) $(OPTFLAG) $(LINKFLAG) $(DEBUG) $(USEDLLFLAG) -o $(BINDIR)/rexx main.o \
  64.     -L$(LIBDIR) $(LREXX) $(LIBRARIES) $(RUNLIBS)
  65.  
  66. $(LIBDIR)/$(SONAME): $(LIBFILES)
  67.     $(VERBOSE) "$(LIBDIR)/$(SONAME):"
  68.     $(LD) -o $(LIBDIR)/$(SONAME) $(DLLFLAG) $(LIBFILES)
  69.  
  70. $(LIBDIR)/$(SO): $(LIBDIR)/$(SONAME)
  71.     $(VERBOSE) "$(LIBDIR)/$(SO):"
  72.     rm -f $(LIBDIR)/$(SO)
  73.     ln -s $(SONAME) $(LIBDIR)/$(SO)
  74.  
  75. $(LIBDIR)/librexx.a: $(LIBFILES)
  76.     $(VERBOSE) "$(LIBDIR)/librexx.a:"
  77.     ar rc $(LIBDIR)/librexx.a $(LIBFILES)
  78.     $(RANLIB) $(LIBDIR)/librexx.a
  79.  
  80. rexx.1: $(SRC)/rexx.1.in
  81.     $(VERBOSE) "rexx.1:"
  82.     @if test -n "$(REXXLIBDIR)"; then text=": $(REXXLIBDIR)";\
  83.     else text=" whichever directory the \\\\fBrxque\\\\fR(1) utility is found in at run time";\
  84.     fi;set -x;sed -e "s|@REXXLIBDIR@|$$text|" $(SRC)/rexx.1.in > rexx.1
  85.  
  86. #rexx: $(BINDIR)/rexx           # make knows this already, since BINDIR="."
  87.  
  88. librexx.a: $(LIBDIR)/librexx.a  # make doesn't know this already, since LIBDIR=`pwd`
  89.  
  90. librexx.so: $(LIBDIR)/$(SONAME) $(SOLINK)
  91.  
  92. rxque: $(SRC)/rxque.c
  93.     $(VERBOSE) "rxque:"
  94.     $(CC) $(OPTFLAG) $(CCFLAG) -I$(SRC) -c $(SRC)/rxque.c
  95.     $(LINK) $(OPTFLAG) $(LINKFLAG) -o rxque rxque.o $(LIBRARIES)
  96.     @rm rxque.o
  97.  
  98. rxstack: $(SRC)/rxstack.c
  99.     $(VERBOSE) "rxstack:"
  100.     $(CC) $(OPTFLAG) $(CCFLAG) -I$(SRC) -c $(SRC)/rxstack.c
  101.     $(LINK) $(OPTFLAG) $(LINKFLAG) -o rxstack rxstack.o $(LIBRARIES)
  102.     @rm rxstack.o
  103.  
  104. # compile individual object files:
  105.  
  106. rex: rexx.o
  107.  
  108. rxfn: rxfn.o
  109.  
  110. calc: calc.o
  111.  
  112. util: util.o
  113.  
  114. shell: shell.o
  115.  
  116. api: interface.o
  117.  
  118. main: main.o
  119.  
  120. math: rxmathfn.rxfn
  121.  
  122. # The junk files are all in the current directory.
  123. clean:
  124.     $(VERBOSE) "clean:"
  125.     rm -f $(JUNKFILES)
  126.  
  127. lint: $(HFILES) $(CFILES)
  128.     $(VERBOSE) "lint:"
  129.     @echo lint $(RXCFILES)
  130.     @(lint $(DATE) $(FILEDEFS) -I$(SRC) $(RXCFILES);\
  131.     echo rxque.c:;\
  132.     echo lint rxque.c >&2;\
  133.     lint -I$(SRC) $(SRC)/rxque.c;\
  134.     echo rxstack.c:;\
  135.     echo lint rxstack.c >&2;\
  136.     lint -I$(SRC) $(SRC)/rxstack.c) | $(SRC)/lintfilter
  137.     @echo "Messages are in /tmp/lint"
  138.  
  139. interface.o: $(SRC)/interface.c $(HFILES)
  140.     $(VERBOSE) "interface.o:"
  141.     $(CC) $(OPTFLAG) $(CCFLAG) -c $(PIC) $(DATE) $(FILEDEFS) -I$(SRC) $(SRC)/interface.c
  142.  
  143. rxmathfn.rxfn: $(SRC)/rxmathfn.c $(SRC)/const.h $(SRC)/functions.h
  144.     $(VERBOSE) "rxmathfn.rxfn:"
  145.     $(CC) $(OPTFLAG) $(CCFLAG) -c $(PIC) -I$(SRC) $(SRC)/rxmathfn.c
  146.     $(LD) $(SOFLAG) -o rxmathfn.rxfn rxmathfn.o -lm
  147.     @rm rxmathfn.o
  148.  
  149. # If the source is in the current directory, this rule can be used.
  150. .c.o: $(HFILES)
  151.     $(VERBOSE) ".c.o:"
  152.     $(CC) $(OPTFLAG) $(CCFLAG) -c $(PIC) $*.c
  153.  
  154. # This rule works whether or not the source is in the current directory,
  155. # but some "make"s don't understand the '%' notation (hence the previous
  156. # rule).
  157. %.o:$(SRC)/%.c $(HFILES)
  158.     $(VERBOSE) ".c.o:"
  159.     $(CC) $(OPTFLAG) $(CCFLAG) -c $(PIC) -I$(SRC) $(SRC)/$*.c
  160.  
  161. check:
  162.     @echo ""
  163.     @echo "********************* make var check ************************"
  164.     @echo ""
  165.     @echo These are the variables which make would have been invoked with:
  166.     @echo ""
  167.     @echo VER=$(VER)
  168.     @echo RXDAY=$(RXDAY)
  169.     @echo RXMONTH=$(RXMONTH)
  170.     @echo RXYEAR=$(RXYEAR)
  171.     @echo DATE=$(DATE)
  172.     @echo ""
  173.     @echo VERBOSE=$(VERBOSE)
  174.     @echo DEBUG=$(DEBUG)
  175.     @echo ""
  176.     @echo SRC=$(SRC)
  177.     @echo LIBDIR=$(LIBDIR)
  178.     @echo BINDIR=$(BINDIR)
  179.     @echo MANDIR=$(MANDIR)
  180.     @echo REXXIMC=$(REXXIMC)
  181.     @echo REXXLIBDIR=$(REXXLIBDIR)
  182.     @echo REXXLIB=$(REXXLIB)
  183.     @echo MATH=$(MATH)
  184.     @echo ""
  185.     @echo PATH=$(PATH)
  186.     @echo CC=$(CC)
  187.     @echo OPTFLAG=$(OPTFLAG)
  188.     @echo CCFLAG=$(CCFLAG)
  189.     @echo PIC=$(PIC)
  190.     @echo USEDLLFLAG=$(USEDLLFLAG)
  191.     @echo ""
  192.     @echo LINK="$(LINK)"
  193.     @echo LD=$(LD)
  194.     @echo LINKFLAG=$(LINKFLAG)
  195.     @echo DLLFLAG=$(DLLFLAG)
  196.     @echo SOFLAG=$(SOFLAG)
  197.     @echo SO=$(SO)
  198.     @echo SONAME=$(SONAME)
  199.     @echo SOLINK=$(SOLINK)
  200.     @echo RUNLIBS=$(RUNLIBS)
  201.     @echo LIBRARIES=$(LIBRARIES)
  202.     @echo LREXX=$(LREXX)
  203.     @echo RANLIB=$(RANLIB)
  204.     @echo ""
  205.     @echo "********************* make var check ************************"
  206.     @echo ""
  207.