# SPDX-License-Identifier: LGPL-2.1

#
# The samples are pulled out of the examples used in the man pages
# that are located in the Documentation directory.
#

include $(src)/scripts/utils.mk

EXAMPLES :=
EXAMPLES += dynevents
EXAMPLES += kprobes
EXAMPLES += eprobes
EXAMPLES += uprobes
EXAMPLES += synth
EXAMPLES += error
EXAMPLES += filter
EXAMPLES += function-filter
EXAMPLES += hist
EXAMPLES += hist-cont
EXAMPLES += tracer
EXAMPLES += stream
EXAMPLES += instances-affinity
EXAMPLES += cpu
EXAMPLES += guest
EXAMPLES += cpu-buf
EXAMPLES += instances-stat
EXAMPLES += instances-subbuf
EXAMPLES += cpu-map

TARGETS :=
TARGETS += sqlhist
TARGETS += $(EXAMPLES)

sdir := $(obj)/bin

TARGETS := $(patsubst %,$(sdir)/%,$(TARGETS))

all: $(TARGETS)

$(bdir)/sqlhist.c: $(src)/Documentation/libtracefs-sql.txt
	$(call extract_example,$<,$@)

$(bdir)/%.c: ../Documentation/libtracefs-%.txt
	$(call extract_example,$<,$@)

$(sdir):
	@mkdir -p $(sdir)

sqlhist: $(sdir)/sqlhist

$(TARGETS): $(sdir)

# sqlhist is unique and stands on its own
$(sdir)/sqlhist: $(bdir)/sqlhist.c $(LIBTRACEFS_STATIC)
	$(call do_sample_build,$@,$<)

$(sdir)/%: $(bdir)/%.o
	$(call do_sample_build,$@,$<)

$(EXAMPLES): $(patsubst %,$(sdir)/%,$(TARGETS))

## The intermediate files get removed by Make.
## To examine the .c files created by one of the man pages,
## uncomment the below, and replace the XX with the exec example
## name, and the file will not be discarded by make.
#
# $(bdir)/XX.o: $(bdir)/XX.c
#	$(CC) -g -Wall $(CFLAGS) -c -o $@ $^ -I../include/ $(LIBTRACEEVENT_INCLUDES)
$(bdir)/cpu-map.o: $(bdir)/cpu-map.c
	$(CC) -g -Wall $(CFLAGS) -c -o $@ $^ -I../include/ $(LIBTRACEEVENT_INCLUDES)
$(bdir)/kprobes.o: $(bdir)/kprobes.c
	$(CC) -g -Wall $(CFLAGS) -c -o $@ $^ -I../include/ $(LIBTRACEEVENT_INCLUDES)

$(bdir)/%.o: $(bdir)/%.c
	$(call do_sample_obj,$@,$^)

$(bdir)/XX.o: $(bdir)/hist.c
	$(CC) -g -Wall $(CFLAGS) -c -o $@ $^ -I../include/ $(LIBTRACEEVENT_INCLUDES)

clean:
	$(Q)$(call do_clean,$(sdir)/* $(bdir)/sqlhist.c $(bdir)/sqlhist.o)

.PHONY: sqlhist
