[vorbis] macosx (lots of little changes)
Brian Olson
bolson at silcom.com
Wed Jan 2 02:19:44 PST 2002
happy new year. a day off is a day to pick up a new project, so I
wrestled my way through making ogg vorbis work on macosx.
first, libao (not entirely a proper patch, but 2 source file diffs and a
diff of a configure'd Makefile to one that works.):
http://bolson.org/pub/libao-0.8.2-diff.tar.gz
libogg and libvorbis compiled without incident. vorbis-tools were more
complicated.
I think this ERROR sholudn't be an error, maybe it should be a warning.
My above changes mean libao doesn't need dlopen(). I was unable to get
dlopen() working on macosx, so I cut it out and made libao more static.
It's all still there, behind -DHAS_DLFCN_H which was already being
tested for.
--- aclocal.m4.orig Wed Jan 2 01:14:59 2002
+++ aclocal.m4 Wed Jan 2 01:00:30 2002
@@ -261,8 +261,8 @@
# see where dl* and friends live
AC_CHECK_FUNCS(dlopen, [AO_DL_LIBS=""], [
AC_CHECK_LIB(dl, dlopen, [AO_DL_LIBS="-ldl"], [
- AC_MSG_ERROR([could not find dlopen() needed by libao sound
drivers
- your system may not be supported.])
+# AC_MSG_ERROR([could not find dlopen() needed by libao sound
drivers
+# your system may not be supported.])
])
])
<p>macosx doesn't seem to have pthread_sigmask(). this is not a perfect
solution, I can't ^C out of ogg123.
--- ogg123/buffer.c.orig Wed Jan 2 01:21:20 2002
+++ ogg123/buffer.c Tue Jan 1 16:15:31 2002
@@ -75,7 +75,11 @@
sigaddset(&set, SIGINT);
sigaddset(&set, SIGTSTP);
sigaddset(&set, SIGCONT);
+#ifdef __APPLE__
+ if (sigprocmask(SIG_BLOCK, &set, NULL) != 0 )
+#else
if (pthread_sigmask(SIG_BLOCK, &set, NULL) != 0)
+#endif
DEBUG("pthread_sigmask failed");
}
I was getting segfaults using NULL instead of the dummy variable.
--- ogg123/callbacks.c.orig Wed Jan 2 01:25:13 2002
+++ ogg123/callbacks.c Tue Jan 1 18:14:29 2002
@@ -40,10 +40,11 @@
audio_reopen_arg_t *reopen_arg = (audio_reopen_arg_t *) arg;
audio_device_t *current;
ao_sample_format format;
+ int dummy_o;
/* We DO NOT want to get cancelled part way through this and have our
audio devices in an unknown state */
- pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, NULL);
+ pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &dummy_o);
<p> close_audio_devices (reopen_arg->devices);
@@ -113,7 +114,7 @@
free(reopen_arg->format);
free(reopen_arg);
- pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL);
+ pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, &dummy_o);
}
<p>I don't like being required to go get libcurl (needs a teeny bit of
autoconf tweaking to add -DNO_CURL as needed (there is already a check
for -lcurl))
--- ogg123/http_transport.c.orig Wed Jan 2 01:28:23 2002
+++ ogg123/http_transport.c Tue Jan 1 15:37:18 2002
@@ -1,3 +1,4 @@
+#ifndef NO_CURL
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
@@ -328,3 +329,4 @@
&http_tell,
&http_close
};
+#endif
--- ogg123/transport.c.orig Wed Jan 2 01:32:04 2002
+++ ogg123/transport.c Tue Jan 1 15:35:52 2002
@@ -21,10 +21,13 @@
#include "transport.h"
extern transport_t file_transport;
+#ifdef NO_CURL
+transport_t *transports[] = { &file_transport, NULL };
+#else
extern transport_t http_transport;
transport_t *transports[] = { &http_transport, &file_transport, NULL };
-
+#endif
transport_t *get_transport_by_name (char *name)
{
ogg123/Makefile needs to not use "-lm", it contains a definiton of
getopt which collides with one included in share/libgetopt.a, I don't
know how to make autoconf/configure do this though. On top of that
obfuscation is the libtool script, in one place it discards a
"-framework ___" that I need; in another place it adds a "-lm" I don't
want. I end up building vorbis-tools with "make CC=cc\ -no-cpp-precomp\
-DNO_CURL", and then I go back and fixup by copy and paste the link
commands that fail.
I hope some of this is useful, to the project in general, and to other
macosx users out there.
[insert clever signoff here]
Brian Olson http://bolson.org/
<p>--- >8 ----
List archives: http://www.xiph.org/archives/
Ogg project homepage: http://www.xiph.org/ogg/
To unsubscribe from this list, send a message to 'vorbis-request at xiph.org'
containing only the word 'unsubscribe' in the body. No subject is needed.
Unsubscribe messages sent to the list will be ignored/filtered.
More information about the Vorbis
mailing list