Various fixes to compile libsidplay2 with newer gcc compilers

Downloaded from
http://tsubasa.googlecode.com/svn/trunk/tsubasa/sidplay2-libs/sidplay2-libs-2.1.1.diff

Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>

--- sidplay-libs-2.1.1.orig/Makefile.in
+++ sidplay-libs-2.1.1/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.8.4 from Makefile.am.
+# Makefile.in generated by automake 1.8.5 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -253,7 +253,7 @@
 	fi; \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -f $$subdir/TAGS && \
+	    test ! -f $$subdir/TAGS || \
 	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
@@ -264,7 +264,7 @@
 	  $(AWK) '    { files[$$0] = 1; } \
 	       END { for (i in files) print i; }'`; \
 	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
-	  test -z "$$unique" && unique=$$empty_fix; \
+	  test -n "$$unique" || unique=$$empty_fix; \
 	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
 	    $$tags $$unique; \
 	fi
--- sidplay-libs-2.1.1.orig/aclocal.m4
+++ sidplay-libs-2.1.1/aclocal.m4
@@ -1,4 +1,4 @@
-# generated automatically by aclocal 1.8.4 -*- Autoconf -*-
+# generated automatically by aclocal 1.8.5 -*- Autoconf -*-
 
 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
 # Free Software Foundation, Inc.
@@ -40,7 +40,7 @@
 # Call AM_AUTOMAKE_VERSION so it can be traced.
 # This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-	 [AM_AUTOMAKE_VERSION([1.8.4])])
+	 [AM_AUTOMAKE_VERSION([1.8.5])])
 
 # AM_AUX_DIR_EXPAND
 
--- sidplay-libs-2.1.1.orig/builders/Makefile.in
+++ sidplay-libs-2.1.1/builders/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.8.4 from Makefile.am.
+# Makefile.in generated by automake 1.8.5 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -130,9 +130,9 @@
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  builders/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  builders/Makefile'; \
 	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  builders/Makefile
+	  $(AUTOMAKE) --foreign  builders/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -234,7 +234,7 @@
 	fi; \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -f $$subdir/TAGS && \
+	    test ! -f $$subdir/TAGS || \
 	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
@@ -245,7 +245,7 @@
 	  $(AWK) '    { files[$$0] = 1; } \
 	       END { for (i in files) print i; }'`; \
 	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
-	  test -z "$$unique" && unique=$$empty_fix; \
+	  test -n "$$unique" || unique=$$empty_fix; \
 	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
 	    $$tags $$unique; \
 	fi
--- sidplay-libs-2.1.1.orig/builders/hardsid-builder/src/hardsid-builder.cpp
+++ sidplay-libs-2.1.1/builders/hardsid-builder/src/hardsid-builder.cpp
@@ -47,6 +47,7 @@
  ***************************************************************************/
 
 #include <stdio.h>
+#include <cstring>
 #include "config.h"
 
 #ifdef HAVE_EXCEPTIONS
--- sidplay-libs-2.1.1.orig/builders/resid-builder/src/resid-builder.cpp
+++ sidplay-libs-2.1.1/builders/resid-builder/src/resid-builder.cpp
@@ -37,6 +37,7 @@
  ***************************************************************************/
 
 #include <stdio.h>
+#include <cstring>
 
 #include "config.h"
 #ifdef HAVE_EXCEPTIONS
--- sidplay-libs-2.1.1.orig/builders/resid-builder/src/resid.cpp
+++ sidplay-libs-2.1.1/builders/resid-builder/src/resid.cpp
@@ -16,6 +16,7 @@
  *                                                                         *
  ***************************************************************************/
 
+#include <cstring>
 #include "config.h"
 
 #ifdef HAVE_EXCEPTIONS
--- sidplay-libs-2.1.1.orig/configure.ac
+++ sidplay-libs-2.1.1/configure.ac
@@ -2,7 +2,7 @@
 
 #Variables
 pwd=`pwd`
-builders='${libdir}'/sidplay/builders
+builders='${libdir}'/
 ac_configure_args="$ac_configure_args --disable-library-checks"
 
 AC_CONFIG_AUX_DIR(unix)
@@ -11,7 +11,7 @@
 
 hardsid=false
 case "$host" in
-    *linux*) hardsid=true
+    *linux*|*-k*bsd*-gnu) hardsid=true
         ;;
 esac
 AM_CONDITIONAL(HARDSID, test x$hardsid = xtrue)
--- sidplay-libs-2.1.1.orig/libsidplay/include/sidplay/SmartPtr.h
+++ sidplay-libs-2.1.1/libsidplay/include/sidplay/SmartPtr.h
@@ -17,16 +17,16 @@
 		doFree = bufOwner;
 		if ( bufferLen >= 1 )
 		{
-			pBufCurrent = ( bufBegin = buffer );
-			bufEnd = bufBegin + bufferLen;
-			bufLen = bufferLen;
-			status = true;
+			this->pBufCurrent = ( this->bufBegin = buffer );
+			this->bufEnd = this->bufBegin + bufferLen;
+			this->bufLen = bufferLen;
+			this->status = true;
 		}
 		else
 		{
-			pBufCurrent = ( bufBegin = ( bufEnd = 0 ));
-			bufLen = 0;
-			status = false;
+			this->pBufCurrent = ( this->bufBegin = ( this->bufEnd = 0 ));
+			this->bufLen = 0;
+			this->status = false;
 		}
 	}
 	
@@ -211,16 +211,16 @@
 	{
 		if ( bufferLen >= 1 )
 		{
-			pBufCurrent = ( bufBegin = buffer );
-			bufEnd = bufBegin + bufferLen;
-			bufLen = bufferLen;
-			status = true;
+			this->pBufCurrent = ( this->bufBegin = buffer );
+			this->bufEnd = this->bufBegin + bufferLen;
+			this->bufLen = bufferLen;
+			this->status = true;
 		}
 		else
 		{
-			pBufCurrent = bufBegin = bufEnd = 0;
-			bufLen = 0;
-			status = false;
+			this->pBufCurrent = this->bufBegin = this->bufEnd = 0;
+			this->bufLen = 0;
+			this->status = false;
 		}
 	}
 };
--- sidplay-libs-2.1.1.orig/libsidplay/include/sidplay/sidendian.h
+++ sidplay-libs-2.1.1/libsidplay/include/sidplay/sidendian.h
@@ -16,6 +16,10 @@
  ***************************************************************************/
 /***************************************************************************
  *  $Log: sidendian.h,v $
+ *  Revision 1.6  2005/11/20 11:02:06  s_a_white
+ *  Work around for bug in gcc 4 (optimiser breaks if variable never has a
+ *  direct assignment).
+ *
  *  Revision 1.5  2001/07/03 22:44:13  s_a_white
  *  Added endian_16 to convert a 16 bit value to an array of 8s.
  *
@@ -141,7 +145,7 @@
 // Convert high-byte and low-byte to 16-bit word.
 inline uint_least16_t endian_16 (uint8_t hi, uint8_t lo)
 {
-    uint_least16_t word;
+    uint_least16_t word = 0;
     endian_16lo8 (word, lo);
     endian_16hi8 (word, hi);
     return word;
@@ -165,7 +169,7 @@
 
 inline void endian_16 (char ptr[2], uint_least16_t word)
 {
-	endian_16 ((uint8_t *) ptr, word);
+    endian_16 ((uint8_t *) ptr, word);
 }
 
 // Convert high-byte and low-byte to 16-bit little endian word.
@@ -334,7 +338,7 @@
 // Swap word endian.
 inline void endian_32swap8 (uint_least32_t &dword)
 {
-    uint_least16_t lo, hi;
+    uint_least16_t lo = 0, hi = 0;
     lo = endian_32lo16 (dword);
     hi = endian_32hi16 (dword);
     endian_16swap8 (lo);
@@ -346,8 +350,8 @@
 // Convert high-byte and low-byte to 32-bit word.
 inline uint_least32_t endian_32 (uint8_t hihi, uint8_t hilo, uint8_t hi, uint8_t lo)
 {
-    uint_least32_t dword;
-    uint_least16_t word;
+    uint_least32_t dword = 0;
+    uint_least16_t word  = 0;
     endian_32lo8  (dword, lo);
     endian_32hi8  (dword, hi);
     endian_16lo8  (word,  hilo);
@@ -374,7 +378,7 @@
     defined(SID_WORDS_LITTLEENDIAN)
     *((uint_least32_t *) ptr) = dword;
 #else
-    uint_least16_t word;
+    uint_least16_t word = 0;
     ptr[0] = endian_32lo8  (dword);
     ptr[1] = endian_32hi8  (dword);
     word   = endian_32hi16 (dword);
@@ -401,7 +405,7 @@
     defined(SID_WORDS_BIGENDIAN)
     *((uint_least32_t *) ptr) = dword;
 #else
-    uint_least16_t word;
+    uint_least16_t word = 0;
     word   = endian_32hi16 (dword);
     ptr[1] = endian_16lo8  (word);
     ptr[0] = endian_16hi8  (word);
--- sidplay-libs-2.1.1.orig/libsidplay/unix/config.h.in
+++ sidplay-libs-2.1.1/libsidplay/unix/config.h.in
@@ -72,22 +72,22 @@
 /* Define to the version of this package. */
 #undef PACKAGE_VERSION
 
-/* The size of a `char', as computed by sizeof. */
+/* The size of `char', as computed by sizeof. */
 #undef SIZEOF_CHAR
 
-/* The size of a `int', as computed by sizeof. */
+/* The size of `int', as computed by sizeof. */
 #undef SIZEOF_INT
 
 /* The number of bytes in type long */
 #undef SIZEOF_LONG
 
-/* The size of a `long int', as computed by sizeof. */
+/* The size of `long int', as computed by sizeof. */
 #undef SIZEOF_LONG_INT
 
 /* The number of bytes in type short */
 #undef SIZEOF_SHORT
 
-/* The size of a `short int', as computed by sizeof. */
+/* The size of `short int', as computed by sizeof. */
 #undef SIZEOF_SHORT_INT
 
 /* The number of bytes in type void* */
--- sidplay-libs-2.1.1.orig/libsidplay/unix/my_macros.m4
+++ sidplay-libs-2.1.1/libsidplay/unix/my_macros.m4
@@ -105,8 +105,9 @@
     AC_CACHE_VAL(test_cv_have_ios_openmode,
     [
         AC_TRY_COMPILE(
-            [#include <fstream.h>
-             #include <iomanip.h>],
+            [#include <fstream>
+             #include <iomanip>
+	     using namespace std;],
             [ios::openmode myTest = ios::in;],
             [test_cv_have_ios_openmode=yes],
             [test_cv_have_ios_openmode=no]
--- sidplay-libs-2.1.1.orig/libsidplay/unix/sidint.h
+++ sidplay-libs-2.1.1/libsidplay/unix/sidint.h
@@ -0,0 +1,17 @@
+#ifndef _UNIX_SIDINT_H
+#define _UNIX_SIDINT_H 1
+#ifndef _GENERATED_STDINT_H
+#define _GENERATED_STDINT_H "libsidplay 2.1.1"
+/* generated using a gnu compiler version gcc (Debian 4.3-20080219-1) 4.3.0 20080219 (prerelease) [gcc-4_3-branch revision 132456] Copyright (C) 2007 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */
+
+#include <stdint.h>
+
+
+/* system headers have good uint64_t */
+#ifndef _HAVE_UINT64_T
+#define _HAVE_UINT64_T
+#endif
+
+  /* once */
+#endif
+#endif
--- sidplay-libs-2.1.1.orig/libsidutils/include/sidplay/utils/SidUsage.h
+++ sidplay-libs-2.1.1/libsidutils/include/sidplay/utils/SidUsage.h
@@ -33,7 +33,7 @@
     uint_least16_t length;  // usage scan length
 
     // Copy common parts of basic usage to extended usage.
-    sid2_usage_t &sid2_usage_t::operator= (const sid_usage_t &usage)
+    sid2_usage_t &operator= (const sid_usage_t &usage)
     {
         *((sid_usage_t *) this) = usage;
         return *this;
