home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / octave-1.1.1p1-src.tgz / tar.out / fsf / octave / src / Makefile.in < prev    next >
Makefile  |  1996-09-28  |  7KB  |  235 lines

  1. #
  2. # Makefile for octave's src directory
  3. #
  4. # John W. Eaton
  5. # jwe@che.utexas.edu
  6. # Department of Chemical Engineering
  7. # The University of Texas at Austin
  8.  
  9. TOPDIR = ..
  10.  
  11. srcdir = @srcdir@
  12. top_srcdir = @top_srcdir@
  13. VPATH = @srcdir@
  14.  
  15. include $(TOPDIR)/Makeconf
  16.  
  17. INSTALL = @INSTALL@
  18. INSTALL_PROGRAM = @INSTALL_PROGRAM@
  19. INSTALL_DATA = @INSTALL_DATA@
  20. # Amiga hack - we have 'ln' and 'ln -s', but they seem to cause
  21. # more problems than they solve.
  22. LN = cp
  23. # Cancel default rule for .c from .y and make .cc from .y instead.
  24.  
  25. %.c : %.y
  26.  
  27. %.cc : %.y
  28.     $(YACC) $(YFLAGS) $<
  29.     @$(top_srcdir)/move-if-change y.tab.c $(@F)
  30.  
  31. # Likewise for .c from .l.
  32.  
  33. %.c : %.l
  34.  
  35. %.cc : %.l
  36.     $(LEX) $(LFLAGS) $< > $(@F)
  37.  
  38. XALL_CXXFLAGS_1 = $(subst -fexternal-templates, , $(ALL_CXXFLAGS))
  39. XALL_CXXFLAGS = $(subst -fno-implicit-templates, , $(XALL_CXXFLAGS_1))
  40.  
  41. %.def : %.cc
  42.     @echo making $@ from $<
  43.     @$(CXXCPP) -c $(CPPFLAGS) $(XALL_CXXFLAGS) -DMAKE_BUILTINS $< \
  44.       | $(srcdir)/mkdefs > $@.tmp
  45.     @if test `wc $@.tmp | sed 's%[^0-9]*\([0-9]*\).*%\1%'` -ne 0 ; then \
  46.       mv $@.tmp $@ ; \
  47.     else \
  48.       echo "error: $@ is empty!" 1>&2 ; \
  49.       rm -f $@.tmp ; \
  50.       exit 1 ; \
  51.     fi
  52.  
  53. DLD_SRC := f-balance.cc f-chol.cc f-colloc.cc f-dassl.cc f-det.cc \
  54.     f-eig.cc f-expm.cc f-fft.cc f-fft2.cc f-find.cc \
  55.     f-fsolve.cc f-fsqp.cc f-givens.cc f-hess.cc f-ifft.cc \
  56.     f-ifft2.cc f-inv.cc f-log.cc f-lpsolve.cc f-lsode.cc f-lu.cc \
  57.     f-minmax.cc f-npsol.cc f-pinv.cc f-qpsol.cc f-qr.cc f-quad.cc \
  58.     f-qzval.cc f-rand.cc f-schur.cc f-sort.cc f-svd.cc f-syl.cc
  59.  
  60. DLD_OBJ := $(patsubst %.cc, %.o, $(DLD_SRC))
  61.  
  62. INCLUDES := arith-ops.h builtins.h defaults.h.in defun.h defun-dld.h \
  63.     defun-int.h dirfns.h dynamic-ld.h error.h file-io.h fnmatch.h \
  64.     getopt.h gripes.h help.h idx-vector.h input.h lex.h \
  65.     load-save.h mappers.h missing-math.h octave.h octave-hist.h \
  66.     oct-map.h oct-obj.h pager.h parse.h pr-output.h procstream.h \
  67.     sighandlers.h statdefs.h symtab.h sysdep.h systime.h token.h \
  68.     tree-base.h tree-cmd.h tree-const.h tree-expr.h tree-misc.h \
  69.     tree-plot.h tc-inlines.h tc-rep.h unwind-prot.h user-prefs.h \
  70.     utils.h variables.h version.h xdiv.h xpow.h Map.h SLStack.h \
  71.     Stack.h
  72.  
  73. TI_SRC := Array-tc.cc Map-tc.cc DLList-fi.cc \
  74.     SLList-expr.cc SLList-misc.cc SLList-plot.cc SLList-tc.cc \
  75.     SLStack-i.cc SLStack-pc.cc SLStack-sym.cc SLStack-tok.cc \
  76.     SLStack-tm.cc SLStack-ue.cc SLStack-ui.cc
  77.  
  78. TI_OBJ := $(patsubst %.cc, %.o, $(TI_SRC))
  79.  
  80. SOURCES := acosh.c arith-ops.cc asinh.c atanh.c data.cc dirfns.cc \
  81.     dynamic-ld.cc erf.c erfc.c error.cc file-io.cc fnmatch.c \
  82.     getopt.c getopt1.c gripes.cc help.cc idx-vector.cc input.cc \
  83.     lex.l lgamma.c load-save.cc mappers.cc octave.cc \
  84.     octave-hist.cc oct-obj.cc pager.cc parse.y pr-output.cc \
  85.     procstream.cc sighandlers.cc strcasecmp.c strncase.c strfns.cc \
  86.     symtab.cc sysdep.cc tc-rep.cc tc-rep-ass.cc tc-rep-idx.cc \
  87.     tempname.c timefns.cc tempnam.c token.cc tree-base.cc \
  88.     tree-cmd.cc tree-const.cc tree-expr.cc tree-misc.cc \
  89.     tree-plot.cc unwind-prot.cc user-prefs.cc utils.cc \
  90.     variables.cc xdiv.cc xpow.cc Map.cc SLStack.cc
  91.  
  92. OBJECTS_4 := $(SOURCES) builtins.o
  93. OBJECTS_3 := $(patsubst %.l, %.o, $(OBJECTS_4))
  94. OBJECTS_2 := $(patsubst %.y, %.o, $(OBJECTS_3))
  95. OBJECTS_1 := $(patsubst %.c, %.o, $(OBJECTS_2))
  96. OBJECTS := $(patsubst %.cc, %.o, $(OBJECTS_1))
  97.  
  98. # Ugh.
  99.  
  100. DEP_SOURCES_3 := $(SOURCES) $(TI_SOURCES) builtins.cc
  101. DEP_SOURCES_2 := $(patsubst %.l, %.cc, $(DEP_SOURCES_3))
  102. DEP_SOURCES_1 := $(patsubst %.y, %.cc, $(DEP_SOURCES_2))
  103. DEP_SOURCES := $(patsubst %.c, %.d, $(DEP_SOURCES_1))
  104. MAKEDEPS := $(patsubst %.cc, %.d, $(DEP_SOURCES))
  105.  
  106. DEF_FILES_5 := $(SOURCES) $(DLD_SRC)
  107. DEF_FILES_4 := $(addprefix $(srcdir)/, $(DEF_FILES_5))
  108. DEF_FILES_3 := $(notdir $(shell grep -l "^DEFUN" $(DEF_FILES_4)))
  109. DEF_FILES_2 := $(patsubst %.y, %.def, $(DEF_FILES_3))
  110. DEF_FILES_1 := $(patsubst %.l, %.def, $(DEF_FILES_2))
  111. DEF_FILES := $(patsubst %.cc, %.def, $(DEF_FILES_1))
  112.  
  113. # Don't leave the LIBDLD thing on a line by itself.  It may expand to
  114. # nothing.
  115.  
  116. OCTAVE_LIBS = @LIBOCTDLD@ ../liboctave/liboctave.a libtinst.a \
  117.     ../libcruft/libcruft.a ../info/libinfo.a \
  118.     ../readline/libreadline.a \
  119.     ../kpathsea/libkpathsea.a @LIBDLD@
  120.  
  121. DISTFILES = Makefile.in mkdefs mkbuiltins \
  122.     parse.cc lex.cc y.tab.h $(INCLUDES) $(DLD_SRC) $(SOURCES) \
  123.     $(TI_SRC) 
  124.  
  125. all: defaults.h octave
  126. .PHONY: all
  127.  
  128. octave: $(OBJECTS) $(DLD_OBJ) $(OCTAVE_LIBS) liboctdld.a
  129.     $(CXX) $(CPPFLAGS) $(ALL_CXXFLAGS) $(ALL_LDFLAGS) -o octave \
  130.     $(OBJECTS) \
  131.     $(OCTAVE_LIBS) \
  132.     $(FLIBS) $(LEXLIB) -ltermcap -lm -lg++
  133.  
  134. liboctdld.a: $(DLD_OBJ)
  135.     $(AR) $(ARFLAGS) liboctdld.a $(DLD_OBJ)
  136.     $(RANLIB) liboctdld.a
  137.  
  138. libtinst.a: $(TI_OBJ)
  139.     $(AR) $(ARFLAGS) libtinst.a $(TI_OBJ)
  140.     $(RANLIB) libtinst.a
  141.  
  142. builtins.cc: $(DEF_FILES) mkbuiltins
  143.     @echo making $@ from $(DEF_FILES)
  144.     @$(srcdir)/mkbuiltins $(DEF_FILES) > $@.tmp
  145.     @$(top_srcdir)/move-if-change $@.tmp $@
  146.  
  147. $(DEF_FILES): mkdefs defun-int.h defun-dld.h defun.h defaults.h
  148.  
  149. $(MAKEDEPS): defaults.h
  150.  
  151. check: all
  152. .PHONY: check
  153.  
  154. install: all
  155.     $(top_srcdir)/mkinstalldirs $(bindir) $(libdir)
  156.     rm -f $(bindir)/octave
  157.     $(INSTALL) octave $(bindir)/octave-$(version)
  158.     $(LN) $(bindir)/octave-$(version) $(bindir)/octave
  159.     if $(OCTAVE_LITE) && $(WITH_DLD) ; then \
  160.       $(INSTALL_DATA) liboctdld.a $(libdir)/liboctdld.a ; \
  161.     else \
  162.       true ; \
  163.     fi
  164. .PHONY: install
  165.  
  166. uninstall:
  167.     rm -f $(bindir)/octave
  168. .PHONY: uninstall
  169.  
  170. tags: $(SOURCES) $(DLD_SRC) $(TI_SRC)
  171.     ctags $(SOURCES) $(DLD_SRC) $(TI_SRC)
  172.  
  173. TAGS: $(SOURCES) $(DLD_SRC) $(TI_SRC)
  174.     etags $(SOURCES) $(DLD_SRC) $(TI_SRC)
  175.  
  176. clean:
  177.     rm -f *.a *.o builtins.cc
  178. .PHONY: clean
  179.  
  180. mostlyclean:
  181.     rm -f *.o
  182. .PHONY: mostlyclean
  183.  
  184. distclean: clean
  185.     rm -f Makefile octave .fname *.d *.def
  186. .PHONY: distclean
  187.  
  188. realclean: distclean
  189.     rm -f tags TAGS y.tab.c y.tab.h y.output yy.lex.c \
  190.     lex.cc parse.cc defaults.h *.d *.def
  191. .PHONY: realclean
  192.  
  193. local-dist: parse.cc lex.cc
  194.     $(LN) $(DISTFILES) ../`cat ../.fname`/src
  195.     rm -f parse.cc lex.cc y.tab.h y.output yy.lex.c
  196.     rm -f lex.cc parse.cc defaults.h *.d *.def
  197. .PHONY: local-dist
  198.  
  199. dist: parse.cc lex.cc
  200.     $(LN) $(DISTFILES) ../`cat ../.fname`/src
  201.     rm -f parse.cc lex.cc y.tab.h y.output yy.lex.c
  202.     rm -f lex.cc parse.cc defaults.h *.d *.def builtins.cc
  203. .PHONY: dist
  204.  
  205. # Special rules -- these files need special things to be defined.
  206.  
  207. defaults.h: defaults.h.in ../Makeconf Makefile
  208.     @echo "making defaults.h from defaults.h.in"
  209.     @(sed < $< > $@.tmp \
  210.       -e "s;%DEFAULT_PAGER%;\"${DEFAULT_PAGER}\";" \
  211.       -e "s;%OCTAVE_PREFIX%;\"${prefix}\";" \
  212.       -e "s;%OCTAVE_EXEC_PREFIX%;\"${exec_prefix}\";" \
  213.       -e "s;%OCTAVE_DATADIR%;\"${datadir}\";" \
  214.       -e "s;%OCTAVE_BINDIR%;\"${bindir}\";" \
  215.       -e "s;%OCTAVE_LIBDIR%;\"${libdir}\";" \
  216.       -e "s;%OCTAVE_INFODIR%;\"${infodir}\";" \
  217.       -e "s;%OCTAVE_FCNFILEDIR%;\"${fcnfiledir}\";" \
  218.       -e "s;%OCTAVE_LOCALFCNFILEPATH%;\"${localfcnfilepath}\";" \
  219.       -e "s;%OCTAVE_ARCHLIBDIR%;\"${archlibdir}\";" \
  220.       -e "s;%OCTAVE_OCTFILEDIR%;\"${octfiledir}\";" \
  221.       -e "s;%OCTAVE_LOCALOCTFILEPATH%;\"${localoctfilepath}\";" \
  222.       -e "s;%OCTAVE_FCNFILEPATH%;\"${fcnfilepath}\";" \
  223.       -e "s;%OCTAVE_IMAGEPATH%;\"${imagepath}\";" \
  224.       -e "s;%TARGET_HOST_TYPE%;\"${target_host_type}\";" \
  225.       -e "s;%FLIB_LIST%;\"${FLIB_LIST}\";" \
  226.       -e "s;%FLIB_PATH%;\"${FLIB_PATH}\";" \
  227.       -e "s;%CXXLIB_LIST%;\"${CXXLIB_LIST}\";" \
  228.       -e "s;%CXXLIB_PATH%;\"${CXXLIB_PATH}\";")
  229.     @$(top_srcdir)/move-if-change $@.tmp $@
  230.  
  231. check: all
  232. .PHONY: check
  233.  
  234. -include $(MAKEDEPS)
  235.