市來健吾の日記

プログラマ、(元)物理屋(ナノテク、流体)

今更 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 で無事にアップロードもできた。 めでたし、めでたし。

  • 過去の記録: