CC := gcc CFLAGS := -Wall TDIR := $(PWD)/testcase PROGRAMS := helloworld hptest userstack USTACK = userstack UDIR = $(PWD)/source/uapi MDIR := $(PWD)/source KDIR := /usr/src/kernels/5.17.15-1.el8.x86_64/ # 内核源码目录 BUILD_DIR := $(PWD)/build OUTPUT_DIR = $(PWD)/build all: $(addprefix $(OUTPUT_DIR)/, $(PROGRAMS)) module ucli # Pattern rule for helloworld and HPTEST $(OUTPUT_DIR)/%: $(TDIR)/%.c mkdir -p $(@D) $(CC) $(CFLAGS) -o $@ $< $(UDIR)/monitor_user.c # Specific rule for USTACK $(OUTPUT_DIR)/$(USTACK): $(TDIR)/$(USTACK).c mkdir -p $(@D) $(CC) -g $(CFLAGS) -o $@ $< -lunwind -lunwind-x86_64 # $(SPID): $(TDIR)/stack-pid.c # mkdir -p $(OUTPUT_DIR) # $(CC) $(CFLAGS) -o $(OUTPUT_DIR)/$(SPID) $(TDIR)/stack-pid.c -lunwind -lunwind-x86_64 -lunwind-ptrace ucli: $(MAKE) -C $(PWD)/source/ucli OUTPUT_DIR=$(OUTPUT_DIR) module: make -C $(KDIR) M=$(MDIR) modules clean: rm -f $(OUTPUT_DIR)/* make -C $(KDIR) M=$(MDIR) clean make -C $(PWD)/source/ucli clean