1
  
2
  
3
  
4
  
5
  
6
  
7
  
8
  
9
  
10
  
11
  
12
  
13
  
14
  
15
  
16
  
17
  
18
  
19
  
20
  
21
  
22
  
23
  
24
  
25
  
26
  
27
  
28
  
29
  
30
  
31
  
32
  
33
  
34
  
35
  
36
  
37
  
38
  
39
  
40
  
41
  
42
  
43
  
44
  
45
  
46
  
47
  
48
  
49
  
50
  
51
  
52
  
53
  
54
  
55
  
56
  
57
  
58
  
59
  
60
  
61
  
62
  
63
  
64
  
65
  
66
  
67
  
68
  
69
  
70
  
71
  
72
  
73
  
74
  
75
  
76
  
77
  
78
  
79
  
80
  
81
  
82
  
83
  
84
  
85
  
86
  
87
  
88
  
89
  
90
  
91
  
92
  
93
  
94
  
95
  
96
  
97
  
98
  
99
  
100
  
101
  
102
  
103
  
104
  
105
  
106
  
107
  
108
  
109
  
110
  
111
  
112
  
113
  
114
  
115
  
116
  
117
  
118
  
119
  
120
  
121
  
122
  
123
  
124
  
125
  
126
  
127
  
128
  
129
  
130
  
131
  
132
  
133
  
134
  
135
  
136
  
137
  
138
  
139
  
AC_INIT(image_ttf.c) 
AC_CONFIG_HEADER(config.h) 
AC_ARG_WITH(ttflib,     [  --with(out)-ttflib       Support TTF via ttf.lib (freetype) (Image.TTF)],[],[with_ttflib=yes]) 
 
AC_MODULE_INIT() 
 
PIKE_FEATURE_WITHOUT(Image.TTF) 
 
if test x$with_ttflib = xyes ; then 
  PIKE_FEATURE_NODEP(Image.TTF) 
 
  # Try adding freetype1 to the include path. 
  real_include_dirs='' 
  for flag in $CPPFLAGS; do 
    case "$flag" in 
      -I*) 
        d="`echo Q$flag|sed -e 's/^Q-I//'`/freetype1" 
        AC_MSG_CHECKING($d) 
        if test -d "$d/."; then 
          REALDIR="`cd $d/. ; /bin/pwd`" 
          if test "x$REALDIR" = x ; then 
            REALDIR=UNKNOWN 
          else 
            : 
          fi 
 
          case " $CPPFLAGS $real_include_dirs " in 
            *\ -I$d\ * | *\ -I$REALDIR\ *) 
               AC_MSG_RESULT(already added) 
            ;; 
            *) 
              OLD_CPPFLAGS="${CPPFLAGS}" 
              CPPFLAGS="${CPPFLAGS} -I$d" 
              AC_TRY_CPP([include <stdio.h>], [ 
                AC_MSG_RESULT(added) 
                if test "x$REALDIR" != xUNKNOWN; then 
                  real_include_dirs="${real_include_dirs} -I$REALDIR" 
                else 
                  : 
                fi 
              ], [ 
                AC_MSG_RESULT(fails) 
                CPPFLAGS="${OLD_CPPFLAGS}" 
              ]) 
            ;; 
          esac 
        else 
          AC_MSG_RESULT(no) 
        fi 
      ;; 
    esac 
  done 
 
  AC_CHECK_HEADERS(freetype.h ftxkern.h freetype/freetype.h freetype/ftxkern.h) 
 
  parent="$ac_cv_header_ftxkern_h$ac_cv_header_freetype_h" 
  subdir="$ac_cv_header_freetype_ftxkern_h$ac_cv_header_freetype_freetype_h" 
  freetype_h="$ac_cv_header_freetype_h$ac_cv_header_freetype_freetype_h" 
 
  if test "$parent" = "yesyes" -o "$subdir" = "yesyes" ; then 
    AC_CHECK_LIB(ttf, TT_Open_Collection, [ 
      LIBS="${LIBS-} -lttf" 
      AC_MSG_CHECKING([if libttf actually works]) 
      AC_CACHE_VAL(pike_cv_lib_ttf_works, [ 
        AC_TRY_RUN([ 
#include <stdio.h> 
#if defined(HAVE_FREETYPE_FREETYPE_H) && defined(HAVE_FREETYPE_FTXKERN_H) 
 
#include <freetype/freetype.h> 
#include <freetype/ftxkern.h> 
 
#else /* !HAVE_FREETYPE_FREETYPE_H || !HAVE_FREETYPE_FTXKERN_H */ 
 
#include <freetype.h> 
#include <ftxkern.h> 
 
#endif /* HAVE_FREETYPE_FREETYPE_H && HAVE_FREETYPE_FTXKERN_H */ 
 
          int main(int argc, char **argv) 
          { 
            unsigned char palette[5] = {0,64,128,192,255}; 
            TT_Error errcode; 
            TT_Engine engine; 
 
            if ((errcode = TT_Init_FreeType(&engine))) { 
              fprintf(stderr, "TT_Init_FreeType() failed with code 0x%02lx\n", 
                      (unsigned long)errcode); 
              exit(1); 
            } 
            /* Irix libttf breaks here... */ 
            TT_Set_Raster_Gray_Palette(engine,(char*)palette); 
            TT_Init_Kerning_Extension( engine ); 
            exit(0); 
          } 
        ], [ pike_cv_lib_ttf_works=yes ], [ pike_cv_lib_ttf_works=no ], [ 
          # Assume working when cross-compiling. 
          pike_cv_lib_ttf_works=yes 
        ]) 
      ]) 
      AC_MSG_RESULT([$pike_cv_lib_ttf_works]) 
      if test "x$pike_cv_lib_ttf_works" = "xyes"; then 
        AC_DEFINE(HAVE_LIBTTF) 
        PIKE_FEATURE_OK(Image.TTF) 
      else 
        PIKE_FEATURE([Image.TTF], [no (broken library)]) 
      fi 
    ]) 
    AC_MSG_CHECKING([if TT_Horizontal_Header has the member Reserved0]) 
    AC_CACHE_VAL(pike_cv_tt_hh_reserved0, [ 
      AC_TRY_COMPILE([ 
#ifdef HAVE_FREETYPE_FREETYPE_H 
#include <freetype/freetype.h> 
#else 
#include <freetype.h> 
#endif 
      ],[ 
  extern TT_Horizontal_Header *horiz; 
 
  horiz->Reserved0 = 0; 
      ],[ 
        pike_cv_tt_hh_reserved0=yes 
      ], [ 
        pike_cv_tt_hh_reserved0=no 
      ]) 
    ]) 
    AC_MSG_RESULT($pike_cv_tt_hh_reserved0) 
    if test "x$pike_cv_tt_hh_reserved0" = "xyes"; then 
      AC_DEFINE(HAVE_TT_H_H_Reserved0) 
    else :; fi 
  else 
    if test "$freetype_h" = "nono"; then :; else 
      PIKE_FEATURE(Image.TTF,[no (too old)]) 
      AC_MSG_WARN(Detected freetype library (libttf), but too old version) 
    fi 
  fi 
fi 
 
AC_OUTPUT(Makefile,echo FOO >stamp-h )