---
title: Chapter 2. Making a New Port
prev: books/porters-handbook/porting-why
next: books/porters-handbook/quick-porting
---

[[own-port]]
= Making a New Port
:doctype: book
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:source-highlighter: rouge
:experimental:
:skip-front-matter:
:xrefstyle: basic
:relfileprefix: ../
:outfilesuffix:
:sectnumoffset: 2

include::shared/mirrors.adoc[]
include::shared/authors.adoc[]
include::shared/releases.adoc[]
include::shared/en/mailing-lists.adoc[]
include::shared/en/teams.adoc[]
include::shared/en/urls.adoc[]

toc::[]

Interested in making a new port, or upgrading existing ports? Great!

What follows are some guidelines for creating a new port for FreeBSD. To upgrade an existing port, read this, then read crossref:port-upgrading[port-upgrading,Upgrading a Port].

When this document is not sufficiently detailed, refer to [.filename]#/usr/ports/Mk/bsd.port.mk#, which is included by all port [.filename]#Makefiles#. Even those not hacking [.filename]##Makefile##s daily can gain much knowledge from it. Additionally, specific questions can be sent to the {freebsd-ports}.

[NOTE]
====
Only a fraction of the variables (`_VAR_`) that can be overridden are mentioned in this document. Most (if not all) are documented at the start of [.filename]#/usr/ports/Mk/bsd.port.mk#; the others probably ought to be. Note that this file uses a non-standard tab setting: Emacs and Vim will recognize the setting on loading the file. Both man:vi[1] and man:ex[1] can be set to use the correct value by typing `:set tabstop=4` once the file has been loaded.
====

Looking for something easy to start with? Take a look at the https://wiki.freebsd.org/WantedPorts[list of requested ports] and see if you can work on one (or more).
