LIBOOP = liboop IDST = ../idst GC = ../gc6.4 CFLAGS = -g -Wall -Werror -I$(IDST) -I$(GC)/include -I$(LIBOOP) $(OPTFLAGS) CXXFLAGS = $(CFLAGS) CCOBJS = ArrayNode.o \ AssignmentNode.o \ BlockNode.o \ ByteArrayNode.o \ CharacterNode.o \ ClassNode.o \ ConstantNode.o \ Encoder.o \ Environment.o \ ExecNode.o \ ExternNode.o \ IntegerNode.o \ ListNode.o \ LiteralNode.o \ MethodNode.o \ Node.o \ ProgramNode.o \ ReturnNode.o \ SendNode.o \ SequenceNode.o \ StringNode.o \ SymbolNode.o \ TranslationUnit.o \ Variable.o \ VariableNode.o \ WordArrayNode.o \ options.o \ main.o LYOBJS = scan.o parse.o CCACHE = # ccache CC = $(CCACHE) cc CXX = $(CCACHE) c++ OBJS = $(CCOBJS) $(LYOBJS) DEPS = $(OBJS:.o=.d) all : $(GC)/gc.a xidst xidst : $(OBJS) $(GC)/gc.a $(CXX) -o $@ $(OBJS) $(GC)/gc.a scan.cc : scan.l lex -o$@ $< scan.o scan.d : scan.cc parse.h parse.o : parse.cc parse.cc parse.h : parse.y yacc -v -d -o parse.cc $< $(SHELL) -ec 'if test -f parse.cc.h; then mv parse.cc.h parse.h; fi' $(SHELL) -ec 'if test -f parse.hh; then mv parse.hh parse.h; fi' force : .force $(MAKE) spotless ccache -C $(MAKE) test : xidst $(IDST)/libidst.o test.st time ./xidst -I.. -I../Smalltalk -o test.c test.st gcc $(CFLAGS) -o test test.c $(IDST)/libidst.o $(GC)/gc.a -@echo '----------------------------------------------------------------' ./test $(IDST)/libidst.o : $(SHELL) -ec 'cd $(IDST); $(MAKE) libidst.o' $(GC)/gc.a : $(SHELL) -ec 'cd $(GC); $(MAKE) c++ >/dev/null' clean: .force -rm -f xidst test -rm -f *.o -rm -f parse.h parse.cc scan.cc .gdb* test.c -rm -f *.d y.output parse.output -rm -f *~ spotless : clean stats : .force @wc -l $(CCOBJS:.o=.cc) *.{h,l,y} @cat $(CCOBJS:.o=.cc) *.{h,l,y} | sort -u | wc -l .force : -include $(DEPS) %.d : %.cc $(SHELL) -ec '$(CXX) -MM $(CFLAGS) $< \ | sed '\''s/\($*\)\.o[ :]*/\1.o $@ : /g'\'' > $@; \ [ -s $@ ] || rm -f $@' %.d : %.c $(SHELL) -ec '$(CC) -MM $(CFLAGS) $< \ | sed '\''s/\($*\)\.o[ :]*/\1.o $@ : /g'\'' > $@; \ [ -s $@ ] || rm -f $@'