---
title: Глава 13. Примерный Makefile
prev: books/porters-handbook/porting-dads
next: books/porters-handbook/keeping-up
showBookMenu: true
weight: 13
params:
  path: "/books/porters-handbook/porting-samplem/"
---

[[porting-samplem]]
= Примерный [.filename]#Makefile#
:doctype: book
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:sectnumoffset: 13
: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::[]

Вот примерный [.filename]#Makefile#, который можно использовать при создании нового порта. Обязательно удалите все дополнительные комментарии (те, которые в скобках)!

Вам рекомендуется следовать этому формату (соблюдая порядок следования переменных, пустые строки между разделами, и так далее). Этот формат разработан для того, чтобы важная информация была легко найдена. Мы рекомендуем вам воспользоваться утилитой <<porting-portlint,portlint>> для проверки файла [.filename]#Makefile#.

[.programlisting]
....
[заголовок...просто чтобы нам было легче идентифицировать порт.]
# Created by: Satoshi Asami <asami@FreeBSD.org>
[Необязательная строка Created by: содержит имя
человека, создавшего первоначальную версию порта.  Следует отметить,
что за : следует пробел, но не символ табуляции.  Если
эта строка присутствует, будущие сопровождающие не должны её менять
или удалять, кроме как по запросу первоначального автора.]

# $FreeBSD$
[ ^^^^^^^^^ Эта строка будет автоматически заменена на строчку RCS ID
системой SVN при выполнении операции коммита в наше хранилище.  При
обновлении порта не приводите эту строку обратно к виду
"$FreeBSD$".  SVN сделает это автоматически.]

[секция описания собственно порта и основного сервера - сначала всегда
 PORTNAME и PORTVERSION, за ним следует 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
PKGNAMEPREFIX=	ja-
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=	DVI Previewer for the X Window System

[зависимости -- могут быть пустыми]
RUN_DEPENDS=	gs:${PORTSDIR}/print/ghostscript

[этот раздел для остальных стандартных переменных из bsd.port.mk, кроме
 тех, что перечислены выше]
[Если порт задает вопросы во время этапов настройки, построения,
 установки...]
IS_INTERACTIVE=	yes
[Если распаковка происходит в каталог, отличных от ${DISTNAME}...]
WRKSRC=		${WRKDIR}/xdvi-new
[Если патчи делались не относительно ${WRKSRC}, вам, может быть, не
 придется изменять эту переменную]
PATCH_DIST_STRIP=	-p1
[Если порт требует скрипта "configure", генерируемого GNU-версией программы
 autoconf]
GNU_CONFIGURE=	yes
[Если для построения порту требуется GNU-версия утилиты make, а не
 /usr/bin/make...]
USES=		gmake
[Если это приложение X и требует запуска "xmkmf -a"...]
USES=		imake
[и так далее]

[В правилах ниже используются нестандартные переменные]
MY_FAVORITE_RESPONSE=	"yeah, right"

[теперь специальные правила, в порядке их вызова]
pre-fetch:
	я что-то выкачиваю, точно

post-patch:
	мне кое-что сделать после применения патча, великолепно

pre-install:
	и потом еще кое-что перед установкой, ого

[и, наконец, эпилог]

.include <bsd.port.mk>
....
