summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@gmail.com>2012-11-17 18:53:09 +0100
committerMarc-André Lureau <marcandre.lureau@gmail.com>2012-11-17 18:53:09 +0100
commit3aa7180202aeae701a61331619e51888082f19fb (patch)
tree368e26b6cba6bd9103070b16260eeea7aaf5a911
parentba0722400127fb8f0c7156a485a0c0b4052c2020 (diff)
build-sys: add nss/winscard backend selection
-rw-r--r--Makefile.am14
-rw-r--r--configure.ac36
2 files changed, 44 insertions, 6 deletions
diff --git a/Makefile.am b/Makefile.am
index 32a9375..20d46f8 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -2,15 +2,12 @@ NULL =
INCLUDES= \
-I. \
- $(NSS_CFLAGS) \
- $(PCSC_CFLAGS) \
$(USE_PASSTHRU) \
$(NULL)
lib_LTLIBRARIES = libcacard.la
libcacard_la_LIBADD = \
- $(NSS_LIBS) \
$(PCSC_LIBS) \
$(NULL)
@@ -20,12 +17,21 @@ libcacard_la_SOURCES= \
card_7816.c \
event.c \
passthru.c \
- vcard_emul_nss.c \
vcard_emul_type.c \
vcard.c \
vreader.c \
$(NULL)
+if WITH_NSS
+libcacard_la_SOURCES += vcard_emul_nss.c
+libcacard_la_LIBADD += $(NSS_LIBS)
+INCLUDES += $(NSS_CFLAGS)
+endif
+
+if WITH_WINSCARD
+libcacard_la_SOURCES += vcard_emul_winscard.c
+endif
+
libcacardincludedir = $(includedir)/cacard
libcacardinclude_HEADERS = \
diff --git a/configure.ac b/configure.ac
index 5436371..66b1a18 100644
--- a/configure.ac
+++ b/configure.ac
@@ -32,10 +32,42 @@ CAC_CARD_NONPKGCONFIG_LIBS+=" -pthread"
CAC_CARD_REQUIRES=""
-PKG_CHECK_MODULES(NSS, nss)
+AC_ARG_WITH([backend],
+ AS_HELP_STRING([--with-backend=@<:@nss/winscard@:>@], [Select backend @<:@default=nss@:>@]),
+ [],
+ [with_backend="nss"])
+
+case "$with_backend" in
+ winscard|nss*)
+ ;;
+ *) AC_MSG_ERROR(Unsupported backend)
+esac
+
+AS_IF([test "x$with_backend" = "xnss"],
+ [PKG_CHECK_MODULES(NSS, nss, [have_nss=yes], [have_nss=no])],
+ [have_nss=no])
+
+AS_IF([test "x$have_nss" = "xyes"],
+ [AC_DEFINE([WITH_NSS], 1, [Have nss?])],
+ [AS_IF([test "x$with_backend" = "xnss"],
+ [AC_MSG_ERROR([NSS requested but not found])
+ ])
+])
+AM_CONDITIONAL([WITH_NSS], [test "x$have_nss" = "xyes"])
AC_SUBST(NSS_CFLAGS)
AC_SUBST(NSS_LIBS)
-CAC_CARD_REQUIRES+=" nss"
+
+AS_IF([test "x$with_backend" = "xwinscard"],
+ [AC_CHECK_HEADER([winscard.h], [have_winscard=yes], [have_winscard=no])],
+ [have_winscard=no])
+
+AS_IF([test "x$have_winscard" = "xyes"],
+ [AC_DEFINE([WITH_WINSCARD], 1, [Have winscard?])],
+ [AS_IF([test "x$with_backend" = "xwinscard"],
+ [AC_MSG_ERROR([WinSCard requested but not found])
+ ])
+])
+AM_CONDITIONAL([WITH_WINSCARD], [test "x$have_winscard" = "xyes"])
AS_IF([test "$_cflags_is_set" = "yes"], [], [