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