imake, autoconf その他ビルドシステム

imakeは廃れてしまったがautoconfがまだ生き残ってるのはどうなんだというお話。
3
AoiMoe a.k.aしお兄P @AoiMoe

GNUmakefile書くストレスは、BSD makeのMakefile書いて発散するといい

2015-05-11 18:07:45
AoiMoe a.k.aしお兄P @AoiMoe

BSD makeをBSD以外で使う試みはいくつかあったが、どうにも決定版がない

2015-05-11 18:09:40
SODA Noriyuki @n_soda

@AoiMoe 対応プラットフォームの数なら、pkgsrc の bootstrap に含まれてる奴が一番多そうなんですけどねえ…

2015-05-11 18:12:55
AoiMoe a.k.aしお兄P @AoiMoe

BSD makeは/usr/share/mkがあってナンボなので、そこを各プラットフォーム向けにちゃんと作るのが大変ってのもある。

2015-05-11 18:13:17
AoiMoe a.k.aしお兄P @AoiMoe

/usr/share/mkを使うの、方法論としてはimakeに近いわけだが、まあcpp通すよりはだいぶ素性がいい

2015-05-11 18:16:51
AoiMoe a.k.aしお兄P @AoiMoe

まあそれを抜きにしても、フロムスクラッチでMakefile書くなら、基本的にBSD makeのほうがGNU makeより楽だと思うが

2015-05-11 18:18:23
AoiMoe a.k.aしお兄P @AoiMoe

@takawata19 どちらかというと仕組み自体よりもlib/X11/configの下の出来が悪かったせいのような。

2015-05-11 18:19:50
なかじ @n12i

@AoiMoe cppとcc -Eとgcc -Eで挙動が違うなんてことも、今となっては懐かしく思い出したくありません(´・_・`)

2015-05-11 18:20:10
IMAIZUMI Mitzyuki - Full Vaccinated @bsdhack

@takawata19 imake/xmkmfで生成されたmakefileではビルドエラーになる事が多かったから…? 今ドキだと configure の一人勝ちなんでしょうかね?

2015-05-11 18:21:06
AoiMoe a.k.aしお兄P @AoiMoe

imakeはpre-POSIX時代のツールだというのもあると思うんだな。本当にいろんな環境でビルドするために、かなり変態的なことになっている

2015-05-11 18:22:06
Takanori Watanabe 💉💉💉💉💉 @takawata19

@bsdhack 今時は、この手のビルドシステムは戦国時代という認識です。cmake, scons .....

2015-05-11 18:22:14
IMAIZUMI Mitzyuki - Full Vaccinated @bsdhack

@takawata19 うひ、cmake も scons も知りませんでした(最近 yum install しかしていない気が……orz

2015-05-11 18:22:54
Takanori Watanabe 💉💉💉💉💉 @takawata19

@n12i @AoiMoe C FaqにCPPを汎用のマクロ処理言語につかうのはやめましょうと書かれてしまうぐらいですからねぇ...

2015-05-11 18:24:26
AoiMoe a.k.aしお兄P @AoiMoe

cppがだめならm4使えばいいじゃない、で生まれたGNU autotoolsというクソの山

2015-05-11 18:25:18
IMAIZUMI Mitzyuki - Full Vaccinated @bsdhack

@takawata19 @AoiMoe うわ耳が痛い!某銀行でSEやってた時にcppを汎用マクロ処理に使いまくっていた過去が…だってさソフト勝手に導入できないしさ、他に良いマクロプロセッサ無かったしさ(言い訳

2015-05-11 18:26:01
Takanori Watanabe 💉💉💉💉💉 @takawata19

@bsdhack @AoiMoe C Faqではm4使えという解決策が書いてありました。

2015-05-11 18:26:38
IMAIZUMI Mitzyuki - Full Vaccinated @bsdhack

@takawata19 @AoiMoe 確かにm4なんでしょうね。あれはあれでアレですが(cf 作る時にお世話になっているので足を向けては寝られませんが…

2015-05-11 18:27:52
Takanori Watanabe 💉💉💉💉💉 @takawata19

j.mp/1zVsyjq もしC言語以外のものを前処理することを考えているのであれば、汎 用のプリプロセッサーを使うことを考えること。(たいていのUnixシ ステムで使える古くから存在するツールはm4である)。

2015-05-11 18:28:15
AoiMoe a.k.aしお兄P @AoiMoe

まあ、時代背景を考えると、imakeも必要だったしGNU autotoolsも必要だったと思うのだが、未だに後者が廃れてないのはどうかと思うの。

2015-05-11 18:30:34
AoiMoe a.k.aしお兄P @AoiMoe

makeを使うならMakefile文法ですべてが完結しているべきであって、GNU makeみたいな中途半端なものを作ってあとはautotoolsに任すなんて方法論は、初手から間違ってるんじゃないかね。

2015-05-11 18:33:29
SODA Noriyuki @n_soda

@AoiMoe imakeや/usr/share/mkのように事前に調べておかなくても、ad hocに調べられるって方が適用範囲が広いので、より広まりやすいと思います。←前から書いてますが、僕はautotoolsが結構好きなので、そういうバイアスのある意見です。

2015-05-11 18:34:43
AoiMoe a.k.aしお兄P @AoiMoe

@n_soda 昔ほどそういうのが必要じゃない世の中になってるってのもあって、「未だに」という話になってます

2015-05-11 18:36:46
AoiMoe a.k.aしお兄P @AoiMoe

だってさあ、autoconfが必要だったころって、 # include <string.h> か # include <strings.h> かで悩んでたような時代だよ。

2015-05-11 18:38:26
SODA Noriyuki @n_soda

@AoiMoe OpenGroup標準の中だけで書ける範囲が非常に広くなったとは言え、epoll使いたいとかkqueue使いたいとか、依存しているサードパーティ・ライブラリのバージョンに応じて使う関数を変えたいとか、今でもカジュアルに存在する要求なので…

2015-05-11 18:39:02