#
# Makefile for the linux kernel.
#

obj-y     = fork.o exec_domain.o panic.o \
	    cpu.o exit.o softirq.o resource.o \
	    sysctl.o sysctl_binary.o capability.o ptrace.o user.o \
	    signal.o sys.o kmod.o workqueue.o pid.o task_work.o \
	    extable.o params.o \
	    kthread.o sys_ni.o nsproxy.o \
	    notifier.o ksysfs.o cred.o reboot.o \
	    async.o range.o groups.o smpboot.o

#ifdef CONFIG_FUNCTION_TRACER
# Do not trace debug files and internal ftrace files
#CFLAGS_REMOVE_cgroup-debug.o = $(CC_FLAGS_FTRACE)
#CFLAGS_REMOVE_irq_work.o = $(CC_FLAGS_FTRACE)
#endif

# cond_syscall is currently not LTO compatible
#CFLAGS_sys_ni.o = $(DISABLE_LTO)

#obj-y += sched/
obj-y += sched/core.o sched/loadavg.o sched/clock.o sched/cputime.o #v4.2 proc > loadavg
obj-y += sched/idle_task.o sched/fair.o sched/rt.o sched/deadline.o sched/stop_task.o
obj-y += sched/wait.o sched/completion.o sched/idle.o
obj-y += sched/cpupri.o sched/cpudeadline.o
obj-y += sched/auto_group.o
obj-y += sched/stats.o
obj-y += sched/debug.o
obj-y += sched/cpuacct.o

#obj-y += locking/
obj-y += locking/mutex.o locking/semaphore.o locking/rwsem.o

#ifdef CONFIG_FUNCTION_TRACER
#CFLAGS_REMOVE_lockdep.o = $(CC_FLAGS_FTRACE)
#CFLAGS_REMOVE_lockdep_proc.o = $(CC_FLAGS_FTRACE)
#CFLAGS_REMOVE_mutex-debug.o = $(CC_FLAGS_FTRACE)
#CFLAGS_REMOVE_rtmutex-debug.o = $(CC_FLAGS_FTRACE)
#endif

obj-y += locking/mutex-debug.o
obj-y += locking/lockdep.o
#ifeq ($(CONFIG_PROC_FS),y)
obj-y += locking/lockdep_proc.o
#endif
obj-y += locking/spinlock.o
obj-y += locking/osq_lock.o
obj-y += locking/lglock.o
obj-y += locking/spinlock.o
obj-y += locking/rtmutex.o
obj-y += locking/rtmutex-debug.o
#obj-y += locking/rtmutex-tester.o v4.3-rc
obj-y += locking/spinlock.o
obj-y += locking/spinlock_debug.o
obj-y += locking/rwsem-spinlock.o
obj-y += locking/rwsem-xadd.o
#obj-y += locking/percpu-rwsem.o v4.3-rc
obj-y += locking/qrwlock.o
obj-y += locking/locktorture.o

#obj-y += power/
obj-y				+= power/qos.o
obj-y		+= power/main.o
obj-y	+= power/console.o
obj-y		+= power/process.o
obj-y		+= power/suspend.o
obj-y	+= power/suspend_test.o
obj-y	+= power/hibernate.o power/snapshot.o power/swap.o power/user.o 
#del v4.2				   power/block_io.o
obj-y	+= power/autosleep.o
obj-y	+= power/wakelock.o

obj-y	+= power/poweroff.o

#obj-y += printk/
obj-y	= printk/printk.o
obj-y	+= printk/braille.o

#obj-y += irq/
obj-y := irq/irqdesc.o irq/handle.o irq/manage.o irq/spurious.o irq/resend.o irq/chip.o irq/dummychip.o irq/devres.o
obj-y += irq/generic-chip.o
obj-y += irq/autoprobe.o
obj-y += irq/irqdomain.o
obj-y += irq/proc.o
obj-y += irq/migration.o
obj-y += irq/pm.o
obj-y += irq/msi.o

#obj-y += rcu/
obj-y += rcu/update.o
obj-y += rcu/srcu.o
obj-y += rcu/rcutorture.o
obj-y += rcu/tree.o
#obj-y += rcu/tree.o
obj-y += rcu/tree_trace.o
obj-y += rcu/tiny.o

obj-y += livepatch/core.o

# kkkkkkkkkkkkkkkk
obj-y += kcmp.o
obj-y += freezer.o
obj-y += profile.o
obj-y += stacktrace.o
#obj-y += time/
obj-y += time/time.o time/timer.o time/hrtimer.o time/itimer.o time/posix-timers.o time/posix-cpu-timers.o
obj-y += time/timekeeping.o time/ntp.o time/clocksource.o time/jiffies.o time/timer_list.o
obj-y += time/timeconv.o time/timecounter.o time/posix-clock.o time/alarmtimer.o

obj-y		+= time/clockevents.o
obj-y		+= time/tick-common.o
#ifeq ($(CONFIG_GENERIC_CLOCKEVENTS_BROADCAST),y)
 obj-y						+= time/tick-broadcast.o
 obj-y			+= time/tick-broadcast-hrtimer.o
#endif
obj-y		+= time/sched_clock.o
obj-y			+= time/tick-oneshot.o
obj-y			+= time/tick-sched.o
obj-y			+= time/timer_stats.o
obj-y				+= time/timekeeping_debug.o
obj-y			+= time/test_udelay.o
# kkkk
obj-y += futex.o
#ifeq ($(CONFIG_COMPAT),y)
obj-y += futex_compat.o
#endif
obj-y += dma.o
obj-y += smp.o
#ifneq ($(CONFIG_SMP),y)
obj-y += up.o
#endif
obj-y += uid16.o
#obj-y += system_keyring.o v4.3-rc #system_certificates.o
obj-y += module.o
obj-y += module_signing.o
obj-y += kallsyms.o
obj-y += acct.o
obj-y += kexec_core.o
obj-y += kexec.o
obj-y += kexec_file.o
obj-y += backtracetest.o
obj-y += compat.o
obj-y += cgroup.o
obj-y += cgroup_freezer.o
obj-y += cgroup_pids.o
obj-y += cpuset.o
obj-y += utsname.o
obj-y += user_namespace.o
obj-y += pid_namespace.o
obj-y += configs.o
obj-y += stop_machine.o
obj-y += test_kprobes.o
obj-y += audit.o auditfilter.o
obj-y += auditsc.o
obj-y += audit_watch.o audit_fsnotify.o
obj-y += audit_tree.o

#obj-$(CONFIG_GCOV_KERNEL) += gcov/
obj-y := gcov/base.o gcov/fs.o
obj-y += gcov/gcc_3_4.o
obj-y += gcov/gcc_4_7.o
#obj-$(CONFIG_GCOV_KERNEL) += gcov/

obj-y += kprobes.o
#obj-$(CONFIG_KGDB) += debug/
obj-y += debug/debug_core.o debug/gdbstub.o
#obj-$(CONFIG_KGDB_KDB) += kdb/
obj-y := debug/kdb/kdb_io.o debug/kdb/kdb_main.o debug/kdb/kdb_support.o debug/kdb/kdb_bt.o debug/kdb/kdb_bp.o debug/kdb/kdb_debugger.o #debug/kdb/gen-kdb_cmds.o 
obj-y    += debug/kdb/kdb_keyboard.o


obj-y += hung_task.o
obj-y += watchdog.o
obj-y += seccomp.o
obj-y += relay.o
obj-y += utsname_sysctl.o
obj-y += delayacct.o
obj-y += taskstats.o tsacct.o
obj-y += tracepoint.o
obj-y += latencytop.o
obj-y += elfcore.o
obj-y += elfcore.o
obj-y += elfcore.o
#obj-$(CONFIG_FUNCTION_TRACER) += trace/
#obj-$(CONFIG_TRACING) += trace/
#obj-$(CONFIG_TRACE_CLOCK) += trace/
#obj-$(CONFIG_RING_BUFFER) += trace/
#obj-$(CONFIG_TRACEPOINTS) += trace/
obj-y += trace/trace_selftest_dynamic.o
obj-y += trace/trace_clock.o

#obj-y += trace/libftrace.o
obj-y += trace/ring_buffer.o
obj-y += trace/ring_buffer_benchmark.o

obj-y += trace/trace.o
obj-y += trace/trace_output.o
obj-y += trace/trace_seq.o
obj-y += trace/trace_stat.o
obj-y += trace/trace_printk.o
obj-y += trace/trace_sched_switch.o
obj-y += trace/trace_functions.o
obj-y += trace/trace_irqsoff.o
#obj-b += trace/trace_irqsoff.o
obj-y += trace/trace_sched_wakeup.o
obj-y += trace/trace_nop.o
obj-y += trace/trace_stack.o
obj-y += trace/trace_mmiotrace.o
obj-y += trace/trace_functions_graph.o
obj-y += trace/trace_branch.o
obj-y += trace/blktrace.o
#ifeq ($(CONFIG_BLOCK),y)
#obj-b += trace/blktrace.o
#endif
obj-y += trace/trace_events.o
obj-y += trace/trace_export.o
obj-y += trace/trace_syscalls.o
#ifeq ($(CONFIG_PERF_EVENTS),y)
obj-y += trace/trace_event_perf.o
#endif
obj-y += trace/trace_events_filter.o
obj-y += trace/trace_events_trigger.o
obj-y += trace/trace_kprobe.o
obj-y += trace/power-traces.o
#ifeq ($(CONFIG_PM),y)
obj-y += trace/rpm-traces.o
#endif
#ifeq ($(CONFIG_TRACING),y)
obj-y += trace/trace_kdb.o
#endif
obj-y += trace/trace_probe.o
obj-y += trace/trace_uprobe.o

obj-y += trace/trace_benchmark.o

obj-y := trace/ftrace.o



obj-y += irq_work.o
obj-y += cpu_pm.o
#obj-$(CONFIG_BPF) += bpf/
obj-y := bpf/core.o
obj-y += bpf/syscall.o bpf/verifier.o bpf/hashtab.o bpf/arraymap.o bpf/helpers.o
#ifdef CONFIG_TEST_BPF
#obj-y += bpf/test_stub.o
#endif

#obj-$(CONFIG_PERF_EVENTS) += events/
obj-y := events/core.o events/ring_buffer.o events/callchain.o

obj-y += events/hw_breakpoint.o
obj-y += events/uprobes.o


obj-y += user-return-notifier.o
obj-y += padata.o
obj-y += crash_dump.o
obj-y += jump_label.o
obj-y += context_tracking.o
obj-y += torture.o
obj-y += membarrier.o

obj-y += memremap.o


obj-b = task_work.o
kernel.ko : ple_build.o $(obj-y)
	cc $(LINUXINCLUDE) $(USERINCLUDE) -l-y1.ko -l-y2.ko $@ $<

%.c: %.o
	cc $@ $<