1# Constantin Knizhnik 2# Moscow Software Center 3# Pascal to C/C++ compiler. 4# 5 6.SUFFIXES: .cxx .c .h .o .a .exe 7 8default : all 9 10# 11# Install path 12# 13INSTALL_LIB_DIR = 14INSTALL_BIN_DIR = 15 16# 17# Target. 18# 19 20BINS = ptoc.exe cganal.exe 21LIBS = ptoc.a Xbgi.a 22 23# 24# Chose compiler You prefer. 25# 26 27CC = gcc -Zmt 28CCFLAGS = -O2 -Wall -c 29 30DEFINES = 31INCLUDES = -I. 32 33YACC = bison -d -p zz 34LEX = flex -i -F -8 35 36# 37# Chose linker You prefer. 38# 39 40LD = $(CC) 41LDFLAGS = -Zcrtdll 42 43 44AR = ar 45ARFLAGS = -ru 46 47# 48# File lists. 49# 50 51INCS = main.h token.h token.dpp nmtbl.h bring.h tpexpr.h trnod.h util.h 52 53SRCS = trnod.cxx nmtbl.cxx bring.cxx tpexpr.cxx util.cxx main.cxx parser.cxx lex.cxx token.cxx dprintf.cxx 54 55LIB_SRCS = set.c paslib.c io.c 56 57OBJS = $(SRCS:.cxx=.o) 58 59LIB_OBJS = $(LIB_SRCS:.c=.o) 60 61# 62# Default way in which source files should be compiled. 63# 64 65.cxx.o : 66 $(CC) $(CCFLAGS) $(DEFINES) $(INCLUDES) -o $@ $< 67 68.c.o : 69 $(CC) $(CCFLAGS) $(DEFINES) $(INCLUDES) -o $@ $< 70 71# 72# Custom targets. 73# 74 75 76$(OBJS) : $(INCS) 77 78parser.cxx parser.h : parser.y 79 $(YACC) parser.y 80 mv parser.tab.c parser.cxx 81 mv parser.tab.h parser.h 82 83lex.cxx : lex.l 84 $(LEX) lex.l 85 mv lex.yy.c lex.cxx 86 87lex.o: lex.cxx token.h token.dpp 88set.o: set.h ptoc.h 89array.o: array.h ptoc.h 90paslib.o: paslib.h ptoc.h 91io.o: io.h ptoc.h 92analyse.o: analyse.cxx main.h 93 94ptoc.a: $(LIB_OBJS) 95 rm -f $@ 96 $(AR) $(ARFLAGS) $@ $(LIB_OBJS) 97 ar s $@ 98 99cganal.exe : analyse.o 100 $(LD) $(LDFLAGS) -o $@ analyse.o 101 102ptoc.exe : $(OBJS) 103 $(LD) $(LDFLAGS) -o $@ $(OBJS) 104 105Xbgi.a: 106 (cd Xbgi && $(MAKE) -f makefile.emx) 107 108all : $(BINS) $(LIBS) 109 110examples: $(BINS) $(LIBS) 111 (cd examples && $(MAKE) -f makefile.emx) 112 113clean: 114 rm -f $(BINS) *.a a.out *.exe *.pdb *.lib *.tgz *.zip *.o lex.yy.c \ 115 parser.tab.* WinBGI/*.pdb yy.log core y.output parser.output *.exe *~ 116 (cd examples && make -f makefile.emx clean) 117 (cd Xbgi && make -f makefile.emx clean) 118 119tgz: clean 120 (cd .. && tar cvzf ptoc.tgz ptoc) 121 122copytgz: tgz 123 mcopy -o ../ptoc.tgz a: 124 125install: $(BINS) $(LIBS) 126 cp $(BINS) $(INSTALL_BIN_DIR) 127 cp $(LIBS) $(INSTALL_LIB_DIR) 128