--- title: Chapter 2. Making a New Port prev: books/porters-handbook/porting-why next: books/porters-handbook/quick-porting description: How to make a new FreeBSD Port tags: ["new port", "upgrading", "guidelines", "ports"] showBookMenu: true weight: 2 params: path: "/books/porters-handbook/new-port/" --- [[own-port]] = Making a New Port :doctype: book :toc: macro :toclevels: 1 :icons: font :sectnums: :sectnumlevels: 6 :sectnumoffset: 2 :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::[] 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: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).