libcdio-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Libcdio-devel] Patch for cross-compiling libcdio-0.80


From: Peter Hartley
Subject: Re: [Libcdio-devel] Patch for cross-compiling libcdio-0.80
Date: Wed, 23 Apr 2008 21:00:21 +0100

On Wed, 2008-04-23 at 20:54 +0100, Peter Hartley wrote:
> Hi there,
> 
> Attached please find the patch I needed to make to libcdio 0.80, in
> order to cross-compile it for mingw32.

Whoops, does the list software eat attachments? I'm sure it was there
when I sent it. Here it is inline.

        Peter

------------->8-----
--- config.h.in~        2008-04-23 19:54:21.000000000 +0100
+++ config.h.in 2008-04-23 20:17:06.000000000 +0100
@@ -184,6 +184,9 @@
 /* Define to 1 if you have the <string.h> header file. */
 #undef HAVE_STRING_H
 
+/* Define this if you have struct timespec */
+#undef HAVE_STRUCT_TIMESPEC
+
 /* Define to 1 if you have the <sys/cdio.h> header file. */
 #undef HAVE_SYS_CDIO_H
 
--- configure.ac~       2008-03-15 17:45:17.000000000 +0000
+++ configure.ac        2008-04-23 20:18:24.000000000 +0100
@@ -246,6 +246,15 @@ int main(int argc, char **argv) {
    [AC_MSG_RESULT(no); ac_have_issock=no],
    [AC_MSG_RESULT(no); ac_have_issock=no])
 
+AC_MSG_CHECKING([for struct timespec])
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+],[struct timespec ts;])],
+[ AC_MSG_RESULT(yes); AC_DEFINE(HAVE_STRUCT_TIMESPEC, [], [Define this
if you have struct timespec]) ],
+[ AC_MSG_RESULT(no) ])
+
 dnl empty_array_size
 AC_MSG_CHECKING([how to create empty arrays])
 
@@ -271,6 +280,49 @@ dnl empty_array_size
 
 dnl bitfield order
 AC_MSG_CHECKING(bitfield ordering in structs)
+dnl First see whether we can work out ordering without running a
program --
+dnl for instance, when cross-compiling
+boring_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS -O2"
+AC_LINK_IFELSE([
+int conftest_undefined_reference_();
+int main() {
+  union {
+    unsigned int x;
+    struct {
+      unsigned int x0: 1;
+      unsigned int x1: 31;
+    } s;
+  } u;
+
+  u.x = 0;
+  u.s.x0 = 1;
+  if (u.x == 1)
+    return conftest_undefined_reference_();
+  return 0;
+}
+], [bf_lsbf=0])
+AC_LINK_IFELSE([
+int conftest_undefined_reference_();
+int main() {
+  union {
+    unsigned int x;
+    struct {
+      unsigned int x0: 1;
+      unsigned int x1: 31;
+    } s;
+  } u;
+
+  u.x = 0;
+  u.s.x0 = 1;
+  if (u.x == 0x80000000)
+    return conftest_undefined_reference_();
+  return 0;
+}
+], [bf_lsbf=1])
+CFLAGS="$boring_CFLAGS"
+dnl If we haven't found out for certain yet, try the runtime test
+if test "x$bf_lsbf" = "x"; then
 AC_TRY_RUN([
 int
  main() {
@@ -292,6 +344,7 @@ main() {
   if (sizeof (bf) != 1) return 1;
   return *((unsigned char*) &bf) != 0xa5; }
 ], bf_lsbf=0, AC_MSG_ERROR([unsupported bitfield ordering])))
+fi
 if test "x$bf_lsbf" = "x1"; then
  AC_MSG_RESULT(LSBF)
  AC_DEFINE(BITFIELD_LSBF, [], [compiler does least-significant bit
first in struct bitfields])
@@ -467,7 +520,7 @@ int has_timeout=sizeof(test.timeout);],
 esac
 
 AC_MSG_CHECKING(extern long timezone variable)
-AC_TRY_RUN([
+AC_LINK_IFELSE([
 #ifdef NEED_TIMEZONEVAR
 #define timezonevar 1
 #endif
--- lib/udf/udf.c~      2006-04-17 04:32:38.000000000 +0100
+++ lib/udf/udf.c       2008-04-23 20:09:45.000000000 +0100
@@ -64,13 +64,17 @@ udf_get_posix_filemode(const udf_dirent_
     if (i_perms & FE_PERM_U_WRITE) mode |= S_IWUSR;
     if (i_perms & FE_PERM_U_EXEC)  mode |= S_IXUSR;
     
+#ifdef S_IRGRP
     if (i_perms & FE_PERM_G_READ)  mode |= S_IRGRP;
     if (i_perms & FE_PERM_G_WRITE) mode |= S_IWGRP;
     if (i_perms & FE_PERM_G_EXEC)  mode |= S_IXGRP;
+#endif
     
+#ifdef S_IROTH
     if (i_perms & FE_PERM_O_READ)  mode |= S_IROTH;
     if (i_perms & FE_PERM_O_WRITE) mode |= S_IWOTH;
     if (i_perms & FE_PERM_O_EXEC)  mode |= S_IXOTH;
+#endif
 
     switch (udf_fe.icb_tag.file_type) {
     case ICBTAG_FILE_TYPE_DIRECTORY: 
@@ -79,24 +83,30 @@ udf_get_posix_filemode(const udf_dirent_
     case ICBTAG_FILE_TYPE_REGULAR:
       mode |= S_IFREG;
       break;
+#ifdef S_IFLNK
     case ICBTAG_FILE_TYPE_SYMLINK:
       mode |= S_IFLNK;
       break;
+#endif
     case ICBTAG_FILE_TYPE_CHAR:
       mode |= S_IFCHR;
       break;
+#ifdef S_IFSOCK
     case ICBTAG_FILE_TYPE_SOCKET:
       mode |= S_IFSOCK;
       break;
+#endif
     case ICBTAG_FILE_TYPE_BLOCK:
       mode |= S_IFBLK;
       break;
     default: ;
     };
   
+#ifdef S_ISUID
     if (i_flags & ICBTAG_FLAG_SETUID) mode |= S_ISUID;
     if (i_flags & ICBTAG_FLAG_SETGID) mode |= S_ISGID;
     if (i_flags & ICBTAG_FLAG_STICKY) mode |= S_ISVTX;
+#endif
   }
   
   return mode;
--- lib/udf/udf_time.c~ 2006-02-13 01:59:42.000000000 +0000
+++ lib/udf/udf_time.c  2008-04-23 20:19:33.000000000 +0100
@@ -147,7 +147,7 @@ udf_stamp_to_time(time_t *dest, long int
   return dest;
 }
 
-
+#ifdef HAVE_STRUCT_TIMESPEC
 /*!
   Convert a UDF timestamp to a time_t. If microseconds are desired,
   use dest_usec. The return value is the same as dest. */
@@ -205,6 +205,7 @@ udf_timespec_to_stamp(const struct times
                         - (dest->hundreds_of_microseconds * 100) );
   return dest;
 }
+#endif
 
 /*!
   Return the modification time of the file.
--- lib/iso9660/xa.c~   2006-01-14 09:48:42.000000000 +0000
+++ lib/iso9660/xa.c    2008-04-23 20:07:41.000000000 +0100
@@ -163,11 +163,19 @@ iso9660_get_posix_filemode_from_xa(uint1
   if (i_perms & XA_PERM_RUSR)  mode |= S_IRUSR;
   if (i_perms & XA_PERM_XUSR)  mode |= S_IXUSR;
   
+#ifdef S_IRGRP
   if (i_perms & XA_PERM_RGRP)  mode |= S_IRGRP;
+#endif
+#ifdef S_IXGRP
   if (i_perms & XA_PERM_XGRP)  mode |= S_IXGRP;
+#endif
   
+#ifdef S_IROTH
   if (i_perms & XA_PERM_ROTH)  mode |= S_IROTH;
+#endif
+#ifdef S_IXOTH
   if (i_perms & XA_PERM_XOTH)  mode |= S_IXOTH;
+#endif
   
   if (i_perms & XA_ATTR_DIRECTORY)  mode |= S_IFDIR;
   
--- lib/driver/gnu_linux.c~     2007-03-07 04:35:47.000000000 +0000
+++ lib/driver/gnu_linux.c      2008-04-23 20:05:27.000000000 +0100
@@ -32,8 +32,6 @@ static const char _rcsid[] = "$Id: gnu_l
 
 #include <string.h>
 #include <limits.h>
-#include <sys/types.h>
-#include <sys/wait.h>
 
 #include <cdio/sector.h>
 #include <cdio/util.h>
@@ -47,6 +45,9 @@ static const char _rcsid[] = "$Id: gnu_l
 
 #ifdef HAVE_LINUX_CDROM
 
+#include <sys/types.h>
+#include <sys/wait.h>
+
 #if defined(HAVE_LINUX_VERSION_H)
 # include <linux/version.h>
 # if LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,16)
--- src/Makefile.am~    2008-03-15 16:21:28.000000000 +0000
+++ src/Makefile.am     2008-04-23 20:31:44.000000000 +0100
@@ -21,11 +21,6 @@
 
 GETOPT_C = getopt.c getopt1.c
 
-man_MANS = cd-drive.1 cd-info.1 cd-read.1 iso-read.1 iso-info.1 
-EXTRA_DIST = cd-drive.help2man cd-info.help2man cd-read.help2man \
-            iso-info.help2man iso-read.help2man $(GETOPT_C) getopt.h \
-             $(man_MANS)
-
 noinst_HEADERS = cddb.h getopt.h util.h
 
 ####################################################
@@ -39,10 +34,6 @@ endif
 address@hidden@
 address@hidden@
 
-$(man_MANS): %.1: % %.help2man
-       -$(HELP2MAN) --opt-include=$<.help2man --no-info --output=$@ ./$<
-MOSTLYCLEANFILES = $(man_MANS)
-
 if BUILD_CDDA_PLAYER
 cdda_player_SOURCES = cdda-player.c cddb.c cddb.h $(GETOPT_C)
 cdda_player_LDADD   = $(LIBCDIO_LIBS) $(CDDB_LIBS) $(CDDA_PLAYER_LIBS)
@@ -53,12 +44,14 @@ if BUILD_CD_DRIVE
 cd_drive_SOURCES = cd-drive.c util.c util.h $(GETOPT_C)
 cd_drive_LDADD   =  $(LIBISO9660_LIBS) $(LIBCDIO_LIBS) $(LIBICONV)
 bin_cd_drive     = cd-drive
+man_cd_drive    = cd-drive.1
 endif
 
 if BUILD_CDINFO
 cd_info_SOURCES = cd-info.c cddb.c cddb.h util.c util.h $(GETOPT_C)
 cd_info_LDADD   =  $(LIBISO9660_LIBS) $(LIBCDIO_LIBS) $(CDDB_LIBS)
$(VCDINFO_LIBS) $(LIBICONV)
 bin_cd_info     = cd-info 
+man_cd_info     = cd-info.1
 endif
 
 if BUILD_CDINFO_LINUX
@@ -71,18 +64,21 @@ if BUILD_CD_READ
 cd_read_SOURCES = cd-read.c util.c util.h $(GETOPT_C)
 cd_read_LDADD   = $(LIBISO9660_LIBS) $(LIBCDIO_LIBS) $(LIBICONV)
 bin_cd_read     = cd-read 
+man_cd_read     = cd-read.1
 endif
 
 if BUILD_ISO_INFO
 iso_info_SOURCES = iso-info.c util.c util.h $(GETOPT_C)
 iso_info_LDADD   = $(LIBISO9660_LIBS) $(LIBCDIO_LIBS) $(LIBICONV)
 bin_iso_info     = iso-info
+man_iso_info     = iso-info.1
 endif
 
 if BUILD_ISO_READ
 iso_read_SOURCES = iso-read.c util.c util.h $(GETOPT_C)
 iso_read_LDADD   = $(LIBISO9660_LIBS) $(LIBCDIO_LIBS) $(LIBICONV)
 bin_iso_read     = iso-read
+man_iso_read     = iso-read.1
 endif
 
 mmc_tool_SOURCES = mmc-tool.c util.c util.h $(GETOPT_C)
@@ -92,3 +88,12 @@ bin_mmc_tool     = mmc-tool
 bin_PROGRAMS = $(bin_cd_drive) $(bin_cd_info)  $(bin_cdinfo_linux)
$(bin_cd_read) $(bin_iso_info) $(bin_iso_read) $(bin_cdda_player)
$(bin_mmc_tool)
 
 INCLUDES = -I$(top_srcdir) $(LIBCDIO_CFLAGS) $(VCDINFO_CFLAGS)
$(CDDB_CFLAGS)
+
+man_MANS = $(man_cd_drive) $(man_cd_info) $(man_cd_read)
$(man_iso_read) $(man_iso_info)
+EXTRA_DIST = cd-drive.help2man cd-info.help2man cd-read.help2man \
+            iso-info.help2man iso-read.help2man $(GETOPT_C) getopt.h \
+             $(man_MANS)
+
+$(man_MANS): %.1: % %.help2man
+       -$(HELP2MAN) --opt-include=$<.help2man --no-info --output=$@ ./$<
+MOSTLYCLEANFILES = $(man_MANS)








reply via email to

[Prev in Thread] Current Thread [Next in Thread]