diff --git a/Makefile.dep b/Makefile.dep
index 218e5aaa830c9a22e4b10afb851981f91dff8684..f1d20c5ca714f279b24af81872d6e4a9ca73e9d3 100644
--- a/Makefile.dep
+++ b/Makefile.dep
@@ -441,6 +441,7 @@ endif
 
 ifneq (,$(filter libfixmath-unittests,$(USEMODULE)))
   USEPKG += libfixmath
+  USEMODULE += libfixmath
 endif
 
 ifneq (,$(filter fib,$(USEMODULE)))
diff --git a/pkg/libfixmath/.gitignore b/pkg/libfixmath/.gitignore
deleted file mode 100644
index 5e660dc18ee09de767206f11ad044e132867bf21..0000000000000000000000000000000000000000
--- a/pkg/libfixmath/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/checkout
diff --git a/pkg/libfixmath/Makefile b/pkg/libfixmath/Makefile
index db72b672e769990d91a30f3e3282b856a8e70ee3..6668796eb9e01646a12c847724e857a99331bd91 100644
--- a/pkg/libfixmath/Makefile
+++ b/pkg/libfixmath/Makefile
@@ -1,67 +1,11 @@
-export PKG_NAME    := libfixmath
-export PKG_VERSION := 91
-export PKG_BRANCH  := trunk
-export PKG_URL     := http://libfixmath.googlecode.com/svn/$(PKG_BRANCH)/
+PKG_NAME     := libfixmath
+PKG_VERSION  := ad9ed940e57d43432b276e95aee6ca9df6f23ccd
+PKG_URL      := git://github.com/PetteriAimonen/libfixmath
+PKG_BUILDDIR ?= $(BINDIRBASE)/pkg/$(BOARD)/$(PKG_NAME)
 
-export CHECKOUT_FOLDER := $(CURDIR)/checkout/$(PKG_BRANCH)-r$(PKG_VERSION)
-export SVN_INFO_FILE   := $(CHECKOUT_FOLDER)/svn_info.xml
+.PHONY: all
 
-.PHONY: all clean distclean
+all: git-download
+	$(AD)$(MAKE) -C $(PKG_BUILDDIR)
 
-all: $(BINDIR)$(PKG_NAME).a
-
-all-unittests: $(BINDIR)$(PKG_NAME)-unittests.a
-
-ifneq (,$(filter libfixmath-unittests,$(USEMODULE)))
-  all: all-unittests
-endif
-
-$(BINDIR)$(PKG_NAME).a: $(BINDIR)$(PKG_NAME)-src/Makefile $(BINDIR)$(PKG_NAME)-headers/fix16.h
-	"$(MAKE)" -C $(<D)
-
-$(BINDIR)$(PKG_NAME)-unittests.a: $(BINDIR)$(PKG_NAME)-unittests-src/Makefile $(BINDIR)$(PKG_NAME)-headers/fix16.h
-	"$(MAKE)" -C $(<D)
-
-$(BINDIR)$(PKG_NAME)-src/Makefile: $(CHECKOUT_FOLDER)/svn_info.xml
-	$(AD)rm -rf $(@D)
-	$(AD)mkdir -p $(@D)
-	$(AD)cp $(CURDIR)/Makefile.template $@
-	$(AD)cp $(CHECKOUT_FOLDER)/libfixmath/*.[ch] $(@D)
-	$(AD)rm -f $(BINDIR)$(PKG_NAME)-src/fix16.h
-
-	$(AD)cd $(@D) && sed -i -e 's/1 <</(uint32_t) 1 <</g' uint32.c
-	$(AD)cd $(@D) && sed -i -e 's/is\([a-z]*\)(\*buf)/is\1((unsigned char) *buf)/g' fix16_str.c
-
-$(BINDIR)$(PKG_NAME)-unittests-src/Makefile: $(CHECKOUT_FOLDER)/svn_info.xml
-	$(AD)rm -rf $(@D)
-	$(AD)mkdir -p $(@D)
-	$(AD)cp $(CURDIR)/Makefile.template-unittests $@
-	$(AD)cp $(CHECKOUT_FOLDER)/unittests/*.[ch] $(@D)
-
-	$(AD)cd $(@D) && for C_FILE in *.[ch]; do \
-		sed -e "s/int main()/int $$(basename $${C_FILE} .c)(void)/" \
-		    -e '/fflush/d' \
-		    -e 's/fprintf(std[^,]*,/printf(/' \
-		    -i $${C_FILE}; \
-	done
-	$(AD)cd $(@D) && patch -p1 --ignore-whitespace < $(CURDIR)/libfixmath-unittests-printf-format.patch
-
-$(BINDIR)$(PKG_NAME)-headers/fix16.h: $(CHECKOUT_FOLDER)/svn_info.xml
-	$(AD)rm -rf $(@D)
-	$(AD)mkdir -p $(@D)
-	$(AD)cp $(CHECKOUT_FOLDER)/libfixmath/fix16.h $(@D)
-	$(AD)echo $(patsubst %,'extern int %(void);',$(shell for f in $(CHECKOUT_FOLDER)/unittests/*.c; do basename $${f} .c; done )) \
-	      $(patsubst %,'%();',$(shell for f in $(CHECKOUT_FOLDER)/unittests/*.c; do basename $${f} .c; done)) | sed -e 's/;\s*/;\n/g' > $(@D)/fix16_unittests.inc
-
-$(SVN_INFO_FILE):
-	$(AD)mkdir -p $(@D)
-	$(AD)$(CURDIR)/checkout.sh
-
-clean::
-	$(AD)rm -rf $(BINDIR)$(PKG_NAME)-src/ $(BINDIR)$(PKG_NAME)-headers/
-
-distclean:: clean
-	$(AD)rm -rf $(CHECKOUT_FOLDER)
-
-Makefile.include:
-	@true
+include $(RIOTBASE)/pkg/pkg.mk
diff --git a/pkg/libfixmath/Makefile.include b/pkg/libfixmath/Makefile.include
index 147ba409f3227491fee256445e7c1690d712ea17..0ce160429e914628f11306434d0e005ff32f52ea 100644
--- a/pkg/libfixmath/Makefile.include
+++ b/pkg/libfixmath/Makefile.include
@@ -1,4 +1,10 @@
+PKG_BUILDDIR ?= $(BINDIRBASE)/pkg/$(BOARD)/libfixmath
+
 # The static cache is huge, disable it.
 CFLAGS += -DFIXMATH_NO_CACHE
 
-INCLUDES += -I$(BINDIR)libfixmath-headers/
+INCLUDES += -I$(PKG_BUILDDIR)/libfixmath
+
+ifneq (,$(filter libfixmath-unittests,$(USEMODULE)))
+  INCLUDES += -I$(PKG_BUILDDIR)/unittests
+endif
diff --git a/pkg/libfixmath/Makefile.template b/pkg/libfixmath/Makefile.template
deleted file mode 100644
index c875b98543056e36798107773db98d168438952a..0000000000000000000000000000000000000000
--- a/pkg/libfixmath/Makefile.template
+++ /dev/null
@@ -1,3 +0,0 @@
-MODULE = libfixmath
-
-include $(RIOTBASE)/Makefile.base
diff --git a/pkg/libfixmath/Makefile.template-unittests b/pkg/libfixmath/Makefile.template-unittests
deleted file mode 100644
index 245ffb94160cf667a7a2c29247317e49e21fda49..0000000000000000000000000000000000000000
--- a/pkg/libfixmath/Makefile.template-unittests
+++ /dev/null
@@ -1,3 +0,0 @@
-MODULE = libfixmath-unittests
-
-include $(RIOTBASE)/Makefile.base
diff --git a/pkg/libfixmath/checkout.sh b/pkg/libfixmath/checkout.sh
deleted file mode 100755
index 4578af79a4ded5976d71a49fefde1af774e3b5cf..0000000000000000000000000000000000000000
--- a/pkg/libfixmath/checkout.sh
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/usr/bin/env bash
-
-if [ -z "${CHECKOUT_FOLDER}" ]; then
-    echo 'export CHECKOUT_FOLDER before running this script' >&2
-    exit 2
-fi
-
-: ${CHECKOUT_LOCKFILE:=${CHECKOUT_FOLDER}/.riot-svn-checkout-lockfile}
-# Default timeout, in seconds
-: ${LOCK_TIMEOUT:=120}
-
-# We need to protect SVN checkout with a lock to avoid parallel make runs from
-# disrupting each other
-if type flock >/dev/null 2>&1; then
-    # Try flock(1) command first, usually found on Linux
-    (
-        flock -w "${LOCK_TIMEOUT}" 200 || (
-            echo "Timed out waiting to acquire lock ${CHECKOUT_LOCKFILE}" >&2
-            exit 1
-        )
-        $(dirname "$0")/perform-svn-checkout.sh
-        exit $?
-    ) 200>"${CHECKOUT_LOCKFILE}"
-elif type lockf >/dev/null 2>&1; then
-    # lockf is usually installed on FreeBSD and OSX
-    lockf -t ${LOCK_TIMEOUT} ${CHECKOUT_LOCKFILE} $(dirname "$0")/perform-svn-checkout.sh
-    exit $?
-else
-    # flock(1) and lockf(1) shell commands are missing from the system
-    echo 'Missing both flock(1) and lockf(1),'
-    echo 'flock is part of util-linux on most Linux systems, lockf is usually installed on FreeBSD.'
-    echo 'see https://github.com/discoteq/flock for a portable alternative.'
-    echo 'Proceeding with svn checkout without locking...'
-    $(dirname "$0")/perform-svn-checkout.sh
-    exit $?
-fi
diff --git a/pkg/libfixmath/libfixmath-unittests-printf-format.patch b/pkg/libfixmath/libfixmath-unittests-printf-format.patch
deleted file mode 100644
index 88ee69c00e2b087de34da2e2dac35e14f4c28c16..0000000000000000000000000000000000000000
Binary files a/pkg/libfixmath/libfixmath-unittests-printf-format.patch and /dev/null differ
diff --git a/pkg/libfixmath/patches/0001-Move-to-RIOT-Makefiles.patch b/pkg/libfixmath/patches/0001-Move-to-RIOT-Makefiles.patch
new file mode 100644
index 0000000000000000000000000000000000000000..7075acd4a55f2a60b42faceb5227dad6a601a190
Binary files /dev/null and b/pkg/libfixmath/patches/0001-Move-to-RIOT-Makefiles.patch differ
diff --git a/pkg/libfixmath/patches/0002-Fix-warnings.patch b/pkg/libfixmath/patches/0002-Fix-warnings.patch
new file mode 100644
index 0000000000000000000000000000000000000000..b2f028273fa5b22c4b6fdf6015c5ebd1aa06c3a0
Binary files /dev/null and b/pkg/libfixmath/patches/0002-Fix-warnings.patch differ
diff --git a/pkg/libfixmath/patches/0003-Adapt-unittests-for-RIOT.patch b/pkg/libfixmath/patches/0003-Adapt-unittests-for-RIOT.patch
new file mode 100644
index 0000000000000000000000000000000000000000..329a8466aa1a4b12bcdfe1f02da5672ae67757fd
Binary files /dev/null and b/pkg/libfixmath/patches/0003-Adapt-unittests-for-RIOT.patch differ
diff --git a/pkg/libfixmath/perform-svn-checkout.sh b/pkg/libfixmath/perform-svn-checkout.sh
deleted file mode 100755
index 426a42733ab589d9e3730a43e324eaa73fac31fc..0000000000000000000000000000000000000000
--- a/pkg/libfixmath/perform-svn-checkout.sh
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/usr/bin/env bash
-if [ -z "${PKG_URL}" ]; then
-    echo 'export PKG_URL before running this script' >&2
-    exit 2
-fi
-if [ -z "${CHECKOUT_FOLDER}" ]; then
-    echo 'export CHECKOUT_FOLDER before running this script' >&2
-    exit 2
-fi
-
-: ${SVN_INFO_FILE:=${CHECKOUT_FOLDER}/svn_info.xml}
-
-if [ -s "${SVN_INFO_FILE}" ]; then
-    # svn checkout was completed by another thread while we waited for the lock
-    if [ "${QUIET}" -ne 1 ]; then
-        echo "File already exists: ${SVN_INFO_FILE}, skipping svn checkout"
-    fi
-    exit 0
-fi
-if [ -n "${PKG_VERSION}" ]; then
-    svn checkout -q -r ${PKG_VERSION} ${PKG_URL} ${CHECKOUT_FOLDER}
-else
-    svn checkout -q ${PKG_URL} ${CHECKOUT_FOLDER}
-fi
-svn info --xml ${CHECKOUT_FOLDER} > ${SVN_INFO_FILE}