diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 1abde73b3c7773b65b78834cbbb3df9d6dbe7f3b..3d8d6413c2c764fdd0843d6d90e8163d9b88fb50 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -100,7 +100,6 @@ set (core_sources
      util.c
      random.c
      trigger.cc
-     http_parser.c
      coll.c
      coll_def.c
      mpstream.c
@@ -219,7 +218,7 @@ endif()
 
 set_source_files_compile_flags(${server_sources})
 add_library(server STATIC ${server_sources})
-target_link_libraries(server core bit uri uuid ${ICU_LIBRARIES})
+target_link_libraries(server core http_parser bit uri uuid ${ICU_LIBRARIES})
 
 # Rule of thumb: if exporting a symbol from a static library, list the
 # library here.
diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt
index e0693448602063fb9930338a70a526bbe40348b6..e06d35bf08ec3148bfa8ef98737f3bd1780d5daa 100644
--- a/src/lib/CMakeLists.txt
+++ b/src/lib/CMakeLists.txt
@@ -6,6 +6,7 @@ add_subdirectory(salad)
 add_subdirectory(csv)
 add_subdirectory(json)
 add_subdirectory(uri)
+add_subdirectory(http_parser)
 if(ENABLE_BUNDLED_MSGPUCK)
     add_subdirectory(msgpuck EXCLUDE_FROM_ALL)
 endif()
diff --git a/src/lib/http_parser/CMakeLists.txt b/src/lib/http_parser/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a48f83cb67af8d1dc49a11c22414fc7e884d4285
--- /dev/null
+++ b/src/lib/http_parser/CMakeLists.txt
@@ -0,0 +1 @@
+add_library(http_parser STATIC http_parser.c)
diff --git a/src/http_parser.c b/src/lib/http_parser/http_parser.c
similarity index 100%
rename from src/http_parser.c
rename to src/lib/http_parser/http_parser.c
diff --git a/src/http_parser.h b/src/lib/http_parser/http_parser.h
similarity index 100%
rename from src/http_parser.h
rename to src/lib/http_parser/http_parser.h
diff --git a/src/lua/httpc.c b/src/lua/httpc.c
index d31e664d661e899295d1000c222d95fd6f270986..976b2d4cf1c69cacc034146b7c38186abaaf57b5 100644
--- a/src/lua/httpc.c
+++ b/src/lua/httpc.c
@@ -34,7 +34,7 @@
  */
 #define DRIVER_LUA_UDATA_NAME	"httpc"
 
-#include <http_parser.h>
+#include "http_parser/http_parser.h"
 #include "src/httpc.h"
 #include "say.h"
 #include "lua/utils.h"