- added support for the free command-line Borland C++ compiler

in the "builds" directory

- modified a few files because BCC32 didn't like certain comparisons
  (UInt compared with a UShort, apparently the UShort is promoted to
  an Int)

- updated the INSTALL file to include IDE compilation, prevent against
  BSD Make, and clarify the use of "make setup" (instead of "make")
  for build configuration
This commit is contained in:
David Turner 2000-11-30 23:48:22 +00:00
parent 8fba32d2d6
commit b1aabf4c5e
13 changed files with 273 additions and 34 deletions

View File

@ -1,5 +1,9 @@
2000-11-30 David Turner <david.turner@freetype.ogr>
* INSTALL: slightly updated the quick starter documentation to
include IDE compilation, prevent agains BSD Make, and specify
"make setup" instead of a single "make" for build configuration.
* include/config/ftbuild.h, include/internal/internal.h: added
a new configuration file used to determine where are all public,
configuration and internal header files for FreeType 2. I also
@ -7,9 +11,18 @@
change. Note that we still need to change the library source
files themselves though..
* include/freetype.h: modified all public, configuration and
internal header files to use the new
* builds/compiler/bcc.mk, builds/compiler/bcc-dev.mk,
builds/win32/w32-bcc.mk, builds/win32/w32-bccd.mk,
builds/win32/detect.mk: added new files to support compilation with
the free Borland C++ command-line compiler. Modified the detection
rules to recognize the new "bcc32" target in "make setup bcc32"
* src/sfnt/ttcmap.c, src/sfnt/ttpost.c, src/sfnt/ttsbit.c,
src/truetype/ttobjs.c, src/truetype/ttgload.c, src/truetype/ttinterp.c:
fixed a few comparisons that Borland C++ didn't really like. Basically,
this compiler complains when a FT_UInt is compared to a FT_UShort
(apparently, it promotes the UShort to an Int in these cases)
2000-11-30 Tom Kacvinsky <tjk@ams.org>
* t2objs.c (T2_Init_Face): Added calculation of `face->height' for

83
INSTALL
View File

@ -1,33 +1,90 @@
In order to build the library, read the `BUILD' document in the `docs'
directory. Quick starter: Go to `freetype2', then:
directory. This is only a quick starter:
Unix + GNU Make:
I. From the command line:
- make (don't worry, this will invoke a configure script)
You need to have GNU Make installed on your system to compile the
library from the command line. This will _not_ work with other
Make tools (including the BSD ones !!)
- Go to the 'freetype2' directory
- on Unix (any C compiler should work):
- make setup (don't worry, this will invoke a configure script)
- make
- make install
alternatively, you can pass parameters to the configure script
with the CFG variable, as in:
- make CFG="--prefix=/usr"
- make setup CFG="--prefix=/usr"
- make
- make install
- On Windows:
Windows + gcc + GNU Make:
we provide a version of GNU Make for Win32 on the FreeType site.
See http://www.freetype.org/download.html for details..
- make
- make
o if you're using gcc:
Windows + Visual C++ + GNU Make:
- make setup
- make
- make setup visualc
- make
o if you're using Visual C++:
- make setup visualc
- make
o if you're using Win32-lCC:
- make setup lcc
- make
o if you're using the Borland C++ Builder compiler:
- make setup bcc32
- make
Windows + Win32-LCC + GNU Make:
- make setup lcc
- make
II. In your own environment (IDE):
you need to add the directories "freetype2/include" and "freetype2/src"
to your include path when compiling the library.
compile each library component through the following files:
-- base components (required)
src/base/ftsystem.c
src/base/ftinit.c
src/base/ftdebug.c
src/base/ftbase.c
src/base/ftglyph.c
src/base/ftbbox.c
src/base/ftmm.c
src/base/ftmac.c -- only on the Macintosh
-- other components are optional
src/autohint/autohint.c -- auto hinting module
src/cache/ftcache.c -- cache sub-system (in beta)
src/sfnt/sfnt.c -- SFNT files support (TrueType & OpenType)
src/cff/cff.c -- CFF/OpenType font driver
src/psnames/psnames.c -- Postscript glyph names support
src/psaux/psaux.c -- Postscript Type 1 parsing
src/truetype/truetype.c -- TrueType font driver
src/type1/type1.c -- Type 1 font driver
src/cid/type1cid.c -- Type 1 CID-keyed font driver
src/winfonts/winfonts.c -- Windows FONT / FNT font driver
note that:
'truetype.c' needs 'sfnt.c' and 'psnames.c'
'type1.c' needs 'psaux.c' and 'psnames.c'
'type1cid.c' needs 'psaux.c' and 'psnames.c'
'cff.c' needs 'sfnt.c', 'psaux.c' and 'psnames.c'
etc.

View File

@ -0,0 +1,69 @@
# Copyright 2000 David Turner
#
# Borland C++-specific with NO OPTIMISATIONS + DEBUGGING
#
# Compiler command line name
CC := bcc32
# The object file extension (for standard and static libraries). This can be
# .o, .tco, .obj, etc., depending on the platform.
#
O := obj
SO := obj
# The library file extension (for standard and static libraries). This can
# be .a, .lib, etc., depending on the platform.
#
A := lib
SA := lib
# Path inclusion flag. Some compilers use a different flag than `-I' to
# specify an additional include path. Examples are `/i=' or `-J'.
#
I := -I
# C flag used to define a macro before the compilation of a given source
# object. Usually is `-D' like in `-DDEBUG'.
#
D := -D
# The link flag used to specify a given library file on link. Note that
# this is only used to compile the demo programs, not the library itself.
#
L :=
# Target flag. - no trailing space
#
T := -o
# C flags
#
# These should concern: debug output, optimization & warnings.
#
# Use the ANSIFLAGS variable to define the compiler flags used to enfore
# ANSI compliance.
#
ifndef CFLAGS
CFLAGS := -c -y -d -v -Od -w-par -w-ccc -w-rch -w-pro -w-aus
endif
# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant.
#
ANSIFLAGS := -A
# Library linking
#
ifndef CLEAN_LIBRARY
CLEAN_LIBRARY = $(DELETE) $(subst $(SEP),$(HOSTSEP),$(PROJECT_LIBRARY)) $(NO_OUTPUT)
endif
TARGET_OBJECTS = $(subst $(SEP),\\,$(OBJECTS_LIST))
LINK_LIBRARY = tlib /u $(subst $(SEP),\\,$@) $(TARGET_OBJECTS:%=+%)
# EOF

69
builds/compiler/bcc.mk Normal file
View File

@ -0,0 +1,69 @@
# Copyright 2000 David Turner
#
# Borland C++-specific rules
#
# Compiler command line name
CC := bcc32
# The object file extension (for standard and static libraries). This can be
# .o, .tco, .obj, etc., depending on the platform.
#
O := obj
SO := obj
# The library file extension (for standard and static libraries). This can
# be .a, .lib, etc., depending on the platform.
#
A := lib
SA := lib
# Path inclusion flag. Some compilers use a different flag than `-I' to
# specify an additional include path. Examples are `/i=' or `-J'.
#
I := -I
# C flag used to define a macro before the compilation of a given source
# object. Usually is `-D' like in `-DDEBUG'.
#
D := -D
# The link flag used to specify a given library file on link. Note that
# this is only used to compile the demo programs, not the library itself.
#
L :=
# Target flag. - no trailing space
#
T := -o
# C flags
#
# These should concern: debug output, optimization & warnings.
#
# Use the ANSIFLAGS variable to define the compiler flags used to enfore
# ANSI compliance.
#
ifndef CFLAGS
CFLAGS := -c -q -y -d -v -Od -w-par -w-ccc -w-rch -w-pro -w-aus
endif
# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant.
#
ANSIFLAGS := -A
# Library linking
#
ifndef CLEAN_LIBRARY
CLEAN_LIBRARY = $(DELETE) $(subst $(SEP),$(HOSTSEP),$(PROJECT_LIBRARY)) $(NO_OUTPUT)
endif
TARGET_OBJECTS = $(subst $(SEP),\\,$(OBJECTS_LIST))
LINK_LIBRARY = tlib /u $(subst $(SEP),\\,$@) $(TARGET_OBJECTS:%=+%)
# EOF

View File

@ -89,6 +89,13 @@ ifeq ($(PLATFORM),ansi)
mingw32: setup
endif
ifneq ($(findstring bcc32,$(MAKECMDGOALS)),) # Borland C++
CONFIG_FILE := w32-bcc.mk
SEP := $(BACKSLASH)
CC := bcc32
bcc32: setup
endif
ifneq ($(findstring devel,$(MAKECMDGOALS)),) # development target
CONFIG_FILE := w32-dev.mk
CC := gcc

12
builds/win32/w32-bcc.mk Normal file
View File

@ -0,0 +1,12 @@
#
# Borland C++ on Win32
#
SEP := /
include $(TOP)/builds/win32/win32-def.mk
include $(TOP)/builds/compiler/bcc.mk
# include linking instructions
include $(TOP)/builds/link_dos.mk
# EOF

12
builds/win32/w32-bccd.mk Normal file
View File

@ -0,0 +1,12 @@
#
# Borland C++ on Win32 + debugging
#
SEP := /
include $(TOP)/builds/win32/win32-def.mk
include $(TOP)/builds/compiler/bcc-dev.mk
# include linking instructions
include $(TOP)/builds/link_dos.mk
# EOF

View File

@ -417,10 +417,10 @@
sh2 = cmap2->subHeaders + index1;
char_lo -= sh2->firstCode;
if ( char_lo < sh2->entryCount )
if ( char_lo < (FT_UInt)sh2->entryCount )
{
offset = sh2->idRangeOffset / 2 + char_lo;
if ( offset < cmap2->numGlyphId )
if ( offset < (FT_UInt)cmap2->numGlyphId )
{
result = cmap2->glyphIdArray[offset];
if ( result )
@ -484,10 +484,10 @@
/* the ranges are sorted in increasing order. If we are out of */
/* the range here, the char code isn't in the charmap, so exit. */
if ( charCode > seg4->endCount )
if ( charCode > (FT_UInt)seg4->endCount )
continue;
if ( charCode >= seg4->startCount )
if ( charCode >= (FT_UInt)seg4->startCount )
goto Found;
}
return 0;
@ -508,7 +508,7 @@
+ ( seg4 - cmap4->segments )
- segCount;
if ( index1 < cmap4->numGlyphId &&
if ( index1 < (FT_UInt)cmap4->numGlyphId &&
cmap4->glyphIdArray[index1] != 0 )
result = ( cmap4->glyphIdArray[index1] + seg4->idDelta ) & 0xFFFF;
}
@ -544,7 +544,7 @@
result = 0;
charCode -= cmap6->firstCode;
if ( charCode < cmap6->entryCount )
if ( charCode < (FT_UInt)cmap6->entryCount )
result = cmap6->glyphIdArray[charCode];
return result;

View File

@ -500,7 +500,7 @@
break;
}
if ( index < table->num_glyphs )
if ( index < (FT_UInt)table->num_glyphs )
{
FT_UShort name_index = table->glyph_indices[index];
@ -525,7 +525,7 @@
break;
}
if ( index < table->num_glyphs ) /* paranoid checking */
if ( index < (FT_UInt)table->num_glyphs ) /* paranoid checking */
{
index += table->offsets[index];
*PSname = MAC_NAME( index );

View File

@ -689,8 +689,8 @@
/* check whether the glyph index is within this strike's */
/* glyph range */
if ( glyph_index < strike->start_glyph ||
glyph_index > strike->end_glyph )
if ( glyph_index < (FT_UInt)strike->start_glyph ||
glyph_index > (FT_UInt)strike->end_glyph )
goto Fail;
/* scan all ranges in strike */
@ -701,8 +701,8 @@
for ( ; range < range_limit; range++ )
{
if ( glyph_index >= range->first_glyph &&
glyph_index <= range->last_glyph )
if ( glyph_index >= (FT_UInt)range->first_glyph &&
glyph_index <= (FT_UInt)range->last_glyph )
{
FT_UShort delta = glyph_index - range->first_glyph;
@ -727,7 +727,7 @@
for ( n = 0; n < range->num_glyphs; n++ )
{
if ( range->glyph_codes[n] == glyph_index )
if ( (FT_UInt)range->glyph_codes[n] == glyph_index )
{
if ( range->index_format == 4 )
*aglyph_offset = range->glyph_offsets[n];

View File

@ -97,7 +97,7 @@
FT_UShort k = header->number_Of_HMetrics;
if ( index < k )
if ( index < (FT_UInt)k )
{
longs_m = (TT_LongMetrics*)header->long_metrics + index;
*bearing = longs_m->bearing;

View File

@ -6430,7 +6430,7 @@
for ( ; def < limit; def++ )
{
if ( def->opc == CUR.opcode && def->active )
if ( (FT_Byte)def->opc == CUR.opcode && def->active )
{
TT_CallRec* call;
@ -7414,7 +7414,7 @@
for ( ; def < limit; def++ )
{
if ( def->active && CUR.opcode == def->opc )
if ( def->active && CUR.opcode == (FT_Byte)def->opc )
{
TT_CallRec* callrec;

View File

@ -602,7 +602,7 @@
size->cvt[i] = FT_MulFix( face->cvt[i], size->ttmetrics.scale );
/* All twilight points are originally zero */
for ( j = 0; j < size->twilight.n_points; j++ )
for ( j = 0; j < (FT_UInt)size->twilight.n_points; j++ )
{
size->twilight.org[j].x = 0;
size->twilight.org[j].y = 0;
@ -611,7 +611,7 @@
}
/* clear storage area */
for ( i = 0; i < size->storage_size; i++ )
for ( i = 0; i < (FT_UInt)size->storage_size; i++ )
size->storage[i] = 0;
size->GS = tt_default_graphics_state;