Mercurial > hg > octave-nkf
changeset 1684:f85887dfe06c
[project @ 1995-12-30 03:46:07 by jwe]
author | jwe |
---|---|
date | Sat, 30 Dec 1995 03:51:15 +0000 |
parents | 5282f171363d |
children | 5738406d6759 |
files | src/Makefile.in src/balance.cc src/chol.cc src/colloc.cc src/dassl.cc src/defun-dld.h src/det.cc src/eig.cc src/expm.cc src/fft.cc src/fft2.cc src/filter.cc src/find.cc src/fsolve.cc src/fsqp.cc src/givens.cc src/hess.cc src/ifft.cc src/ifft2.cc src/inv.cc src/log.cc src/lpsolve.cc src/lsode.cc src/lu.cc src/minmax.cc src/npsol.cc src/octave.cc src/pinv.cc src/qpsol.cc src/qr.cc src/quad.cc src/qzval.cc src/rand.cc src/schur.cc src/sort.cc src/svd.cc src/syl.cc |
diffstat | 37 files changed, 200 insertions(+), 713 deletions(-) [+] |
line wrap: on
line diff
--- a/src/Makefile.in +++ b/src/Makefile.in @@ -40,33 +40,58 @@ @echo making $@ from $< @$(CXXCPP) -c $(CPPFLAGS) $(XALL_CXXFLAGS) -DMAKE_BUILTINS $< \ | $(srcdir)/mkdefs > $@.tmp - @if test `wc $@.tmp | sed 's%[^0-9]*\([0-9]*\).*%\1%'` -ne 0 ; then \ - mv $@.tmp $@ ; \ - else \ - echo "error: $@ is empty!" 1>&2 ; \ - rm -f $@.tmp ; \ - exit 1 ; \ - fi + @mv $@.tmp $@ + +# How to make a .oct file from a .o file: -DLD_SRC := f-balance.cc f-chol.cc f-colloc.cc f-dassl.cc f-det.cc \ - f-eig.cc f-expm.cc f-fft.cc f-fft2.cc f-filter.cc f-find.cc \ - f-fsolve.cc f-fsqp.cc f-givens.cc f-hess.cc f-ifft.cc \ - f-ifft2.cc f-inv.cc f-log.cc f-lpsolve.cc f-lsode.cc f-lu.cc \ - f-minmax.cc f-npsol.cc f-pinv.cc f-qpsol.cc f-qr.cc f-quad.cc \ - f-qzval.cc f-rand.cc f-schur.cc f-sort.cc f-svd.cc f-syl.cc +ifdef CXXPICFLAG +%.oct: pic/%.o + $(CXX) -shared -o $@ $< \ + $(OCTAVE_LFLAGS) \ + $(OCTAVE_LIBS) \ + $(FLIBS) $(LEXLIB) $(TERMLIBS) $(LIBS) -lg++ +else +%.oct: %.o + $(CXX) -shared -o $@ $< \ + $(OCTAVE_LFLAGS) \ + $(OCTAVE_LIBS) \ + $(FLIBS) $(LEXLIB) $(TERMLIBS) $(LIBS) -lg++ +endif + +DLD_SRC := balance.cc chol.cc colloc.cc dassl.cc det.cc eig.cc \ + expm.cc fft.cc fft2.cc filter.cc find.cc fsolve.cc \ + fsqp.cc givens.cc hess.cc ifft.cc ifft2.cc inv.cc log.cc \ + lpsolve.cc lsode.cc lu.cc minmax.cc npsol.cc pinv.cc \ + qpsol.cc qr.cc quad.cc qzval.cc rand.cc schur.cc sort.cc \ + svd.cc syl.cc DLD_OBJ := $(patsubst %.cc, %.o, $(DLD_SRC)) +ifeq ($(OCTAVE_LITE), true) + OCT_FILES := $(patsubst %.o, %.oct, $(DLD_OBJ)) + ifdef CXXPICFLAG + DLD_PICOBJ := $(addprefix pic/, $(DLD_OBJ)) + else + DLD_PICOBJ := $(DLD_OBJ) + endif + ifeq ($(WITH_DYNAMIC_LINKING), false) + DLD_STATIC_OBJ := $(DLD_OBJ) + endif +else + DLD_STATIC_OBJ := $(DLD_OBJ) +endif + INCLUDES := arith-ops.h builtins.h defaults.h.in defun.h defun-dld.h \ defun-int.h dirfns.h dynamic-ld.h error.h file-info.h \ file-io.h fnmatch.h getopt.h gripes.h help.h input.h lex.h \ - load-save.h mappers.h missing-math.h oct-gperf.h octave.h \ - octave-hist.h oct-map.h oct-obj.h pager.h parse.h \ - pathlen.h pathsearch.h pr-output.h procstream.h sighandlers.h \ + load-save.h mappers.h missing-math.h oct-gperf.h \ + octave-hist.h oct-map.h oct-obj.h pager.h parse.h pathlen.h \ + pathsearch.h pr-output.h procstream.h sighandlers.h \ statdefs.h symtab.h sysdep.h sysdir.h systime.h syswait.h \ - token.h tree-base.h tree-cmd.h tree-const.h tree-expr.h \ - tree-misc.h tree-plot.h unwind-prot.h user-prefs.h utils.h \ - variables.h version.h xdiv.h xpow.h Map.h SLStack.h Stack.h + token.h toplev.h tree-base.h tree-cmd.h tree-const.h \ + tree-expr.h tree-misc.h tree-plot.h unwind-prot.h \ + user-prefs.h utils.h variables.h version.h xdiv.h xpow.h \ + Map.h SLStack.h Stack.h TI_SRC := Array-tc.cc Map-tc.cc DLList-fi.cc \ SLList-expr.cc SLList-misc.cc SLList-plot.cc SLList-tc.cc \ @@ -75,26 +100,39 @@ TI_OBJ := $(patsubst %.cc, %.o, $(TI_SRC)) +TI_PICOBJ := $(TI_OBJ) +ifdef CXXPICFLAG + TI_PICOBJ := $(addprefix pic/, $(TI_OBJ)) +endif + SOURCES := acosh.c arith-ops.cc asinh.c atanh.c data.cc dirfns.cc \ dynamic-ld.cc erf.c erfc.c error.cc file-info.cc file-io.cc \ filemode.c fnmatch.c getopt.c getopt1.c gripes.cc help.cc \ - input.cc lex.l load-save.cc mappers.cc mkdir.c octave.cc \ - octave-hist.cc oct-map.cc oct-obj.cc pager.cc \ - parse.y pr-output.cc procstream.cc rename.c resource.cc \ - rmdir.c sighandlers.cc strcasecmp.c strncase.c strfns.cc \ - strftime.c symtab.cc sysdep.cc tempname.c timefns.cc \ - tempnam.c token.cc tree-base.cc tree-cmd.cc tree-const.cc \ + input.cc lex.l load-save.cc mappers.cc mkdir.c \ + octave-hist.cc oct-map.cc oct-obj.cc pager.cc parse.y \ + pr-output.cc procstream.cc rename.c resource.cc rmdir.c \ + sighandlers.cc strcasecmp.c strncase.c strfns.cc strftime.c \ + symtab.cc sysdep.cc tempname.c timefns.cc tempnam.c token.cc \ + toplev.cc tree-base.cc tree-cmd.cc tree-const.cc \ tree-expr.cc tree-misc.cc tree-plot.cc unwind-prot.cc \ user-prefs.cc utils.cc variables.cc xdiv.cc xpow.cc TEMPLATE_SRC = Map.cc SLStack.cc -OBJECTS_4 := $(SOURCES) builtins.o +OBJECTS_4 := $(SOURCES) OBJECTS_3 := $(patsubst %.l, %.o, $(OBJECTS_4)) OBJECTS_2 := $(patsubst %.y, %.o, $(OBJECTS_3)) OBJECTS_1 := $(patsubst %.c, %.o, $(OBJECTS_2)) OBJECTS := $(patsubst %.cc, %.o, $(OBJECTS_1)) +ifeq ($(SHARED_LIBS), true) + ifdef CXXPICFLAG + PICOBJ := $(addprefix pic/, $(OBJECTS)) + else + PICOBJ := $(OBJECTS) + endif +endif + # Ugh. DEP_SOURCES_3 := $(SOURCES) $(DLD_SRC) $(TI_SRC) builtins.cc @@ -110,38 +148,69 @@ DEF_FILES_1 := $(patsubst %.l, %.def, $(DEF_FILES_2)) DEF_FILES := $(patsubst %.cc, %.def, $(DEF_FILES_1)) -# Don't leave the LIBDLD thing on a line by itself. It may expand to -# nothing. +OCTAVE_LFLAGS = -L../liboctave -L../libcruft -L../readline \ + -L../kpathsea -L. $(RLD_FLAG) -OCTAVE_LIBS = @LIBOCTDLD@ ../liboctave/liboctave.a libtinst.a \ - ../libcruft/libcruft.a @LIBREADLINE@ @LIBPLPLOT@ \ - ../kpathsea/kpathsea.a @LIBDLD@ +OCTAVE_LIBS = -loctinterp -loctave -ltinst -lcruft \ + @LIBPLPLOT@ -lreadline -lkpathsea + +LIBS_TO_INSTALL = liboctinterp.a libtinst.a \ + liboctinterp.$(SHLEXT) libtinst.$(SHLEXT) TERMLIBS = @TERMLIBS@ LIBS = @LIBS@ -DISTFILES = Makefile.in mkdefs mkbuiltins octave.gperf parse.cc \ - lex.cc y.tab.h safe-xstat.cin safe-xstat.hin \ +DISTFILES = Makefile.in mkdefs mkbuiltins octave.gperf octave.cc \ + parse.cc lex.cc y.tab.h safe-xstat.cin safe-xstat.hin \ $(INCLUDES) $(DLD_SRC) $(SOURCES) $(TEMPLATE_SRC) $(TI_SRC) -all: defaults.h safe-stat.h safe-lstat.h octave +all: defaults.h safe-stat.h safe-lstat.h stamp-picdir libraries \ + $(OCT_FILES) octave .PHONY: all -octave: $(OBJECTS) $(DLD_OBJ) $(OCTAVE_LIBS) liboctdld.a +octave: octave.o builtins.o $(DLD_STATIC_OBJ) libraries $(CXX) $(CPPFLAGS) $(ALL_CXXFLAGS) $(ALL_LDFLAGS) -o octave \ - $(OBJECTS) \ + octave.o builtins.o $(DLD_STATIC_OBJ) \ + $(OCTAVE_LFLAGS) \ $(OCTAVE_LIBS) \ $(FLIBS) $(LEXLIB) $(TERMLIBS) $(LIBS) -lg++ -liboctdld.a: $(DLD_OBJ) - $(AR) $(ARFLAGS) liboctdld.a $(DLD_OBJ) - $(RANLIB) liboctdld.a + +stamp-picdir: + if [ -n "$(CPICFLAG)" ]; then \ + if [ -d pic ]; then true; else mkdir pic ; fi ; \ + else true; fi + touch stamp-picdir + +libraries: liboctinterp.a libtinst.a stamp-interp stamp-tinst + +liboctinterp.a: $(OBJECTS) + $(AR) $(ARFLAGS) liboctinterp.a $(OBJECTS) + $(RANLIB) liboctinterp.a libtinst.a: $(TI_OBJ) $(AR) $(ARFLAGS) libtinst.a $(TI_OBJ) $(RANLIB) libtinst.a +stamp-interp: $(PICOBJ) + if $(SHARED_LIBS); then \ + $(CXX) -shared -o liboctinterp.$(SHLEXT) $(PICOBJ) \ + $(OCTAVE_LFLAGS) \ + -loctave -lcruft -ltinst -lreadline -lkpathsea \ + $(TERMLIBS) $(LIBS) -lg++; \ + else true; fi + touch stamp-interp + +stamp-tinst: $(TI_PICOBJ) + if $(SHARED_LIBS); then \ + $(CXX) -shared -o libtinst.$(SHLEXT) $(TI_PICOBJ) \ + $(OCTAVE_LFLAGS) \ + -loctinterp -loctave -lcruft -lreadline -lkpathsea \ + $(TERMLIBS) $(LIBS) -lg++; \ + else true; fi + touch stamp-tinst + builtins.cc: $(DEF_FILES) mkbuiltins @echo making $@ from $(DEF_FILES) @$(srcdir)/mkbuiltins $(DEF_FILES) > $@.tmp @@ -154,15 +223,29 @@ check: all .PHONY: check -install: all - $(top_srcdir)/mkinstalldirs $(bindir) $(libdir) +install: all install-bin install-lib install-oct +.PHONY: install + +install-bin: + $(top_srcdir)/mkinstalldirs $(bindir) rm -f $(bindir)/octave $(INSTALL) octave $(bindir)/octave-$(version) ln $(bindir)/octave-$(version) $(bindir)/octave - if $(OCTAVE_LITE) && $(WITH_DLD) ; then \ - $(INSTALL_DATA) liboctdld.a $(libdir)/liboctdld.a ; \ - fi -.PHONY: install +.PHONY: install-bin + +install-lib: + $(top_srcdir)/mkinstalldirs $(libdir) + for f in $(LIBS_TO_INSTALL); do \ + if [ -f $$f ]; then $(INSTALL_DATA) $$f $(libdir)/$$f; fi; \ + done +.PHONY: install-lib + +install-oct: + $(top_srcdir)/mkinstalldirs $(octfiledir) + for f in $(OCT_FILES); do $(INSTALL_DATA) $$f $(octfiledir)/$$f; done + $(srcdir)/mk-oct-links $(octfiledir) \ + $(addprefix $(srcdir)/, $(DLD_SRC)) +.PHONY: install-oct uninstall: rm -f $(bindir)/octave
--- a/src/balance.cc +++ b/src/balance.cc @@ -43,7 +43,7 @@ #include "user-prefs.h" #include "utils.h" -DEFUN_DLD_BUILTIN ("balance", Fbalance, Sbalance, 11, +DEFUN_DLD_BUILTIN ("balance", Fbalance, Sbalance, FSbalance, 11, "AA = balance (A [, OPT]) or [[DD,] AA] = balance (A [, OPT])\n\ \n\ generalized eigenvalue problem:\n\
--- a/src/chol.cc +++ b/src/chol.cc @@ -36,7 +36,7 @@ #include "user-prefs.h" #include "utils.h" -DEFUN_DLD_BUILTIN ("chol", Fchol, Schol, 11, +DEFUN_DLD_BUILTIN ("chol", Fchol, Schol, FSchol, 11, "R = chol (X): cholesky factorization") { Octave_object retval;
--- a/src/colloc.cc +++ b/src/colloc.cc @@ -33,7 +33,7 @@ #include "tree-const.h" #include "utils.h" -DEFUN_DLD_BUILTIN ("colloc", Fcolloc, Scolloc, 10, +DEFUN_DLD_BUILTIN ("colloc", Fcolloc, Scolloc, FScolloc, 10, "[R, A, B, Q] = colloc (N [, \"left\"] [, \"right\"]): collocation weights") { Octave_object retval;
--- a/src/dassl.cc +++ b/src/dassl.cc @@ -103,7 +103,7 @@ return retval; } -DEFUN_DLD_BUILTIN ("dassl", Fdassl, Sdassl, 10, +DEFUN_DLD_BUILTIN ("dassl", Fdassl, Sdassl, FSdassl, 10, "dassl (\"function_name\", x_0, xdot_0, t_out)\n\ dassl (F, X_0, XDOT_0, T_OUT, T_CRIT)\n\ \n\ @@ -315,7 +315,8 @@ return retval; } -DEFUN_DLD_BUILTIN ("dassl_options", Fdassl_options, Sdassl_options, 10, +DEFUN_DLD_BUILTIN ("dassl_options", Fdassl_options, Sdassl_options, + FSdassl_options, 10, "dassl_options (KEYWORD, VALUE)\n\ \n\ Set or show options for dassl. Keywords may be abbreviated\n\
--- a/src/defun-dld.h +++ b/src/defun-dld.h @@ -36,21 +36,13 @@ // If Octave is not configured for dynamic linking of builtin // functions, this is exactly like DEFUN. -#if defined (OCTAVE_LITE) && defined (MAKE_BUILTINS) -#if defined (WITH_DLD) -#define DEFUN_DLD_BUILTIN(name, fname, sname, unused_arg_flags, doc) \ - BEGIN_INSTALL_BUILTIN \ - DEFINE_FUN_STRUCT (name, 0, sname, unused_arg_flags, 0, doc); \ - install_builtin_function (&sname); \ - END_INSTALL_BUILTIN -#else -#define DEFUN_DLD_BUILTIN(name, fname, sname, unused_arg_flags, doc) \ - BEGIN_INSTALL_BUILTIN \ - const char *sname = name " not included with --enable-lite-kernel"; \ - END_INSTALL_BUILTIN +#if defined (OCTAVE_LITE) && defined (WITH_DYNAMIC_LINKING) +#if ! defined (MAKE_BUILTINS) +#define DEFUN_DLD_BUILTIN(name, fname, sname, fsname, unused_arg_flags, doc) \ + DEFUN_DLD(name, fname, sname, fsname, unused_arg_flags, doc) #endif #else -#define DEFUN_DLD_BUILTIN(name, fname, sname, unused_arg_flags, doc) \ +#define DEFUN_DLD_BUILTIN(name, fname, fsname, sname, unused_arg_flags, doc) \ DEFUN_INTERNAL (name, fname, sname, unused_arg_flags, 0, doc) #endif @@ -64,10 +56,10 @@ #if ! defined (MAKE_BUILTINS) #define DEFUN_DLD(name, fname, sname, fsname, unused_arg_flags, doc) \ - DECLARE_FUN (fname); \ - DEFINE_FUN_STRUCT (name, fname, sname, unused_arg_flags, 0, doc); \ + DECLARE_FUN_ ## unused_arg_flags(fname); \ + DEFINE_FUN_STRUCT (name, fname, sname, 0, doc); \ DEFINE_FUN_STRUCT_FUN (sname, fsname) \ - DECLARE_FUN (fname) + DECLARE_FUN_ ## unused_arg_flags (fname) #endif #endif
--- a/src/det.cc +++ b/src/det.cc @@ -36,7 +36,7 @@ #include "user-prefs.h" #include "utils.h" -DEFUN_DLD_BUILTIN ("det", Fdet, Sdet, 10, +DEFUN_DLD_BUILTIN ("det", Fdet, Sdet, FSdet, 10, "det (X): determinant of a square matrix") { Octave_object retval;
--- a/src/eig.cc +++ b/src/eig.cc @@ -35,7 +35,7 @@ #include "user-prefs.h" #include "utils.h" -DEFUN_DLD_BUILTIN ("eig", Feig, Seig, 11, +DEFUN_DLD_BUILTIN ("eig", Feig, Seig, FSeig, 11, "eig (X) or [V, D] = eig (X): compute eigenvalues and eigenvectors of X") { Octave_object retval;
--- a/src/expm.cc +++ b/src/expm.cc @@ -55,7 +55,7 @@ const int&, double*); } -DEFUN_DLD_BUILTIN ("expm", Fexpm, Sexpm, 10, +DEFUN_DLD_BUILTIN ("expm", Fexpm, Sexpm, FSexpm, 10, "expm (X): matrix exponential, e^A") { Octave_object retval;
--- a/src/fft.cc +++ b/src/fft.cc @@ -38,7 +38,7 @@ // This function should be merged with Fifft. -DEFUN_DLD_BUILTIN ("fft", Ffft, Sfft, 10, +DEFUN_DLD_BUILTIN ("fft", Ffft, Sfft, FSfft, 10, "fft (X [, N]): fast fourier transform of a vector") { Octave_object retval;
--- a/src/fft2.cc +++ b/src/fft2.cc @@ -38,7 +38,7 @@ // This function should be merged with Fifft2. -DEFUN_DLD_BUILTIN ("fft2", Ffft2, Sfft2, 10, +DEFUN_DLD_BUILTIN ("fft2", Ffft2, Sfft2, FSfft2, 10, "fft2 (X [, N] [, M])\n\ \n\ two dimensional fast fourier transform of a vector")
--- a/src/filter.cc +++ b/src/filter.cc @@ -151,7 +151,7 @@ return filter (b, a, x, si); } -DEFUN_DLD_BUILTIN ("filter", Ffilter, Sfilter, 10, +DEFUN_DLD_BUILTIN ("filter", Ffilter, Sfilter, FSfilter, 10, "usage: [y [, sf]] = filter (b, a, x [, si])\n\ \n\ y = filter (b, a, x) returns the solution to the following linear,\n\
--- a/src/find.cc +++ b/src/find.cc @@ -158,7 +158,7 @@ return find_to_fortran_idx (i_idx, j_idx, tmp, m_nr, nargout); } -DEFUN_DLD_BUILTIN ("find", Ffind, Sfind, 11, +DEFUN_DLD_BUILTIN ("find", Ffind, Sfind, FSfind, 11, "find (X) or [I, J, V] = find (X): Return indices of nonzero elements") { Octave_object retval;
--- a/src/fsolve.cc +++ b/src/fsolve.cc @@ -119,7 +119,7 @@ return retval; } -DEFUN_DLD_BUILTIN ("fsolve", Ffsolve, Sfsolve, 11, +DEFUN_DLD_BUILTIN ("fsolve", Ffsolve, Sfsolve, FSfsolve, 11, "Solve nonlinear equations using Minpack. Usage:\n\ \n\ [X, INFO] = fsolve (F, X0)\n\ @@ -281,7 +281,8 @@ return retval; } -DEFUN_DLD_BUILTIN ("fsolve_options", Ffsolve_options, Sfsolve_options, 10, +DEFUN_DLD_BUILTIN ("fsolve_options", Ffsolve_options, Sfsolve_options, + FSfsolve_options, 10, "fsolve_options (KEYWORD, VALUE)\n\ \n\ Set or show options for fsolve. Keywords may be abbreviated\n\
--- a/src/fsqp.cc +++ b/src/fsqp.cc @@ -54,12 +54,12 @@ #endif #if defined (FSQP_MISSING) -DEFUN_DLD_BUILTIN ("fsqp", Ffsqp, Sfsqp, 00, +DEFUN_DLD_BUILTIN ("fsqp", Ffsqp, Sfsqp, FSfsqp, 00, "This function requires FSQP, which is not freely\n\ redistributable. For more information, read the file\n\ libcruft/fsqp/README.MISSING in the source distribution.") #else -DEFUN_DLD_BUILTIN ("fsqp", Ffsqp, Sfsqp, 00, +DEFUN_DLD_BUILTIN ("fsqp", Ffsqp, Sfsqp, FSfsqp, 00, "[X, PHI] = fsqp (X, PHI [, LB, UB] [, LB, A, UB] [, LB, G, UB])\n\ \n\ Groups of arguments surrounded in `[]' are optional, but\n\ @@ -89,12 +89,14 @@ } #if defined (FSQP_MISSING) -DEFUN_DLD_BUILTIN ("fsqp_options", Ffsqp_options, Sfsqp_options, 00, +DEFUN_DLD_BUILTIN ("fsqp_options", Ffsqp_options, Sfsqp_options, + FSfsqp_options, 00, "This function requires FSQP, which is not freely\n\ redistributable. For more information, read the file\n\ libcruft/fsqp/README.MISSING in the source distribution.") #else -DEFUN_DLD_BUILTIN ("fsqp_options", Ffsqp_options, Sfsqp_options, 00, +DEFUN_DLD_BUILTIN ("fsqp_options", Ffsqp_options, Sfsqp_options, + FSfsqp_options, 00, "fsqp_options (KEYWORD, VALUE)\n\ \n\ Set or show options for fsqp. Keywords may be abbreviated\n\
--- a/src/givens.cc +++ b/src/givens.cc @@ -47,7 +47,7 @@ double&, Complex&, Complex&); } -DEFUN_DLD_BUILTIN ("givens", Fgivens, Sgivens, 11, +DEFUN_DLD_BUILTIN ("givens", Fgivens, Sgivens, FSgivens, 11, "G = givens (X, Y)\n\ \n\ compute orthogonal matrix G = [c s; -conj (s) c]\n\