diff --git a/Makefile.am b/Makefile.am index eaafc4c..6563417 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,6 +1,10 @@ SUBDIRS = src man html info debian htmldir = ${datadir}/doc/@PACKAGE@-@VERSION@ html_DATA = AUTHORS COPYING ChangeLog NEWS README CLEANFILES = xml/libpst xml/Makefile + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = libpst.pc + EXTRA_DIST = Doxyfile libpst.html.tar.gz libpst.spec $(wildcard xml/M*) $(wildcard xml/h*) $(wildcard xml/lib*) diff --git a/compile b/compile new file mode 100755 index 0000000..80b645b --- /dev/null +++ b/compile @@ -0,0 +1,140 @@ +#! /bin/sh +# Wrapper for compilers which do not understand `-c -o'. + +scriptversion=2004-09-10.20 + +# Copyright (C) 1999, 2000, 2003, 2004 Free Software Foundation, Inc. +# Written by Tom Tromey . +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +case $1 in + '') + echo "$0: No command. Try \`$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: compile [--help] [--version] PROGRAM [ARGS] + +Wrapper for compilers which do not understand `-c -o'. +Remove `-o dest.o' from ARGS, run PROGRAM with the remaining +arguments, and rename the output as expected. + +If you are trying to build a whole package this is not the +right script to run: please start by reading the file `INSTALL'. + +Report bugs to . +EOF + exit 0 + ;; + -v | --v*) + echo "compile $scriptversion" + exit 0 + ;; +esac + +ofile= +cfile= +eat= + +for arg +do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as `compile cc -o foo foo.c'. + # So we strip `-o arg' only if arg is an object. + eat=1 + case $2 in + *.o | *.obj) + ofile=$2 + ;; + *) + set x "$@" -o "$2" + shift + ;; + esac + ;; + *.c) + cfile=$1 + set x "$@" "$1" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift +done + +if test -z "$ofile" || test -z "$cfile"; then + # If no `-o' option was seen then we might have been invoked from a + # pattern rule where we don't need one. That is ok -- this is a + # normal compilation that the losing compiler can handle. If no + # `.c' file was seen then we are probably linking. That is also + # ok. + exec "$@" +fi + +# Name of file we expect compiler to create. +cofile=`echo "$cfile" | sed -e 's|^.*/||' -e 's/\.c$/.o/'` + +# Create the lock directory. +# Note: use `[/.-]' here to ensure that we don't use the same name +# that we are using for the .o file. Also, base the name on the expected +# object file name, since that is what matters with a parallel build. +lockdir=`echo "$cofile" | sed -e 's|[/.-]|_|g'`.d +while true; do + if mkdir "$lockdir" >/dev/null 2>&1; then + break + fi + sleep 1 +done +# FIXME: race condition here if user kills between mkdir and trap. +trap "rmdir '$lockdir'; exit 1" 1 2 15 + +# Run the compile. +"$@" +ret=$? + +if test -f "$cofile"; then + mv "$cofile" "$ofile" +fi + +rmdir "$lockdir" +exit $ret + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/configure.in b/configure.in index 55f24d3..b21de75 100644 --- a/configure.in +++ b/configure.in @@ -1,96 +1,121 @@ AC_PREREQ(2.59) AC_INIT(libpst,0.6.18,carl@five-ten-sg.com) AC_CONFIG_SRCDIR([config.h.in]) AC_CONFIG_HEADER([config.h]) AM_INIT_AUTOMAKE($PACKAGE_NAME,$PACKAGE_VERSION) # Checks for programs. my_build_dii=yes AC_PATH_PROG(CONVERT, convert) if test "x$CONVERT" = "x" ; then AC_MSG_WARN([convert not found. pst2dii disabled]) my_build_dii=no fi AM_CONDITIONAL(BUILD_DII, test $my_build_dii = yes) # Checks for programs. AC_PROG_CXX AC_PROG_CC AC_PROG_CPP AC_PROG_INSTALL AC_PROG_LN_S +AC_PROG_LIBTOOL AC_PROG_MAKE_SET AC_PROG_RANLIB AC_SYS_LARGEFILE AC_CHECK_SIZEOF(off_t) # Checks for header files. AC_CHECK_HEADER([unistd.h], AM_CONDITIONAL(NEED_XGETOPT, [test yes = no ]), AM_CONDITIONAL(NEED_XGETOPT, [test yes = yes]) ) AC_HEADER_DIRENT AC_HEADER_STDC AC_CHECK_HEADERS([fcntl.h limits.h malloc.h netinet/in.h stdint.h stdlib.h string.h sys/param.h wchar.h]) if test "$my_build_dii" = "yes"; then AC_CHECK_HEADERS([gd.h]) fi # Checks for typedefs, structures, and compiler characteristics. AC_HEADER_STDBOOL AC_C_CONST AC_TYPE_OFF_T AC_TYPE_SIZE_T AC_STRUCT_TM # Checks for library functions. AC_FUNC_FSEEKO AC_FUNC_LSTAT AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK AC_FUNC_MALLOC AC_FUNC_MKTIME AC_FUNC_REALLOC AC_FUNC_STRFTIME AC_FUNC_VPRINTF AC_CHECK_FUNCS([memchr memmove memset strcasecmp strchr strdup strerror strpbrk strrchr strstr strtol]) # iconv on mac is a library AC_SEARCH_LIBS([iconv_open], [iconv]) # The following lines adds the --enable-pst-debug option to configure: # # Give the user the choice to enter one of these: # --enable-pst-debug # --enable-pst-debug=yes # --enable-pst-debug=no # AC_MSG_CHECKING([whether we are forcing debug dump file creation]) AC_ARG_ENABLE(pst-debug, AC_HELP_STRING([--enable-pst-debug], [force debug dump file creation]), [if test "${enable_pst_debug}" = "no" ; then AC_MSG_RESULT([no]) else AC_DEFINE(DEBUG_ALL, 1, Define to 1 to force debug dump file creation) AC_MSG_RESULT([yes]) fi], # Default value for configure AC_MSG_RESULT([no]) ) +# The following lines adds the --enable-libpst-shared option to configure: +# +# Give the user the choice to enter one of these: +# --enable-libpst-shared +# --enable-libpst-shared=yes +# --enable-libpst-shared=no +# +AC_MSG_CHECKING([whether we are building libpst shared object]) +AC_ARG_ENABLE(libpst-shared, + AC_HELP_STRING([--enable-libpst-shared], [build libpst shared object]), + [if test "${enable_libpst_shared}" = "no" ; then + AC_MSG_RESULT([no]) + AM_CONDITIONAL(BUILD_LIBPST_SHARED, test 0 = 1) + else + AC_MSG_RESULT([yes]) + AM_CONDITIONAL(BUILD_LIBPST_SHARED, test 1 = 1) + fi], + # Default value for configure + [AC_MSG_RESULT([no]) + AM_CONDITIONAL(BUILD_LIBPST_SHARED, test 0 = 1)] + ) + + AC_OUTPUT( \ Makefile \ debian/changelog \ debian/Makefile \ libpst.spec \ + libpst.pc \ html/Makefile \ info/Makefile \ man/Makefile \ src/Makefile \ src/version.h \ - src/pst2dii.cpp \ + src/pst2dii.cpp \ xml/Makefile \ xml/libpst \ ) diff --git a/libpst.pc.in b/libpst.pc.in new file mode 100644 index 0000000..5ad60c1 --- /dev/null +++ b/libpst.pc.in @@ -0,0 +1,11 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: libpst +Description: A library for reading PST files +Version: @VERSION@ +Requires: +Libs: -L${libdir} -lpst +Cflags: -I${includedir} diff --git a/src/Makefile.am b/src/Makefile.am index 6e45c12..3db2a60 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,37 +1,69 @@ hfiles = $(wildcard *.h) bin_PROGRAMS = lspst readpst readpstlog pst2ldif if BUILD_DII bin_PROGRAMS += pst2dii endif noinst_PROGRAMS = deltasearch dumpblocks getidblock lspst_SOURCES = $(hfiles) lspst.c libpst.c timeconv.c libstrfunc.c debug.c vbuf.c readpst_SOURCES = $(hfiles) readpst.c libpst.c timeconv.c libstrfunc.c debug.c lzfu.c vbuf.c readpstlog_SOURCES = $(hfiles) readpstlog.c debug.c pst2ldif_SOURCES = $(hfiles) pst2ldif.cpp libpst.c timeconv.c libstrfunc.c debug.c lzfu.c vbuf.c -pst2dii_SOURCES = $(hfiles) pst2dii.cpp libpst.c timeconv.c libstrfunc.c debug.c lzfu.c vbuf.c - +pst2dii_SOURCES = $(hfiles) pst2dii.cpp libpst.c timeconv.c libstrfunc.c debug.c lzfu.c vbuf.c deltasearch_SOURCES = deltasearch.cpp debug.c dumpblocks_SOURCES = dumpblocks.c debug.c libpst.c libstrfunc.c timeconv.c vbuf.c getidblock_SOURCES = getidblock.c debug.c libpst.c libstrfunc.c timeconv.c vbuf.c +if BUILD_LIBPST_SHARED + lspst_CFLAGS = $(AM_CFLAGS) + readpst_CFLAGS = $(AM_CFLAGS) + readpstlog_CFLAGS = $(AM_CFLAGS) + pst2ldif_CFLAGS = $(AM_CFLAGS) + pst2dii_CFLAGS = $(AM_CFLAGS) + deltasearch_CFLAGS = $(AM_CFLAGS) + dumpblocks_CFLAGS = $(AM_CFLAGS) + getidblock_CFLAGS = $(AM_CFLAGS) + lib_LTLIBRARIES = libpst.la + libpst_la_SOURCES = common.h \ + debug.c \ + libpst.c \ + libpst.h \ + libstrfunc.c \ + libstrfunc.h \ + lspst.c \ + timeconv.c \ + timeconv.h \ + vbuf.c \ + vbuf.h \ + version.h + libpst_la_LDFLAGS = -no-undefined + libpstincludedir = $(includedir)/libpst + libpstinclude_HEADERS = common.h \ + define.h \ + libpst.h \ + libstrfunc.h \ + timeconv.h \ + vbuf.h \ + version.h +endif + if NEED_XGETOPT lspst_SOURCES += XGetopt.c readpst_SOURCES += XGetopt.c readpstlog_SOURCES += XGetopt.c pst2ldif_SOURCES += XGetopt.c pst2dii_SOURCES += XGetopt.c endif EXTRA_DIST = testdebug.c # set the include path found by configure INCLUDES= $(all_includes) # the library search path. lspst_LDFLAGS = $(all_libraries) readpst_LDFLAGS = $(all_libraries) readpstlog_LDFLAGS = $(all_libraries) pst2ldif_LDFLAGS = $(all_libraries) pst2dii_LDFLAGS = $(all_libraries) -lgd -lpng -lz -lfreetype -lm