| include $(src)/scripts/utils.mk |
| |
| bdir:=$(obj)/plugins |
| |
| PLUGIN_OBJS = |
| PLUGIN_OBJS += plugin_jbd2.o |
| PLUGIN_OBJS += plugin_hrtimer.o |
| PLUGIN_OBJS += plugin_kmem.o |
| PLUGIN_OBJS += plugin_kvm.o |
| PLUGIN_OBJS += plugin_mac80211.o |
| PLUGIN_OBJS += plugin_sched_switch.o |
| PLUGIN_OBJS += plugin_function.o |
| PLUGIN_OBJS += plugin_xen.o |
| PLUGIN_OBJS += plugin_scsi.o |
| PLUGIN_OBJS += plugin_cfg80211.o |
| PLUGIN_OBJS += plugin_blk.o |
| PLUGIN_OBJS += plugin_tlb.o |
| |
| PLUGIN_OBJS := $(PLUGIN_OBJS:%.o=$(bdir)/%.o) |
| PLUGINS := $(PLUGIN_OBJS:$(bdir)/%.o=$(bdir)/%.so) |
| DEPS := $(PLUGIN_OBJS:$(bdir)/%.o=$(bdir)/.%.d) |
| |
| all: $(PLUGINS) |
| |
| $(bdir): |
| @mkdir -p $(bdir) |
| |
| $(PLUGIN_OBJS): | $(bdir) |
| $(DEPS): | $(bdir) |
| |
| $(PLUGIN_OBJS): $(bdir)/%.o : %.c |
| $(Q)$(do_compile_plugin_obj) |
| |
| $(PLUGINS): $(bdir)/%.so: $(bdir)/%.o |
| $(Q)$(do_plugin_build) |
| |
| $(DEPS): $(bdir)/.%.d: %.c |
| $(Q)$(CC) -M $(CPPFLAGS) $(CFLAGS) $< > $@ |
| |
| $(PLUGIN_OBJS): $(bdir)/%.o : $(bdir)/.%.d |
| |
| $(bdir)/plugin_python.o: $(bdir)/%.o : %.c $(bdir)/trace_python_dir |
| $(Q)$(do_compile_python_plugin_obj) |
| |
| $(bdir)/plugin_python.so: $(bdir)/%.so: $(bdir)/%.o |
| $(Q)$(do_python_plugin_build) |
| |
| PLUGINS_INSTALL = $(subst .so,.install,$(PLUGINS)) |
| |
| $(PLUGINS_INSTALL): $(bdir)/%.install : $(bdir)/%.so force |
| $(Q)$(call do_install_data,$<,$(plugin_dir_SQ)) |
| |
| install_plugins: $(PLUGINS_INSTALL) |
| |
| # The following targets are necessary to trigger a rebuild when $(PLUGIN_DIR) |
| # and $(PYTHON_DIR) change. Without them, a full clean build would necessary |
| # in order to get the binaries updated. |
| |
| $(bdir)/trace_plugin_dir: $(bdir) force |
| $(Q)$(N)$(call update_dir, 'PLUGIN_DIR=$(PLUGIN_DIR)') |
| |
| $(bdir)/trace_python_dir: $(bdir) force |
| $(Q)$(N)$(call update_dir, 'PYTHON_DIR=$(PYTHON_DIR)') |
| |
| |
| dep_includes := $(wildcard $(DEPS)) |
| |
| ifneq ($(dep_includes),) |
| include $(dep_includes) |
| endif |
| |
| clean: |
| $(RM) -f $(bdir)/*.a $(bdir)/*.so $(bdir)/*.o $(bdir)/.*.d $(bdir)/trace_plugin_dir $(bdir)/trace_python_dir |
| |
| force: |
| .PHONY: clean force |