diff --git a/contrib/freebsd/.gitignore b/contrib/freebsd/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..b8f99f5be53f536f79ef622abaa77b9942a9e142
--- /dev/null
+++ b/contrib/freebsd/.gitignore
@@ -0,0 +1 @@
+work
diff --git a/contrib/freebsd/Makefile b/contrib/freebsd/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..efcaac073eea24b10b05502b48cb6174da03e962
--- /dev/null
+++ b/contrib/freebsd/Makefile
@@ -0,0 +1,35 @@
+# Created by thequux for Upstanding Hackers
+# Copyright (c) 2014 Upstanding Hackers
+#
+# The contents of this file are available under the 2-clause BSD
+# license.
+
+PORTNAME = hammer
+PORTVERSION = 0.9
+CATEGORIES = devel
+EXTRACT_SUFX = .tar.bz2
+
+USES = scons
+
+# MASTER_SITE
+MAINTAINER = thequux@upstandinghackers.com
+COMMENT = Parser combinators. In C.
+
+LICENSE = GPLv2
+GIT_REV = master
+GIT_URL = git://github.com/UpstandingHackers/hammer.git
+
+SCONS_ARGS = --variant=opt DESTDIR=${STAGEDIR} prefix=${LOCALBASE}
+SCONS_TARGET = all
+SCONS_INSTALL_TARGET = install
+
+do-fetch:
+	${MKDIR} ${WRKDIR}
+	git clone -b ${GIT_REV} ${GIT_URL} ${WRKDIR}/${DISTNAME}
+	cd ${WRKDIR}; tar cvfy ${DISTDIR}/${DISTNAME}.tar.bz2 ${DISTNAME}
+	rm -rf ${WRKDIR}/${DISTNAME}
+
+FETCH_DEPENDS += git:${PORTSDIR}/devel/git
+
+# TODO: strip libhammer.so
+.include <bsd.port.mk>
diff --git a/contrib/freebsd/pkg-descr b/contrib/freebsd/pkg-descr
new file mode 100644
index 0000000000000000000000000000000000000000..e5bedb8de42f9bff944475649e7be780ecaba401
--- /dev/null
+++ b/contrib/freebsd/pkg-descr
@@ -0,0 +1,4 @@
+Hammer is a fast parser combinator library written in C with bindings
+for many languages.
+
+WWW: http://github.com/UpstandingHackers/hammer
\ No newline at end of file
diff --git a/contrib/freebsd/pkg-plist b/contrib/freebsd/pkg-plist
new file mode 100644
index 0000000000000000000000000000000000000000..c751ea1e61032e6dcbe9e61603f27425eb2823cc
--- /dev/null
+++ b/contrib/freebsd/pkg-plist
@@ -0,0 +1,14 @@
+include/hammer/internal.h
+include/hammer/allocator.h
+include/hammer/parsers/parser_internal.h
+include/hammer/backends/regex.h
+include/hammer/backends/contextfree.h
+include/hammer/glue.h
+include/hammer/hammer.h
+lib/libhammer.so
+lib/libhammer.a
+lib/pkgconfig/libhammer.pc
+@dirrm include/hammer/parsers
+@dirrm include/hammer/backends
+@dirrm include/hammer
+@dirrmtry lib/pkgconfig
\ No newline at end of file