少し前ですが, Devel::CheckCompiler 0.04がリリースされました
新機能
check_compile関数は今まではオブジェクトファイルを生成するだけでしたが,
executable => 1
を渡すことで実行ファイルを生成するようになりました.
これにより, システムである関数が利用できるかを確認することができます.
具体的には OS specificなシステムコールのチェックなどに使えます.
(今まではオブジェクトファイルの生成までだったので, 未解決なシンボルは
未解決なシンボルのまま残っていた)
例
accept4が使えるかどうかを調べる例を以下に示します.
if (check_compile(<<'...', executable => 1) != 1) { #ifndef _GNU_SOURCE #define _GNU_SOURCE #endif #include <sys/socket.h> int main(void) { return accept4(0, (void*)0, (void*)0, 0); } ... print "This module only supports linux 2.6.28+ and glibc 2.10+.\n"; exit 0; } print "This system has accept4\n";
おわりに
問題があれば githubの issuesまでお願いします.