xref: /linux/scripts/Makefile.propeller (revision 6a34dfa15d6edf7e78b8118d862d2db0889cf669)
1d5dc9583SRong Xu# SPDX-License-Identifier: GPL-2.0
2d5dc9583SRong Xu
3d5dc9583SRong Xu# Enable available and selected Clang Propeller features.
4d5dc9583SRong Xuifdef CLANG_PROPELLER_PROFILE_PREFIX
5d5dc9583SRong Xu  CFLAGS_PROPELLER_CLANG := -fbasic-block-sections=list=$(CLANG_PROPELLER_PROFILE_PREFIX)_cc_profile.txt -ffunction-sections
6d5dc9583SRong Xu  KBUILD_LDFLAGS += --symbol-ordering-file=$(CLANG_PROPELLER_PROFILE_PREFIX)_ld_profile.txt --no-warn-symbol-ordering
7d5dc9583SRong Xuelse
8*d63b8524SRong Xu  # Starting with Clang v20, the '-fbasic-block-sections=labels' option is
9*d63b8524SRong Xu  # deprecated. Use the recommended '-fbasic-block-address-map' option.
10*d63b8524SRong Xu  # Link: https://github.com/llvm/llvm-project/pull/110039
11*d63b8524SRong Xu  ifeq ($(call clang-min-version, 200000),y)
12*d63b8524SRong Xu    CFLAGS_PROPELLER_CLANG := -fbasic-block-address-map
13*d63b8524SRong Xu  else
14d5dc9583SRong Xu    CFLAGS_PROPELLER_CLANG := -fbasic-block-sections=labels
15d5dc9583SRong Xu  endif
16*d63b8524SRong Xuendif
17d5dc9583SRong Xu
18d5dc9583SRong Xu# Propeller requires debug information to embed module names in the profiles.
19d5dc9583SRong Xu# If CONFIG_DEBUG_INFO is not enabled, set -gmlt option. Skip this for AutoFDO,
20d5dc9583SRong Xu# as the option should already be set.
21d5dc9583SRong Xuifndef CONFIG_DEBUG_INFO
22d5dc9583SRong Xu  ifndef CONFIG_AUTOFDO_CLANG
23d5dc9583SRong Xu    CFLAGS_PROPELLER_CLANG += -gmlt
24d5dc9583SRong Xu  endif
25d5dc9583SRong Xuendif
26d5dc9583SRong Xu
27d5dc9583SRong Xuifdef CONFIG_LTO_CLANG_THIN
28d5dc9583SRong Xu  ifdef CLANG_PROPELLER_PROFILE_PREFIX
29d5dc9583SRong Xu    KBUILD_LDFLAGS += --lto-basic-block-sections=$(CLANG_PROPELLER_PROFILE_PREFIX)_cc_profile.txt
30d5dc9583SRong Xu  else
31*d63b8524SRong Xu    ifeq ($(call test-ge, $(CONFIG_LLD_VERSION), 200000),y)
32*d63b8524SRong Xu       KBUILD_LDFLAGS += --lto-basic-block-address-map
33*d63b8524SRong Xu    else
34d5dc9583SRong Xu       KBUILD_LDFLAGS += --lto-basic-block-sections=labels
35d5dc9583SRong Xu    endif
36d5dc9583SRong Xu  endif
37*d63b8524SRong Xuendif
38d5dc9583SRong Xu
39d5dc9583SRong Xuexport CFLAGS_PROPELLER_CLANG
40