Commit Graph

44 Commits

Author SHA1 Message Date
Chongyu Zhu 94c669448a [arm] Fix Savannah bug #41138, part 2.
* builds/unix/ftconfig.in (FT_MulFix_arm), include/config/ftconfig.h
(FT_MulFix_arm), src/truetype/ttinterp.c (TT_MulFix14_arm): Fix
preprocessor conditionals for `add.w'.
2014-01-08 08:52:59 +01:00
Werner Lemberg fae3820764 Simplify header file hierarchy.
This large patch changes the header file directory layout from
`include/freetype/...' to `include/...', effectively removing one
level.  Since the file `ft2build.h' is also located in `include'
(and it stays there even after installation), all FreeType header
files are now in a single directory.

Applications that use (a) `freetype-config' or FreeType's
`pkg-config' file to get the include directory for the compiler, and
(b) the documented way for header inclusion like

  #include <ft2build.h>
  #include FT_FREETYPE_H
  ...

don't need any change to the source code.

* include/freetype/*: Move up to...
* include/*: ... this directory.

* builds/amiga/include/freetype/*: Move up to...
* builds/amiga/include/*: ... this directory.

*/*: Essentially do `s@/freetype/@/@' where appropriate.

* CMakeList.txt: Simplify.
* builds/unix/freetype-config.in, builds/unix/freetype2.in: For
`--cflags', return a single directory.
* builds/unix/install.mk (install): No longer try to remove `cache'
and `internal' subdirectories; instead, remove the `freetype'
subdirectory.
2013-11-13 08:55:46 +01:00
Werner Lemberg 35b0818986 Fix Savannah bug #40451.
Simply apply the patch from the bug report.

* builds/unix/ftconfig.in, builds/vms/ftconfig.h,
include/freetype/config/ftconfig.h: The used #pragma directives only
work with gcc versions 4.6 and higher.
2013-11-02 08:28:41 +01:00
Chongyu Zhu 41632b58ef [arm] Fix thumb2 inline assembly under LLVM.
When using `ADD' with an immediate operand, the instruction is
actually `ADD Rd, Rn, #<imm12>', that is, the maximum of the
immediate operand cannot exceed 4095.  It will fail to compile with
LLVM.

However, in GCC, due to some legacy compatibility considerations,
`ADD.W' will be automatically emitted when the immediate operand is
larger than 4095.

* builds/unix/ftconfig.in, include/freetype/config/ftconfig.h
(FT_MulFix_arm) [__GNUC__]: Support clang compiler.

* src/truetype/ttinterp.c (TT_MulFix14_arm) [__GNUC__]: Ditto.
2013-10-15 11:40:34 +02:00
Werner Lemberg 9e6de36aee Fix Savannah bug #39700.
* builds/unix/ftconfig.h: Synchronize with
`include/freetype/config/ftconfig.h'.

* builds/vms/ftconfig.h: Ditto.
Make the differences to the master `ftconfig.h' file as small as
possible for easier maintainance.
2013-08-05 16:37:21 +02:00
David Turner b28908860d Optimize FT_MulFix for x86_64 GCC builds.
This patch provides an optimized `FT_MulFix' implementation for
x86_64 machines when FreeType is built with GCC, or compatible
compilers like Clang.

Example:
  bin/ftbench -p -t 5 -s 14 -f 0008 Arial.ttf

Before:

  Load                       4.863 us/op
  Load_Advances (Normal)     4.816 us/op
  Load_Advances (Fast)       0.028 us/op
  Render                     2.753 us/op
  Get_Glyph                  0.463 us/op
  Get_CBox                   0.077 us/op
  Get_Char_Index             0.023 us/op
  Iterate CMap              13.898 us/op
  New_Face                  12.368 us/op
  Embolden                   0.028 us/op
  Get_BBox                   0.302 us/op

After:

  Load                       4.617 us/op
  Load_Advances (Normal)     4.645 us/op
  Load_Advances (Fast)       0.027 us/op
  Render                     2.789 us/op
  Get_Glyph                  0.460 us/op
  Get_CBox                   0.077 us/op
  Get_Char_Index             0.024 us/op
  Iterate CMap              13.403 us/op
  New_Face                  12.278 us/op
  Embolden                   0.028 us/op
  Get_BBox                   0.301 us/op

* builds/unix/ftconfig.in, include/freetype/config/ftconfig.h
(FT_MulFix_x86_64): New function.
2013-07-16 13:19:32 +02:00
David Turner a5f33eeb8a Speed up ARMv7 support.
When building for ARMv7 with thumb2 instructions, the optimized
`FT_MulFix_arm' assembly routine was not being used.

The reason for this is in the `ftconfig.h' header, namely:

- The assembly routine uses the `smull' instruction which is not
  available when generating Thumb-1 machine code.  It is available
  in Thumb-2 mode, though.

- The header was written a long time ago before Thumb-2 became
  widely popular (e.g. with Android).  So it simply doesn't use the
  assembly routine if the `__thumb__' built-in macro is defined.

- When compiling in Thumb-2 mode, the compiler will define both
  `__thumb__' and `__thumb2__'.

By checking for `(__thumb2__ || !__thumb__)', we ensure that the
assembly routine is only avoided when generating Thumb-1 code.

Given that this is performance-sensitive function, this improves
`ftbench' as follows on a Galaxy Nexus:

                           Before (us/op)   After (us/op)

  - loading Arial.ttf glyphs at 14 ppem [1]

      Load                   34.285          33.098

  - same operation with the light auto-hinter [2]

      Load                   31.317          29.590

  - same operation without hinting [3]

      Load                    6.143           5.376

  - loading Arial.ttf advances at 14 ppem [4]

      Load_Advances (normal) 34.216          33.016
      Load_Advances (fast)    0.176           0.176

  [1] ftbench -t 5 -p -s 14 -b a -f 0008 Arial.ttf
  [2] ftbench -t 5 -p -s 14 -b a -r 1 -f 0028 Arial.ttf
  [3] ftbench -t 5 -p -s 14 -b a -f 000a Arial.ttf
  [4] ftbench -t 5 -p -s 14 -b b -f 0008 Arial.ttf

* builds/unix/ftconfig.in, include/freetype/config/ftconfig.h
(FT_MULFIX_ASSEMBLER): Fix handling for ARMv7.
2013-07-16 13:19:32 +02:00
Werner Lemberg cbcf33d1d9 Introduce unsigned 64bit type (if available).
* include/freetype/config/ftconfig.h: Define FT_UINT64 if available.
[FT_LONG64]: Provide FT_UInt64.

* builds/unix/ftconfig.in: Synchronized.
2013-05-12 07:27:48 +02:00
Werner Lemberg 2656861118 Synchronize `ftconfig.h'.
* builds/unix/ftconfig.in: Updated.
2013-05-05 17:50:22 +02:00
suzuki toshiya 714ee56ab1 [mac] Unify DARWIN_NO_CARBON with FT_MACINTOSH.
Originally FT_MACINTOSH was a pure auto macro and DARWIN_NO_CARBON
was a configurable macro to disable Carbon-dependent code.  Because
now configure script sets DARWIN_NO_CARBON by default and disables
Darwin & Carbon-dependent codes, these macros can be unified.
FT_MACINTOSH (undefined by default) is kept and DARWIN_NO_CARBON
(defined by default) is removed, because DARWIN_NO_CARBON violates
FT_XXX naming convention of public macros, and a macro configured by
default is not portable for the building without configure (e.g.
make devel).

* builds/unix/configure.raw: Define FT_MACINTOSH if Carbon-based
old Mac font support is requested and Carbon is available.
* builds/unix/ftconfig.in: Undefine FT_MACINTOSH when the support
for Mac OS X without Carbon (e.g.  Mac OS X 10.4 for ppc64) is
requested.
* include/freetype/config/ftconfig.in: Ditto.
* builds/vms/ftconfig.h: Ditto.

* src/base/ftbase.h: Remove DARWIN_NO_CARBON.
* src/base/ftbase.c: Ditto.
* src/base/ftobjs.c: Ditto.
* src/base/ftrfork.c: Ditto.

* src/base/ftmac.c: Compile the body if FT_MACINTOSH is defined
(same with TT_USE_BYTECODE_INTERPRETER in ttinterp.c).
* builds/mac/ftmac.c: Ditto.

* builds/mac/FreeType.m68k_cfm.make.txt: Define FT_MACINTOSH.
* builds/mac/FreeType.m68k_far.make.txt: Ditto.
* builds/mac/FreeType.ppc_classic.make.txt: Ditto.
* builds/mac/FreeType.ppc_carbon.make.txt: Ditto.
2011-12-02 21:14:58 +09:00
Werner Lemberg 34eca6ec63 Remove unused FT_ALIGNMENT macro.
* builds/unix/ftconfig.in, builds/vms/ftconfig.h,
include/freetype/config/ftconfig.h: Do it.
2011-09-17 09:46:46 +02:00
Werner Lemberg fe0f16d295 Fix comments. 2011-06-01 10:36:04 +02:00
suzuki toshiya c32d54c949 [mac] Conditionalize the inclusion of "AvailabilityMacros.h".
The native SDK on earliest Mac OS X (10.0-10.1) did not have
"AvailabilityMacros.h".  To prevent the inclusion of missing
header file, ECANCELED (introduced in 10.2) in POSIX header
file <errno.h> is checked to detect the system version.

* include/freetype/config/ftconfig.h: Conditionalize the
inclusion of "AvailabilityMacros.h".
* builds/unix/ftconfig.in: Ditto.
* builds/vms/ftconfig.h: Ditto.
2011-05-29 01:33:34 +09:00
Werner Lemberg 149f5438c4 Synchronize config files.
* builds/unix/ftconfig.in: Copy missing assembler routines from
include/freetype/config/ftconfig.h.
2011-04-18 15:09:38 +02:00
Werner Lemberg 948076cd85 Fix conditional usage of FT_MulFix_i386.
With -ansi flag, gcc does not define `i386', only `__i386__'.

* include/freetype/config/ftconfig.h, builds/unix/ftconfig.in:
s/i386/__i386__/.
2010-08-06 01:39:26 +02:00
Steve Langasek 2cd5dce831 Use __asm__ for declaring assembly instead of asm.
* builds/unix/ftconfig.in (FT_MulFix_arm): Use __asm__ instead of
asm on arm, fixing a build failure on armel with -pedantic.
2009-03-15 13:11:25 +01:00
Werner Lemberg 1e8599240f Fix Savannah bug #25588.
* builds/unix/ftconfig.in (FT_MulFix_arm): Use correct syntax for
`orr' instruction.
2009-02-15 07:54:35 +00:00
Werner Lemberg 45489589ad * src/base/ftobjs.c (open_face_PS_from_sfnt_stream): Remove compiler
warnings.

Formatting.
2008-10-04 11:39:03 +00:00
Suzuki, Toshiya (鈴木俊哉) 9e2b9900dc * Remove duplicated functions from builds/mac/ftmac.c. Now MPW builds builds/mac/ftmac.c as a part of ftbase.c 2008-10-03 11:52:22 +00:00
Werner Lemberg b211651ac9 * autogen.sh, builds/unix/configure.raw,
include/freetype/config/ftconfig.h, builds/unix/ftconfig.in: Minor
beautifying.

* include/freetype/ftadvanc.h, include/freetype/ftgasp.h,
include/freetype/ftlcdfil.h: Protect against FreeType 1.
Some other minor fixes.

* devel/ftoption.h: Synchronize with
include/freetype/config/ftoption.h.

Formatting, documentation improvements.
2008-09-12 16:27:48 +00:00
Suzuki, Toshiya (鈴木俊哉) 59188661e6 * Fix Savannah bug #21250: builds/unix/configure installs bi-arch ftconfig.h if it works correctly 2008-09-11 08:02:23 +00:00
David Turner f47d263f1b * include/freetype/ftoption.h, include/freetype/ftconfig.h,
builds/unix/ftconfig.in, include/freetype/freetype.h,
    src/base/ftcalc.c:
    Make FT_MulFix an inlined function. Also provide an assembler
    implementation for ARM architectures. this is done to speedup
    FreeType a little (on x86 3% when loading+hinting, 10% when
    rendering, ARM savings are more important though).
    Disable this by undefining FT_CONFIG_OPTION_INLINE_MULFIX in
    ftconfig.h
2008-09-02 02:21:58 +00:00
Werner Lemberg 644b1ad49e * builds/win32/visualc/index.html,
builds/win32/visualc/freetype.dsp,
builds/win32/visualc/freetype.vcproc, README: s/2.3.2/2.3.3/,
s/232/233/.

* docs/CHANGES: Mention ftdiff.
2007-03-28 21:17:11 +00:00
Suzuki, Toshiya (鈴木俊哉) 86a3ee7613 Disable Carbon framework dependency on 64bit ABI of Mac OS X 10.4.x 2007-03-26 05:40:55 +00:00
Suzuki, Toshiya (鈴木俊哉) 4bcf957406 Suppress SGI compiler warning against setjmp 2007-03-22 04:53:45 +00:00
Suzuki, Toshiya (鈴木俊哉) 7e3d601355 * Simplify src/base/ftmac.c for Mac OS X 2006-12-15 15:23:21 +00:00
Werner Lemberg c4c35b773d * builds/unix/ftconfig.in: Synchronize with main ftconfig.h.
Reported by Jens.

Formatting.
2006-08-27 08:03:46 +00:00
Werner Lemberg ba80d61c7a * builds/unix/ftconfig.in, builds/vms/ftconfig.h: Define
FT_CHAR_BIT.

* src/base/ftobjs.c (FT_Load_Glyph): Don't apply autohinting if
glyph is vertically distorted or mirrored.

* src/cff/cffgload.c (cff_slot_load): Handle zero `size' properly
for embedded bitmaps.

* docs/CHANGES: Updated.
2004-04-16 09:56:30 +00:00
Werner Lemberg e42dbcec21 * Version 2.1.7 released.
=========================


* builds/unix/ft2unix.h: Fix comments.

* builds/unix/ftconfig.in: Synchronized with ANSI version.
Use `#undef' in templates as recommended in the autoconf
documentation.
Since real `#undef' lines don't survive during configuration, use
`/undef' instead; the postprocessing facility of the
AC_CONFIG_HEADERS autoconf macro converts them to `#undef'.

* builds/unix/install.mk (install): Install Unix version of
`ftconfig.h'.

* builds/unix/unix-cc.in (CFLAGS): Set FT_CONFIG_CONFIG_H macro
to include the correct `ftconfig.h' file.

* builds/unix/ft-munmap.m4 (FT_MUNMAP_DECL): Removed.
(FT_MUNMAP_PARAM): Updated syntax to autoconf 2.59.

* builds/unix/freetype2.m4: Updated syntax to autoconf 2.59.

* builds/unix/configure.ac: Use AC_CONFIG_HEADERS instead of
AC_CONFIG_HEADER to create ftconfig.h, and use second argument
to replace `/undef' with `#undef'.
Don't use FT_MUNMAP_DECL but AC_CHECK_DECLS to check for munmap.
Use AS_HELP_STRING in AC_ARG_WITH.
Update syntax to autoconf 2.59.

* builds/unix/ltmain.sh: Regenerated with `libtoolize --force
--copy' from libtool 1.5.
* builds/unix/aclocal.m4: Regenerated with `aclocal -I .' from
automake 1.7.8.
* builds/unix/configure: Regenerated with autoconf 2.59.
* builds/unix/config.guess, builds/unix/config.sub: Updated from
`config' CVS module at subversions.gnu.org
* builds/unix/install-sh, builds/unix/mkinstalldirs: Updated from
`texinfo' CVS module at subversions.gnu.org.

* builds/vms/ftconfig.h: Synchronized with ANSI version.

* docs/CUSTOMIZE: Fix documentation error.
* docs/CHANGES, docs/VERSION.DLL, docs/release: Updated.

* builds/freetype.mk (refdoc): Updated --title.
2003-11-09 08:37:14 +00:00
David Turner 737fa9acf7 * builds/unix/ftconfig.in, builds/vms/ftconfig.h: Oops, forgot to
update these files too
2002-04-12 10:19:15 +00:00
Werner Lemberg b1e6e59782 * builds/vms/ftconfig.h: Rename LOCAL_DEF and LOCAL_FUNC to
FT_LOCAL and FT_LOCAL_DEF, respectively, as with other ftconfig.h
files.
* builds/unix/ftconfig.in: Add argument to FT_LOCAL and
FT_LOCAL_DEF.
* src/truetype/ttinterp.c: s/FT_Assert/FT_ASSERT/.
* builds/unix/configure.ac: Temporarily deactivate creation of
../../Jamfile.
* builds/unix/configure: Updated.
2002-03-29 07:43:04 +00:00
Werner Lemberg a7d2f5e1c0 * src/autohint/ahglyph.c (ah_outline_link_segments): Remove unused
variables.
* src/autohint/ahhint.c (ah_align_serif_edge): Use FT_UNUSED instead
of UNUSED.
* src/autohint/ahmodule.c (ft_autohinter_reset): Ditto.
* src/pshinter/pshrec.c (ps_mask_table_merge): Fix typo in variable
swapping code.
* src/pshinter/pshglob.h (PSH_Blue_Align): Add PSH_BLUE_ALIGN_NONE.
* src/pshinter/pshglob.c (psh_blues_snap_stem): Use it.
* src/pshinter/pshalgo1.c (psh1_hint_table_optimize): Ditto.
* src/pshinter/pshalgo2.c (psh2_hint_align): Ditto.
* include/freetype/internal/ftobjs.h (UNUSED): Removed.
2002-02-19 01:12:23 +00:00
Werner Lemberg f814d0fafe First round in converting
type foo ( ... )

to

  type
  foo ( ... )

Other minor formatting issues.
2001-06-27 16:18:10 +00:00
David Turner f77581f642 changed the definition of FT_CALLBACK_DEF 2001-06-27 10:54:13 +00:00
David Turner 8c8af31f5f fixed Unix installation 2000-12-04 23:28:14 +00:00
Werner Lemberg 1e8b4ae53c formatting 2000-12-02 17:07:15 +00:00
David Turner ac4cd9516e changes to allow compilation under Unix and Cygwin 2000-12-02 00:35:11 +00:00
Werner Lemberg dc72aff43d Finishing David's latest changes (there were some errors in it). 2000-11-04 08:33:38 +00:00
Werner Lemberg bd547dc6e3 Clean up, formatting etc.
Fixing rules for installing cache headers on Unix.

Updating builds/unix/ftconfig.in.
2000-09-22 21:23:29 +00:00
Werner Lemberg 29a90e2610 Updating unix/ftconfig.in to recent config/ftconfig.h changes.
More C++ fixes: Introducing LOCAL_FUNC_X for local functions used in
function pointers (there are no local anonymous functions in C++) and
FT_CPLUSPLUS (instead of FT_EXPORT_VAR) to define linkage of structures
which contain function pointers.
2000-08-03 00:03:08 +00:00
Werner Lemberg c713d924d8 Added #ifdef's for C++ to all header files. 2000-08-01 13:17:04 +00:00
Werner Lemberg d060a75b0d Formatting.
Rudimentary support for autoconf (still using GNU make)

Say `make unix'.
2000-07-20 06:57:41 +00:00
David Turner b390a12429 removed some stupid #defines in <freetype/config/ftconfig.h> 2000-07-10 00:13:39 +00:00
David Turner 7404301024 renaming "freetype2/config" to "freetype2/builds" 2000-07-08 00:22:20 +00:00