summaryrefslogtreecommitdiff
blob: 972d081858d13a3940647a0115d92fecf4db20a6 (plain)
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
140
141
142
143
144
145
146
147
148
149
150
# Process this file with autoconf to produce a configure script.

AC_INIT([jbig2dec], [unknown-version], [gs-devel@ghostscript.com])
AC_PREREQ(2.53)
AC_CONFIG_SRCDIR([jbig2dec.c])

AM_INIT_AUTOMAKE([-Wall])
AM_CONFIG_HEADER(config.h)

dnl Library versioning - Adapted from the libtool info page
dnl
dnl 1. If source has changed at all: increment revision
dnl 2. If the ABI changed: increment current, reset revision to 0
dnl 3. If interfaces have been added since last public release: increment age
dnl 4. If interfaces have been removed: reset age to 0

AC_SUBST([JBIG2DEC_LT_CURRENT], [0])
AC_SUBST([JBIG2DEC_LT_REVISION], [0])
AC_SUBST([JBIG2DEC_LT_AGE], [0])

# Checks for programs.
AC_PROG_CC
AM_PROG_CC_C_O
AM_PROG_AR
AC_LIBTOOL_WIN32_DLL
AC_PROG_LIBTOOL

# platform specific compiler flags
if test "x$GCC" = xyes; then
  CFLAGS="$CFLAGS -Wall"
fi

# Checks for libraries.
dnl by default we want png support if possible
AC_ARG_WITH([libpng], 
  AC_HELP_STRING([--with-libpng[=prefix]],
    [include support for png output (if libpng is available)]),
  [ac_cv_want_libpng="$withval"], [ac_cv_want_libpng="yes"])
save_cflags="$CFLAGS"
save_ldflags="$LDFLAGS"
have_libpng="no"
if test "x$ac_cv_want_libpng" != "xno"; then
  if test "x$ac_cv_want_libpng" != "xyes"; then
    dnl if it's not yes or no, treat as a prefix
    CFLAGS="$CFLAGS -I$ac_cv_want_libpng/include"
    LDFLAGS="$LDFLAGS -L$ac_cv_want_libpng/lib"
  fi
  dnl libpng requires pow() which may be in libm
  AC_SEARCH_LIBS([pow], [m])
  AC_CHECK_LIB([png], [png_create_write_struct], [
    AC_CHECK_LIB([z], [deflate], [
      AC_DEFINE(HAVE_LIBPNG, 1, [Define if libpng is available (-lpng)])
      PNG_LIBS="-lpng -lz"
      AC_LIBOBJ([jbig2_image_png])
      have_libpng="yes"
    ])
  ])
fi
dnl restore (possibly changed) flags if we didn't find working libpng
if test "x$have_libpng" != "xyes"; then
  CFLAGS="$save_cflags"
  LDFLAGS="$save_ldflags"
fi
AC_SUBST(PNG_LIBS)

# Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS([libintl.h stddef.h unistd.h strings.h])

dnl We assume the fixed-size types from stdint.h. If that header is
dnl not available, look for the same types in a few other headers. 
dnl We also attempt to define them ourselves, but only use those if
dnl the native versions aren't available. The substitutions happen 
dnl in a file config_types.h, whose template is created by autogen.sh

stdint_types_in="no_replacement_found"
stdint_types_discovered="yes"
AC_CHECK_SIZEOF(char)
AC_CHECK_SIZEOF(short)
AC_CHECK_SIZEOF(int)
AC_CHECK_SIZEOF(long)
case 1 in
  $ac_cv_sizeof_char) int8_type="char";;
  *) stdint_types_discovered="no"
esac
case 2 in
  $ac_cv_sizeof_short) int16_type="short";;
  $ac_cv_sizeof_char)  int16_type="char";;
  $ac_cv_sizeof_int)   int16_type="char";;
  *) stdint_types_discovered="no";;
esac
case 4 in
  $ac_cv_sizeof_int)   int32_type="int";;
  $ac_cv_sizeof_long)  int32_type="long";;
  $ac_cv_sizeof_short) int32_type="short";;
  *) stdint_types_discovered="no";;
esac
AC_CHECK_HEADER([stdint.h])
if test "x$ac_cv_header_stdint_h" != "xyes"; then
  for include in sys/types.h inttypes.h sys/inttypes.h sys/int_types.h ; do
    AC_MSG_CHECKING([for uint32_t in $include])
    AC_TRY_COMPILE([#include <$include>], [uint32_t canary;], [
      AC_MSG_RESULT([yes])
      stdint_types_in="$include"
      break;
    ], AC_MSG_RESULT([no])
    )
  done
  if test "x$stdint_types_in" != "xno_replacement_found"; then
    AC_MSG_RESULT([Adding $stdint_types_in to config header for stdint types])
    AC_DEFINE([JBIG2_REPLACE_STDINT_H],,
      [set by configure if an alternate header with the stdint.h types is found])
  elif test "x$stdint_types_discovered" = "xno"; then
    AC_MSG_ERROR([
Unable to find suitable definitions of the stdint.h types (uint32_t and friends)
You will have to define these yourself in a separate header. 
See config_win32.h for an example.
    ])
  fi
fi
AC_SUBST(JBIG2_INT32_T, [$int32_type])
AC_SUBST(JBIG2_INT16_T, [$int16_type])
AC_SUBST(JBIG2_INT8_T,  [$int8_type])
AC_SUBST(JBIG2_STDINT_H, [$stdint_types_in])

# Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_TYPE_SIZE_T
AC_C_BIGENDIAN

# Checks for library functions.
AC_FUNC_MEMCMP
dnl we use realloc() but don't depend on the zero-length behavior
dnl tested by AC_FUNC_REALLOC
AC_REPLACE_FUNCS([snprintf])

AC_CHECK_FUNCS([memset strdup])

dnl use our included getopt if the system doesn't have getopt_long()
AC_CHECK_FUNC(getopt_long, 
	AC_DEFINE(HAVE_GETOPT_LONG,,
	  [Define if the local libc includes getopt_long()]
	),[
	AC_LIBOBJ([getopt])
	AC_LIBOBJ([getopt1])
])

# generate output
AC_CONFIG_FILES([Makefile config_types.h jbig2dec.pc])
AC_OUTPUT