---
title: 第17章 Makefile のサンプル
prev: books/porters-handbook/porting-dads
next: books/porters-handbook/porting-autoplist
showBookMenu: true
weight: 17
params:
  path: "/books/porters-handbook/porting-samplem/"
---

[[porting-samplem]]
= [.filename]#Makefile# のサンプル
:doctype: book
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:sectnumoffset: 17
:partnums:
:source-highlighter: rouge
:experimental:
:images-path: books/porters-handbook/

ifdef::env-beastie[]
ifdef::backend-html5[]
:imagesdir: ../../../../images/{images-path}
endif::[]
ifndef::book[]
include::shared/authors.adoc[]
include::shared/mirrors.adoc[]
include::shared/releases.adoc[]
include::shared/attributes/attributes-{{% lang %}}.adoc[]
include::shared/{{% lang %}}/teams.adoc[]
include::shared/{{% lang %}}/mailing-lists.adoc[]
include::shared/{{% lang %}}/urls.adoc[]
toc::[]
endif::[]
ifdef::backend-pdf,backend-epub3[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]
endif::[]

ifndef::env-beastie[]
toc::[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]

これは port の [.filename]#Makefile# を作る際のお手本です。 かぎかっこ ([]) 内のコメントは忘れずに取ってください。

変数の順番、段落の間の空行など、 [.filename]#Makefile# を作るときはなるべくこの形式に従ってください。 この形式は重要な情報が簡単に見つけられるように設計されています。 <<porting-portlint,portlint>> を使って [.filename]#Makefile# をチェックすることが推奨されています。

[.programlisting]
....
[ヘッダ ... どのような port の Makefile かすぐにわかるようになっています]
# New ports collection makefile for:    xdvi
["version required" 行は、PORTVERSION 変数では port のバージョンを
十分に表現できない場合にのみ必要です。]
# Date created: 26 May 1995
[このソフトウェアを最初に FreeBSD に port した人の名前、つまり、
 この Makefile の最初の版を書いた人です。この port をアップグレー
 ドするとき、この行も変えないでください。]
# Whom:         Satoshi Asami <asami@FreeBSD.org>
#
# $FreeBSD$
[ ^^^^^^^^^ この部分は、CVS ツリーに入れる時に自動的に RCS の ID 文字列に
 置き換えられます。]
#

[port 自体、およびオリジナルのソースを取ってくるところを記述する部分。
 最初は必ず PORTNAME と PORTVERSION, そして必要なら PKGNAME,
 CATEGORIES, 続いて MASTER_SITES が置かれ、さらに MASTER_SITE_SUBDIR が
 置かれることもあります。必要なら PKGNAMEPREFIX と PKGNAMESUFFIX が
 それに続き、そして DISTNAME, EXTRACT_SUFX, DISTFILES が、
 また、その後に必要に応じて EXTRACT_ONLY が置かれます。]
PORTNAME=       xdvi
PORTVERSION=    18.2
CATEGORIES=     print
[MASTER_SITE_* マクロを使用しない場合は、
最後のスラッシュを忘れないように ("/")!]
MASTER_SITES= ${MASTER_SITE_XCONTRIB}
MASTER_SITE_SUBDIR= applications
DISTNAME=       xdvi-pl18
[ソースファイルが標準の ".tar.gz" 形式でない時にこれを使いましょう]
EXTRACT_SUFX=   .tar.Z

[配布パッチセクション -- ない場合もあります]
PATCH_SITES=    ftp://ftp.sra.co.jp/pub/X11/japanese/
PATCHFILES=     xdvi-18.patch1.gz xdvi-18.patch2.gz

[保守責任者 -- これは *必ず* 必要です。担当者 (あなた) 自身、あるいは
 担当者に素早く連絡をとれる人のアドレスを書いてください。どうしてもこ
 こに自分のアドレスを書くのがいやな人は "ports@FreeBSD.org" と書いて
 もいいです]
MAINTAINER=     asami@FreeBSD.org
COMMENT=       A DVI Previewer for the X Window System

[依存するport -- ない場合もあります]
RUN_DEPENDS=    gs:${PORTSDIR}/print/ghostscript
LIB_DEPENDS=    Xpm.5:${PORTSDIR}/graphics/xpm

[ここには標準の bsd.port.mk の変数で、上のどれにもあてはまらないものを
 書きます]
[コンフィグレーション、コンパイル、インストールなどの時に質問をする
 なら…]
IS_INTERACTIVE=yes
[${DISTNAME} 以外のディレクトリにソースが展開されるなら…]
WRKSRC= ${WRKDIR}/xdvi-new
[配布されているパッチが ${WRKSRC} に対する相対パスで作られてい
 い場合にこの変数の指定が必要かも…]
PATCH_DIST_STRIP=       -p1
[GNU autoconf によって生成された "configure" スクリプトを走らせたいなら…]
GNU_CONFIGURE=  yes
[/usr/bin/makeでなく、GNU make を使わないといけないなら…]
USE_GMAKE=      yes
[これが X のアプリケーションで、"xmkmf -a" を走らせたいなら…]
USE_IMAKE=      yes
[などなど]

[下の方のルールで使う非標準の変数]
MY_FAVORITE_RESPONSE=   "yeah, right"

[そして、特別なターゲット、使用順に]
pre-fetch:
        i go fetch something, yeah

post-patch:
        i need to do something after patch, great

pre-install:
        and then some more stuff before installing, wow

[最後には必ず]
.include <bsd.port.mk>
....
