62 lines
1.3 KiB
Makefile
62 lines
1.3 KiB
Makefile
CC = gcc
|
||
CFLAGS = -shared -fPIC -Wall -Wextra -Werror -fno-strict-aliasing -fPIC -fno-omit-frame-pointer -fno-stack-protector -Wl,-z,relro,-z,now
|
||
LDFLAGS = -ldl
|
||
HOOK_LDFLAGS = -ldl -pthread
|
||
|
||
TARGET_NAME = intercept.so
|
||
HOOK_NAME = hook_write.so
|
||
|
||
BUILD_DIR = build
|
||
SRC_DIR = src
|
||
|
||
SRC = $(wildcard $(SRC_DIR)/*.c)
|
||
SRC := $(filter-out $(SRC_DIR)/hook_write.c, $(SRC)) # 排除 hook_write.c
|
||
|
||
OBJ = $(patsubst $(SRC_DIR)/%.c,$(BUILD_DIR)/%.o,$(SRC))
|
||
TARGET = $(BUILD_DIR)/$(TARGET_NAME)
|
||
|
||
HOOK_SRC = $(SRC_DIR)/hook_write.c
|
||
HOOK_OBJ = $(BUILD_DIR)/hook_write.o
|
||
HOOK_TARGET = $(BUILD_DIR)/$(HOOK_NAME)
|
||
|
||
# 如果需要开启 debug,只需执行 make DEBUG=1
|
||
ifeq ($(DEBUG),1)
|
||
CFLAGS += -DDEBUG -g
|
||
endif
|
||
|
||
# 如果需要开启 hook,只需执行 make HOOK=1
|
||
ifeq ($(HOOK),1)
|
||
CFLAGS += -DHOOK
|
||
endif
|
||
|
||
all: $(TARGET) $(HOOK_TARGET)
|
||
|
||
$(BUILD_DIR)/%.o: $(SRC_DIR)/%.c
|
||
@mkdir -p $(BUILD_DIR)
|
||
$(CC) $(CFLAGS) -c $< -o $@
|
||
|
||
$(TARGET): $(OBJ)
|
||
@mkdir -p $(BUILD_DIR)
|
||
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
||
|
||
$(HOOK_TARGET): $(HOOK_OBJ)
|
||
@mkdir -p $(BUILD_DIR)
|
||
$(CC) $(CFLAGS) -Wno-error=unused-result -o $@ $^ $(HOOK_LDFLAGS)
|
||
|
||
$(HOOK_OBJ): $(HOOK_SRC)
|
||
@mkdir -p $(BUILD_DIR)
|
||
$(CC) $(CFLAGS) -Wno-error=unused-result -c $< -o $@
|
||
|
||
clean:
|
||
rm -rf $(BUILD_DIR)
|
||
|
||
debug:
|
||
rm -rf $(BUILD_DIR)
|
||
$(MAKE) DEBUG=1
|
||
|
||
hook:
|
||
rm -rf $(BUILD_DIR)
|
||
$(MAKE) HOOK=1
|
||
|
||
rebuild: clean all
|