nDiki : Autoconf

GNU Autoconf

1999年1月31日 (日)

本日誌ページ用 m4 マクロを作成

本日誌を始めて、13日目。やっと本日誌ページ用 m4 マクロを作成した。

私の Web ページ (http://www.j.dendai.ac.jp/~naney/ 以下) は m4 を利用して作成している。 m4 はマクロプロセッサである。 主に何に利用しているかというと、ヘッダやフッタなどの定型的な部分の生成などである。 ヘッダやフッタなどをマクロ化し、各ページでパラメータを指定して展開させることで、それぞれにあったものを生成する。 利点としては、例えばヘッダの形式を変えたい場合にマクロを書き換えることで、全ページを変更することができることなどがある。 SSI による include では各ページ固有の情報などのパラメータ部分がうまく扱えない。 ちなみに m4 ページの処理は、AutoconfAutomake を利用して、./configure; make; make install; で一発で済むようにしている。

前置きがながくなった。もちろんこのページのヘッダやフッタなどもマクロ展開で行っていたのだが、ナビゲーションの [Prev Day]、 [Next Day] などは毎日手でリンクを張っていた(実際には前日のものをコピーして書き換え)。 これは面倒だし、間違えもおきやすいので、この部分を処理するマクロを本日作成した。 まだあまりチェックしていないので、もしかしたらうまくリンクがつながらないかもしれない。

次はキーワードインデックス部分と、記事別ナビゲーション(似ている内容の記事ごとの、Prev、Next のリンク) の生成を自動化したいが、これは m4 だけではかなり辛いか(できるとは思うが)。

[ コンピュータ日誌 ]

[ 1月31日全て ]

1999年2月2日 (火)

Automake 1.4 へアップデート

Automake 1.3b から Automake 1.4 へアップデートした。 目新しい変更点は

  • Fortran 77 をサポート
  • 最新の Autoconf のサポート

その他 NEWS 参照。

 $tar zxvf automake-1.4.tar.gz
 $cd automake-1.4
 $./configure
 $make
 $su
 #make install
[ 2月2日全て ]

2001年6月7日 (木)

11:15 AC_CHECK_LIB の第5引数

昨日から configure (with GNU Autotools) で libwwwcore (in W3C libwww ライブラリ)を検出させようとしている。 が、ライブラリはインストールされているのに検出できない。 同じ W3C libwww の中の libwwwutils は検出できるのに。

Autoconf マニュアルをよく読んだら AC_CHECK_LIB に第5引数が。 もしやと思ったら、やはり。 libwwwcore は libwwwutils に依存しているので一緒にリンクさせなければならないのであった。configure.in の中の記述を

 AC_CHECK_LIB([wwwcore], [HTLibInit], [], [], [-lwwwutils])

にしたら detect。

[ 6月7日全て ]

2001年6月12日 (火)

16:30 AC_CHECK_LIB って

先日 AutoconfAC_CHECK_LIB の第5引数を知ったのだが、実は AC_CHECK_LIB で発見できたライブラリは次の AC_CHECK_LIB での検査の時にリンクされるのね。 ということは基本的には第5引数に指定しないでも依存関係の親の方を先に検査すればいいわけだ(クロスに参照しあってなければ)。

[ 6月12日全て ]

2005年4月20日 (水)

SConsGNU Autotools のかわりになるか

NSIS のサイトによるとビルドに「SCons」を使うようしたらしい。

  • クロスプラットフォーム
  • AutoconfAutomake と同様の機能を統合
  • LaTeX もビルトインサポート

と興味深いツールになっているようだ。

現在プロジェクトLaTeXベースのドキュメント生成には GNU Make を使っているのだが、UNIXWindows の両方でビルドできるようにするには ComSpec 環境変数の有無で使用するコマンドを切り換えたり等いろいろ面倒なので、代替ツールとして使えないかなと。

基本的な機能は Make に対する改良がなされているようであるし、コピー等ファイル操作も SCons 自体がもっているのでクロスプラットフォームでビルドできるようにするのも楽そうだ。

一方 Autoconf 系の機能については、インストール済みのライブラリの検出や実装レベルのチェック等を実装しているようである。 make check や make dist、make install 等にあたるターゲットに関する機能(あるいは規約)のようなものは無い。これは非常に残念。 結局自分が Ant を使わなくなったのも GNU Autotools にあるこれらの機能に欠けているからであるし。

実は私がPerl が好きな理由の一つとして、これらサポートが充実しているという点がある。Perl では ExtUtils::MakeMaker (あるいは Module::Build)があり、ビルドからテスト、ソースパッケージのパッケージングまでフレームワークが整っている。

SConsPython ベースで、Makefile にあたるファイルも Python スクリプトである。 SCons が影響を受けた Cons は Perl ベースであったのだが、既に2001年5月ごろから開発が止まってしまっている。残念。

ということで Make の代替には使えそうであるが、GNU Autotools と同じようなことをするにはいろいろ手をかけないといけないといった印象。

[ 4月20日全て ]

2015年7月24日 (金)

Homebrew で IME インラインパッチを当てた Emacs 24.5.1 を入れる

OS XHomebrew でインストールした Emacs をしばらく使ってみて IME インラインパッチなるものがないと辛いということがよくわかりました。

今は Homebrew の emacs formula では IME インラインパッチが当たらなくなっているので自分で当ててインストールしなおしました。

パッチは @takaxp 氏の

を使いました。感謝。まずはパッチファイルを取得。

 $ mkdir ~/tmp
 $ cd ~/tmp
 $ git clone git@gist.github.com:1d91107b311b63b57529.git

次に emacs formula を書き換えます。

 $ brew update
 $ brew edit emacs

で起動したエディタで先頭の方に patch 処理と AutoconfAutomake への依存情報を追加します(/Users/naney は私の HOME ディレクトリ)。

 class Emacs < Formula
   desc "GNU Emacs text editor"
   homepage "https://www.gnu.org/software/emacs/"
   url "http://ftpmirror.gnu.org/emacs/emacs-24.5.tar.xz"
   mirror "https://ftp.gnu.org/gnu/emacs/emacs-24.5.tar.xz"
   sha256 "dd47d71dd2a526cf6b47cb49af793ec2e26af69a0951cc40e43ae290eacfc34e"

   # ここから追加
   patch :p1 do
     url "file:///Users/naney/tmp/1d91107b311b63b57529/emacs-24.5-inline.patch"
   end

   depends_on "autoconf" => :build
   depends_on "automake" => :build
   # ここまで追加

   bottle do
   ...

保存したらあとは Emacs をアンインストールし、書き換えた fomula で再度 Emacs をインストール。

 $ brew uninstall emacs
 $ brew install --with-cocoa --with-gnutls --verbose emacs

やっほー。これで「Google 日本語入力で平仮名入力になっている時に C-x C-f と打ったらカレントバッファに変な文字が入力されてる!」なんていうのが無くなりました。快適です。

[ 7月24日全て ]

2019年3月29日 (金)

新しい MacBook Pro にようやく Emacs をインストール

3月1日にリプレースした MacBook Pro にようやく Emacs をインストール。

今回もありがたく @takaxp 氏の解説とパッチを利用させていただいた。感謝!

Autoconf と GnuTLS、 libxml2 が無かったので事前にインストール。個人的慣習として ~/local 以下に置いておくため --prefix=$HOME/local/emacs を configure で指定している。

 $ brew install autoconf
 $ brew install gnutls pkgconfig
 $ brew install libxml2
 $ export PKG_CONFIG_PATH="/usr/local/opt/libxml2/lib/pkgconfig"
 $ cd ~/tmp
 $ git clone git://git.sv.gnu.org/emacs.git
 $ curl -LO https://gist.githubusercontent.com/takaxp/3314a153f6d02d82ef1833638d338ecf/raw/156aaa50dc028ebb731521abaf423e751fd080de/emacs-25.2-inline.patch
 $ cd emacs
 $ git reset --hard 6217746dd6
 $ git checkout -b emacs-26
 $ git reset --hard 9ad0f1d15c
 $  patch -p1 < ../emacs-25.2-inline.patch
 $ ./autogen.sh
 $./configure CC=clang --prefix=$HOME/local/emacs --without-x --with-ns --with-modules
 $ make bootstrap -j1
 $ make install -j1
 $ cd ./nextstep
 $ open .
 # Emacs.app を /Applications に移動
[ 3月29日全て ]

About

Naney Naneymx

Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。

※本サイトの内容は個人的見解であり所属組織とは関係ありません。

Process Time: 0.02162s / load averages: 0.41, 0.29, 0.26