execve_hook/Makefile

80 lines
1.7 KiB
Makefile
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
# 如果跳过检查,只需执行 make NO_CONFIG_CHECK=1
ifeq ($(NO_CONFIG_CHECK),1)
CFLAGS += -DNO_CONFIG_CHECK
endif
.PHONY: all clean debug hook rebuild pre_build
all: pre_build $(TARGET) $(HOOK_TARGET)
pre_build:
ifeq ($(DEBUG),1)
@echo "Building with debug flags..."
endif
ifeq ($(HOOK),1)
@echo "Building with hook flags..."
endif
ifeq ($(NO_CONFIG_CHECK),1)
@echo "Building with NO_CONFIG_CHECK defined..."
endif
$(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