From: Olga Arkhangelskaia <arkholga@tarantool.org>
To: tarantool-patches@dev.tarantool.org
Subject: [Tarantool-patches] [PATCH] cmake: add LTO support for building luajit
Date: Thu, 12 Mar 2020 13:05:49 +0300 [thread overview]
Message-ID: <20200312100549.31608-1-arkholga@tarantool.org> (raw)
Tarantool has LTO support, however while building luajit this opt. was
omitted. Patch adds necessary flag to turn it on.
Minimum compiler/linker versions: clang 3.4, gcc 5.0+, ld 2.27+.
Closes #3743
---
Branch: OKriw/gh-3743-LuaJIT-does-not-use-LTO-with-DENABLE_LTO=ON-full-ci
cmake/lto.cmake | 3 ++-
cmake/luajit.cmake | 26 ++++++++++++++++++++++++++
2 files changed, 28 insertions(+), 1 deletion(-)
diff --git a/cmake/lto.cmake b/cmake/lto.cmake
index 95ade75f4..9f29f3324 100644
--- a/cmake/lto.cmake
+++ b/cmake/lto.cmake
@@ -78,7 +78,8 @@ if (NOT TARGET_OS_DARWIN)
if (linker_version VERSION_LESS "2.31")
message(FATAL_ERROR "ld.bfd >= 2.31 is needed for LTO")
endif()
- elseif(matched_gold)
+
+ elseif(matched_gold)
set(linker_version ${CMAKE_MATCH_1})
message(STATUS "Found ld.gold version: ${linker_version}")
diff --git a/cmake/luajit.cmake b/cmake/luajit.cmake
index 072db8269..da1b4926d 100644
--- a/cmake/luajit.cmake
+++ b/cmake/luajit.cmake
@@ -225,6 +225,32 @@ macro(luajit_build)
set(luajit_xcflags ${luajit_xcflags} -D${def})
endforeach()
+ # Add LTO option to luajit
+ if (CMAKE_INTERPROCEDURAL_OPTIMIZATION)
+ message("Setting LTO flags for building luajit")
+ # Clang opt to support LTO
+ if (CMAKE_COMPILER_IS_CLANG AND
+ NOT ${CMAKE_CXX_COMPILER_VERSION} VERSION_LESS 3.4)
+ if (${CMAKE_CXX_COMPILER_VERSION} VERSION_LESS 3.9)
+ set(luajit_cflags ${luajit_cflags} -flto=full)
+ else()
+ set(luajit_cflags ${luajit_cflags} -flto=full)
+ endif()
+ if (NOT TARGET_OS_DARWIN)
+ # Depending of compiler we need to set appropriate llvm/gcc-ar lib
+ set (CMAKE_AR llvm-ar)
+ endif()
+ # GNU opts to support lto
+ else()
+ #Due to some problems (bugs, slow work, etc) we support LTO only for 5.0+
+ #The same is for binutils prior 2.27
+ if (NOT ${CMAKE_CXX_COMPILER_VERSION} VERSION_LESS 5.0
+ AND NOT ${linker_version} VERSION_LESS 2.27)
+ set(luajit_cflags ${luajit_cflags} -flto -fuse-linker-plugin -fno-fat-lto-objects)
+ endif()
+ set (CMAKE_AR gcc-ar)
+ endif()
+ endif()
# Pass the same toolchain that is used for building of
# tarantool itself, because tools from different toolchains
# can be incompatible. A compiler and a linker are already set
--
2.20.1 (Apple Git-117)
next reply other threads:[~2020-03-12 10:05 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-12 10:05 Olga Arkhangelskaia [this message]
2020-03-12 10:10 ` Cyrill Gorcunov
2020-04-14 9:18 ` Igor Munkin
2020-04-14 9:59 ` Olga Arkhangelskaia
2020-04-14 12:32 ` Olga Arkhangelskaia
2020-04-14 17:00 ` Igor Munkin
2020-04-15 13:22 ` Olga Arkhangelskaia
2020-04-17 11:47 ` Igor Munkin
2020-04-17 14:41 ` Olga Arkhangelskaia
2020-04-27 23:04 ` Igor Munkin
2020-05-06 10:47 ` Olga Arkhangelskaia
2020-04-14 14:33 ` Olga Arkhangelskaia
2020-05-25 12:58 ` Sergey Bronnikov
2020-05-25 15:00 ` Olga Arkhangelskaia
2020-05-25 15:12 ` Olga Arkhangelskaia
2020-05-25 15:43 ` Sergey Bronnikov
2020-05-26 10:11 ` Igor Munkin
2020-05-27 10:01 ` Olga Arkhangelskaia
2020-06-16 1:02 ` Alexander Turenko
2020-06-16 11:36 ` Olga Arkhangelskaia
2020-06-16 12:01 ` Olga Arkhangelskaia
2020-06-16 17:34 ` Alexander Turenko
2020-06-25 9:19 ` Timur Safin
2020-06-16 18:31 ` Alexander Turenko
2020-06-29 20:16 ` Olga Arkhangelskaia
2020-06-16 12:53 ` Igor Munkin
2020-06-25 9:45 ` Timur Safin
2020-06-25 9:47 ` Timur Safin
2020-07-08 12:23 ` Alexander Turenko
2020-07-08 12:34 ` Kirill Yukhin
2020-07-08 12:42 ` Kirill Yukhin
2020-07-08 12:38 ` Alexander Turenko
2020-07-09 5:13 ` Olga Arkhangelskaia
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200312100549.31608-1-arkholga@tarantool.org \
--to=arkholga@tarantool.org \
--cc=tarantool-patches@dev.tarantool.org \
--subject='Re: [Tarantool-patches] [PATCH] cmake: add LTO support for building luajit' \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox