CC = gcc -std=c99 -pedantic -Wall -D_SVID_SOURCE=1 # # for full debugging # DFLAGS = -DYYDEBUG=1 -DDEBUG=1 # # for debug without YYDEBUG # #DFLAGS = -DDEBUG=1 # # for no debugging # #DFLAGS = # # for dbx # #CFLAGS = $(DFLAGS) -DYYBISON=1 -g # # optimized code # CFLAGS = $(DFLAGS) -DYYBISON=1 -O2 # # no optimize, no dbx # #CFLAGS = $(DFLAGS) -DYYBISON=1 TXTS = Makefile HISTORY NOTES TODO README m.1 YSRC = m.y 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 sort.c HSRC = m.h mat.h version.h init.h matlab.h SRCS = $(YSRC) $(CSRC) $(HSRC) # # m.c & y_tab.h are needed for systems without yacc or bison # OTHERS = m.c y_tab.h OBJS = m.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 sort.o TMPS = m.c y.tab.c y.tab.h y_tab.h y.output \ yacc.acts yacc.debug yacc.tmp \ m.tar.gz m_doc.tar.gz m.zip # make.log bin/m: $(OBJS) $(CC) -o bin/m $(OBJS) -lm version: echo "\"`date +%Y-%m-%d`\"" >version.h install: bin/m find bin -print | cpio -pdm /opt/m strip /opt/m/bin/m install_docs: find help lib man -print | cpio -pdm /opt/m docs: cd help; soelim -r m.so >mdoc.txt nroff -man man/man1/m.1 | col -b > help/m.1.txt what: @echo $(TXTS) $(SRCS) $(OTHERS) clean: rm -f $(OBJS) $(TMPS) a.out core clobber: clean rm -f bin/m make.log m.c y.tab.h: m.y @echo "expect 3 shift/reduce conflicts" # # -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 tar: m.tar.gz m_doc.tar.gz m.tar.gz: $(TXTS) $(SRCS) $(OTHERS) mdoc.txt tar cvhf - $(TXTS) $(SRCS) $(OTHERS) mdoc.txt lib help | \ gzip >m.tar.gz m_doc.tar.gz: mdoc.txt tar cvhf - mdoc.txt lib help | gzip >m_doc.tar.gz m.h: mat.h y_tab.h touch 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 sort.o: sort.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