fixed logging bug in giflib detection
[swftools.git] / configure.in
index b54148c..89bd3b7 100644 (file)
 dnl Process this file with autoconf to produce a configure script.
-AC_INIT(src/)
+
+dnl AC_INIT(src/) # old autoconf
+AC_INIT
+AC_CONFIG_SRCDIR([src/])
+
+AC_ARG_ENABLE(checkmem,
+[  --enable-checkmem       turn on ccmalloc debugging], CHECKMEM=true)
+AC_ARG_ENABLE(debug,
+[  --enable-debug          turn on debugging], DEBUG=true)
+AC_ARG_ENABLE(profiling,
+[  --enable-profiling      turn on profiling], PROFILING=true)
+AC_ARG_ENABLE(warnings,
+[  --enable-warnings      turn on compiler warnings], ENABLE_WARNINGS=true)
+AC_ARG_ENABLE(optimizations,
+[  --enable-optimizations  turn on compiler optimizations (recommended for avi2swf)], OPTIMIZE=true)
+AC_ARG_ENABLE(lame,
+[  --disable-lame          don't compile any L.A.M.E. mp3 encoding code in], DISABLE_LAME=true)
 
 PACKAGE=swftools
-VERSION=0.3.1
-CFLAGS="-Winline -Wparentheses -Wimplicit -Wreturn-type -O2 -fomit-frame-pointer"
-CXXFLAGS="-Winline -Wparentheses -Wimplicit -Wreturn-type -O2 -fomit-frame-pointer"
+VERSION=2005-01-21-2006
+
+
+# ------------------------------------------------------------------
+
+if test "x${srcdir}" != "x."; then
+    echo "--srcdir is not supported"
+    exit 1
+fi
+
+WARNINGS="-Wparentheses -Wimplicit -Wreturn-type"
+if test "x$ENABLE_WARNINGS" '!=' "x";then
+    WARNINGS="-Wall -Wno-unused -Wno-format -Wno-redundant-decls"
+fi
+
+if test "x$CHECKMEM" '!=' "x";then
+    DEBUG=yes
+fi
+if test "x$PROFILING" '!=' "x";then
+    DEBUG=yes
+fi
+if test "x$DEBUG" '!=' "x";then
+    if test "x$PROFILING" = "x";then
+        CFLAGS="$WARNINGS -g $CFLAGS"
+        CXXFLAGS="$WARNINGS -g $CXXFLAGS"
+    else
+        CFLAGS="$WARNINGS -O2 -g -pg $CFLAGS"
+        CXXFLAGS="$WARNINGS -O2 -g -pg $CXXFLAGS"
+        LDFLAGS="-g -pg $LIBS"
+    fi
+else if test "x$OPTIMIZE" '!=' "x"; then
+    CFLAGS="$WARNINGS -O3 -fomit-frame-pointer -Winline $CFLAGS"
+    CXXFLAGS="$WARNINGS -O3 -fomit-frame-pointer -Winline $CXXFLAGS"
+else
+    CFLAGS="$WARNINGS -O -fomit-frame-pointer $CFLAGS"
+    CXXFLAGS="$WARNINGS -O -fomit-frame-pointer $CXXFLAGS"
+fi
+fi
+#OLDGCC=1
+#if test "x$OLDGCC" '!=' "x";then
+#     #CFLAGS="$CFLAGS --std=c89 -ansi -pendantic"
+#     #CXXFLAGS="$CXXFLAGS --std=c89 -ansi -pendantic"
+#     CFLAGS="$CFLAGS -ansi -pendantic"
+#     CXXFLAGS="$CXXFLAGS -ansi -pendantic"
+#fi
+
 export PACKAGE VERSION CFLAGS CXXFLAGS
 
 dnl Checks for programs.
+
+AC_CANONICAL_HOST
+
+SHARED="-shared"
+MACOSX=
+case $host_os in
+    *darwin* ) 
+       MACOSX=yes
+       CFLAGS="$CFLAGS -fno-rtti"
+       CXXFLAGS="$CXXFLAGS -fno-rtti"
+       SHARED="-bundle"
+       ;;
+esac
+
+AC_SUBST(SHARED)
+
+dnl Checks for programs.
  AC_PROG_CC
- AC_PROG_CPP
  AC_PROG_CXX
+    
+if test "x$CHECKMEM" '!=' "x";then
+    CC="ccmalloc $CC"
+    CXX="ccmalloc $CXX"
+    #echo running again
+    #unset ac_cv_prog_CC
+    #unset ac_cv_prog_CXX
+    #AC_PROG_CC
+    #AC_PROG_CXX
+fi
+ AC_PROG_CPP
+
  AC_PROG_RANLIB
  AC_PROG_MAKE_SET
  AC_PROG_INSTALL
  AC_PROG_LN_S
+ AC_PROG_LIBTOOL
  AC_CHECK_PROGS(UNCOMPRESS, gzip uncompress compress, )
 
 dnl Checks for system services
- AC_EXEEXT
+OBJEXT="o"
+AREXT=".a"
+
+AC_EXEEXT
+
+if test "x$EXEEXT" = "x.exe";then
+    OBJEXT="obj"
+    AREXT=".lib"
+fi
+AC_SUBST(OBJEXT)
+AC_SUBST(AREXT)
+
+RFX_CHECK_MING
+
+SLEXT="so"
+if test "x${MINGW}" != "xyes"; then
+    # no mingW
+    AC_DEFINE_UNQUOTED(O_BINARY, 0)
+else
+    # mingW
+    SLEXT="dll"
+fi
+export SLEXT
+AC_SUBST(SLEXT)
+
+# The following tries to make use of includes and libraries in
+# /usr/local, too. Notice: A -I/usr/local/include might break
+# things (MingW, cross-compiling etc.) in the same way as -I/usr/include, 
+# especially on systems which link /usr/local to /usr, so it has yet
+# to be seen how useful this is.
+if test -d /usr/local/lib; then
+    LDFLAGS="$LDFLAGS -L/usr/local/lib"
+fi
+if test -d /usr/local/include; then
+# Leave that alone. It's causing trouble e.g. with gcc 3.2 on gentoo.
+#   CPPFLAGS="$CPPFLAGS -I/usr/local/include"
+    echo > /dev/null
+fi
+if test "$prefix" != "NONE" -a "$prefix" != "/usr/local" -a "$prefix" != "/usr/local/"; then
+    # if the user has a special prefix (like /opt), there might also be $prefix/lib
+    # and $prefix/include, which should be included in our search paths for libraries
+    # and includes.
+    LDFLAGS="$LDFLAGS -L${libdir}"
+    CPPFLAGS="$CPPFLAGS -I${includedir}"
+    # TODO- test whether gcc still works after this
+fi
+
+#Mac OS:
+#LDFLAGS "-L/sw/lib" ; CPPFLAGS "-I/sw/include -I/sw/include/lame"
+
+
+# this must be done after (I believe) AC_PROG_MAKE_SET
+if test "x$DEBUG" '!=' "x";then
+    STRIP="@echo debug enabled, not stripping "
+    export STRIP
+    AC_SUBST(STRIP)
+fi
 
 dnl Checks for libraries.
  AC_CHECK_LIB(m, sin,, 
  echo "Error: Math library not found.";
  exit;
  )
- AC_CHECK_LIB(z, deflate,, 
- echo "Error: The zlib compression library is required."
- DISABLEPDF2SWF=true; 
- MISSINGLIBS="${MISSINGLIBS} zlib"
- exit;
- )
- AC_CHECK_LIB(jpeg, jpeg_write_raw_data,, 
- DISABLEPDF2SWF=true;
- DISABLEJPEG2SWF=true;
- MISSINGLIBS="${MISSINGLIBS} jpeglib"
- )
- AC_CHECK_LIB(t1, T1_LoadFont,,
- DISABLEPDF2SWF=true;
- MISSINGLIBS="${MISSINGLIBS} T1lib"
- )
+ AC_CHECK_LIB(z, deflate,, ZLIBMISSING=true)
+ AC_CHECK_LIB(jpeg, jpeg_write_raw_data,, JPEGLIBMISSING=true)
+ AC_CHECK_LIB(t1, T1_LoadFont,, T1LIBMISSING=true)
+ AC_CHECK_LIB(ungif, EGifOpenFileName,, UNGIFMISSING=true)
 
-SWF_CHECK_BYTEORDER
+RFX_CHECK_BYTEORDER
 AC_SUBST(WORDS_BIGENDIAN)
-SWF_CHECK_SYSTEM_BACKTICKS
+RFX_CHECK_SYSTEM_BACKTICKS
 AC_SUBST(SYSTEM_BACKTICKS)
 
 AC_ARG_PROGRAM
 
-dnl do we need those?
-dnl AC_CHECK_LIB(pthread, pthread_create)
-dnl AC_CHECK_LIB(X11, XFlush)
-
 dnl Checks for header files.
  AC_CONFIG_HEADER(config.h)
-dnl AC_PATH_X
-dnl AC_PATH_XTRA
  AC_HEADER_DIRENT
  AC_HEADER_STDC
- AC_CHECK_HEADERS(zlib.h jpeglib.h t1lib.h sys/stat.h sys/types.h dirent.h sys/ndir.h sys/dir.h ndir.h)
-
-if test "x${ac_cv_header_jpeglib_h}" != "xyes"; then
- DISABLEPDF2SWF=true;
- DISABLEJPEG2SWF=true;
- MISSINGLIBS="${MISSINGLIBS} jpeglib.h"
-fi
-if test "x${ac_cv_header_t1lib_h}" != "xyes"; then
- DISABLEPDF2SWF=true;
- MISSINGLIBS="${MISSINGLIBS} t1lib.h"
-fi
-if test "x${ac_cv_header_zlib_h}" != "xyes"; then
- DISABLEPDF2SWF=true;
- MISSINGLIBS="${MISSINGLIBS} zlib.h"
-fi
+ AC_CHECK_HEADERS(zlib.h gif_lib.h jpeglib.h t1lib.h assert.h signal.h pthread.h sys/stat.h sys/types.h dirent.h sys/bsdtypes.h sys/ndir.h sys/dir.h ndir.h time.h)
 
 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
 AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
@@ -88,8 +201,8 @@ dnl Checks for typedefs, structures, and compiler characteristics.
  AC_TYPE_OFF_T
  AC_TYPE_SIZE_T
  AC_STRUCT_TM
- AC_CHECK_TYPE(boolean,int)
- AC_CHECK_TYPE(bool,char)
+ AC_CHECK_TYPE(boolean,int) #needed for jpeglib
+ dnl AC_CHECK_TYPE(bool,char)
  dnl AC_CHECK_TYPE(uchar,unsigned char)
  dnl AC_CHECK_TYPE(schar,signed char)
  dnl AC_CHECK_TYPE(word,unsigned short int)
@@ -97,44 +210,203 @@ dnl Checks for typedefs, structures, and compiler characteristics.
  dnl AC_CHECK_TYPE(uint,unsigned long int)
 
 dnl Checks for library functions.
- AC_CHECK_FUNCS(popen mkstemp stat lrand48 rand srand48 srand)
- SWF_CHECK_AVI2SWF
+ AC_CHECK_FUNCS(popen mkstemp stat lrand48 rand srand48 srand bcopy bzero time)
 
-avi2swf="avi2swf/Makefile"
-if test "x${AVIFILE}" != "xtrue"; then
- echo "* Couldn't compile the avifile test program."
- echo "* Disabling avi2swf tool..."
- echo all: > avi2swf/Makefile
- echo install: >> avi2swf/Makefile
- echo clean: >> avi2swf/Makefile
- avi2swf=
+# ------------------------------------------------------------------
+
+RFX_CHECK_FREETYPE
+
+RFX_CHECK_FONTCONFIG
+
+# ------------------------------------------------------------------
+lame_objects= 
+lame_makefile=
+if test "x${DISABLE_LAME}" = "xtrue"; then
+    echo "*" Disabling lame support...
+else
+    # old lame code at lib/lame
+    if test -f lib/lame/Makefile.in; then
+       lame_objects="lame/psymodel.\$(O) lame/fft.\$(O) lame/newmdct.\$(O) lame/quantize.\$(O) lame/takehiro.\$(O) lame/reservoir.\$(O) lame/quantize_pvt.\$(O) lame/vbrquantize.\$(O) lame/encoder.\$(O) lame/id3tag.\$(O) lame/version.\$(O) lame/tables.\$(O) lame/util.\$(O) lame/bitstream.\$(O) lame/set_get.\$(O) lame/VbrTag.\$(O) lame/lame.\$(O)"
+       lame_makefile="lib/lame/Makefile"
+       CPPFLAGS="$CPPFLAGS -Ilame"
+       AC_DEFINE_UNQUOTED(HAVE_LAME, 1)
+    else
+       if test -d /usr/include/lame; then
+           CPPFLAGS="$CPPFLAGS -I /usr/include/lame"
+       else
+           if test -d /usr/local/include/lame; then
+               CPPFLAGS="$CPPFLAGS -I /usr/local/include/lame"
+           fi
+       fi
+       AC_CHECK_LIB(mp3lame, lame_init,, NO_LIBMP3LAME=1)
+       AC_CHECK_HEADERS(lame.h)
+       if test "x$NO_LIBMP3LAME" "!=" "x1" -a "x$ac_cv_header_lame_h" "!=" "x";then
+           AC_DEFINE_UNQUOTED(HAVE_LAME, 1)
+       fi
+    fi
+fi
+AC_SUBST(lame_objects)
+
+# ------------------------------------------------------------------
+RFX_CHECK_AVI2SWF
+if test "x${AVIFILE}" = "xtrue"; then
+    VIDEO_LIBS="$VIDEO_LIBS $AVIFILE_LIBS"
+    VIDEO_CFLAGS="$VIDEO_CFLAGS $AVIFILE_CFLAGS"
+    AC_DEFINE_UNQUOTED(HAVE_AVIFILE, 1)
 fi
 
+if test "x${WIN32}" != "x"; then
+    #AC_CHECK_LIB(avifil32, AVIFileInit,AVIFIL32=true)
+    #if test "x${AVIFIL32}" != "x"; then
+    #  VIDEO_LIBS="$VIDEO_LIBS -lavifil32"
+    #fi
+    VIDEO_LIBS="$VIDEO_LIBS -lavifil32"
+    AVIFIL32=true
+fi
+
+AC_SUBST(VIDEO_LIBS)
+AC_SUBST(VIDEO_CFLAGS)
+# ------------------------------------------------------------------
+
 if test "x${UNCOMPRESS}" = "xgzip"; then
     AC_DEFINE_UNQUOTED(USE_GZIP, 1)
 fi
 AC_SUBST(USE_GZIP)
 
-JPEG2SWF='jpeg2swf$(EXEEXT)'
-export JPEG2SWF
-if test "x${DISABLEPDF2SWF}" = "xtrue"; then
+# ------------------------------------------------------------------
+
+RFX_CHECK_PYTHON
+
+if test "x$PYTHON_OK" '!=' "xyes";then
+    echo all install uninstall clean: > lib/python/Makefile
+    # fail silently- the most users won't have any need for the
+    # python interface anyway
+else
+    pythonrfxswf="lib/python/Makefile"
+fi
+
+# ------------------------------------------------------------------
+
+AC_MSG_CHECKING([for missing libraries])
+
+if test "x$ZLIBMISSING" = "xtrue";then
+    MISSINGLIBS="${MISSINGLIBS} zlib"
+    DISABLEPNG2SWF=true
+    PARTIAL=true
+fi
+if test "x$JPEGLIBMISSING" = "xtrue";then
+    MISSINGLIBS="${MISSINGLIBS} jpeglib"
+    DISABLEPDF2SWF=true
+    DISABLEJPEG2SWF=true
+    PARTIAL=true
+fi
+if test "x$T1LIBMISSING" = "xtrue";then
+    MISSINGLIBS="${MISSINGLIBS} t1lib"
+fi
+if test "x$UNGIFMISSING" = "xtrue";then
+    DISABLEGIF2SWF=true
+    MISSINGLIBS="${MISSINGLIBS} ungif"
+    PARTIAL=true
+fi
+
+if test "x${ac_cv_header_jpeglib_h}" '!=' "xyes"; then
+    DISABLEPDF2SWF=true;
+    DISABLEJPEG2SWF=true;
+    MISSINGLIBS="${MISSINGLIBS} jpeglib.h"
+    PARTIAL=true
+fi
+if test "x$HAVE_FREETYPE" '!=' "x1"; then
+    DISABLEPDF2SWF=true;
+    MISSINGLIBS="${MISSINGLIBS} freetype"
+    PARTIAL=true
+fi
+if test "x${ac_cv_header_t1lib_h}" '!=' "xyes"; then
+    MISSINGLIBS="${MISSINGLIBS} t1lib.h"
+fi
+if test "x${ac_cv_header_gif_lib_h}" '!=' "xyes"; then
+    DISABLEGIF2SWF=true
+    MISSINGLIBS="${MISSINGLIBS} gif_lib.h"
+    PARTIAL=true
+fi
+if test "x${ac_cv_header_zlib_h}" '!=' "xyes"; then
+    DISABLEPNG2SWF=true;
+    MISSINGLIBS="${MISSINGLIBS} zlib.h"
+    PARTIAL=true
+fi
+if test "x${AVIFILE}" '!=' "xtrue" -a "x${AVIFIL32}" '!=' "xtrue"; then
+    MISSINGLIBS="${MISSINGLIBS} avifile"
+    PARTIAL=true
+fi
+
+AC_MSG_RESULT(${MISSINGLIBS})
+
+# ------------------------------------------------------------------
+
+if test "x${MISSINGLIBS}" '!=' "x"; then
   echo "***************************************************"
-  echo "The following headers/libraries are missing: " ${MISSINGLIBS}
-  echo "Disabling pdf2swf tool..."
+  echo "* The following headers/libraries are missing: " ${MISSINGLIBS}
+fi
+
+avi2swf="avi2swf/Makefile"
+if test "x${AVIFILE}" '!=' "xtrue" -a "x${AVIFIL32}" '!=' "xtrue"; then
+ echo "* Disabling avi2swf tool..."
+ echo all install uninstall clean: > avi2swf/Makefile
+ avi2swf=
+fi
+
+pdf2swf_makefile="pdf2swf/Makefile pdf2swf/xpdf/Makefile"
+if test "x${DISABLEPDF2SWF}" = "xtrue"; then
+  echo "* Disabling pdf2swf tool..."
   rm -f pdf2swf/Makefile
-  echo all: > pdf2swf/Makefile
-  echo install: >> pdf2swf/Makefile
-  echo clean: >> pdf2swf/Makefile
-  if test "x${DISABLEJPEG2SWF}" = "xtrue"; then
-    echo "Disabling jpeg2swf tool..."
-    JPEG2SWF=
-    export JPEG2SWF
+  echo all install uninstall clean: > pdf2swf/Makefile
+  pdf2swf_makefile=""
+fi
+
+if test "x${ZLIBMISSING}" = "xtrue"; then
+  echo
+  echo "* Warning! Without zlib, you will not be able to read"
+  echo "* or write compressed Flash MX files!"
+fi
+
+JPEG2SWF='jpeg2swf$(E)'
+if test "x${DISABLEJPEG2SWF}" = "xtrue"; then
+  echo "* Disabling jpeg2swf tool..."
+  JPEG2SWF=
+fi
+export JPEG2SWF
+AC_SUBST(JPEG2SWF)
+
+GIF2SWF='gif2swf$(E)'
+if test "x${DISABLEGIF2SWF}" = "xtrue"; then
+  echo "* Disabling gif2swf tool..."
+  GIF2SWF=
+fi
+export GIF2SWF
+AC_SUBST(GIF2SWF)
+
+PNG2SWF='png2swf$(E)'
+if test "x${DISABLEPNG2SWF}" = "xtrue"; then
+  echo "* Disabling png2swf tool..."
+  PNG2SWF=
+fi
+export PNG2SWF
+AC_SUBST(PNG2SWF)
+
+if test "x${MISSINGLIBS}" '!=' "x"; then
+  if test "x${PARTIAL}" '=' "x"; then
+    echo "* (never mind)"
   fi
   echo "***************************************************"
-  FILES="./release ${avi2swf} Makefile lib/lame/Makefile lib/Makefile src/Makefile swfs/Makefile"
-else
-  FILES="./release ${avi2swf} Makefile lib/lame/Makefile lib/Makefile src/Makefile pdf2swf/Makefile pdf2swf/xpdf/Makefile pdf2swf/ttf2pt1/Makefile pdf2swf/fonts/Makefile swfs/Makefile"
 fi
-AC_SUBST(JPEG2SWF)
 
-AC_OUTPUT(${FILES})
+# ------------------------------------------------------------------
+
+if test -f "release.in"; then release_in="./release"; fi
+FILES="$release_in Makefile.common ${avi2swf} Makefile lib/Makefile lib/action/Makefile src/Makefile ${pdf2swf_makefile} swfs/Makefile ${pythonrfxswf} ${lame_makefile}"
+
+dnl AC_OUTPUT(${FILES}) old autoconf
+AC_CONFIG_FILES([${FILES}])
+AC_OUTPUT
+