CC = gcc -ansi -pedantic -Wall # # for full debugging # DFLAGS = -DYYDEBUG=1 -DDEBUG=1 # # for debug without YYDEBUG # #DFLAGS = -DDEBUG=1 # # for no debugging # #DFLAGS = # # for dbx # CFLAGS = $(DFLAGS) -D_POSIX_C_SOURCE=1 -g # # optimized code # #CFLAGS = $(DFLAGS) -D_POSIX_C_SOURCE=1 -O # # no optimize, no dbx # #CFLAGS = $(DFLAGS) -D_POSIX_C_SOURCE=1 HOME = /user/perry/src/m TXTS = Makefile Makefile.vms m.opt m.prj HISTORY NOTES TODO install.bat \ README read.me make.bat m.1 YSRC = m.y LSRC = scan.l CSRC = main.c stack.c symbol.c rand.c new.c file.c io.c svd.c \ code.c execute.c m_cmd.c m_fn.c m_mat.c m_proc.c mat.c util.c \ plot.c version.c HSRC = m.h mat.h version.h init.h fn_symbol.h matlab.h SRCS = $(YSRC) $(CSRC) $(HSRC) $(LSRC) # # OTHERS are files not needed in Sun Unix # # erf.c is needed if the math library does not contain erf() and erfc() # m.c & y_tab.h are needed for systems without yacc or bison # scan.c is needed for systems without lex or flex # alloca.c & allocate.c come from bison-1.19 and are needed for # systems without alloca (i.e. VMS) # OTHERS = erf.c m.c scan.c y_tab.h alloca.c allocate.c OBJS = m.o scan.o main.o stack.o symbol.o rand.o new.o file.o io.o svd.o \ code.o execute.o m_cmd.o m_fn.o m_mat.o m_proc.o mat.o util.o \ plot.o version.o TMPS = m.c scan.c y.tab.c y.tab.h y_tab.h y.output m.j update.j \ yacc.acts yacc.debug yacc.tmp help.j lib.j m.doc \ m.tar.gz m_doc.tar.gz make.log m: $(OBJS) gcc -o m $(OBJS) -lm version: echo "\"`/usr/5bin/date +%D`\"" >version.h install: m install m /usr/local/bin docs: m.doc help.j lib.j m.doc: cd help; soelim m.so >$(HOME)/m.doc help.j: cd help; join -j * >$(HOME)/help.j lib.j: cd lib; join -j * >$(HOME)/lib.j what: @echo $(TXTS) $(SRCS) $(OTHERS) help.txt: cd help; for i in * ; do /usr/5bin/echo "\n$$i\n"; cat $$i; done lib.txt: cd lib; for i in * ; do /usr/5bin/echo "\n$$i\n"; cat $$i; done clean: rm -f $(OBJS) $(TMPS) a.out core clobber: clean rm -f m new lint: m.c y_tab.h lint $(DFLAGS) m.c $(CSRC) erf.c m.c y.tab.h: m.y # # -y to use yacc naming conventions # -v flag to produce verbose y.output file # -d to produce y.tab.h # bison -y -d -v m.y # bison -y -d m.y # yacc -d m.y mv y.tab.c m.c y_tab.h: y.tab.h -@cmp -s y_tab.h y.tab.h || cp y.tab.h y_tab.h scan.c: scan.l flex -d -t scan.l >scan.c tar: m.tar.gz m_doc.tar.gz m.tar.gz: $(TXTS) $(SRCS) $(OTHERS) m.doc tar cvhf - $(TXTS) $(SRCS) $(OTHERS) m.doc lib help | \ gzip >m.tar.gz m_doc.tar.gz: m.doc tar cvhf - m.doc lib help | gzip >m_doc.tar.gz m.j: $(TXTS) $(SRCS) $(OTHERS) touch new join -j $(TXTS) $(SRCS) $(OTHERS) >m.j update: @find $(TXTS) $(SRCS) $(OTHERS) help/* lib/* -newer new -print update.j: $(TXTS) $(SRCS) $(OTHERS) find $(TXTS) $(SRCS) $(OTHERS) help/* lib/* -newer new -print | \ join -j >update.j touch new m.h: mat.h y_tab.h touch m.h scan.o: m.h code.o: code.c m.h execute.o: execute.c m.h file.o: file.c m.h io.o: io.c m.h m.o: m.c m.h m_cmd.o: m_cmd.c m.h m_fn.o: m_fn.c m.h m_mat.o: m_mat.c m.h m_proc.o: m_proc.c m.h main.o: main.c m.h mat.o: mat.c mat.h new.o: new.c m.h plot.o: plot.c rand.o: rand.c stack.o: stack.c m.h svd.o: svd.c mat.h symbol.o: symbol.c m.h init.h matlab.h util.o: util.c m.h version.o: version.c version.h