summaryrefslogtreecommitdiff
path: root/0001-Enable-LTO-By-Default.patch
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2024-08-29 11:09:34 +0000
committerCoprDistGit <infra@openeuler.org>2024-08-29 11:09:34 +0000
commitc22cb56acddf5bc4147f60908d5ebd770a079070 (patch)
tree302eb716e7d6c4b9c514cf5cd9575b5a347fe220 /0001-Enable-LTO-By-Default.patch
parentb28db8b7389e86a8b2a424f4851ecf7714373516 (diff)
automatic import of openEuler-rpm-config
Diffstat (limited to '0001-Enable-LTO-By-Default.patch')
-rw-r--r--0001-Enable-LTO-By-Default.patch625
1 files changed, 625 insertions, 0 deletions
diff --git a/0001-Enable-LTO-By-Default.patch b/0001-Enable-LTO-By-Default.patch
new file mode 100644
index 0000000..bac5897
--- /dev/null
+++ b/0001-Enable-LTO-By-Default.patch
@@ -0,0 +1,625 @@
+From 2a24fbc1bb28764c3577f3a9e108614cd2e108b2 Mon Sep 17 00:00:00 2001
+From: wangchunyang <wangchunyang15@huawei.com>
+Date: Fri, 26 Jul 2024 12:54:56 +0800
+Subject: [PATCH] Enable LTO By Default
+
+---
+ brp-strip-lto | 17 ++
+ lto_flag | 5 +
+ lto_white_list | 536 +++++++++++++++++++++++++++++++++++++++++++++++++
+ macros | 6 +-
+ 4 files changed, 563 insertions(+), 1 deletion(-)
+ create mode 100644 brp-strip-lto
+ create mode 100755 lto_flag
+ create mode 100644 lto_white_list
+
+diff --git a/brp-strip-lto b/brp-strip-lto
+new file mode 100644
+index 0000000..3df672a
+--- /dev/null
++++ b/brp-strip-lto
+@@ -0,0 +1,17 @@
++#!/usr/bin/sh
++# If using normal root, avoid changing anything.
++if [ -z "$RPM_BUILD_ROOT" ] || [ "$RPM_BUILD_ROOT" = "/" ]; then
++ exit 0
++fi
++
++STRIP=${1:-strip}
++NCPUS=${RPM_BUILD_NCPUS:-1}
++
++case `uname -a` in
++Darwin*) exit 0 ;;
++*) ;;
++esac
++
++# Strip ELF binaries
++find "$RPM_BUILD_ROOT" -type f -name '*.[ao]' \! -regex "$RPM_BUILD_ROOT/*usr/lib/debug.*" -print0 | \
++ eu-elfclassify --not-program --not-library --not-linux-kernel-module --stdin0 --print0 | xargs -0 -r -P$NCPUS -n32 sh -c "$STRIP -p -R .gnu.lto_* -R .gnu.debuglto_* -N __gnu_lto_v1 \"\$@\"" ARG0
+diff --git a/lto_flag b/lto_flag
+new file mode 100755
+index 0000000..53e3adb
+--- /dev/null
++++ b/lto_flag
+@@ -0,0 +1,5 @@
++#!/bin/sh
++current_spec=`cat /.build.command`
++if grep -Fxq "$current_spec" "/lib/rpm/openEuler/lto_white_list"; then
++ echo "-flto -ffat-lto-objects"
++fi
+diff --git a/lto_white_list b/lto_white_list
+new file mode 100644
+index 0000000..780be19
+--- /dev/null
++++ b/lto_white_list
+@@ -0,0 +1,536 @@
++adcli.spec
++aide.spec
++amanda.spec
++annobin.spec
++apr.spec
++argon2.spec
++at.spec
++atf.spec
++attr.spec
++audit.spec
++augeas.spec
++authselect.spec
++autogen.spec
++avahi.spec
++babeltrace.spec
++bind.spec
++bison.spec
++bolt.spec
++booth.spec
++brotli.spec
++byacc.spec
++bzip2.spec
++cairomm.spec
++certmonger.spec
++cfitsio.spec
++CharLS.spec
++check.spec
++chkconfig.spec
++chrony.spec
++chrpath.spec
++ck.spec
++clamav.spec
++clevis.spec
++clucene.spec
++cmake.spec
++cockpit.spec
++courier-unicode.spec
++cppcheck.spec
++cpp-httplib.spec
++cracklib.spec
++createrepo_c.spec
++cronie.spec
++cryptsetup.spec
++cups.spec
++cups-filters.spec
++curl.spec
++dav1d.spec
++dbus-broker.spec
++dbus-glib.spec
++dbxtool.spec
++dhcp.spec
++dialog.spec
++ding-libs.spec
++discount.spec
++dos2unix.spec
++dosfstools.spec
++double-conversion.spec
++dovecot.spec
++doxygen.spec
++dropwatch.spec
++drpm.spec
++d-spy.spec
++dwz.spec
++e2fsprogs.spec
++enca.spec
++entr.spec
++environment-modules.spec
++erlang-sd_notify.spec
++espeak-ng.spec
++ethtool.spec
++exempi.spec
++exiv2.spec
++expat.spec
++findutils.spec
++flac.spec
++flatbuffers.spec
++flex.spec
++fmt.spec
++fping.spec
++freetype.spec
++freexl.spec
++fribidi.spec
++gawk.spec
++gc.spec
++gdb.spec
++gdbm.spec
++gdisk.spec
++GeoIP.spec
++geos.spec
++gettext.spec
++ghostscript.spec
++git.spec
++gjs.spec
++glade.spec
++glib-networking.spec
++glm.spec
++glslang.spec
++glusterfs.spec
++gmp.spec
++gnome-autoar.spec
++gnupg2.spec
++gobject-introspection.spec
++gperftools.spec
++GraphicsMagick.spec
++graphite2.spec
++graphviz.spec
++greatsql.spec
++grep.spec
++groff.spec
++grubby.spec
++gsl.spec
++gsm.spec
++gtest.spec
++gzip.spec
++harfbuzz.spec
++hdf.spec
++hdf5.spec
++httpd.spec
++http-parser.spec
++hwloc.spec
++ibus-libpinyin.spec
++icu.spec
++ilmbase.spec
++Imath.spec
++iniparser.spec
++ipcalc.spec
++iproute.spec
++iptables.spec
++isomd5sum.spec
++jansson.spec
++jbig2dec.spec
++jbigkit.spec
++jemalloc.spec
++jimtcl.spec
++jose.spec
++jq.spec
++json-c.spec
++jsoncpp.spec
++Judy.spec
++kbd.spec
++krb5.spec
++kyua.spec
++lame.spec
++lcms2.spec
++libabigail.spec
++libadwaita.spec
++libaec.spec
++libarchive.spec
++libart_lgpl.spec
++libass.spec
++libatomic_ops.spec
++libb2.spec
++libbsd.spec
++libcap.spec
++libcap-ng.spec
++libcdio.spec
++libcdio-paranoia.spec
++libcomps.spec
++libconfuse.spec
++libcue.spec
++libdatrie.spec
++libdbi.spec
++libdnf.spec
++libdrm.spec
++libdwarf.spec
++libEMF.spec
++libev.spec
++libevent.spec
++libffado.spec
++libfprint.spec
++libgexiv2.spec
++libgit2.spec
++libglvnd.spec
++libgta.spec
++libhandy.spec
++libidn.spec
++libidn2.spec
++libiscsi.spec
++libisoburn.spec
++libjpeg-turbo.spec
++libkcapi.spec
++libkeepalive.spec
++libldb.spec
++liblouis.spec
++libmaxminddb.spec
++libmbim.spec
++libmd.spec
++libmemcached.spec
++libmetalink.spec
++libmodplug.spec
++libmodulemd.spec
++libnftnl.spec
++libnma.spec
++libnvme.spec
++libogg.spec
++libopenraw.spec
++libpinyin.spec
++libpipeline.spec
++libplist.spec
++libpwquality.spec
++libqb.spec
++libquvi.spec
++librabbitmq.spec
++libraqm.spec
++librdkafka.spec
++librepo.spec
++libreswan.spec
++librevenge.spec
++libsamplerate.spec
++libseccomp.spec
++libsemanage.spec
++libserf.spec
++libsexy.spec
++libshumate.spec
++libsndfile.spec
++libsodium.spec
++libsolv.spec
++libspectre.spec
++libspiro.spec
++libssh.spec
++libssh2.spec
++libtalloc.spec
++libtasn1.spec
++libtdb.spec
++libtevent.spec
++libtiff.spec
++libunwind.spec
++libusb.spec
++libusbmuxd.spec
++libuser.spec
++libutempter.spec
++libuv.spec
++libvirt.spec
++libvirt-python.spec
++libvorbis.spec
++libwacom.spec
++libwbxml.spec
++libx86emu.spec
++libyaml.spec
++libyubikey.spec
++libzip.spec
++lilv.spec
++lldb.spec
++lmdb.spec
++logrotate.spec
++lshw.spec
++lsof.spec
++lua-expat.spec
++lua-filesystem.spec
++lua-lpeg.spec
++luksmeta.spec
++lzip.spec
++lzo.spec
++m2crypto.spec
++m4.spec
++malcontent.spec
++man-db.spec
++mcpp.spec
++mdadm.spec
++mecab.spec
++metis.spec
++mksh.spec
++mod_auth_openidc.spec
++mod_http2.spec
++mokutil.spec
++mongo-c-driver.spec
++mozjs102.spec
++mpfr.spec
++mpich.spec
++mysql.spec
++nasm.spec
++netcf.spec
++nethogs.spec
++netpbm.spec
++net-snmp.spec
++newt.spec
++nfs-utils.spec
++nftables.spec
++nghttp2.spec
++ninja-build.spec
++nodejs.spec
++npth.spec
++nspr.spec
++nss_wrapper.spec
++nss-mdns.spec
++nss-pam-ldapd.spec
++nss-pem.spec
++ntp.spec
++numpy.spec
++ocl-icd.spec
++oddjob.spec
++oniguruma.spec
++opencc.spec
++OpenEXR.spec
++openhpi.spec
++open-isns.spec
++openmpi.spec
++openscap.spec
++opensp.spec
++openssh.spec
++openvpn.spec
++openvswitch.spec
++p11-kit.spec
++pacemaker.spec
++pam_krb5.spec
++pam_wrapper.spec
++pango.spec
++passwd.spec
++patchelf.spec
++patchutils.spec
++pavucontrol.spec
++pcre2.spec
++perl-autovivification.spec
++perl-B-COW.spec
++perl-BSD-Resource.spec
++perl-Class-XSAccessor.spec
++perl-Clone.spec
++perl-Compress-Bzip2.spec
++perl-Compress-Raw-Bzip2.spec
++perl-Compress-Raw-Zlib.spec
++perl-Crypt-DES.spec
++perl-Crypt-IDEA.spec
++perl-Curses.spec
++perl-Data-Dumper.spec
++perl-Data-UUID.spec
++perl-DateTime.spec
++perl-DB_File.spec
++perl-DBD-MariaDB.spec
++perl-DBD-MySQL.spec
++perl-DBD-Pg.spec
++perl-DBD-SQLite.spec
++perl-Devel-CallChecker.spec
++perl-Devel-Caller.spec
++perl-Devel-LexAlias.spec
++perl-Digest-MD5.spec
++perl-Digest-SHA.spec
++perl-Digest-SHA1.spec
++perl-Digest-SHA3.spec
++perl-Encode-EUCJPASCII.spec
++perl-Encode-JIS2K.spec
++perl-FCGI.spec
++perl-Filter.spec
++perl-GD.spec
++perl-Glib.spec
++perl-GSSAPI.spec
++perl-HTML-Parser.spec
++perl-IO-Tty.spec
++perl-IPC-SysV.spec
++perl-libintl-perl.spec
++perl-List-MoreUtils-XS.spec
++perl-Math-BigInt-FastCalc.spec
++perl-MIME-Base64.spec
++perl-NetAddr-IP.spec
++perl-Package-Stash-XS.spec
++perl-PerlIO-utf8_strict.spec
++perl-PkgConfig-LibPkgConf.spec
++perl-Scalar-List-Utils.spec
++perl-Socket.spec
++perl-Socket6.spec
++perl-Storable.spec
++perl-Sub-Identify.spec
++perl-Sub-Name.spec
++perl-Syntax-Keyword-Try.spec
++perl-Sys-CPU.spec
++perl-Sys-MemInfo.spec
++perl-Sys-Syslog.spec
++perl-TermReadKey.spec
++perl-Test-LeakTrace.spec
++perl-Text-Soundex.spec
++perl-threads-shared.spec
++perl-Time-HiRes.spec
++perl-Unicode-Collate.spec
++perl-Unicode-LineBreak.spec
++perl-Unicode-Normalize.spec
++perl-XML-LibXSLT.spec
++perl-YAML-LibYAML.spec
++phonon.spec
++pigz.spec
++pipewire.spec
++pkgconf.spec
++pngquant.spec
++poco.spec
++polkit-pkla-compat.spec
++poppler.spec
++popt.spec
++postgresql.spec
++postgresql-odbc.spec
++procenv.spec
++proj.spec
++protobuf2.spec
++protobuf-c.spec
++pulseaudio.spec
++pycairo.spec
++pyparted.spec
++PyQt4.spec
++python3.spec
++python-argon2-cffi-bindings.spec
++python-bcrypt.spec
++python-cffi.spec
++python-cheetah.spec
++python-ethtool.spec
++python-greenlet.spec
++python-kiwisolver.spec
++python-lazy-object-proxy.spec
++python-markupsafe.spec
++python-netifaces.spec
++python-pillow.spec
++python-psycopg2.spec
++python-pycryptodomex.spec
++python-pycurl.spec
++python-pymongo.spec
++python-pynacl.spec
++python-pyrsistent.spec
++python-simplejson.spec
++python-systemd.spec
++python-urwid.spec
++python-zope-interface.spec
++python-zstandard.spec
++pyxattr.spec
++qpid-proton.spec
++qrencode.spec
++qscintilla.spec
++qt6-qttools.spec
++quota.spec
++raptor2.spec
++rcs.spec
++realmd.spec
++recode.spec
++rhash.spec
++rpm.spec
++rrdtool.spec
++rsync.spec
++rsyslog.spec
++ruby.spec
++ruby-augeas.spec
++rubygem-bcrypt.spec
++rubygem-bindex.spec
++rubygem-bootsnap.spec
++rubygem-ffi.spec
++rubygem-hiredis.spec
++rubygem-idn.spec
++rubygem-msgpack.spec
++rubygem-nio4r.spec
++rubygem-nokogiri.spec
++rubygem-pg.spec
++rubygem-racc.spec
++rubygem-rdiscount.spec
++rubygem-redcarpet.spec
++rubygem-RedCloth.spec
++rubygem-regexp_property_values.spec
++rubygem-ruby-shadow.spec
++rubygem-sqlite3.spec
++rubygem-thin.spec
++rubygem-unf_ext.spec
++rubygem-websocket-driver.spec
++rust.spec
++satyr.spec
++sbc.spec
++sendmail.spec
++setools.spec
++sg3_utils.spec
++slang.spec
++snappy.spec
++socat.spec
++socket_wrapper.spec
++softhsm.spec
++sox.spec
++soxr.spec
++squid.spec
++sratom.spec
++srt.spec
++sscg.spec
++strace.spec
++subunit.spec
++swtpm.spec
++symlinks.spec
++sysbench.spec
++sysfsutils.spec
++sysprof.spec
++sysstat.spec
++systemd.spec
++taglib.spec
++tang.spec
++tar.spec
++tcl.spec
++tclx.spec
++tcp_wrappers.spec
++tcsh.spec
++teckit.spec
++telepathy-glib.spec
++tigervnc.spec
++time.spec
++timedatex.spec
++tipcutils.spec
++tokyocabinet.spec
++tpm2-tools.spec
++ttembed.spec
++ub-dhcp.spec
++uchardet.spec
++uid_wrapper.spec
++unbound.spec
++units.spec
++unrtf.spec
++unzip.spec
++uriparser.spec
++usbguard.spec
++userspace-rcu.spec
++ustr.spec
++utf8proc.spec
++util-linux.spec
++uuid.spec
++varnish.spec
++vid.stab.spec
++vino.spec
++virt-what.spec
++volume_key.spec
++wget.spec
++wxGTK3.spec
++xcb-util.spec
++xcb-util-image.spec
++xcb-util-keysyms.spec
++xcb-util-wm.spec
++xcb-util-xrm.spec
++xdelta.spec
++xmlstarlet.spec
++xmlto.spec
++xorg-x11-server.spec
++xorg-x11-xauth.spec
++xxhash.spec
++yajl.spec
++yelp.spec
++ykpers.spec
++zenity.spec
++zeromq.spec
++zstd.spec
++
+diff --git a/macros b/macros
+index 3cd2655..b3fcdb5 100644
+--- a/macros
++++ b/macros
+@@ -173,6 +173,7 @@
+ %__brp_ldconfig /usr/lib/rpm/brp-ldconfig
+ %__brp_compress /usr/lib/rpm/brp-compress
+ %__brp_strip /usr/lib/rpm/brp-strip %{__strip}
++%__brp_strip_lto /usr/lib/rpm/brp-strip-lto %{__strip}
+ %__brp_strip_comment_note /usr/lib/rpm/brp-strip-comment-note %{__strip} %{__objdump}
+ %__brp_strip_static_archive /usr/lib/rpm/brp-strip-static-archive %{__strip}
+ %__brp_python_bytecompile /usr/lib/rpm/brp-python-bytecompile "%{__python}" "%{?_python_bytecompile_errors_terminate_build}" "%{?_python_bytecompile_extra}"
+@@ -185,6 +186,7 @@
+ %{?__brp_strip} \
+ %{?__brp_strip_comment_note} \
+ } \
++ [ "%{_lto_cflags}"x != x ] && %{?__brp_strip_lto} \
+ %{?__brp_strip_static_archive} \
+ %{?py_auto_byte_compile:%{?__brp_python_bytecompile}} \
+ %{?__brp_python_hardlink} \
+@@ -261,7 +263,9 @@
+ %_ld_as_needed 1
+ %_ld_as_needed_flags %{?_ld_as_needed:-Wl,--as-needed}
+
+-%_general_options -O2 -g -grecord-gcc-switches -pipe -fstack-protector-strong %[ "%{toolchain}" == "clang" ? "-fgcc-compatible" : "" ]
++%_get_lto_cflags %(/lib/rpm/openEuler/lto_flag)
++%_lto_cflags %{_get_lto_cflags}
++%_general_options -O2 %{_lto_cflags} -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
+
+--
+2.43.0
+