Added compatibility with Info.plist bundle

primarily for usage on OS X
This commit is contained in:
Frank Morgner
2015-05-15 15:21:31 +02:00
parent 1581c61e4b
commit c7f757b2fb
3 changed files with 107 additions and 14 deletions

View File

@@ -46,6 +46,7 @@ m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
# Checks for libraries.
# --enable-libpcsclite
infoplist=no
AC_ARG_ENABLE(libpcsclite,
AC_HELP_STRING([--enable-libpcsclite],[Build a lightweight version of
libpcsclite, conflicts with PCSC-Lite @<:@default=no@:>@]),
@@ -53,7 +54,13 @@ AC_ARG_ENABLE(libpcsclite,
if test "${libpcsclite}" = no ; then
PKG_CHECK_EXISTS([libpcsclite],
[PKG_CHECK_MODULES([PCSC], [libpcsclite])],
[AC_MSG_WARN([libpcsclite not found by pkg-config])])
[AC_MSG_WARN([libpcsclite not found by pkg-config])
case "$host" in
*-*-darwin*)
PCSC_CFLAGS="-DNO_LOG -I`pwd`/${top_srcdir}/src/pcsclite-vpcd/PCSC"
PCSC_LIBS="--framework PCSC"
esac
])
saved_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $PCSC_CFLAGS"
@@ -71,12 +78,18 @@ if test "${libpcsclite}" = no ; then
if test "${prefix}" = NONE ; then
serialdropdir="`$PKG_CONFIG libpcsclite --variable=usbdropdir`/serial"
if test "${serialdropdir}" = "/serial" ; then
AC_MSG_ERROR([use --enable-serialdropdir=DIR])
case "$host" in
*-*-darwin*) serialdropdir=/usr/libexec/SmartCardServices/drivers/ifd-vpcd.bundle/Contents/MacOS; infoplist=yes ;;
*) AC_MSG_ERROR([use --enable-serialdropdir=DIR])
esac
fi
else
serialdropdir="${prefix}`$PKG_CONFIG libpcsclite --variable=usbdropdir`/serial"
if test "${serialdropdir}" = "${prefix}/serial" ; then
AC_MSG_ERROR([use --enable-serialdropdir=DIR])
case "$host" in
*-*-darwin*) serialdropdir=${prefix}/usr/libexec/SmartCardServices/drivers/ifd-vpcd.bundle/Contents/MacOS; infoplist=yes ;;
*) AC_MSG_ERROR([use --enable-serialdropdir=DIR])
esac
fi
fi
fi
@@ -91,12 +104,18 @@ if test "${libpcsclite}" = no ; then
if test "${prefix}" = NONE ; then
serialconfdir="`$PKG_CONFIG libpcsclite --variable=serialconfdir`"
if test "${serialconfdir}" = "" ; then
serialconfdir="/etc/reader.conf.d"
case "$host" in
*-*-darwin*) serialconfdir=/usr/libexec/SmartCardServices/drivers/ifd-vpcd.bundle/Contents; infoplist=yes ;;
*) serialconfdir="/etc/reader.conf.d"
esac
fi
else
serialconfdir="${prefix}`$PKG_CONFIG libpcsclite --variable=serialconfdir`"
if test "${serialconfdir}" = "${prefix}" ; then
serialconfdir="${prefix}/etc/reader.conf.d"
case "$host" in
*-*-darwin*) serialconfdir=${prefix}/usr/libexec/SmartCardServices/drivers/ifd-vpcd.bundle/Contents; infoplist=yes ;;
*) serialconfdir="${prefix}/etc/reader.conf.d"
esac
fi
fi
fi
@@ -160,6 +179,7 @@ AC_CHECK_FUNCS([strlcpy strlcat], [], [], [#include <string.h>])
# Select OS specific versions of source files.
AM_CONDITIONAL([BUILD_LIBPCSCLITE], [test "${libpcsclite}" = "yes"])
AM_CONDITIONAL([BUILD_INFOPLIST], [test "${infoplist}" = "yes"])
AC_SUBST(BUNDLE_HOST)
AC_SUBST(DYN_LIB_EXT)
AC_SUBST(LIB_PREFIX)
@@ -213,6 +233,8 @@ Driver directory: ${serialdropdir}
Python site-packages: $(eval eval eval echo "${pythondir}")
Build libpcsclite: ${libpcsclite}
Build Info.plist: ${infoplist}
Build reader.conf: ${readerconf}
VPCD hostname: ${vpcdhost}

View File

@@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>@TARGET_LIB@</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>ifd-vpcd</string>
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>@VERSION@</string>
<key>ifdManufacturerString</key>
<string>Virtual Smart Card Architecture</string>
<key>ifdProductString</key>
<string>Virtual PCD</string>
<key>ifdCapabilities</key>
<string>0x00000000</string>
<key>ifdProtocolSupport</key>
<string>0x00000001</string>
<key>ifdVersionNumber</key>
<string>0x00000001</string>
<key>ifdVendorID</key>
<array>
<string>0x18d1</string>
</array>
<key>ifdProductID</key>
<array>
<string>0x4ee1</string>
</array>
<key>ifdFriendlyName</key>
<array>
<string>@VPCDHOST@:0x8C7B</string>
</array>
<key>Copyright</key>
<string>This driver is protected by terms of the GNU General Public License version 3, or (at your option) any later version.</string>
</dict>
</plist>

View File

@@ -7,10 +7,12 @@ libifdvpcd_la_LIBADD = $(top_builddir)/src/vpcd/libvpcd.la
noinst_HEADERS = ifd-vpcd.h
EXTRA_DIST = reader.conf.in
EXTRA_DIST = reader.conf.in Info.plist.in
do_subst = $(SED) \
-e 's,[@]VERSION[@],$(VERSION),g' \
-e 's,[@]TARGET_LIB[@],$(IFDVPCD_LIB),g' \
-e 's,[@]TARGET[@],$(serialdropdir)/$(IFDVPCD_LIB),g' \
-e 's,[@]VPCDHOST[@],$(vpcdhost),g'
@@ -27,26 +29,45 @@ pcsclite.h:
else
libifdvpcd_la_LIBADD += $(PCSC_LIBS)
lib_LTLIBRARIES = libifdvpcd.la
install: install_libifdvpcd
if BUILD_INFOPLIST
install_libifdvpcd: libifdvpcd.la reader.conf.in
install: install_libifdvpcd install_infoplist
uninstall: uninstall_libifdvpcd uninstall_infoplist
else
install: install_libifdvpcd install_readerconf
uninstall: uninstall_libifdvpcd uninstall_readerconf
endif
endif
install_libifdvpcd: libifdvpcd.la
$(mkinstalldirs) $(DESTDIR)$(serialdropdir)
$(LIBTOOL) --mode=install cp .libs/$(IFDVPCD_LIB) $(DESTDIR)$(serialdropdir)/$(IFDVPCD_LIB).$(VERSION)
(cd $(DESTDIR)$(serialdropdir) && \
$(LN_S) -f $(IFDVPCD_LIB).$(VERSION) $(IFDVPCD_LIB))
install_readerconf: reader.conf.in
$(mkinstalldirs) $(DESTDIR)$(serialconfdir)
$(do_subst) < $(srcdir)/reader.conf.in > $(DESTDIR)$(serialconfdir)/vpcd
install_infoplist: Info.plist.in
$(mkinstalldirs) $(DESTDIR)$(serialconfdir)
$(do_subst) < $(srcdir)/Info.plist.in > $(DESTDIR)$(serialconfdir)/Info.plist
uninstall: uninstall_libifdvpcd
uninstall_libifdvpcd:
rm -f $(DESTDIR)$(serialdropdir)/$(IFDVPCD_LIB).$(VERSION) \
$(DESTDIR)$(serialdropdir)/$(IFDVPCD_LIB) \
$(DESTDIR)$(serialconfdir)/vpcd
$(DESTDIR)$(serialdropdir)/$(IFDVPCD_LIB)
endif
uninstall_readerconf:
rm -f $(DESTDIR)$(serialconfdir)/vpcd
uninstall_infoplist:
rm -f $(DESTDIR)$(serialconfdir)/Info.plist