Configure And And Make

@HIROSE Yuuji HIROSE Yuuji authored 27 days ago
bin Suspending done in current shell 27 days ago
wrap s/-R/-Wl,-rpath=/ 3 years ago
README.md Fill 7 months ago
index.html Support cmake 7 months ago
README.md

CAAM: Configure && Make Helper

If you want to install some applications into certain directory via build from
source, use caam to call ./configure and make continuously with the same
command line environment.

アプリケーションはソースからのビルドが基本。そんなちみは caam を使いたまへ。
インストールするときは特定の閉じたPREFIXにいれるのだ、
そのほうが消したりしやすいから、という運用の利点が理解できる人はぜし
caam を。caam はコンパイル環境を設定する環境変数を適切に設定して連続的に
make を呼ぶ。こうすることで ./configure
しているときに設定した変数をキープしたままmakeでコンパイラを呼べる。そのときに
CFLAGS, CPPFLAGS, LDFLAGS, LD_RUN_PATH, LD_LIBRARY_PATH, PKG_CONFIG_PATH
をしっかり設定し、なおかつ autoconf
によってそれらの変数が継承されない場合でも gcc/c++ を
wrapして上記変数の意味する値がちゃんと伝わるように努力する。
コンパイルでこけそうな可能性を最大限に小さくするのが caamである。

またcmakeにもほぼ対応した。インストールPREFIXを変えて、
リンクされるバイナリに $PREFIX/lib をライブラリパスとして埋め込むために
-DCMAKE_INSTALL_RPATH をよろしくあてがってくれるような機能を足した。
これでcmakeも怖くない!

The caam scripts are obtained from GitBucket repository.

git clone https://www.yatex.org/gitbucket/git/yuuji/caam.git

Installation

The caam script assumes your application installation hierarchy as follows(/usr
/local as an example).

--[/usr/local/]
    |
    +-[audio/]      # command and libraries related to audio/sound
    |    +-[bin/]
    |    +-[include/]
    |    +-[lib/]
    |    +-[man/]
    |    +-[share/]
    +-[bin/]
    +-[gimp-1/]     # GIMP-1.x
    |    +-[bin/]
    |    +-[lib/]
    |        :
    +-[gimp-2/]     # GIMP-2.x
    |    +-[bin/]
    |    +-[lib/]
    |        :
    +-[gtk1/]       # cmd and libs related to gtk1
    |    +-[bin/]
    |    +-[include/]
    |    +-[lib/]
    |    +-[man/]
    |        :
    +-[gtk2/]       # cmd and libs related to gtk2
    |    +-[bin/]
    |    +-[include/]
    |        :
    +-[include/]
    +-[lib/]
       :
       :

Then, locate caam in /usr/local/caam/bin.

git clone https://www.yatex.org/gitbucket/git/yuuji/caam.git

もし、ソースビルドで管理しているアプリケーションのインストールPREFIX が
/usr/local だとしたら、上記のように /usr/local/caam
以下にcaamをインストールし、
/usr/local/caam/bin/ に PATHを通して使う。

If your local application's prefix is /opt/sfw, then locate caam at /opt/sfw/
caam.

How to Use

caam は、デフォルトで ./configure と make を続けて呼ぶ。caamには、
caam自身のオプションに続けてその場の
configure に与えるオプションを渡せばよい。
caam自身のオプションは以下の通り。

オプション 意味
-c configureのみ(makeしない)
-m makeのみ(configureしない)
-g makeでなくgmakeを呼ぶ
-jN make -jN で呼ぶ
-t TGT make allのかわりに make TGTで起動
-s SEC configure後、SEC 秒間停止する
-S configure後 suspend する(fgで継続)
-l configureで生成されたlibtoolではなくシステムの libtool を利用させる
-mai make all installする
-maic make all install cleanする
-gmai gmake all installする
-gmaic gmake all install cleanする
-cmake cmakeを利用する
-p PREFIX configureの場合は --prefix=$PREFIX cmakeの場合は -DCMAKE_INSTALL_PREFIX を指定する
-objdir サブディレクトリを作ってそこでビルド(gccなどはソースディレクトリではconfigureさせてもらえない)

たとえば、dual coreなマシンで configure --prefix=/opt/hoge && gmake -j3 all &
gmake install するなら、

caam -gmai -j3 --prefix=/opt/hoge

とする。

なお、このスクリプトを使いたいということはインストールPREFIXを変えたい
のが主目的であるはずなので、prefixを変えるためのオプション-pを用いて

caam -gmai -j3 -p /opt/hoge

としてもよい(以下同様)。configureの場合は
--prefix=/opt/hoge が、cmakeの場合は
-DCMAKE_INSTALL_PREFIX=/opt/hoge が自動的に付け足される。

独自ビルドで gtk2 のライブラリがすべて /usr/local/gtk2 に入っているときに
gtk2もののアプリケーションをビルドするならたとえばこうする(systemのPREFIXが
/usr/local の場合)。

CAAM_ADD=gtk2 caam -maic --prefix=/usr/local/gqview2

こうすると、CFLAGS(とCPPFLAGS)に -I/usr/local/gtk2 を必ず付け、 LDFLAGSに
-L/usr/local/gtk2 -Wl,-rpath=/usr/local/gtk2
を必ず付けた状態で configure と make が呼ばれる。
もちろん、上記の例がうまく行くためにはgtk2関連のライブラリをすべて

CAAM_ADD=gtk2 caam -maic --prefix=/usr/local/gtk2

でインストールしておく必要がある。逆にいえばgtk2ライブラリは
ほぼ全て上記コマンドラインでインストールすることができ、
gtk2 を利用するアプリケーションは、

CAAM_ADD=gtk2 caam -maic --prefix=/usr/local/application

でインストールすることができる。実行時のライブラリパスも /usr/local/gtk2
として埋め込まれる。

gtk1とgtk2を両方同時に使いたいという場合は、
双方を隔離してインストールする必要があるので
caam のような機構が有用なのである。