xref: /OK3568_Linux_fs/yocto/poky/meta/conf/distro/include/lto.inc (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun# To enable LTO, add following in local.conf
2*4882a593Smuzhiyun# require conf/distro/include/lto.inc
3*4882a593Smuzhiyun# DISTRO_FEATURES:append = " lto"
4*4882a593Smuzhiyun#
5*4882a593Smuzhiyun
6*4882a593Smuzhiyun# Disable LTO for following packages
7*4882a593SmuzhiyunLTO:pn-glibc = ""
8*4882a593SmuzhiyunLTO:pn-gcc-runtime = ""
9*4882a593SmuzhiyunLTO:pn-libgcc-initial = ""
10*4882a593SmuzhiyunLTO:pn-libgcc = ""
11*4882a593SmuzhiyunLTO:pn-libaio = ""
12*4882a593SmuzhiyunLTO:pn-libpam = ""
13*4882a593SmuzhiyunLTO:pn-elfutils = ""
14*4882a593SmuzhiyunLTO:pn-perl = ""
15*4882a593SmuzhiyunLTO:pn-busybox = ""
16*4882a593SmuzhiyunLTO:pn-libxcrypt = ""
17*4882a593SmuzhiyunLTO:pn-curl = ""
18*4882a593SmuzhiyunLTO:pn-libcap = ""
19*4882a593SmuzhiyunLTO:pn-libproxy = ""
20*4882a593SmuzhiyunLTO:pn-libbsd = ""
21*4882a593SmuzhiyunLTO:pn-perf = ""
22*4882a593Smuzhiyun# webkit is not linking properly with LTO, disable until next time
23*4882a593SmuzhiyunLTO:pn-webkitgtk = ""
24*4882a593SmuzhiyunLTO:pn-xserver-xorg = ""
25*4882a593SmuzhiyunLTO:pn-grub = ""
26*4882a593SmuzhiyunLTO:pn-grub-efi = ""
27*4882a593Smuzhiyun
28*4882a593Smuzhiyun# Custom LTO flags
29*4882a593Smuzhiyun# disable partitioning/streaming algorithm since its uses ASM
30*4882a593Smuzhiyun# constructs not compatible with lto
31*4882a593SmuzhiyunLTOEXTRA:pn-alsa-lib = "-flto-partition=none"
32*4882a593Smuzhiyun
33*4882a593SmuzhiyunLTOEXTRA ?= ""
34*4882a593Smuzhiyun
35*4882a593Smuzhiyun# Override it for additional or different options if needed e.g.
36*4882a593Smuzhiyun# with clang thin-lto might be better for compile speed
37*4882a593Smuzhiyun#
38*4882a593Smuzhiyun# ffat-lto-objects
39*4882a593Smuzhiyun# object files that contain both the intermediate
40*4882a593Smuzhiyun# language and the object code. This makes them
41*4882a593Smuzhiyun# usable for both LTO linking and normal linking
42*4882a593Smuzhiyun#
43*4882a593Smuzhiyun# -fuse-linker-plugin
44*4882a593Smuzhiyun# ensures that libraries participate in LTO by supplying intermediate
45*4882a593Smuzhiyun# code from .a files to linker
46*4882a593SmuzhiyunLTO ?= "-flto -ffat-lto-objects -fuse-linker-plugin ${LTOEXTRA}"
47*4882a593Smuzhiyun
48*4882a593SmuzhiyunSELECTED_OPTIMIZATION:append = "${@bb.utils.contains('DISTRO_FEATURES', 'lto', ' ${LTO}', '', d)}"
49*4882a593SmuzhiyunTARGET_LDFLAGS:append:class-target = "${@bb.utils.contains('DISTRO_FEATURES', 'lto', ' ${LTO}', '', d)}"
50*4882a593Smuzhiyun
51*4882a593SmuzhiyunSELECTED_OPTIMIZATION[vardeps] += "LTO LTOEXTRA"
52