1# This file is part of the FreeType project.
2#
3# It builds the library and test programs for BC++ under MSDOS, large model.
4#
5# Tested with Borland C++ v.3.1, 4.02, 5.0
6# You will need Borland MAKE (v.3.6 and above should be OK, for oldest
7# versions refer to the instructions below).
8#
9#
10# Use this file while in the 'test' directory with the following statement:
11#
12#   make -farch\msdos\Makefile.BC
13#
14#
15# Debug versions can be obtained with
16#
17#   make -DDEBUG -farch\msdos\Makefile.BC
18#
19# A special version enabled to handle big fonts (with more than 16,384
20# glyphs) can be obtained with
21#
22#   make -DBIGFONTS -farch\msdos\Makefile.BC
23
24ARCH = arch\msdos
25FT_MAKEFILE = $(ARCH)\Makefile.BC
26
27CC = bcc
28
29LIBDIR = ..\lib
30INCDIRS = -I$(LIBDIR);$(LIBDIR)\$(ARCH);.;$(LIBDIR)\extend
31SPURIOUS_WARNINGS = -w-nak -w-par -w-use -w-aus -w-stu -w-stv -w-cln -w-sig -w-pia
32
33# Credits go to Dave Hoo <dhoo@flash.net> for pointing out that modern
34# Borland compilers (from BC++ 3.1 on) can increase the limit of
35# the length of identifiers.
36!if ! $d(DEBUG)
37CFLAGS = -ml -A -O2 -3 -i40 $(INCDIRS) $(SPURIOUS_WARNINGS)
38LDFLAGS = -ml
39!else
40CFLAGS = -v -N -ml -A -i40 $(INCDIRS) $(SPURIOUS_WARNINGS)
41LDFLAGS = -v -ml
42!endif
43
44
45# full-screen MSDOS driver
46GDRIVER = $(ARCH)\.\gfs_dos.c
47
48DISPLAY = display.c
49
50G1SRC = gmain.c blitter.c $(GDRIVER)
51GSRC = $(DISPLAY) $(G1SRC)
52
53GOBJ = $(GSRC:.c=.obj)
54G1OBJ = $(G1SRC:.c=.obj)
55
56
57SRC = arabic.c \
58      common.c \
59      ftdump.c \
60      fterror.c \
61      ftlint.c \
62      ftmetric.c \
63      ftsbit.c \
64      ftstring.c \
65      ftstrpnm.c \
66      ftstrtto.c \
67      fttimer.c \
68      ftview.c \
69      ftzoom.c
70
71OBJ = $(SRC:.c=.obj)
72
73
74.c.obj:
75	$(CC) -c -o$* @&&|
76	    $(CFLAGS) $<
77|
78
79EXEFILES = ftdump.exe \
80           fterror.exe \
81           ftlint.exe \
82           ftmetric.exe \
83           ftsbit.exe \
84           ftstring.exe \
85           ftstrpnm.exe \
86           ftstrtto.exe \
87           fttimer.exe \
88           ftview.exe \
89           ftzoom.exe
90
91!if !$d(DEBUG)
92# Skipped if DEBUG build
93all: freetype $(EXEFILES)
94
95!endif
96
97debug: freetype_debug $(EXEFILES)
98
99!if $d(BIGFONTS)
100MAKEBIG = -DBIGFONTS
101!endif
102
103freetype:
104	cd $(LIBDIR)
105	make -f$(FT_MAKEFILE) $(MAKEBIG) all
106	cd ..\test
107
108freetype_debug:
109	cd $(LIBDIR)
110	make -f$(FT_MAKEFILE) -DDEBUG $(MAKEBIG) debug
111	cd ..\test
112
113
114# Borland C compilers are unable to include <dos.h> in ANSI mode.
115# So we have a special rule for this file, to build it outside ANSI.
116$(GDRIVER:.c=.obj):
117	$(CC) -c -o$* @&&|
118	    $(CFLAGS) -A- $*.c
119|
120
121.obj.exe:
122	$(CC) -e$* @&&|
123	    $(LDFLAGS) $**
124|
125
126# Borland versions of make are unable to use the $** variable inside
127# implicit rules (like .obj.exe:). The job has to be done by hand. :-(
128ftzoom.exe: $(G1OBJ) ftzoom.obj common.obj $(LIBDIR)\libttf.lib
129	$(CC) $(LDFLAGS) ftzoom.obj $(G1OBJ) common.obj $(LIBDIR)\libttf.lib
130
131ftview.exe: $(GOBJ) ftview.obj common.obj $(LIBDIR)\libttf.lib
132	$(CC) $(LDFLAGS) ftview.obj $(GOBJ) common.obj $(LIBDIR)\libttf.lib
133
134ftstring.exe: $(GOBJ) ftstring.obj common.obj $(LIBDIR)\libttf.lib
135	$(CC) $(LDFLAGS) ftstring.obj $(GOBJ) common.obj $(LIBDIR)\libttf.lib
136
137ftstrtto.exe: $(GOBJ) ftstrtto.obj common.obj arabic.obj $(LIBDIR)\libttf.lib
138	$(CC) $(LDFLAGS) ftstrtto.obj $(GOBJ) common.obj arabic.obj \
139	                  $(LIBDIR)\libttf.lib
140
141fttimer.exe: $(G1OBJ) fttimer.obj common.obj $(LIBDIR)\libttf.lib
142	$(CC) $(LDFLAGS) fttimer.obj $(G1OBJ) common.obj $(LIBDIR)\libttf.lib
143
144ftlint.exe: ftlint.obj common.obj $(LIBDIR)\libttf.lib
145	$(CC) $(LDFLAGS) ftlint.obj common.obj $(LIBDIR)\libttf.lib
146
147ftdump.exe: ftdump.obj common.obj $(LIBDIR)\libttf.lib
148	$(CC) $(LDFLAGS) ftdump.obj common.obj $(LIBDIR)\libttf.lib
149
150ftstrpnm.exe: ftstrpnm.obj common.obj $(LIBDIR)\libttf.lib
151	$(CC) $(LDFLAGS) ftstrpnm.obj common.obj $(LIBDIR)\libttf.lib
152
153ftsbit.exe: ftsbit.obj common.obj $(LIBDIR)\libttf.lib
154	$(CC) $(LDFLAGS) ftsbit.obj common.obj $(LIBDIR)\libttf.lib
155
156ftmetric.exe: ftmetric.obj common.obj $(LIBDIR)\libttf.lib
157	$(CC) $(LDFLAGS) ftmetric.obj common.obj $(LIBDIR)\libttf.lib
158
159fterror.exe: fterror.obj common.obj $(LIBDIR)\libttf.lib
160	$(CC) $(LDFLAGS) fterror.obj common.obj $(LIBDIR)\libttf.lib
161
162
163clean: do_clean
164	cd $(LIBDIR)
165	make -f$(FT_MAKEFILE) clean
166	cd ..\test
167
168distclean: do_clean
169	cd $(LIBDIR)
170	make -f$(FT_MAKEFILE) distclean
171	cd ..\test
172	-del *.exe
173
174do_clean:
175	-del *.obj
176	-del $(ARCH)\*.obj
177	del time.h		# clean the ugly hack for Turbo C...
178
179!include "$(ARCH)\depend.dos"
180
181# end of Makefile
182