vine-users ML アーカイブ



[vine-users:077058] autoconf AC_PATH_XTRA が X_LIBS と X_CFLAGS にセットする値について

  • From: Yasufumi Haga <yasufumi.haga@xxxxxxxxx>
  • Subject: [vine-users:077058] autoconf AC_PATH_XTRA が X_LIBS と X_CFLAGS にセットする値について
  • Date: Tue, 12 Jun 2007 00:10:58 +0900
芳賀と申します。
Vine 4.1 を使っています。
要領を得ない内容かもしれませんが、情報、アドバイスなどいただけません
でしょうか。すみません、多少長いメールです。

以下の現象は、ウィンドウマネージャ Enlightenment DR17 で使われている
Enlightenment Foundation Libraries の一つ、evas というライブラリの構築中に
発生していました。私が、知らない間に自分で自分の環境を変えてしまった
可能性も大きいのですが... Enlightenment Foundation Libraries は、今まで何度
も問題なく構築できていましたし、Vine 4.1 にアップグレードしてからも、1度
正常に構築できていました。

evas の configure.in では、数ヶ所で AC_PATH_XTRA が使われているのですが、 
このマクロが X_LIBS と X_CFLAGS に "NONE" を設定するため、リンクの際に
"-lX11" が見つからず、エラーになってしまいます。使われ方は以下のとおり
です。

if test "x$have_evas_software_ddraw" = "xyes"; then
  AC_PATH_XTRA          <---------------------------(1)
  AC_CHECK_HEADER(ddraw.h,
    [
      AC_DEFINE( ...
  .........................................................
if test "x$have_evas_software_x11" = "xyes"; then
  AC_PATH_XTRA          <---------------------------(2)
  AC_CHECK_HEADER(X11/X.h,
    [
      AC_DEFINE( ...
  ........................................................
  以下、このパターンがあと2、3回続く

この configure.in では、(1) の箇所が最初に AC_PATH_XTRA が使われている
箇所です。どういうわけか、これだと AC_PATH_XTRA は X_LIBS と X_CFLAGS
に "NONE" を設定するのです。このため、構築に際しては、
  $ CFLAGS="-I/usr/X11R6/include" LDFLAGS="-L/usr/X11R6/lib" ./autogen.sh
とする必要がありました。このマクロは Enlightenment DR16 でも Imlib2 ライブ
ラリでも、configure.in に使われていますが、これらではこの問題は発生しません。

しかし、(1) の AC_PATH_XTRA を以下のように if 文の前に出すと、少なくとも
(2) の AC_PATH_XTRA では、X_LIBS と X_CFLAGS に、それぞれ
"-L/usr/X11R6/lib" と "-I/usr/X11R6/include" が設定されます。( (2) の位置
は変更せず、そのままにしました)

  AC_PATH_XTRA          <---------------------------(1)
if test "x$have_evas_software_ddraw" = "xyes"; then
  AC_CHECK_HEADER(ddraw.h,

こうすると、
  $ ./autogen.sh
だけで正常に実行されます。

この現象について、Enlightenment Foundation Libraries の開発者と話をした結果、
現時点の CVS では、以下のように AC_PATH_XTRA の直前に AC_PATH_X を入れ
るという対応がなされています。

if test "x$have_evas_software_x11" = "xyes"; then
  AC_PATH_X
  AC_PATH_XTRA
  AC_CHECK_HEADER(X11/X.h,
    [
      AC_DEFINE( ...

しかし、AC_PATH_XTRA がどうしてこのような挙動をするのかは不明なままです。
私の環境でしか発生しないものなのか、それとも他でも発生している問題なのか、
どういう対処をするのが「本筋」なのか、など... 分からないことがたくさんあります。
この現象について、どなたか、情報をお持ちの方がいらっしゃったら、教えていただ
けませんか。なお、参考までに、この configure.in 全文を以下に置きました。
   http://homepage3.nifty.com/peterpan/x00/configure.in

# if 文の中に AC_PATH_XTRA があると、動きがおかしくなるという噂もあるような、
# 無いような...

よろしくお願いします。
--芳賀