Add a configure.ac
authorPatrick McCarty <patrick.mccarty@linux.intel.com>
Fri, 8 Feb 2013 19:28:59 +0000 (11:28 -0800)
committerPatrick McCarty <patrick.mccarty@linux.intel.com>
Fri, 8 Feb 2013 19:29:03 +0000 (11:29 -0800)
configure.ac [new file with mode: 0644]

diff --git a/configure.ac b/configure.ac
new file mode 100644 (file)
index 0000000..78ce8c8
--- /dev/null
@@ -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,[Define to 1 if we have prototypes.])
+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,[Define to 1 if stddef.h is found.]))
+AC_CHECK_HEADER(stdlib.h, AC_DEFINE(HAVE_STDLIB_H,1,[Define to 1 if stdlib.h is found.]))
+AC_CHECK_HEADER(string.h,, AC_DEFINE(NEED_BSD_STRINGS,1,[Define to 1 if string.h is missing.]))
+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,[Define to 1 if sys/types.h is found.])
+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,[Define to 1 if unsigned char type exists.])], 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,[Define to 1 if unsigned short type exists.])], 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,[Define void type to char if it exists.])])
+
+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,[Define keyword style for 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,[Define to 1 if broken incomplete types are found.])])
+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,[Define to 1 if short external names are needed.])])
+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,[Define to 1 if char type is unsigned.])], 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,[Define to 1 if right shift is unsigned.])], 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,[Define to 1 if fopen does not accept b spec.])],
+AC_MSG_RESULT(Assuming that it does.))
+dnl
+dnl system services
+AC_PROG_INSTALL
+LT_INIT
+
+# 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},[Define default maxmem value.])
+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,[Define to 1 if signal catcher is needed.])
+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,[Define to 1 if mktemp is not available.])])])
+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,[Define to 1 if PNG is supported.])
+  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)