[vorbis] macosx (lots of little changes)
Monty
xiphmont at xiph.org
Wed Jan 2 15:47:58 PST 2002
On Wed, Jan 02, 2002 at 02:19:44AM -0800, Brian Olson wrote:
> 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 off, vorbis-dev is the proper place to reach the appropriate
developers. I don't know if the vorbis-tools maintainers read the
vorbis discussion list. I'll copy this with the patch still attached
to vorbis-dev, and further discussion should be there.
I'm going to assume the ao/tool maintainers will pick this up, so I'll
not be paying attention to the thread from here on out. Call
attention in the subject if the ball gets dropped (oh, and it's a good
idea to also log this at bugs.xiph.org)
Monty
The rest of the original message:
> 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.])
> ])
> ])
>
>
> 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);
>
>
> 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);
> }
>
>
> 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/
>
>
> --- >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.
>
--- >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