1include $(src)/scripts/utils.mk 2 3bdir:=$(obj)/lib/trace-cmd/plugins 4 5PLUGIN_OBJS = 6 7PLUGIN_OBJS := $(PLUGIN_OBJS:%.o=$(bdir)/%.o) 8PLUGIN_BUILD := $(PLUGIN_OBJS:$(bdir)/%.o=$(bdir)/%.so) 9 10PLUGINS := $(PLUGIN_BUILD) 11 12DEPS := $(PLUGIN_OBJS:$(bdir)/%.o=$(bdir)/.%.d) 13 14all: $(PLUGINS) 15 16$(bdir): 17 @mkdir -p $(bdir) 18 19$(PLUGIN_OBJS): | $(bdir) 20$(DEPS): | $(bdir) 21 22$(PLUGIN_OBJS): $(bdir)/%.o : %.c 23 $(Q)$(do_compile_plugin_obj) 24 25$(PLUGIN_BUILD): $(bdir)/%.so: $(bdir)/%.o 26 $(Q)$(do_plugin_build) 27 28$(DEPS): $(bdir)/.%.d: %.c 29 $(Q)$(CC) -M -MT $(bdir)/$*.o $(CPPFLAGS) $(CFLAGS) $< > $@ 30 31$(PLUGIN_OBJS): $(bdir)/%.o : $(bdir)/.%.d 32 33PLUGINS_INSTALL = $(subst .so,.install,$(PLUGINS)) 34 35$(PLUGINS_INSTALL): $(bdir)/%.install : $(bdir)/%.so force 36 $(Q)$(call do_install_data,$<,$(plugin_tracecmd_dir_SQ)) 37 38install_plugins: $(PLUGINS_INSTALL) 39 40# The following targets are necessary to trigger a rebuild when 41# $(PLUGIN_DIR_TRACECMD) change. Without them, a full clean build would 42# necessary in order to get the binaries updated. 43 44$(bdir)/tracecmd_plugin_dir: $(bdir) force 45 $(Q)$(N)$(call update_dir, 'PLUGIN_DIR_TRACECMD=$(PLUGIN_DIR_TRACECMD)') 46 47dep_includes := $(wildcard $(DEPS)) 48 49ifneq ($(dep_includes),) 50 include $(dep_includes) 51endif 52 53clean: 54 $(RM) -f $(bdir)/*.a $(bdir)/*.so $(bdir)/*.o $(bdir)/.*.d\ 55 $(bdir)/tracecmd_plugin_dir 56 57force: 58.PHONY: clean force 59