From 1e3bde855e351716e7fb44021dd27c2ec7d24091 Mon Sep 17 00:00:00 2001 From: liyunfei Date: Tue, 20 Jun 2023 17:08:57 +0800 Subject: [PATCH] Add clang compile support --- 0007-cpupower-clang-compile-support.patch | 35 ++++++++++ ...gy_perf_policy-clang-compile-support.patch | 24 +++++++ 0009-turbostat-clang-compile-support.patch | 23 ++++++ kernel.spec | 70 ++++++++++++------- 4 files changed, 126 insertions(+), 26 deletions(-) create mode 100644 0007-cpupower-clang-compile-support.patch create mode 100644 0008-x86_energy_perf_policy-clang-compile-support.patch create mode 100644 0009-turbostat-clang-compile-support.patch diff --git a/0007-cpupower-clang-compile-support.patch b/0007-cpupower-clang-compile-support.patch new file mode 100644 index 0000000..20d1323 --- /dev/null +++ b/0007-cpupower-clang-compile-support.patch @@ -0,0 +1,35 @@ +From dfc3fdee367ba9aafc5ef7639a1fb0dbb9c6d213 Mon Sep 17 00:00:00 2001 +From: liyunfei +Date: Tue, 20 Jun 2023 10:27:45 +0800 +Subject: [PATCH] cpupower clang compile support + +--- + tools/power/cpupower/Makefile | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/tools/power/cpupower/Makefile b/tools/power/cpupower/Makefile +index e9b6de3..cc30f4e 100644 +--- a/tools/power/cpupower/Makefile ++++ b/tools/power/cpupower/Makefile +@@ -86,12 +86,12 @@ INSTALL_SCRIPT = ${INSTALL} -m 644 + # to something more interesting, like "arm-linux-". If you want + # to compile vs uClibc, that can be done here as well. + CROSS = #/usr/i386-linux-uclibc/usr/bin/i386-uclibc- +-CC = $(CROSS)gcc +-LD = $(CROSS)gcc +-AR = $(CROSS)ar +-STRIP = $(CROSS)strip +-RANLIB = $(CROSS)ranlib +-HOSTCC = gcc ++CC ?= $(CROSS)gcc ++LD ?= $(CROSS)gcc ++AR ?= $(CROSS)ar ++STRIP ?= $(CROSS)strip ++RANLIB ?= $(CROSS)ranlib ++HOSTCC ?= gcc + MKDIR = mkdir + + # 64bit library detection +-- +2.27.0 + diff --git a/0008-x86_energy_perf_policy-clang-compile-support.patch b/0008-x86_energy_perf_policy-clang-compile-support.patch new file mode 100644 index 0000000..6a59bbf --- /dev/null +++ b/0008-x86_energy_perf_policy-clang-compile-support.patch @@ -0,0 +1,24 @@ +From b52db4e09378e62cf785644344aeb36cad0db406 Mon Sep 17 00:00:00 2001 +From: liyunfei +Date: Wed, 21 Jun 2023 14:38:15 +0800 +Subject: [PATCH] x86_energy_perf_policy clang compile support + +--- + tools/power/x86/x86_energy_perf_policy/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tools/power/x86/x86_energy_perf_policy/Makefile b/tools/power/x86/x86_energy_perf_policy/Makefile +index 666b325a6..86702c2e5 100644 +--- a/tools/power/x86/x86_energy_perf_policy/Makefile ++++ b/tools/power/x86/x86_energy_perf_policy/Makefile +@@ -1,5 +1,5 @@ + # SPDX-License-Identifier: GPL-2.0 +-CC = $(CROSS_COMPILE)gcc ++CC ?= $(CROSS_COMPILE)gcc + BUILD_OUTPUT := $(CURDIR) + PREFIX := /usr + DESTDIR := +-- +2.28.0.windows.1 + + diff --git a/0009-turbostat-clang-compile-support.patch b/0009-turbostat-clang-compile-support.patch new file mode 100644 index 0000000..890442d --- /dev/null +++ b/0009-turbostat-clang-compile-support.patch @@ -0,0 +1,23 @@ +From 2265f8fd13fc3b425b5249d3461b4d687bb1229d Mon Sep 17 00:00:00 2001 +From: liyunfei +Date: Sun, 25 Jun 2023 09:20:20 +0800 +Subject: [PATCH] turbostat clang compile support + +--- + tools/power/x86/turbostat/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tools/power/x86/turbostat/Makefile b/tools/power/x86/turbostat/Makefile +index 92e139b9c..6a2523ad7 100644 +--- a/tools/power/x86/turbostat/Makefile ++++ b/tools/power/x86/turbostat/Makefile +@@ -1,5 +1,5 @@ + # SPDX-License-Identifier: GPL-2.0 +-CC = $(CROSS_COMPILE)gcc ++CC ?= $(CROSS_COMPILE)gcc + BUILD_OUTPUT := $(CURDIR) + PREFIX ?= /usr + DESTDIR ?= +-- +2.28.0.windows.1 + diff --git a/kernel.spec b/kernel.spec index e6f5487..8b4c50c 100644 --- a/kernel.spec +++ b/kernel.spec @@ -12,7 +12,7 @@ %global upstream_sublevel 8 %global devel_release 3 %global maintenance_release .0.0 -%global pkg_release .8 +%global pkg_release .9 %define with_debuginfo 0 # Do not recompute the build-id of vmlinux in find-debuginfo.sh @@ -76,6 +76,9 @@ Patch0003: 0003-config-add-initial-openeuler_defconfig-for-x86_64.patch Patch0004: 0004-config-disable-CONFIG_EFI_ZBOOT-by-default.patch Patch0005: 0005-arm64-vmalloc-use-module-region-only-for-module_allo.patch Patch0006: 0006-config-add-initial-openeuler_defconfig-for-riscv64.patch +Patch0007: 0007-cpupower-clang-compile-support.patch +Patch0008: 0008-x86_energy_perf_policy-clang-compile-support.patch +Patch0009: 0009-turbostat-clang-compile-support.patch #BuildRequires: BuildRequires: module-init-tools, patch >= 2.5.4, bash >= 2.03, tar @@ -306,6 +309,9 @@ Applypatches series.conf %{_builddir}/kernel-%{version}/linux-%{KernelVer} %patch0004 -p1 %patch0005 -p1 %patch0006 -p1 +%patch0007 -p1 +%patch0008 -p1 +%patch0009 -p1 touch .scmversion find . \( -name "*.orig" -o -name "*~" \) -exec rm -f {} \; >/dev/null @@ -339,12 +345,16 @@ sed -i arch/arm64/configs/openeuler_defconfig -e 's/^CONFIG_ARM64_VA_BITS=.*/CON sed -i arch/arm64/configs/openeuler_defconfig -e 's/^CONFIG_ARM64_VA_BITS_.*/CONFIG_ARM64_VA_BITS_52=y/' %endif -make ARCH=%{Arch} openeuler_defconfig +%if "%toolchain" == "clang" +%global Clang_Make_Option LLVM=1 LLVM_IAS=1 HOSTLD=ld LD=ld +%endif + +make %{Clang_Make_Option} ARCH=%{Arch} openeuler_defconfig TargetImage=$(basename $(make -s image_name)) -make ARCH=%{Arch} $TargetImage %{?_smp_mflags} -make ARCH=%{Arch} modules %{?_smp_mflags} +make %{Clang_Make_Option} ARCH=%{Arch} $TargetImage %{?_smp_mflags} +make %{Clang_Make_Option} ARCH=%{Arch} modules %{?_smp_mflags} %if 0%{?with_kabichk} chmod 0755 %{SOURCE18} @@ -358,14 +368,19 @@ make ARCH=%{Arch} modules %{?_smp_mflags} # make dtbs %ifarch aarch64 riscv64 - make ARCH=%{Arch} dtbs + make %{Clang_Make_Option} ARCH=%{Arch} dtbs %endif ## make tools %if %{with_perf} # perf +%if "%toolchain" == "clang" +%global perf_make \ + make %{Clang_Make_Option} EXTRA_CFLAGS="-g -Wall -fstack-protector-strong -fPIC" EXTRA_LDFLAGS="-z now" EXTRA_PERFLIBS="-fpie -pie" %{?_smp_mflags} -s V=1 WERROR=0 NO_LIBUNWIND=1 HAVE_CPLUS_DEMANGLE=1 NO_GTK2=1 NO_LIBNUMA=1 NO_STRLCPY=1 prefix=%{_prefix} +%else %global perf_make \ make EXTRA_CFLAGS="-Wl,-z,now -g -Wall -fstack-protector-strong -fPIC" EXTRA_PERFLIBS="-fpie -pie" %{?_smp_mflags} -s V=1 WERROR=0 NO_LIBUNWIND=1 HAVE_CPLUS_DEMANGLE=1 NO_GTK2=1 NO_LIBNUMA=1 NO_STRLCPY=1 prefix=%{_prefix} +%endif %if 0%{?with_python2} %global perf_python2 -C tools/perf PYTHON=%{__python2} %global perf_python3 -C tools/python3-perf PYTHON=%{__python3} @@ -390,45 +405,45 @@ popd # bpftool pushd tools/bpf/bpftool -make +make %{Clang_Make_Option} popd # cpupower chmod +x tools/power/cpupower/utils/version-gen.sh -make %{?_smp_mflags} -C tools/power/cpupower CPUFREQ_BENCH=false +make %{Clang_Make_Option} %{?_smp_mflags} -C tools/power/cpupower CPUFREQ_BENCH=false %ifarch %{ix86} pushd tools/power/cpupower/debug/i386 - make %{?_smp_mflags} centrino-decode powernow-k8-decode + make %{Clang_Make_Option} %{?_smp_mflags} centrino-decode powernow-k8-decode popd %endif %ifarch x86_64 pushd tools/power/cpupower/debug/x86_64 - make %{?_smp_mflags} centrino-decode powernow-k8-decode + make %{Clang_Make_Option} %{?_smp_mflags} centrino-decode powernow-k8-decode popd %endif %ifarch %{ix86} x86_64 pushd tools/power/x86/x86_energy_perf_policy/ - make + make %{Clang_Make_Option} popd pushd tools/power/x86/turbostat - make + make %{Clang_Make_Option} popd %endif # thermal pushd tools/thermal/tmon/ -make +make %{Clang_Make_Option} popd # iio pushd tools/iio/ -make +make %{Clang_Make_Option} popd # gpio pushd tools/gpio/ -make +make %{Clang_Make_Option} popd # kvm pushd tools/kvm/kvm_stat/ -make %{?_smp_mflags} man +make %{Clang_Make_Option} %{?_smp_mflags} man popd %install @@ -471,7 +486,7 @@ install -m 755 %{SOURCE200} $RPM_BUILD_ROOT%{_sbindir}/mkgrub-menu-%{devel_relea %endif # deal with module, if not kdump -make ARCH=%{Arch} INSTALL_MOD_PATH=$RPM_BUILD_ROOT modules_install KERNELRELEASE=%{KernelVer} mod-fw= +make %{Clang_Make_Option} ARCH=%{Arch} INSTALL_MOD_PATH=$RPM_BUILD_ROOT modules_install KERNELRELEASE=%{KernelVer} mod-fw= ######## to collect ko to module.filelist about netwoking. block. drm. modesetting ############### pushd $RPM_BUILD_ROOT/lib/modules/%{KernelVer} find -type f -name "*.ko" >modnames @@ -533,7 +548,7 @@ popd %{nil} # deal with header -make ARCH=%{Arch} INSTALL_HDR_PATH=$RPM_BUILD_ROOT/usr KBUILD_SRC= headers_install +make %{Clang_Make_Option} ARCH=%{Arch} INSTALL_HDR_PATH=$RPM_BUILD_ROOT/usr KBUILD_SRC= headers_install find $RPM_BUILD_ROOT/usr/include -name "\.*" -exec rm -rf {} \; # dtbs install @@ -544,7 +559,7 @@ find $RPM_BUILD_ROOT/usr/include -name "\.*" -exec rm -rf {} \; %endif # deal with vdso -make -s ARCH=%{Arch} INSTALL_MOD_PATH=$RPM_BUILD_ROOT vdso_install KERNELRELEASE=%{KernelVer} +make %{Clang_Make_Option} -s ARCH=%{Arch} INSTALL_MOD_PATH=$RPM_BUILD_ROOT vdso_install KERNELRELEASE=%{KernelVer} if [ ! -s ldconfig-kernel.conf ]; then echo "# Placeholder file, no vDSO hwcap entries used in this kernel." >ldconfig-kernel.conf fi @@ -657,10 +672,10 @@ install -pm0644 tools/perf/Documentation/*.1 %{buildroot}/%{_mandir}/man1/ # bpftool pushd tools/bpf/bpftool -make DESTDIR=%{buildroot} prefix=%{_prefix} bash_compdir=%{_sysconfdir}/bash_completion.d/ mandir=%{_mandir} install doc-install +make %{Clang_Make_Option} DESTDIR=%{buildroot} prefix=%{_prefix} bash_compdir=%{_sysconfdir}/bash_completion.d/ mandir=%{_mandir} install doc-install popd # cpupower -make -C tools/power/cpupower DESTDIR=%{buildroot} libdir=%{_libdir} mandir=%{_mandir} CPUFREQ_BENCH=false install +make %{Clang_Make_Option} -C tools/power/cpupower DESTDIR=%{buildroot} libdir=%{_libdir} mandir=%{_mandir} CPUFREQ_BENCH=false install rm -f %{buildroot}%{_libdir}/*.{a,la} %find_lang cpupower mv cpupower.lang ../ @@ -683,27 +698,27 @@ install -m644 %{SOURCE2001} %{buildroot}%{_sysconfdir}/sysconfig/cpupower %ifarch %{ix86} x86_64 mkdir -p %{buildroot}%{_mandir}/man8 pushd tools/power/x86/x86_energy_perf_policy - make DESTDIR=%{buildroot} install + make %{Clang_Make_Option} DESTDIR=%{buildroot} install popd pushd tools/power/x86/turbostat - make DESTDIR=%{buildroot} install + make %{Clang_Make_Option} DESTDIR=%{buildroot} install popd %endif # thermal pushd tools/thermal/tmon -make INSTALL_ROOT=%{buildroot} install +make %{Clang_Make_Option} INSTALL_ROOT=%{buildroot} install popd # iio pushd tools/iio -make DESTDIR=%{buildroot} install +make %{Clang_Make_Option} DESTDIR=%{buildroot} install popd # gpio pushd tools/gpio -make DESTDIR=%{buildroot} install +make %{Clang_Make_Option} DESTDIR=%{buildroot} install popd # kvm pushd tools/kvm/kvm_stat -make INSTALL_ROOT=%{buildroot} install-tools +make %{Clang_Make_Option} INSTALL_ROOT=%{buildroot} install-tools popd %define __spec_install_post\ @@ -888,6 +903,9 @@ fi %endif %changelog +* Tue Jul 20 2023 liyunfei - 6.1.8-3.0.0.9 +- add clang compile support + * Thu May 25 2023 laokz - 6.1.8-3.0.0.8 - add riscv64 support -- Gitee