diff --git a/virtualsmartcard/configure.ac b/virtualsmartcard/configure.ac index a768af1..7a2cbf3 100644 --- a/virtualsmartcard/configure.ac +++ b/virtualsmartcard/configure.ac @@ -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 ]) # 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} diff --git a/virtualsmartcard/src/ifd-vpcd/Info.plist.in b/virtualsmartcard/src/ifd-vpcd/Info.plist.in new file mode 100644 index 0000000..b0216bf --- /dev/null +++ b/virtualsmartcard/src/ifd-vpcd/Info.plist.in @@ -0,0 +1,50 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + @TARGET_LIB@ + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ifd-vpcd + CFBundlePackageType + BNDL + CFBundleSignature + ???? + CFBundleVersion + @VERSION@ + + ifdManufacturerString + Virtual Smart Card Architecture + ifdProductString + Virtual PCD + + ifdCapabilities + 0x00000000 + ifdProtocolSupport + 0x00000001 + ifdVersionNumber + 0x00000001 + + ifdVendorID + + 0x18d1 + + + ifdProductID + + 0x4ee1 + + + ifdFriendlyName + + @VPCDHOST@:0x8C7B + + + Copyright + This driver is protected by terms of the GNU General Public License version 3, or (at your option) any later version. + + diff --git a/virtualsmartcard/src/ifd-vpcd/Makefile.am b/virtualsmartcard/src/ifd-vpcd/Makefile.am index 48d2aa1..9c930e9 100644 --- a/virtualsmartcard/src/ifd-vpcd/Makefile.am +++ b/virtualsmartcard/src/ifd-vpcd/Makefile.am @@ -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