redesign autoconf/automake infrastructure to support
authorHarald Welte <laforge@gnumonks.org>
Sat, 14 Oct 2006 18:53:50 +0000 (18:53 +0000)
committerHarald Welte <laforge@gnumonks.org>
Sat, 14 Oct 2006 18:53:50 +0000 (18:53 +0000)
- 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

README
configure.in
include/librfid/rfid_system.h
src/Makefile.am
src/rfid_reader.c
src/rfid_reader_openpcd.c

diff --git a/README b/README
index b15ef9e..c495d11 100644 (file)
--- a/README
+++ b/README
@@ -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
index c141be0..d047682 100644 (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,,)
index 7f9c1b3..9b6ffb7 100644 (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__
 
index c0cbfbe..0c4be7c 100644 (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 ENABLE_CM5121
+READER += rfid_reader_cm5121.c
+AM_CFLAGS += -DENABLE_CM5121
 
-if MY_CCID
+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
 
+endif
+
 librfid_la_LDFLAGS = -Wc,-nostartfiles -version-info $(LIBVERSION) -lopenct
-librfid_la_SOURCES = $(CORE) $(L2) $(PROTO) $(READER) $(READER_LOW)
+librfid_la_SOURCES = $(CORE) $(L2) $(PROTO) $(READER) $(READER_LOW) $(ASIC)
 
index a5dbeb2..af947ac 100644 (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,
index aee3d18..9397cb0 100644 (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;