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 ()