Add support for ar/nm/ranlib wrappers for LTO 21/290121/5 accepted/tizen_base_tool_dev tizen_base_dev accepted/tizen/base/tool/dev/20230608.110757 submit/tizen_base/20230331.042222 submit/tizen_base_dev/20230607.110014
authorSlava Barinov <v.barinov@samsung.com>
Mon, 20 Mar 2023 09:35:30 +0000 (12:35 +0300)
committerSlava Barinov <v.barinov@samsung.com>
Tue, 21 Mar 2023 08:20:28 +0000 (11:20 +0300)
Switching to Binutils wrappers for ar, nm and ranlib are required for proper
functioning of Link-Time Optimization features. Currently full support of LTO
plugin is not ready in Binutils, so we need to use wrappers to prevent
"undefined reference" errors.

Change-Id: I7a944b6b26da1549aeb010c6d56120d7f172a020
Signed-off-by: Slava Barinov <v.barinov@samsung.com>
packaging/cmake.spec
packaging/macros.cmake

index c8e4681..1578cf8 100644 (file)
@@ -36,6 +36,17 @@ cp %{SOURCE1001} .
 %build
 export CXXFLAGS="$RPM_OPT_FLAGS -fPIC -pie"
 export CFLAGS="$CXXFLAGS"
+
+# Set up default CMake configuration for ranlib, ar and nm, so we can build
+# both CMake and target packages with LTO
+insertconfline() {
+    sed -e "/^' > .*InitialCacheFlags.cmake\"/i ${1}" -i bootstrap
+}
+
+insertconfline "set (CMAKE_RANLIB \"$(which %__ranlib)\" CACHE FILEPATH \"Path to ranlib tool.\" FORCE)"
+insertconfline "set (CMAKE_AR \"$(which %__ar)\" CACHE FILEPATH \"Path to ar tool.\" FORCE)"
+insertconfline "set (CMAKE_NM \"$(which %__nm)\" CACHE FILEPATH \"Path to nm tool.\" FORCE)"
+
 ./configure \
     --prefix=%{_prefix} \
     --datadir=/share/%{name} \
index 42ada23..4809624 100644 (file)
@@ -6,6 +6,9 @@
 %__cmake %{_bindir}/cmake
 
 %cmake \
+  AR="%__ar"; export AR ; \
+  NM="%__nm"; export NM ; \
+  RANLIB="%__ranlib"; export RANLIB ; \
   CFLAGS="${CFLAGS:-%optflags}" ; export CFLAGS ; \
   CXXFLAGS="${CXXFLAGS:-%optflags}" ; export CXXFLAGS ; \
   FFLAGS="${FFLAGS:-%optflags}" ; export FFLAGS ; \