Mercurial > libpst
changeset 95:ff1743cbe4aa
initial attempt at building a shared library
author | Carl Byington <carl@five-ten-sg.com> |
---|---|
date | Sat, 13 Sep 2008 20:15:40 -0700 |
parents | 997cf1373f9e |
children | 2e3ec9511166 |
files | Makefile.am compile configure.in libpst.pc.in src/Makefile.am |
diffstat | 5 files changed, 215 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/Makefile.am Tue Sep 09 11:11:56 2008 -0700 +++ b/Makefile.am Sat Sep 13 20:15:40 2008 -0700 @@ -2,5 +2,9 @@ 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*)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/compile Sat Sep 13 20:15:40 2008 -0700 @@ -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 <tromey@cygnus.com>. +# +# 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 <bug-automake@gnu.org> or send patches to +# <automake-patches@gnu.org>. + +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 <bug-automake@gnu.org>. +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:
--- a/configure.in Tue Sep 09 11:11:56 2008 -0700 +++ b/configure.in Sat Sep 13 20:15:40 2008 -0700 @@ -20,6 +20,7 @@ AC_PROG_CPP AC_PROG_INSTALL AC_PROG_LN_S +AC_PROG_LIBTOOL AC_PROG_MAKE_SET AC_PROG_RANLIB @@ -80,17 +81,41 @@ ) +# 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 \ )
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libpst.pc.in Sat Sep 13 20:15:40 2008 -0700 @@ -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}
--- a/src/Makefile.am Tue Sep 09 11:11:56 2008 -0700 +++ b/src/Makefile.am Sat Sep 13 20:15:40 2008 -0700 @@ -9,12 +9,44 @@ 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