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