From d3149cee79e2f863a85012567d081d8f2357823e Mon Sep 17 00:00:00 2001
From: Joerg Wunsch <j@uriah.heep.sax.de>
Date: Mon, 19 May 2014 12:32:33 +0000
Subject: [PATCH] bug #41854: avrdude 6.1 does not compile on systems without
 libUSB Submitted by Didrik Madheden: * flip1.c: Provide dummy functions for
 the #ifndef HAVE_LIBUSB case * flip2.c: (Dito.)

git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1314 81a1dc3b-b13d-400b-aceb-764788c761c2
---
 ChangeLog |  7 +++++
 flip1.c   | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 flip2.c   | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 178 insertions(+)

diff --git a/ChangeLog b/ChangeLog
index deb6fd06..55127f06 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2014-05-19  Joerg Wunsch <j.gnu@uriah.heep.sax.de>
+
+	bug #41854: avrdude 6.1 does not compile on systems without libUSB
+	Submitted by Didrik Madheden:
+	* flip1.c: Provide dummy functions for the #ifndef HAVE_LIBUSB case
+	* flip2.c: (Dito.)
+
 2014-05-19  Joerg Wunsch <j.gnu@uriah.heep.sax.de>
 
 	* libavrdude.h: Join the former "public" header files (avr.h avrpart.h pindefs.h
diff --git a/flip1.c b/flip1.c
index 8e56b7f7..819ba65c 100644
--- a/flip1.c
+++ b/flip1.c
@@ -163,6 +163,8 @@ static void flip1_setup(PROGRAMMER * pgm);
 static void flip1_teardown(PROGRAMMER * pgm);
 
 /* INTERNAL PROGRAMMER FUNCTION PROTOTYPES */
+#ifdef HAVE_LIBUSB
+// The internal ones are made conditional, as they're not defined further down #ifndef HAVE_LIBUSB
 
 static void flip1_show_info(struct flip1 *flip1);
 
@@ -176,6 +178,8 @@ static const char * flip1_mem_unit_str(enum flip1_mem_unit mem_unit);
 static int flip1_set_mem_page(struct dfu_dev *dfu, unsigned short page_addr);
 static enum flip1_mem_unit flip1_mem_unit(const char *name);
 
+#endif /* HAVE_LIBUSB */
+
 /* THE INITPGM FUNCTION DEFINITIONS */
 
 void flip1_initpgm(PROGRAMMER *pgm)
@@ -200,6 +204,7 @@ void flip1_initpgm(PROGRAMMER *pgm)
   pgm->teardown         = flip1_teardown;
 }
 
+#ifdef HAVE_LIBUSB
 /* EXPORTED PROGRAMMER FUNCTION DEFINITIONS */
 
 int flip1_open(PROGRAMMER *pgm, char *port_spec)
@@ -869,3 +874,82 @@ enum flip1_mem_unit flip1_mem_unit(const char *name) {
     return FLIP1_MEM_UNIT_EEPROM;
   return FLIP1_MEM_UNIT_UNKNOWN;
 }
+#else /* HAVE_LIBUSB */
+// Dummy functions
+int flip1_open(PROGRAMMER *pgm, char *port_spec)
+{
+  fprintf(stderr, "%s: Error: No USB support in this compile of avrdude\n",
+    progname);
+  return -1;
+}
+
+int flip1_initialize(PROGRAMMER* pgm, AVRPART *part)
+{
+  return -1;
+}
+
+void flip1_close(PROGRAMMER* pgm)
+{
+}
+
+void flip1_enable(PROGRAMMER* pgm)
+{
+}
+
+void flip1_disable(PROGRAMMER* pgm)
+{
+}
+
+void flip1_display(PROGRAMMER* pgm, const char *prefix)
+{
+}
+
+int flip1_program_enable(PROGRAMMER* pgm, AVRPART *part)
+{
+  return -1;
+}
+
+int flip1_chip_erase(PROGRAMMER* pgm, AVRPART *part)
+{
+  return -1;
+}
+
+int flip1_read_byte(PROGRAMMER* pgm, AVRPART *part, AVRMEM *mem,
+  unsigned long addr, unsigned char *value)
+{
+  return -1;
+}
+
+int flip1_write_byte(PROGRAMMER* pgm, AVRPART *part, AVRMEM *mem,
+  unsigned long addr, unsigned char value)
+{
+  return -1;
+}
+
+int flip1_paged_load(PROGRAMMER* pgm, AVRPART *part, AVRMEM *mem,
+  unsigned int page_size, unsigned int addr, unsigned int n_bytes)
+{
+  return -1;
+}
+
+int flip1_paged_write(PROGRAMMER* pgm, AVRPART *part, AVRMEM *mem,
+  unsigned int page_size, unsigned int addr, unsigned int n_bytes)
+{
+  return -1;
+}
+
+int flip1_read_sig_bytes(PROGRAMMER* pgm, AVRPART *part, AVRMEM *mem)
+{
+  return -1;
+}
+
+void flip1_setup(PROGRAMMER * pgm)
+{
+}
+
+void flip1_teardown(PROGRAMMER * pgm)
+{
+}
+
+
+#endif /* HAVE_LIBUSB */
diff --git a/flip2.c b/flip2.c
index 66e21a35..80330ffb 100644
--- a/flip2.c
+++ b/flip2.c
@@ -149,6 +149,8 @@ static void flip2_setup(PROGRAMMER * pgm);
 static void flip2_teardown(PROGRAMMER * pgm);
 
 /* INTERNAL PROGRAMMER FUNCTION PROTOTYPES */
+#ifdef HAVE_LIBUSB
+// The internal ones are made conditional, as they're not defined further down #ifndef HAVE_LIBUSB
 
 static void flip2_show_info(struct flip2 *flip2);
 
@@ -169,6 +171,8 @@ static const char * flip2_status_str(const struct dfu_status *status);
 static const char * flip2_mem_unit_str(enum flip2_mem_unit mem_unit);
 static enum flip2_mem_unit flip2_mem_unit(const char *name);
 
+#endif /* HAVE_LIBUSB */
+
 /* THE INITPGM FUNCTION DEFINITIONS */
 
 void flip2_initpgm(PROGRAMMER *pgm)
@@ -193,6 +197,7 @@ void flip2_initpgm(PROGRAMMER *pgm)
   pgm->teardown         = flip2_teardown;
 }
 
+#ifdef HAVE_LIBUSB
 /* EXPORTED PROGRAMMER FUNCTION DEFINITIONS */
 
 int flip2_open(PROGRAMMER *pgm, char *port_spec)
@@ -916,3 +921,85 @@ enum flip2_mem_unit flip2_mem_unit(const char *name) {
     return FLIP2_MEM_UNIT_SIGNATURE;
   return FLIP2_MEM_UNIT_UNKNOWN;
 }
+
+#else /* HAVE_LIBUSB */
+
+/* EXPORTED PROGRAMMER FUNCTION DEFINITIONS */
+
+int flip2_open(PROGRAMMER *pgm, char *port_spec)
+{
+  fprintf(stderr, "%s: Error: No USB support in this compile of avrdude\n",
+    progname);
+  return -1;
+}
+
+int flip2_initialize(PROGRAMMER* pgm, AVRPART *part)
+{
+  return -1;
+}
+
+void flip2_close(PROGRAMMER* pgm)
+{
+}
+
+void flip2_enable(PROGRAMMER* pgm)
+{
+}
+
+void flip2_disable(PROGRAMMER* pgm)
+{
+}
+
+void flip2_display(PROGRAMMER* pgm, const char *prefix)
+{
+}
+
+int flip2_program_enable(PROGRAMMER* pgm, AVRPART *part)
+{
+  return -1;
+}
+
+int flip2_chip_erase(PROGRAMMER* pgm, AVRPART *part)
+{
+  return -1;
+}
+
+int flip2_read_byte(PROGRAMMER* pgm, AVRPART *part, AVRMEM *mem,
+  unsigned long addr, unsigned char *value)
+{
+  return -1;
+}
+
+int flip2_write_byte(PROGRAMMER* pgm, AVRPART *part, AVRMEM *mem,
+  unsigned long addr, unsigned char value)
+{
+  return -1;
+}
+
+int flip2_paged_load(PROGRAMMER* pgm, AVRPART *part, AVRMEM *mem,
+  unsigned int page_size, unsigned int addr, unsigned int n_bytes)
+{
+  return -1;
+}
+
+int flip2_paged_write(PROGRAMMER* pgm, AVRPART *part, AVRMEM *mem,
+  unsigned int page_size, unsigned int addr, unsigned int n_bytes)
+{
+  return -1;
+}
+
+int flip2_read_sig_bytes(PROGRAMMER* pgm, AVRPART *part, AVRMEM *mem)
+{
+  return -1;
+}
+
+void flip2_setup(PROGRAMMER * pgm)
+{
+}
+
+void flip2_teardown(PROGRAMMER * pgm)
+{
+}
+
+
+#endif /* HAVE_LIBUSB */