diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2b5f11345f863dcc84994261da7bce168da3004f..d2adb2555bf28cd43d368bcb35f4d860849df2a5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -60,6 +60,10 @@ if(BUILD_STATIC_WITH_BUNDLED_LIBS)
     set(BUILD_STATIC ON)
 endif()
 
+if(NOT BUNDLED_LIBS_INSTALL_DIR)
+    set(BUNDLED_LIBS_INSTALL_DIR ${PROJECT_BINARY_DIR}/build)
+endif()
+
 include(cmake/utils.cmake)
 include(cmake/pod2man.cmake)
 # the order is significant: we need to know os and compiler to configure libs
diff --git a/cmake/BuildICONV.cmake b/cmake/BuildICONV.cmake
index ebd71bc1b159e8cb02f6e9577ed5ab6dc6838145..5a417aabe68070df0918bd14921c9a12bc576f01 100644
--- a/cmake/BuildICONV.cmake
+++ b/cmake/BuildICONV.cmake
@@ -1,6 +1,6 @@
 set(ICONV_VERSION 1.17)
 set(ICONV_HASH d718cd5a59438be666d1575855be72c3)
-set(ICONV_INSTALL_DIR ${PROJECT_BINARY_DIR}/build/iconv)
+set(ICONV_INSTALL_DIR ${BUNDLED_LIBS_INSTALL_DIR}/iconv-prefix)
 set(ICONV_INCLUDE_DIR ${ICONV_INSTALL_DIR}/include)
 set(ICONV_LIBRARY ${ICONV_INSTALL_DIR}/lib/libiconv.a)
 set(ICONV_CFLAGS "${DEPENDENCY_CFLAGS} -O2")
@@ -14,6 +14,9 @@ endif()
 
 ExternalProject_Add(bundled-iconv-project
     PREFIX ${ICONV_INSTALL_DIR}
+    SOURCE_DIR ${ICONV_INSTALL_DIR}/src/iconv
+    BINARY_DIR ${ICONV_INSTALL_DIR}/src/iconv-build
+    STAMP_DIR ${ICONV_INSTALL_DIR}/src/iconv-stamp
     URL URL ${BACKUP_STORAGE}/libiconv/libiconv-${ICONV_VERSION}.tar.gz
     URL_MD5 ${ICONV_HASH}
     CONFIGURE_COMMAND <SOURCE_DIR>/configure
diff --git a/cmake/BuildICU.cmake b/cmake/BuildICU.cmake
index 4810a414537526609f2a540dc75bb38ae8d84d1c..dcfe1bc32c1ad0e11122cb3af20bf3b9831c797f 100644
--- a/cmake/BuildICU.cmake
+++ b/cmake/BuildICU.cmake
@@ -1,7 +1,7 @@
 set(ICU_VERSION release-71-1/icu4c-71_1)
 set(ICU_HASH e06ffc96f59762bd3c929b217445aaec)
 set(ICU_PATCHES_DIR ${PROJECT_SOURCE_DIR}/patches)
-set(ICU_INSTALL_DIR ${PROJECT_BINARY_DIR}/build/icu)
+set(ICU_INSTALL_DIR ${BUNDLED_LIBS_INSTALL_DIR}/icu-prefix)
 set(ICU_INCLUDE_DIR ${ICU_INSTALL_DIR}/include)
 set(ICU_I18N_LIBRARY ${ICU_INSTALL_DIR}/lib/libicui18n.a)
 set(ICU_UC_LIBRARY ${ICU_INSTALL_DIR}/lib/libicuuc.a)
@@ -19,6 +19,9 @@ endif()
 
 ExternalProject_Add(bundled-icu-project
     PREFIX ${ICU_INSTALL_DIR}
+    SOURCE_DIR ${ICU_INSTALL_DIR}/src/icu
+    BINARY_DIR ${ICU_INSTALL_DIR}/src/icu-build
+    STAMP_DIR ${ICU_INSTALL_DIR}/src/icu-stamp
     URL https://github.com/unicode-org/icu/releases/download/${ICU_VERSION}-src.tgz
     URL_MD5 ${ICU_HASH}
     CONFIGURE_COMMAND <SOURCE_DIR>/source/configure
diff --git a/cmake/BuildOpenSSL.cmake b/cmake/BuildOpenSSL.cmake
index 4c440e5692c2376bf22290da855dc79d0e367e25..015e14220bf9fda4eccd59ecea42a3165fb69d6b 100644
--- a/cmake/BuildOpenSSL.cmake
+++ b/cmake/BuildOpenSSL.cmake
@@ -1,7 +1,7 @@
 set(OPENSSL_VERSION 1.1.1q)
 set(OPENSSL_HASH c685d239b6a6e1bd78be45624c092f51)
 set(OPENSSL_PATCHES_DIR ${PROJECT_SOURCE_DIR}/patches)
-set(OPENSSL_INSTALL_DIR ${PROJECT_BINARY_DIR}/build/openssl)
+set(OPENSSL_INSTALL_DIR ${BUNDLED_LIBS_INSTALL_DIR}/openssl-prefix)
 set(OPENSSL_INCLUDE_DIR ${OPENSSL_INSTALL_DIR}/include)
 set(OPENSSL_CRYPTO_LIBRARY ${OPENSSL_INSTALL_DIR}/lib/libcrypto.a)
 set(OPENSSL_SSL_LIBRARY ${OPENSSL_INSTALL_DIR}/lib/libssl.a)
@@ -16,6 +16,9 @@ endif()
 
 ExternalProject_Add(bundled-openssl-project
     PREFIX ${OPENSSL_INSTALL_DIR}
+    SOURCE_DIR ${OPENSSL_INSTALL_DIR}/src/openssl
+    BINARY_DIR ${OPENSSL_INSTALL_DIR}/src/openssl-build
+    STAMP_DIR ${OPENSSL_INSTALL_DIR}/src/openssl-stamp
     URL ${BACKUP_STORAGE}/openssl/openssl-${OPENSSL_VERSION}.tar.gz
     URL_MD5 ${OPENSSL_HASH}
     CONFIGURE_COMMAND <SOURCE_DIR>/config
diff --git a/cmake/BuildReadline.cmake b/cmake/BuildReadline.cmake
index 1516efc491e66fdd03051e6149d27d086612f078..ef3e501c1fbad0cf13126771089035efc579c8e2 100644
--- a/cmake/BuildReadline.cmake
+++ b/cmake/BuildReadline.cmake
@@ -1,6 +1,6 @@
 set(NCURSES_VERSION 6.3-20220716)
 set(NCURSES_HASH 2b7a0e31ebbd8144680f985d61f5bbd5)
-set(NCURSES_INSTALL_DIR ${PROJECT_BINARY_DIR}/build/ncurses)
+set(NCURSES_INSTALL_DIR ${BUNDLED_LIBS_INSTALL_DIR}/ncurses-prefix)
 set(NCURSES_LIBRARY ${NCURSES_INSTALL_DIR}/lib/libncurses.a)
 set(NCURSES_TINFO_LIBRARY ${NCURSES_INSTALL_DIR}/lib/libtinfo.a)
 set(NCURSES_CFLAGS "${DEPENDENCY_CFLAGS} -O2")
@@ -11,7 +11,7 @@ set(NCURSES_LDFLAGS "")
 set(READLINE_VERSION 8.0)
 set(READLINE_HASH 7e6c1f16aee3244a69aba6e438295ca3)
 set(READLINE_PATCHES_DIR ${PROJECT_SOURCE_DIR}/patches)
-set(READLINE_INSTALL_DIR ${PROJECT_BINARY_DIR}/build/readline)
+set(READLINE_INSTALL_DIR ${BUNDLED_LIBS_INSTALL_DIR}/readline-prefix)
 set(READLINE_INCLUDE_DIR ${READLINE_INSTALL_DIR}/include)
 set(READLINE_LIBRARY ${READLINE_INSTALL_DIR}/lib/libreadline.a)
 set(READLINE_CFLAGS "${DEPENDENCY_CFLAGS} -O2")
@@ -29,6 +29,9 @@ endif()
 
 ExternalProject_Add(bundled-ncurses-project
     PREFIX ${NCURSES_INSTALL_DIR}
+    SOURCE_DIR ${NCURSES_INSTALL_DIR}/src/ncurses
+    BINARY_DIR ${NCURSES_INSTALL_DIR}/src/ncurses-build
+    STAMP_DIR ${NCURSES_INSTALL_DIR}/src/ncurses-stamp
     URL ${BACKUP_STORAGE}/ncurses/ncurses-${NCURSES_VERSION}.tgz
     URL_MD5 ${NCURSES_HASH}
     CONFIGURE_COMMAND <SOURCE_DIR>/configure
@@ -73,6 +76,9 @@ add_dependencies(bundled-ncurses-tinfo bundled-ncurses-project)
 
 ExternalProject_Add(bundled-readline-project
     PREFIX ${READLINE_INSTALL_DIR}
+    SOURCE_DIR ${READLINE_INSTALL_DIR}/src/readline
+    BINARY_DIR ${READLINE_INSTALL_DIR}/src/readline-build
+    STAMP_DIR ${READLINE_INSTALL_DIR}/src/readline-stamp
     URL ${BACKUP_STORAGE}/readline/readline-${READLINE_VERSION}.tar.gz
     URL_MD5 ${READLINE_HASH}
     CONFIGURE_COMMAND <SOURCE_DIR>/configure
diff --git a/cmake/BuildZLIB.cmake b/cmake/BuildZLIB.cmake
index f813102ac0239bf283373a322cb36072433c5eee..b4aeec84ec6f5faca50e5511eaccf0ace0e8cdf8 100644
--- a/cmake/BuildZLIB.cmake
+++ b/cmake/BuildZLIB.cmake
@@ -1,6 +1,6 @@
 set(ZLIB_VERSION 1.2.12)
 set(ZLIB_HASH 5fc414a9726be31427b440b434d05f78)
-set(ZLIB_INSTALL_DIR ${PROJECT_BINARY_DIR}/build/zlib)
+set(ZLIB_INSTALL_DIR ${BUNDLED_LIBS_INSTALL_DIR}/zlib-prefix)
 set(ZLIB_INCLUDE_DIR ${ZLIB_INSTALL_DIR}/include)
 set(ZLIB_LIBRARY ${ZLIB_INSTALL_DIR}/lib/libz.a)
 set(ZLIB_CFLAGS "${DEPENDENCY_CFLAGS} -O2")
@@ -14,6 +14,9 @@ endif()
 
 ExternalProject_Add(bundled-zlib-project
     PREFIX ${ZLIB_INSTALL_DIR}
+    SOURCE_DIR ${ZLIB_INSTALL_DIR}/src/zlib
+    BINARY_DIR ${ZLIB_INSTALL_DIR}/src/zlib-build
+    STAMP_DIR ${ZLIB_INSTALL_DIR}/src/zlib-stamp
     URL ${BACKUP_STORAGE}/zlib/zlib-${ZLIB_VERSION}.tar.gz
     URL_MD5 ${ZLIB_HASH}
     CONFIGURE_COMMAND env
diff --git a/cmake/BuildZZIP.cmake b/cmake/BuildZZIP.cmake
index 884787352541a7722cbc87d1952a6cee312c4477..b819351e29c52b20c8e40e22ce732e3dd1a54349 100644
--- a/cmake/BuildZZIP.cmake
+++ b/cmake/BuildZZIP.cmake
@@ -1,6 +1,6 @@
 set(ZZIP_VERSION v0.13.71)
 set(ZZIP_HASH 1aa094186cf2222e4cda1b91b8fb8f60)
-set(ZZIP_INSTALL_DIR ${PROJECT_BINARY_DIR}/build/zzip)
+set(ZZIP_INSTALL_DIR ${BUNDLED_LIBS_INSTALL_DIR}/zzip-prefix)
 set(ZZIP_INCLUDE_DIR ${ZZIP_INSTALL_DIR}/include)
 set(ZZIP_LIBRARY ${ZZIP_INSTALL_DIR}/lib/libzzip-0.a)
 set(ZZIP_CFLAGS "${DEPENDENCY_CFLAGS} -O2")
@@ -33,6 +33,9 @@ endif()
 
 ExternalProject_Add(bundled-zzip-project
     PREFIX ${ZZIP_INSTALL_DIR}
+    SOURCE_DIR ${ZZIP_INSTALL_DIR}/src/zzip
+    BINARY_DIR ${ZZIP_INSTALL_DIR}/src/zzip-build
+    STAMP_DIR ${ZZIP_INSTALL_DIR}/src/zzip-stamp
     URL https://github.com/gdraheim/zziplib/archive/${ZZIP_VERSION}.tar.gz
     URL_MD5 ${ZZIP_HASH}
     CMAKE_ARGS ${ZZIP_CMAKE_FLAGS}
diff --git a/static-build/cmake/AddTarantoolProject.cmake b/static-build/cmake/AddTarantoolProject.cmake
index afd7f093b678dc372b8836a1c7e962824fe54303..09b9717cb2f7e8627999cf7828e0e9dfada7f865 100644
--- a/static-build/cmake/AddTarantoolProject.cmake
+++ b/static-build/cmake/AddTarantoolProject.cmake
@@ -10,6 +10,7 @@ ExternalProject_Add(tarantool
         -DCMAKE_INSTALL_LOCALSTATEDIR=<INSTALL_DIR>/var
         -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
         -DBUILD_STATIC_WITH_BUNDLED_LIBS=TRUE
+        -DBUNDLED_LIBS_INSTALL_DIR=${PROJECT_BINARY_DIR}
         -DENABLE_DIST=TRUE
         -DENABLE_HARDENING=${ENABLE_HARDENING}
         -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}