上: Configuring
AC_PROG_LIBTOOL
マクロGNU Autoconf(やAutomake)を使用している場合,AC_PROG_LIBTOOL
の呼
び出しをconfigure.inに加える必要があります.このマクロは,生成
されたlibtoolスクリプトがホストの特徴を理解できるようにするため,多く
の新しいテストをconfigure
スクリプトに加えます.
`--enable-shared'と`--disable-shared'の
configure
フラ グに対するサポートを加えます.1AM_PROG_LIBTOOL
は,このマクロに対する古い名前で, しばらくはサポートされますが,やめた方がいいでしょう.デフォルトで,このマクロは,利用可能な場合は共有ライブラリを開始し,共 有ライブラリと衝突しない場合はスタティックライブラリも可能とします.こ れらのデフォルトは,
AC_DISABLE_SHARED
やAC_DISABLE_STATIC
マクロのどちらかで修正可能です.# Turn off shared libraries during beta-testing, since they # make the build process take too long. AC_DISABLE_SHARED AC_PROG_LIBTOOLユーザは,パッケージ名を基にビルドされる,共有またはスタティックライブ ラリを選択するため,`--enable-shared'と`--enable-static'を configureへのフラグとして変更を指定してもかまいません.例え ば,共有する`bfd' と`gdb'ライブラリをビルドし,`libg++' を共有にしないため,以下の
configure
スクリプトの実行で,三つのこ とのすべて可能となります.trick$ ./configure --enable-shared=bfd,gdb一般的に,`--enable-shared=pkgs'の指定は,カンマで分けられ たpkgsリストに名前があるすべてのパッケージを `--enable-shared'で,それ以外のすべてのパッケージを `--disable-shared'でコンフィグレーションすること同じです. `--enable-static=pkgs'フラグは,同様に動作しますが,その場 合は`--enable-static'と`--disable-static'を使用します.同様 に,`--enable-fast-install=pkgs'フラグの適用は, `--enable-fast-install'と`--disable-fast-install'を使用しま す.
パッケージ名`default'は,
PACKAGE
環境変数に名前が設定されて いない,あらゆるパッケージに一致します.このマクロは,シェル変数LIBTOOL_DEPSも設定し,それで,libtoolス クリプトが時代遅れになった場合の自動的な更新に使用できるようになります. そうするためにconfigure.inに以下を加えてください.
AC_PROG_LIBTOOL AC_SUBST(LIBTOOL_DEPS)そして,Makefile.inやMakefile.amに,以下を加えてください.
LIBTOOL_DEPS = @LIBTOOL_DEPS@ libtool: $(LIBTOOL_DEPS) $(SHELL) ./config.status --recheckGNU automakeを使用してる場合,automakeが面倒をみるので,指示の省略が可 能です.libtoolでの依存性を明確に作成する必要があります.
dlopenサポートの調査を可能にします.パッケージで`-dlopen'と `-dlpreopen'フラグを使用する場合,このマクロ使用すべきで,そうし ない場合,libtoolはシステムがdlopenをサポートしていないと仮定します. マクロは
AC_PROG_LIBTOOL
の前で呼び出す必要があります.
このマクロは,win32プラットフォームでクリーンなdllをビルドするために移 植する場合,使用する必要があります.通常これは,あらゆるライブラリデー タ項目を
__declspec(dllexport)
でエクスポートし,__declspec(dllimport)
でインポートすることを意味します.このマク ロが使用されていない場合,libtoolはパッケージライブラリがクリーンなdll ではなく,win32ホストでのスタティックライブラリのみをビルドすると仮定 します.このマクロは
AC_PROG_LIBTOOL
の前で呼び出す必要があり, パッケージのMakefile
でのリンクモードでの準備として,libtool
に`-no-undefined'を渡させる必要があります.通常, `-no-undefined'を渡す場合,すべてのライブラリシンボルが,リンク時 には本当に定義されていることを確かめる必要があります!
AC_PROG_LIBTOOL
のデフォルトの動作を,高速インストールに対する最 適化を不可能にするよう変更します.ユーザはこのデフォルトを,プラット フォームのサポートに依存して,`--enable-fast-install'を指定するこ とで優先させることができます.
AC_PROG_LIBTOOL
のデフォルトの動作を,共有ライブラリを利用不可能 に変更します.ユーザはこのデフォルトを,`--enable-shared'を指定す ることで優先させることができます.
AC_PROG_LIBTOOL
のデフォルトの動作を,スタティックライブラリを利 用不可能に変更します.ユーザはこのデフォルトを,`--enable-static' を指定することで優先させることができます.
AC_PROG_LIBTOOL
内のテストは,以下の環境変数も認識します.
標準的なオブジェクトファイルを生成するために使用するコンパイラフラグで す.これが設定されていない場合,
AC_PROG_LIBTOOL
はそのようなフラ グを全く使用しません.それは,AC_PROG_LIBTOOL
がテストを実行する 方法にのみ効果があり,生成されたlibtool
には効果はありません.
Cプリプロセッサフラグです.これが設定されていない場合,
AC_PROG_LIBTOOL
はそのようなフラグを全く使用しません.それは,AC_PROG_LIBTOOL
がテストを実行する方法にのみ効果があり,生成され たlibtool
には効果はありません.
プログラムをリンクするとき,
libtool
が使用するフラグです.これが 設定されていない場合,AC_PROG_LIBTOOL
はそのようなフラグを全く使 用しません.それは,AC_PROG_LIBTOOL
がテストを実行する方法にのみ 効果があり,生成されたlibtool
には効果はありません.
プログラムのリンクとき,
AC_PROG_LIBTOOL
が使用するライブラリです. これが設定されていない場合,AC_PROG_LIBTOOL
はそのようなフラグを 使用しません.それはAC_PROG_LIBTOOL
が実行するテストにのみに効果 があり,生成されたlibtool
には効果はありません.
プログラムのリンクを作成するコマンドで,可能な場合はソフトリンク,それ 以外ではハードリンクです.この変数が設定されていない場合,
AC_PROG_LIBTOOL
は適切なプログラムを調査します.
libtoolize
プログラムを呼び出すとき(see Invoking libtoolize),
それはAC_PROG_LIBTOOL
の定義が見つかる場所を伝えます.Automakeを
使用している場合,aclocal
プログラムは自動的に,configure
スクリプトにAC_PROG_LIBTOOL
サポートをconfigure
スクリプト
に加えます.
それにもかかわらず,acinclude.m4にlibtool.m4のコピーを含
めることは賢明で,そのため,aclocal.m4とconfigureがなん
らかの理由で再びビルドされた場合も,適切なlibtoolマクロが使用されます.
代わりに,ユーザがlibtool.m4の互換バージョンをインストールして
いて,aclocal
にアクセス可能なことを期待します.これは,バージョ
ンが一致しない場合,不運なエラーを導くかもしれません.
[1] AC_PROG_LIBTOOL
は,
Makefile.inでのMakefile変数のtop_builddir
の定義を
要求します.Automakeはこれを自動的に行いますが,Autoconfユーザは,ビル
ドディレクトリのトップへの相対パス(例えば,../..)を設定する必要
があります.