imported the libgphoto m4 tree
This commit is contained in:
@@ -79,7 +79,7 @@ install-camlibs:
|
||||
# are required in the top level Makefile.am for the automatic
|
||||
# re-building of the build system files.
|
||||
|
||||
ACLOCAL_AMFLAGS = -I auto-m4 -I m4m
|
||||
ACLOCAL_AMFLAGS = -I auto-m4 -I gphoto-m4
|
||||
|
||||
|
||||
########################################################################
|
||||
|
||||
1
gphoto-m4/Makefile.am
Normal file
1
gphoto-m4/Makefile.am
Normal file
@@ -0,0 +1 @@
|
||||
EXTRA_DIST = gp-byteorder.m4 gp-camlibs.m4 gp-check-doxygen.m4 gp-check-library.m4 gp-check-popt.m4 gp-check-shell-environment.m4 gp-config-msg.m4 gp-documentation.m4 gp-dynamic-libraries.m4 gp-gettext-hack.m4 gp-internal-docs.m4 gp-libltdl.m4 gp-manual-docbook-xml.m4 gp-manual-documentation.m4 gp-manual-fig2dev.m4 gp-manual-graphviz.m4 gp-manual-gtk-doc.m4 gp-manual-pstoimg.m4 gp-manual-w3m.m4 gp-packaging.m4 gp-pkg-config.m4 gp-references.m4 gp-stdint.m4 gp-udev.m4 gp-va-copy.m4 README.m4
|
||||
9
gphoto-m4/README.m4
Normal file
9
gphoto-m4/README.m4
Normal file
@@ -0,0 +1,9 @@
|
||||
This is the gPhoto projects' collection of autoconf/automake m4 macros.
|
||||
|
||||
It has been designed to be used in
|
||||
- gphoto2
|
||||
- libgphoto2
|
||||
- libgphoto2_port (located in libgphoto2/)
|
||||
- gtkam
|
||||
|
||||
Some macros are re-used ones from libexif.
|
||||
446
gphoto-m4/gp-byteorder.m4
Normal file
446
gphoto-m4/gp-byteorder.m4
Normal file
@@ -0,0 +1,446 @@
|
||||
dnl AC_NEED_BYTEORDER_H ( HEADER-TO-GENERATE )
|
||||
dnl Originally written by Dan Fandrich <dan@coneharvesters.com>
|
||||
dnl My contribution is hereby placed into the public domain.
|
||||
dnl No warranty is expressed or implied.
|
||||
dnl
|
||||
dnl Create a header file that guarantees that byte swapping macros of the
|
||||
dnl ntohl variety as well as the extended types included in OpenBSD and
|
||||
dnl NetBSD such as le32toh are defined. If possible, the standard ntohl
|
||||
dnl are overloaded as they are optimized for the given platform, but when
|
||||
dnl this is not possible (e.g. on a big-endian machine) they are defined
|
||||
dnl in this file.
|
||||
|
||||
dnl Look for a symbol in a header file
|
||||
dnl AC_HAVE_SYMBOL ( IDENTIFIER, HEADER-FILE, ACTION-IF-FOUND, ACTION-IF-NOT-FOUND )
|
||||
AC_DEFUN([AC_HAVE_SYMBOL],
|
||||
[
|
||||
AC_MSG_CHECKING(for $1 in $2)
|
||||
AC_EGREP_CPP([symbol is present|\<$1\>],[
|
||||
#include <$2>
|
||||
#ifdef $1
|
||||
symbol is present
|
||||
#endif
|
||||
],
|
||||
[AC_MSG_RESULT(yes)
|
||||
$3
|
||||
],
|
||||
[AC_MSG_RESULT(no)
|
||||
$4
|
||||
])])
|
||||
|
||||
|
||||
dnl Create a header file that defines extended byte swapping macros
|
||||
AC_DEFUN([AC_NEED_BYTEORDER_H],
|
||||
[
|
||||
ac_dir=`AS_DIRNAME(["$1"])`
|
||||
if test "$ac_dir" != "$1" && test "$ac_dir" != .; then
|
||||
# The file is in a subdirectory.
|
||||
test ! -d "$ac_dir" && AS_MKDIR_P(["$ac_dir"])
|
||||
fi
|
||||
|
||||
# We're only interested in the target CPU, but it's not always set
|
||||
effective_target="$target"
|
||||
if test "x$effective_target" = xNONE -o "x$effective_target" = x ; then
|
||||
effective_target="$host"
|
||||
fi
|
||||
AC_SUBST(effective_target)
|
||||
|
||||
cat > "$1" << EOF
|
||||
/* This file is generated automatically by configure */
|
||||
/* It is valid only for the system type ${effective_target} */
|
||||
|
||||
#ifndef __BYTEORDER_H
|
||||
#define __BYTEORDER_H
|
||||
|
||||
EOF
|
||||
|
||||
dnl First, do an endian check
|
||||
AC_C_BIGENDIAN
|
||||
|
||||
dnl Look for NetBSD-style extended byte swapping macros
|
||||
AC_HAVE_SYMBOL(le32toh,machine/endian.h,
|
||||
[HAVE_LE32TOH=1
|
||||
cat >> "$1" << EOF
|
||||
/* extended byte swapping macros are already available */
|
||||
#include <machine/endian.h>
|
||||
|
||||
EOF],
|
||||
|
||||
[
|
||||
|
||||
dnl Look for standard byte swapping macros
|
||||
AC_HAVE_SYMBOL(ntohl,arpa/inet.h,
|
||||
[cat >> "$1" << EOF
|
||||
/* ntohl and relatives live here */
|
||||
#include <arpa/inet.h>
|
||||
#define __HAVE_NTOHL
|
||||
|
||||
EOF],
|
||||
|
||||
[AC_HAVE_SYMBOL(ntohl,netinet/in.h,
|
||||
[cat >> "$1" << EOF
|
||||
/* ntohl and relatives live here */
|
||||
#include <netinet/in.h>
|
||||
#define __HAVE_NTOHL
|
||||
|
||||
EOF],true)])
|
||||
])
|
||||
|
||||
dnl Look for generic byte swapping macros
|
||||
|
||||
dnl OpenBSD
|
||||
AC_HAVE_SYMBOL(swap32,machine/endian.h,
|
||||
[cat >> "$1" << EOF
|
||||
/* swap32 and swap16 are defined in machine/endian.h */
|
||||
|
||||
EOF],
|
||||
|
||||
[
|
||||
dnl Linux GLIBC
|
||||
AC_HAVE_SYMBOL(bswap_32,byteswap.h,
|
||||
[cat >> "$1" << EOF
|
||||
/* Define generic byte swapping functions */
|
||||
#include <byteswap.h>
|
||||
#define swap16(x) bswap_16(x)
|
||||
#define swap32(x) bswap_32(x)
|
||||
#define swap64(x) bswap_64(x)
|
||||
|
||||
EOF],
|
||||
|
||||
[
|
||||
dnl NetBSD
|
||||
AC_HAVE_SYMBOL(bswap32,machine/endian.h,
|
||||
dnl We're already including machine/endian.h if this test succeeds
|
||||
[cat >> "$1" << EOF
|
||||
/* Define generic byte swapping functions */
|
||||
EOF
|
||||
if test "$HAVE_LE32TOH" != "1"; then
|
||||
echo '#include <machine/endian.h>'>> "$1"
|
||||
fi
|
||||
cat >> "$1" << EOF
|
||||
#define swap16(x) bswap16(x)
|
||||
#define swap32(x) bswap32(x)
|
||||
#define swap64(x) bswap64(x)
|
||||
|
||||
EOF],
|
||||
|
||||
[
|
||||
dnl FreeBSD
|
||||
AC_HAVE_SYMBOL(__byte_swap_long,sys/types.h,
|
||||
[cat >> "$1" << EOF
|
||||
/* Define generic byte swapping functions */
|
||||
#include <sys/types.h>
|
||||
#define swap16(x) __byte_swap_word(x)
|
||||
#define swap32(x) __byte_swap_long(x)
|
||||
/* No optimized 64 bit byte swapping macro is available */
|
||||
#define swap64(x) ((uint64_t)(((uint64_t)(x) << 56) & 0xff00000000000000ULL | \\
|
||||
((uint64_t)(x) << 40) & 0x00ff000000000000ULL | \\
|
||||
((uint64_t)(x) << 24) & 0x0000ff0000000000ULL | \\
|
||||
((uint64_t)(x) << 8) & 0x000000ff00000000ULL | \\
|
||||
((x) >> 8) & 0x00000000ff000000ULL | \\
|
||||
((x) >> 24) & 0x0000000000ff0000ULL | \\
|
||||
((x) >> 40) & 0x000000000000ff00ULL | \\
|
||||
((x) >> 56) & 0x00000000000000ffULL))
|
||||
|
||||
EOF],
|
||||
|
||||
[
|
||||
dnl OS X
|
||||
AC_HAVE_SYMBOL(NXSwapLong,machine/byte_order.h,
|
||||
[cat >> "$1" << EOF
|
||||
/* Define generic byte swapping functions */
|
||||
#include <machine/byte_order.h>
|
||||
#define swap16(x) NXSwapShort(x)
|
||||
#define swap32(x) NXSwapLong(x)
|
||||
#define swap64(x) NXSwapLongLong(x)
|
||||
|
||||
EOF],
|
||||
[
|
||||
if test $ac_cv_c_bigendian = yes; then
|
||||
cat >> "$1" << EOF
|
||||
/* No other byte swapping functions are available on this big-endian system */
|
||||
#define swap16(x) ((uint16_t)(((x) << 8) | ((uint16_t)(x) >> 8)))
|
||||
#define swap32(x) ((uint32_t)(((uint32_t)(x) << 24) & 0xff000000UL | \\
|
||||
((uint32_t)(x) << 8) & 0x00ff0000UL | \\
|
||||
((x) >> 8) & 0x0000ff00UL | \\
|
||||
((x) >> 24) & 0x000000ffUL))
|
||||
#define swap64(x) ((uint64_t)(((uint64_t)(x) << 56) & 0xff00000000000000ULL | \\
|
||||
((uint64_t)(x) << 40) & 0x00ff000000000000ULL | \\
|
||||
((uint64_t)(x) << 24) & 0x0000ff0000000000ULL | \\
|
||||
((uint64_t)(x) << 8) & 0x000000ff00000000ULL | \\
|
||||
((x) >> 8) & 0x00000000ff000000ULL | \\
|
||||
((x) >> 24) & 0x0000000000ff0000ULL | \\
|
||||
((x) >> 40) & 0x000000000000ff00ULL | \\
|
||||
((x) >> 56) & 0x00000000000000ffULL))
|
||||
|
||||
EOF
|
||||
else
|
||||
cat >> "$1" << EOF
|
||||
/* Use these as generic byteswapping macros on this little endian system */
|
||||
/* on windows we might not have ntohs / ntohl without including winsock.dll,
|
||||
* so use generic macros */
|
||||
#ifdef __HAVE_NTOHL
|
||||
# define swap16(x) htons(x)
|
||||
# define swap32(x) htonl(x)
|
||||
#else
|
||||
# define swap16(x) ((uint16_t)(((x) << 8) | ((uint16_t)(x) >> 8)))
|
||||
# define swap32(x) ((uint32_t)((((uint32_t)(x) << 24) & 0xff000000UL) | \\
|
||||
(((uint32_t)(x) << 8) & 0x00ff0000UL) | \\
|
||||
(((x) >> 8) & 0x0000ff00UL) | \\
|
||||
(((x) >> 24) & 0x000000ffUL)))
|
||||
#endif
|
||||
/* No optimized 64 bit byte swapping macro is available */
|
||||
#define swap64(x) ((uint64_t)((((uint64_t)(x) << 56) & 0xff00000000000000ULL) | \\
|
||||
(((uint64_t)(x) << 40) & 0x00ff000000000000ULL) | \\
|
||||
(((uint64_t)(x) << 24) & 0x0000ff0000000000ULL) | \\
|
||||
(((uint64_t)(x) << 8) & 0x000000ff00000000ULL) | \\
|
||||
(((x) >> 8) & 0x00000000ff000000ULL) | \\
|
||||
(((x) >> 24) & 0x0000000000ff0000ULL) | \\
|
||||
(((x) >> 40) & 0x000000000000ff00ULL) | \\
|
||||
(((x) >> 56) & 0x00000000000000ffULL)))
|
||||
|
||||
EOF
|
||||
fi
|
||||
])
|
||||
])
|
||||
])
|
||||
])
|
||||
])
|
||||
|
||||
|
||||
[
|
||||
if test "$HAVE_LE32TOH" != "1"; then
|
||||
cat >> "$1" << EOF
|
||||
/* The byte swapping macros have the form: */
|
||||
/* EENN[a]toh or htoEENN[a] where EE is be (big endian) or */
|
||||
/* le (little-endian), NN is 16 or 32 (number of bits) and a, */
|
||||
/* if present, indicates that the endian side is a pointer to an */
|
||||
/* array of uint8_t bytes instead of an integer of the specified length. */
|
||||
/* h refers to the host's ordering method. */
|
||||
|
||||
/* So, to convert a 32-bit integer stored in a buffer in little-endian */
|
||||
/* format into a uint32_t usable on this machine, you could use: */
|
||||
/* uint32_t value = le32atoh(&buf[3]); */
|
||||
/* To put that value back into the buffer, you could use: */
|
||||
/* htole32a(&buf[3], value); */
|
||||
|
||||
/* Define aliases for the standard byte swapping macros */
|
||||
/* Arguments to these macros must be properly aligned on natural word */
|
||||
/* boundaries in order to work properly on all architectures */
|
||||
#ifndef htobe16
|
||||
# ifdef __HAVE_NTOHL
|
||||
# define htobe16(x) htons(x)
|
||||
# else
|
||||
# ifdef WORDS_BIGENDIAN
|
||||
# define htobe16(x) (x)
|
||||
# else
|
||||
# define htobe16(x) swap16(x)
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
#ifndef htobe32
|
||||
# ifdef __HAVE_NTOHL
|
||||
# define htobe32(x) htonl(x)
|
||||
# else
|
||||
# ifdef WORDS_BIGENDIAN
|
||||
# define htobe32(x) (x)
|
||||
# else
|
||||
# define htobe32(x) swap32(x)
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
#ifndef be16toh
|
||||
# define be16toh(x) htobe16(x)
|
||||
#endif
|
||||
#ifndef be32toh
|
||||
# define be32toh(x) htobe32(x)
|
||||
#endif
|
||||
|
||||
#define HTOBE16(x) (x) = htobe16(x)
|
||||
#define HTOBE32(x) (x) = htobe32(x)
|
||||
#define BE32TOH(x) (x) = be32toh(x)
|
||||
#define BE16TOH(x) (x) = be16toh(x)
|
||||
|
||||
EOF
|
||||
|
||||
if test $ac_cv_c_bigendian = yes; then
|
||||
cat >> "$1" << EOF
|
||||
/* Define our own extended byte swapping macros for big-endian machines */
|
||||
#ifndef htole16
|
||||
# define htole16(x) swap16(x)
|
||||
#endif
|
||||
#ifndef htole32
|
||||
# define htole32(x) swap32(x)
|
||||
#endif
|
||||
#ifndef le16toh
|
||||
# define le16toh(x) swap16(x)
|
||||
#endif
|
||||
#ifndef le32toh
|
||||
# define le32toh(x) swap32(x)
|
||||
#endif
|
||||
#ifndef le64toh
|
||||
# define le64toh(x) swap64(x)
|
||||
#endif
|
||||
|
||||
#ifndef htobe64
|
||||
# define htobe64(x) (x)
|
||||
#endif
|
||||
#ifndef be64toh
|
||||
# define be64toh(x) (x)
|
||||
#endif
|
||||
|
||||
#define HTOLE16(x) (x) = htole16(x)
|
||||
#define HTOLE32(x) (x) = htole32(x)
|
||||
#define LE16TOH(x) (x) = le16toh(x)
|
||||
#define LE32TOH(x) (x) = le32toh(x)
|
||||
#define LE64TOH(x) (x) = le64toh(x)
|
||||
|
||||
#define HTOBE64(x) (void) (x)
|
||||
#define BE64TOH(x) (void) (x)
|
||||
|
||||
EOF
|
||||
else
|
||||
cat >> "$1" << EOF
|
||||
/* On little endian machines, these macros are null */
|
||||
#ifndef htole16
|
||||
# define htole16(x) (x)
|
||||
#endif
|
||||
#ifndef htole32
|
||||
# define htole32(x) (x)
|
||||
#endif
|
||||
#ifndef htole64
|
||||
# define htole64(x) (x)
|
||||
#endif
|
||||
#ifndef le16toh
|
||||
# define le16toh(x) (x)
|
||||
#endif
|
||||
#ifndef le32toh
|
||||
# define le32toh(x) (x)
|
||||
#endif
|
||||
#ifndef le64toh
|
||||
# define le64toh(x) (x)
|
||||
#endif
|
||||
|
||||
#define HTOLE16(x) (void) (x)
|
||||
#define HTOLE32(x) (void) (x)
|
||||
#define HTOLE64(x) (void) (x)
|
||||
#define LE16TOH(x) (void) (x)
|
||||
#define LE32TOH(x) (void) (x)
|
||||
#define LE64TOH(x) (void) (x)
|
||||
|
||||
/* These don't have standard aliases */
|
||||
#ifndef htobe64
|
||||
# define htobe64(x) swap64(x)
|
||||
#endif
|
||||
#ifndef be64toh
|
||||
# define be64toh(x) swap64(x)
|
||||
#endif
|
||||
|
||||
#define HTOBE64(x) (x) = htobe64(x)
|
||||
#define BE64TOH(x) (x) = be64toh(x)
|
||||
|
||||
EOF
|
||||
fi
|
||||
fi
|
||||
|
||||
cat >> "$1" << EOF
|
||||
/* Define the C99 standard length-specific integer types */
|
||||
#include <_stdint.h>
|
||||
|
||||
EOF
|
||||
|
||||
case "${effective_target}" in
|
||||
i[3456]86-*)
|
||||
cat >> "$1" << EOF
|
||||
/* Here are some macros to create integers from a byte array */
|
||||
/* These are used to get and put integers from/into a uint8_t array */
|
||||
/* with a specific endianness. This is the most portable way to generate */
|
||||
/* and read messages to a network or serial device. Each member of a */
|
||||
/* packet structure must be handled separately. */
|
||||
|
||||
/* The i386 and compatibles can handle unaligned memory access, */
|
||||
/* so use the optimized macros above to do this job */
|
||||
#ifndef be16atoh
|
||||
# define be16atoh(x) be16toh(*(uint16_t*)(x))
|
||||
#endif
|
||||
#ifndef be32atoh
|
||||
# define be32atoh(x) be32toh(*(uint32_t*)(x))
|
||||
#endif
|
||||
#ifndef be64atoh
|
||||
# define be64atoh(x) be64toh(*(uint64_t*)(x))
|
||||
#endif
|
||||
#ifndef le16atoh
|
||||
# define le16atoh(x) le16toh(*(uint16_t*)(x))
|
||||
#endif
|
||||
#ifndef le32atoh
|
||||
# define le32atoh(x) le32toh(*(uint32_t*)(x))
|
||||
#endif
|
||||
#ifndef le64atoh
|
||||
# define le64atoh(x) le64toh(*(uint64_t*)(x))
|
||||
#endif
|
||||
|
||||
#ifndef htob16a
|
||||
# define htobe16a(a,x) *(uint16_t*)(a) = htobe16(x)
|
||||
#endif
|
||||
#ifndef htobe32a
|
||||
# define htobe32a(a,x) *(uint32_t*)(a) = htobe32(x)
|
||||
#endif
|
||||
#ifndef htobe64a
|
||||
# define htobe64a(a,x) *(uint64_t*)(a) = htobe64(x)
|
||||
#endif
|
||||
#ifndef htole16a
|
||||
# define htole16a(a,x) *(uint16_t*)(a) = htole16(x)
|
||||
#endif
|
||||
#ifndef htole32a
|
||||
# define htole32a(a,x) *(uint32_t*)(a) = htole32(x)
|
||||
#endif
|
||||
#ifndef htole64a
|
||||
# define htole64a(a,x) *(uint64_t*)(a) = htole64(x)
|
||||
#endif
|
||||
|
||||
EOF
|
||||
;;
|
||||
|
||||
*)
|
||||
cat >> "$1" << EOF
|
||||
/* Here are some macros to create integers from a byte array */
|
||||
/* These are used to get and put integers from/into a uint8_t array */
|
||||
/* with a specific endianness. This is the most portable way to generate */
|
||||
/* and read messages to a network or serial device. Each member of a */
|
||||
/* packet structure must be handled separately. */
|
||||
|
||||
/* Non-optimized but portable macros */
|
||||
#define be16atoh(x) ((uint16_t)(((x)[0]<<8)|(x)[1]))
|
||||
#define be32atoh(x) ((uint32_t)(((x)[0]<<24)|((x)[1]<<16)|((x)[2]<<8)|(x)[3]))
|
||||
#define be64atoh_x(x,off,shift) (((uint64_t)((x)[off]))<<shift)
|
||||
#define be64atoh(x) ((uint64_t)(be64atoh_x(x,0,56)|be64atoh_x(x,1,48)|be64atoh_x(x,2,40)| \\
|
||||
be64atoh_x(x,3,32)|be64atoh_x(x,4,24)|be64atoh_x(x,5,16)|be64atoh_x(x,6,8)|((x)[7])))
|
||||
#define le16atoh(x) ((uint16_t)(((x)[1]<<8)|(x)[0]))
|
||||
#define le32atoh(x) ((uint32_t)(((x)[3]<<24)|((x)[2]<<16)|((x)[1]<<8)|(x)[0]))
|
||||
#define le64atoh_x(x,off,shift) (((uint64_t)(x)[off])<<shift)
|
||||
#define le64atoh(x) ((uint64_t)(le64atoh_x(x,7,56)|le64atoh_x(x,6,48)|le64atoh_x(x,5,40)| \\
|
||||
le64atoh_x(x,4,32)|le64atoh_x(x,3,24)|le64atoh_x(x,2,16)|le64atoh_x(x,1,8)|((x)[0])))
|
||||
|
||||
#define htobe16a(a,x) (a)[0]=(uint8_t)((x)>>8), (a)[1]=(uint8_t)(x)
|
||||
#define htobe32a(a,x) (a)[0]=(uint8_t)((x)>>24), (a)[1]=(uint8_t)((x)>>16), \\
|
||||
(a)[2]=(uint8_t)((x)>>8), (a)[3]=(uint8_t)(x)
|
||||
#define htobe64a(a,x) (a)[0]=(uint8_t)((x)>>56), (a)[1]=(uint8_t)((x)>>48), \\
|
||||
(a)[2]=(uint8_t)((x)>>40), (a)[3]=(uint8_t)((x)>>32), \\
|
||||
(a)[4]=(uint8_t)((x)>>24), (a)[5]=(uint8_t)((x)>>16), \\
|
||||
(a)[6]=(uint8_t)((x)>>8), (a)[7]=(uint8_t)(x)
|
||||
#define htole16a(a,x) (a)[1]=(uint8_t)((x)>>8), (a)[0]=(uint8_t)(x)
|
||||
#define htole32a(a,x) (a)[3]=(uint8_t)((x)>>24), (a)[2]=(uint8_t)((x)>>16), \\
|
||||
(a)[1]=(uint8_t)((x)>>8), (a)[0]=(uint8_t)(x)
|
||||
#define htole64a(a,x) (a)[7]=(uint8_t)((x)>>56), (a)[6]=(uint8_t)((x)>>48), \\
|
||||
(a)[5]=(uint8_t)((x)>>40), (a)[4]=(uint8_t)((x)>>32), \\
|
||||
(a)[3]=(uint8_t)((x)>>24), (a)[2]=(uint8_t)((x)>>16), \\
|
||||
(a)[1]=(uint8_t)((x)>>8), (a)[0]=(uint8_t)(x)
|
||||
|
||||
EOF
|
||||
;;
|
||||
esac
|
||||
]
|
||||
|
||||
cat >> "$1" << EOF
|
||||
#endif /*__BYTEORDER_H*/
|
||||
EOF])
|
||||
170
gphoto-m4/gp-camlibs.m4
Normal file
170
gphoto-m4/gp-camlibs.m4
Normal file
@@ -0,0 +1,170 @@
|
||||
dnl GP_CAMLIB & Co.
|
||||
dnl
|
||||
dnl Redundancy free definition of libgphoto2 camlibs.
|
||||
dnl
|
||||
dnl Removes the redundany from the camlib lists, and executes
|
||||
dnl additional consistency checks, e.g. to ensure that subdirectories
|
||||
dnl actually exist.
|
||||
dnl
|
||||
dnl You can mark camlibs as unlisted, i.e. they won't be listed
|
||||
dnl explicitly but still be recognized.
|
||||
dnl
|
||||
dnl Example usage:
|
||||
dnl
|
||||
dnl GP_CAMLIB([canon])
|
||||
dnl GP_CAMLIB([casio])
|
||||
dnl [...]
|
||||
dnl GP_CAMLIB([ptp],[unlisted])
|
||||
dnl GP_CAMLIB([ptp2])
|
||||
dnl [...]
|
||||
dnl GP_CAMLIB([toshiba])
|
||||
dnl GP_CAMLIBS_DEFINE([camlibs])
|
||||
dnl
|
||||
dnl The camlibs basedir parameter of GP_CAMLIBS_DEFINE is optional.
|
||||
dnl
|
||||
dnl ####################################################################
|
||||
dnl
|
||||
AC_DEFUN([GP_CAMLIBS_INIT],[dnl
|
||||
AC_BEFORE([$0],[GP_CAMLIB])dnl
|
||||
m4_define_default([gp_camlib_srcdir], [camlibs])dnl
|
||||
m4_define_default([gp_camlibs], [])dnl
|
||||
m4_define_default([gp_camlibs_unlisted], [])dnl
|
||||
])dnl
|
||||
dnl
|
||||
dnl ####################################################################
|
||||
dnl
|
||||
AC_DEFUN([GP_CAMLIB],[dnl
|
||||
AC_REQUIRE([GP_CAMLIBS_INIT])dnl
|
||||
AC_BEFORE([$0],[GP_CAMLIBS_DEFINE])dnl
|
||||
m4_if([$2],[unlisted],[dnl
|
||||
# $0($1,$2)
|
||||
m4_append([gp_camlibs_unlisted], [$1], [ ])dnl
|
||||
],[$#],[1],[dnl
|
||||
# $0($1)
|
||||
m4_append([gp_camlibs], [$1], [ ])dnl
|
||||
],[dnl
|
||||
m4_errprint(__file__:__line__:[ Error:
|
||||
*** Illegal parameter 2 to $0: `$2'
|
||||
*** Valid values are: undefined or [unlisted]
|
||||
])dnl
|
||||
m4_exit(1)dnl
|
||||
])dnl
|
||||
])dnl
|
||||
dnl
|
||||
dnl ####################################################################
|
||||
dnl
|
||||
AC_DEFUN([GP_CAMLIBS_WARNING],[dnl
|
||||
AC_MSG_WARN([
|
||||
|
||||
# Caution: You have chosen to build a non-standard set of camlibs.
|
||||
# You may have disabled the camlib required for your camera, or
|
||||
# enabled a camlib that does *not* work, and overrides the camlib
|
||||
# that does work. Consequently,
|
||||
# YOUR CAMERA MAY NOT WORK!
|
||||
#
|
||||
# Many cameras of several brands are supported by a camlib with a
|
||||
# name different from the name of the camera brand or model. If you
|
||||
# are unsure, please
|
||||
# * enable at least the "ptp2" camlib
|
||||
# * or even better, just build "all" camlibs.
|
||||
])
|
||||
sleep 2
|
||||
])
|
||||
dnl
|
||||
dnl ####################################################################
|
||||
dnl
|
||||
AC_DEFUN([GP_CAMLIBS_DEFINE],[dnl
|
||||
AC_REQUIRE([GP_CAMLIBS_INIT])dnl
|
||||
m4_pattern_allow([m4_strip])dnl
|
||||
m4_ifval([$1],[m4_define([gp_camlib_srcdir],[$1])])dnl
|
||||
dnl for camlib in m4_strip(gp_camlibs) m4_strip(gp_camlibs_unlisted)
|
||||
dnl do
|
||||
dnl if test -d "$srcdir/m4_strip(gp_camlib_srcdir)/$camlib"; then :; else
|
||||
dnl AC_MSG_ERROR([
|
||||
dnl * Fatal:
|
||||
dnl * Source subdirectory for camlib \`$camlib' not found in
|
||||
dnl * directory \`$srcdir/m4_strip(gp_camlib_srcdir)/'
|
||||
dnl ])
|
||||
dnl fi
|
||||
dnl done
|
||||
AC_MSG_CHECKING([which camlibs to compile])
|
||||
dnl Yes, that help output won't be all that pretty, but we at least
|
||||
dnl do not have to edit it by hand.
|
||||
AC_ARG_WITH([camlibs],[AS_HELP_STRING(
|
||||
[--with-camlibs=<list>],
|
||||
[Compile camera drivers (camlibs) in <list>. ]dnl
|
||||
[Drivers may be separated with commas. ]dnl
|
||||
[CAUTION: DRIVER NAMES AND CAMERA NAMES MAY DIFFER. ]dnl
|
||||
['all' is the default and compiles all camlibs. ]dnl
|
||||
[Possible camlibs are: ]dnl
|
||||
m4_strip(gp_camlibs))],
|
||||
[camlibs="$withval"],
|
||||
[camlibs="all"])dnl
|
||||
dnl
|
||||
ALL_DEFINED_CAMLIBS="m4_strip(gp_camlibs) m4_strip(gp_camlibs_unlisted)"
|
||||
ALL_DEFAULT_CAMLIBS="m4_strip(gp_camlibs)"
|
||||
BUILD_THESE_CAMLIBS_BASE=""
|
||||
if test "$camlibs" = "all"; then
|
||||
BUILD_THESE_CAMLIBS_BASE="$ALL_DEFAULT_CAMLIBS"
|
||||
AC_MSG_RESULT([all])
|
||||
else
|
||||
# If the string starts with "all,", we start with the default list
|
||||
# and add the explicitly defined ones later
|
||||
if echo "$camlibs" | grep "^all," > /dev/null; then
|
||||
BUILD_THESE_CAMLIBS_BASE="$ALL_DEFAULT_CAMLIBS"
|
||||
camlibs="$(echo "$camlibs" | sed 's/^all,//')"
|
||||
fi
|
||||
# camlibs=$(echo $camlibs | sed 's/,/ /g')
|
||||
IFS_save="$IFS"
|
||||
IFS=",$IFS"
|
||||
# Walk through enumeration of camlibs given by user and add them to list
|
||||
# of camlibs to build if we know them.
|
||||
for camlib in ${camlibs}; do
|
||||
IFS="$IFS_save"
|
||||
found=false
|
||||
for from_all_camlib in ${ALL_DEFINED_CAMLIBS}; do
|
||||
if test "$camlib" = "$from_all_camlib"; then
|
||||
if test "x$BUILD_THESE_CAMLIBS_BASE" = "x"; then
|
||||
BUILD_THESE_CAMLIBS_BASE="$camlib"
|
||||
else
|
||||
BUILD_THESE_CAMLIBS_BASE="$BUILD_THESE_CAMLIBS_BASE $camlib"
|
||||
fi
|
||||
found=:
|
||||
break
|
||||
fi
|
||||
done
|
||||
if $found; then :; else
|
||||
AC_MSG_ERROR([Unknown camlib $camlib!])
|
||||
fi
|
||||
done
|
||||
if test "x$BUILD_THESE_CAMLIBS_BASE" = "xcanon" ; then
|
||||
# Gentoo mode... if user just said "canon", add "ptp2" ... should save support requests.
|
||||
BUILD_THESE_CAMLIBS_BASE="$BUILD_THESE_CAMLIBS_BASE ptp2"
|
||||
camlibs="$camlibs ptp2"
|
||||
AC_MSG_WARN([
|
||||
"You have just selected the old canon driver. However most current Canons\n"
|
||||
"are supported by the PTP2 driver.\n"
|
||||
"Autoselecting ptp2 driver too to avoid support requests.\n"
|
||||
])
|
||||
fi
|
||||
IFS="$IFS_save"
|
||||
AC_MSG_RESULT([$camlibs])
|
||||
GP_CAMLIBS_WARNING
|
||||
AC_DEFINE_UNQUOTED([INCOMPLETE_CAMLIB_SET], ["$BUILD_THESE_CAMLIBS_BASE"],
|
||||
[Whether the set of camlibs built is incomplete])
|
||||
fi
|
||||
BUILD_THESE_CAMLIBS=""
|
||||
for f in $BUILD_THESE_CAMLIBS_BASE
|
||||
do
|
||||
BUILD_THESE_CAMLIBS="${BUILD_THESE_CAMLIBS}${BUILD_THESE_CAMLIBS+ }${f}.la"
|
||||
done
|
||||
AC_SUBST([BUILD_THESE_CAMLIBS])
|
||||
AC_SUBST([ALL_DEFINED_CAMLIBS])
|
||||
AC_SUBST([ALL_DEFAULT_CAMLIBS])
|
||||
])dnl
|
||||
dnl
|
||||
dnl ####################################################################
|
||||
dnl
|
||||
dnl Local Variables:
|
||||
dnl mode: autoconf
|
||||
dnl End:
|
||||
21
gphoto-m4/gp-check-doxygen.m4
Normal file
21
gphoto-m4/gp-check-doxygen.m4
Normal file
@@ -0,0 +1,21 @@
|
||||
dnl doxygen related stuff
|
||||
dnl look for tools
|
||||
dnl define substitutions for Doxyfile.in
|
||||
AC_DEFUN([GP_CHECK_DOXYGEN],[dnl
|
||||
AC_REQUIRE([GP_CHECK_DOC_DIR])dnl
|
||||
AC_PATH_PROG([DOT], [dot], [false])
|
||||
AC_PATH_PROG([DOXYGEN], [doxygen], [false])
|
||||
AM_CONDITIONAL([HAVE_DOXYGEN], [test "x$DOXYGEN" != "xfalse"])
|
||||
AM_CONDITIONAL([HAVE_DOT], [test "x$DOT" != "xfalse"])
|
||||
if test "x$DOT" != "xfalse"; then
|
||||
AC_SUBST([HAVE_DOT],[YES])
|
||||
else
|
||||
AC_SUBST([HAVE_DOT],[NO])
|
||||
fi
|
||||
AC_SUBST([HTML_APIDOC_DIR], ["${PACKAGE_TARNAME}-api.html"])
|
||||
AC_SUBST([DOXYGEN_OUTPUT_DIR], [doxygen-output])
|
||||
AC_SUBST([HTML_APIDOC_INTERNALS_DIR], ["${PACKAGE_TARNAME}-internals.html"])
|
||||
])dnl
|
||||
|
||||
|
||||
|
||||
456
gphoto-m4/gp-check-library.m4
Normal file
456
gphoto-m4/gp-check-library.m4
Normal file
@@ -0,0 +1,456 @@
|
||||
dnl @synopsis GP_CHECK_LIBRARY([VARNAMEPART],[libname],[VERSION-REQUIREMENT],
|
||||
dnl [headername],[functionname],
|
||||
dnl [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND],
|
||||
dnl [OPTIONAL-REQUIRED-ETC],[WHERE-TO-GET-IT])
|
||||
dnl
|
||||
dnl Checks for the presence of a certain library.
|
||||
dnl
|
||||
dnl Parameters:
|
||||
dnl
|
||||
dnl VARNAMEPART partial variable name for variable definitions
|
||||
dnl libname name of library
|
||||
dnl VERSION-REQUIREMENT check for the version using pkg-config.
|
||||
dnl default: []
|
||||
dnl headername name of header file
|
||||
dnl default: []
|
||||
dnl functionname name of function name in library
|
||||
dnl default: []
|
||||
dnl ACTION-IF-FOUND shell action to execute if found
|
||||
dnl default: []
|
||||
dnl ACTION-IF-NOT-FOUND shell action to execute if not found
|
||||
dnl default: []
|
||||
dnl OPTIONAL-REQUIRED-ETC one of "mandatory", "default-on", "default-off"
|
||||
dnl "disable-explicitly"
|
||||
dnl default: [mandatory]
|
||||
dnl WHERE-TO-GET-IT place where to find the library, e.g. a URL
|
||||
dnl default: []
|
||||
dnl
|
||||
dnl What the ACTION-IFs can do:
|
||||
dnl
|
||||
dnl * change the variable have_[$1] to "yes" or "no" and thus change
|
||||
dnl the outcome of the test
|
||||
dnl * execute additional checks to define more specific variables, e.g.
|
||||
dnl for different API versions
|
||||
dnl
|
||||
dnl What the OPTIONAL-REQUIRED-ETC options mean:
|
||||
dnl
|
||||
dnl mandatory Absolute requirement, cannot be disabled.
|
||||
dnl default-on If found, it is used. If not found, it is not used.
|
||||
dnl default-off In case of --with-libfoo, detect it. Without
|
||||
dnl --with-libfoo, do not look for and use it.
|
||||
dnl disable-explicitly Required by default, but can be disabled by
|
||||
dnl explicitly giving --without-libfoo.
|
||||
dnl
|
||||
dnl These results have happened after calling GP_CHECK_LIBRARY:
|
||||
dnl
|
||||
dnl AM_CONDITIONAL([HAVE_VARPREFIX],[ if found ])
|
||||
dnl AM_SUBST([have_VARPREFIX], [ "yes" if found, "no" if not found ])
|
||||
dnl AM_SUBST([VARPREFIX_CFLAGS],[ -I, -D and stuff ])
|
||||
dnl AM_SUBST([VARPREFIX_LIBS], [ /path/to/libname.la -L/path -lfoo ])
|
||||
dnl
|
||||
dnl Parameters to ./configure which influence the GP_CHECK_LIBRARY results:
|
||||
dnl
|
||||
dnl * VARNAMEPART_LIBS=/foobar/arm-palmos/lib/libname.la
|
||||
dnl VARNAMEPART_CFLAGS=-I/foobar/include
|
||||
dnl * --without-libfoo
|
||||
dnl * --with-libfoo=/usr/local
|
||||
dnl * --with-libfoo-include-dir=/foobar/include
|
||||
dnl * --with-libfoo-lib=/foobar/arm-palmos/lib
|
||||
dnl * --with-libfoo=autodetect
|
||||
dnl
|
||||
dnl Examples:
|
||||
dnl GP_CHECK_LIBRARY([LIBEXIF], [libexif])dnl
|
||||
dnl GP_CHECK_LIBRARY([LIBEXIF], [libexif-gtk], [>= 0.3.3])dnl
|
||||
dnl note the space! ^
|
||||
dnl
|
||||
dnl Possible enhancements:
|
||||
dnl
|
||||
dnl * Derive VAR_PREFIX directly from libname
|
||||
dnl This will change the calling conventions, so be aware of that.
|
||||
dnl * Give names of a header file and function name and to a test
|
||||
dnl compilation.
|
||||
dnl
|
||||
AC_DEFUN([_GP_CHECK_LIBRARY_SOEXT],[dnl
|
||||
AC_MSG_CHECKING([for dynamic library extension])
|
||||
soext=""
|
||||
case "$host" in
|
||||
*linux*) soext=".so" ;;
|
||||
*sunos*) soext=".so" ;;
|
||||
*solaris*) soext=".so" ;;
|
||||
*bsd*) soext=".so" ;;
|
||||
*darwin*) soext=".dylib" ;;
|
||||
*w32*) soext=".dll" ;;
|
||||
esac
|
||||
case "$host_os" in
|
||||
gnu*) soext=".so" ;;
|
||||
esac
|
||||
if test "x$soext" = "x"; then
|
||||
soext=".so"
|
||||
AC_MSG_RESULT([${soext}])
|
||||
AC_MSG_WARN([
|
||||
Host system "${host}" not recognized, defaulting to "${soext}".
|
||||
])
|
||||
else
|
||||
AC_MSG_RESULT([${soext}])
|
||||
fi
|
||||
])dnl
|
||||
dnl
|
||||
AC_DEFUN([_GP_CHECK_LIBRARY],[
|
||||
# ----------------------------------------------------------------------
|
||||
# [GP_CHECK_LIBRARY]([$1],[$2],[$3],
|
||||
# [$4],[$5],
|
||||
# [...],[...],[$8])
|
||||
m4_ifval([$9],[dnl
|
||||
# $9
|
||||
])dnl
|
||||
# ----------------------------------------------------------------------
|
||||
dnl
|
||||
AC_REQUIRE([GP_CONFIG_MSG])dnl
|
||||
AC_REQUIRE([GP_PKG_CONFIG])dnl
|
||||
AC_REQUIRE([_GP_CHECK_LIBRARY_SOEXT])dnl
|
||||
# Use _CFLAGS and _LIBS given to configure.
|
||||
# This makes it possible to set these vars in a configure script
|
||||
# and AC_CONFIG_SUBDIRS this configure.
|
||||
AC_ARG_VAR([$1][_CFLAGS], [CFLAGS for compiling with ][$2])dnl
|
||||
AC_ARG_VAR([$1][_LIBS], [LIBS to add for linking against ][$2])dnl
|
||||
dnl
|
||||
AC_MSG_CHECKING([for ][$2][ to use])
|
||||
m4_ifval([$3],[REQUIREMENTS_FOR_][$1][="][$2][ $3]["],
|
||||
[REQUIREMENTS_FOR_][$1][="][$2]["])
|
||||
userdef_[$1]=no
|
||||
have_[$1]=no
|
||||
if test "x${[$1][_LIBS]}" = "x" && test "x${[$1][_CFLAGS]}" = "x"; then
|
||||
# define --with/--without argument
|
||||
m4_if([$8], [default-off],
|
||||
[m4_pushdef([gp_lib_arg],[--without-][$2])dnl
|
||||
try_[$1]=no
|
||||
],
|
||||
[m4_pushdef([gp_lib_arg],[--with-][$2])dnl
|
||||
try_[$1]=auto
|
||||
])dnl
|
||||
AC_ARG_WITH([$2],[AS_HELP_STRING([gp_lib_arg][=PREFIX],[where to find ][$2][, "no" or "auto"])],[try_][$1][="$withval"])
|
||||
if test "x${[try_][$1]}" = "xno"; then
|
||||
[REQUIREMENTS_FOR_][$1][=]
|
||||
fi
|
||||
if test "x${[try_][$1]}" = "xauto"; then [try_][$1]=autodetect; fi
|
||||
AC_MSG_RESULT([${try_][$1][}])
|
||||
m4_popdef([gp_lib_arg])dnl
|
||||
if test "x${[try_][$1]}" = "xautodetect"; then
|
||||
# OK, we have to autodetect.
|
||||
# We start autodetection with the cleanest known method: pkg-config
|
||||
if test "x${[have_][$1]}" = "xno"; then
|
||||
# we need that line break after the PKG_CHECK_MODULES
|
||||
m4_ifval([$3],
|
||||
[PKG_CHECK_MODULES([$1],[$2][ $3],[have_][$1][=yes],[:])],
|
||||
[PKG_CHECK_MODULES([$1],[$2], [have_][$1][=yes],[:])]
|
||||
)
|
||||
fi
|
||||
# If pkg-config didn't find anything, try the libfoo-config program
|
||||
# certain known libraries ship with.
|
||||
if test "x${[have_][$1]}" = "xno"; then
|
||||
AC_MSG_CHECKING([$2][ config program])
|
||||
m4_pushdef([gp_lib_config],[m4_if([$2],[libusb],[libusb-config],
|
||||
[$2],[libgphoto2],[gphoto2-config],
|
||||
[$2],[libgphoto2_port],[gphoto2-port-config],
|
||||
[$2],[gdlib],[gdlib-config],
|
||||
[$2],[libxml-2.0],[xml2-config],
|
||||
[none])])dnl
|
||||
AC_MSG_RESULT([gp_lib_config])
|
||||
AC_PATH_PROG([$1][_CONFIG_PROG],[gp_lib_config])
|
||||
if test -n "${[$1][_CONFIG_PROG]}" &&
|
||||
test "${[$1][_CONFIG_PROG]}" != "none"; then
|
||||
m4_ifval([$3],[
|
||||
AC_MSG_CHECKING([for ][$2][ version according to ][gp_lib_config])
|
||||
m4_pushdef([gp_lib_compop],[regexp([$3], [\(>=\|>\|<\|<=\|=\)[ \t]*.*], [\1])])dnl comparison operator
|
||||
m4_if( gp_lib_compop,[>=],[_][$1][_COMPN="-lt"],
|
||||
gp_lib_compop,[>], [_][$1][_COMPN="-le"],
|
||||
gp_lib_compop,[<], [_][$1][_COMPN="-ge"],
|
||||
gp_lib_compop,[<=],[_][$1][_COMPN="-gt"],
|
||||
gp_lib_compop,[=], [_][$1][_COMPN="-ne"],
|
||||
[m4_errprint(__file__:__line__:[ Error:
|
||||
Illegal version comparison operator: `gp_lib_compop'
|
||||
It must be one of ">=", ">", "<", "<=", "=".
|
||||
])m4_exit(1)])
|
||||
m4_popdef([gp_lib_compop])dnl
|
||||
# split requested version number using m4 regexps
|
||||
_[$1]_REQ_1="regexp([$3], [\(>=\|>\|<\|<=\|=\)[ \t]*\([0-9]+\).*], [\2])"
|
||||
_[$1]_REQ_2="regexp([$3], [\(>=\|>\|<\|<=\|=\)[ \t]*\([0-9]+\)\.\([0-9]+\).*], [\3])"
|
||||
_[$1]_REQ_3="regexp([$3], [\(>=\|>\|<\|<=\|=\)[ \t]*\([0-9]+\)\.\([0-9]+\)\.\([0-9]+\).*], [\4])"
|
||||
_[$1]_REQ_4="regexp([$3], [\(>=\|>\|<\|<=\|=\)[ \t]*\([0-9]+\)\.\([0-9]+\)\.\([0-9]+\)\(.*\)], [\5])"
|
||||
# split installed version number via shell and sed
|
||||
_[$1]_VERSION="$("${[$1][_CONFIG_PROG]}" --version | sed 's/^.* //')"
|
||||
_[$1]_VER_1="$(echo "${_[$1]_VERSION}" | sed 's/\([[0-9]]*\).*/\1/g')"
|
||||
_[$1]_VER_2="$(echo "${_[$1]_VERSION}" | sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\2/g')"
|
||||
_[$1]_VER_3="$(echo "${_[$1]_VERSION}" | sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\).*/\3/g')"
|
||||
_[$1]_VER_4="$(echo "${_[$1]_VERSION}" | sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)\(.*\)/\4/g')"
|
||||
AC_MSG_RESULT([${_][$1][_VERSION}])
|
||||
_tmp=false
|
||||
if test "${_[$1]_VER_1}" "${_[$1]_COMPN}" "${_[$1]_REQ_1}"; then _tmp=true;
|
||||
elif test "${_[$1]_VER_2}" "${_[$1]_COMPN}" "${_[$1]_REQ_2}"; then _tmp=true;
|
||||
elif test "${_[$1]_VER_3}" "${_[$1]_COMPN}" "${_[$1]_REQ_3}"; then _tmp=true;
|
||||
elif test "x${_[$1]_VER_4}" = "x" && test "x${_[$1]_REQ_4}" != "x"; then _tmp=true;
|
||||
elif test "${_[$1]_VER_4}" "${_[$1]_COMPN}" "${_[$1]_REQ_4}"; then _tmp=true;
|
||||
fi
|
||||
AC_MSG_CHECKING([if ][$2][ version is matching requirement ][$3])
|
||||
if "${_tmp}"; then
|
||||
AC_MSG_RESULT([no])
|
||||
AC_MSG_ERROR([Version requirement ][$2][ ][$3][ not met. Found: ${_][$1][_VERSION}])
|
||||
else
|
||||
AC_MSG_RESULT([yes])
|
||||
fi
|
||||
])dnl if version requirement given
|
||||
AC_MSG_CHECKING([for ][$2][ parameters from ][gp_lib_config])
|
||||
[$1]_LIBS="$(${[$1][_CONFIG_PROG]} --libs || echo "*error*")"
|
||||
[$1]_CFLAGS="$(${[$1][_CONFIG_PROG]} --cflags || echo "*error*")"
|
||||
if test "x${[$1]_LIBS}" = "*error*" ||
|
||||
test "x${[$1]_CFLAGS}" = "*error*"; then
|
||||
AC_MSG_RESULT([error])
|
||||
else
|
||||
have_[$1]=yes
|
||||
AC_MSG_RESULT([ok])
|
||||
fi
|
||||
fi
|
||||
m4_popdef([gp_lib_config])dnl
|
||||
fi
|
||||
m4_ifval([$3],[# Version requirement given, so we do not rely on probing.],[
|
||||
# Neither pkg-config, nor the libfoo-config program have found anything.
|
||||
# So let's just probe the system.
|
||||
AC_MSG_WARN([The `$2' library could not be found using pkg-config or its known config program.
|
||||
No version checks will be performed if it is found using any other method.])
|
||||
if test "x${[have_][$1]}" = "xno"; then
|
||||
ifs="$IFS"
|
||||
IFS=":" # FIXME: for W32 and OS/2 we may need ";" here
|
||||
for _libdir_ in \
|
||||
${LD_LIBRARY_PATH} \
|
||||
"${libdir}" \
|
||||
"${prefix}/lib64" "${prefix}/lib" \
|
||||
/usr/lib64 /usr/lib \
|
||||
/usr/local/lib64 /usr/local/lib \
|
||||
/opt/lib64 /opt/lib
|
||||
do
|
||||
IFS="$ifs"
|
||||
for _soext_ in .la ${soext} .a; do
|
||||
if test -f "${_libdir_}/[$2]${_soext_}"
|
||||
then
|
||||
if test "x${_soext_}" = "x.la" ||
|
||||
test "x${_soext_}" = "x.a"; then
|
||||
[$1]_LIBS="${_libdir_}/[$2]${_soext_}"
|
||||
else
|
||||
[$1]_LIBS="-L${_libdir_} -l$(echo "$2" | sed 's/^lib//')"
|
||||
fi
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test "x${[$1][_LIBS]}" != "x"; then
|
||||
break
|
||||
fi
|
||||
done
|
||||
IFS="$ifs"
|
||||
if test "x${[$1][_LIBS]}" != "x"; then
|
||||
have_[$1]=yes
|
||||
fi
|
||||
fi
|
||||
])
|
||||
elif test "x${[try_][$1]}" = "xno"; then
|
||||
:
|
||||
else
|
||||
# We've been given a prefix to look in for library $2.
|
||||
# We start looking for $2.la files first.
|
||||
AC_MSG_CHECKING([for ][$2][.la file in ${[try_][$1]}])
|
||||
if test -f "${[try_][$1]}/lib/[$2].la"; then
|
||||
[$1][_LIBS]="${[try_][$1]}/lib/[$2].la"
|
||||
[$1][_CFLAGS]="-I${[try_][$1]}/include"
|
||||
AC_MSG_RESULT([libtool file $][$1][_LIBS (good)])
|
||||
have_[$1]=yes
|
||||
elif test -f "${[try_][$1]}/lib64/[$2].la"; then # HACK
|
||||
[$1][_LIBS]="${[try_][$1]}/lib64/[$2].la"
|
||||
[$1][_CFLAGS]="-I${[try_][$1]}/include"
|
||||
AC_MSG_RESULT([libtool file $][$1][_LIBS (good)])
|
||||
have_[$1]=yes
|
||||
else
|
||||
AC_MSG_RESULT([wild guess that something is in $try_][$1])
|
||||
[$1][_LIBS]="-L${[try_][$1]}/lib -l$(echo "$2" | sed 's/^lib//')"
|
||||
[$1][_CFLAGS]="-I${[try_][$1]}/include"
|
||||
have_[$1]=yes
|
||||
AC_MSG_WARN([
|
||||
* Warning:
|
||||
* libtool file $2.la could not be found.
|
||||
* We may be linking against the WRONG library.
|
||||
])
|
||||
fi
|
||||
fi
|
||||
elif test "x${[$1][_LIBS]}" != "x" && test "x${[$1][_CFLAGS]}" != "x"; then
|
||||
AC_MSG_RESULT([user-defined])
|
||||
userdef_[$1]=yes
|
||||
have_[$1]=yes
|
||||
else
|
||||
AC_MSG_RESULT([broken call])
|
||||
AC_MSG_ERROR([
|
||||
* Fatal:
|
||||
* When calling configure for ${PACKAGE_TARNAME}
|
||||
* ${PACKAGE_NAME}
|
||||
* either set both [$1][_LIBS] *and* [$1][_CFLAGS]
|
||||
* or neither.
|
||||
])
|
||||
fi
|
||||
AC_SUBST([REQUIREMENTS_FOR_][$1])
|
||||
dnl
|
||||
dnl ACTION-IF-FOUND
|
||||
dnl
|
||||
m4_ifval([$6],[dnl
|
||||
if test "x${[have_][$1]}" = "xyes"; then
|
||||
# ACTION-IF-FOUND
|
||||
$6
|
||||
fi
|
||||
])dnl
|
||||
dnl
|
||||
dnl ACTION-IF-NOT-FOUND
|
||||
dnl
|
||||
m4_ifval([$7],[dnl
|
||||
if test "x${[have_][$1]}" = "xno"; then
|
||||
# ACTION-IF-NOT-FOUND
|
||||
$7
|
||||
fi
|
||||
])dnl
|
||||
dnl
|
||||
dnl Run our own test compilation
|
||||
dnl
|
||||
m4_ifval([$4],[dnl
|
||||
if test "x${[have_][$1]}" = "xyes"; then
|
||||
dnl AC_MSG_CHECKING([whether ][$2][ test compile succeeds])
|
||||
dnl AC_MSG_RESULT([${[have_][$1]}])
|
||||
CPPFLAGS_save="$CPPFLAGS"
|
||||
CPPFLAGS="${[$1]_CFLAGS}"
|
||||
AC_CHECK_HEADER([$4],[have_][$1][=yes],[have_][$1][=no])
|
||||
CPPFLAGS="$CPPFLAGS_save"
|
||||
fi
|
||||
])dnl
|
||||
dnl
|
||||
dnl Run our own test link
|
||||
dnl Does not work for libraries which be built after configure time,
|
||||
dnl so we deactivate it for them (userdef_).
|
||||
dnl
|
||||
m4_ifval([$5],[dnl
|
||||
if test "x${[userdef_][$1]}" = "xno" && test "x${[have_][$1]}" = "xyes"; then
|
||||
AC_MSG_CHECKING([for function ][$5][ in ][$2])
|
||||
LIBS_save="$LIBS"
|
||||
LIBS="${[$1]_LIBS}"
|
||||
AC_TRY_LINK_FUNC([$5],[],[have_][$1][=no])
|
||||
LIBS="$LIBS_save"
|
||||
AC_MSG_RESULT([${[have_][$1]}])
|
||||
fi
|
||||
])dnl
|
||||
dnl
|
||||
dnl Abort configure script if mandatory, but not found
|
||||
dnl
|
||||
m4_if([$8],[mandatory],[
|
||||
if test "x${[have_][$1]}" = "xno"; then
|
||||
AC_MSG_ERROR([
|
||||
PKG_CONFIG_PATH=${PKG_CONFIG_PATH}
|
||||
[$1][_LIBS]=${[$1][_LIBS]}
|
||||
[$1][_CFLAGS]=${[$1][_CFLAGS]}
|
||||
|
||||
* Fatal: ${PACKAGE_NAME} requires $2 $3 to build.
|
||||
*
|
||||
* Possible solutions:
|
||||
* - set PKG_CONFIG_PATH to adequate value
|
||||
* - call configure with [$1][_LIBS]=.. and [$1][_CFLAGS]=..
|
||||
* - call configure with one of the --with-$2 parameters
|
||||
][m4_ifval([$9],[dnl
|
||||
* - get $2 and install it:
|
||||
* $9],[dnl
|
||||
* - get $2 and install it])])
|
||||
fi
|
||||
])dnl
|
||||
dnl
|
||||
dnl Abort configure script if not found and not explicitly disabled
|
||||
dnl
|
||||
m4_if([$8],[disable-explicitly],[
|
||||
if test "x${[try_][$1]}" != "xno" && test "x${[have_][$1]}" = "xno"; then
|
||||
AC_MSG_ERROR([
|
||||
PKG_CONFIG_PATH=${PKG_CONFIG_PATH}
|
||||
[$1][_LIBS]=${[$1][_LIBS]}
|
||||
[$1][_CFLAGS]=${[$1][_CFLAGS]}
|
||||
|
||||
* Fatal: ${PACKAGE_NAME} by default requires $2 $3 to build.
|
||||
* You must explicitly disable $2 to build ${PACKAGE_TARNAME} without it.
|
||||
*
|
||||
* Possible solutions:
|
||||
* - call configure with --with-$2=no or --without-$2
|
||||
* - set PKG_CONFIG_PATH to adequate value
|
||||
* - call configure with [$1][_LIBS]=.. and [$1][_CFLAGS]=..
|
||||
* - call configure with one of the --with-$2 parameters
|
||||
][m4_ifval([$9],[dnl
|
||||
* - get $2 and install it:
|
||||
* $9],[dnl
|
||||
* - get $2 and install it
|
||||
])][m4_if([$2],[libusb],[dnl
|
||||
* - if you have libusb >= 1.0 installed, you must also install
|
||||
* either the libusb0 compat library or a libusb 0.x version
|
||||
])])
|
||||
fi
|
||||
])dnl
|
||||
AM_CONDITIONAL([HAVE_][$1], [test "x$have_[$1]" = "xyes"])
|
||||
if test "x$have_[$1]" = "xyes"; then
|
||||
AC_DEFINE([HAVE_][$1], 1, [whether we compile with ][$2][ support])
|
||||
GP_CONFIG_MSG([$2],[yes])dnl
|
||||
AC_MSG_CHECKING([$2][ library flags])
|
||||
AC_MSG_RESULT(["${[$1][_LIBS]}"])
|
||||
AC_MSG_CHECKING([$2][ cpp flags])
|
||||
AC_MSG_RESULT(["${[$1][_CFLAGS]}"])
|
||||
else
|
||||
[REQUIREMENTS_FOR_][$1][=]
|
||||
GP_CONFIG_MSG([$2],[no])dnl
|
||||
fi
|
||||
dnl AC_SUBST is done implicitly by AC_ARG_VAR above.
|
||||
dnl AC_SUBST([$1][_LIBS])
|
||||
dnl AC_SUBST([$1][_CFLAGS])
|
||||
])dnl
|
||||
dnl
|
||||
dnl ####################################################################
|
||||
dnl
|
||||
AC_DEFUN([_GP_CHECK_LIBRARY_SYNTAX_ERROR],[dnl
|
||||
m4_errprint(__file__:__line__:[ Error:
|
||||
*** Calling $0 macro with old syntax
|
||||
*** Aborting.
|
||||
])dnl
|
||||
m4_exit(1)dnl
|
||||
])dnl
|
||||
dnl
|
||||
dnl ####################################################################
|
||||
dnl
|
||||
AC_DEFUN([GP_CHECK_LIBRARY],[dnl
|
||||
m4_if([$4], [mandatory], [_GP_CHECK_LIBRARY_SYNTAX_ERROR($0)],
|
||||
[$4], [default-enabled], [_GP_CHECK_LIBRARY_SYNTAX_ERROR($0)],
|
||||
[$4], [default-disabled], [_GP_CHECK_LIBRARY_SYNTAX_ERROR($0)])dnl
|
||||
m4_if([$8], [], [dnl
|
||||
_GP_CHECK_LIBRARY([$1],[$2],[$3],[$4],[$5],[$6],[$7],[mandatory],[$9])],
|
||||
[$8], [default-on], [dnl
|
||||
_GP_CHECK_LIBRARY([$1],[$2],[$3],[$4],[$5],[$6],[$7],[$8],[$9])],
|
||||
[$8], [disable-explicitly], [dnl
|
||||
_GP_CHECK_LIBRARY([$1],[$2],[$3],[$4],[$5],[$6],[$7],[$8],[$9])],
|
||||
[$8], [default-off], [dnl
|
||||
_GP_CHECK_LIBRARY([$1],[$2],[$3],[$4],[$5],[$6],[$7],[$8],[$9])],
|
||||
[$8], [mandatory], [dnl
|
||||
_GP_CHECK_LIBRARY([$1],[$2],[$3],[$4],[$5],[$6],[$7],[$8],[$9])],
|
||||
[m4_errprint(__file__:__line__:[ Error:
|
||||
Illegal argument 6 to $0: `$6'
|
||||
It must be one of "default-on", "default-off", "mandatory".
|
||||
])m4_exit(1)])dnl
|
||||
])dnl
|
||||
dnl
|
||||
m4_pattern_disallow([GP_CHECK_LIBRARY])
|
||||
m4_pattern_disallow([_GP_CHECK_LIBRARY])
|
||||
m4_pattern_disallow([_GP_CHECK_LIBRARY_SYNTAX_ERROR])
|
||||
m4_pattern_disallow([_GP_CHECK_LIBRARY_SOEXT])
|
||||
dnl
|
||||
dnl ####################################################################
|
||||
dnl
|
||||
dnl Please do not remove this:
|
||||
dnl filetype: 6e60b4f0-acb2-4cd5-8258-42014f92bd2c
|
||||
dnl I use this to find all the different instances of this file which
|
||||
dnl are supposed to be synchronized.
|
||||
dnl
|
||||
dnl Local Variables:
|
||||
dnl mode: autoconf
|
||||
dnl End:
|
||||
180
gphoto-m4/gp-check-popt.m4
Normal file
180
gphoto-m4/gp-check-popt.m4
Normal file
@@ -0,0 +1,180 @@
|
||||
dnl @synopsis GP_CHECK_POPT(FLAG)
|
||||
dnl
|
||||
dnl Check whether libpopt is available.
|
||||
dnl FLAG must be one of
|
||||
dnl "mandatory"
|
||||
dnl "default-enabled"
|
||||
dnl "default-disabled"
|
||||
dnl
|
||||
AC_DEFUN([GP_CHECK_POPT],[
|
||||
#
|
||||
# [GP_CHECK_POPT]
|
||||
#
|
||||
AC_REQUIRE([GP_CONFIG_MSG])dnl
|
||||
m4_if([$1],[mandatory], [_GP_CHECK_POPT([mandatory])],
|
||||
[$1],[default-enabled], [_GP_CHECK_POPT([disable])],
|
||||
[$1],[default-disabled], [_GP_CHECK_POPT([enable])],
|
||||
[m4_errprint(__file__:__line__:[ Error:
|
||||
Illegal argument to $0: `$1'
|
||||
Valid values are: mandatory, default-enabled, default-disabled
|
||||
])m4_exit(1)])dnl
|
||||
])dnl
|
||||
dnl
|
||||
AC_DEFUN([_GP_CHECK_POPT],[
|
||||
m4_if([$1],[mandatory],[
|
||||
try_popt=yes
|
||||
require_popt=yes
|
||||
],[
|
||||
try_popt=auto
|
||||
require_popt=no
|
||||
AC_ARG_ENABLE([popt],
|
||||
[AS_HELP_STRING([--$1-popt],[Do not use popt])],
|
||||
[ if test "x$enableval" = xno \
|
||||
|| test "x$enableval" = xoff \
|
||||
|| test "x$enableval" = xfalse;
|
||||
then
|
||||
try_popt=no
|
||||
require_popt=no
|
||||
elif test "x$enableval" = xyes \
|
||||
|| test "x$enableval" = xon \
|
||||
|| test "x$enableval" = xtrue
|
||||
then
|
||||
try_popt=yes
|
||||
require_popt=yes
|
||||
fi
|
||||
])dnl
|
||||
])dnl
|
||||
|
||||
AC_MSG_CHECKING([whether popt is required])
|
||||
AC_MSG_RESULT([${require_popt}])
|
||||
|
||||
if test "$require_popt" != yes; then
|
||||
AC_MSG_CHECKING([whether popt is requested])
|
||||
AC_MSG_RESULT([${try_popt}])
|
||||
fi
|
||||
|
||||
dnl Implicit AC_SUBST
|
||||
AC_ARG_VAR([POPT_CFLAGS],[cppflags to compile with libpopt])dnl
|
||||
AC_ARG_VAR([POPT_LIBS],[location of libpopt to link against])dnl
|
||||
|
||||
have_popt=no
|
||||
|
||||
if test "x$POPT_CFLAGS" = "x" && test "x$POPT_LIBS" = "x"; then
|
||||
|
||||
# try to find options to compile popt.h
|
||||
CPPFLAGS_save="$CPPFLAGS"
|
||||
popth_found=no
|
||||
for popt_prefix in "" /usr /usr/local
|
||||
do
|
||||
if test -n "${popt_prefix}"; then
|
||||
:
|
||||
elif test -d "${popt_prefix}/include"; then
|
||||
CPPFLAGS="-I${popt_prefix}/include ${CPPFLAGS}"
|
||||
else
|
||||
continue
|
||||
fi
|
||||
ac_cv_header_popt_h=""
|
||||
unset ac_cv_header_popt_h
|
||||
AC_CHECK_HEADER([popt.h], [popth_found=yes])
|
||||
if test "$popth_found" = yes; then break; fi
|
||||
done
|
||||
CPPFLAGS="$CPPFLAGS_save"
|
||||
if test "$popth_found" = "yes"; then
|
||||
if test "$popt_prefix" = ""; then
|
||||
POPT_CFLAGS=""
|
||||
else
|
||||
POPT_CFLAGS="-I${popt_prefix}/include"
|
||||
fi
|
||||
elif test "$require_popt" = "yes"; then
|
||||
AC_MSG_ERROR([
|
||||
* Cannot autodetect popt.h
|
||||
*
|
||||
* Set POPT_CFLAGS and POPT_LIBS correctly.
|
||||
])
|
||||
fi
|
||||
|
||||
# try to find options to link against popt
|
||||
LDFLAGS_save="$LDFLAGS"
|
||||
popt_links=no
|
||||
for popt_prefix in /usr "" /usr/local; do
|
||||
# We could have "/usr" and "lib64" at the beginning of the
|
||||
# lists. Then the first tested location would
|
||||
# incidentally be the right one on 64bit systems, and
|
||||
# thus work around a bug in libtool on 32bit systems:
|
||||
#
|
||||
# 32bit libtool doesn't know about 64bit systems, and so the
|
||||
# compilation will fail when linking a 32bit library from
|
||||
# /usr/lib to a 64bit binary.
|
||||
#
|
||||
# This hack has been confirmed to workwith a
|
||||
# 32bit Debian Sarge and 64bit Fedora Core 3 system.
|
||||
for ldir in lib64 "" lib; do
|
||||
popt_libdir="${popt_prefix}/${ldir}"
|
||||
if test "${popt_libdir}" = "/"; then
|
||||
popt_libdir=""
|
||||
elif test -d "${popt_libdir}"; then
|
||||
LDFLAGS="-L${popt_libdir} ${LDFLAGS}"
|
||||
else
|
||||
continue
|
||||
fi
|
||||
# Avoid caching of results
|
||||
ac_cv_lib_popt_poptStuffArgs=""
|
||||
unset ac_cv_lib_popt_poptStuffArgs
|
||||
AC_CHECK_LIB([popt], [poptStuffArgs], [popt_links=yes])
|
||||
if test "$popt_links" = yes; then break; fi
|
||||
done
|
||||
if test "$popt_links" = yes; then break; fi
|
||||
done
|
||||
LDFLAGS="$LDFLAGS_save"
|
||||
if test "$popt_links" = "yes"; then
|
||||
if test "$popt_libdir" = ""; then
|
||||
POPT_LIBS="-lpopt"
|
||||
else
|
||||
POPT_LIBS="-L${popt_libdir} -lpopt"
|
||||
fi
|
||||
have_popt=yes
|
||||
elif test "$require_popt" = "yes"; then
|
||||
AC_MSG_ERROR([
|
||||
* Cannot autodetect library directory containing popt
|
||||
*
|
||||
* Set POPT_CFLAGS and POPT_LIBS correctly.
|
||||
])
|
||||
fi
|
||||
elif test "x$POPT_CFLAGS" != "x" && test "x$POPT_LIBS" != "x"; then
|
||||
# just use the user specivied option
|
||||
popt_msg="yes (user specified)"
|
||||
have_popt=yes
|
||||
else
|
||||
AC_MSG_ERROR([
|
||||
* Fatal: Either set both POPT_CFLAGS and POPT_LIBS or neither.
|
||||
])
|
||||
fi
|
||||
|
||||
AC_MSG_CHECKING([if popt is functional])
|
||||
if test "$require_popt$have_popt" = "yesno"; then
|
||||
AC_MSG_RESULT([no, but required])
|
||||
AC_MSG_ERROR([
|
||||
* popt library not found
|
||||
* Fatal: ${PACKAGE_NAME} (${PACKAGE_TARNAME}) requires popt
|
||||
* Please install it and/or set POPT_CFLAGS and POPT_LIBS.
|
||||
])
|
||||
fi
|
||||
AC_MSG_RESULT([${have_popt}])
|
||||
|
||||
GP_CONFIG_MSG([use popt library], [${have_popt}])
|
||||
if test "$have_popt" = "yes"; then
|
||||
AC_DEFINE([HAVE_POPT],[1],[whether the popt library is available])
|
||||
GP_CONFIG_MSG([popt libs],[${POPT_LIBS}])
|
||||
GP_CONFIG_MSG([popt cppflags],[${POPT_CFLAGS}])
|
||||
fi
|
||||
AM_CONDITIONAL([HAVE_POPT],[test "$have_popt" = "yes"])
|
||||
])dnl
|
||||
dnl
|
||||
dnl Please do not remove this:
|
||||
dnl filetype: 7595380e-eff3-49e5-90ab-e40f1d544639
|
||||
dnl I use this to find all the different instances of this file which
|
||||
dnl are supposed to be synchronized.
|
||||
dnl
|
||||
dnl Local Variables:
|
||||
dnl mode: autoconf
|
||||
dnl End:
|
||||
48
gphoto-m4/gp-check-shell-environment.m4
Normal file
48
gphoto-m4/gp-check-shell-environment.m4
Normal file
@@ -0,0 +1,48 @@
|
||||
dnl @synopsis GP_CHECK_SHELL_ENVIRONMENT([SHOW-LOCALE-VARS])
|
||||
dnl
|
||||
dnl Check that the shell environment is sane.
|
||||
dnl
|
||||
dnl If SHOW-LOCALE-VARS is set to [true], print all LC_* and LANG*
|
||||
dnl variables at configure time. (WARNING: This is not portable!)
|
||||
dnl
|
||||
dnl
|
||||
AC_DEFUN([GP_CHECK_SHELL_ENVIRONMENT],
|
||||
[
|
||||
# make sure "cd" doesn't print anything on stdout
|
||||
if test x"${CDPATH+set}" = xset
|
||||
then
|
||||
CDPATH=:
|
||||
export CDPATH
|
||||
fi
|
||||
|
||||
# make sure $() command substitution works
|
||||
AC_MSG_CHECKING([for POSIX sh \$() command substitution])
|
||||
if test "x$(pwd)" = "x`pwd`" && test "y$(echo "foobar")" = "y`echo foobar`" # ''''
|
||||
then
|
||||
AC_MSG_RESULT([yes])
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
uname=`uname 2>&1` # ''
|
||||
uname_a=`uname -a 2>&1` # ''
|
||||
AC_MSG_ERROR([
|
||||
|
||||
* POSIX sh \$() command substition does not work with this shell.
|
||||
*
|
||||
* You are running a very rare species of shell. Please report this
|
||||
* sighting to <${PACKAGE_BUGREPORT}>:
|
||||
* SHELL=${SHELL}
|
||||
* uname=${uname}
|
||||
* uname-a=${uname_a}
|
||||
* Please also include your OS and version.
|
||||
*
|
||||
* Run this configure script using a better (i.e. POSIX compliant) shell.
|
||||
])
|
||||
fi
|
||||
dnl
|
||||
m4_if([$1],[true],[dnl
|
||||
printenv | grep -E '^(LC_|LANG)'
|
||||
])dnl
|
||||
|
||||
dnl
|
||||
])dnl
|
||||
dnl
|
||||
102
gphoto-m4/gp-config-msg.m4
Normal file
102
gphoto-m4/gp-config-msg.m4
Normal file
@@ -0,0 +1,102 @@
|
||||
dnl
|
||||
dnl GP_CONFIG_INIT
|
||||
dnl use default LHS width (called implicitly if not called explicitly)
|
||||
dnl GP_CONFIG_INIT([WIDTH-OF-LHS])
|
||||
dnl explicitly set the LHS width to the given value
|
||||
dnl
|
||||
dnl GP_CONFIG_MSG
|
||||
dnl empty output line
|
||||
dnl GP_CONFIG_MSG([LHS],[RHS])
|
||||
dnl formatted output line "LHS: RHS"
|
||||
dnl
|
||||
dnl GP_CONFIG_OUTPUT
|
||||
dnl print all the output messages we collected in the mean time
|
||||
dnl
|
||||
dnl Simple way to print a configuration summary at the end of ./configure.
|
||||
dnl
|
||||
dnl Example usage:
|
||||
dnl
|
||||
dnl GP_CONFIG_INIT
|
||||
dnl GP_CONFIG_MSG([Source code location],[${srcdir}])
|
||||
dnl GP_CONFIG_MSG([Compiler],[${CC}])
|
||||
dnl GP_CONFIG_MSG
|
||||
dnl GP_CONFIG_MSG([Feature foo],[${foo}])
|
||||
dnl GP_CONFIG_MSG([Location of bar],[${bar}])
|
||||
dnl [...]
|
||||
dnl AC_OUTPUT
|
||||
dnl GP_CONFIG_OUTPUT
|
||||
dnl
|
||||
dnl
|
||||
AC_DEFUN([GP_CONFIG_INIT],
|
||||
[dnl
|
||||
AC_REQUIRE([GP_CHECK_SHELL_ENVIRONMENT])
|
||||
dnl the empty string must contain at least as many spaces as the substr length
|
||||
dnl FIXME: let m4 determine that length
|
||||
dnl (collect left parts in array and choose largest length)
|
||||
m4_if([$1],[],[gp_config_len="30"],[gp_config_len="$1"])
|
||||
gp_config_empty=""
|
||||
gp_config_len3="$(expr "$gp_config_len" - 3)"
|
||||
n="$gp_config_len"
|
||||
while test "$n" -gt 0; do
|
||||
gp_config_empty="${gp_config_empty} "
|
||||
n="$(expr "$n" - 1)"
|
||||
done
|
||||
gp_config_msg="
|
||||
Configuration (${PACKAGE_TARNAME} ${PACKAGE_VERSION}):
|
||||
"
|
||||
])dnl
|
||||
dnl
|
||||
dnl
|
||||
AC_DEFUN([GP_CONFIG_MSG],
|
||||
[AC_REQUIRE([GP_CONFIG_INIT])dnl
|
||||
m4_if([$1],[],[
|
||||
gp_config_msg="${gp_config_msg}
|
||||
"
|
||||
],[$2],[],[
|
||||
gp_config_msg="${gp_config_msg}
|
||||
[$1]
|
||||
"
|
||||
],[
|
||||
gp_config_msg_len="$(expr "[$1]" : '.*')"
|
||||
if test "$gp_config_msg_len" -ge "$gp_config_len"; then
|
||||
gp_config_msg_lhs="$(expr "[$1]" : "\(.\{0,${gp_config_len3}\}\)")..:"
|
||||
else
|
||||
gp_config_msg_lhs="$(expr "[$1]:${gp_config_empty}" : "\(.\{0,${gp_config_len}\}\)")"
|
||||
fi
|
||||
gp_config_msg="${gp_config_msg} ${gp_config_msg_lhs} [$2]
|
||||
"
|
||||
])])dnl
|
||||
dnl
|
||||
AC_DEFUN([GP_CONFIG_MSG_SUBDIRS],[dnl
|
||||
# Message about configured subprojects
|
||||
if test "x$subdirs" != "x"; then
|
||||
GP_CONFIG_MSG()dnl
|
||||
_subdirs=""
|
||||
for sd in $subdirs; do
|
||||
ssd="$(basename "$sd")"
|
||||
if test "x$_subdirs" = "x"; then
|
||||
_subdirs="$ssd";
|
||||
else
|
||||
_subdirs="$_subdirs $ssd"
|
||||
fi
|
||||
done
|
||||
GP_CONFIG_MSG([Subprojects],[${_subdirs}])dnl
|
||||
fi
|
||||
])dnl
|
||||
dnl
|
||||
AC_DEFUN([GP_CONFIG_OUTPUT],
|
||||
[AC_REQUIRE([GP_CONFIG_INIT])dnl
|
||||
AC_REQUIRE([GP_CONFIG_MSG])dnl
|
||||
AC_REQUIRE([GP_CONFIG_MSG_SUBDIRS])dnl
|
||||
echo "${gp_config_msg}
|
||||
You may run \"make\" and \"make install\" now."
|
||||
])dnl
|
||||
dnl
|
||||
dnl Please do not remove this:
|
||||
dnl filetype: de774af3-dc3b-4b1d-b6f2-4aca35d3da16
|
||||
dnl I use this to find all the different instances of this file which
|
||||
dnl are supposed to be synchronized.
|
||||
dnl
|
||||
dnl Local Variables:
|
||||
dnl mode: autoconf
|
||||
dnl End:
|
||||
113
gphoto-m4/gp-documentation.m4
Normal file
113
gphoto-m4/gp-documentation.m4
Normal file
@@ -0,0 +1,113 @@
|
||||
dnl
|
||||
dnl check where to install documentation
|
||||
dnl
|
||||
dnl determines documentation "root directory", i.e. the directory
|
||||
dnl where all documentation will be placed in
|
||||
dnl
|
||||
|
||||
AC_DEFUN([GP_CHECK_DOC_DIR],
|
||||
[
|
||||
AC_BEFORE([$0], [GP_BUILD_GTK_DOCS])dnl
|
||||
AC_BEFORE([$0], [GP_CHECK_DOXYGEN])dnl
|
||||
|
||||
AC_ARG_WITH([doc-dir],
|
||||
[AS_HELP_STRING([--with-doc-dir=PATH],
|
||||
[Where to install docs [default=autodetect]])])
|
||||
|
||||
# check for the main ("root") documentation directory
|
||||
AC_MSG_CHECKING([main docdir])
|
||||
|
||||
if test "x${with_doc_dir}" != "x"
|
||||
then # docdir is given as parameter
|
||||
docdir="${with_doc_dir}"
|
||||
AC_MSG_RESULT([${docdir} (from parameter)])
|
||||
else # otherwise invent a docdir hopefully compatible with system policy
|
||||
if test -d "/usr/share/doc"
|
||||
then
|
||||
maindocdir='${prefix}/share/doc'
|
||||
AC_MSG_RESULT([${maindocdir} (FHS style)])
|
||||
elif test -d "/usr/doc"
|
||||
then
|
||||
maindocdir='${prefix}/doc'
|
||||
AC_MSG_RESULT([${maindocdir} (old style)])
|
||||
else
|
||||
maindocdir='${datadir}/doc'
|
||||
AC_MSG_RESULT([${maindocdir} (default value)])
|
||||
fi
|
||||
AC_MSG_CHECKING([package docdir])
|
||||
# check whether to include package version into documentation path
|
||||
# FIXME: doesn't work properly.
|
||||
if ls -d /usr/{share/,}doc/make-[0-9]* > /dev/null 2>&1
|
||||
then
|
||||
docdir="${maindocdir}/${PACKAGE}-${VERSION}"
|
||||
AC_MSG_RESULT([${docdir} (redhat style)])
|
||||
else
|
||||
docdir="${maindocdir}/${PACKAGE}"
|
||||
AC_MSG_RESULT([${docdir} (default style)])
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_SUBST([docdir])
|
||||
])dnl
|
||||
|
||||
dnl
|
||||
dnl check whether to build docs and where to:
|
||||
dnl
|
||||
dnl * determine presence of prerequisites (only gtk-doc for now)
|
||||
dnl * determine destination directory for HTML files
|
||||
dnl
|
||||
|
||||
AC_DEFUN([GP_BUILD_GTK_DOCS],
|
||||
[
|
||||
# docdir has to be determined in advance
|
||||
AC_REQUIRE([GP_CHECK_DOC_DIR])
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# gtk-doc: We use gtk-doc for building our documentation. However, we
|
||||
# require the user to explicitely request the build.
|
||||
# ---------------------------------------------------------------------------
|
||||
try_gtkdoc=false
|
||||
gtkdoc_msg="no (not requested)"
|
||||
have_gtkdoc=false
|
||||
AC_ARG_ENABLE([docs],
|
||||
[AS_HELP_STRING([--enable-docs],
|
||||
[Use gtk-doc to build documentation [default=no]])],[
|
||||
if test x$enableval = xyes; then
|
||||
try_gtkdoc=true
|
||||
fi
|
||||
])
|
||||
if $try_gtkdoc; then
|
||||
AC_PATH_PROG([GTKDOC],[gtkdoc-mkdb])
|
||||
if test -n "${GTKDOC}"; then
|
||||
have_gtkdoc=true
|
||||
gtkdoc_msg="yes"
|
||||
else
|
||||
gtkdoc_msg="no (http://www.gtk.org/rdp/download.html)"
|
||||
fi
|
||||
fi
|
||||
AM_CONDITIONAL([ENABLE_GTK_DOC], [$have_gtkdoc])
|
||||
GP_CONFIG_MSG([build API docs with gtk-doc],[$gtkdoc_msg])
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Give the user the possibility to install html documentation in a
|
||||
# user-defined location.
|
||||
# ---------------------------------------------------------------------------
|
||||
AC_ARG_WITH([html-dir],
|
||||
[AS_HELP_STRING([--with-html-dir=PATH],
|
||||
[Where to install html docs [default=autodetect]])])
|
||||
|
||||
AC_MSG_CHECKING([for html dir])
|
||||
if test "x${with_html_dir}" = "x" ; then
|
||||
htmldir="${docdir}/html"
|
||||
AC_MSG_RESULT([${htmldir} (default)])
|
||||
else
|
||||
htmldir="${with_html_dir}"
|
||||
AC_MSG_RESULT([${htmldir} (from parameter)])
|
||||
fi
|
||||
AC_SUBST([htmldir])
|
||||
apidocdir="${htmldir}/api"
|
||||
AC_SUBST([apidocdir])
|
||||
|
||||
])dnl
|
||||
|
||||
60
gphoto-m4/gp-dynamic-libraries.m4
Normal file
60
gphoto-m4/gp-dynamic-libraries.m4
Normal file
@@ -0,0 +1,60 @@
|
||||
AC_DEFUN([GP_DYNAMIC_LIBRARIES],[dnl
|
||||
dnl We require either of those
|
||||
dnl AC_REQUIRE([AC_LIBTTDL_INSTALLABLE])dnl
|
||||
dnl AC_REQUIRE([AC_LIBLTDL_CONVENIENCE])dnl
|
||||
AC_REQUIRE([AC_LIBTOOL_DLOPEN])dnl
|
||||
AC_REQUIRE([AC_PROG_LIBTOOL])dnl
|
||||
dnl ---------------------------------------------------------------------------
|
||||
dnl Check for libltdl:
|
||||
dnl - lt_dlforeachfile has been introduced in libtool-1.4.
|
||||
dnl - However, there are still systems out there running libtool-1.3.
|
||||
dnl For those, we will use our shipped libltdl. This has the welcome
|
||||
dnl side effect that we don't have to distinguish between libltdl 1.3 with
|
||||
dnl and without the notorious segfault bug.
|
||||
dnl - FIXME: In case we're using our own version, we have to check whether
|
||||
dnl -ldl is required?
|
||||
dnl ---------------------------------------------------------------------------
|
||||
# $0
|
||||
ltdl_msg="no (not found or too old)"
|
||||
have_ltdl=false
|
||||
LIBS_save="$LIBS"
|
||||
LIBS="$LIBLTDL"
|
||||
AC_CHECK_LIB([ltdl], [lt_dlforeachfile],[
|
||||
CPPFLAGS_save="$CPPFLAGS"
|
||||
CPPFLAGS="$LTDLINCL"
|
||||
AC_CHECK_HEADER([ltdl.h],[
|
||||
AC_DEFINE([HAVE_LTDL],1,[whether we use libltdl])
|
||||
ltdl_msg="yes (from system)"
|
||||
have_ltdl=:
|
||||
])
|
||||
CPPFLAGS="$CPPFLAGS_save"
|
||||
])
|
||||
LIBS="$LIBS_save"
|
||||
if "$have_ltdl"; then :; else
|
||||
AC_MSG_CHECKING([for included libltdl])
|
||||
if test -d "$srcdir/libltdl"; then
|
||||
LIBLTDL="\$(top_builddir)/libltdl/libltdlc.la"
|
||||
LTDLINCL="-I\$(top_srcdir)/libltdl"
|
||||
have_ltdl=:
|
||||
ltdl_msg="yes (included)"
|
||||
AC_MSG_RESULT([yes])
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
AC_MSG_ERROR([
|
||||
*** Could not detect or configure libltdl.
|
||||
])
|
||||
fi
|
||||
fi
|
||||
GP_CONFIG_MSG([libltdl],["${ltdl_msg}"])
|
||||
])dnl
|
||||
dnl
|
||||
dnl ####################################################################
|
||||
dnl
|
||||
dnl Please do not remove this:
|
||||
dnl filetype: 2b993145-3256-47b4-84fd-ec4dcdf4fdf9
|
||||
dnl I use this to find all the different instances of this file which
|
||||
dnl are supposed to be synchronized.
|
||||
dnl
|
||||
dnl Local Variables:
|
||||
dnl mode: autoconf
|
||||
dnl End:
|
||||
78
gphoto-m4/gp-gettext-hack.m4
Normal file
78
gphoto-m4/gp-gettext-hack.m4
Normal file
@@ -0,0 +1,78 @@
|
||||
dnl
|
||||
dnl GP_GETTEXT_HACK
|
||||
dnl
|
||||
dnl gettext hack, originally designed for libexif, libgphoto2, and Co.
|
||||
dnl This creates a po/Makevars file with adequate values if the
|
||||
dnl po/Makevars.template is present.
|
||||
dnl
|
||||
dnl Example usage:
|
||||
dnl GP_GETTEXT_HACK([${PACKAGE_TARNAME}-${LIBFOO_CURRENT}],
|
||||
dnl [Copyright Holder],
|
||||
dnl [foo-translation@example.org])
|
||||
dnl ALL_LINGUAS="de es fr"
|
||||
dnl AM_GNU_GETTEXT_VERSION([0.14.1])
|
||||
dnl AM_GNU_GETTEXT([external])
|
||||
dnl AM_PO_SUBDIRS()
|
||||
dnl AM_ICONV()
|
||||
dnl GP_GETTEXT_FLAGS
|
||||
dnl
|
||||
dnl You can leave out the GP_GETTEXT_HACK parameters if you want to,
|
||||
dnl GP_GETTEXT_HACK will try fall back to sensible values in that case:
|
||||
dnl
|
||||
|
||||
AC_DEFUN([GP_GETTEXT_HACK],
|
||||
[
|
||||
AC_BEFORE([$0], [AM_GNU_GETTEXT])dnl
|
||||
AC_BEFORE([$0], [AM_GNU_GETTEXT_VERSION])dnl
|
||||
m4_if([$1],[],[GETTEXT_PACKAGE="${PACKAGE_TARNAME}"],[GETTEXT_PACKAGE="$1"])
|
||||
AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE], ["$GETTEXT_PACKAGE"],
|
||||
[The gettext domain we're using])
|
||||
AC_SUBST([GETTEXT_PACKAGE])
|
||||
sed_cmds="s|^DOMAIN.*|DOMAIN = ${GETTEXT_PACKAGE}|"
|
||||
m4_if([$2],[],[],[sed_cmds="${sed_cmds};s|^COPYRIGHT_HOLDER.*|COPYRIGHT_HOLDER = $2|"])
|
||||
m4_ifval([$3],[
|
||||
if test -n "$PACKAGE_BUGREPORT"; then
|
||||
sed_mb="${PACKAGE_BUGREPORT}"
|
||||
else
|
||||
AC_MSG_ERROR([
|
||||
*** Your configure.{ac,in} is wrong.
|
||||
*** Either define PACKAGE_BUGREPORT (by using the 4-parameter AC INIT syntax)
|
||||
*** or give [GP_GETTEXT_HACK] the third parameter.
|
||||
***
|
||||
])
|
||||
fi
|
||||
],[
|
||||
sed_mb="$3"
|
||||
])
|
||||
sed_cmds="${sed_cmds};s|^MSGID_BUGS_ADDRESS.*|MSGID_BUGS_ADDRESS = ${sed_mb}|"
|
||||
# Not so sure whether this hack is all *that* evil...
|
||||
AC_MSG_CHECKING([for po/Makevars requiring hack])
|
||||
if test -f "${srcdir}/po/Makevars.template"; then
|
||||
sed "$sed_cmds" < "${srcdir}/po/Makevars.template" > "${srcdir}/po/Makevars"
|
||||
AC_MSG_RESULT([yes, done.])
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
fi
|
||||
])
|
||||
|
||||
AC_DEFUN([GP_GETTEXT_FLAGS],
|
||||
[
|
||||
AC_REQUIRE([AM_GNU_GETTEXT])
|
||||
AC_REQUIRE([GP_CONFIG_INIT])
|
||||
if test "x${BUILD_INCLUDED_LIBINTL}" = "xyes"; then
|
||||
AM_CFLAGS="${AM_CFLAGS} -I\$(top_srcdir)/intl"
|
||||
fi
|
||||
GP_CONFIG_MSG([Use translations],[${USE_NLS}])
|
||||
if test "x$USE_NLS" = "xyes" && test "${BUILD_INCLUDED_LIBINTL}"; then
|
||||
GP_CONFIG_MSG([Use included libintl],[${BUILD_INCLUDED_LIBINTL}])
|
||||
fi
|
||||
])
|
||||
|
||||
dnl Please do not remove this:
|
||||
dnl filetype: 71ff3941-a5ae-4677-a369-d7cb01f92c81
|
||||
dnl I use this to find all the different instances of this file which
|
||||
dnl are supposed to be synchronized.
|
||||
|
||||
dnl Local Variables:
|
||||
dnl mode: autoconf
|
||||
dnl End:
|
||||
29
gphoto-m4/gp-internal-docs.m4
Normal file
29
gphoto-m4/gp-internal-docs.m4
Normal file
@@ -0,0 +1,29 @@
|
||||
dnl
|
||||
dnl
|
||||
dnl
|
||||
AC_DEFUN([GP_INTERNAL_DOCS],[dnl
|
||||
# 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"])
|
||||
])dnl
|
||||
59
gphoto-m4/gp-libltdl.m4
Normal file
59
gphoto-m4/gp-libltdl.m4
Normal file
@@ -0,0 +1,59 @@
|
||||
dnl Written by Hans Ulrich Niedermann
|
||||
dnl LDFLAGS vs LIBS fix by Dan Nicholson
|
||||
dnl
|
||||
dnl We are using our own libltdl checks instead of AC_WITH_LTDL
|
||||
dnl because we do not want to ship our own copy of libltdl any more.
|
||||
dnl Not shipping libltdl makes it possible to ditch our own autogen.sh
|
||||
dnl and relying on standard autoconf's "autoreconf".
|
||||
dnl
|
||||
dnl Look for external libltdl, not shipping internal libltdl.
|
||||
AC_DEFUN([GP_LIB_LTDL],[dnl
|
||||
AC_ARG_VAR([LTDLINCL],[CFLAGS for compiling with libltdl])
|
||||
AC_ARG_VAR([LIBLTDL],[LIBS to add for linking against libltdl])
|
||||
if test "x${LTDLINCL}${LIBLTDL}" = "x"; then
|
||||
AC_CHECK_HEADER([ltdl.h],
|
||||
[dnl
|
||||
AC_CHECK_LIB([ltdl], [lt_dlinit],[dnl
|
||||
LTDLINCL=""
|
||||
LIBLTDL="-lltdl"
|
||||
AC_DEFINE([HAVE_LTDL],[1],[Whether libltdl (of libtool fame) is present])
|
||||
],[dnl
|
||||
AC_MSG_ERROR([
|
||||
$PACKAGE requires the ltdl library, included with libtool
|
||||
|
||||
Please make sure that the proper development package is installed
|
||||
(libltdl-dev, libtool-ltdl-devel, etc.)
|
||||
])[]dnl
|
||||
])dnl
|
||||
])
|
||||
else
|
||||
AC_MSG_CHECKING([for libltdl flags])
|
||||
AC_MSG_RESULT([set explicitly: ${LTDLINCL} ${LIBLTDL}])
|
||||
fi
|
||||
AC_SUBST([LTDLINCL])
|
||||
AC_SUBST([LIBLTDL])
|
||||
dnl
|
||||
dnl Make sure we can actually compile and link against libltdl
|
||||
AC_LANG_PUSH([C])
|
||||
AC_MSG_CHECKING([that we can compile and link with libltdl])
|
||||
saved_CPPFLAGS="$CPPFLAGS"
|
||||
saved_LIBS="$LIBS"
|
||||
CPPFLAGS="$CPPFLAGS $LTDLINCL"
|
||||
LIBS="$LIBS $LIBLTDL"
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([dnl
|
||||
#include <stdlib.h> /* for NULL */
|
||||
#include <ltdl.h> /* for lt_* */
|
||||
],[dnl
|
||||
int ret = lt_dlforeachfile("/usr/lib:/usr/local/lib", NULL, NULL);
|
||||
])], [AC_MSG_RESULT([yes])], [dnl
|
||||
AC_MSG_RESULT([no])
|
||||
AC_MSG_ERROR([cannot compile and link against libltdl
|
||||
${PACKAGE_TARNAME} requires libltdl (the libtool dl* library),
|
||||
but cannot compile and link against it.
|
||||
Aborting.
|
||||
])
|
||||
])
|
||||
CPPFLAGS="$saved_CPPFLAGS"
|
||||
LIBS="$saved_LIBS"
|
||||
AC_LANG_POP
|
||||
])dnl
|
||||
46
gphoto-m4/gp-manual-docbook-xml.m4
Normal file
46
gphoto-m4/gp-manual-docbook-xml.m4
Normal file
@@ -0,0 +1,46 @@
|
||||
dnl ------------------------------------------------------------------------
|
||||
dnl try to find xmlto (required for generation of man pages and html docs)
|
||||
dnl ------------------------------------------------------------------------
|
||||
AC_DEFUN([GP_CHECK_DOCBOOK_XML],
|
||||
[
|
||||
|
||||
AC_MSG_CHECKING([for XML catalogs])
|
||||
XML_CATALOG_FILES="`find /etc/xml /usr/share/xml /usr/share/sgml -type f \( -iname 'catalog.xml' -or -iname 'catalog' \) -print 2> /dev/null | while read file; do echo -n "$file "; done`"
|
||||
if test "x$XML_CATALOG_FILES" = "x"
|
||||
then
|
||||
AC_MSG_RESULT([none found.])
|
||||
else
|
||||
AC_MSG_RESULT([found ${XML_CATALOG_FILES}])
|
||||
fi
|
||||
AC_SUBST(XML_CATALOG_FILES)
|
||||
|
||||
#XML_DEBUG_CATALOG=0
|
||||
#AC_SUBST(XML_DEBUG_CATALOG)
|
||||
|
||||
manual_msg="no (http://cyberelk.net/tim/xmlto/)"
|
||||
try_xmlto=true
|
||||
have_xmlto=false
|
||||
AC_ARG_WITH(xmlto, [ --without-xmlto Don't use xmlto],[
|
||||
if test x$withval = xno; then
|
||||
try_xmlto=false
|
||||
fi])
|
||||
if $try_xmlto; then
|
||||
AC_PATH_PROG(XMLTO,xmlto)
|
||||
if test -n "${XMLTO}"; then
|
||||
have_xmlto=true
|
||||
manual_msg="yes"
|
||||
PURE_XMLTO="$XMLTO"
|
||||
if true || test "x$XML_CATALOG_FILES" = "x"; then
|
||||
unset XML_CATALOG_FILES
|
||||
XMLTO="${XMLTO} -m \$(top_srcdir)/src/xsl/custom.xsl"
|
||||
else
|
||||
XMLTO="env XML_CATALOG_FILES=\"${XML_CATALOG_FILES}\" ${XMLTO} -m ${top_srcdir}/src/xsl/custom.xsl"
|
||||
fi
|
||||
else
|
||||
# in case anybody runs $(XMLTO) somewhere, we return false
|
||||
XMLTO=false
|
||||
fi
|
||||
fi
|
||||
|
||||
AM_CONDITIONAL(XMLTO, $have_xmlto)
|
||||
])
|
||||
329
gphoto-m4/gp-manual-documentation.m4
Normal file
329
gphoto-m4/gp-manual-documentation.m4
Normal file
@@ -0,0 +1,329 @@
|
||||
dnl
|
||||
dnl check where to install documentation
|
||||
dnl
|
||||
dnl determines documentation "root directory", i.e. the directory
|
||||
dnl where all documentation will be placed in
|
||||
dnl
|
||||
|
||||
AC_DEFUN([GP_CHECK_DOCDIR],
|
||||
[
|
||||
|
||||
AC_ARG_WITH(doc-dir, [ --with-doc-dir=PATH Where to install docs [default=autodetect]])dnl
|
||||
|
||||
# check for the main ("root") documentation directory
|
||||
AC_MSG_CHECKING([main docdir])
|
||||
|
||||
if test "x${with_doc_dir}" != "x"
|
||||
then # docdir is given as parameter
|
||||
docdir="${with_doc_dir}"
|
||||
AC_MSG_RESULT([${docdir} (from parameter)])
|
||||
else # otherwise invent a docdir hopefully compatible with system policy
|
||||
if test -d "/usr/share/doc"
|
||||
then
|
||||
maindocdir='${prefix}/share/doc'
|
||||
AC_MSG_RESULT([${maindocdir} (FHS style)])
|
||||
elif test -d "/usr/doc"
|
||||
then
|
||||
maindocdir='${prefix}/doc'
|
||||
AC_MSG_RESULT([${maindocdir} (old style)])
|
||||
else
|
||||
maindocdir='${datadir}/doc'
|
||||
AC_MSG_RESULT([${maindocdir} (default value)])
|
||||
fi
|
||||
AC_MSG_CHECKING(package docdir)
|
||||
# check whether to include package version into documentation path
|
||||
# FIXME: doesn't work properly.
|
||||
if ls -d /usr/{share/,}doc/*-[[]0-9[]]* > /dev/null 2>&1
|
||||
then
|
||||
docdir="${maindocdir}/${PACKAGE}-${VERSION}"
|
||||
AC_MSG_RESULT([${docdir} (redhat style)])
|
||||
else
|
||||
docdir="${maindocdir}/${PACKAGE}"
|
||||
AC_MSG_RESULT([${docdir} (default style)])
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_SUBST(docdir)
|
||||
|
||||
])dnl
|
||||
|
||||
dnl Solaris hack for grep and tr
|
||||
AC_DEFUN([GP_CHECK_TR],
|
||||
[
|
||||
if test -n "`echo $host_os | grep '[sS]olaris'`"; then
|
||||
TR=/usr/xpg4/bin/tr
|
||||
GREP=/usr/xpg4/bin/grep
|
||||
else
|
||||
TR=tr
|
||||
GREP=grep
|
||||
fi
|
||||
])
|
||||
|
||||
dnl
|
||||
dnl check whether to build docs and where to:
|
||||
dnl
|
||||
dnl * determine presence of prerequisites (only gtk-doc for now)
|
||||
dnl * determine destination directory for HTML files
|
||||
dnl
|
||||
|
||||
AC_DEFUN([GP_BUILD_DOCS],
|
||||
[
|
||||
# doc dir has to be determined in advance
|
||||
AC_REQUIRE([GP_CHECK_DOCDIR])
|
||||
AC_REQUIRE([GP_CHECK_GTK_DOC])
|
||||
AC_REQUIRE([GP_CHECK_FIG2DEV])
|
||||
AC_REQUIRE([GP_CHECK_DOCBOOK_XML])
|
||||
AC_REQUIRE([GP_CHECK_TR])
|
||||
AC_REQUIRE([GP_CHECK_PSTOIMG])
|
||||
AC_REQUIRE([GP_CHECK_DOT])
|
||||
AC_REQUIRE([GP_CHECK_W3M])
|
||||
|
||||
gphoto2xml='$(top_srcdir)/src/gphoto2.xml'
|
||||
AC_SUBST(gphoto2xml)
|
||||
|
||||
dnl ---------------------------------------------------------------------------
|
||||
dnl Give the user the possibility to install documentation in
|
||||
dnl user-defined locations.
|
||||
dnl ---------------------------------------------------------------------------
|
||||
AC_ARG_WITH(html-dir, [ --with-html-dir=PATH Where to install html docs [default=autodetect]])
|
||||
AC_MSG_CHECKING([for html dir])
|
||||
if test "x${with_html_dir}" = "x" ; then
|
||||
htmldir="${docdir}/html"
|
||||
AC_MSG_RESULT([${htmldir} (default)])
|
||||
else
|
||||
htmldir="${with_html_dir}"
|
||||
AC_MSG_RESULT([${htmldir} (from parameter)])
|
||||
fi
|
||||
AC_SUBST(htmldir)
|
||||
|
||||
AC_ARG_WITH(xhtml-dir, [ --with-xhtml-dir=PATH Where to install xhtml docs [default=autodetect]])
|
||||
AC_MSG_CHECKING([for xhtml dir])
|
||||
if test "x${with_xhtml_dir}" = "x" ; then
|
||||
xhtmldir="${docdir}/xhtml"
|
||||
AC_MSG_RESULT([${xhtmldir} (default)])
|
||||
else
|
||||
xhtmldir="${with_xhtml_dir}"
|
||||
AC_MSG_RESULT([${xhtmldir} (from parameter)])
|
||||
fi
|
||||
AC_SUBST(xhtmldir)
|
||||
|
||||
AC_ARG_WITH(html-nochunks-dir, [ --with-html-nochunks-dir=PATH Where to install html-nochunks docs [default=autodetect]])
|
||||
AC_MSG_CHECKING([for html-nochunks dir])
|
||||
if test "x${with_html_nochunks_dir}" = "x" ; then
|
||||
htmlnochunksdir="${docdir}/html-nochunks"
|
||||
AC_MSG_RESULT([${htmlnochunksdir} (default)])
|
||||
else
|
||||
htmlnochunksdir="${with_html_nochunks_dir}"
|
||||
AC_MSG_RESULT([${htmlnochunksdir} (from parameter)])
|
||||
fi
|
||||
AC_SUBST(htmlnochunksdir)
|
||||
|
||||
AC_ARG_WITH(xhtml-nochunks-dir, [ --with-xhtml-nochunks-dir=PATH Where to install xhtml-nochunks docs [default=autodetect]])
|
||||
AC_MSG_CHECKING([for xhtml-nochunks dir])
|
||||
if test "x${with_xhtml_nochunks_dir}" = "x" ; then
|
||||
xhtmlnochunksdir="${docdir}/xhtml-nochunks"
|
||||
AC_MSG_RESULT([${xhtmlnochunksdir} (default)])
|
||||
else
|
||||
xhtmlnochunksdir="${with_xhtml_nochunks_dir}"
|
||||
AC_MSG_RESULT([${xhtmlnochunksdir} (from parameter)])
|
||||
fi
|
||||
AC_SUBST(xhtmlnochunksdir)
|
||||
|
||||
AC_ARG_WITH(xml-dir, [ --with-xml-dir=PATH Where to install xml docs [default=autodetect]])
|
||||
AC_MSG_CHECKING([for xml dir])
|
||||
if test "x${with_xml_dir}" = "x" ; then
|
||||
xmldir="${docdir}/xml"
|
||||
AC_MSG_RESULT([${xmldir} (default)])
|
||||
else
|
||||
xmldir="${with_xml_dir}"
|
||||
AC_MSG_RESULT([${xmldir} (from parameter)])
|
||||
fi
|
||||
AC_SUBST(xmldir)
|
||||
xmlcssdir="${xmldir}/css"
|
||||
AC_SUBST(xmlcssdir)
|
||||
|
||||
AC_ARG_WITH(txt-dir, [ --with-txt-dir=PATH Where to install txt docs [default=autodetect]])
|
||||
AC_MSG_CHECKING([for txt dir])
|
||||
if test "x${with_txt_dir}" = "x" ; then
|
||||
txtdir="${docdir}/txt"
|
||||
AC_MSG_RESULT([${txtdir} (default)])
|
||||
else
|
||||
txtdir="${with_txt_dir}"
|
||||
AC_MSG_RESULT([${txtdir} (from parameter)])
|
||||
fi
|
||||
AC_SUBST(txtdir)
|
||||
|
||||
AC_ARG_WITH(man-dir, [ --with-man-dir=PATH Where to install man docs [default=autodetect]])
|
||||
AC_MSG_CHECKING([for man dir])
|
||||
if test "x${with_man_dir}" = "x" ; then
|
||||
manmandir="${docdir}/man"
|
||||
AC_MSG_RESULT([${manmandir} (default)])
|
||||
else
|
||||
manmandir="${with_man_dir}"
|
||||
AC_MSG_RESULT([${manmandir} (from parameter)])
|
||||
fi
|
||||
AC_SUBST(manmandir)
|
||||
|
||||
AC_ARG_WITH(pdf-dir, [ --with-pdf-dir=PATH Where to install pdf docs [default=autodetect]])
|
||||
AC_MSG_CHECKING([for pdf dir])
|
||||
if test "x${with_pdf_dir}" = "x" ; then
|
||||
pdfdir="${docdir}/pdf"
|
||||
AC_MSG_RESULT([${pdfdir} (default)])
|
||||
else
|
||||
pdfdir="${with_pdf_dir}"
|
||||
AC_MSG_RESULT([${pdfdir} (from parameter)])
|
||||
fi
|
||||
AC_SUBST(pdfdir)
|
||||
|
||||
AC_ARG_WITH(ps-dir, [ --with-ps-dir=PATH Where to install ps docs [default=autodetect]])
|
||||
AC_MSG_CHECKING([for ps dir])
|
||||
if test "x${with_ps_dir}" = "x" ; then
|
||||
psdir="${docdir}/ps"
|
||||
AC_MSG_RESULT([${psdir} (default)])
|
||||
else
|
||||
psdir="${with_ps_dir}"
|
||||
AC_MSG_RESULT([${psdir} (from parameter)])
|
||||
fi
|
||||
AC_SUBST(psdir)
|
||||
|
||||
AC_ARG_WITH(figure-dir, [ --with-figure-dir=PATH Where to install figures [default=autodetect]])
|
||||
AC_MSG_CHECKING([for figure dir])
|
||||
if test "x${with_figure_dir}" = "x" ; then
|
||||
figuredir="${docdir}/figures"
|
||||
AC_MSG_RESULT([${figuredir} (default)])
|
||||
else
|
||||
figuredir="${with_figure_dir}"
|
||||
AC_MSG_RESULT([${figuredir} (from parameter)])
|
||||
fi
|
||||
AC_SUBST(figuredir)
|
||||
|
||||
AC_ARG_WITH(screenshots-dir, [ --with-screenshots-dir=PATH Where to install screenshotss [default=autodetect]])
|
||||
AC_MSG_CHECKING([for screenshots dir])
|
||||
if test "x${with_screenshots_dir}" = "x" ; then
|
||||
screenshotsdir="${docdir}/screenshots"
|
||||
AC_MSG_RESULT([${screenshotsdir} (default)])
|
||||
else
|
||||
screenshotsdir="${with_screenshots_dir}"
|
||||
AC_MSG_RESULT([${screenshotsdir} (from parameter)])
|
||||
fi
|
||||
AC_SUBST(screenshotsdir)
|
||||
screenshotsgtkamdir="${screenshotsdir}/gtkam"
|
||||
AC_SUBST(screenshotsgtkamdir)
|
||||
|
||||
doc_formats_list='man html txt ps pdf'
|
||||
|
||||
# initialize have_xmlto* to false
|
||||
for i in $doc_formats_list; do
|
||||
d=`echo $i | $TR A-Z a-z`
|
||||
eval "have_xmlto$d=false"
|
||||
done
|
||||
|
||||
AC_MSG_CHECKING(checking doc formats)
|
||||
AC_ARG_WITH(doc_formats,
|
||||
[ --with-doc-formats=<list> create doc with format in <list>; ]
|
||||
[ 'all' build all doc formats; ]
|
||||
[ possible formats are: ]
|
||||
[ man, html, ps, pdf ],
|
||||
doc_formats="$withval", doc_formats="man html txt")
|
||||
|
||||
if test "$doc_formats" = "all"; then
|
||||
doc_formats=$doc_formats_list
|
||||
else
|
||||
doc_formats=`echo $doc_formats | sed 's/,/ /g'`
|
||||
fi
|
||||
|
||||
# set have_xmlto* to true if requested and possible
|
||||
if $have_xmlto; then
|
||||
for i in $doc_formats; do
|
||||
if test -n "`echo $doc_formats_list | $GREP -E \"(^| )$i( |\$)\"`"; then
|
||||
eval "have_xmlto$i=true"
|
||||
else
|
||||
AC_ERROR(Unknown doc format $i!)
|
||||
fi
|
||||
done
|
||||
AC_MSG_RESULT($doc_formats)
|
||||
else
|
||||
AC_MSG_RESULT([deactivated (requires xmlto)])
|
||||
fi
|
||||
|
||||
# Make sure that xmltopdf actually works
|
||||
if $have_xmltopdf; then
|
||||
AC_MSG_CHECKING([whether pdf creation works])
|
||||
oldcwd="$(pwd)"
|
||||
top_srcdir() { echo "$srcdir"; }
|
||||
mkdir test-pdf
|
||||
cd test-pdf
|
||||
cat>test-db.xml<<EOF
|
||||
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
|
||||
<book id="foobook">
|
||||
<bookinfo>
|
||||
<title>Foo Title</title>
|
||||
</bookinfo>
|
||||
<chapter id="foochapter">
|
||||
<title>Foo Chapter</title>
|
||||
<para>
|
||||
Foo bar blah blah
|
||||
<!--ulink url="https://www.hypothetical-url.invalid/with&ersand">ampersand</ulink-->.
|
||||
</para>
|
||||
</chapter>
|
||||
</book>
|
||||
EOF
|
||||
${PURE_XMLTO} pdf -o . test-db.xml --searchpath ..
|
||||
if test -s test-db.pdf; then
|
||||
AC_MSG_RESULT([yes, look at $(pwd)/test-db.pdf to verify])
|
||||
else
|
||||
if $have_xmltopdf; then
|
||||
AC_MSG_ERROR([PDF creation requested, but failed. See $(pwd) ...])
|
||||
else
|
||||
AC_MSG_RESULT([no, but not requested])
|
||||
fi
|
||||
fi
|
||||
cd "$oldcwd"
|
||||
unset top_srcdir
|
||||
fi
|
||||
|
||||
AM_CONDITIONAL(XMLTOHTML,$have_xmltohtml)
|
||||
AM_CONDITIONAL(XMLTOMAN,$have_xmltoman)
|
||||
AM_CONDITIONAL(XMLTOTXT,$have_xmltotxt)
|
||||
AM_CONDITIONAL(XMLTOTXT2,$have_xmltotxt && $have_w3m)
|
||||
AM_CONDITIONAL(XMLTOPDF,$have_xmltopdf)
|
||||
AM_CONDITIONAL(XMLTOPS,$have_xmltops)
|
||||
|
||||
# create list of supported formats
|
||||
AC_MSG_CHECKING([for manual formats to recreate])
|
||||
xxx=""
|
||||
manual_html=""
|
||||
manual_pdf=""
|
||||
manual_ps=""
|
||||
if $have_xmltohtml; then
|
||||
xxx="${xxx} html"
|
||||
fi
|
||||
if $have_xmltoman; then
|
||||
xxx="${xxx} man"
|
||||
fi
|
||||
if $have_xmltopdf; then
|
||||
xxx="${xxx} pdf"
|
||||
fi
|
||||
if $have_xmltops; then
|
||||
xxx="${xxx} ps"
|
||||
fi
|
||||
if $have_xmltotxt; then
|
||||
xxx="${xxx} txt"
|
||||
fi
|
||||
AC_SUBST(manual_html)
|
||||
AC_SUBST(manual_pdf)
|
||||
AC_SUBST(manual_ps)
|
||||
AC_MSG_RESULT($xxx)
|
||||
|
||||
if test "x$xxx" != "x"
|
||||
then
|
||||
if $have_fig2dev; then
|
||||
fig_out=""
|
||||
else
|
||||
fig_out="out"
|
||||
fi
|
||||
manual_msg="in (${xxx} ) formats with${fig_out} figures"
|
||||
fi
|
||||
|
||||
])dnl
|
||||
40
gphoto-m4/gp-manual-fig2dev.m4
Normal file
40
gphoto-m4/gp-manual-fig2dev.m4
Normal file
@@ -0,0 +1,40 @@
|
||||
dnl ---------------------------------------------------------------------------
|
||||
dnl fig2dev: This program is needed for processing images. If not found,
|
||||
dnl documentation can still be built, but without figures.
|
||||
dnl ---------------------------------------------------------------------------
|
||||
AC_DEFUN([GP_CHECK_FIG2DEV],
|
||||
[
|
||||
|
||||
try_fig2dev=true
|
||||
have_fig2dev=false
|
||||
AC_ARG_WITH(fig2dev, [ --without-fig2dev Don't use fig2dev],[
|
||||
if test "x$withval" = "xno"; then
|
||||
try_fig2dev=false
|
||||
fi])
|
||||
if $try_fig2dev; then
|
||||
AC_PATH_PROG(FIG2DEV,fig2dev)
|
||||
if test -n "${FIG2DEV}"; then
|
||||
have_fig2dev=true
|
||||
fi
|
||||
fi
|
||||
if $have_fig2dev; then
|
||||
AC_SUBST(FIG2DEV)
|
||||
${FIG2DEV} -L ps > /dev/null <<EOF
|
||||
#FIG 3.2
|
||||
Landscape
|
||||
Center
|
||||
Inches
|
||||
Letter
|
||||
100.00
|
||||
Single
|
||||
-2
|
||||
1200 2
|
||||
1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 3000 3750 270 270 3000 3750 3150 3975
|
||||
EOF
|
||||
if test $? != 0; then
|
||||
have_fig2dev=false
|
||||
fi
|
||||
fi
|
||||
AM_CONDITIONAL(ENABLE_FIGURES, $have_fig2dev)
|
||||
|
||||
])
|
||||
49
gphoto-m4/gp-manual-graphviz.m4
Normal file
49
gphoto-m4/gp-manual-graphviz.m4
Normal file
@@ -0,0 +1,49 @@
|
||||
dnl ---------------------------------------------------------------------------
|
||||
dnl dot: This program is needed for processing images. If not found,
|
||||
dnl documentation can still be built, but without figures.
|
||||
dnl ---------------------------------------------------------------------------
|
||||
AC_DEFUN([GP_CHECK_DOT],
|
||||
[
|
||||
|
||||
try_dot=true
|
||||
have_dot=false
|
||||
AC_ARG_WITH(dot, AS_HELP_STRING([--without-dot], [Do not use dot]), [
|
||||
if test "x$withval" = "xno"; then
|
||||
try_dot=false
|
||||
fi])
|
||||
if $try_dot; then
|
||||
AC_PATH_PROG(DOT,dot)
|
||||
if test -n "${DOT}"; then
|
||||
have_dot=true
|
||||
fi
|
||||
fi
|
||||
if $have_dot; then
|
||||
AC_SUBST(DOT)
|
||||
AC_MSG_CHECKING([whether ${DOT} works])
|
||||
${DOT} -Tps -o tesseract.ps 2> /dev/null <<EOF
|
||||
graph tesseract {
|
||||
node [[shape=point]];
|
||||
o -- {a;b;c;d;}
|
||||
a -- {ab;ac;ad;}
|
||||
b -- {ab;bc;bd;}
|
||||
c -- {ac;bc;cd;}
|
||||
d -- {ad;bd;cd;}
|
||||
ab -- {abc;abd;}
|
||||
ac -- {abc;acd;}
|
||||
ad -- {abd;acd;}
|
||||
bc -- {abc;bcd;}
|
||||
bd -- {abd;bcd;}
|
||||
cd -- {acd;bcd;}
|
||||
{abc;abd;acd;bcd;} -- abcd;
|
||||
}
|
||||
EOF
|
||||
if test $? != 0 || test ! -f tesseract.ps; then
|
||||
have_dot=false
|
||||
AC_MSG_RESULT([no (see http://www.graphviz.org/ ...)])
|
||||
else
|
||||
AC_MSG_RESULT(yes)
|
||||
fi
|
||||
fi
|
||||
AM_CONDITIONAL(ENABLE_GRAPHS, $have_dot)
|
||||
|
||||
])
|
||||
24
gphoto-m4/gp-manual-gtk-doc.m4
Normal file
24
gphoto-m4/gp-manual-gtk-doc.m4
Normal file
@@ -0,0 +1,24 @@
|
||||
dnl ---------------------------------------------------------------------------
|
||||
dnl gtk-doc: We use gtk-doc for building our documentation. However, we
|
||||
dnl require the user to explicitely request the build.
|
||||
dnl ---------------------------------------------------------------------------
|
||||
AC_DEFUN([GP_CHECK_GTK_DOC],
|
||||
[
|
||||
try_gtkdoc=false
|
||||
gtkdoc_msg="no (not requested)"
|
||||
have_gtkdoc=false
|
||||
AC_ARG_ENABLE(docs, [ --enable-docs Use gtk-doc to build documentation [default=no]],[
|
||||
if test x$enableval = xyes; then
|
||||
try_gtkdoc=true
|
||||
fi])
|
||||
if $try_gtkdoc; then
|
||||
AC_PATH_PROG(GTKDOC,gtkdoc-mkdb)
|
||||
if test -n "${GTKDOC}"; then
|
||||
have_gtkdoc=true
|
||||
gtkdoc_msg="yes"
|
||||
else
|
||||
gtkdoc_msg="no (http://www.gtk.org/rdp/download.html)"
|
||||
fi
|
||||
fi
|
||||
AM_CONDITIONAL(ENABLE_GTK_DOC, $have_gtkdoc)
|
||||
])
|
||||
36
gphoto-m4/gp-manual-pstoimg.m4
Normal file
36
gphoto-m4/gp-manual-pstoimg.m4
Normal file
@@ -0,0 +1,36 @@
|
||||
dnl ---------------------------------------------------------------------------
|
||||
dnl pstoimg: This program is needed for processing images. If not found,
|
||||
dnl documentation can still be built, but without figures.
|
||||
dnl ---------------------------------------------------------------------------
|
||||
AC_DEFUN([GP_CHECK_PSTOIMG],
|
||||
[
|
||||
AC_REQUIRE([GP_CHECK_DOT])dnl for creating tesseract.ps
|
||||
|
||||
try_pstoimg=true
|
||||
have_pstoimg=false
|
||||
AC_ARG_WITH(pstoimg, AS_HELP_STRING([--without-pstoimg], [Do not use pstoimg]),[
|
||||
if test "x$withval" = "xno"; then
|
||||
try_pstoimg=false
|
||||
fi])
|
||||
if $try_pstoimg; then
|
||||
AC_PATH_PROG(PSTOIMG,pstoimg)
|
||||
if test -n "${PSTOIMG}"; then
|
||||
have_pstoimg=true
|
||||
fi
|
||||
fi
|
||||
if $have_pstoimg; then
|
||||
AC_SUBST(PSTOIMG)
|
||||
AC_MSG_CHECKING([whether ${PSTOIMG} works])
|
||||
rm -f tesseract.png
|
||||
${PSTOIMG} -type png -scale 1.2 -antialias -crop a tesseract.ps > /dev/null
|
||||
if test $? != 0 || test ! -f tesseract.png; then
|
||||
have_pstoimg=false
|
||||
AC_MSG_RESULT(no)
|
||||
else
|
||||
AC_MSG_RESULT(yes)
|
||||
fi
|
||||
rm -f tesseract.png
|
||||
fi
|
||||
AM_CONDITIONAL(ENABLE_PSTOIMG, $have_pstoimg)
|
||||
|
||||
])
|
||||
45
gphoto-m4/gp-manual-w3m.m4
Normal file
45
gphoto-m4/gp-manual-w3m.m4
Normal file
@@ -0,0 +1,45 @@
|
||||
dnl ---------------------------------------------------------------------------
|
||||
dnl w3m: This program is needed for converting HTML to text.
|
||||
dnl ---------------------------------------------------------------------------
|
||||
AC_DEFUN([GP_CHECK_W3M],
|
||||
[
|
||||
|
||||
try_w3m=true
|
||||
have_w3m=false
|
||||
AC_ARG_WITH(w3m, [ --without-w3m Don't use w3m],[
|
||||
if test "x$withval" = "xno"; then
|
||||
try_w3m=false
|
||||
fi])
|
||||
if $try_w3m; then
|
||||
AC_PATH_PROG(W3M,w3m)
|
||||
if test -n "${W3M}"; then
|
||||
have_w3m=true
|
||||
fi
|
||||
fi
|
||||
if $have_w3m; then
|
||||
AC_MSG_CHECKING([whether ${W3M} works])
|
||||
cat > html2text-test.xxxhtml 2> /dev/null <<EOF
|
||||
<html>
|
||||
<title>
|
||||
<h1>HTML2TEXT Test</h1>
|
||||
</title>
|
||||
<body>
|
||||
<p>This is a test.</p>
|
||||
</body>
|
||||
</html>
|
||||
EOF
|
||||
${W3M} -T text/html -cols 78 -dump html2text-test.xxxhtml > html2text-test.txt
|
||||
if test $? != 0 || test ! -f html2text-test.txt || test ! -s html2text-test.txt
|
||||
then
|
||||
have_w3m=false
|
||||
AC_MSG_RESULT([no (see http://www.w3m.org/ or http://w3m.sourceforge.net/ ...)])
|
||||
W3M=false
|
||||
AC_SUBST(W3M)
|
||||
else
|
||||
AC_MSG_RESULT([yes])
|
||||
AC_SUBST(W3M)
|
||||
fi
|
||||
fi
|
||||
AM_CONDITIONAL([HAVE_W3M], [$have_w3m])
|
||||
|
||||
])
|
||||
81
gphoto-m4/gp-packaging.m4
Normal file
81
gphoto-m4/gp-packaging.m4
Normal file
@@ -0,0 +1,81 @@
|
||||
AC_DEFUN([GPKG_CHECK_RPM],
|
||||
[
|
||||
AC_ARG_WITH([rpmbuild],
|
||||
[AS_HELP_STRING([--with-rpmbuild=PATH],
|
||||
[Program to use for building RPMs])])
|
||||
|
||||
AC_MSG_CHECKING([for rpmbuild or rpm])
|
||||
if test -x "${with_rpmbuild}"
|
||||
then
|
||||
RPMBUILD="${with_rpmbuild}"
|
||||
AC_MSG_RESULT([${RPMBUILD} (from parameter)])
|
||||
else
|
||||
AC_MSG_RESULT([using autodetection])
|
||||
AC_CHECK_PROGS(RPMBUILD, [rpmbuild rpm], false)
|
||||
AC_MSG_CHECKING([for rpmbuild or rpm])
|
||||
AC_MSG_RESULT([${RPMBUILD} (autodetected)])
|
||||
fi
|
||||
AC_SUBST([RPMBUILD])
|
||||
AM_CONDITIONAL([ENABLE_RPM], [test "$RPMBUILD" != "false"])
|
||||
|
||||
])
|
||||
|
||||
AC_DEFUN([GPKG_CHECK_LINUX],
|
||||
[
|
||||
# effective_target has to be determined in advance
|
||||
AC_REQUIRE([AC_NEED_BYTEORDER_H])
|
||||
|
||||
is_linux=false
|
||||
case "$effective_target" in
|
||||
*linux*)
|
||||
is_linux=true
|
||||
;;
|
||||
esac
|
||||
AM_CONDITIONAL([HAVE_LINUX], ["$is_linux"])
|
||||
|
||||
# required for docdir
|
||||
# FIXME: Implicit dependency
|
||||
# AC_REQUIRE(GP_CHECK_DOC_DIR)
|
||||
|
||||
AC_ARG_WITH([hotplug-doc-dir],
|
||||
[AS_HELP_STRING([--with-hotplug-doc-dir=PATH],
|
||||
[Where to install hotplug scripts as docs [default=autodetect]])])
|
||||
|
||||
if "$is_linux"; then
|
||||
AC_MSG_CHECKING([for hotplug doc dir])
|
||||
if test "x${with_hotplug_doc_dir}" != "x"
|
||||
then # given as parameter
|
||||
hotplugdocdir="${with_hotplug_doc_dir}"
|
||||
AC_MSG_RESULT([${hotplugdocdir} (from parameter)])
|
||||
else # start at docdir
|
||||
hotplugdocdir="${docdir}/linux-hotplug"
|
||||
AC_MSG_RESULT([${hotplugdocdir} (default)])
|
||||
fi
|
||||
else
|
||||
hotplugdocdir=""
|
||||
fi
|
||||
|
||||
AC_ARG_WITH([hotplug-usermap-dir],
|
||||
[AS_HELP_STRING([--with-hotplug-usermap-dir=PATH],
|
||||
[Where to install hotplug scripts as docs [default=autodetect]])])
|
||||
|
||||
if "$is_linux"; then
|
||||
AC_MSG_CHECKING([for hotplug usermap dir])
|
||||
if test "x${with_hotplug_usermap_dir}" != "x"
|
||||
then # given as parameter
|
||||
hotplugusermapdir="${with_hotplug_usermap_dir}"
|
||||
AC_MSG_RESULT([${hotplugusermapdir} (from parameter)])
|
||||
else # start at docdir
|
||||
hotplugusermapdir="${docdir}/linux-hotplug"
|
||||
AC_MSG_RESULT([${hotplugusermapdir} (default)])
|
||||
fi
|
||||
else
|
||||
hotplugusermapdir=""
|
||||
fi
|
||||
|
||||
# Let us hope that automake does not create "" directories
|
||||
# on non-Linux systems now.
|
||||
AC_SUBST([hotplugdocdir])
|
||||
AC_SUBST([hotplugusermapdir])
|
||||
])
|
||||
|
||||
42
gphoto-m4/gp-pkg-config.m4
Normal file
42
gphoto-m4/gp-pkg-config.m4
Normal file
@@ -0,0 +1,42 @@
|
||||
dnl @synopsis GP_PKG_CONFIG
|
||||
dnl
|
||||
dnl If you want to set the PKG_CONFIG_PATH, best do so before
|
||||
dnl calling GP_PKG_CONFIG
|
||||
AC_DEFUN([GP_PKG_CONFIG],[
|
||||
#
|
||||
# [GP_PKG_CONFIG]
|
||||
#
|
||||
AC_ARG_VAR([PKG_CONFIG],[pkg-config package config utility])
|
||||
export PKG_CONFIG
|
||||
AC_ARG_VAR([PKG_CONFIG_PATH],[directory where pkg-config looks for *.pc files])
|
||||
export PKG_CONFIG_PATH
|
||||
|
||||
AC_MSG_CHECKING([PKG_CONFIG_PATH])
|
||||
if test "x${PKG_CONFIG_PATH}" = "x"; then
|
||||
AC_MSG_RESULT([empty])
|
||||
else
|
||||
AC_MSG_RESULT([${PKG_CONFIG_PATH}])
|
||||
fi
|
||||
|
||||
dnl AC_REQUIRE([PKG_CHECK_MODULES])
|
||||
AC_PATH_PROG([PKG_CONFIG],[pkg-config],[false])
|
||||
if test "$PKG_CONFIG" = "false"; then
|
||||
AC_MSG_ERROR([
|
||||
*** Build requires pkg-config
|
||||
***
|
||||
*** Possible solutions:
|
||||
*** - set PKG_CONFIG to where your pkg-config is located
|
||||
*** - set PATH to include the directory where pkg-config is installed
|
||||
*** - get it from http://freedesktop.org/software/pkgconfig/ and install it
|
||||
])
|
||||
fi
|
||||
])dnl
|
||||
|
||||
dnl Please do not remove this:
|
||||
dnl filetype: d87b877b-80ec-447c-b042-21ec4a27c6f0
|
||||
dnl I use this to find all the different instances of this file which
|
||||
dnl are supposed to be synchronized.
|
||||
|
||||
dnl Local Variables:
|
||||
dnl mode: autoconf
|
||||
dnl End:
|
||||
48
gphoto-m4/gp-references.m4
Normal file
48
gphoto-m4/gp-references.m4
Normal file
@@ -0,0 +1,48 @@
|
||||
dnl
|
||||
dnl Define external references
|
||||
dnl
|
||||
dnl Define once, use many times.
|
||||
dnl No more URLs and Mail addresses in translated strings and stuff.
|
||||
dnl
|
||||
|
||||
AC_DEFUN([GP_REF],[
|
||||
AC_SUBST([$1],["$2"])
|
||||
AC_DEFINE_UNQUOTED([$1],["$2"],[$3])
|
||||
])
|
||||
|
||||
AC_DEFUN([GP_REFERENCES],
|
||||
[
|
||||
|
||||
GP_REF( [URL_GPHOTO_HOME],
|
||||
[http://www.gphoto.org/],
|
||||
[gphoto project home page])dnl
|
||||
|
||||
GP_REF( [URL_GPHOTO_PROJECT],
|
||||
[http://sourceforge.net/projects/gphoto],
|
||||
[gphoto sourceforge project page])
|
||||
|
||||
GP_REF( [URL_DIGICAM_LIST],
|
||||
[http://www.teaser.fr/~hfiguiere/linux/digicam.html],
|
||||
[camera list with support status])
|
||||
|
||||
GP_REF( [URL_JPHOTO_HOME],
|
||||
[http://jphoto.sourceforge.net/],
|
||||
[jphoto home page])
|
||||
|
||||
GP_REF( [URL_USB_MASSSTORAGE],
|
||||
[http://www.linux-usb.org/USB-guide/x498.html],
|
||||
[information about using USB mass storage])
|
||||
|
||||
GP_REF( [MAIL_GPHOTO_DEVEL],
|
||||
[<gphoto-devel@lists.sourceforge.net>],
|
||||
[gphoto development mailing list])
|
||||
|
||||
GP_REF( [MAIL_GPHOTO_USER],
|
||||
[<gphoto-user@lists.sourceforge.net>],
|
||||
[gphoto user mailing list])
|
||||
|
||||
GP_REF( [MAIL_GPHOTO_TRANSLATION],
|
||||
[<gphoto-translation@lists.sourceforge.net>],
|
||||
[gphoto translation mailing list])
|
||||
|
||||
])
|
||||
732
gphoto-m4/gp-stdint.m4
Normal file
732
gphoto-m4/gp-stdint.m4
Normal file
@@ -0,0 +1,732 @@
|
||||
dnl AC_NEED_STDINT_H ( HEADER-TO-GENERATE )
|
||||
dnl Originally written 2001 by Dan Fandrich <dan@coneharvesters.com>
|
||||
dnl My contribution is hereby placed into the public domain.
|
||||
dnl No warranty is expressed or implied.
|
||||
dnl
|
||||
dnl Look for a header file that defines size-specific integer types like the
|
||||
dnl ones recommended to be in stdint.h in the C99 standard (e.g. uint32_t).
|
||||
dnl This is a dumbed-down version of the macro of the same name in the file
|
||||
dnl ac_need_stdint_h.m4 which is part of the ac-archive, available at
|
||||
dnl <URL:http://ac-archive.sourceforge.net/> (also, another macro
|
||||
dnl AC_CREATE_STDINT_H by the same author). This version is not as smart,
|
||||
dnl but works on older autoconf versions and has a different license.
|
||||
|
||||
dnl AX_CHECK_DEFINED_TYPE ( TYPE, FILE, ACTION-IF-FOUND, ACTION-IF-NOT-FOUND )
|
||||
dnl This is similar to _AC_CHECK_TYPE_NEW (a.k.a. new syntax version of
|
||||
dnl AC_CHECK_TYPE) in autoconf 2.50 but works on older versions
|
||||
AC_DEFUN([AX_CHECK_DEFINED_TYPE],
|
||||
[AC_MSG_CHECKING([for $1 in $2])
|
||||
AC_EGREP_CPP(changequote(<<,>>)dnl
|
||||
<<(^|[^a-zA-Z_0-9])$1[^a-zA-Z_0-9]>>dnl
|
||||
changequote([,]), [#include <$2>],
|
||||
ac_cv_type_$1=yes, ac_cv_type_$1=no)dnl
|
||||
AC_MSG_RESULT($ac_cv_type_$1)
|
||||
if test $ac_cv_type_$1 = yes; then
|
||||
$3
|
||||
else
|
||||
$4
|
||||
fi
|
||||
])
|
||||
|
||||
dnl Look for a header file that defines size-specific integer types
|
||||
AC_DEFUN([AX_NEED_STDINT_H],
|
||||
[
|
||||
ac_dir=`AS_DIRNAME(["$1"])`
|
||||
if test "$ac_dir" != "$1" && test "$ac_dir" != .; then
|
||||
# The file is in a subdirectory.
|
||||
test ! -d "$ac_dir" && AS_MKDIR_P(["$ac_dir"])
|
||||
fi
|
||||
|
||||
AX_CHECK_DEFINED_TYPE(uint8_t,
|
||||
stdint.h,
|
||||
[
|
||||
cat > "$1" <<EOF
|
||||
/* This file is generated automatically by configure */
|
||||
#include <stdint.h>
|
||||
EOF],
|
||||
[AX_CHECK_DEFINED_TYPE(uint8_t,
|
||||
inttypes.h,
|
||||
[cat > "$1" <<EOF
|
||||
/* This file is generated automatically by configure */
|
||||
#include <inttypes.h>
|
||||
EOF],
|
||||
[AX_CHECK_DEFINED_TYPE(uint8_t,
|
||||
sys/types.h,
|
||||
[cat > "$1" <<EOF
|
||||
/* This file is generated automatically by configure */
|
||||
#include <sys/types.h>
|
||||
EOF],
|
||||
[AX_CHECK_DEFINED_TYPE(u_int8_t,
|
||||
sys/types.h,
|
||||
[cat > "$1" <<EOF
|
||||
/* This file is generated automatically by configure */
|
||||
#ifndef __STDINT_H
|
||||
#define __STDINT_H
|
||||
#include <sys/types.h>
|
||||
typedef u_int8_t uint8_t;
|
||||
typedef u_int16_t uint16_t;
|
||||
typedef u_int32_t uint32_t;
|
||||
EOF
|
||||
|
||||
AX_CHECK_DEFINED_TYPE(u_int64_t,
|
||||
sys/types.h,
|
||||
[cat >> "$1" <<EOF
|
||||
typedef u_int64_t uint64_t;
|
||||
#endif /*!__STDINT_H*/
|
||||
EOF],
|
||||
[cat >> "$1" <<EOF
|
||||
/* 64-bit types are not available on this system */
|
||||
/* typedef u_int64_t uint64_t; */
|
||||
#endif /*!__STDINT_H*/
|
||||
EOF])
|
||||
|
||||
],
|
||||
[AC_MSG_WARN([I can't find size-specific integer definitions on this system])
|
||||
if test -e "$1" ; then
|
||||
rm -f "$1"
|
||||
fi
|
||||
])])])])dnl
|
||||
])
|
||||
|
||||
AC_DEFUN([AX_CHECK_DATA_MODEL],[
|
||||
AC_CHECK_SIZEOF(char)
|
||||
AC_CHECK_SIZEOF(short)
|
||||
AC_CHECK_SIZEOF(int)
|
||||
AC_CHECK_SIZEOF(long)
|
||||
AC_CHECK_SIZEOF(void*)
|
||||
ac_cv_char_data_model=""
|
||||
ac_cv_char_data_model="$ac_cv_char_data_model$ac_cv_sizeof_char"
|
||||
ac_cv_char_data_model="$ac_cv_char_data_model$ac_cv_sizeof_short"
|
||||
ac_cv_char_data_model="$ac_cv_char_data_model$ac_cv_sizeof_int"
|
||||
ac_cv_long_data_model=""
|
||||
ac_cv_long_data_model="$ac_cv_long_data_model$ac_cv_sizeof_int"
|
||||
ac_cv_long_data_model="$ac_cv_long_data_model$ac_cv_sizeof_long"
|
||||
ac_cv_long_data_model="$ac_cv_long_data_model$ac_cv_sizeof_voidp"
|
||||
AC_MSG_CHECKING([data model])
|
||||
case "$ac_cv_char_data_model/$ac_cv_long_data_model" in
|
||||
122/242) ac_cv_data_model="IP16" ; n="standard 16bit machine" ;;
|
||||
122/244) ac_cv_data_model="LP32" ; n="standard 32bit machine" ;;
|
||||
122/*) ac_cv_data_model="i16" ; n="unusual int16 model" ;;
|
||||
124/444) ac_cv_data_model="ILP32" ; n="standard 32bit unixish" ;;
|
||||
124/488) ac_cv_data_model="LP64" ; n="standard 64bit unixish" ;;
|
||||
124/448) ac_cv_data_model="LLP64" ; n="unusual 64bit unixish" ;;
|
||||
124/*) ac_cv_data_model="i32" ; n="unusual int32 model" ;;
|
||||
128/888) ac_cv_data_model="ILP64" ; n="unusual 64bit numeric" ;;
|
||||
128/*) ac_cv_data_model="i64" ; n="unusual int64 model" ;;
|
||||
222/*2) ac_cv_data_model="DSP16" ; n="strict 16bit dsptype" ;;
|
||||
333/*3) ac_cv_data_model="DSP24" ; n="strict 24bit dsptype" ;;
|
||||
444/*4) ac_cv_data_model="DSP32" ; n="strict 32bit dsptype" ;;
|
||||
666/*6) ac_cv_data_model="DSP48" ; n="strict 48bit dsptype" ;;
|
||||
888/*8) ac_cv_data_model="DSP64" ; n="strict 64bit dsptype" ;;
|
||||
222/*|333/*|444/*|666/*|888/*) :
|
||||
ac_cv_data_model="iDSP" ; n="unusual dsptype" ;;
|
||||
*) ac_cv_data_model="none" ; n="very unusual model" ;;
|
||||
esac
|
||||
AC_MSG_RESULT([$ac_cv_data_model ($ac_cv_long_data_model, $n)])
|
||||
])
|
||||
|
||||
dnl AX_CHECK_HEADER_STDINT_X([HEADERLIST][,ACTION-IF])
|
||||
AC_DEFUN([AX_CHECK_HEADER_STDINT_X],[
|
||||
AC_CACHE_CHECK([for stdint uintptr_t], [ac_cv_header_stdint_x],[
|
||||
ac_cv_header_stdint_x="" # the 1997 typedefs (inttypes.h)
|
||||
AC_MSG_RESULT([(..)])
|
||||
for i in m4_ifval([$1],[$1],[stdint.h inttypes.h sys/inttypes.h]) ; do
|
||||
unset ac_cv_type_uintptr_t
|
||||
unset ac_cv_type_uint64_t
|
||||
AC_CHECK_TYPE(uintptr_t,[ac_cv_header_stdint_x=$i],continue,[#include <$i>])
|
||||
AC_CHECK_TYPE(uint64_t,[and64="/uint64_t"],[and64=""],[#include<$i>])
|
||||
m4_ifvaln([$1],[$1]) break
|
||||
done
|
||||
AC_MSG_CHECKING([for stdint uintptr_t])
|
||||
])
|
||||
])
|
||||
|
||||
AC_DEFUN([AX_CHECK_HEADER_STDINT_O],[
|
||||
AC_CACHE_CHECK([for stdint uint32_t], [ac_cv_header_stdint_o],[
|
||||
ac_cv_header_stdint_o="" # the 1995 typedefs (sys/inttypes.h)
|
||||
AC_MSG_RESULT([(..)])
|
||||
for i in m4_ifval([$1],[$1],[inttypes.h sys/inttypes.h stdint.h]) ; do
|
||||
unset ac_cv_type_uint32_t
|
||||
unset ac_cv_type_uint64_t
|
||||
AC_CHECK_TYPE(uint32_t,[ac_cv_header_stdint_o=$i],continue,[#include <$i>])
|
||||
AC_CHECK_TYPE(uint64_t,[and64="/uint64_t"],[and64=""],[#include<$i>])
|
||||
m4_ifvaln([$1],[$1]) break
|
||||
break;
|
||||
done
|
||||
AC_MSG_CHECKING([for stdint uint32_t])
|
||||
])
|
||||
])
|
||||
|
||||
AC_DEFUN([AX_CHECK_HEADER_STDINT_U],[
|
||||
AC_CACHE_CHECK([for stdint u_int32_t], [ac_cv_header_stdint_u],[
|
||||
ac_cv_header_stdint_u="" # the BSD typedefs (sys/types.h)
|
||||
AC_MSG_RESULT([(..)])
|
||||
for i in m4_ifval([$1],[$1],[sys/types.h inttypes.h sys/inttypes.h]) ; do
|
||||
unset ac_cv_type_u_int32_t
|
||||
unset ac_cv_type_u_int64_t
|
||||
AC_CHECK_TYPE(u_int32_t,[ac_cv_header_stdint_u=$i],continue,[#include <$i>])
|
||||
AC_CHECK_TYPE(u_int64_t,[and64="/u_int64_t"],[and64=""],[#include<$i>])
|
||||
m4_ifvaln([$1],[$1]) break
|
||||
break;
|
||||
done
|
||||
AC_MSG_CHECKING([for stdint u_int32_t])
|
||||
])
|
||||
])
|
||||
|
||||
AC_DEFUN([AX_CREATE_STDINT_H],
|
||||
[# ------ AX CREATE STDINT H -------------------------------------
|
||||
AC_MSG_CHECKING([for stdint types])
|
||||
ac_stdint_h=`echo ifelse($1, , _stdint.h, $1)`
|
||||
# try to shortcircuit - if the default include path of the compiler
|
||||
# can find a "stdint.h" header then we assume that all compilers can.
|
||||
AC_CACHE_VAL([ac_cv_header_stdint_t],[
|
||||
old_CXXFLAGS="$CXXFLAGS" ; CXXFLAGS=""
|
||||
old_CPPFLAGS="$CPPFLAGS" ; CPPFLAGS=""
|
||||
old_CFLAGS="$CFLAGS" ; CFLAGS=""
|
||||
AC_TRY_COMPILE([#include <stdint.h>],[int_least32_t v = 0;],
|
||||
[ac_cv_stdint_result="(assuming C99 compatible system)"
|
||||
ac_cv_header_stdint_t="stdint.h"; ],
|
||||
[ac_cv_header_stdint_t=""])
|
||||
CXXFLAGS="$old_CXXFLAGS"
|
||||
CPPFLAGS="$old_CPPFLAGS"
|
||||
CFLAGS="$old_CFLAGS" ])
|
||||
|
||||
v="... $ac_cv_header_stdint_h"
|
||||
if test "$ac_stdint_h" = "stdint.h" ; then
|
||||
AC_MSG_RESULT([(are you sure you want them in ./stdint.h?)])
|
||||
elif test "$ac_stdint_h" = "inttypes.h" ; then
|
||||
AC_MSG_RESULT([(are you sure you want them in ./inttypes.h?)])
|
||||
elif test "_$ac_cv_header_stdint_t" = "_" ; then
|
||||
AC_MSG_RESULT([(putting them into $ac_stdint_h)$v])
|
||||
else
|
||||
ac_cv_header_stdint="$ac_cv_header_stdint_t"
|
||||
AC_MSG_RESULT([$ac_cv_header_stdint (shortcircuit)])
|
||||
fi
|
||||
|
||||
if test "_$ac_cv_header_stdint_t" = "_" ; then # can not shortcircuit..
|
||||
|
||||
dnl .....intro message done, now do a few system checks.....
|
||||
dnl btw, all old CHECK_TYPE macros do automatically "DEFINE" a type,
|
||||
dnl therefore we use the autoconf implementation detail CHECK_TYPE_NEW
|
||||
dnl instead that is triggered with 3 or more arguments (see types.m4)
|
||||
|
||||
inttype_headers=`echo $2 | sed -e 's/,/ /g'`
|
||||
|
||||
ac_cv_stdint_result="(no helpful system typedefs seen)"
|
||||
AX_CHECK_HEADER_STDINT_X(dnl
|
||||
stdint.h inttypes.h sys/inttypes.h $inttype_headers,
|
||||
ac_cv_stdint_result="(seen uintptr_t$and64 in $i)")
|
||||
|
||||
if test "_$ac_cv_header_stdint_x" = "_" ; then
|
||||
AX_CHECK_HEADER_STDINT_O(dnl,
|
||||
inttypes.h sys/inttypes.h stdint.h $inttype_headers,
|
||||
ac_cv_stdint_result="(seen uint32_t$and64 in $i)")
|
||||
fi
|
||||
|
||||
if test "_$ac_cv_header_stdint_x" = "_" ; then
|
||||
if test "_$ac_cv_header_stdint_o" = "_" ; then
|
||||
AX_CHECK_HEADER_STDINT_U(dnl,
|
||||
sys/types.h inttypes.h sys/inttypes.h $inttype_headers,
|
||||
ac_cv_stdint_result="(seen u_int32_t$and64 in $i)")
|
||||
fi fi
|
||||
|
||||
dnl if there was no good C99 header file, do some typedef checks...
|
||||
if test "_$ac_cv_header_stdint_x" = "_" ; then
|
||||
AC_MSG_CHECKING([for stdint datatype model])
|
||||
AC_MSG_RESULT([(..)])
|
||||
AX_CHECK_DATA_MODEL
|
||||
fi
|
||||
|
||||
if test "_$ac_cv_header_stdint_x" != "_" ; then
|
||||
ac_cv_header_stdint="$ac_cv_header_stdint_x"
|
||||
elif test "_$ac_cv_header_stdint_o" != "_" ; then
|
||||
ac_cv_header_stdint="$ac_cv_header_stdint_o"
|
||||
elif test "_$ac_cv_header_stdint_u" != "_" ; then
|
||||
ac_cv_header_stdint="$ac_cv_header_stdint_u"
|
||||
else
|
||||
ac_cv_header_stdint="stddef.h"
|
||||
fi
|
||||
|
||||
AC_MSG_CHECKING([for extra inttypes in chosen header])
|
||||
AC_MSG_RESULT([($ac_cv_header_stdint)])
|
||||
dnl see if int_least and int_fast types are present in _this_ header.
|
||||
unset ac_cv_type_int_least32_t
|
||||
unset ac_cv_type_int_fast32_t
|
||||
AC_CHECK_TYPE(int_least32_t,,,[#include <$ac_cv_header_stdint>])
|
||||
AC_CHECK_TYPE(int_fast32_t,,,[#include<$ac_cv_header_stdint>])
|
||||
AC_CHECK_TYPE(intmax_t,,,[#include <$ac_cv_header_stdint>])
|
||||
|
||||
fi # shortcircut to system "stdint.h"
|
||||
# ------------------ PREPARE VARIABLES ------------------------------
|
||||
if test "$GCC" = "yes" ; then
|
||||
ac_cv_stdint_message="using gnu compiler "`$CC --version | head -1`
|
||||
else
|
||||
ac_cv_stdint_message="using $CC"
|
||||
fi
|
||||
|
||||
AC_MSG_RESULT([make use of $ac_cv_header_stdint in $ac_stdint_h dnl
|
||||
$ac_cv_stdint_result])
|
||||
|
||||
dnl -----------------------------------------------------------------
|
||||
# ----------------- DONE inttypes.h checks START header -------------
|
||||
AC_CONFIG_COMMANDS([$ac_stdint_h],[
|
||||
AC_MSG_NOTICE(creating $ac_stdint_h : $_ac_stdint_h)
|
||||
ac_stdint=$tmp/_stdint.h
|
||||
|
||||
echo "#ifndef" $_ac_stdint_h >$ac_stdint
|
||||
echo "#define" $_ac_stdint_h "1" >>$ac_stdint
|
||||
echo "#ifndef" _GENERATED_STDINT_H >>$ac_stdint
|
||||
echo "#define" _GENERATED_STDINT_H '"'$PACKAGE $VERSION'"' >>$ac_stdint
|
||||
echo "/* generated $ac_cv_stdint_message */" >>$ac_stdint
|
||||
if test "_$ac_cv_header_stdint_t" != "_" ; then
|
||||
echo "#define _STDINT_HAVE_STDINT_H" "1" >>$ac_stdint
|
||||
echo "#include <stdint.h>" >>$ac_stdint
|
||||
echo "#endif" >>$ac_stdint
|
||||
echo "#endif" >>$ac_stdint
|
||||
else
|
||||
|
||||
cat >>$ac_stdint <<STDINT_EOF
|
||||
|
||||
/* ................... shortcircuit part ........................... */
|
||||
|
||||
#if defined HAVE_STDINT_H || defined _STDINT_HAVE_STDINT_H
|
||||
#include <stdint.h>
|
||||
#else
|
||||
#include <stddef.h>
|
||||
|
||||
/* .................... configured part ............................ */
|
||||
|
||||
STDINT_EOF
|
||||
|
||||
echo "/* whether we have a C99 compatible stdint header file */" >>$ac_stdint
|
||||
if test "_$ac_cv_header_stdint_x" != "_" ; then
|
||||
ac_header="$ac_cv_header_stdint_x"
|
||||
echo "#define _STDINT_HEADER_INTPTR" '"'"$ac_header"'"' >>$ac_stdint
|
||||
else
|
||||
echo "/* #undef _STDINT_HEADER_INTPTR */" >>$ac_stdint
|
||||
fi
|
||||
|
||||
echo "/* whether we have a C96 compatible inttypes header file */" >>$ac_stdint
|
||||
if test "_$ac_cv_header_stdint_o" != "_" ; then
|
||||
ac_header="$ac_cv_header_stdint_o"
|
||||
echo "#define _STDINT_HEADER_UINT32" '"'"$ac_header"'"' >>$ac_stdint
|
||||
else
|
||||
echo "/* #undef _STDINT_HEADER_UINT32 */" >>$ac_stdint
|
||||
fi
|
||||
|
||||
echo "/* whether we have a BSD compatible inet types header */" >>$ac_stdint
|
||||
if test "_$ac_cv_header_stdint_u" != "_" ; then
|
||||
ac_header="$ac_cv_header_stdint_u"
|
||||
echo "#define _STDINT_HEADER_U_INT32" '"'"$ac_header"'"' >>$ac_stdint
|
||||
else
|
||||
echo "/* #undef _STDINT_HEADER_U_INT32 */" >>$ac_stdint
|
||||
fi
|
||||
|
||||
echo "" >>$ac_stdint
|
||||
|
||||
if test "_$ac_header" != "_" ; then if test "$ac_header" != "stddef.h" ; then
|
||||
echo "#include <$ac_header>" >>$ac_stdint
|
||||
echo "" >>$ac_stdint
|
||||
fi fi
|
||||
|
||||
echo "/* which 64bit typedef has been found */" >>$ac_stdint
|
||||
if test "$ac_cv_type_uint64_t" = "yes" ; then
|
||||
echo "#define _STDINT_HAVE_UINT64_T" "1" >>$ac_stdint
|
||||
else
|
||||
echo "/* #undef _STDINT_HAVE_UINT64_T */" >>$ac_stdint
|
||||
fi
|
||||
if test "$ac_cv_type_u_int64_t" = "yes" ; then
|
||||
echo "#define _STDINT_HAVE_U_INT64_T" "1" >>$ac_stdint
|
||||
else
|
||||
echo "/* #undef _STDINT_HAVE_U_INT64_T */" >>$ac_stdint
|
||||
fi
|
||||
echo "" >>$ac_stdint
|
||||
|
||||
echo "/* which type model has been detected */" >>$ac_stdint
|
||||
if test "_$ac_cv_char_data_model" != "_" ; then
|
||||
echo "#define _STDINT_CHAR_MODEL" "$ac_cv_char_data_model" >>$ac_stdint
|
||||
echo "#define _STDINT_LONG_MODEL" "$ac_cv_long_data_model" >>$ac_stdint
|
||||
else
|
||||
echo "/* #undef _STDINT_CHAR_MODEL // skipped */" >>$ac_stdint
|
||||
echo "/* #undef _STDINT_LONG_MODEL // skipped */" >>$ac_stdint
|
||||
fi
|
||||
echo "" >>$ac_stdint
|
||||
|
||||
echo "/* whether int_least types were detected */" >>$ac_stdint
|
||||
if test "$ac_cv_type_int_least32_t" = "yes"; then
|
||||
echo "#define _STDINT_HAVE_INT_LEAST32_T" "1" >>$ac_stdint
|
||||
else
|
||||
echo "/* #undef _STDINT_HAVE_INT_LEAST32_T */" >>$ac_stdint
|
||||
fi
|
||||
echo "/* whether int_fast types were detected */" >>$ac_stdint
|
||||
if test "$ac_cv_type_int_fast32_t" = "yes"; then
|
||||
echo "#define _STDINT_HAVE_INT_FAST32_T" "1" >>$ac_stdint
|
||||
else
|
||||
echo "/* #undef _STDINT_HAVE_INT_FAST32_T */" >>$ac_stdint
|
||||
fi
|
||||
echo "/* whether intmax_t type was detected */" >>$ac_stdint
|
||||
if test "$ac_cv_type_intmax_t" = "yes"; then
|
||||
echo "#define _STDINT_HAVE_INTMAX_T" "1" >>$ac_stdint
|
||||
else
|
||||
echo "/* #undef _STDINT_HAVE_INTMAX_T */" >>$ac_stdint
|
||||
fi
|
||||
echo "" >>$ac_stdint
|
||||
|
||||
cat >>$ac_stdint <<STDINT_EOF
|
||||
/* .................... detections part ............................ */
|
||||
|
||||
/* whether we need to define bitspecific types from compiler base types */
|
||||
#ifndef _STDINT_HEADER_INTPTR
|
||||
#ifndef _STDINT_HEADER_UINT32
|
||||
#ifndef _STDINT_HEADER_U_INT32
|
||||
#define _STDINT_NEED_INT_MODEL_T
|
||||
#else
|
||||
#define _STDINT_HAVE_U_INT_TYPES
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef _STDINT_HAVE_U_INT_TYPES
|
||||
#undef _STDINT_NEED_INT_MODEL_T
|
||||
#endif
|
||||
|
||||
#ifdef _STDINT_CHAR_MODEL
|
||||
#if _STDINT_CHAR_MODEL+0 == 122 || _STDINT_CHAR_MODEL+0 == 124
|
||||
#ifndef _STDINT_BYTE_MODEL
|
||||
#define _STDINT_BYTE_MODEL 12
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef _STDINT_HAVE_INT_LEAST32_T
|
||||
#define _STDINT_NEED_INT_LEAST_T
|
||||
#endif
|
||||
|
||||
#ifndef _STDINT_HAVE_INT_FAST32_T
|
||||
#define _STDINT_NEED_INT_FAST_T
|
||||
#endif
|
||||
|
||||
#ifndef _STDINT_HEADER_INTPTR
|
||||
#define _STDINT_NEED_INTPTR_T
|
||||
#ifndef _STDINT_HAVE_INTMAX_T
|
||||
#define _STDINT_NEED_INTMAX_T
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
/* .................... definition part ............................ */
|
||||
|
||||
/* some system headers have good uint64_t */
|
||||
#ifndef _HAVE_UINT64_T
|
||||
#if defined _STDINT_HAVE_UINT64_T || defined HAVE_UINT64_T
|
||||
#define _HAVE_UINT64_T
|
||||
#elif defined _STDINT_HAVE_U_INT64_T || defined HAVE_U_INT64_T
|
||||
#define _HAVE_UINT64_T
|
||||
typedef u_int64_t uint64_t;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef _HAVE_UINT64_T
|
||||
/* .. here are some common heuristics using compiler runtime specifics */
|
||||
#if defined __STDC_VERSION__ && defined __STDC_VERSION__ >= 199901L
|
||||
#define _HAVE_UINT64_T
|
||||
#define _HAVE_LONGLONG_UINT64_T
|
||||
typedef long long int64_t;
|
||||
typedef unsigned long long uint64_t;
|
||||
|
||||
#elif !defined __STRICT_ANSI__
|
||||
#if defined _MSC_VER || defined __WATCOMC__ || defined __BORLANDC__
|
||||
#define _HAVE_UINT64_T
|
||||
typedef __int64 int64_t;
|
||||
typedef unsigned __int64 uint64_t;
|
||||
|
||||
#elif defined __GNUC__ || defined __MWERKS__ || defined __ELF__
|
||||
/* note: all ELF-systems seem to have loff-support which needs 64-bit */
|
||||
#if !defined _NO_LONGLONG
|
||||
#define _HAVE_UINT64_T
|
||||
#define _HAVE_LONGLONG_UINT64_T
|
||||
typedef long long int64_t;
|
||||
typedef unsigned long long uint64_t;
|
||||
#endif
|
||||
|
||||
#elif defined __alpha || (defined __mips && defined _ABIN32)
|
||||
#if !defined _NO_LONGLONG
|
||||
typedef long int64_t;
|
||||
typedef unsigned long uint64_t;
|
||||
#endif
|
||||
/* compiler/cpu type to define int64_t */
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined _STDINT_HAVE_U_INT_TYPES
|
||||
/* int8_t int16_t int32_t defined by inet code, redeclare the u_intXX types */
|
||||
typedef u_int8_t uint8_t;
|
||||
typedef u_int16_t uint16_t;
|
||||
typedef u_int32_t uint32_t;
|
||||
|
||||
/* glibc compatibility */
|
||||
#ifndef __int8_t_defined
|
||||
#define __int8_t_defined
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef _STDINT_NEED_INT_MODEL_T
|
||||
/* we must guess all the basic types. Apart from byte-adressable system, */
|
||||
/* there a few 32-bit-only dsp-systems that we guard with BYTE_MODEL 8-} */
|
||||
/* (btw, those nibble-addressable systems are way off, or so we assume) */
|
||||
|
||||
dnl /* have a look at "64bit and data size neutrality" at */
|
||||
dnl /* http://unix.org/version2/whatsnew/login_64bit.html */
|
||||
dnl /* (the shorthand "ILP" types always have a "P" part) */
|
||||
|
||||
#if defined _STDINT_BYTE_MODEL
|
||||
#if _STDINT_LONG_MODEL+0 == 242
|
||||
/* 2:4:2 = IP16 = a normal 16-bit system */
|
||||
typedef unsigned char uint8_t;
|
||||
typedef unsigned short uint16_t;
|
||||
typedef unsigned long uint32_t;
|
||||
#ifndef __int8_t_defined
|
||||
#define __int8_t_defined
|
||||
typedef char int8_t;
|
||||
typedef short int16_t;
|
||||
typedef long int32_t;
|
||||
#endif
|
||||
#elif _STDINT_LONG_MODEL+0 == 244 || _STDINT_LONG_MODEL == 444
|
||||
/* 2:4:4 = LP32 = a 32-bit system derived from a 16-bit */
|
||||
/* 4:4:4 = ILP32 = a normal 32-bit system */
|
||||
typedef unsigned char uint8_t;
|
||||
typedef unsigned short uint16_t;
|
||||
typedef unsigned int uint32_t;
|
||||
#ifndef __int8_t_defined
|
||||
#define __int8_t_defined
|
||||
typedef char int8_t;
|
||||
typedef short int16_t;
|
||||
typedef int int32_t;
|
||||
#endif
|
||||
#elif _STDINT_LONG_MODEL+0 == 484 || _STDINT_LONG_MODEL+0 == 488
|
||||
/* 4:8:4 = IP32 = a 32-bit system prepared for 64-bit */
|
||||
/* 4:8:8 = LP64 = a normal 64-bit system */
|
||||
typedef unsigned char uint8_t;
|
||||
typedef unsigned short uint16_t;
|
||||
typedef unsigned int uint32_t;
|
||||
#ifndef __int8_t_defined
|
||||
#define __int8_t_defined
|
||||
typedef char int8_t;
|
||||
typedef short int16_t;
|
||||
typedef int int32_t;
|
||||
#endif
|
||||
/* this system has a "long" of 64bit */
|
||||
#ifndef _HAVE_UINT64_T
|
||||
#define _HAVE_UINT64_T
|
||||
typedef unsigned long uint64_t;
|
||||
typedef long int64_t;
|
||||
#endif
|
||||
#elif _STDINT_LONG_MODEL+0 == 448
|
||||
/* LLP64 a 64-bit system derived from a 32-bit system */
|
||||
typedef unsigned char uint8_t;
|
||||
typedef unsigned short uint16_t;
|
||||
typedef unsigned int uint32_t;
|
||||
#ifndef __int8_t_defined
|
||||
#define __int8_t_defined
|
||||
typedef char int8_t;
|
||||
typedef short int16_t;
|
||||
typedef int int32_t;
|
||||
#endif
|
||||
/* assuming the system has a "long long" */
|
||||
#ifndef _HAVE_UINT64_T
|
||||
#define _HAVE_UINT64_T
|
||||
#define _HAVE_LONGLONG_UINT64_T
|
||||
typedef unsigned long long uint64_t;
|
||||
typedef long long int64_t;
|
||||
#endif
|
||||
#else
|
||||
#define _STDINT_NO_INT32_T
|
||||
#endif
|
||||
#else
|
||||
#define _STDINT_NO_INT8_T
|
||||
#define _STDINT_NO_INT32_T
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
* quote from SunOS-5.8 sys/inttypes.h:
|
||||
* Use at your own risk. As of February 1996, the committee is squarely
|
||||
* behind the fixed sized types; the "least" and "fast" types are still being
|
||||
* discussed. The probability that the "fast" types may be removed before
|
||||
* the standard is finalized is high enough that they are not currently
|
||||
* implemented.
|
||||
*/
|
||||
|
||||
#if defined _STDINT_NEED_INT_LEAST_T
|
||||
typedef int8_t int_least8_t;
|
||||
typedef int16_t int_least16_t;
|
||||
typedef int32_t int_least32_t;
|
||||
#ifdef _HAVE_UINT64_T
|
||||
typedef int64_t int_least64_t;
|
||||
#endif
|
||||
|
||||
typedef uint8_t uint_least8_t;
|
||||
typedef uint16_t uint_least16_t;
|
||||
typedef uint32_t uint_least32_t;
|
||||
#ifdef _HAVE_UINT64_T
|
||||
typedef uint64_t uint_least64_t;
|
||||
#endif
|
||||
/* least types */
|
||||
#endif
|
||||
|
||||
#if defined _STDINT_NEED_INT_FAST_T
|
||||
typedef int8_t int_fast8_t;
|
||||
typedef int int_fast16_t;
|
||||
typedef int32_t int_fast32_t;
|
||||
#ifdef _HAVE_UINT64_T
|
||||
typedef int64_t int_fast64_t;
|
||||
#endif
|
||||
|
||||
typedef uint8_t uint_fast8_t;
|
||||
typedef unsigned uint_fast16_t;
|
||||
typedef uint32_t uint_fast32_t;
|
||||
#ifdef _HAVE_UINT64_T
|
||||
typedef uint64_t uint_fast64_t;
|
||||
#endif
|
||||
/* fast types */
|
||||
#endif
|
||||
|
||||
#ifdef _STDINT_NEED_INTMAX_T
|
||||
#ifdef _HAVE_UINT64_T
|
||||
typedef int64_t intmax_t;
|
||||
typedef uint64_t uintmax_t;
|
||||
#else
|
||||
typedef long intmax_t;
|
||||
typedef unsigned long uintmax_t;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef _STDINT_NEED_INTPTR_T
|
||||
#ifndef __intptr_t_defined
|
||||
#define __intptr_t_defined
|
||||
/* we encourage using "long" to store pointer values, never use "int" ! */
|
||||
#if _STDINT_LONG_MODEL+0 == 242 || _STDINT_LONG_MODEL+0 == 484
|
||||
typedef unsinged int uintptr_t;
|
||||
typedef int intptr_t;
|
||||
#elif _STDINT_LONG_MODEL+0 == 244 || _STDINT_LONG_MODEL+0 == 444
|
||||
typedef unsigned long uintptr_t;
|
||||
typedef long intptr_t;
|
||||
#elif _STDINT_LONG_MODEL+0 == 448 && defined _HAVE_UINT64_T
|
||||
typedef uint64_t uintptr_t;
|
||||
typedef int64_t intptr_t;
|
||||
#else /* matches typical system types ILP32 and LP64 - but not IP16 or LLP64 */
|
||||
typedef unsigned long uintptr_t;
|
||||
typedef long intptr_t;
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* The ISO C99 standard specifies that in C++ implementations these
|
||||
should only be defined if explicitly requested. */
|
||||
#if !defined __cplusplus || defined __STDC_CONSTANT_MACROS
|
||||
#ifndef UINT32_C
|
||||
|
||||
/* Signed. */
|
||||
# define INT8_C(c) c
|
||||
# define INT16_C(c) c
|
||||
# define INT32_C(c) c
|
||||
# ifdef _HAVE_LONGLONG_UINT64_T
|
||||
# define INT64_C(c) c ## L
|
||||
# else
|
||||
# define INT64_C(c) c ## LL
|
||||
# endif
|
||||
|
||||
/* Unsigned. */
|
||||
# define UINT8_C(c) c ## U
|
||||
# define UINT16_C(c) c ## U
|
||||
# define UINT32_C(c) c ## U
|
||||
# ifdef _HAVE_LONGLONG_UINT64_T
|
||||
# define UINT64_C(c) c ## UL
|
||||
# else
|
||||
# define UINT64_C(c) c ## ULL
|
||||
# endif
|
||||
|
||||
/* Maximal type. */
|
||||
# ifdef _HAVE_LONGLONG_UINT64_T
|
||||
# define INTMAX_C(c) c ## L
|
||||
# define UINTMAX_C(c) c ## UL
|
||||
# else
|
||||
# define INTMAX_C(c) c ## LL
|
||||
# define UINTMAX_C(c) c ## ULL
|
||||
# endif
|
||||
|
||||
/* literalnumbers */
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* These limits are merily those of a two complement byte-oriented system */
|
||||
|
||||
/* Minimum of signed integral types. */
|
||||
# define INT8_MIN (-128)
|
||||
# define INT16_MIN (-32767-1)
|
||||
# define INT32_MIN (-2147483647-1)
|
||||
# define INT64_MIN (-__INT64_C(9223372036854775807)-1)
|
||||
/* Maximum of signed integral types. */
|
||||
# define INT8_MAX (127)
|
||||
# define INT16_MAX (32767)
|
||||
# define INT32_MAX (2147483647)
|
||||
# define INT64_MAX (__INT64_C(9223372036854775807))
|
||||
|
||||
/* Maximum of unsigned integral types. */
|
||||
# define UINT8_MAX (255)
|
||||
# define UINT16_MAX (65535)
|
||||
# define UINT32_MAX (4294967295U)
|
||||
# define UINT64_MAX (__UINT64_C(18446744073709551615))
|
||||
|
||||
/* Minimum of signed integral types having a minimum size. */
|
||||
# define INT_LEAST8_MIN INT8_MIN
|
||||
# define INT_LEAST16_MIN INT16_MIN
|
||||
# define INT_LEAST32_MIN INT32_MIN
|
||||
# define INT_LEAST64_MIN INT64_MIN
|
||||
/* Maximum of signed integral types having a minimum size. */
|
||||
# define INT_LEAST8_MAX INT8_MAX
|
||||
# define INT_LEAST16_MAX INT16_MAX
|
||||
# define INT_LEAST32_MAX INT32_MAX
|
||||
# define INT_LEAST64_MAX INT64_MAX
|
||||
|
||||
/* Maximum of unsigned integral types having a minimum size. */
|
||||
# define UINT_LEAST8_MAX UINT8_MAX
|
||||
# define UINT_LEAST16_MAX UINT16_MAX
|
||||
# define UINT_LEAST32_MAX UINT32_MAX
|
||||
# define UINT_LEAST64_MAX UINT64_MAX
|
||||
|
||||
/* shortcircuit*/
|
||||
#endif
|
||||
/* once */
|
||||
#endif
|
||||
#endif
|
||||
STDINT_EOF
|
||||
fi
|
||||
if cmp -s $ac_stdint_h $ac_stdint 2>/dev/null; then
|
||||
AC_MSG_NOTICE([$ac_stdint_h is unchanged])
|
||||
else
|
||||
ac_dir=`AS_DIRNAME(["$ac_stdint_h"])`
|
||||
AS_MKDIR_P(["$ac_dir"])
|
||||
rm -f $ac_stdint_h
|
||||
mv $ac_stdint $ac_stdint_h
|
||||
fi
|
||||
],[# variables for create stdint.h replacement
|
||||
PACKAGE="$PACKAGE"
|
||||
VERSION="$VERSION"
|
||||
ac_stdint_h="$ac_stdint_h"
|
||||
_ac_stdint_h=AS_TR_CPP(_$PACKAGE-$ac_stdint_h)
|
||||
ac_cv_stdint_message="$ac_cv_stdint_message"
|
||||
ac_cv_header_stdint_t="$ac_cv_header_stdint_t"
|
||||
ac_cv_header_stdint_x="$ac_cv_header_stdint_x"
|
||||
ac_cv_header_stdint_o="$ac_cv_header_stdint_o"
|
||||
ac_cv_header_stdint_u="$ac_cv_header_stdint_u"
|
||||
ac_cv_type_uint64_t="$ac_cv_type_uint64_t"
|
||||
ac_cv_type_u_int64_t="$ac_cv_type_u_int64_t"
|
||||
ac_cv_char_data_model="$ac_cv_char_data_model"
|
||||
ac_cv_long_data_model="$ac_cv_long_data_model"
|
||||
ac_cv_type_int_least32_t="$ac_cv_type_int_least32_t"
|
||||
ac_cv_type_int_fast32_t="$ac_cv_type_int_fast32_t"
|
||||
ac_cv_type_intmax_t="$ac_cv_type_intmax_t"
|
||||
])
|
||||
])
|
||||
5
gphoto-m4/gp-subpackage.m4
Normal file
5
gphoto-m4/gp-subpackage.m4
Normal file
@@ -0,0 +1,5 @@
|
||||
AC_DEFUN([GP_SUBPACKAGE],
|
||||
[
|
||||
AC_ARG_VAR([enable_subpackage_][$1], [enable subpackage ][$1][ (true or false)])
|
||||
test "x${[enable_subpackage_][$1]}" = "x" && [enable_subpackage_][$1]=true
|
||||
])dnl
|
||||
9
gphoto-m4/gp-udev.m4
Normal file
9
gphoto-m4/gp-udev.m4
Normal file
@@ -0,0 +1,9 @@
|
||||
dnl Determines whether UDEV code should be compiled.
|
||||
dnl $1 contains shell code that returns 0 if all other prerequisites (like
|
||||
dnl libusb) are available.
|
||||
AC_DEFUN([GP_UDEV],[dnl
|
||||
if test "x${udevscriptdir}" = "x"; then udevscriptdir="\${libdir}/udev"; fi
|
||||
AC_ARG_VAR([udevscriptdir],[Directory where udev scripts like check-ptp-camera will be installed])
|
||||
AC_SUBST([udevscriptdir])
|
||||
AM_CONDITIONAL([HAVE_UDEV],[if echo "$host"|grep -i linux >/dev/null ; then $1; fi ])
|
||||
])dnl
|
||||
57
gphoto-m4/gp-va-copy.m4
Normal file
57
gphoto-m4/gp-va-copy.m4
Normal file
@@ -0,0 +1,57 @@
|
||||
dnl @synopsis GP_VA_COPY
|
||||
dnl
|
||||
dnl Checks whether one of these compiles and links:
|
||||
dnl 1. va_copy()
|
||||
dnl 2. __va_copy()
|
||||
dnl 3. fallback
|
||||
dnl
|
||||
dnl In case of 1 or 2, AC_DEFINE(HAVE_VA_COPY).
|
||||
dnl In case of 2, AC_DEFINE(va_copy,__va_copy)
|
||||
dnl
|
||||
dnl In code, use it like this
|
||||
dnl #ifdef HAVE_VA_COPY
|
||||
dnl ... code with va_copy ...
|
||||
dnl #else
|
||||
dnl ... code without va_copy or with error ...
|
||||
dnl #endif
|
||||
dnl
|
||||
AC_DEFUN([GP_VA_COPY],[dnl
|
||||
dnl
|
||||
AC_CHECK_HEADER([stdarg.h],[],[
|
||||
AC_MSG_ERROR([
|
||||
Building $PACKAGE_NAME requires <stdarg.h>.
|
||||
])
|
||||
])
|
||||
dnl
|
||||
have_va_copy=no
|
||||
AC_TRY_LINK([
|
||||
#include <stdarg.h>
|
||||
],[
|
||||
va_list a,b;
|
||||
va_copy(a,b);
|
||||
],[
|
||||
have_va_copy="va_copy"
|
||||
],[
|
||||
AC_TRY_LINK([
|
||||
#include <stdarg.h>
|
||||
],[
|
||||
va_list a,b;
|
||||
__va_copy(a,b);
|
||||
],[
|
||||
have_va_copy="__va_copy"
|
||||
AC_DEFINE([va_copy],[__va_copy],[__va_copy() was the originally proposed name])
|
||||
])
|
||||
])
|
||||
dnl
|
||||
AC_MSG_CHECKING([for va_copy() or replacement])
|
||||
AC_MSG_RESULT([$have_va_copy])
|
||||
dnl
|
||||
if test "x$have_va_copy" != "xno"; then
|
||||
AC_DEFINE([HAVE_VA_COPY],1,[Whether we have the va_copy() function])
|
||||
fi
|
||||
])dnl
|
||||
dnl
|
||||
dnl
|
||||
dnl Local Variables:
|
||||
dnl mode: autoconf
|
||||
dnl End:
|
||||
Reference in New Issue
Block a user