From 58f0d81925ec055143065f5305cc044240f0ae8b Mon Sep 17 00:00:00 2001 From: Daniel Lemire Date: Thu, 9 May 2019 21:17:13 -0400 Subject: [PATCH] Fixing issue 99 --- CMakeLists.txt | 10 +++++++--- tools/cmake/FindLTO.cmake | 25 ------------------------- 2 files changed, 7 insertions(+), 28 deletions(-) delete mode 100644 tools/cmake/FindLTO.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index e572564de..eba125851 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,10 @@ -cmake_minimum_required(VERSION 3.8...3.13) +cmake_minimum_required(VERSION 3.9) # CMP0069 NEW +include(CheckIPOSupported) +check_ipo_supported(RESULT ltoresult) +if(ltoresult) +set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE) +endif() + set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_MACOSX_RPATH OFF) @@ -20,14 +26,12 @@ option(SIMDJSON_BUILD_STATIC "Build a static library" OFF) # turning it on disab else() option(SIMDJSON_BUILD_STATIC "Build a static library" ON) # turning it on disables the production of a dynamic library endif() -option(SIMDJSON_BUILD_LTO "Build library with Link Time Optimization" OFF) option(SIMDJSON_SANITIZE "Sanitize addresses" OFF) set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/tools/cmake") find_package(CTargets) find_package(Options) -find_package(LTO) install(DIRECTORY include/${SIMDJSON_LIB_NAME} DESTINATION include) set (TEST_DATA_DIR "${CMAKE_CURRENT_SOURCE_DIR}/jsonchecker/") diff --git a/tools/cmake/FindLTO.cmake b/tools/cmake/FindLTO.cmake deleted file mode 100644 index 147470f6a..000000000 --- a/tools/cmake/FindLTO.cmake +++ /dev/null @@ -1,25 +0,0 @@ -# gcc and clang require a special 'ar' and 'ranlib' to create a -# static libX.a that allows for further inlining, but icc does not. - -macro(append var string) - set(${var} "${${var}} ${string}") -endmacro(append) - -if(BUILD_LTO) - if ("${CMAKE_C_COMPILER_ID}" MATCHES "Intel") # icc - append(CMAKE_CXX_FLAGS "-ipo") - elseif("${CMAKE_C_COMPILER_ID}" MATCHES "MSVC") # Microsoft - # TODO - elseif ("${CMAKE_C_COMPILER_ID}" MATCHES "Clang") # Clang or AppleClang - append(CMAKE_CXX_FLAGS "-flto") - append(CMAKE_EXE_LINKER_FLAGS "-fuse-ld=gold -flto") - append(CMAKE_SHARED_LINKER_FLAGS "-fuse-ld=gold -flto") - set(_LLVM_VERSION_STRING "3.8") # FIXME: determine version automatically - set(CMAKE_AR "llvm-ar-${_LLVM_VERSION_STRING}") - set(CMAKE_RANLIB "llvm-ranlib-${_LLVM_VERSION_STRING}") - else() # assume GCC compatible syntax if not matched - append(CMAKE_CXX_FLAGS "-flto") - set(CMAKE_AR "gcc-ar") - set(CMAKE_RANLIB "gcc-ranlib") - endif() -endif(BUILD_LTO)