Ejscriptを入れようとして失敗 (2)

この続き。
とりあえず build/bin/bld の RPATH = ... をコメントアウトして -rpath オプションを切ってみたら少しは進むようになった。でも mprLib.c で失敗。

# /usr/bin/make -C "./src/mpr" compile
...
/usr/bin/cc -c   -DPIC    -Wall -g3 -fPIC  -arch i386        -I. -I../.. -I../../src/include mprLib.c -o ../../obj/mprLib.o
mprLib.c: In function ‘sysinit’:
mprLib.c:1951: error: ‘_SC_NPROCESSORS_ONLN’ undeclared (first use in this function)
mprLib.c:1951: error: (Each undeclared identifier is reported only once
mprLib.c:1951: error: for each function it appears in.)
mprLib.c: In function ‘mprSendFileToSocket’:
mprLib.c:16173: error: storage size of ‘def’ isn’t known
mprLib.c:16188: warning: implicit declaration of function ‘sendfile’
mprLib.c:16173: warning: unused variable ‘def’
make[3]: *** [../../obj/mprLib.o] Error 1

‘_SC_NPROCESSORS_ONLN’ は設定情報を取得する sysconf で利用可能なプロセッサ数を得るためのもの。多分1にしておいても問題なさそうなのでコメントアウト

#if MACOSX
    alloc.numCpu = 1; /*sysconf(_SC_NPROCESSORS_ONLN);*/
    alloc.pageSize = sysconf(_SC_PAGESIZE);

続いて ‘def’ のところ。定義を見ると

#if MACOSX
    struct sf_hdtr def; 

となっている。これはファイルをソケットに送信するシステムコール sendfile に渡すための構造体らしい。直書きしたら通ったけど……

/src/include mprLib.c -o ../../obj/mprLib.o
mprLib.c: In function ‘mprSendFileToSocket’:
mprLib.c:16195: warning: implicit declaration of function ‘sendfile’
...
# bld "--library" "../../lib/libmpr" "mprLib" 
"/usr/bin/cc" "-o" "../../lib/libmpr.dylib" "-install_name" "@rpath/libmpr.dylib" "-dynamiclib" "../../obj/mprLib.o" "-g3" "-arch" "i386" "-L/Users/sh/tmp/ejs-0.9.8/lib" "-ldl" "-lm" 
ld: common symbols not allowed with MH_DYLIB output format with the -multi_module option
../../obj/mprLib.o definition of common __globalMpr (size 16)
/usr/bin/libtool: internal link edit command failed
bld: link failed
make[3]: *** [../../lib/libmpr.dylib] Error 255

参考