diff --git a/CMakeLists.txt b/CMakeLists.txt
index bcd8573e32898fc191b6689f6d9457746525a2a9..fd31228c49be0a23a89a636eb82c9143655f0cb2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -12,14 +12,24 @@ set (exec_prefix "\${prefix}")
 set (libdir "\${exec_prefix}/lib")
 set (includedir "\${prefix}/include")
 
-option (OPENDHT_PYTHON "Build Python bindings" OFF)
-option (OPENDHT_TOOLS "Build DHT tools" ON)
 option (OPENDHT_DEBUG "Build with debug flags" OFF)
 option (OPENDHT_STATIC "Build static library" ON)
 option (OPENDHT_SHARED "Build shared library" ON)
+option (OPENDHT_LTO "Build with LTO" OFF)
+
+option (OPENDHT_PYTHON "Build Python bindings" OFF)
+option (OPENDHT_TOOLS "Build DHT tools" ON)
 
-set (CMAKE_CXX_FLAGS "-pthread -std=c++14 -Wno-return-type -Wall -Wextra -Wnon-virtual-dtor ${CMAKE_CXX_FLAGS}")
-set (CMAKE_CXX_FLAGS "-DMSGPACK_DISABLE_LEGACY_NIL -DMSGPACK_DISABLE_LEGACY_CONVERT ${CMAKE_CXX_FLAGS}")
+set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread -std=c++11 -Wno-return-type -Wall -Wextra -Wnon-virtual-dtor")
+set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DMSGPACK_DISABLE_LEGACY_NIL -DMSGPACK_DISABLE_LEGACY_CONVERT")
+if (OPENDHT_LTO)
+    set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto -fuse-linker-plugin")
+    if (CMAKE_COMPILER_IS_GNUCC)
+        SET (CMAKE_AR        "gcc-ar")
+        SET (CMAKE_NM        "gcc-nm")
+        SET (CMAKE_RANLIB    "gcc-ranlib")
+    endif ()
+endif ()
 
 find_package (GnuTLS 3.1 REQUIRED)
 find_package (Msgpack 1.2 REQUIRED)
@@ -97,6 +107,9 @@ if (OPENDHT_STATIC)
         ${opendht_HEADERS}
     )
     set_target_properties (opendht-static PROPERTIES OUTPUT_NAME "opendht")
+    if (OPENDHT_LTO)
+        target_link_libraries(opendht-static -flto -fuse-linker-plugin)
+    endif ()
     target_link_libraries(opendht-static gnutls nettle)
     install (TARGETS opendht-static DESTINATION ${CMAKE_INSTALL_LIBDIR})
 endif ()
@@ -108,6 +121,9 @@ if (OPENDHT_SHARED)
     )
     set_target_properties (opendht PROPERTIES IMPORT_SUFFIX "_import.lib")
     #set_target_properties (opendht PROPERTIES SOVERSION 1 VERSION 1.0.0)
+    if (OPENDHT_LTO)
+        target_link_libraries(opendht -flto -fuse-linker-plugin)
+    endif ()
     target_link_libraries(opendht gnutls nettle)
     install (TARGETS opendht DESTINATION ${CMAKE_INSTALL_LIBDIR})
 endif ()