Hi, this patch has been sitting in my hopper too long.  It enables 
libkarma to be built on macs, and connect over the network to the 
Karma.  I can connect and authenticate, but subsequently get a bus 
error, so apparently there's still a bug somewere.  Maybe someone
else can take a look...

# HG changeset patch
# User [EMAIL PROTECTED]
# Date 1174272465 14400
# Node ID 33cc0c2d952a9c0c1d70546387700076087a25a9
# Parent  0ce32234326ab13ab03bb6fbcd050f8d58bc372f
Fixes to enable building on MacOS X

diff -r 0ce32234326a -r 33cc0c2d952a Makefile
--- a/Makefile  Sat Jan 13 18:49:03 2007 -0500
+++ b/Makefile  Sun Mar 18 22:47:45 2007 -0400
@@ -14,7 +14,7 @@ DISTFILES= $(LK_SRC)/{Jamfile,Makefile,*
 DISTFILES= $(LK_SRC)/{Jamfile,Makefile,*[ch]} \
        $(TOOLSDIR)/{Jamfile,Makefile,*[ch]} \
        karma-sharp/{Makefile,karma-sharp.pc.in,Song.cs,Device.cs} \
-       Jamfile Makefile COPYING ChangeLog THANKS INSTALL TODO \
+       Jamfile Makefile COPYING ChangeLog THANKS INSTALL* TODO \
        install-sh karma-tools.spec
 DOCS=THANKS TODO ChangeLog
 
diff -r 0ce32234326a -r 33cc0c2d952a src/Makefile
--- a/src/Makefile      Sat Jan 13 18:49:03 2007 -0500
+++ b/src/Makefile      Sun Mar 18 22:47:45 2007 -0400
@@ -16,7 +16,23 @@ CFLAGS+=-fPIC -D_REENTRANT -Wall -pedant
 CFLAGS+=-fPIC -D_REENTRANT -Wall -pedantic
 CFLAGS+=-ggdb -W -Wchar-subscripts -Wmissing-prototypes 
 CFLAGS+=-Wmissing-declarations -Wno-switch -Wredundant-decls -Wno-unused
+
 MAJOR?=$(shell VERSION=${VERSION} echo $${VERSION%%\.*})
+
+PLATFORM=$(shell uname)
+ifeq ($(PLATFORM),Darwin)
+LIBS=-ltag_c -lz -liconv
+LDFLAGS+=-dynamiclib -single_module
+OUT_BASE=$(TARGET).dynlib
+OUT_MAJOR=$(TARGET).$(MAJOR).dynlib
+OUT_VERSION=$(TARGET).$(VERSION).dynlib
+else 
+OUT_BASE=$(TARGET).so
+OUT_MAJOR=$(TARGET).so.$(MAJOR)
+OUT_VERSION=$(TARGET).so.$(VERSION)
+LDFLAGS+=-shared -Wl,-soname,$(OUT_MAJOR)
+LIBS=-ltag_c
+endif
 
 default: all
 
@@ -25,13 +41,14 @@ install: shared-lib-stamp static-lib-sta
        ../install-sh -m 0755 -d $(DEST)/include
        ../install-sh -m 0755 -d $(DEST)/include/libkarma
        ../install-sh -m 0644 -t $(DEST)/lib/ $(LIBDIR)/$(TARGET).a
-       ../install-sh -m 0755 -t $(PREFIX)/lib/ 
$(LIBDIR)/$(TARGET).so.$(VERSION)
-       $(LN_S) $(TARGET).so.$(VERSION) $(PREFIX)/lib/$(TARGET).so.$(MAJOR)
-       $(LN_S) $(TARGET).so.$(VERSION) $(PREFIX)/lib/$(TARGET).so
+       ../install-sh -m 0755 -t $(PREFIX)/lib/ $(LIBDIR)/$(OUT_VERSION)
+       $(LN_S) $(OUT_VERSION) $(PREFIX)/lib/$(OUT_MAJOR)
+       $(LN_S) $(OUT_VERSION) $(PREFIX)/lib/$(OUT_BASE)
        ../install-sh -m 0644 -t $(DEST)/include/libkarma/ $(INST_HEADERS)
+       ldconfig
 
 uninstall:
-       $(RM) $(PREFIX)/lib/$(TARGET).a 
$(PREFIX)/lib/$(TARGET).so{,.$(MAJOR),.$(VERSION)}
+       $(RM) $(PREFIX)/lib/$(TARGET).a $(PREFIX)/lib/$(OUT_MAJOR) 
$(PREFIX)/lib/$(OUT_BASE) $(PREFIX)/lib/$(OUT_VERSION)
        $(RM) -r $(DEST)/include/libkarma
 
 OBJS = $(SRCS:.c=.o)
@@ -43,16 +60,16 @@ OBJS = $(SRCS:.c=.o)
        $(AR) r $(LIBDIR)/$(TARGET).a $(OBJS)
        $(RANLIB) $(LIBDIR)/$(TARGET).a
 
-$(LIBDIR)/$(TARGET).so.$(VERSION): $(OBJS) $(LIBDIR)
-       $(CC) -shared -Wl,-soname,$(TARGET).so.$(MAJOR) $(OBJS) $(CFLAGS) -o 
$(LIBDIR)/$(TARGET).so.$(VERSION) -ltag_c
+$(LIBDIR)/$(OUT_VERSION): $(OBJS) $(LIBDIR)
+       $(CC) $(LDFLAGS) $(OBJS) $(CFLAGS) -o $(LIBDIR)/$(OUT_VERSION) $(LIBS)
 
-$(LIBDIR)/$(TARGET).so.$(MAJOR): $(LIBDIR)/$(TARGET).so.$(VERSION) $(LIBDIR)
-       $(LN_S) $(TARGET).so.$(VERSION) $(LIBDIR)/$(TARGET).so.$(MAJOR)
+$(LIBDIR)/$(OUT_MAJOR): $(LIBDIR)/$(OUT_VERSION) $(LIBDIR)
+       $(LN_S) $(OUT_VERSION) $(LIBDIR)/$(OUT_MAJOR)
 
-$(LIBDIR)/$(TARGET).so: $(LIBDIR)/$(TARGET).so.$(VERSION) $(LIBDIR)
-       $(LN_S) $(TARGET).so.$(VERSION) $(LIBDIR)/$(TARGET).so
+$(LIBDIR)/$(OUT_BASE): $(LIBDIR)/$(OUT_VERSION) $(LIBDIR)
+       $(LN_S) $(OUT_VERSION) $(LIBDIR)/$(OUT_BASE)
 
-shared-lib-stamp: $(LIBDIR)/$(TARGET).so.$(VERSION) 
$(LIBDIR)/$(TARGET).so.$(MAJOR) $(LIBDIR)/$(TARGET).so
+shared-lib-stamp: $(LIBDIR)/$(OUT_VERSION) $(LIBDIR)/$(OUT_MAJOR) 
$(LIBDIR)/$(OUT_BASE)
        touch $@
 
 static-lib-stamp: $(LIBDIR)/$(TARGET).a
diff -r 0ce32234326a -r 33cc0c2d952a src/karmaUsb.c
--- a/src/karmaUsb.c    Sat Jan 13 18:49:03 2007 -0500
+++ b/src/karmaUsb.c    Sun Mar 18 22:47:45 2007 -0400
@@ -9,7 +9,10 @@
  * the GNU GPL, version 2 or later.
  */
 
+#ifndef __APPLE__
 #define _XOPEN_SOURCE 500        /* Needed by pread/pwrite */
+#endif
+
 #include <dirent.h>
 #include <errno.h>
 #include <fcntl.h>
@@ -18,11 +21,16 @@
 #include <string.h>
 #include <strings.h>
 #include <sys/stat.h>
-#include <sys/statfs.h>
-#include <sys/vfs.h>            /* or <sys/statfs.h> */
 #include <sys/types.h>
 #include <unistd.h>
 #include <utime.h>
+
+#ifdef __APPLE__
+#include <sys/mount.h>
+#else
+#include <sys/statfs.h>
+#include <sys/vfs.h>            /* or <sys/statfs.h> */
+#endif
 
 #include "lkarma.h"
 #include "karma.h"
diff -r 0ce32234326a -r 33cc0c2d952a src/util.c
--- a/src/util.c        Sat Jan 13 18:49:03 2007 -0500
+++ b/src/util.c        Sun Mar 18 22:47:45 2007 -0400
@@ -18,6 +18,14 @@
 #include <errno.h>
 #ifdef __linux__
 #include <endian.h>
+#endif
+#ifdef __APPLE__
+#  define __BIG_ENDIAN __BIG_ENDIAN__
+#  if __LITTLE_ENDIAN__ 
+#    define __BYTE_ORDER __LITTLE_ENDIAN__
+#  else
+#    define __BYTE_ORDER __BIG_ENDIAN
+#  endif
 #endif
 #ifdef __NetBSD__
 #include <sys/endian.h>
@@ -129,12 +137,12 @@ uint64_t lk_htorll(uint64_t hostlong)
 {
 #if __BYTE_ORDER==__BIG_ENDIAN
     return (hostlong>>56) | 
-        ((hostlong&0xff000000000000)>>40) |
-        ((hostlong&0xff0000000000)>>24) |
-        ((hostlong&0xff00000000)>>8) |
-        ((hostlong&0xff000000)<<8) |
-        ((hostlong&0xff0000)<<24) |
-        ((hostlong&0xff00)<<40) |
+        ((hostlong&0xff000000000000ULL)>>40) |
+        ((hostlong&0xff0000000000ULL)>>24) |
+        ((hostlong&0xff00000000ULL)>>8) |
+        ((hostlong&0xff000000ULL)<<8) |
+        ((hostlong&0xff0000ULL)<<24) |
+        ((hostlong&0xff00ULL)<<40) |
          (hostlong<<56);
 #else
     return hostlong;
diff -r 0ce32234326a -r 33cc0c2d952a tools/Makefile
--- a/tools/Makefile    Sat Jan 13 18:49:03 2007 -0500
+++ b/tools/Makefile    Sun Mar 18 22:47:45 2007 -0400
@@ -1,12 +1,19 @@ INCLUDES=-I../src
 INCLUDES=-I../src
 LIBDIR=../lib
-LIBKARMA=$(LIBDIR)/libkarma.so
 
 SRCS=pathedit.c
 
 CC=gcc
 CFLAGS+=-Wall -pedantic
-LDFLAGS+=-ltag_c -lz -L $(LIBDIR)
+LDFLAGS+=-ltag_c -lz -L$(LIBDIR)
+
+PLATFORM=$(shell uname)
+ifeq ($(PLATFORM),Darwin)
+LDFLAGS+=-liconv
+LIBKARMA=$(LIBDIR)/libkarma.dynlib
+else
+LIBKARMA=$(LIBDIR)/libkarma.so
+endif
 
 OBJS=$(SRCS:.c=.o)
 TOOLS=riocp chprop karma_helper
diff -r 0ce32234326a -r 33cc0c2d952a tools/karma_helper.c
--- a/tools/karma_helper.c      Sat Jan 13 18:49:03 2007 -0500
+++ b/tools/karma_helper.c      Sun Mar 18 22:47:45 2007 -0400
@@ -21,6 +21,10 @@
 #define RIO_BIND "/sys/bus/usb/drivers/usb-storage/bind"
 
 typedef struct usb_device usb_dev_t;
+
+#ifndef LIBUSB_HAS_DETACH_KERNEL_DRIVER_NP
+#define usb_detach_kernel_driver_np(a, b) (0)
+#endif
 
 static char *sysfs_read_dev(char *dev)
 {
@@ -169,9 +173,11 @@ int main(int argc, char **argv)
             cmd = 0xc;
             break;
         case 't':
+#ifndef __APPLE__
             tzset();
             sec = time(NULL) - timezone + daylight * 3600;
             cmd = 0x7;
+#endif
             break;
         case 'i':
             info = 1;

-- 
Bob Copeland %% www.bobcopeland.com 


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
linux-karma-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-karma-devel

Reply via email to