Hello.
I attached a patch to this message with some fixes that I would like to suggest.

* configure.ac: Added AC_LIBTOOL_WIN32_DLL for enabling the creation of shared 
libraries.
* configure.ac: Added -I$(top_srcdir)/include to LIBCDIO_CFLAGS, it allows to 
build outside the source tree.
* configure.ac: Added LT_NO_UNDEFINED for adding '-no-undefined' switch to 
libtool when building win32 shared libraries.
* configure.ac: Check for Windows.h presence if under Mingw (included for using 
Sleep() function).
* configure.ac: Check for more missing functions: setenv(), unsetenv(), 
sleep(), gmtime_r(), localtime_r().

* example/cdchange.c: If sleep() function does not exist, it tries to emulate 
it with a similar code (require inclusion of Windows.h)

* src/cddb.c:
* lib/cdda_interface/scsi_interface.c: Compilation fails because u_int32_t is 
undefined. It has been changed to uint32_t to be compliant to all other parts 
of the libraries.

* lib/cdda_interface/Makefile.am:
* lib/iso9660/Makefile.am:
* lib/cdio++/Makefile.am:
* lib/paranoia/Makefile.am:
* lib/udf/Makefile.am:
* lib/driver/Makefile.am: added LT_NO_UNDEFINED to libtool flags.

* lib/iso9660/iso9660.c: Added replacements for setenv(), unsetenv(), 
gmtime_r(), localtime_r().

Sincerely,

Carlo Bramini.

diff -r -u libcdio/configure.ac libcdio-new/configure.ac
--- libcdio/configure.ac        Thu Jun 19 13:41:40 2008
+++ libcdio-new/configure.ac    Tue Jun 24 11:09:21 2008
@@ -355,6 +355,9 @@
 fi
 dnl
 
+dnl Enable the creation of shared libraries under Win32.
+AC_LIBTOOL_WIN32_DLL
+
 dnl AM_PROG_LIBTOOL tests whether we have GNU ld
 dnl this must come before checking --with-versioned-libs
 dnl which requires GNU ld.
@@ -406,7 +409,7 @@
 dnl Checks for header files.
      
 LIBCDIO_CDDA_LIBS='$(top_builddir)/lib/cdda_interface/libcdio_cdda.la'
-LIBCDIO_CFLAGS='-I$(top_srcdir)/lib/driver -I$(top_srcdir)/include/'
+LIBCDIO_CFLAGS='-I$(top_srcdir)/lib/driver -I$(top_builddir)/include 
-I$(top_srcdir)/include/'
 LIBCDIO_LIBS='$(top_builddir)/lib/driver/libcdio.la'
 LIBCDIO_DEPS="$LIBCDIO_LIBS"
 LIBCDIOPP_LIBS='$(top_builddir)/lib/cdio++/libcdio++.la'
@@ -427,6 +430,9 @@
 AC_SUBST(LIBISO9660_LIBS)
 AC_SUBST(LIBUDF_LIBS)
 
+dnl Libtool flag for strict linkage
+LT_NO_UNDEFINED=
+
 case $host_os in
      aix*)
        ## Don't use AIX driver until starts to really work
@@ -502,11 +508,13 @@
                   defined as a variable. In cygwin it is a function too])
        ;;
      mingw*)
+       AC_CHECK_HEADERS(windows.h)
        AC_DEFINE([MINGW32], [1], 
                   [Define 1 if you are compiling using MinGW])
        AC_DEFINE([HAVE_WIN32_CDROM], [1], 
                   [Define 1 if you have MinGW CD-ROM support])
        LIBS="$LIBS -lwinmm -mwindows"
+       LT_NO_UNDEFINED="-no-undefined"
        cd_drivers="${cd_drivers}, MinGW "
        ;;
      freebsd4.*|freebsd5.*|freebsd6*|freebsd7*|dragonfly*|kfreebsd*)
@@ -527,6 +535,8 @@
        ;;
 esac
 
+AC_SUBST(LT_NO_UNDEFINED)
+
 AC_MSG_CHECKING(extern long timezone variable)
 AC_LINK_IFELSE([
 #ifdef NEED_TIMEZONEVAR
@@ -561,7 +571,8 @@
 
 AC_CHECK_FUNCS( [bzero drand48 ftruncate geteuid getgid \
                 getuid getpwuid gettimeofday lstat memcpy memset \
-                rand seteuid setegid snprintf  tzset vsnprintf readlink] )
+                rand seteuid setegid snprintf setenv unsetenv tzset \
+                sleep vsnprintf readlink gmtime_r localtime_r] )
 
 # check for timegm() support
 AC_CHECK_FUNC(timegm, AC_DEFINE(HAVE_TIMEGM,1,
diff -r -u libcdio/example/cdchange.c libcdio-new/example/cdchange.c
--- libcdio/example/cdchange.c  Mon Mar 24 15:30:55 2008
+++ libcdio-new/example/cdchange.c      Tue Jun 24 11:11:44 2008
@@ -38,6 +38,22 @@
 #ifdef HAVE_ERRNO_H
 # include <errno.h>
 #endif 
+
+#ifdef HAVE_WINDOWS_H
+# include <windows.h>
+#endif
+
+#ifndef HAVE_SLEEP
+static void
+sleep(unsigned int ms)
+{
+#if defined(_WIN32)
+    Sleep(ms);
+#else
+#error sleep() unimplemented
+#endif
+}
+#endif
 
 #include <cdio/cdio.h>
 int
diff -r -u libcdio/lib/cdda_interface/Makefile.am 
libcdio-new/lib/cdda_interface/Makefile.am
--- libcdio/lib/cdda_interface/Makefile.am      Fri Jun 13 19:26:22 2008
+++ libcdio-new/lib/cdda_interface/Makefile.am  Tue Jun 24 10:30:35 2008
@@ -57,7 +57,7 @@
 lib_LTLIBRARIES = libcdio_cdda.la
 
 libcdio_cdda_la_SOURCES = $(libcdio_cdda_sources)
-libcdio_cdda_la_ldflags = -version-info 
$(libcdio_cdda_la_CURRENT):$(libcdio_cdda_la_REVISION):$(libcdio_cdda_la_AGE)
+libcdio_cdda_la_ldflags = -version-info 
$(libcdio_cdda_la_CURRENT):$(libcdio_cdda_la_REVISION):$(libcdio_cdda_la_AGE) 
@LT_NO_UNDEFINED@
 
 INCLUDES = $(LIBCDIO_CFLAGS)
 
diff -r -u libcdio/lib/cdda_interface/scsi_interface.c 
libcdio-new/lib/cdda_interface/scsi_interface.c
--- libcdio/lib/cdda_interface/scsi_interface.c Fri Jun 13 19:26:23 2008
+++ libcdio-new/lib/cdda_interface/scsi_interface.c     Tue Jun 24 10:16:12 2008
@@ -575,7 +575,7 @@
 static int 
 scsi_read_toc2 (cdrom_drive_t *d)
 {
-  u_int32_t foo,bar;
+  uint32_t foo,bar;
 
   int i;
   track_t i_tracks;
diff -r -u libcdio/lib/cdio++/Makefile.am libcdio-new/lib/cdio++/Makefile.am
--- libcdio/lib/cdio++/Makefile.am      Thu Mar 20 19:02:38 2008
+++ libcdio-new/lib/cdio++/Makefile.am  Tue Jun 24 09:45:13 2008
@@ -50,7 +50,7 @@
 libcdiopp_sources = cdio.cpp devices.cpp
 
 libcdio___la_SOURCES = $(libcdiopp_sources)
-libcdio___la_ldflags = -version-info 
$(libcdiopp_la_CURRENT):$(libcdiopp_la_REVISION):$(libcdiopp_la_AGE)
+libcdio___la_ldflags = -version-info 
$(libcdiopp_la_CURRENT):$(libcdiopp_la_REVISION):$(libcdiopp_la_AGE) 
@LT_NO_UNDEFINED@
 
 libiso9660pp_la_CURRENT = 0
 libiso9660pp_la_REVISION = 0
@@ -59,6 +59,6 @@
 libiso9660pp_sources = iso9660.cpp
 
 libiso9660___la_SOURCES = $(libiso9660pp_sources)
-libiso9660___la_ldflags = -version-info 
$(libiso9660pp_la_CURRENT):$(libiso9660pp_la_REVISION):$(libiso9660pp_la_AGE)
+libiso9660___la_ldflags = -version-info 
$(libiso9660pp_la_CURRENT):$(libiso9660pp_la_REVISION):$(libiso9660pp_la_AGE) 
@LT_NO_UNDEFINED@
 
-INCLUDES = -I$(top_srcdir)/include/
+INCLUDES = -I$(top_srcdir)/include/ -I$(top_builddir)/include
diff -r -u libcdio/lib/driver/Makefile.am libcdio-new/lib/driver/Makefile.am
--- libcdio/lib/driver/Makefile.am      Thu Mar 27 17:40:50 2008
+++ libcdio-new/lib/driver/Makefile.am  Tue Jun 24 08:08:43 2008
@@ -101,7 +101,7 @@
 libcdio_la_LIBADD  = @LIBICONV@
 
 libcdio_la_SOURCES = $(libcdio_sources)
-libcdio_la_ldflags = -version-info 
$(libcdio_la_CURRENT):$(libcdio_la_REVISION):$(libcdio_la_AGE)
+libcdio_la_ldflags = -version-info 
$(libcdio_la_CURRENT):$(libcdio_la_REVISION):$(libcdio_la_AGE) @LT_NO_UNDEFINED@
 
 INCLUDES = $(LIBCDIO_CFLAGS)
 
diff -r -u libcdio/lib/iso9660/Makefile.am libcdio-new/lib/iso9660/Makefile.am
--- libcdio/lib/iso9660/Makefile.am     Thu Mar 20 19:02:38 2008
+++ libcdio-new/lib/iso9660/Makefile.am Tue Jun 24 08:46:10 2008
@@ -66,7 +66,7 @@
        xa.c
 
 libiso9660_la_LIBADD = @LIBCDIO_LIBS@
-libiso9660_la_ldflags = -version-info 
$(libiso9660_la_CURRENT):$(libiso9660_la_REVISION):$(libiso9660_la_AGE)
+libiso9660_la_ldflags = -version-info 
$(libiso9660_la_CURRENT):$(libiso9660_la_REVISION):$(libiso9660_la_AGE) 
@LT_NO_UNDEFINED@
 libiso9660_la_dependencies = libcdio.la
 
 INCLUDES = $(LIBCDIO_CFLAGS)
diff -r -u libcdio/lib/iso9660/iso9660.c libcdio-new/lib/iso9660/iso9660.c
--- libcdio/lib/iso9660/iso9660.c       Tue Jun  3 08:40:15 2008
+++ libcdio-new/lib/iso9660/iso9660.c   Tue Jun 24 09:36:45 2008
@@ -57,6 +57,22 @@
 #include <errno.h>
 #endif
 
+#ifndef HAVE_SETENV
+static int
+setenv(const char *envname, const char *envval, int overwrite)
+{
+  return -1;
+}
+#endif
+
+#ifndef HAVE_UNSETENV
+static int
+unsetenv(const char *envname)
+{
+  return -1;
+}
+#endif
+
 #ifndef HAVE_TIMEGM
 static time_t
 timegm(struct tm *tm)
@@ -76,7 +92,35 @@
   return ret;
 }
 #endif
+
+#ifndef HAVE_GMTIME_R
+static struct tm *
+gmtime_r(const time_t *timer, struct tm *result)
+{
+    struct tm *tmp = gmtime(timer);
+
+    if (tmp) {
+        *result = *tmp;
+        return result;
+    }
+    return tmp;
+}
+#endif
 
+#ifndef HAVE_LOCALTIME_R
+static struct tm *
+localtime_r(const time_t *timer, struct tm *result)
+{
+    struct tm *tmp = localtime(timer);
+
+    if (tmp) {
+        *result = *tmp;
+        return result;
+    }
+    return tmp;
+}
+#endif
+
 static const char _rcsid[] = "$Id: iso9660.c,v 1.40 2008/06/03 08:40:15 rocky 
Exp $";
 
 /* Variables to hold debugger-helping enumerations */
diff -r -u libcdio/lib/paranoia/Makefile.am libcdio-new/lib/paranoia/Makefile.am
--- libcdio/lib/paranoia/Makefile.am    Thu Mar 20 19:02:38 2008
+++ libcdio-new/lib/paranoia/Makefile.am        Tue Jun 24 09:42:53 2008
@@ -56,7 +56,7 @@
 lib_LTLIBRARIES = libcdio_paranoia.la
 
 libcdio_paranoia_la_SOURCES = $(libcdio_paranoia_sources)
-libcdio_paranoia_la_ldflags = -version-info 
$(libcdio_paranoia_la_CURRENT):$(libcdio_paranoia_la_REVISION):$(libcdio_paranoia_la_AGE)
+libcdio_paranoia_la_ldflags = -version-info 
$(libcdio_paranoia_la_CURRENT):$(libcdio_paranoia_la_REVISION):$(libcdio_paranoia_la_AGE)
 @LT_NO_UNDEFINED@
 
 INCLUDES = $(LIBCDIO_CFLAGS)
 
diff -r -u libcdio/lib/udf/Makefile.am libcdio-new/lib/udf/Makefile.am
--- libcdio/lib/udf/Makefile.am Thu Mar 20 19:02:38 2008
+++ libcdio-new/lib/udf/Makefile.am     Tue Jun 24 09:42:03 2008
@@ -53,6 +53,6 @@
 
 libudf_la_SOURCES = udf.c udf_file.c udf_fs.c udf_time.c filemode.c
 
-libudf_la_LIBADD = @LIBCDIO_LIBS@
+libudf_la_LIBADD = @LIBCDIO_LIBS@ @LT_NO_UNDEFINED@
 
 INCLUDES = $(LIBCDIO_CFLAGS)
diff -r -u libcdio/src/cddb.c libcdio-new/src/cddb.c
--- libcdio/src/cddb.c  Mon Apr 14 17:30:27 2008
+++ libcdio-new/src/cddb.c      Tue Jun 24 10:15:27 2008
@@ -47,7 +47,7 @@
       the total length of the disk, and 
       the number of tracks.
 */
-u_int32_t
+uint32_t
 cddb_discid(CdIo_t *p_cdio, track_t i_tracks)
 {
   int i,t,n=0;
diff -r -u libcdio/src/cddb.h libcdio-new/src/cddb.h
--- libcdio/src/cddb.h  Mon Apr 14 17:30:27 2008
+++ libcdio-new/src/cddb.h      Tue Jun 24 10:13:50 2008
@@ -37,7 +37,7 @@
       the total length of the disk, and 
       the number of tracks.
 */
-u_int32_t cddb_discid(CdIo_t *p_cdio, track_t i_tracks);
+uint32_t cddb_discid(CdIo_t *p_cdio, track_t i_tracks);
 
 #ifdef HAVE_CDDB
 #include <cddb/cddb.h>

Reply via email to