[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
pkgsrc/doc/guide/files/fixes.xml: 1.32 -> 1.35
以下のページの更新をしました。ツッコミをお願いします。
pkgsrc/doc/guide/files/fixes.xml: 1.32 -> 1.35
> revision 1.35
> date: 2005/11/03 17:31:57; author: tv; state: Exp; lines: +2 -1
> Add __INTERIX.
> ----------------------------
> revision 1.34
> date: 2005/11/03 16:04:55; author: rillig; state: Exp; lines: +2 -1
> Added __DragonFly__.
> ----------------------------
> revision 1.33
> date: 2005/11/03 02:51:45; author: rillig; state: Exp; lines: +58 -24
> Rewrote the section about CPP defines, as NetBSD is not the only target
> platform of pkgsrc. It now lists some commonly known predefined macros
> for operating systems, CPUs and compilers.
木曜日までに異議がなければ、 commit します。
以下、訳と原文それぞれの新旧の差分です。
--- fixes.xml.orig 2006-10-17 01:48:57.000000000 +0900
+++ fixes.xml 2006-10-17 01:48:57.000000000 +0900
@@ -1,9 +1,9 @@
-<!-- $NetBSD: fixes.xml,v 1.32 2005/10/23 11:25:58 rillig Exp $ -->
+<!-- $NetBSD: fixes.xml,v 1.35 2005/11/03 17:31:57 tv Exp $ -->
<!-- Based on english version: -->
-<!-- NetBSD: fixes.xml,v 1.32 2005/10/23 11:25:58 rillig Exp -->
+<!-- NetBSD: fixes.xml,v 1.35 2005/11/03 17:31:57 tv Exp -->
<chapter id="fixes"> <?dbhtml filename="fixes.html"?>
- <title>パッケージの修正に関する注意</title>
+ <title>パッケージを動くようにする</title>
<sect1 id="general-operation">
<title>一般的な操作</title>
@@ -751,39 +751,79 @@
</sect1>
- <sect1 id="building-considerations">
- <title>構築の考察</title>
+ <sect1 id="fixes-build">
+ <title>パッケージを構築する</title>
<sect2 id="cpp-defines">
<title>CPP定義</title>
-
- <para>
- アプリケーションをNetBSDに移植するためには、コンパイラーがコンパイルしてい
- るシステムを判断する必要があります。したがって、Cのプリプロセッサーがシステ
- ムを判断できるように、CPPの定義を使います。
-</para>
- <para>
- 4.4 BSDから派生したシステム上で作業しているかどうかをテストするためには、
- BSD定義を使用します。これは
- <filename><sys/param.h></filename>で定義されています。
-</para>
-
-<programlisting>
- <![CDATA[#include <sys/param.h>]]>
+ <para>時には、対象プラットフォームによって、
+ コンパイルするコードを変える必要があります。 C プリプロセッサーには、
+ 一連の定義済みマクロがあり、<varname>#ifdef FOO</varname>
+ または <varname>#if defined(FOO)</varname>
+ を使ってそれらを問い合わせることができます。これらのマクロは通常は、
+ ターゲットの CPU およびオペレーティングシステムについての情報を持つものです。
+ どのようなマクロが定義されているかによって、
+ 特定のプラットフォームに固有の機能を使ったコードを書くことができます。
+ プラットフォーム間の差異を処理するための最良の方法は、GNU autotools (automake,
+ autoconf, etc.) を使って、個別の機能 (ヘッダーファイル、関数やライブラリーの有無)
+ を検査することです。</para>
+
+ <para>そうすることができない場合は、
+ 実行しているプラットフォーム用のコードを構成するために、
+ 以下の定義済みマクロを使うことができます。
+ ほとんどすべてのオペレーティングシステム、ハードウェアアーキテクチャー、
+ およびコンパイラーには、独自のマクロがあります。
+ たとえば、<varname>__GNUC__</varname>,
+ <varname>__i386__</varname>, <varname>__NetBSD__</varname>
+ の各マクロがすべて定義されている場合は、Intel CPU 上の NetBSD を使っていることと、
+ コンパイラーが GCC であることがわかります。</para>
+
+ <sect3 id="fixes-build-cpp-opsys">
+ <title>オペレーティングシステムに関する CPP 定義</title>
+
+ <para>4.4 BSD から派生したシステムとそれ以外のシステムを
+ 見分けるには、以下のコードを使うようにしてください。</para>
+
+<programlisting><![CDATA[
+ #include <sys/param.h>
+ #if (defined(BSD) && BSD >= 199306)
+ /* your BSD-specific code goes here */
+ #else
+ /* non-BSD-specific code */
+ #endif
+]]></programlisting>
+
+ <para>これでは十分正確でない場合は、
+ 以下の定義を使うこともできます。</para>
+
+<programlisting>
+ FreeBSD __FreeBSD__
+ DragonFly __DragonFly__
+ Interix __INTERIX
+ Linux linux, __linux, __linux__
+ NetBSD __NetBSD__
+ OpenBSD __OpenBSD__
+ Solaris sun, __sun (GCC および SunPro), __sun__ (GCC のみ)
+</programlisting>
+
+ </sect3><sect3 id="fixes-build-cpp-cpu">
+ <title>CPU に関する CPP 定義</title>
+
+<programlisting>
+ i386 i386, __i386, __i386__
+ MIPS __mips
+ SPARC sparc, __sparc
</programlisting>
- <para>また、パッケージの C や C++ のコードのうち BSDに固有の部分を、
- 以下の条件でかこむこともできます。</para>
+ </sect3><sect3 id="fixes-build-cpp-compiler">
+ <title>コンパイラーに関する CPP 定義</title>
<programlisting>
- <![CDATA[#if (defined(BSD) && BSD >= 199306)
- ...
- #endif]]>
+ GCC __GNUC__ (メジャーバージョン), __GNUC_MINOR__
</programlisting>
- <para>どうか注意して<quote>__NetBSD__</quote>定義を使って下さい。4.4-liteから派生した他のBSDにな
- い&os;固有の特徴にのみ適用してください。</para>
+ </sect3>
</sect2>
<sect2 id="cpp-list">
Index: fixes.xml
===================================================================
RCS file: /cvsroot/pkgsrc/doc/guide/files/fixes.xml,v
retrieving revision 1.32
retrieving revision 1.35
diff -u -r1.32 -r1.35
--- fixes.xml 23 Oct 2005 11:25:58 -0000 1.32
+++ fixes.xml 3 Nov 2005 17:31:57 -0000 1.35
@@ -1,7 +1,7 @@
-<!-- $NetBSD: fixes.xml,v 1.32 2005/10/23 11:25:58 rillig Exp $ -->
+<!-- $NetBSD: fixes.xml,v 1.35 2005/11/03 17:31:57 tv Exp $ -->
<chapter id="fixes"> <?dbhtml filename="fixes.html"?>
- <title>Notes on fixes for packages</title>
+ <title>Making your package work</title>
<sect1 id="general-operation">
<title>General operation</title>
@@ -804,40 +804,76 @@
</sect1>
- <sect1 id="building-considerations">
- <title>Building considerations</title>
+ <sect1 id="fixes-build">
+ <title>Building the package</title>
<sect2 id="cpp-defines">
<title>CPP defines</title>
-
- <para>
- To port an application to NetBSD, it's usually necessary for the
- compiler to be able to judge the system on which it's compiling, and
- we use definitions so that the C pre-processor can do this.
-</para>
- <para>
- To test whether you are working on a 4.4 BSD-derived system, you
- should use the BSD definition, which is defined in
- <filename><sys/param.h></filename> on said systems.
-</para>
-
-<programlisting>
- <![CDATA[#include <sys/param.h>]]>
+ <para>Sometimes you need to compile different code depending on
+ the target platform. The C preprocessor has a set of predefined
+ macros that can be queried by using <varname>#ifdef FOO</varname>
+ or <varname>#if defined(FOO)</varname>. Among these macros are
+ usually ones that describe the target CPU and operating system.
+ Depending of which of the macros are defined, you can write code
+ that uses features unique to a specific platform. The best way to
+ handle these differences is to use the GNU autotools (automake,
+ autoconf, etc.) to check for specific features (like the existence
+ of a header file, a function or a library).</para>
+
+ <para>If that is not possible you can use the predefined macros
+ below to configure your code to the platform it runs on. Almost
+ every operating system, hardware architecture and compiler has its
+ own macro. For example, if the macros <varname>__GNUC__</varname>,
+ <varname>__i386__</varname> and <varname>__NetBSD__</varname> are
+ all defined, you know that you are using NetBSD on an Intel CPU,
+ and your compiler is GCC.</para>
+
+ <sect3 id="fixes-build-cpp-opsys">
+ <title>CPP defines for operating systems</title>
+
+ <para>To distinguish between 4.4 BSD-derived systems and the
+ rest of the world, you should use the following code.</para>
+
+<programlisting><![CDATA[
+ #include <sys/param.h>
+ #if (defined(BSD) && BSD >= 199306)
+ /* your BSD-specific code goes here */
+ #else
+ /* non-BSD-specific code */
+ #endif
+]]></programlisting>
+
+ <para>If this distinction is not fine enough, you can also use
+ the following defines.</para>
+
+<programlisting>
+ FreeBSD __FreeBSD__
+ DragonFly __DragonFly__
+ Interix __INTERIX
+ Linux linux, __linux, __linux__
+ NetBSD __NetBSD__
+ OpenBSD __OpenBSD__
+ Solaris sun, __sun (GCC and SunPro), __sun__ (only GCC)
+</programlisting>
+
+ </sect3><sect3 id="fixes-build-cpp-cpu">
+ <title>CPP defines for CPUs</title>
+
+<programlisting>
+ i386 i386, __i386, __i386__
+ MIPS __mips
+ SPARC sparc, __sparc
</programlisting>
- <para>and then you can surround the BSD-specific parts of your
- package's C/C++ code using this conditional:</para>
+ </sect3><sect3 id="fixes-build-cpp-compiler">
+ <title>CPP defines for compilers</title>
<programlisting>
- <![CDATA[#if (defined(BSD) && BSD >= 199306)
- ...
- #endif]]>
+ GCC __GNUC__ (major version), __GNUC_MINOR__
</programlisting>
- <para>Please use the <quote>__NetBSD__</quote> definition sparingly - it
- should only apply to features of &os; that are not present in other
- 4.4-lite-derived BSDs.</para>
+ </sect3>
</sect2>
<sect2 id="cpp-list">