# SPDX-License-Identifier: GPL-2.0
ifdef CONFIG_FUNCTION_TRACER
CFLAGS_REMOVE_clock.o = $(CC_FLAGS_FTRACE)
endif

# These files are disabled because they produce non-interesting flaky coverage
# that is not a function of syscall inputs. E.g. involuntary context switches.
KCOV_INSTRUMENT := n

# There are numerous data races here, however, most of them are due to plain accesses.
# This would make it even harder for syzbot to find reproducers, because these
# bugs trigger without specific input. Disable by default, but should re-enable
# eventually.
KCSAN_SANITIZE := n

ifneq ($(CONFIG_SCHED_OMIT_FRAME_POINTER),y)
# According to Alan Modra <alan@linuxcare.com.au>, the -fno-omit-frame-pointer is
# needed for x86 only.  Why this used to be enabled for all architectures is beyond
# me.  I suspect most platforms don't need this, but until we know that for sure
# I turn this off for IA-64 only.  Andreas Schwab says it's also needed on m68k
# to get a correct value for the wait-channel (WCHAN in ps). --davidm
CFLAGS_core.o := $(PROFILING) -fno-omit-frame-pointer
endif

obj-y += core.o loadavg.o clock.o cputime.o
obj-y += idle.o fair.o rt.o
obj-y += wait.o wait_bit.o swait.o completion.o
ifeq ($(CONFIG_SCHED_DEADLINE_ENABLE),y)
obj-y += deadline.o
else
obj-y += deadline_stub.o
endif

obj-$(CONFIG_SMP) += cpupri.o cpudeadline.o topology.o stop_task.o pelt.o
obj-$(CONFIG_SCHED_WALT) += walt.o
obj-$(CONFIG_SCHED_RTG) += rtg/
obj-y += ffrt/
obj-$(CONFIG_SCHED_AUTOGROUP) += autogroup.o
obj-$(CONFIG_SCHEDSTATS) += stats.o
obj-$(CONFIG_DFX_STATS) += dfx_stats.o
obj-$(CONFIG_SCHED_DEBUG) += debug.o
obj-$(CONFIG_CGROUP_CPUACCT) += cpuacct.o
obj-$(CONFIG_CPU_FREQ) += cpufreq.o
obj-$(CONFIG_CPU_FREQ_GOV_SCHEDUTIL) += cpufreq_schedutil.o
obj-$(CONFIG_CPU_FREQ_GOV_MIPS) += cpufreq_mips.o
obj-$(CONFIG_MEMBARRIER) += membarrier.o
obj-$(CONFIG_CPU_ISOLATION) += isolation.o
obj-$(CONFIG_PSI) += psi.o
obj-$(CONFIG_HISI_EAS_SCHED) += sysfs.o sched_cluster.o
obj-$(CONFIG_SCHED_RUNNING_AVG) += sched_avg.o
obj-$(CONFIG_ED_TASK) += ed_task.o
obj-$(CONFIG_SCHED_RUNNING_TASK_ROTATION) += rotation.o
obj-$(CONFIG_SCHED_POWER_LIMIT_MAXFREQ) += power_limit.o
obj-$(CONFIG_RENDER_RT) += render_rt.o
obj-$(CONFIG_PERF_CTRL) += sched_perf_ctrl.o
obj-$(CONFIG_CORE_CTRL) += core_ctl.o
obj-$(CONFIG_RT_CAS) += rt_cas.o
obj-$(CONFIG_SCHED_VIP) += vip.o
obj-$(CONFIG_SCHED_DYNAMIC_PRIO) += dynamic_prio.o
obj-$(CONFIG_SCHED_CORE_CTRL) += core_ctl.o
obj-$(CONFIG_SCHED_SMT) += smt/
obj-y += hw_graded_sched/
obj-y += timer_energy_efficiency.o
obj-$(CONFIG_PHASE) += phase/
obj-$(CONFIG_MIPS_LOAD_TRACKING) += mips.o
obj-y += cpufreq_common.o
