diff --git a/CMakeLists.txt b/CMakeLists.txt index 5b3536021..cf1c58334 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,16 +17,28 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-stack-protector") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-stack-protector") set(CMAKE_C_FLAGS_FASTBUILD "${CMAKE_C_FLAGS_RELEASE}") set(CMAKE_C_FLAGS_GCSTATS "${CMAKE_C_FLAGS_DEBUG}") +if (USE_LTO) set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -flto") -set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -flto -fno-omit-frame-pointer") +endif() +set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -fno-omit-frame-pointer") +if (USE_LTO) +set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -flto") +endif() set(CMAKE_CXX_FLAGS_FASTBUILD "${CMAKE_CXX_FLAGS_RELEASE}") set(CMAKE_CXX_FLAGS_GCSTATS "${CMAKE_CXX_FLAGS_DEBUG}") +if (USE_LTO) set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -flto") -set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -flto -fno-omit-frame-pointer") +endif() +set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -fno-omit-frame-pointer") +if (USE_LTO) +set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -flto") +endif() set(CMAKE_EXE_LINKER_FLAGS_FASTBUILD "${CMAKE_EXE_LINKER_FLAGS_RELEASE}") set(CMAKE_EXE_LINKER_FLAGS_GCSTATS "${CMAKE_EXE_LINKER_FLAGS_DEBUG}") +if (USE_LTO) set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -flto") set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -flto") +endif() if(APPLE) set(BACKEND_TARGET_TRIPLE "x86_64-apple-darwin") @@ -39,7 +51,7 @@ pkg_check_modules(FFI REQUIRED libffi) include_directories(AFTER ${FFI_INCLUDE_DIRS}) link_directories(AFTER ${FFI_LIBRARY_DIRS}) -if (CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo") +if (USE_LTO AND (CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")) set(LLVM_KOMPILE_LTO "lto") else() set(LLVM_KOMPILE_LTO "nolto") diff --git a/nix/llvm-backend.nix b/nix/llvm-backend.nix index deb694867..43a0c3c0a 100644 --- a/nix/llvm-backend.nix +++ b/nix/llvm-backend.nix @@ -36,11 +36,13 @@ stdenv.mkDerivation { buildInputs = [ boost gmp libffi libyaml jemalloc mpfr ]; enableParallelBuilding = false; - cmakeFlags = [ - ''-DCMAKE_C_COMPILER=${lib.getBin stdenv.cc}/bin/cc'' - ''-DCMAKE_CXX_COMPILER=${lib.getBin stdenv.cc}/bin/c++'' - ''-DCMAKE_VERBOSE_MAKEFILE=ON'' - ]; + cmakeFlags = + [ + ''-DCMAKE_C_COMPILER=${lib.getBin stdenv.cc}/bin/cc'' + ''-DCMAKE_CXX_COMPILER=${lib.getBin stdenv.cc}/bin/c++'' + ''-DCMAKE_VERBOSE_MAKEFILE=ON'' + ''-DUSE_LTO=${if stdenv.isDarwin then "FALSE" else "TRUE"}'' + ]; NIX_CFLAGS_COMPILE = [ "-Wno-error" ]; doCheck = true;