diff --git a/libsodium-0.4.3.tar.gz b/libsodium-0.4.3.tar.gz
new file mode 100644
index 0000000000000000000000000000000000000000..897dfc79235399aea2e1aff155d1c32d7f845870
Binary files /dev/null and b/libsodium-0.4.3.tar.gz differ
diff --git a/setup.py b/setup.py
index 82f5c4dce48bb1085eb33f4e900fb943468d8adf..d3fb5de411cdbf3ff8e4a65e2b2322545250a8ee 100644
--- a/setup.py
+++ b/setup.py
@@ -2,7 +2,10 @@
 import sys
 import os.path
 import shlex
+import shutil
 import subprocess
+import tarfile
+import tempfile
 
 from distutils.command.build_clib import build_clib as _build_clib
 
@@ -12,6 +15,9 @@ from setuptools.command.test import test as TestCommand
 import nacl
 
 
+SODIUM_VERSION = "0.4.3"
+
+
 def here(*paths):
     return os.path.abspath(os.path.join(os.path.dirname(__file__), *paths))
 
@@ -24,21 +30,40 @@ except ImportError:
 else:
     # building bdist - cffi is here!
     ext_modules = [nacl.nacl.ffi.verifier.get_extension()]
-    ext_modules[0].include_dirs.append(here("libsodium/src/libsodium/include"))
+    ext_modules[0].include_dirs.append(here("build/sodium/src/libsodium/include"))
 
 
 class build_clib(_build_clib):
 
     def run(self):
+        # Unpack the Libsodium Tarball
+        sourcefile = tarfile.open(
+            here("libsodium-%s.tar.gz" % SODIUM_VERSION),
+        )
+
+        tmpdir = tempfile.mkdtemp()
+        try:
+            sourcefile.extractall(tmpdir)
+
+            # Copy our installed directory into the build location
+            shutil.rmtree(here("build/sodium"))
+            shutil.copytree(
+                os.path.join(tmpdir, "libsodium-%s" % SODIUM_VERSION),
+                here("build/sodium")
+            )
+        finally:
+            shutil.rmtree(tmpdir, ignore_errors=True)
+            sourcefile.close()
+
         # Run ./configure
         subprocess.check_call(
             "./configure --disable-debug --disable-dependency-tracking",
-            cwd=here("libsodium"),
+            cwd=here("build/sodium"),
             shell=True,
         )
 
         # Parse the Makefile to determine what macros to define
-        with open(here("libsodium/Makefile")) as makefile:
+        with open(here("build/sodium/Makefile")) as makefile:
             for line in makefile:
                 if line.startswith("DEFS"):
                     defines = [
@@ -89,7 +114,7 @@ class build_clib(_build_clib):
 
                 # Expand out all of the sources to their full path
                 sources = [
-                    here("libsodium/src/libsodium", s) for s in sources
+                    here("build/sodium/src/libsodium", s) for s in sources
                 ]
 
                 build_info["sources"] = sources
@@ -153,7 +178,7 @@ setup(
     libraries=[
         ("sodium", {
             "include_dirs": [
-                here("libsodium/src/libsodium/include/sodium"),
+                here("build/sodium/src/libsodium/include/sodium"),
             ],
             "sources": [
                 "crypto_auth/crypto_auth.c",