From fd6fdd8b01778d467f7e8fd6e7398fae8c27d3da Mon Sep 17 00:00:00 2001 From: Frank Morgner Date: Sun, 19 May 2013 03:48:31 +0200 Subject: [PATCH] building the most recent version of libnfc --- pcsc-relay/win32/Makefile.am | 16 +- pcsc-relay/win32/libnfc_mingw.patch | 272 ---------------------------- 2 files changed, 8 insertions(+), 280 deletions(-) delete mode 100644 pcsc-relay/win32/libnfc_mingw.patch diff --git a/pcsc-relay/win32/Makefile.am b/pcsc-relay/win32/Makefile.am index a1dd6e7..5885bf4 100644 --- a/pcsc-relay/win32/Makefile.am +++ b/pcsc-relay/win32/Makefile.am @@ -2,25 +2,25 @@ EXTRA_DIST = libnfc_mingw.patch all-local: - echo "Use \`make win\` to cross compile for Windows" + @echo "Use \`make win\` to cross compile for Windows" IMAGE=$(abs_builddir)/image +MINGW ?= i686-w64-mingw32 +MINGW_DIR=/usr/$(MINGW) + + LIBNFC_DIR=$(abs_builddir)/libnfc -LIBNFC_DLL=$(IMAGE)/bin/libnfc-3.dll +LIBNFC_DLL=$(IMAGE)/bin/libnfc-4.dll $(LIBNFC_DIR)/configure.ac: - svn co -r1327 http://libnfc.googlecode.com/svn/trunk $(LIBNFC_DIR) + git clone git://github.com/frankmorgner/libnfc $(LIBNFC_DIR) $(LIBNFC_DLL): $(LIBNFC_DIR)/configure.ac - grep i686-w64-mingw32 $(LIBNFC_DIR)/mingw-cross-configure.sh > /dev/null || \ - patch -p0 -d $(LIBNFC_DIR) < libnfc_mingw.patch - cd $(LIBNFC_DIR) && sh mingw-cross-configure.sh --prefix=$(IMAGE) + cd $(LIBNFC_DIR) && env MINGW=$(MINGW) sh mingw-cross-configure.sh --prefix=$(IMAGE) make -C $(LIBNFC_DIR) install -MINGW ?= i686-w64-mingw32 -MINGW_DIR=/usr/$(MINGW) PCSC_RELAY_EXE=$(IMAGE)/bin/pcsc-relay.exe $(PCSC_RELAY_EXE): $(LIBNFC_DLL) cd $(abs_top_builddir) && ./configure \ diff --git a/pcsc-relay/win32/libnfc_mingw.patch b/pcsc-relay/win32/libnfc_mingw.patch deleted file mode 100644 index 61351fc..0000000 --- a/pcsc-relay/win32/libnfc_mingw.patch +++ /dev/null @@ -1,272 +0,0 @@ -Index: examples/pn53x-tamashell.c -=================================================================== ---- examples/pn53x-tamashell.c (Revision 1327) -+++ examples/pn53x-tamashell.c (Arbeitskopie) -@@ -76,7 +76,6 @@ - uint8_t abtTx[MAX_FRAME_LEN]; - size_t szRx = sizeof(abtRx); - size_t szTx; -- extern FILE* stdin; - FILE* input = NULL; - - if (argc >= 2) { -Index: libnfc/nfc-internal.c -=================================================================== ---- libnfc/nfc-internal.c (Revision 1327) -+++ libnfc/nfc-internal.c (Arbeitskopie) -@@ -22,6 +22,7 @@ - * @brief Provide some useful internal functions - */ - -+#define nfc_EXPORTS - #include - - void -Index: libnfc/chips/pn53x.c -=================================================================== ---- libnfc/chips/pn53x.c (Revision 1327) -+++ libnfc/chips/pn53x.c (Arbeitskopie) -@@ -37,6 +37,7 @@ - - #include - -+#define nfc_EXPORTS - #include "nfc/nfc.h" - #include "nfc-internal.h" - #include "pn53x.h" -Index: libnfc/drivers/acr122s.c -=================================================================== ---- libnfc/drivers/acr122s.c (Revision 1327) -+++ libnfc/drivers/acr122s.c (Arbeitskopie) -@@ -35,6 +35,7 @@ - #include - #include - -+#define nfc_EXPORTS - #include - - #include "drivers.h" -Index: libnfc/drivers/arygon.c -=================================================================== ---- libnfc/drivers/arygon.c (Revision 1327) -+++ libnfc/drivers/arygon.c (Arbeitskopie) -@@ -42,6 +42,7 @@ - #include - #include - -+#define nfc_EXPORTS - #include - - #include "drivers.h" -Index: libnfc/drivers/pn532_uart.c -=================================================================== ---- libnfc/drivers/pn532_uart.c (Revision 1327) -+++ libnfc/drivers/pn532_uart.c (Arbeitskopie) -@@ -36,6 +36,7 @@ - #include - #include - -+#define nfc_EXPORTS - #include - - #include "drivers.h" -Index: libnfc/drivers/pn53x_usb.c -=================================================================== ---- libnfc/drivers/pn53x_usb.c (Revision 1327) -+++ libnfc/drivers/pn53x_usb.c (Arbeitskopie) -@@ -50,8 +50,13 @@ - #define _usb_strerror( X ) usb_strerror() - #endif - -+#ifdef _WIN32 -+ #include "contrib/windows.h" -+#endif -+ - #include - -+#define nfc_EXPORTS - #include - - #include "nfc-internal.h" -Index: libnfc/drivers/acr122.c -=================================================================== ---- libnfc/drivers/acr122.c (Revision 1327) -+++ libnfc/drivers/acr122.c (Arbeitskopie) -@@ -32,6 +32,7 @@ - #include - #include - -+#define nfc_EXPORTS - #include - - #include "chips/pn53x.h" -Index: libnfc/buses/uart.c -=================================================================== ---- libnfc/buses/uart.c (Revision 1327) -+++ libnfc/buses/uart.c (Arbeitskopie) -@@ -29,6 +29,7 @@ - - #include "uart.h" - -+#define nfc_EXPORTS - #include - #include "nfc-internal.h" - -Index: libnfc/nfc-emulation.c -=================================================================== ---- libnfc/nfc-emulation.c (Revision 1327) -+++ libnfc/nfc-emulation.c (Arbeitskopie) -@@ -22,6 +22,11 @@ - * @brief Provide a small API to ease emulation in libnfc - */ - -+#ifdef HAVE_CONFIG_H -+# include "config.h" -+#endif // HAVE_CONFIG_H -+ -+#define nfc_EXPORTS - #include - #include - -Index: libnfc/iso14443-subr.c -=================================================================== ---- libnfc/iso14443-subr.c (Revision 1327) -+++ libnfc/iso14443-subr.c (Arbeitskopie) -@@ -29,6 +29,7 @@ - #include - #include - -+#define nfc_EXPORTS - #include - - -Index: libnfc/nfc.c -=================================================================== ---- libnfc/nfc.c (Revision 1327) -+++ libnfc/nfc.c (Arbeitskopie) -@@ -73,6 +73,7 @@ - #include - #include - -+#define nfc_EXPORTS - #include - - #include "nfc-internal.h" -@@ -80,6 +81,10 @@ - - #include - -+#ifdef _WIN32 -+# include "contrib/windows.h" -+#endif -+ - #define LOG_CATEGORY "libnfc.general" - - const struct nfc_driver *nfc_drivers[] = { -Index: utils/nfc-read-forum-tag3.c -=================================================================== ---- utils/nfc-read-forum-tag3.c (Revision 1327) -+++ utils/nfc-read-forum-tag3.c (Arbeitskopie) -@@ -51,11 +51,16 @@ - #include - #include - #include -+#include - - #include - - #include "nfc-utils.h" - -+#ifdef _WIN32 -+# include "contrib/windows.h" -+#endif -+ - static nfc_device *pnd; - - void -Index: mingw-cross-configure.sh -=================================================================== ---- mingw-cross-configure.sh (Revision 1327) -+++ mingw-cross-configure.sh (Arbeitskopie) -@@ -1,8 +1,8 @@ - #!/bin/sh - --WITH_USB=0 -+WITH_USB=1 - --LIBUSB_WIN32_BIN_VERSION="1.2.2.0" -+LIBUSB_WIN32_BIN_VERSION="1.2.6.0" - LIBUSB_WIN32_BIN_ARCHIVE="libusb-win32-bin-$LIBUSB_WIN32_BIN_VERSION.zip" - LIBUSB_WIN32_BIN_URL="http://freefr.dl.sourceforge.net/project/libusb-win32/libusb-win32-releases/$LIBUSB_WIN32_BIN_VERSION/$LIBUSB_WIN32_BIN_ARCHIVE" - LIBUSB_WIN32_BIN_DIR="libusb-win32-bin-$LIBUSB_WIN32_BIN_VERSION" -@@ -14,7 +14,8 @@ - fi - fi - --MINGW_DIR="/usr/i586-mingw32msvc" -+MINGW="${MINGW:=i686-w64-mingw32}" -+MINGW_DIR="/usr/$MINGW" - - # Use MinGW binaries before others - #export PATH=$MINGW_DIR/bin:$PATH -@@ -33,11 +34,58 @@ - # Include default MinGW include directory, and libnfc's win32 files - export CFLAGS="$CFLAGS -I$MINGW_DIR/include -I$PWD/contrib/win32" - -+if [ "$MINGW" = "i686-w64-mingw32" ]; then -+ # mingw-64 includes winscard.a and winscard.h -+ # -+ # It is not enough to set libpcsclite_LIBS to "-lwinscard", because it is -+ # forgotten when libnfc is created with libtool. That's why we are setting -+ # LIBS. -+ export LIBS="-lwinscard" -+ -+ echo "MinGW-w64 ships all requirements libnfc." -+ echo "Unfortunately the MinGW-w64 header are currently" -+ echo "buggy. Also, Libtool doesn't support MinGW-w64" -+ echo "very well." -+ echo "" -+ echo "Warning ________________________________________" -+ echo "You will only be able to compile libnfc.dll, but" -+ echo "none of the executables (see utils and examples)." -+ echo "" -+ # You can fix winbase.h by adding the following lines: -+ # #include -+ # #include -+ # But the problem with Libtool remains. -+else -+ if [ -z "$libpcsclite_LIBS$libpcsclite_CFLAGS" ]; then -+ echo "Error __________________________________________" -+ echo "You need to get the PC/SC library from a Windows" -+ echo "machine and the appropriate header files. Then" -+ echo "specify libpcsclite_LIBS=.../WinScard.dll and" -+ echo "libpcsclite_CFLAGS=-I..." -+ fi -+ exit 1 -+fi -+ - ## Configure to cross-compile using mingw32msvc - if [ "$WITH_USB" = "1" ]; then - # with direct-USB drivers (use libusb-win32) -- ./configure --target=i586-mingw32msvc --host=i586-mingw32msvc --with-drivers=pn531_usb,pn533_usb,pn532_uart,arygon --with-libusb-win32=$PWD/$LIBUSB_WIN32_BIN_DIR $* -+ DRIVERS="all" - else - # with UART divers only (can be tested under wine) -- ./configure --target=i586-mingw32msvc --host=i586-mingw32msvc --with-drivers=pn532_uart,arygon $* -+ DRIVERS="pn532_uart,arygon" - fi -+ -+if [ ! -x configure ]; then -+ autoreconf -is -+fi -+ -+./configure --target=$MINGW --host=$MINGW \ -+ --with-drivers=$DRIVERS \ -+ --with-libusb-win32=$PWD/$LIBUSB_WIN32_BIN_DIR \ -+ $* -+ -+if [ "$MINGW" = "i686-w64-mingw32" ]; then -+ # due to the buggy headers from MINGW-64 we always add "contrib/windows.h", -+ # otherwise some windows types won't be available. -+ echo "#include \"contrib/windows.h\"" >> config.h -+fi