!200 [sync] PR-190: Add clang tool chain switch support
From: @openeuler-sync-bot Reviewed-by: @xujing99 Signed-off-by: @xujing99
This commit is contained in:
commit
02e48be451
113
Add-support-for-selecting-clang-as-a-toolchain.patch
Normal file
113
Add-support-for-selecting-clang-as-a-toolchain.patch
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
From f2a6af2ce79e26bf47604b610056d8c524b647f2 Mon Sep 17 00:00:00 2001
|
||||||
|
From: liyunfei <liyunfei33@huawei.com>
|
||||||
|
Date: Tue, 9 Jan 2024 20:39:10 +0800
|
||||||
|
Subject: [PATCH 1/2] Add support for selecting clang as a toolchain
|
||||||
|
|
||||||
|
---
|
||||||
|
generic-hardened-clang.cfg | 1 +
|
||||||
|
macros | 56 ++++++++++++++++++++++++++++++++++++--
|
||||||
|
2 files changed, 57 insertions(+), 3 deletions(-)
|
||||||
|
create mode 100644 generic-hardened-clang.cfg
|
||||||
|
|
||||||
|
diff --git a/generic-hardened-clang.cfg b/generic-hardened-clang.cfg
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..ac596df
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/generic-hardened-clang.cfg
|
||||||
|
@@ -0,0 +1 @@
|
||||||
|
+-fPIE
|
||||||
|
\ No newline at end of file
|
||||||
|
diff --git a/macros b/macros
|
||||||
|
index 5fdaf0a..0062126 100755
|
||||||
|
--- a/macros
|
||||||
|
+++ b/macros
|
||||||
|
@@ -23,6 +23,46 @@
|
||||||
|
|
||||||
|
%_build_id_links none
|
||||||
|
|
||||||
|
+# GCC toolchain
|
||||||
|
+%__cc_gcc gcc
|
||||||
|
+%__cxx_gcc g++
|
||||||
|
+%__cpp_gcc gcc -E
|
||||||
|
+
|
||||||
|
+# Clang toolchain
|
||||||
|
+%__cc_clang clang
|
||||||
|
+%__cxx_clang clang++
|
||||||
|
+%__cpp_clang clang-cpp
|
||||||
|
+
|
||||||
|
+# Default to the GCC toolchain
|
||||||
|
+#
|
||||||
|
+# It is enough to override `toolchain` macro and all relevant macro for C/C++
|
||||||
|
+# compilers will be switched. Either in the spec or in the command-line.
|
||||||
|
+#
|
||||||
|
+# %global toolchain clang
|
||||||
|
+#
|
||||||
|
+# or:
|
||||||
|
+#
|
||||||
|
+# rpmbuild -D "toolchain clang" …
|
||||||
|
+#
|
||||||
|
+# Inside a spec file it is also possible to determine which toolchain is in use
|
||||||
|
+# by testing the same macro. For example:
|
||||||
|
+#
|
||||||
|
+# %if "%{toolchain}" == "gcc"
|
||||||
|
+# BuildRequires: gcc
|
||||||
|
+# %endif
|
||||||
|
+#
|
||||||
|
+# or:
|
||||||
|
+#
|
||||||
|
+# %if "%{toolchain}" == "clang"
|
||||||
|
+# BuildRequires: clang compiler-rt
|
||||||
|
+# %endif
|
||||||
|
+#
|
||||||
|
+%toolchain gcc
|
||||||
|
+
|
||||||
|
+%__cc %{expand:%%{__cc_%{toolchain}}}
|
||||||
|
+%__cxx %{expand:%%{__cxx_%{toolchain}}}
|
||||||
|
+%__cpp %{expand:%%{__cpp_%{toolchain}}}
|
||||||
|
+
|
||||||
|
#==============================================================================
|
||||||
|
# ---- compiler flags.
|
||||||
|
|
||||||
|
@@ -31,7 +71,13 @@
|
||||||
|
%build_fflags %{optflags} -fexceptions -I%{_fmoddir}
|
||||||
|
%build_ldflags -Wl,-z,relro %{_ld_as_needed_flags} %{_ld_symbols_flags} %{_hardened_ldflags}
|
||||||
|
|
||||||
|
+%set_build_cc \
|
||||||
|
+ CC=%{__cc}; export CC ; \
|
||||||
|
+ CXX=%{__cxx}; export CXX ; \
|
||||||
|
+ CCC="${CCC:-%{__cxx}}" ; export CCC
|
||||||
|
+
|
||||||
|
%set_build_flags \
|
||||||
|
+ %[ "%{toolchain}" == "gcc" ? "" : "%{set_build_cc};" ] \
|
||||||
|
CFLAGS="${CFLAGS:-%{build_cflags}}" ; export CFLAGS ; \
|
||||||
|
CXXFLAGS="${CXXFLAGS:-%{build_cxxflags}}" ; export CXXFLAGS ; \
|
||||||
|
FFLAGS="${FFLAGS:-%{build_fflags}}" ; export FFLAGS ; \
|
||||||
|
@@ -162,8 +208,10 @@
|
||||||
|
# secure options for rpmbuild
|
||||||
|
#
|
||||||
|
# #hardened options
|
||||||
|
-%_hardening_cflags -specs=/usr/lib/rpm/generic-hardened-cc1
|
||||||
|
-%_hardening_ldflags -Wl,-z,now -specs=/usr/lib/rpm/generic-hardened-ld
|
||||||
|
+%_hardening_gcc_cflags -specs=/usr/lib/rpm/generic-hardened-cc1
|
||||||
|
+%_hardening_clang_cflags --config /usr/lib/rpm/generic-hardened-clang.cfg
|
||||||
|
+%_hardening_cflags %{expand:%%{_hardening_%{toolchain}_cflags}}
|
||||||
|
+%_hardening_ldflags -Wl,-z,now %[ "%{toolchain}" == "gcc" ? "-specs=/usr/lib/rpm/generic-hardened-ld" : "" ]
|
||||||
|
# Use "%undefine _hardened_build" to disable.
|
||||||
|
%_hardened_build 1
|
||||||
|
%_hardened_cflags %{?_hardened_build:%{_hardening_cflags}}
|
||||||
|
@@ -195,7 +243,11 @@
|
||||||
|
# use "%define _ld_as_needed 1" to enable.
|
||||||
|
%_ld_as_needed_flags %{?_ld_as_needed:-Wl,--as-needed}
|
||||||
|
|
||||||
|
-%__global_compiler_flags -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -grecord-gcc-switches %{_hardened_cflags}
|
||||||
|
+%_general_options -O2 -g -grecord-gcc-switches -pipe -fstack-protector-strong %[ "%{toolchain}" == "clang" ? "-fgcc-compatible" : "" ]
|
||||||
|
+%_warning_options -Wall -Werror=format-security
|
||||||
|
+%_preprocessor_defines -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS
|
||||||
|
+
|
||||||
|
+%__global_compiler_flags %{_general_options} %{_warning_options} %{_preprocessor_defines} %{_hardened_cflags}
|
||||||
|
|
||||||
|
# Automatically trim changelog entries after 2 years
|
||||||
|
%_changelog_trimtime %{lua:print(os.time() - 2 * 365 * 86400)}
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
||||||
49
Call-set_build_flags-cc-before-build-check-and-insta.patch
Normal file
49
Call-set_build_flags-cc-before-build-check-and-insta.patch
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
From c6b15b8c17f957d736dd975d106b10d419070ebd Mon Sep 17 00:00:00 2001
|
||||||
|
From: liyunfei <liyunfei33@huawei.com>
|
||||||
|
Date: Tue, 9 Jan 2024 20:50:34 +0800
|
||||||
|
Subject: [PATCH 2/2] Call %set_build_flags&cc before %build, %check, and
|
||||||
|
%install stages
|
||||||
|
|
||||||
|
---
|
||||||
|
macros | 18 ++++++++++++++++++
|
||||||
|
1 file changed, 18 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/macros b/macros
|
||||||
|
index 0062126..8c16706 100755
|
||||||
|
--- a/macros
|
||||||
|
+++ b/macros
|
||||||
|
@@ -83,6 +83,22 @@
|
||||||
|
FCFLAGS="${FCFLAGS:-%{build_fflags}}" ; export FCFLAGS ; \
|
||||||
|
LDFLAGS="${LDFLAGS:-%{build_ldflags}}" ; export LDFLAGS
|
||||||
|
|
||||||
|
+# Automatically use set_build_flags macro for build, check, and
|
||||||
|
+# install phases.
|
||||||
|
+# Use "%undefine _auto_set_build_flags" to disable"
|
||||||
|
+# Automatically use set_build_cc macro for build, check, and
|
||||||
|
+# install phases.
|
||||||
|
+# Use "%undefine _auto_set_build_cc" to disable"
|
||||||
|
+%_auto_set_build_cc %["%{toolchain}" == "gcc" ? 0 : 1]
|
||||||
|
+%_auto_set_build_flags 0
|
||||||
|
+
|
||||||
|
+%__spec_build_pre %{___build_pre} \
|
||||||
|
+ %[%{_auto_set_build_cc} ? "%{set_build_cc}" : ""] \
|
||||||
|
+ %[%{_auto_set_build_flags} ? "%{set_build_flags}" : ""]
|
||||||
|
+%__spec_check_pre %{___build_pre} \
|
||||||
|
+ %[%{_auto_set_build_cc} ? "%{set_build_cc}" : ""] \
|
||||||
|
+ %[%{_auto_set_build_flags} ? "%{set_build_flags}" : ""]
|
||||||
|
+
|
||||||
|
#For backwards compatibility only.
|
||||||
|
%__global_cflags %{build_cflags}
|
||||||
|
%__global_cxxflags %{build_cxxflags}
|
||||||
|
@@ -144,6 +158,8 @@
|
||||||
|
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf "${RPM_BUILD_ROOT}"\
|
||||||
|
mkdir -p `dirname "$RPM_BUILD_ROOT"`\
|
||||||
|
mkdir "$RPM_BUILD_ROOT"\
|
||||||
|
+ %[%{_auto_set_build_cc} ? "%{set_build_cc}" : ""]\
|
||||||
|
+ %[%{_auto_set_build_flags} ? "%{set_build_flags}" : ""]\
|
||||||
|
%{nil}
|
||||||
|
|
||||||
|
# ---- Expanded at end of %install scriptlet.
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
||||||
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
Name: %{vendor}-rpm-config
|
Name: %{vendor}-rpm-config
|
||||||
Version: 30
|
Version: 30
|
||||||
Release: 49
|
Release: 50
|
||||||
License: GPL+
|
License: GPL+
|
||||||
Summary: specific rpm configuration files
|
Summary: specific rpm configuration files
|
||||||
URL: https://gitee.com/openeuler/openEuler-rpm-config
|
URL: https://gitee.com/openeuler/openEuler-rpm-config
|
||||||
@ -35,6 +35,8 @@ Patch21: check-if-the-file-is-a-symbolic-link-in-brp-digest-list.patch
|
|||||||
Patch22: fix-the-ELF-file-cannot-be-found-due-to-escape-of.patch
|
Patch22: fix-the-ELF-file-cannot-be-found-due-to-escape-of.patch
|
||||||
Patch23: add-powerpc64le-and-ppc64le-support.patch
|
Patch23: add-powerpc64le-and-ppc64le-support.patch
|
||||||
Patch24: Delete-the-commented-code.patch
|
Patch24: Delete-the-commented-code.patch
|
||||||
|
Patch25: Add-support-for-selecting-clang-as-a-toolchain.patch
|
||||||
|
Patch26: Call-set_build_flags-cc-before-build-check-and-insta.patch
|
||||||
|
|
||||||
Provides: python-rpm-macros = %{?epoch:%{epoch}:}%{version}-%{release}
|
Provides: python-rpm-macros = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||||
Provides: python2-rpm-macros = %{?epoch:%{epoch}:}%{version}-%{release}
|
Provides: python2-rpm-macros = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||||
@ -146,6 +148,9 @@ sed -i "s/__vendor/%{vendor}/g" `grep "__vendor" -rl %{buildroot}%{_rpmconfigdir
|
|||||||
%{rpmvdir}/find-requires.ksyms
|
%{rpmvdir}/find-requires.ksyms
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Mar 12 2024 liyunfei <liyunfei33@huawei.com> - 30-50
|
||||||
|
- Add clang toolchain support
|
||||||
|
|
||||||
* Tue Mar 5 2024 hongjinghao <hongjinghao@huawei.com> - 30-49
|
* Tue Mar 5 2024 hongjinghao <hongjinghao@huawei.com> - 30-49
|
||||||
- Delete the commented code
|
- Delete the commented code
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user