diff --git a/CMakeLists.txt b/CMakeLists.txt
index e4f7b31e40acbca17c92e32c65b50859e882e272..205f305a6e895a8b1101a99cf393be5392605c37 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -69,6 +69,9 @@ check_include_file(sys/prctl.h HAVE_PRCTL_H)
 
 check_symbol_exists(O_DSYNC fcntl.h HAVE_O_DSYNC)
 check_symbol_exists(fdatasync unistd.h HAVE_FDATASYNC)
+check_symbol_exists(pthread_yield pthread.h HAVE_PTHREAD_YIELD)
+check_symbol_exists(sched_yield sched.h HAVE_SCHED_YIELD)
+
 check_function_exists(memmem HAVE_MEMMEM)
 check_function_exists(memrchr HAVE_MEMRCHR)
 check_function_exists(sendfile HAVE_SENDFILE)
diff --git a/README.MacOSX b/README.MacOSX
index 6ec9ba9012053e861107e7a41a83d995f9ffa2d4..8e032ded535d2cc6937376d06b7385cc8b5edaa6 100644
--- a/README.MacOSX
+++ b/README.MacOSX
@@ -41,6 +41,16 @@ of "Command Line Tools for Xcode". This package contains /usr/bin/clang and
 
 3. Install necessary python modules: pyYAML, python-daemon
 -------------
+If you use latest Mac OS X version it is recommended using easy_install or pip.
+For instance to install these packages via easy_install just type following commands
+into terminal:
+
+sudo easy_install pyyaml
+sudo easy_install pydaemon
+sudo easy_install daemon
+
+Otherwise see following instruction
+
 NB: it is recommended to install python modules through setup.py,
 using the default python (which should be >= 2.6.x and < 3.x);
 
@@ -60,7 +70,7 @@ NOTE: If you want to get DMG package go to section 6.
 
     cd tarantool
     mkdir build && cd build
-    CC=clang CXX=clang++ cmake .. \
+    cmake .. \
         -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
         -DENABLE_CLIENT=true \
         -DDARWIN_BUILD_TYPE=Ports
diff --git a/cmake/FindReadline.cmake b/cmake/FindReadline.cmake
index 10aad97f7463a5ec89fa55f8f860834e769826e0..24b6e4740e8e9e213006b61d098d96a98d19927f 100644
--- a/cmake/FindReadline.cmake
+++ b/cmake/FindReadline.cmake
@@ -7,22 +7,35 @@
 #
 include(FindTermcap)
 
-FIND_LIBRARY(READLINE_READLINE_LIBRARY NAMES readline)
-FIND_PATH(READLINE_INCLUDE_DIR readline/readline.h)
+if (DEFINED READLINE_ROOT)
+  set(_FIND_OPTS NO_CMAKE NO_CMAKE_SYSTEM_PATH)
+  FIND_LIBRARY(READLINE_READLINE_LIBRARY
+    NAMES readline
+    HINTS ${READLINE_ROOT}/lib
+    ${_FIND_OPTS})
+  FIND_PATH(READLINE_INCLUDE_DIR
+    NAMES readline/readline.h
+    HINTS ${READLINE_ROOT}/include
+    ${_FIND_OPTS})
+else()
+  FIND_LIBRARY(READLINE_READLINE_LIBRARY NAMES readline)
+  FIND_PATH(READLINE_INCLUDE_DIR readline/readline.h)
+endif()
+
 SET(READLINE_FOUND FALSE)
 
 IF (READLINE_READLINE_LIBRARY AND READLINE_INCLUDE_DIR)
-	SET (READLINE_FOUND TRUE)
-	SET (READLINE_INCLUDE_DIR ${READLINE_INCLUDE_DIR})
-	SET (READLINE_LIBRARIES ${READLINE_READLINE_LIBRARY})
-	MESSAGE(STATUS "Found GNU readline: ${READLINE_READLINE_LIBRARY}")
-	IF (TERMCAP_FOUND)
-		SET (READLINE_LIBRARIES ${READLINE_LIBRARIES} ${TERMCAP_LIBRARY})
-	ENDIF (TERMCAP_FOUND)
+  SET (READLINE_FOUND TRUE)
+  SET (READLINE_INCLUDE_DIR ${READLINE_INCLUDE_DIR})
+  SET (READLINE_LIBRARIES ${READLINE_READLINE_LIBRARY})
+  MESSAGE(STATUS "Found GNU readline: ${READLINE_READLINE_LIBRARY}, include dir ${READLINE_INCLUDE_DIR}")
+  IF (TERMCAP_FOUND)
+    SET (READLINE_LIBRARIES ${READLINE_LIBRARIES} ${TERMCAP_LIBRARY})
+  ENDIF (TERMCAP_FOUND)
 ENDIF (READLINE_READLINE_LIBRARY AND READLINE_INCLUDE_DIR)
 
 MARK_AS_ADVANCED(
-	READLINE_FOUND
-	READLINE_INCLUDE_DIR
-	READLINE_LIBRARIES
-	)
+  READLINE_FOUND
+  READLINE_INCLUDE_DIR
+  READLINE_LIBRARIES
+  )
diff --git a/src/lib/small/quota.h b/src/lib/small/quota.h
index 260578e7def3e31d34c46f04a6b8a03f6c6d4bad..70ceb8407f90f6c7710002de7406d3910e1d459b 100644
--- a/src/lib/small/quota.h
+++ b/src/lib/small/quota.h
@@ -32,6 +32,7 @@
 #include <stdlib.h>
 #include <stdint.h>
 #include <assert.h>
+#include <unistd.h>
 
 #if defined(__cplusplus)
 extern "C" {
diff --git a/src/tarantool.cc b/src/tarantool.cc
index 2b8b557fede19c5d765cc6841f268de307c1e21d..35ea9350497a6cc4c752e664cbeb2ac5cc0d6d20 100644
--- a/src/tarantool.cc
+++ b/src/tarantool.cc
@@ -543,10 +543,11 @@ main(int argc, char **argv)
 	__libc_stack_end = (void*) &argv;
 #endif
 	start_time = ev_time();
+#ifndef __APPLE__
 	/* set locale to make iswXXXX function work */
 	if (setlocale(LC_CTYPE, "C.UTF-8") == NULL)
 		fprintf(stderr, "Failed to set locale to C.UTF-8\n");
-
+#endif
 	if (argc > 1 && access(argv[1], R_OK) != 0) {
 		if (argc == 2 && argv[1][0] != '-') {
 			/*
diff --git a/src/trivia/config.h.cmake b/src/trivia/config.h.cmake
index e04b7cb4b66c48c495d5fcf65bd6bf607a186895..7c807728366f4f54f304d713f9334d1f2b216011 100644
--- a/src/trivia/config.h.cmake
+++ b/src/trivia/config.h.cmake
@@ -127,6 +127,8 @@
 #cmakedefine ENABLE_BUNDLED_LIBEIO 1
 #cmakedefine ENABLE_BUNDLED_LIBCORO 1
 
+#cmakedefine HAVE_PTHREAD_YIELD 1
+#cmakedefine HAVE_SCHED_YIELD 1
 
 #cmakedefine HAVE_PRCTL_H 1
 
diff --git a/test/unit/quota.cc b/test/unit/quota.cc
index 0f66a391bf08d43e8a4ddbc59c1dfaf4158be4fa..79b49e4eec015210eb0dc50c688e21077ba3e9b2 100644
--- a/test/unit/quota.cc
+++ b/test/unit/quota.cc
@@ -1,6 +1,8 @@
 #include "small/quota.h"
 
 #include <pthread.h>
+#include <sched.h>
+
 #include "test.h"
 
 struct quota quota;
@@ -32,7 +34,7 @@ void *thread_routine(void *vparam)
 		}
 		ssize_t max = rand() % QUOTA_MAX;
 		max = quota_set(&quota, max);
-		pthread_yield();
+		sched_yield();
 		if (max > 0) {
 			data->last_lim_set = max;
 			data->lim_change_success++;
@@ -42,7 +44,7 @@ void *thread_routine(void *vparam)
 			allocated_size = -1;
 			data->use_change = 0;
 			data->use_change_success++;
-			pthread_yield();
+			sched_yield();
 		} else {
 			allocated_size = rand() % max + 1;
 			allocated_size = quota_use(&quota, allocated_size);
@@ -50,7 +52,7 @@ void *thread_routine(void *vparam)
 				data->use_change = allocated_size;
 				data->use_change_success++;
 			}
-			pthread_yield();
+			sched_yield();
 		}
 	}
 	return (void *)check_fail_count;