次のページ 前のページ 目次へ

3. システムのヘッダファイルの修正

Interactive Unix 付属の標準ヘッダファイルを少し修正しなければなりませ ん。また、gcc-lib/include ディレクトリのヘッダファイルも少し修正する必 要があります。

次のディレクトリを gcc 関連ファイルのディレクトリとし、これを "gcc-lib" と呼ぶことにします:

/usr/local/lib/gcc-lib/i[345]86-isc[34].[0-9]/2.6.x

3.1 /usr/include/sys/limits.h

および gcc-lib/include/sys/limits.h

          #ifndef OPEN_MAX
          #ifdef ISC
          #define OPEN_MAX        256
          #else
          #define OPEN_MAX        20
          #endif
          #endif
          
Xlib でエラー(クライアント数が最大値になってしまう)が起こら ないようにするため OPEN_MAX

3.2 /usr/include/sys/ioctl.h

多重インクルードを避けるため、ファイルの中身全体を次の #ifdef で囲みま す。

        #ifndef _IOCTL_H 
        #define _IOCTL_H
        ...
        #endif
        

3.3 /usr/include/errno.h

(および、 gcc の対応するインクルードファイル)

        #include <net/errno.h>
        
を追加します。これは、lbx 関係で数ヶ所 EWOULDBLOCK が未定義になるためです。 /usr/include/net/errno.h

        #ifndef _NET_ERRNO_H
        #define _NET_ERRNO_H
        ...
        #endif
        

で囲みます。これは、<net/errno.h> がソースから明示的に インクルードされると多重インクルードが起こるのを避けるためです。

3.4 /usr/include/rpc/types.h

このファイルを gcc-lib/include/rpc/types.h にコピーし、 malloc() の定義を

         #if !defined(__cplusplus)
         extern char *malloc();
         #endif
         

のように変更します。

この作業は Fresco を構築する場合だけに必要な点に注意してください。

3.5 /usr/include/sys/un.h

このファイルは Interactive Unix には存在しません。depend からのウォー ニングが嫌ならば、このファイルを作っても構いません。これはソースを正常 にコンパイルするためには必要ありません。

un.h を作るには以下の内容が使えるでしょう:

         #ifndef X_NO_SYS_UN
         struct  sockaddr_un {
                 short   sun_family;             /* AF_UNIX */
                 char    sun_path[108];          /* path name (gag) */
         };
         #endif
         

3.6 /usr/include/math.h

inline-math パッケージを使うには、既存の math.h を変更しなければなりま せん。筆者がヘッダファイルを組み込んだ方法は、inline-math パッケージの README に書かれている方法と異なる点に注意してください。

以下の内容を、 math.h の終わりの部分の最後の #endif の前に追加してくだ さい:

#if defined(UseInlineMath)

/* Needed on ISC __CONCAT, PI */
#ifndef __CONCAT
/*
 * The __CONCAT macro is used to concatenate parts of symbol names, e.g.
 * with "#define OLD(foo) __CONCAT(old,foo)", OLD(foo) produces oldfoo.
 * The __CONCAT macro is a bit tricky -- make sure you don't put spaces
 * in between its arguments.  __CONCAT can also concatenate double-quoted
 * strings produced by the __STRING macro, but this only works with ANSI C.
 */
#if defined(__STDC__) || defined(__cplusplus)
#define __CONCAT(x,y)   x ## y
#define __STRING(x)     #x
#else   /* !(__STDC__ || __cplusplus) */
#define __CONCAT(x,y)   x/**/y
#define __STRING(x)     "x"
#endif  /* !(__STDC__ || __cplusplus) */
#endif

#ifndef PI
#define PI M_PI
#endif

#include "/usr/local/include/i386/__math.h"
#endif
         


次のページ 前のページ 目次へ