SECURITY.md added to EXTRA_DIST, make distcheck otherwise does not like it
[platform/upstream/libexif.git] / configure.ac
index 04009de..b0a5881 100644 (file)
 AC_PREREQ(2.59)
-AC_INIT([EXIF library],[0.6.13],[libexif-devel@lists.sourceforge.net],[libexif])
+AC_INIT([EXIF library], [0.6.21.1], [libexif-devel@lists.sourceforge.net], [libexif])
 AC_CONFIG_SRCDIR([libexif/exif-data.h])
 AC_CONFIG_HEADERS([config.h])
-AM_INIT_AUTOMAKE([gnu 1.8 dist-bzip2])
+AC_CONFIG_MACRO_DIR([auto-m4])
+AM_INIT_AUTOMAKE([-Wall gnu 1.9 dist-bzip2 dist-zip check-news subdir-objects])
+AM_MAINTAINER_MODE
+
+# Use the silent-rules feature when possible.
+m4_ifndef([AM_SILENT_RULES], [m4_define([AM_SILENT_RULES],[])])
+AM_SILENT_RULES([yes])
 
 GP_CHECK_SHELL_ENVIRONMENT
 GP_CONFIG_MSG([Build])
 GP_CONFIG_MSG([Source code location],[${srcdir}])
 
 dnl ---------------------------------------------------------------------------
+dnl Advanced information about versioning:
+dnl   * "Writing shared libraries" by Mike Hearn
+dnl         http://plan99.net/~mike/writing-shared-libraries.html
+dnl   * libtool.info chapter "Versioning"
+dnl   * libtool.info chapter "Updating library version information"
+dnl ---------------------------------------------------------------------------
 dnl Versioning:
+dnl  - CURRENT (Major):  Increment if the interface has changes. AGE is always
+dnl                      *changed* at the same time.
 dnl  - AGE (Micro):      Increment if any interfaces have been added; set to 0
 dnl                     if any interfaces have been removed. Removal has 
 dnl                      precedence over adding, so set to 0 if both happened.
+dnl                      It denotes upward compatibility.
 dnl  - REVISION (Minor): Increment any time the source changes; set to 
 dnl                     0 if you incremented CURRENT.
-dnl  - CURRENT (Major):  Increment if the interface has additions, changes,
-dnl                      removals.
+dnl
+dnl  To summarize. Any interface *change* increment CURRENT. If that interface
+dnl  change does not break upward compatibility (ie it is an addition), 
+dnl  increment AGE, Otherwise AGE is reset to 0. If CURRENT has changed, 
+dnl  REVISION is set to 0, otherwise REVISION is incremented.
 dnl ---------------------------------------------------------------------------
-LIBEXIF_AGE=0
-LIBEXIF_REVISION=0
-LIBEXIF_CURRENT=12
+dnl C:A:R
+dnl 12:0:1   0.6.13
+dnl 13:1:0   added EXIF_DATA_OPTION_DONT_CHANGE_MAKER_NOTE (for 0.6.14)
+dnl 14:2:0   added XP_ WinXP tags (for 0.6.15)
+dnl 14:2:1   0.6.17
+dnl 15:3:0   added exif_loader_get_buf (for 0.6.18)
+dnl 15:3:1   0.6.19
+dnl 15:3:2   0.6.20
+dnl 15:3:3   0.6.21
+LIBEXIF_CURRENT=15
+LIBEXIF_AGE=3
+LIBEXIF_REVISION=3
 AC_SUBST([LIBEXIF_AGE])
 AC_SUBST([LIBEXIF_REVISION])
 AC_SUBST([LIBEXIF_CURRENT])
-LIBEXIF_VERSION_INFO=`expr $LIBEXIF_CURRENT + $LIBEXIF_REVISION`:$LIBEXIF_AGE:$LIBEXIF_REVISION
+AC_SUBST([LIBEXIF_CURRENT_MIN],[`expr $LIBEXIF_CURRENT - $LIBEXIF_AGE`])
+LIBEXIF_VERSION_INFO="$LIBEXIF_CURRENT:$LIBEXIF_REVISION:$LIBEXIF_AGE"
 AC_SUBST([LIBEXIF_VERSION_INFO])
 
-AC_PROG_CC
+AM_PROG_CC_C_O
 AC_C_CONST
+AC_C_INLINE
 dnl FIXME: AC_LIBTOOL_WIN32_DLL
+AM_PROG_AR
 AM_PROG_LIBTOOL
 AM_CPPFLAGS="$CPPFLAGS"
 GP_CONFIG_MSG([Compiler],[${CC}])
 
+AC_SYS_LARGEFILE
 
 dnl Create a stdint.h-like file containing size-specific integer definitions
 dnl that will always be available
 AX_NEED_STDINT_H([libexif/_stdint.h])
 
 
+dnl ------------------------------------------------------------------------
+dnl Whether we're supposed to ship binaries in the tarball
+dnl ------------------------------------------------------------------------
+
+ship_binaries=false
+AC_ARG_ENABLE([ship-binaries],
+[AS_HELP_STRING([--enable-ship-binaries],
+[Whether to ship binaries in the tarball [default=no]])],[
+       if test x$enableval = xyes; then
+               ship_binaries=true
+       fi
+])
+AM_CONDITIONAL([SHIP_BINARIES],[$ship_binaries])
+GP_CONFIG_MSG([Ship binaries in tarball],[$ship_binaries])
+
+
 dnl ---------------------------------------------------------------------------
 dnl Whether -lm is required for our math functions
 dnl ---------------------------------------------------------------------------
 
-# we need sqrt and pow, but checking for sqrt should be sufficient
-AC_CHECK_FUNC([sqrt],,[
-AC_CHECK_LIB([m],[sqrt],[MATHLIBS="-lm"],AC_MSG_ERROR([
-*** Could not find sqrt() function
-]))])
-AC_SUBST([MATHLIBS])
+# we need sqrt and pow which may be in libm
+# We cannot use AC_CHECK_FUNC because if CFLAGS contains
+# -Wall -Werror here the check fails because
+# char *sqrt() conflicts with double sqrt(double xx)
+
+# Start by assuming -lm is needed, because it's possible that the little
+# test program below will be optimized to in-line floating point code that
+# doesn't require -lm, whereas the library itself cannot be so optimized
+# (this actually seems to be the case on x86 with gcc 4.2). Assuming the
+# reverse means that -lm could be needed but wouldn't be detected below.
+
+LIBS_orig="$LIBS"
+LIBS="$LIBS -lm"
+AC_MSG_CHECKING([for math functions in libm])
+AC_LINK_IFELSE([AC_LANG_PROGRAM([
+         #include <math.h>
+         ],[
+           double s = sqrt(0);
+           double p = pow(s,s);
+         ])],
+       [AC_MSG_RESULT(yes)], [
+       AC_MSG_RESULT(no)
+       LIBS="$LIBS_orig"
+       AC_MSG_CHECKING([for math functions without libm])
+       AC_LINK_IFELSE([AC_LANG_PROGRAM([
+               #include <math.h>
+               ],[
+                 double s = sqrt(0);
+                 double p = pow(s,s);
+               ])],
+       [
+               AC_MSG_RESULT(yes)
+       ],[
+               AC_MSG_RESULT(no)
+               AC_MSG_ERROR([*** Could not find sqrt() & pow() functions])
+       ])
+])
 
+# Check whether libfailmalloc is available for tests
+CHECK_FAILMALLOC
 
 # doc support
 GP_CHECK_DOC_DIR
 GP_CHECK_DOXYGEN
 
+# Whether to enable the internal docs build.
+#
+# This takes quite some time due to the generation of lots of call
+# graphs, so it is disabled by default.
+set_enable_internal_docs=no
+AC_ARG_ENABLE([internal-docs], [dnl
+AS_HELP_STRING([--enable-internal-docs], 
+[Build internal code docs if doxygen available])], [dnl
+dnl If either --enable-foo nor --disable-foo were given, execute this.
+  if   test "x$enableval" = xno \
+    || test "x$enableval" = xoff \
+    || test "x$enableval" = xfalse; 
+  then
+    set_enable_internal_docs=no
+  elif test "x$enableval" = xyes \
+    || test "x$enableval" = xon \
+    || test "x$enableval" = xtrue
+  then
+    set_enable_internal_docs=yes
+  fi
+])
+AC_MSG_CHECKING([whether to create internal code docs])
+AC_MSG_RESULT([${set_enable_internal_docs}])
+AM_CONDITIONAL([ENABLE_INTERNAL_DOCS], [test "x${set_enable_internal_docs}" = "xyes"])
+
 
 # ---------------------------------------------------------------------------
 # i18n support
 # ---------------------------------------------------------------------------
-GP_GETTEXT_HACK([${PACKAGE}-${LIBEXIF_CURRENT}],
-                [Lutz Müller and others])
-ALL_LINGUAS="de es fr"
+ALL_LINGUAS="be bs cs da de en_AU en_CA en_GB es fr it ja ms nl pl pt pt_BR ru sk sq sr sv tr uk vi zh_CN"
+AM_PO_SUBDIRS
+GP_GETTEXT_HACK([${PACKAGE}-${LIBEXIF_CURRENT_MIN}],
+                [Lutz Mueller and others])
 AM_GNU_GETTEXT_VERSION([0.14.1])
 AM_GNU_GETTEXT([external])
-AM_PO_SUBDIRS()
 AM_ICONV()
 GP_GETTEXT_FLAGS()
 
-dnl We cannot use AC_DEFINE_UNQUOTED() for these definitions, as
-dnl we require make to do insert the proper $(datadir) value
-localedir="\$(datadir)/locale"
-AC_SUBST(localedir)
-AM_CPPFLAGS="$AM_CPPFLAGS -DLOCALEDIR=\\\"${localedir}\\\""
 
+dnl ---------------------------------------------------------------------------
+dnl Thread-safe functions
+dnl ---------------------------------------------------------------------------
+AC_CHECK_FUNCS(localtime_r)
 
 dnl ---------------------------------------------------------------------------
 dnl Compiler/Linker Options and Warnings
 dnl ---------------------------------------------------------------------------
 AM_CPPFLAGS="$AM_CPPFLAGS -I\$(top_srcdir)"
-AM_CPPFLAGS="$AM_CPPFLAGS -I\$(top_srcdir)/libexif"
+AM_CPPFLAGS="$AM_CPPFLAGS -I\$(top_builddir)"
 AM_LDFLAGS="$LDFLAGS"
 if test "x$GCC" = "xyes"; then
+    AM_CFLAGS="$AM_CFLAGS -ansi -pedantic-error"
+    AM_CXXFLAGS="$AM_CXXFLAGS -ansi -pedantic-error"
     AM_CPPFLAGS="$AM_CPPFLAGS -g -Wall -Wmissing-declarations -Wmissing-prototypes"
     AM_LDFLAGS="$AM_LDFLAGS -g -Wall"
 fi
@@ -96,20 +202,22 @@ AC_SUBST(AM_LDFLAGS)
 dnl ---------------------------------------------------------------------------
 dnl Output files
 dnl ---------------------------------------------------------------------------
-AC_CONFIG_FILES([ 
-  po/Makefile.in
+AC_CONFIG_FILES([  po/Makefile.in
   Makefile
   libexif.spec
   libexif/Makefile
-  libexif/canon/Makefile
-  libexif/olympus/Makefile
-  libexif/pentax/Makefile
   test/Makefile
+  test/check-vars.sh
   test/nls/Makefile
   m4m/Makefile
   doc/Makefile
   doc/Doxyfile
-  libexif/libexif.pc
+  doc/Doxyfile-internals
+  libexif.pc
+  libexif-uninstalled.pc
+  binary-dist/Makefile
+  contrib/Makefile
+  contrib/examples/Makefile
 ])
 AC_OUTPUT