redesign autoconf/automake infrastructure to support

- building of CM5121 driver (and backends) optional
- building of librfid for in-firmware-use


git-svn-id: https://svn.gnumonks.org/trunk/librfid@1906 e0336214-984f-0b4b-a45f-81c69e1f0ede
This commit is contained in:
laforge 2006-10-14 18:53:50 +00:00
parent 36751e15b8
commit 6bc8adf40b
6 changed files with 72 additions and 22 deletions

18
README
View File

@ -41,6 +41,7 @@ everything.
This reader is not yet supported.
2.x Further Readers
Support for more devices shouldn't be too difficult to add, provided the
@ -54,14 +55,19 @@ based on Philips CL RC622, RC531 and RC632, adding support should be very
straightforward. If you want to contract me for implementing a driver
backend, don't hesitate to contact me.
3. Installation
In order to run librfid, you need a reader transport backend that provides a
PC_to_RDR_Escape function. The current version of this library offers two backends
3. Building / Installing
In the default configuration, librfid only includes the driver for the OpenPCD
dumbreader firmware.
If you want support for Omnikey Cardman 5121/5321, you have to add
'--enable-reader-cm5x21' to the './configure' comannd, _and_ choose the backend
you want to use, either:
3.1 (new) native CCID backend
If you add the '--with-ccid' option to the './configure' command, then the new
If you add the '--enable-ccid' option to the './configure' command, then the new
native CCID driver (courtesy of Werner Koch) will be linked into the library.
This requires a working libusb with development headers.
@ -85,6 +91,10 @@ lower-layer transport interface, it doesn't actually provide a virtual reader
interface to it, i.e. you can't use CT-API/OpenCT/PCSC API's to access RFID
transponders.
In order to use this backend, you need to use the
'--with-openct=/path/to/openct' option.
4. Testing
In the 'utils' directory, you will get a 'librfid-tool' binary. It is very

View File

@ -11,13 +11,40 @@ AC_EXEEXT
AM_PROG_LIBTOOL
AC_SUBST(LIBTOOL_DEPS)
AC_ARG_WITH(ccid,
[ --with-ccid Include internal CCID driver],
AC_ARG_ENABLE(ccid,
[ --enable-ccid Include internal CCID driver for CM5121],
[MY_CCID=1], [MY_CCID=0])
# AC_SUBST(MY_CCID)
AM_CONDITIONAL(MY_CCID, test "$MY_CCID" == "1")
AM_CONDITIONAL(ENABLE_CCID, test "$MY_CCID" == "1")
AC_ARG_WITH(openct,
[ --with-openct Use (patched) OpenCT for CM5121 CCID access],
[OPENCT_PATH="$withval"], [OPENCT_PATH=""])
AC_SUBST(OPENCT_PATH)
AM_CONDITIONAL(ENABLE_OPENCT, test "$OPENCT_PATH" != "")
AC_ARG_WITH(firmware,
[ --with-firmware=PATH Compile for running inside firmware],
[FIRMWARE_PATH="$withval"], [FIRMWARE_PATH=""])
AC_SUBST(FIRMWARE_PATH)
AC_ARG_ENABLE(static,
[ --enable-static Don't use dynamic allocations at all],
[ENABLE_STATIC=1], [ENABLE_STATIC=0])
AM_CONDITIONAL(ENABLE_STATIC, test "$ENABLE_STATIC" == "1")
AC_ARG_ENABLE(firmware,
[ --enable-firmware Don't use dynamic allocations at all],
[ENABLE_FIRMWARE=1], [ENABLE_FIRMWARE=0])
AM_CONDITIONAL(ENABLE_FIRMWARE, test "$ENABLE_FIRMWARE" == "1")
AC_ARG_ENABLE(reader-cm5x21,
[ --enable-reader-cm5x21 Support for Omnikey Cardman 5121/5321],
[ENABLE_CM5121=1], [ENABLE_CM5121=0])
AM_CONDITIONAL(ENABLE_CM5121, test "$ENABLE_CM5121" == "1")
AC_ARG_WITH()
#AC_CHECK_HEADERS(usb.h, [have_libusb="yes"], [ AC_MSG_WARN([usb.h not found, use --enable-libusb=PATH. Otherwise, INDI will compile without Apogee USB support.]) ])
AC_CHECK_LIB(usb, usb_close,,)

View File

@ -1,14 +1,10 @@
/* system / environment specific defines */
/* build for openpcd firmware */
#define LIBRFID_FIRMWARE
//#define LIBRFID_FIRMWARE
/* build without dynamic allocations */
//#define LIBRFID_STATIC
//
#ifdef LIBRFID_FIRMWARE
#define LIBRFID_STATIC
#endif
#ifdef __LIBRFID__

View File

@ -1,21 +1,38 @@
LIBVERSION= 0:0:0
INCLUDES = $(all_includes) -I$(top_srcdir)/include -D__LIBRFID__
INCLUDES = $(all_includes) -I$(top_srcdir)/include
AM_CFLAGS = -std=gnu99 -D__LIBRFID__
AM_CFLAGS = -std=gnu99
if ENABLE_FIRMWARE
INCLUDES += -I$(FIRMWARE_PATH)/include -I$(GNUARM_PATH)/arm-elf/include
AM_CFLAGS += -DLIBRFID_FIRMWARE -DLIBRFID_STATIC -D__MS_types__
endif
if ENABLE_STATIC
AM_CFLAGS += -DLIBRFID_STATIC
endif
lib_LTLIBRARIES = librfid.la
CORE=rfid.c rfid_layer2.c rfid_protocol.c rfid_reader.c rfid_scan.c
L2=rfid_layer2_iso14443a.c rfid_layer2_iso14443b.c rfid_layer2_iso15693.c rfid_iso14443_common.c
PROTO=rfid_proto_tcl.c rfid_proto_mifare_ul.c rfid_proto_mifare_classic.c
READER=rfid_reader_cm5121.c rfid_asic_rc632.c rfid_reader_openpcd.c
ASIC=rfid_asic_rc632.c
READER=rfid_reader_openpcd.c
if MY_CCID
if ENABLE_CM5121
READER += rfid_reader_cm5121.c
AM_CFLAGS += -DENABLE_CM5121
if ENABLE_CCID
READER_LOW=ccid/rfid_reader_cm5121_ccid_direct.c ccid/ccid-driver.c
else
endif
if ENABLE_OPENCT
READER_LOW=rfid_reader_cm5121_openct.c
endif
librfid_la_LDFLAGS = -Wc,-nostartfiles -version-info $(LIBVERSION) -lopenct
librfid_la_SOURCES = $(CORE) $(L2) $(PROTO) $(READER) $(READER_LOW)
endif
librfid_la_LDFLAGS = -Wc,-nostartfiles -version-info $(LIBVERSION) -lopenct
librfid_la_SOURCES = $(CORE) $(L2) $(PROTO) $(READER) $(READER_LOW) $(ASIC)

View File

@ -26,7 +26,7 @@
#include <librfid/rfid_reader_openpcd.h>
static const struct rfid_reader *rfid_readers[] = {
#ifndef LIBRFID_FIRMWARE
#ifdef ENABLE_CM5121
[RFID_READER_CM5121] = &rfid_reader_cm5121,
#endif
[RFID_READER_OPENPCD] = &rfid_reader_openpcd,

View File

@ -32,7 +32,6 @@
#include <string.h>
#include <errno.h>
#include <usb.h>
#include <librfid/rfid.h>
#include <librfid/rfid_reader.h>
@ -57,6 +56,7 @@ static struct openpcd_hdr *rcv_hdr;
#ifndef LIBRFID_FIRMWARE
#include <usb.h>
static struct usb_device *dev;
static struct usb_dev_handle *hdl;