diff --git a/Makefile b/Makefile index 6f20816..0656fad 100644 --- a/Makefile +++ b/Makefile @@ -1,48 +1,39 @@ -CC = gcc -CFLAGS = -Wall +CC := gcc +CFLAGS := -Wall -PROG = helloworld -HPTEST = hptest +TDIR := $(PWD)/testcase +PROGRAMS := helloworld hptest userstack USTACK = userstack -SPID = stack-pid UDIR = $(PWD)/source/uapi MDIR := $(PWD)/source KDIR := /usr/src/kernels/5.17.15-1.el8.x86_64/ # 内核源码目录 -TDIR := $(PWD)/testcase BUILD_DIR := $(PWD)/build OUTPUT_DIR = $(PWD)/build +all: $(addprefix $(OUTPUT_DIR)/, $(PROGRAMS)) module ucli -# KMOD = variable_monitor -# obj-m := kernel/$(KMOD).o -# $(KMOD)-objs := kernel/monitor_kernel.o +# Pattern rule for helloworld and HPTEST +$(OUTPUT_DIR)/%: $(TDIR)/%.c + mkdir -p $(@D) + $(CC) $(CFLAGS) -o $@ $< $(UDIR)/monitor_user.c -all: $(PROG) $(HPTEST) $(USTACK) $(SPID) module +# Specific rule for USTACK +$(OUTPUT_DIR)/$(USTACK): $(TDIR)/$(USTACK).c + mkdir -p $(@D) + $(CC) -g $(CFLAGS) -o $@ $< -lunwind -lunwind-x86_64 -$(PROG): $(TDIR)/helloworld.c - mkdir -p $(OUTPUT_DIR) - $(CC) $(CFLAGS) -o $(OUTPUT_DIR)/$(PROG) $(TDIR)/helloworld.c $(UDIR)/monitor_user.c +# $(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 -$(HPTEST): $(TDIR)/hptest.c - mkdir -p $(OUTPUT_DIR) - $(CC) $(CFLAGS) -o $(OUTPUT_DIR)/$(HPTEST) $(TDIR)/hptest.c $(UDIR)/monitor_user.c - -$(USTACK): $(TDIR)/userstack.c - mkdir -p $(OUTPUT_DIR) - $(CC) -g $(CFLAGS) -o $(OUTPUT_DIR)/$(USTACK) $(TDIR)/userstack.c -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 -# module: -# make -C linux-5.17.15 M=$(PWD)/kernel modules - clean: rm -f $(OUTPUT_DIR)/* make -C $(KDIR) M=$(MDIR) clean \ No newline at end of file diff --git a/source/ucli/Makefile b/source/ucli/Makefile index fa87363..b94ef76 100644 --- a/source/ucli/Makefile +++ b/source/ucli/Makefile @@ -1,3 +1,4 @@ +OUTPUT_DIR ?= . TARGET_EXE=ucli SOURCES=ucli.cc ucli-lib.cc unwind.cc symbol.cc accessors.cc elf.cc OBJECTS=$(SOURCES:.cc=.o) @@ -10,7 +11,7 @@ LIBS=-lunwind-x86_64 -lunwind -lelf $(CXX) $(CFLAGS) $(INCLUDES) -c $< -o $@ $(TARGET_EXE): $(OBJECTS) - $(CXX) $^ $(LIBS) -o $@ + $(CXX) $^ $(LIBS) -o $(OUTPUT_DIR)/$@ clean: $(RM) $(TARGET_EXE) $(OBJECTS) \ No newline at end of file