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