diff --git a/0024-fix-clang-cflags.patch b/0024-fix-clang-cflags.patch new file mode 100644 index 0000000000000000000000000000000000000000..bfb2c0364f421f3fd6f5e31aad5642f084e3d8ea --- /dev/null +++ b/0024-fix-clang-cflags.patch @@ -0,0 +1,92 @@ +diff -up dpdk-21.11/app/meson.build.orig2 dpdk-21.11/app/meson.build +--- dpdk-21.11/app/meson.build.orig2 2023-04-21 18:37:25.851994629 +0800 ++++ dpdk-21.11/app/meson.build 2023-04-21 21:25:13.631388908 +0800 +@@ -21,9 +21,12 @@ apps = [ + ] + + default_cflags = machine_args + ['-DALLOW_EXPERIMENTAL_API'] +-default_cflags += ['-fPIE', '-pie', '-fPIC', '-fstack-protector-strong', '-D_FORTIFY_SOURCE=2', '-O2', '-Wall', '-Werror'] +-default_cflags += ['-Wl,-z,relro,-z,now,-z,noexecstack', '-Wtrampolines'] +-default_ldflags = [] ++if meson.get_compiler('c').get_id() == 'clang' ++ default_ldflags = ['-pie', '-Wl,-z,relro,-z,now,-z,noexecstack'] ++else ++ default_cflags += ['-fPIE', '-fPIC', '-fstack-protector-strong', '-D_FORTIFY_SOURCE=2', '-O2', '-Wall', '-Werror'] ++ default_cflags += ['-Wl,-z,relro,-z,now,-z,noexecstack', '-Wtrampolines'] ++endif + if get_option('default_library') == 'static' and not is_windows + default_ldflags += ['-Wl,--export-dynamic'] + endif +diff -up dpdk-21.11/buildtools/chkincs/meson.build.orig2 dpdk-21.11/buildtools/chkincs/meson.build +--- dpdk-21.11/buildtools/chkincs/meson.build.orig2 2023-04-21 18:38:05.196444066 +0800 ++++ dpdk-21.11/buildtools/chkincs/meson.build 2023-04-21 21:25:14.095512696 +0800 +@@ -13,9 +13,12 @@ gen_c_files = generator(gen_c_file_for_h + + cflags = machine_args + cflags += '-DALLOW_EXPERIMENTAL_API' +-cflags += ['-fPIE', '-pie', '-fPIC', '-fstack-protector-strong', '-D_FORTIFY_SOURCE=2', '-O2', '-Wall', '-Werror'] +-cflags += ['-Wl,-z,relro,-z,now,-z,noexecstack', '-Wtrampolines'] +- ++if meson.get_compiler('c').get_id() == 'clang' ++ ldflags = ['-pie', '-Wl,-z,relro,-z,now,-z,noexecstack'] ++else ++ cflags += ['-fPIE', '-fPIC', '-fstack-protector-strong', '-D_FORTIFY_SOURCE=2', '-O2', '-Wall', '-Werror'] ++ cflags += ['-Wl,-z,relro,-z,now,-z,noexecstack', '-Wtrampolines'] ++endif + sources = files('main.c') + sources += gen_c_files.process(dpdk_chkinc_headers) + +diff -up dpdk-21.11/drivers/meson.build.orig2 dpdk-21.11/drivers/meson.build +--- dpdk-21.11/drivers/meson.build.orig2 2023-04-21 18:37:25.855994675 +0800 ++++ dpdk-21.11/drivers/meson.build 2023-04-21 21:25:14.495619407 +0800 +@@ -45,8 +45,12 @@ enable_drivers += always_enable + default_cflags = machine_args + default_cflags += ['-DALLOW_EXPERIMENTAL_API'] + default_cflags += ['-DALLOW_INTERNAL_API'] +-default_cflags += ['-fPIE', '-pie', '-fPIC', '-fstack-protector-strong', '-D_FORTIFY_SOURCE=2', '-O2', '-Wall', '-Werror'] +-default_cflags += ['-Wl,-z,relro,-z,now,-z,noexecstack', '-Wtrampolines'] ++if meson.get_compiler('c').get_id() == 'clang' ++ default_ldflags = ['-pie', '-Wl,-z,relro,-z,now,-z,noexecstack'] ++else ++ default_cflags += ['-fPIE', '-fPIC', '-fstack-protector-strong', '-D_FORTIFY_SOURCE=2', '-O2', '-Wall', '-Werror'] ++ default_cflags += ['-Wl,-z,relro,-z,now,-z,noexecstack', '-Wtrampolines'] ++endif + + if cc.has_argument('-Wno-format-truncation') + default_cflags += '-Wno-format-truncation' +diff -up dpdk-21.11/examples/meson.build.orig2 dpdk-21.11/examples/meson.build +--- dpdk-21.11/examples/meson.build.orig2 2023-04-21 18:37:25.859994720 +0800 ++++ dpdk-21.11/examples/meson.build 2023-04-21 21:25:14.911730388 +0800 +@@ -90,8 +90,12 @@ default_ldflags = dpdk_extra_ldflags + if get_option('default_library') == 'static' and not is_windows + default_ldflags += ['-Wl,--export-dynamic'] + endif +-default_cflags += ['-fPIE', '-pie', '-fPIC', '-fstack-protector-strong', '-D_FORTIFY_SOURCE=2', '-O2', '-Wall', '-Werror'] +-default_cflags += ['-Wl,-z,relro,-z,now,-z,noexecstack', '-Wtrampolines'] ++if meson.get_compiler('c').get_id() == 'clang' ++ default_ldflags = ['-pie', '-Wl,-z,relro,-z,now,-z,noexecstack'] ++else ++ default_cflags += ['-fPIE', '-fPIC', '-fstack-protector-strong', '-D_FORTIFY_SOURCE=2', '-O2', '-Wall', '-Werror'] ++ default_cflags += ['-Wl,-z,relro,-z,now,-z,noexecstack', '-Wtrampolines'] ++endif + + foreach example: examples + name = example.split('/')[-1] +diff -up dpdk-21.11/lib/meson.build.orig2 dpdk-21.11/lib/meson.build +--- dpdk-21.11/lib/meson.build.orig2 2023-04-21 18:37:25.863994766 +0800 ++++ dpdk-21.11/lib/meson.build 2023-04-21 21:25:15.543898993 +0800 +@@ -94,8 +94,12 @@ endforeach + default_cflags = machine_args + default_cflags += ['-DALLOW_EXPERIMENTAL_API'] + default_cflags += ['-DALLOW_INTERNAL_API'] +-default_cflags += ['-fPIE', '-pie', '-fPIC', '-fstack-protector-strong', '-D_FORTIFY_SOURCE=2', '-O2', '-Wall', '-Werror'] +-default_cflags += ['-Wl,-z,relro,-z,now,-z,noexecstack', '-Wtrampolines'] ++if meson.get_compiler('c').get_id() == 'clang' ++ default_ldflags = ['-pie', '-Wl,-z,relro,-z,now,-z,noexecstack'] ++else ++ default_cflags += ['-fPIE', '-fPIC', '-fstack-protector-strong', '-D_FORTIFY_SOURCE=2', '-O2', '-Wall', '-Werror'] ++ default_cflags += ['-Wl,-z,relro,-z,now,-z,noexecstack', '-Wtrampolines'] ++endif + + if cc.has_argument('-Wno-format-truncation') + default_cflags += '-Wno-format-truncation' diff --git a/dpdk.spec b/dpdk.spec index af64575de2f81882ade64562304d9ab597b8904a..ee1de23765096161a38b2ce85a8031663823bd36 100644 --- a/dpdk.spec +++ b/dpdk.spec @@ -1,6 +1,6 @@ Name: dpdk Version: 21.11 -Release: 56 +Release: 57 Packager: packaging@6wind.com URL: http://dpdk.org %global source_version 21.11 @@ -340,6 +340,7 @@ Patch9020: 0020-pdump-fix-pcap_dump-coredump-caused-by-incorrect-pkt_len.patc Patch9021: 0021-gro-fix-gro-with-tcp-push-flag.patch Patch9022: 0022-eal-loongarch-support-LoongArch-architecture.patch Patch9023: 0023-example-l3fwd-masking-wrong-warning-array-subscript-.patch +Patch9024: 0024-fix-clang-cflags.patch Patch6315: 0315-net-cnxk-fix-build-with-GCC-12.patch Patch6316: 0316-net-cnxk-fix-build-with-optimization.patch @@ -384,7 +385,7 @@ License: BSD and LGPLv2 and GPLv2 ExclusiveArch: i686 x86_64 aarch64 loongarch64 -BuildRequires: meson ninja-build gcc diffutils python3-pyelftools +BuildRequires: meson ninja-build gcc diffutils python3-pyelftools lld BuildRequires: kernel-devel numactl-devel BuildRequires: libpcap libpcap-devel BuildRequires: rdma-core-devel @@ -426,6 +427,9 @@ This package contains the pdump tool for capture the dpdk network packets. %autosetup -n %{name}-%{version} -p1 %build +%if "%toolchain" == "clang" +export LLVM=1 +%endif export CFLAGS="%{optflags}" meson build -Dplatform=generic -Dexamples=l3fwd-power,ethtool,l3fwd,kni,dma,ptpclient ninja -C build -v @@ -522,6 +526,9 @@ strip -g $RPM_BUILD_ROOT/lib/modules/%{kern_devel_ver}/extra/dpdk/igb_uio.ko /usr/sbin/depmod %changelog +* Wed Sep 13 2023 yoo - 21.11-57 +- fix clang build + * Mon Aug 21 2023 huangdengdui - 21.11-56 replace patch-287 to solve the duplicate setting for MAC address.