diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 2b5ea1b87b1e36552c838822121055265628c41f..576b2bde1050bd9044a2af76bfdc8276521329d7 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -82,11 +82,13 @@ target_link_libraries(stat core)
 add_library(scramble STATIC scramble.c)
 target_link_libraries(scramble core misc)
 
+add_library(cpu_feature STATIC cpu_feature.c)
+
 add_library(crc32 STATIC
     crc32.c
-    cpu_feature.c
     ${PROJECT_SOURCE_DIR}/third_party/crc32.c
 )
+target_link_libraries(crc32 cpu_feature)
 
 set (server_sources
      find_path.c
@@ -94,7 +96,6 @@ set (server_sources
      httpc.c
      pickle.c
      cfg.c
-     cpu_feature.c
      title.c
      proc_title.c
      path_lock.c
@@ -171,7 +172,7 @@ set_source_files_compile_flags(${server_sources})
 add_library(server STATIC ${server_sources})
 add_dependencies(server build_bundled_libs)
 target_link_libraries(server core coll http_parser bit uri uuid swim swim_udp
-                      swim_ev crypto mpstream)
+                      swim_ev crypto mpstream crc32)
 
 # Rule of thumb: if exporting a symbol from a static library, list the
 # library here.
diff --git a/src/box/CMakeLists.txt b/src/box/CMakeLists.txt
index 08ffe7177bd25bc998387a0f4034e77b28c7d324..e32bbca9136a9c5ce82bc8c55ccfab0bebf2d3f7 100644
--- a/src/box/CMakeLists.txt
+++ b/src/box/CMakeLists.txt
@@ -33,12 +33,12 @@ set_property(DIRECTORY PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${lua_sources})
 include_directories(${ZSTD_INCLUDE_DIRS})
 include_directories(${CMAKE_BINARY_DIR}/src/box/sql)
 
-add_library(box_error STATIC error.cc errcode.c vclock.c mp_error.cc)
-target_link_libraries(box_error core stat mpstream)
-
 add_library(vclock STATIC vclock.c)
 target_link_libraries(vclock core)
 
+add_library(box_error STATIC error.cc errcode.c mp_error.cc)
+target_link_libraries(box_error core stat mpstream vclock)
+
 add_library(xrow STATIC xrow.c iproto_constants.c)
 target_link_libraries(xrow server core small vclock misc box_error
                       scramble ${MSGPUCK_LIBRARIES})
@@ -72,7 +72,6 @@ target_link_libraries(xlog core box_error crc32 ${ZSTD_LIBRARIES})
 
 add_library(box STATIC
     iproto.cc
-    error.cc
     xrow_io.cc
     tuple_convert.c
     identifier.c