summaryrefslogtreecommitdiff
path: root/Makefile
blob: 10a5320ba6eca57a984f68a21077ca3db0e2d179 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
CC := gcc
CFLAGS := -Wall

SPID = stack-pid
TOOLDIR := $(PWD)/tools

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 $(SPID)

# 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
	$(CC) -g -O2 $(CFLAGS) -o $@ $< -lpthread

$(SPID): $(TOOLDIR)/stack-pid.c
	$(CC) $(CFLAGS) -o $(OUTPUT_DIR)/$(SPID) $(TOOLDIR)/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