Skip to content
Browse files

initial attempt at building a shared library

  • Loading branch information...
1 parent 2414044 commit 58f03858ceb6d9abc0fd3c4a727386e14d755d71 Carl Byington committed Sep 13, 2008
Showing with 215 additions and 3 deletions.
  1. +4 −0 Makefile.am
  2. +140 −0 compile
  3. +26 −1 configure.in
  4. +11 −0 libpst.pc.in
  5. +34 −2 src/Makefile.am
View
4 Makefile.am
@@ -2,5 +2,9 @@ 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*)
View
140 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 <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:
View
27 configure.in
@@ -20,6 +20,7 @@ AC_PROG_CC
AC_PROG_CPP
AC_PROG_INSTALL
AC_PROG_LN_S
+AC_PROG_LIBTOOL
AC_PROG_MAKE_SET
AC_PROG_RANLIB
@@ -80,17 +81,41 @@ AC_ARG_ENABLE(pst-debug,
)
+# 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 \
)
View
11 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}
View
36 src/Makefile.am
@@ -9,12 +9,44 @@ lspst_SOURCES = $(hfiles) lspst.c libpst.c timeconv.c libstrfunc.c de
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

0 comments on commit 58f0385

Please sign in to comment.
Something went wrong with that request. Please try again.