home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / octa21eb.zip / octave / PATOS2.ZIP / src / makefile.os2 next >
Makefile  |  1999-04-30  |  9KB  |  219 lines

  1. # Makefile for octave's src directory
  2. # Modified by Klaus Gebhardt, 1994 - 1999
  3.  
  4. TOPDIR = ..
  5.  
  6. include $(TOPDIR)/Makeconf.os2
  7.  
  8. srcdir = .
  9.  
  10. OV_INCLUDES := ov-re-mat.h ov-cx-mat.h ov-ch-mat.h ov-list.h \
  11.         ov-struct.h ov-scalar.h ov-range.h ov-complex.h ov-va-args.h \
  12.         ov-colon.h ov-base.h ov-base-mat.h ov-base-scalar.h \
  13.         ov-str-mat.h ov-bool-mat.h ov-bool.h ov-file.h ov.h \
  14.         ov-fcn.h ov-builtin.h ov-mapper.h ov-usr-fcn.h ov-typeinfo.h
  15.  
  16. PT_INCLUDES := pt.h pt-all.h pt-arg-list.h pt-assign.h pt-binop.h \
  17.         pt-check.h pt-cmd.h pt-colon.h pt-const.h pt-decl.h \
  18.         pt-except.h pt-exp.h pt-id.h pt-idx.h pt-indir.h \
  19.         pt-jump.h pt-loop.h pt-mat.h pt-misc.h pt-plot.h \
  20.         pt-pr-code.h pt-select.h pt-stmt.h pt-unop.h pt-walk.h
  21.  
  22. INCLUDES := BaseSLList.h Map.h Pix.h SLList.h SLStack.h Stack.h \
  23.         defun-dld.h defun-int.h defun.h dirfns.h dynamic-ld.h error.h \
  24.         file-io.h fn-cache.h gripes.h help.h input.h lex.h load-save.h \
  25.         oct-fstrm.h oct-hist.h oct-iostrm.h oct-map.h oct-obj.h \
  26.         oct-prcstrm.h oct-stdstrm.h oct-stream.h \
  27.         oct-strstrm.h oct-lvalue.h oct.h ops.h pager.h parse.h \
  28.         pr-output.h sighandlers.h symtab.h sysdep.h \
  29.         systime.h token.h toplev.h unwind-prot.h utils.h \
  30.         variables.h version.h xdiv.h xpow.h $(OV_INCLUDES) $(PT_INCLUDES)
  31.  
  32. OV_SRC := ov-base.cc ov-base-mat.cc ov-base-scalar.cc ov-ch-mat.cc \
  33.         ov-list.cc ov-re-mat.cc ov-cx-mat.cc ov-range.cc ov-scalar.cc \
  34.         ov-complex.cc ov-str-mat.cc ov-struct.cc ov-va-args.cc \
  35.         ov-colon.cc ov-bool-mat.cc ov-bool.cc ov-file.cc ov.cc ov-fcn.cc \
  36.         ov-builtin.cc ov-mapper.cc ov-usr-fcn.cc ov-typeinfo.cc
  37.  
  38. PT_SRC := pt.cc pt-arg-list.cc pt-assign.cc pt-binop.cc pt-check.cc \
  39.         pt-cmd.cc pt-colon.cc pt-const.cc pt-decl.cc pt-except.cc \
  40.         pt-exp.cc pt-id.cc pt-idx.cc pt-indir.cc pt-jump.cc \
  41.         pt-loop.cc pt-mat.cc pt-misc.cc pt-plot.cc pt-pr-code.cc \
  42.         pt-select.cc pt-stmt.cc pt-unop.cc
  43.  
  44. SOURCES := BaseSLList.cc Map.cc SLList.cc SLStack.cc Stack.cc \
  45.         data.cc defaults.cc defun.cc dirfns.cc dynamic-ld.cc \
  46.         error.cc file-io.cc fn-cache.cc gripes.cc help.cc input.cc \
  47.         lex.l load-save.cc mappers.cc matherr.c oct-fstrm.cc \
  48.         oct-hist.cc oct-iostrm.cc oct-map.cc oct-obj.cc oct-prcstrm.cc \
  49.         oct-stdstrm.cc oct-stream.cc oct-strstrm.cc \
  50.         oct-lvalue.cc pager.cc parse.y pr-output.cc \
  51.         sighandlers.cc strcasecmp.c strncase.c strfns.cc \
  52.         strftime.c symtab.cc syscalls.cc sysdep.cc system.c token.cc \
  53.         toplev.cc unwind-prot.cc utils.cc variables.cc xdiv.cc \
  54.         xpow.cc $(OV_SRC) $(PT_SRC)
  55.  
  56. OBJECTS_4 := $(SOURCES)
  57. OBJECTS_3 := $(patsubst %.l, %.obj, $(OBJECTS_4))
  58. OBJECTS_2 := $(patsubst %.y, %.obj, $(OBJECTS_3))
  59. OBJECTS_1 := $(patsubst %.c, %.obj, $(OBJECTS_2))
  60. OBJECTS := $(patsubst %.cc, %.obj, $(OBJECTS_1))
  61.  
  62.  
  63.  
  64. # Some stupid egreps don't like empty elements in alternation patterns,
  65. # so we have to repeat ourselves because some stupid egreps don't like
  66. # empty elements in alternation patterns.
  67.  
  68. DEFUN_PATTERN = "^[ \t]*DEFU(N|N_DLD|N_TEXT)[ \t]*\\("
  69.  
  70. DEF_5 := $(SOURCES)
  71. DEF_4 := $(addprefix $(srcdir)/, $(DEF_5))
  72. DEF_3 := $(notdir $(shell egrep -l $(DEFUN_PATTERN) $(DEF_4)))
  73. DEF_2 := $(patsubst %.y, %.df, $(DEF_3))
  74. DEF_1 := $(patsubst %.l, %.df, $(DEF_2))
  75. DEF_FILES := $(patsubst %.cc, %.df, $(DEF_1))
  76.  
  77. DEFVAR_PATTERN = "^[ \t]*DEF(VAR|CONST)[ \t]*\\("
  78.  
  79. VAR_5 := $(SOURCES)
  80. VAR_4 := $(addprefix $(srcdir)/, $(VAR_5))
  81. VAR_3 := $(notdir $(shell egrep -l $(DEFVAR_PATTERN) $(VAR_4)))
  82. VAR_2 := $(patsubst %.y, %, $(VAR_3))
  83. VAR_1 := $(patsubst %.l, %, $(VAR_2))
  84. VAR_FILES := $(patsubst %.cc, %, $(VAR_1))
  85.  
  86. ###############################################################################
  87.  
  88. all: defaults.h oct-conf.h remove-procstream ../dll/octave1.dll ../octave.exe
  89. .PHONY: all
  90.  
  91. ###############################################################################
  92.  
  93. EXE_SRC   = octave.cc builtins.cc ops.cc
  94. EXE_OBJ_1 = $(patsubst %.c, %.o, $(EXE_SRC))
  95. EXE_OBJ   = $(patsubst %.cc, %.o, $(EXE_OBJ_1))
  96. LIB_CRFT  = -L$(MSTDIR)/libcruft -lcruft1 -lcruft2 -lcruft3 -lcruft4
  97. LIB_OCTV  = -L$(MSTDIR)/liboctave -loctave2
  98. STD_LIBS  = -lreadline -lgnuinfo -lkpathsea -lxmalloc -lstdcpp2 -gpp2 \
  99.     -lsocket -ldlfcn
  100. OCT_LIBS  = octave1.a $(LIB_CRFT) $(LIB_OCTV) $(STD_LIBS)
  101. LNK_FILES = $(EXE_OBJ) $(OCT_LIBS)
  102.  
  103. DEP_CRFTA = $(MSTDIR)/libcruft/cruft1.a $(MSTDIR)/libcruft/cruft2.a \
  104.     $(MSTDIR)/libcruft/cruft3.a $(MSTDIR)/libcruft/cruft4.a
  105. DEP_OCTVA = $(MSTDIR)/liboctave/octave2.a
  106. DEP_A     = $(DEP_CRFTA) $(DEP_OCTVA)
  107.  
  108. OCTAVE1   = octave1.def octave1-src.lib octti-src.lib octop-src.lib octdld-src.lib
  109. DLL_LIBS  = $(LIB_CRFT) $(LIB_OCTV) $(STD_LIBS)
  110. DLL_FILES = $(OCTAVE1) $(DLL_LIBS)
  111.  
  112. DEP_CRFTL = $(MSTDIR)/libcruft/cruft1.lib $(MSTDIR)/libcruft/cruft2.lib \
  113.     $(MSTDIR)/libcruft/cruft3.lib $(MSTDIR)/libcruft/cruft4.lib
  114. DEP_OCTVL = $(MSTDIR)/liboctave/octave2.lib
  115. DEP_LIB   = $(DEP_CRFTL) $(DEP_OCTVL)
  116.  
  117. ###############################################################################
  118. # The executable and the dll.
  119. ###############################################################################
  120.  
  121. octave1-src.lib: $(OBJECTS)
  122.     @rm -f $@
  123.     emxomfar -p64 $(ARFLAGS) $@ $(OBJECTS)
  124.  
  125. octave1.def: octave1-src.lib octdld-src.lib octti-src.lib octop-src.lib 
  126.     @echo LIBRARY octave1 INITINSTANCE TERMINSTANCE > $@
  127.     @echo DESCRIPTION 'octave1.dll, (c) Klaus Gebhardt 1995-1996' >> $@
  128.     @echo. >> $@
  129.     @echo DATA >> $@
  130.     @echo   MULTIPLE NONSHARED >> $@
  131.     @echo. >> $@
  132.     @echo EXPORTS >> $@
  133.     emxexp -o00001 -n octave1-src.lib >> $@
  134.     emxexp -o10001 -n octdld-src.lib >> $@
  135.     emxexp -o20001 -n octti-src.lib >> $@
  136.     emxexp -o30001 -n octop-src.lib >> $@
  137.  
  138. ../dll/octave1.dll: subdirs $(OCTAVE1) octave1.a octave1.lib $(DEP_LIB)
  139.     $(CC) -o $@ $(DLL_FILES) -Zdll -Zomf -Zcrtdll
  140.  
  141. octave: $(EXE_OBJ) octave.def octave1.a makefile.os2 $(DEP_A)
  142.     $(CC) -o $@ octave.def $(LNK_FILES) -Zcrtdll -Zstack 0x10000
  143.  
  144. ../octave.exe: octave
  145.     emxbind -bq $(EMX09CDIR)/bin/emxl $< $@
  146.     emxbind -sq $@
  147.  
  148. ###############################################################################
  149. # The subdirectories.
  150. ###############################################################################
  151.  
  152. subdirs: mkdefs.cmd mkops.cmd defun-int.h defun-dld.h defun.h
  153.     cd DLD-FUNCTIONS & make -f makefile.os2
  154.     cd OPERATORS & make -f makefile.os2
  155.     cd TEMPLATE-INST & make -f makefile.os2
  156.  
  157. ###############################################################################
  158. # builtins.cc
  159. ###############################################################################
  160.  
  161. $(DEF_FILES): mkdefs.cmd defun-int.h defun-dld.h defun.h # defaults.h
  162.  
  163. builtins.cc: $(DEF_FILES) mkbuiltins.cmd
  164.     @echo making $@
  165.     @h:/bin/echo ""$(DEF_FILES) > def-files
  166.     @cat def-files-dld >> def-files
  167.     @h:/bin/echo ""$(VAR_FILES) > var-files
  168.     @cat var-files-dld >> var-files
  169.     @-mkbuiltins def-files var-files > $@
  170.  
  171. ###############################################################################
  172. # OS/2 or EMX specific parts.
  173. ###############################################################################
  174.  
  175. defaults.h: ../defaults.emx
  176.     cp ../defaults.emx defaults.h
  177.  
  178. oct-conf.h: ../oct-conf.emx
  179.     cp ../oct-conf.emx oct-conf.h
  180.  
  181. mkdefs.cmd: mkdefs
  182.     echo extproc ksh .\\/$@ > $@
  183.     echo shift >> $@
  184.     echo #Generated by makefile.os2. Do not edit! >> $@
  185.     sed -e "s/#!\\/bin\\/sh//" $< >> $@
  186.  
  187. mkops.cmd: mkops
  188.     echo extproc ksh .\\/$@ > $@
  189.     echo shift >> $@
  190.     echo #Generated by makefile.os2. Do not edit! >> $@
  191.     sed -e "s/#!\\/bin\\/sh//" $< >> $@
  192.  
  193. mkbuiltins.cmd: mkbuiltins
  194.     echo extproc ksh .\\/$@ > $@
  195.     echo shift >> $@
  196.     echo #Generated by makefile.os2. Do not edit! >> $@
  197.     sed -e "s/#!\\/bin\\/sh//" $< >> $@
  198.  
  199. remove-procstream:
  200.     rm -f procstream.* oct-procbuf.*
  201.  
  202. ###############################################################################
  203. # Clean the directories.
  204. ###############################################################################
  205.  
  206. clean: remove-procstream
  207.     rm -f *.a *.lib *.o *.obj *.df
  208.     rm -f lex.cc parse.cc y.tab.h builtins.cc defaults.h oct-conf.h
  209.     rm -f def-files def-files-dld var-files var-files-dld
  210.     rm -f octave ../octave.exe ../dll/octave1.dll
  211.     cd DLD-FUNCTIONS & make -f makefile.os2 clean
  212.     cd OPERATORS & make -f makefile.os2 clean
  213.     cd TEMPLATE-INST & make -f makefile.os2 clean
  214.  
  215.  
  216.  
  217. lex.cc:        lex.l lex.h y.tab.h
  218. y.tab.h:       parse.cc
  219. parse.cc:      parse.y parse.h