Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ mkmf(1) — NEWS-os 4.2.1R

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

ar(1)

ctags(1)

ex(1)

ld(1)

ls(1)

make(1)

MKMF(1)  —  NEWS-OS Programmer’s Manual

名称

mkmf − メイクファイル エディタ

形式

mkmf [ −acdil ] [ −f makefile ] [ −F template ] [ macroname=value ...  ]

解説

mkmf は、どのようにプログラムとライブラリを作成し保存するかを make コマンドに指示するメイクファイル 作り出します。 カレント作業ディレクトリにすべてのソースコードファイルを集め、 その名前をメイクファイルに入れた後、 mkmf はソースコードファイルをスキャンしてインクルードされるファイルを調べ、 makefile に付け加える従属情報を生成します。 ソースファイルコードは、ファイル名のサフィックスで識別されます。 mkmf は、次にあげるサフィックスを識別します。

.cC
.eEfl
.FFortran
.fFortran
.hインクルードファイル
.iPascal インクルードファイル
.lLex または Lisp
.oオブジェクトファイル
.pPascal
.rRatfor
.sAssembler
.yYacc

mkmf は、新しく作る前に既存のメイクファイルをチェックします。 −f オプションの指定がなければ、 メイクファイル ‘makefile’ と ‘Makefile’ が順に試みられます。 メイクファイルの作成後、通常のテキストエディタを使用して任意の変更ができます。 mkmf は、作成されてから今までに行われた変更に関係なく、 メイクファイル中のマクロ定義の再編集に使うことができます。 デフォルトにより、 mkmf はメイクファイルプログラムを作ることができます。 ライブラリを処理するメイクファイルを作るためには、 −l オプションを使わなければなりません。 リクエストの作成 mkmf によって作られるメイクファイルには、リクエストが与えられます。 make は次のようなリクエストを識別します。

allプログラムやライブラリをコンパイルしてロードします。

clean必要のないファイルをすべて削除します。

dependメイクファイルを編集して、従属情報を再生成します。

extractライブラリからすべてのオブジェクトファイルを取り出し、 それらをソースコードファイルと同じディレクトリに置きます。

index標準出力に関数の索引をプリントします。

installプログラムやライブラリのコンパイルとロードを行い、 それをデスティネーションディレクトリに移します。

libraryライブラリをコンパイルしてロードします。

print標準出力にソースコードファイルをプリントします。

tagsC、FORTRAN、PASCAL のソースコードファイルについて、 ex エディタ用のタグファイルを作成します。

programプログラムをコンパイルしてリンクします。

updateプログラムやライブラリよりも新しいソースコードファイルがある場合にのみ、 再コンパイルし、プログラムやライブラリをリンクしてインストールします。 日付のないライブラリの場合には、再コンパイルが行われる前に、 すべてのオブジェクトファイルがライブラリから取り出されます。 いくつかのリクエストが同時に与えられることもあります。 例えば、プログラムをコンパイルしてリンクするために、 プログラムをそのデスティネーションディレクトリに移し、 必要のないオブジェクトファイルを削除するには、次のようにします。

make program install clean マクロ定義 mkmf では、次のマクロ定義が使用できます。

CFLAGSC コンパイラのフラグです。 現在実行中のディレクトリ中でインクルードファイルを検索した後、 mkmf は −I コンパイラオプションで指定されたディレクトリを検索し、 次に、ディレクトリ ‘/usr/include’ と ‘/usr/sony/include’ を検索します。

DESTプログラムやライブラリがインストールされるディレクトリです。

EXTHDRSカレントディレクトリ外のインクルードファイルのリストです。 mkmf は、従属情報が生成されると、 自動的にメイクファイル中のこのマクロ定義を更新します。

FFLAGSFortran のコンパイラフラグです。 現在実行中のディレクトリ中でインクルードファイルを検索した後、 mkmf は −I コンパイラオプションで指定されたディレクトリを検索し、 ディレクトリ ‘/usr/include’ と ‘/usr/sony/include’ を検索します。

HDRSカレントディレクトリ中のインクルードファイルのリストです。 mkmf は、自動的にメイクファイル中のこのマクロ定義を更新します。

LIBRARYライブラリ名です。このマクロ定義も −l オプションがあることを前提としています。

LIBSリンクエディタが外部参照を解決するのに必要とするライブラリのリストです。

MAKEFILEメイクファイル名です。

OBJSオブジェクトファイルのリストです。 mkmf は、自動的にメイクファイル中のこのマクロ定義を更新します。

PROGRAMプログラム名です。

SRCSソースコードファイルのリストです。 mkmf は、自動的にメイクファイル中のこのマクロ定義を更新します。

SUFFIXmkmf に知らせる、付加的なファイル名サフィックスです。 これらと、すでにメイクファイル中に入っているその他のマクロ定義は両方とも、 macroname=value の形式でコマンド行に定義することによって置き換えられます。 例えば、メイクファイル中の Cコンパイラのフラグと プログラム名とデスティネーションディレクトリを変更するには、 次の行を打ち込まなければなりません。

mkmf  “CFLAGS=−I../include  −O”  PROGRAM=mkmf  DEST=/usr/new

CFLAGS のように空白を含むマクロ定義はダブルクォート ‘"’ で 囲まなければならないことに注意してください。 ファイル名サフィックス mkmf は、付加的なファイル名サフィックスを認識できるようにしたり、 既に認識しているサフィックスを無視したりするようにできます。 これは、SUFFIX マクロ定義にサフィックスディスクリプションを指定する ことによります。 各サフィックスディスクリプションは ‘.suffix:tI’ の形式で、 t はファイルの内容 (s =ソースファイル、o = オブジェクトファイル、 h = ヘッダファイル、x = 実行ファイル) を示す文字であり、 I はファイルに含まれている構文 (C = C 構文、 F = FORTRAN、Efl、Ratfor 構文、 P = PASCAL 構文) を示すオプショナル文字です。次の表に、 mkmf のデフォルトのコンフィギュレーションを示します。
 

.c:sCC
.e:sFEfl
.F:sFFortran
.f:sFFortran
.h:hインクルードファイル
.i:hPascal インクルードファイル
.l:sCLex または Lisp
.o:oオブジェクトファイル
.p:sPPascal
.r:sFRatfor
.s:sAssembler
.y:sCYacc

例えば、オブジェクトファイルのサフィックスを .obj に変更するには、 Pascal のインクルードファイルのサフィックスの定義を解除し、 Fortran ファイルがインクルードされるファイルとして スキャンされるのを防ぐために、SUFFIX マクロ定義は次のようにします。

"SUFFIX = .obj:o  .i:  .f:s" インクルードステートメントの構文 C、Fortran、Pascal ソースコード用のインクルード文の構文は、次の形式です。

C:#include "filename"

# は、行の先頭になくてはなりません。

Fortran:include ’filename’

INCLUDE ’filename’
インクルード文は、7 カラム目から始めなければなりません。

Pascal:#include "filename"

#INCLUDE "filename"
# は、行の先頭になくてはなりません。

ユーザ定義テンプレート mkmf がカレントディレクトリ中にメイクファイルを見つけられない場合には、 普通、標準メイクファイルテンプレートのうちの 1つを使います。 テンプレートは、ディレクトリ $PROJECT/lib の中に、 交替テンプレートファイルである ‘p.Makefile’ または、 ‘l.Makefile’ がなければ、/usr/new/lib 中の ‘p.Makefile’ または、 ‘l.Makefile’ です。 ここで、$PROJECT は、環境変数 PROJECT に割り当てられた ディレクトリの絶対パス名です。

オプション

−aディレクトリ上でソースやインクルードファイルを捜す場合にも、 ファイルはピリオドで始まる名前を持つものとみなします。デフォルトでは、 mkmf は何かのエディタで作られたバックアップファイルのような、 "ドット" で始まるファイル名を無視します。

−c‘creating makefile from...’ メッセージを抑制します。

−dインクルードファイルを探すために行うソースコードのスキャンを中止します。 古い従属情報は、メイクファイルにそのまま残されます。

−f makefile
交替 makefile のファイル名を指定します。デフォルトのファイル名は ‘Makefile’ です。

−imkmf は、ユーザに対してプログラムやライブラリの名前と、 インストールされるディレクトリの入力を促します。 キャリッジリターンがこれらの質問に対する答えとして入力されると、 mkmf はデフォルトプログラム名を a.out とし、デフォルトライブラリ名を lib.a とし、デスティネーションディレクトリをカレントディレクトリとします。

−lメイクファイルをライブラリメイクファイルにします。

−F template
交替メイクファイル template のファイル名を指定します。 デフォルトのプログラムメイクファイルテンプレートは ‘p.Makefile’ であり、 デフォルトのライブラリメイクファイルテンプレートは ‘l.Makefile’ です。 mkmf は普通、/usr/new/lib もしくは $PROJECT/lib 中で template を捜します。しかし、 template は絶対パス名で指定することができます。

関連ファイル

/usr/new/lib/p.Makefile 標準のプログラムメイクファイルテンプレート

/usr/new/lib/l.Makefile 標準のライブラリメイクファイルテンプレート

$PROJECT/lib/p.Makefile ユーザに定義されるプログラムメイクファイルテンプレート

$PROJECT/lib/l.Makefile ユーザに定義されるライブラリメイクファイルテンプレート

関連事項

ar(1), ctags(1), ex(1), ld(1), ls(1), make(1) Feldman, S.I., "Make − A Program for Maintaining Computer Programs" Walden, K., "Automatic Generation of Make Dependencies", Software−Practice and Experience, vol. 14, no. 6, pp. 575-585, June 1984. 

診断

終了ステータス 0 は正常な状態です。終了ステータス 1 はエラーを示しています。

著者

Peter J. Nicklin

バグ

メイクファイルの名前は、マクロ定義としてメイクファイルの中に含まれており、 メイクファイルがリネームされる場合には変更されなければなりません。 実行ファイルはライブラリに依存するので、 標準ライブラリの省略形はメイクファイル中の LIBS マクロ定義でフルパス 名に拡張されなければなりません。 生成された従属情報は、メイクファイル中の ‘###’ で始まる行の後にあります。 この行を削除してはいけません。 また、他の情報をメイクファイルのこの行の下に挿入してもいけません。

NEWS-OSRelease 4.2.1R

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026