makefile: merge ucli

This commit is contained in:
zy
2023-11-27 02:56:12 -05:00
parent 49fb0b5f2e
commit c5ea8285d7
2 changed files with 20 additions and 28 deletions

View File

@@ -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

View File

@@ -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)