diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8ba914a..e1127f1 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -669,7 +669,7 @@ set_target_properties(connector PROPERTIES
 
 
 install(TARGETS connector
-  CONFIGURATIONS Release RelWithDebInfo
+  CONFIGURATIONS Release RelWithDebInfo Gentoo
   ARCHIVE DESTINATION "${INSTALL_LIB_DIR_STATIC}" COMPONENT XDevAPIDev
   RUNTIME DESTINATION "${INSTALL_LIB_DIR}" COMPONENT XDevAPIDll
   LIBRARY DESTINATION "${INSTALL_LIB_DIR}" COMPONENT XDevAPIDll
@@ -740,6 +740,12 @@ TARGET_LINK_LIBRARIES(try connector)
 SET_INTERFACE_OPTIONS(try devapi)
 #  ADD_GCOV(try)
 
+IF(WITH_SSL STREQUAL "system")
+  find_package(OpenSSL REQUIRED)
+  TARGET_LINK_LIBRARIES(try ${OPENSSL_LIBRARIES})
+ENDIF()
+
+
 if(WITH_JDBC)
 
   add_executable(try_jdbc EXCLUDE_FROM_ALL try_jdbc.cc)
diff --git a/buildinfo.cmake b/buildinfo.cmake
index cc57a2c..129afeb 100644
--- a/buildinfo.cmake
+++ b/buildinfo.cmake
@@ -112,4 +112,4 @@ if(WITH_JDBC)
 endif()
 
 
-install(FILES "${PROJECT_BINARY_DIR}/BUILDINFO.txt" DESTINATION . COMPONENT Readme)
+#install(FILES "${PROJECT_BINARY_DIR}/BUILDINFO.txt" DESTINATION . COMPONENT Readme)
diff --git a/cdk/cmake/install_macros.cmake b/cdk/cmake/install_macros.cmake
index 37c1061..39336cf 100644
--- a/cdk/cmake/install_macros.cmake
+++ b/cdk/cmake/install_macros.cmake
@@ -327,7 +327,7 @@ FUNCTION(INSTALL_DEBUG_TARGET target)
     DESTINATION ${ARG_DESTINATION}
     ${RENAME_PARAM}
     ${PERMISSIONS_${target_type}}
-    CONFIGURATIONS Release RelWithDebInfo
+    CONFIGURATIONS Release RelWithDebInfo Gentoo
     COMPONENT ${ARG_COMPONENT}
     OPTIONAL)
 
@@ -346,7 +346,7 @@ FUNCTION(INSTALL_DEBUG_TARGET target)
     INSTALL(FILES ${debug_pdb_target_location}
       DESTINATION ${ARG_PDB_DESTINATION}
       ${PDB_RENAME_PARAM}
-      CONFIGURATIONS Release RelWithDebInfo
+      CONFIGURATIONS Release RelWithDebInfo Gentoo
       COMPONENT ${ARG_COMPONENT}
       OPTIONAL)
   ENDIF()
diff --git a/cdk/cmake/libutils.cmake b/cdk/cmake/libutils.cmake
index 959fc5d..aec2d91 100644
--- a/cdk/cmake/libutils.cmake
+++ b/cdk/cmake/libutils.cmake
@@ -282,14 +282,7 @@ function(add_library_ex TARGET)
   endforeach()
 
   if(libs)
-
-    if(${type} STREQUAL "STATIC")
-        merge_static_libraries(${TARGET} ${libs})
-        add_dependencies(${TARGET} ${libs})
-    else()
       target_link_libraries(${TARGET} PRIVATE ${libs})
-    endif()
-
   endif()
 
   #
diff --git a/cdk/cmake/protobuf.cmake b/cdk/cmake/protobuf.cmake
index 95ecc71..484687c 100644
--- a/cdk/cmake/protobuf.cmake
+++ b/cdk/cmake/protobuf.cmake
@@ -26,201 +26,8 @@
 # along with this program; if not, write to the Free Software Foundation, Inc.,
 # 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
 
-#
-# Usage:
-#
-#  INCLUDE(protobuf)
-#  [USE_FULL_PROTOBUF()]
-#
-#  MYSQLX_PROTOBUF_GENERATE_CPP(SRCS HDRS <protobuf definitions>)
-#  ADD_LIBRARY(target ... ${SRCS})
-#
-
-if(DEFINED WITH_PROTOBUF)
-
-  #
-  # If WITH_PROTOBUF is defined, it should point at external location where
-  # protobuf libraries were built using our CMakeLists.txt (so that
-  # exports.cmake was produced).
-  #
-
-  if (NOT EXISTS "${WITH_PROTOBUF}/exports.cmake")
-    message(FATAL_ERROR
-      "Valid protobuf build not found at the given location"
-      " (could not find exports.cmake): ${WITH_PROTOBUF}"
-    )
-  endif()
-
-  message("Using protobuf build at: ${WITH_PROTOBUF}")
-
-else(DEFINED WITH_PROTOBUF)
-
-  #
-  # If external WITH_PROTOBUF location is not given, then we arrange for
-  # building of protbuf from bundled sources in ${PROJECT_BINARY_DIR}/protobuf.
-  #
-
-  message("Configuring Protobuf build using cmake generator: ${CMAKE_GENERATOR}")
-  file(REMOVE "${PROJECT_BINARY_DIR}/protobuf/CMakeCache.txt")
-  file(MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/protobuf")
-
-  #
-  # Pick build configuration for the protobuf build. Normally we build using the
-  # same build configuration that is used for building CDK (Release/Debug/etc.).
-  # But we also support building CDK under non-standard build configuration
-  # named 'Static' (this is a dirty trick we use to simplify building our MSIs).
-  # Since protobuf does not know 'Static' build configuration, we build protobuf
-  # under 'Release' configuration in that case.
-  #
-  # We need to handle two cases. For some build systems, like Makefiles,
-  # the build configuration is specified at cmake time using CMAKE_BUILD_TYPE
-  # variable. In that case we also set it during protobuf build configuration.
-  # Another case is a multi-configuration build system like MSVC. In this case
-  # we use generator expression to pick correct  configuration when the build
-  # command is invoked below.
-  #
-
-  if(CMAKE_BUILD_TYPE)
-    if(CMAKE_BUILD_TYPE MATCHES "[Ss][Tt][Aa][Tt][Ii][Cc]")
-      set(set_build_type -DCMAKE_BUILD_TYPE=Release)
-    else()
-      set(set_build_type -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE})
-    endif()
-  endif()
-
-  set(CONFIG_EXPR
-    $<$<CONFIG:Static>:Release>$<$<NOT:$<CONFIG:Static>>:$<CONFIG>>
-  )
-
-  execute_process(
-    COMMAND ${CMAKE_COMMAND}
-            -G "${CMAKE_GENERATOR}"
-            ${set_build_type}
-            -DSTATIC_MSVCRT=${STATIC_MSVCRT}
-            -DCMAKE_POSITION_INDEPENDENT_CODE=${CMAKE_POSITION_INDEPENDENT_CODE}
-            -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
-            -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
-            -DCMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG}
-            -DCMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE}
-            -DCMAKE_CXX_FLAGS_RELWITHDEBINFO=${CMAKE_CXX_FLAGS_RELWITHDEBINFO}
-            -DCMAKE_CXX_FLAGS_MINSIZEREL=${CMAKE_CXX_FLAGS_MINSIZEREL}
-            -DCMAKE_STATIC_LINKER_FLAGS=${CMAKE_STATIC_LINKER_FLAGS}
-            ${PROJECT_SOURCE_DIR}/protobuf
-    WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/protobuf
-    RESULT_VARIABLE protobuf_config
-  )
-
-  if(protobuf_config)
-    message(FATAL_ERROR "Could not configure Protobuf build: ${protobuf_config}")
-  endif()
-
-  set(WITH_PROTOBUF "${PROJECT_BINARY_DIR}/protobuf")
-
-endif(DEFINED WITH_PROTOBUF)
-
-# Import targets exported by protobuf
-
-include(${WITH_PROTOBUF}/exports.cmake)
-
-#
-# Protobuf library targets imported above (pb_protobuf
-# and pb_protobuf-lite) are local to the directory from which
-# they were imported. This is not good if cdk is used as
-# a sub-project of a parent project, because the parent project
-# must have access to these targets.
-#
-# For that reason below we create global protobuf/protobuf-lite targets
-# and copy their locations from the imported targets.
-#
-# Note: we can't use ALIAS library because it does not work with imported
-# targets
-#
-
-add_library(protobuf STATIC IMPORTED GLOBAL)
-add_library(protobuf-lite STATIC IMPORTED GLOBAL)
-
-foreach(lib protobuf protobuf-lite)
-  #message("processing: ${lib}")
-
-   foreach(CONF NOCONFIG DEBUG RELEASE MINSIZEREL RELWITHDEBINFO)
-    #message("- CONF: ${CONF}")
-
-    get_target_property(LOC pb_${lib} IMPORTED_LOCATION_${CONF})
-    if(LOC)
-      #message("- setting imported location to: ${LOC}")
-      set_target_properties(${lib} PROPERTIES
-        IMPORTED_LOCATION_${CONF} "${LOC}"
-      )
-      set_property(TARGET ${lib} APPEND PROPERTY
-        IMPORTED_CONFIGURATIONS ${CONF}
-      )
-    endif()
-
-  endforeach(CONF)
-
-endforeach(lib)
-
-#
-# To support 'Static' build configuration the targets imported from the
-# Protobuf project need to have IMPORTED_LOCATION_STATIC defined. We use
-# 'Release' locations as Protobuf is built using 'Release' configuration in
-# that case.
-#
-
-foreach(tgt protobuf protobuf-lite pb_protoc)
-
-  get_target_property(LOC ${tgt} IMPORTED_LOCATION_RELEASE)
-  set_property(TARGET ${tgt} PROPERTY IMPORTED_LOCATION_STATIC ${LOC})
-
-endforeach(tgt)
-
-
-# protobuf depends on protobuf-lite
-
-set_target_properties(protobuf PROPERTIES
-  INTERFACE_LINK_LIBRARIES "protobuf-lite"
-)
-
-
-message("Protobuf include path: ${PROTOBUF_INCLUDE_DIR}")
-
-set(PROTOBUF_INCLUDE_DIRS ${PROTOBUF_INCLUDE_DIR}
-    CACHE INTERNAL "Protobuf include path" FORCE)
-set(PROTOBUF_PROTOC_EXECUTABLE pb_protoc
-    CACHE INTERNAL "Protobuf compiler" FORCE)
-
-#
-# Custom target build_protobuf ensures that Protobuf project is built.
-#
-# Note: this depends on Protobuf project generating the stamp file
-#
-
-if(NOT DEFINED PROTOBUF_BUILD_STAMP)
-  message(FATAL_ERROR "Protobuf build stamp file not defined")
-endif()
-
-
-if(CMAKE_VERSION VERSION_LESS 3.0)
-  add_custom_command(OUTPUT ${PROTOBUF_BUILD_STAMP}
-    COMMAND ${CMAKE_COMMAND} --build . --config $<CONFIGURATION>
-    WORKING_DIRECTORY ${WITH_PROTOBUF}
-    COMMENT "Building protobuf using configuration: $(Configuration)"
-  )
-else()
-  add_custom_command(OUTPUT ${PROTOBUF_BUILD_STAMP}
-    COMMAND ${CMAKE_COMMAND} --build . --config ${CONFIG_EXPR}
-    WORKING_DIRECTORY ${WITH_PROTOBUF}
-    COMMENT "Building protobuf using configuration: $(Configuration)"
-  )
-endif()
-
-add_custom_target(build_protobuf
-  DEPENDS ${PROTOBUF_BUILD_STAMP}
-)
-
-add_dependencies(protobuf build_protobuf)
-add_dependencies(protobuf-lite build_protobuf)
-add_dependencies(pb_protoc build_protobuf)
+#SET(Protobuf_USE_STATIC_LIBS ON)
+find_package(Protobuf REQUIRED)
 
 #
 #  Choice between full and lite version of the library.
diff --git a/cdk/protocol/mysqlx/crud.cc b/cdk/protocol/mysqlx/crud.cc
index 5cb12dc..6d32e21 100644
--- a/cdk/protocol/mysqlx/crud.cc
+++ b/cdk/protocol/mysqlx/crud.cc
@@ -295,7 +295,7 @@ public:
 class Placeholder_conv_imp
     : public Args_conv
 {
-  map<string, unsigned> m_map;
+  std::map<string, unsigned> m_map;
 
 public:
 
@@ -303,7 +303,7 @@ public:
 
   unsigned conv_placeholder(const string &name)
   {
-    map<string, unsigned>::const_iterator it = m_map.find(name);
+    std::map<string, unsigned>::const_iterator it = m_map.find(name);
     if (it == m_map.end())
       throw_error("Placeholder converter: Placeholder was not defined on args");
       //throw Generic_error((boost::format("Placeholder %s was not defined on args.")
@@ -314,7 +314,7 @@ public:
 
   void add_placeholder(const string &name)
   {
-    map<string, unsigned>::const_iterator it = m_map.find(name);
+    std::map<string, unsigned>::const_iterator it = m_map.find(name);
     if (it != m_map.end())
       throw_error("Placeholder converter: Redefined placeholder");
       //throw Generic_error((boost::format("Redifined placeholder %s.")
diff --git a/jdbc.cmake b/jdbc.cmake
index 60898da..b5d8bf0 100644
--- a/jdbc.cmake
+++ b/jdbc.cmake
@@ -38,7 +38,7 @@ if(MYSQL_CONFIG_EXECUTABLE)
   list(APPEND jdbc_cmake_opts -DMYSQL_CONFIG_EXECUTABLE=${MYSQL_CONFIG_EXECUTABLE})
 endif()
 
-list(APPEND jdbc_cmake_opts -DMYSQLCLIENT_STATIC_LINKING=ON)
+list(APPEND jdbc_cmake_opts -DMYSQLCLIENT_STATIC_LINKING=OFF)
 
 if(CMAKE_BUILD_TYPE)
   if(CMAKE_BUILD_TYPE MATCHES "[Ss][Tt][Aa][Tt][Ii][Cc]")
