diff options
author | Tom Lane <tgl@redhat.com> | 2009-01-09 00:39:19 +0100 |
---|---|---|
committer | Christoph Brill <egore911@egore911.de> | 2009-01-09 00:39:19 +0100 |
commit | 454bfc25d26df247c19cab0c7c15b3e9fc8645e3 (patch) | |
tree | 93499001ab4c969a4a2f1664552de4de24509672 | |
parent | b2690217f38a2493bbb94cd47a29978f02aa937a (diff) |
[PATCH] configure.in
Update the ancient libtool and configure scripts shipped with
libjpeg-6b.
-rw-r--r-- | configure.in | 346 |
1 files changed, 346 insertions, 0 deletions
diff --git a/configure.in b/configure.in new file mode 100644 index 0000000..d73dcdf --- /dev/null +++ b/configure.in @@ -0,0 +1,346 @@ +dnl IJG auto-configuration source file. +dnl Process this file with autoconf to produce a configure script. +AC_INIT(jcmaster.c) +AC_CONFIG_HEADER(jconfig.h:jconfig.cfg) +dnl +dnl do these first since other macros rely on them +AC_PROG_CC +AC_PROG_CPP +dnl +dnl See if compiler supports prototypes. +AC_MSG_CHECKING(for function prototypes) +AC_CACHE_VAL(ijg_cv_have_prototypes, +[AC_TRY_COMPILE([ +int testfunction (int arg1, int * arg2); /* check prototypes */ +struct methods_struct { /* check method-pointer declarations */ + int (*error_exit) (char *msgtext); + int (*trace_message) (char *msgtext); + int (*another_method) (void); +}; +int testfunction (int arg1, int * arg2) /* check definitions */ +{ return arg2[arg1]; } +int test2function (void) /* check void arg list */ +{ return 0; } +], [ ], ijg_cv_have_prototypes=yes, ijg_cv_have_prototypes=no)]) +AC_MSG_RESULT($ijg_cv_have_prototypes) +if test $ijg_cv_have_prototypes = yes; then + AC_DEFINE(HAVE_PROTOTYPES,1) +else + echo Your compiler does not seem to know about function prototypes. + echo Perhaps it needs a special switch to enable ANSI C mode. + echo If so, we recommend running configure like this: + echo " ./configure CC='cc -switch'" + echo where -switch is the proper switch. +fi +dnl +dnl check header files +AC_CHECK_HEADER(stddef.h, AC_DEFINE(HAVE_STDDEF_H,1)) +AC_CHECK_HEADER(stdlib.h, AC_DEFINE(HAVE_STDLIB_H,1)) +AC_CHECK_HEADER(string.h,, AC_DEFINE(NEED_BSD_STRINGS,1)) +dnl See whether type size_t is defined in any ANSI-standard places; +dnl if not, perhaps it is defined in <sys/types.h>. +AC_MSG_CHECKING(for size_t) +AC_TRY_COMPILE([ +#ifdef HAVE_STDDEF_H +#include <stddef.h> +#endif +#ifdef HAVE_STDLIB_H +#include <stdlib.h> +#endif +#include <stdio.h> +#ifdef NEED_BSD_STRINGS +#include <strings.h> +#else +#include <string.h> +#endif +typedef size_t my_size_t; +], [ my_size_t foovar; ], ijg_size_t_ok=yes, +[ijg_size_t_ok="not ANSI, perhaps it is in sys/types.h"]) +AC_MSG_RESULT($ijg_size_t_ok) +if test "$ijg_size_t_ok" != yes; then +AC_CHECK_HEADER(sys/types.h, [AC_DEFINE(NEED_SYS_TYPES_H,1) +AC_EGREP_CPP(size_t, [#include <sys/types.h>], +[ijg_size_t_ok="size_t is in sys/types.h"], ijg_size_t_ok=no)], +ijg_size_t_ok=no) +AC_MSG_RESULT($ijg_size_t_ok) +if test "$ijg_size_t_ok" = no; then + echo Type size_t is not defined in any of the usual places. + echo Try putting '"typedef unsigned int size_t;"' in jconfig.h. +fi +fi +dnl +dnl check compiler characteristics +AC_MSG_CHECKING(for type unsigned char) +AC_TRY_COMPILE(, [ unsigned char un_char; ], +[AC_MSG_RESULT(yes) +AC_DEFINE(HAVE_UNSIGNED_CHAR,1)], AC_MSG_RESULT(no)) +AC_MSG_CHECKING(for type unsigned short) +AC_TRY_COMPILE(, [ unsigned short un_short; ], +[AC_MSG_RESULT(yes) +AC_DEFINE(HAVE_UNSIGNED_SHORT,1)], AC_MSG_RESULT(no)) +AC_MSG_CHECKING(for type void) +AC_TRY_COMPILE([ +/* Caution: a C++ compiler will insist on valid prototypes */ +typedef void * void_ptr; /* check void * */ +#ifdef HAVE_PROTOTYPES /* check ptr to function returning void */ +typedef void (*void_func) (int a, int b); +#else +typedef void (*void_func) (); +#endif + +#ifdef HAVE_PROTOTYPES /* check void function result */ +void test3function (void_ptr arg1, void_func arg2) +#else +void test3function (arg1, arg2) + void_ptr arg1; + void_func arg2; +#endif +{ + char * locptr = (char *) arg1; /* check casting to and from void * */ + arg1 = (void *) locptr; + (*arg2) (1, 2); /* check call of fcn returning void */ +} +], [ ], AC_MSG_RESULT(yes), [AC_MSG_RESULT(no) +AC_DEFINE(void,char)]) + +AC_C_CONST +dnl check for non-broken inline under various spellings +AC_MSG_CHECKING(for inline) +ijg_cv_inline="" +AC_TRY_COMPILE(, [} __inline__ int foo() { return 0; } +int bar() { return foo();], ijg_cv_inline="__inline__", +AC_TRY_COMPILE(, [} __inline int foo() { return 0; } +int bar() { return foo();], ijg_cv_inline="__inline", +AC_TRY_COMPILE(, [} inline int foo() { return 0; } +int bar() { return foo();], ijg_cv_inline="inline"))) +AC_MSG_RESULT($ijg_cv_inline) +AC_DEFINE_UNQUOTED(INLINE,$ijg_cv_inline) +dnl we cannot check for bogus warnings, but at least we can check for errors +AC_MSG_CHECKING(for broken incomplete types) +AC_TRY_COMPILE([ typedef struct undefined_structure * undef_struct_ptr; ], , +AC_MSG_RESULT(ok), +[AC_MSG_RESULT(broken) +AC_DEFINE(INCOMPLETE_TYPES_BROKEN,1)]) +dnl test whether global names are unique to at least 15 chars +AC_MSG_CHECKING(for short external names) +AC_TRY_LINK([ +int possibly_duplicate_function () { return 0; } +int possibly_dupli_function () { return 1; } +], [ ], AC_MSG_RESULT(ok), [AC_MSG_RESULT(short) +AC_DEFINE(NEED_SHORT_EXTERNAL_NAMES,1)]) +dnl +dnl run-time checks +AC_MSG_CHECKING(to see if char is signed) +AC_TRY_RUN([ +#ifdef HAVE_PROTOTYPES +int is_char_signed (int arg) +#else +int is_char_signed (arg) + int arg; +#endif +{ + if (arg == 189) { /* expected result for unsigned char */ + return 0; /* type char is unsigned */ + } + else if (arg != -67) { /* expected result for signed char */ + printf("Hmm, it seems 'char' is not eight bits wide on your machine.\n"); + printf("I fear the JPEG software will not work at all.\n\n"); + } + return 1; /* assume char is signed otherwise */ +} +char signed_char_check = (char) (-67); +int main() { + exit(is_char_signed((int) signed_char_check)); +}], [AC_MSG_RESULT(no) +AC_DEFINE(CHAR_IS_UNSIGNED,1)], AC_MSG_RESULT(yes), +[echo Assuming that char is signed on target machine. +echo If it is unsigned, this will be a little bit inefficient. +]) +dnl +AC_MSG_CHECKING(to see if right shift is signed) +AC_TRY_RUN([ +#ifdef HAVE_PROTOTYPES +int is_shifting_signed (long arg) +#else +int is_shifting_signed (arg) + long arg; +#endif +/* See whether right-shift on a long is signed or not. */ +{ + long res = arg >> 4; + + if (res == -0x7F7E80CL) { /* expected result for signed shift */ + return 1; /* right shift is signed */ + } + /* see if unsigned-shift hack will fix it. */ + /* we can't just test exact value since it depends on width of long... */ + res |= (~0L) << (32-4); + if (res == -0x7F7E80CL) { /* expected result now? */ + return 0; /* right shift is unsigned */ + } + printf("Right shift isn't acting as I expect it to.\n"); + printf("I fear the JPEG software will not work at all.\n\n"); + return 0; /* try it with unsigned anyway */ +} +int main() { + exit(is_shifting_signed(-0x7F7E80B1L)); +}], [AC_MSG_RESULT(no) +AC_DEFINE(RIGHT_SHIFT_IS_UNSIGNED,1)], AC_MSG_RESULT(yes), +AC_MSG_RESULT(Assuming that right shift is signed on target machine.)) +dnl +AC_MSG_CHECKING(to see if fopen accepts b spec) +AC_TRY_RUN([ +#include <stdio.h> +int main() { + if (fopen("conftestdata", "wb") != NULL) + exit(0); + exit(1); +}], AC_MSG_RESULT(yes), [AC_MSG_RESULT(no) +AC_DEFINE(DONT_USE_B_MODE,1)], +AC_MSG_RESULT(Assuming that it does.)) +dnl +dnl system services +AC_PROG_INSTALL +AC_PROG_RANLIB + +# Decide whether to use libtool, +# and if so whether to build shared, static, or both flavors of library. +AC_DISABLE_SHARED +AC_DISABLE_STATIC +if test "x$enable_shared" != xno -o "x$enable_static" != xno; then + USELIBTOOL="yes" + + # Configure libtool. + AC_PROG_LIBTOOL + + LIBTOOL="./libtool" + O="lo" + A="la" + LN='$(LIBTOOL) --mode=link $(CC)' + INSTALL_LIB='$(LIBTOOL) --mode=install ${INSTALL}' + INSTALL_PROGRAM="\$(LIBTOOL) --mode=install $INSTALL_PROGRAM" +else + USELIBTOOL="no" + LIBTOOL="" + O="o" + A="a" + LN='$(CC)' + INSTALL_LIB="$INSTALL_DATA" +fi +AC_SUBST(LIBTOOL) +AC_SUBST(O) +AC_SUBST(A) +AC_SUBST(LN) +AC_SUBST(INSTALL_LIB) + +# Select memory manager depending on user input. +# If no "-enable-maxmem", use jmemnobs +MEMORYMGR='jmemnobs.$(O)' +MAXMEM="no" +AC_ARG_ENABLE(maxmem, +[ --enable-maxmem[=N] enable use of temp files, set max mem usage to N MB], +MAXMEM="$enableval") +dnl [# support --with-maxmem for backwards compatibility with IJG V5.] +dnl AC_ARG_WITH(maxmem, , MAXMEM="$withval") +if test "x$MAXMEM" = xyes; then + MAXMEM=1 +fi +if test "x$MAXMEM" != xno; then +changequote(, )dnl + if test -n "`echo $MAXMEM | sed 's/[0-9]//g'`"; then +changequote([, ])dnl + AC_MSG_ERROR(non-numeric argument to --enable-maxmem) + fi + DEFAULTMAXMEM=`expr $MAXMEM \* 1048576` +AC_DEFINE_UNQUOTED(DEFAULT_MAX_MEM, ${DEFAULTMAXMEM}) +AC_MSG_CHECKING([for 'tmpfile()']) +AC_TRY_LINK([#include <stdio.h>], [ FILE * tfile = tmpfile(); ], +[AC_MSG_RESULT(yes) +MEMORYMGR='jmemansi.$(O)'], +[AC_MSG_RESULT(no) +dnl if tmpfile is not present, must use jmemname. +MEMORYMGR='jmemname.$(O)' +AC_DEFINE(NEED_SIGNAL_CATCHER,1) +AC_MSG_CHECKING([for 'mktemp()']) +AC_TRY_LINK(, [ char fname[80]; mktemp(fname); ], AC_MSG_RESULT(yes), +[AC_MSG_RESULT(no) +AC_DEFINE(NO_MKTEMP,1)])]) +fi +AC_SUBST(MEMORYMGR) + +# Include PNG support in cjpeg/djpeg if appropriate. +AC_ARG_WITH(png, +[ --with-png enable PNG support in cjpeg/djpeg], +[#], [with_png="maybe"]) + +# try to detect whether libpng is present +if test "x$with_png" = xmaybe ; then + AC_CHECK_HEADER(png.h, [: ok so far], [with_png="no"]) +fi +if test "x$with_png" = xmaybe ; then + AC_CHECK_HEADER(zlib.h, [: ok so far], [with_png="no"]) +fi +if test "x$with_png" = xmaybe ; then + AC_CHECK_LIB(z, deflate, [: ok so far], [with_png="no"]) +fi +if test "x$with_png" = xmaybe ; then + AC_CHECK_LIB(png, png_create_info_struct, + [with_png="yes"], [with_png="no"], [-lz -lm]) +fi + +if test "x$with_png" = xyes ; then + AC_DEFINE(PNG_SUPPORTED,1) + LIBS="-lpng -lz -lm $LIBS" +fi + +# Extract the library version ID from jpeglib.h. +AC_MSG_CHECKING([libjpeg version number]) +[JPEG_LIB_VERSION=`sed -e '/^#define JPEG_LIB_VERSION/!d' -e 's/^[^0-9]*\([0-9][0-9]*\).*$/\1/' $srcdir/jpeglib.h`] +AC_MSG_RESULT($JPEG_LIB_VERSION) +AC_SUBST(JPEG_LIB_VERSION) + +# Prepare to massage makefile.cfg correctly. +if test $ijg_cv_have_prototypes = yes; then + A2K_DEPS="" + COM_A2K="# " +else + A2K_DEPS="ansi2knr" + COM_A2K="" +fi +AC_SUBST(A2K_DEPS) +AC_SUBST(COM_A2K) +# ansi2knr needs -DBSD if string.h is missing +if test $ac_cv_header_string_h = no; then + ANSI2KNRFLAGS="-DBSD" +else + ANSI2KNRFLAGS="" +fi +AC_SUBST(ANSI2KNRFLAGS) +dnl +# Substitutions to enable or disable libtool-related stuff +if test $USELIBTOOL = yes -a $ijg_cv_have_prototypes = yes; then + COM_LT="" +else + COM_LT="# " +fi +AC_SUBST(COM_LT) +if test "x$enable_shared" != xno; then + FORCE_INSTALL_LIB="install-lib" +else + FORCE_INSTALL_LIB="" +fi +AC_SUBST(FORCE_INSTALL_LIB) +dnl +# Set up -I directives +if test "x$srcdir" = x.; then + INCLUDEFLAGS='-I$(srcdir)' +else + if test "x$GCC" = xyes; then + INCLUDEFLAGS='-I- -I. -I$(srcdir)' + else + INCLUDEFLAGS='-I. -I$(srcdir)' + fi +fi +AC_SUBST(INCLUDEFLAGS) +dnl +AC_OUTPUT(Makefile:makefile.cfg) |