今更 weex
OS X Lion にクリーンインストールしたせいで、 今までつかってた weex の exe がなくなったので、作り直そうとする。
configure など久しぶりで、ビルドにかなり手間取ったので、 備忘録的に、記録をとっておく。
weex.sourceforge.net から source をダウンロード。 sourceforge.net/projects/weex/files/weex/2.6.1.5/weex-2.6.1.5.tar.gz
普通に展開して、 configure しておく。
tar xvfz weex-2.6.1.5.tar.gz
cd weex-2.6.1.5
./configure --prefix ~/local
これで make; make install で終わればいいのだが、そうはいかなかった。
どうも __unix__ が定義されてないようで、 いろいろと define されるべきマクロが空になってるのが、原因。
@otaka_zenkei によると(otaka_zenkei/status/245155490013782017)、 OS X は __APPLE__ らしいが、 2003年あたりのコードでは、そんな事知ったこっちゃない、と。
面倒なので、 config.h の一行目にどーんと
してやる (^^)
#define __unix__
あと、 src/strlib.c の最初の方で定義してるマクロ G_VA_COPY が、 これもいろいろと時代的なものなのか、適切に定義されないので、 直接定義してみる。
//#if !defined (G_VA_COPY)
//# if defined (__GNUC__) && defined (__PPC__) && (defined (_CALL_SYSV) || defined (_WIN32)) || defined(__s390__)
//# define G_VA_COPY(ap1, ap2) (*(ap1) = *(ap2))
//# elif defined (G_VA_COPY_AS_ARRAY)
//# define G_VA_COPY(ap1, ap2) g_memmove ((ap1), (ap2), sizeof (va_list))
//# else /* va_list is a pointer */
//# define G_VA_COPY(ap1, ap2) ((ap1) = (ap2))
//# endif /* va_list is a pointer */
//#endif /* !G_VA_COPY */
# define G_VA_COPY(ap1, ap2) (*(ap1) = *(ap2))
これで、ビルドは通り、 既存の configure file で無事にアップロードもできた。 めでたし、めでたし。
過去の記録:
1/15/2004: weex を install