Building libmms-0.6.2 on OS X (all dependencies supplied by Fink) fails:
/bin/sh ../libtool --tag=CC --mode=link gcc -g -O2 -version-info 0:2:0 -no-undefined -export-dynamic -L/sw/lib -o libmms.la -rpath /sw/lib mms.lo mmsh.lo mmsx.lo uri.lo -L/sw/lib -lglib-2.0
libtool: link: gcc -dynamiclib -o .libs/libmms.0.dylib .libs/mms.o .libs/mmsh.o .libs/mmsx.o .libs/uri.o -L/sw/lib /sw/lib/libglib-2.0.dylib -install_name /sw/lib/libmms.0.dylib -compatibility_version 1 -current_version 1.2 -Wl,-single_module
Undefined symbols for architecture x86_64:
"_libiconv", referenced from:
_string_utf16 in mms.o
"_libiconv_close", referenced from:
_mms_connect in mms.o
"_libiconv_open", referenced from:
_mms_connect in mms.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[3]: *** [libmms.la] Error 1
mms.c uses iconv directly, but libmms does not have any autoconf detection for iconv and does not even hardcode -liconv (the minimal and possibly-nonportable solution for me). Darwin does not have indirect symbol resolution (even though libmms is linking against libglib and libglib is linked against libiconv, that is not sufficient to make libiconv symbols visible to libmms).
I believe it would be better to get rid of the iconv dependency. In fact, openwrt had to patch it due to this dependency as well, although their patch is kind of hackish and doesn't really do real utf8->utf16le. Since utf8->utf16le is the only thing iconv is used for, it would actually be quite trivial to implement. I actually have used a few embedded platforms that support iconv but not this conversion mode, so libmms would actually compile fine but fail at runtime...
This should be fixed in 0.6.3. The dependency on iconv has been removed entirely.