[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: nbitools on Darwin



On Thu, 29 Jan 2004 12:49:25 +0900,
Osamu OISHI <oishi@ims.ac.jp> wrote:

> > +-#if defined(__FreeBSD__) || defined(__NetBSD__)
> > ++#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__APPLE__)

> のように、MDあるいはplatform dependな環境での変数の扱いを
> patchの形で入れてしまうと他のOSで使う時に、
> OSの数だけ付け加えなくてはならなくなるので維持が面倒なように思えます。

僕は元々のプログラムの使っている方法によって修正方法を変えています。
あんまり考えたことがありませんでしたが、作者がパッチを受け入れやすいよう
な変更にすることを重視しているような気がします。

(1) autoconf
  configure.in、あるいは aclocal.m4を修正します。

(2) if defined(HAVE_XXX)
  ソース側には if defined(HAVE_XXX) を追加、Makefile で -DHAVE_XXX
  を指定するように変更します。pkgsrc の Makefile の修正ですむのか、オリジナルの
  Makefileへのパッチにするのかはケースバイケースです。

(3) if defined(__PLATFORM__)
  汚いですけど、同一のプログラムの中でやり方が変わるよりはましだと思っています。

> platform依存性は、
> 1."CPPFAGS+=-D__NetBSD__" とかして処理OSを強制的にNetBSDにする

これは悪影響が出そうなので好みではありません。とりあえずコンパイルしたいって時には
試してみたりもしますが、コミットはしません。

> 2.pkgsrcの環境変数でplatformを判別する

ソースが (2)のスタイルで書かれていて、pkgsrc 側のMakefile の修正だけですむ
場合はこうしています。pkgsrc固有の変更でない限り、ソースから pkgsrc の環境変数
を参照するのは好きではありません。

> 3.uname(1)かmachine(1)で判別

configure相当の独自のスクリプトを使っているソフトウェアの場合に使うことがあります。

-- 
Yuji Yamano <yyamano@kt.rim.or.jp>