CC=qrintf clangだとエラーが出た
libtool: compile: clang-qrintf -DHAVE_CONFIG_H -I. -I. -I/usr/local/include -MT regerror.lo -MD -MP -MF .deps/regerror.Tpo -c regerror.c -o regerror.o
In file included from regerror.c:37:
/usr/lib/llvm-3.6/bin/../lib/clang/3.6.0/include/varargs.h:25:4: error: "Please use <stdarg.h> instead of <varargs.h>"
#error "Please use <stdarg.h> instead of <varargs.h>"
^
regerror.c:263:3: error: too few arguments provided to function-like macro invocation
va_init_list(vargs, code);
^
regerror.c:38:37: note: expanded from macro 'va_init_list'
#define va_init_list(a,b) va_start(a)
^
/usr/lib/llvm-3.6/bin/../lib/clang/3.6.0/include/stdarg.h:33:9: note: macro 'va_start' defined here
#define va_start(ap, param) __builtin_va_start(ap, param)
^
regerror.c:335:3: error: too few arguments provided to function-like macro invocation
va_init_list(args, fmt);
^
regerror.c:38:37: note: expanded from macro 'va_init_list'
#define va_init_list(a,b) va_start(a)
^
/usr/lib/llvm-3.6/bin/../lib/clang/3.6.0/include/stdarg.h:33:9: note: macro 'va_start' defined here
#define va_start(ap, param) __builtin_va_start(ap, param)
^
3 errors generated.
make[2]: *** [regerror.lo] Error 1
暫定対処方法
./configure時はCC=clang
で行い、作成されたMakfefileのCC=の指定を
CC=qrintf clang
と変更して、make
何が原因なのか
CC=qrintf clangだと
checking for qrintf clang option to accept ISO C89... unsupported
CC=clangだと
checking for clang option to accept ISO C89... none needed
このオプションがunsupportedだとC89以前のコンパイラと判定され、
前述のエラー中のvarargs.hが使われて、va_系の古き良き時代のコードがビルド対象となる模様。
初めは、qrintf clangとスペースが入っているのと、名称が気になり、clang-qrintfなるシェルスクリプトを作って、これをCCに指定したが変わらず。もちろんclang-qrintfコマンドでフツーにコンパルできる事は確認。
autoconfのISO C89関連のオプション検出の処理(ac_cv_prog_cc_c89)になにか問題があるのか、qrintfが何かこの検出処理に影響を与えているのかのいずれかだとは思う。