blob: 79bdb45644ddfa95d9a68922a108ad85c60afe85 [file] [log] [blame]
Constantin Kaplinsky0ca44252008-09-28 05:08:48 +00001# -*- Autoconf -*-
2# Process this file with autoconf to produce a configure script.
3
4AC_PREREQ([2.61])
5AC_INIT([libjpeg], [6.b])
6
7AM_INIT_AUTOMAKE([-Wall foreign dist-bzip2])
8
9# Always build with prototypes
10AC_DEFINE([HAVE_PROTOTYPES], 1, [Define if your compiler supports prototypes])
11# Don't use undefined types
12AC_DEFINE([INCOMPLETE_TYPES_BROKEN], 1, [Define if you want use complete types])
13
14# Checks for programs.
15AC_PROG_CC
16AC_PROG_INSTALL
17AC_PROG_LIBTOOL
18AC_PROG_LN_S
19
20# Checks for libraries.
21
22# Checks for header files.
23AC_HEADER_STDC
24AC_CHECK_HEADERS([stddef.h stdlib.h string.h])
25AC_CHECK_HEADER([sys/types.h], AC_DEFINE([NEED_SYS_TYPES_H], 1, [Define if you have sys/types.h]))
26
27# Checks for typedefs, structures, and compiler characteristics.
28AC_C_CONST
29AC_C_CHAR_UNSIGNED
30AC_C_INLINE
31AC_TYPE_SIZE_T
32AC_CHECK_TYPES([unsigned char, unsigned short])
33
34AC_MSG_CHECKING([if right shift is signed])
35AC_TRY_RUN(
36 [#include <stdio.h>
37 int is_shifting_signed (long arg) {
38 long res = arg >> 4;
39
40 if (res == -0x7F7E80CL)
41 return 1; /* right shift is signed */
42
43 /* see if unsigned-shift hack will fix it. */
44 /* we can't just test exact value since it depends on width of long... */
45 res |= (~0L) << (32-4);
46 if (res == -0x7F7E80CL)
47 return 0; /* right shift is unsigned */
48
49 printf("Right shift isn't acting as I expect it to.\n");
50 printf("I fear the JPEG software will not work at all.\n\n");
51 return 0; /* try it with unsigned anyway */
52 }
53 int main (void) {
54 exit(is_shifting_signed(-0x7F7E80B1L));
55 }],
56 [AC_MSG_RESULT(no)
57 AC_DEFINE([RIGHT_SHIFT_IS_UNSIGNED], 1, [Define if shift is unsigned])],
58 [AC_MSG_RESULT(yes)],
59 [AC_MSG_RESULT(Assuming that right shift is signed on target machine.)])
60
61# test whether global names are unique to at least 15 chars
62AC_MSG_CHECKING([for short external names])
63AC_TRY_LINK(
64 [int possibly_duplicate_function () { return 0; }
65 int possibly_dupli_function () { return 1; }], [ ],
66 [AC_MSG_RESULT(ok)],
67 [AC_MSG_RESULT(short)
68 AC_DEFINE([NEED_SHORT_EXTERNAL_NAMES], 1, [Define if you need short function names])])
69
70# Checks for library functions.
Constantin Kaplinsky0ca44252008-09-28 05:08:48 +000071AC_CHECK_FUNCS([memset memcpy], [],
72 [AC_DEFINE([NEED_BSD_STRINGS], 1,
73 [Define if you have BSD-like bzero and bcopy])])
74
Pierre Ossmanba0ce392009-03-06 15:30:42 +000075# jconfig.h is the file we use, but we have another before that to
76# fool autoheader. the reason is that we include this header in our
77# API headers, which can screw things up for users of the lib.
78# jconfig.h is a minimal version that allows this package to be built
Constantin Kaplinsky0ca44252008-09-28 05:08:48 +000079AC_CONFIG_HEADERS([config.h])
80AC_CONFIG_HEADERS([jconfig.h])
81AC_CONFIG_FILES([Makefile])
82AC_OUTPUT