134 lines
3.9 KiB
Makefile
Executable File
134 lines
3.9 KiB
Makefile
Executable File
# 支持通过参数传入CC编译器,默认使用gcc
|
||
CC ?= gcc
|
||
CFLAGS = -Wall -Wextra -std=c99 -O2
|
||
LDFLAGS = -lssl -lcrypto -lpthread
|
||
|
||
# 目标文件
|
||
SERVER_TARGET = tls_server
|
||
CLIENT_TARGET = tls_client
|
||
TEST_TARGET = test_long_message
|
||
SERVER_SOURCE = tls_server.c
|
||
CLIENT_SOURCE = tls_client.c
|
||
TEST_SOURCE = test_long_message.c
|
||
|
||
# 默认目标
|
||
all: $(SERVER_TARGET) $(CLIENT_TARGET) $(TEST_TARGET)
|
||
|
||
# 编译服务器
|
||
$(SERVER_TARGET): $(SERVER_SOURCE)
|
||
$(CC) $(CFLAGS) -o $(SERVER_TARGET) $(SERVER_SOURCE) $(LDFLAGS)
|
||
|
||
# 编译客户端
|
||
$(CLIENT_TARGET): $(CLIENT_SOURCE)
|
||
$(CC) $(CFLAGS) -o $(CLIENT_TARGET) $(CLIENT_SOURCE) $(LDFLAGS)
|
||
|
||
# 编译测试程序
|
||
$(TEST_TARGET): $(TEST_SOURCE)
|
||
$(CC) $(CFLAGS) -o $(TEST_TARGET) $(TEST_SOURCE) -lssl -lcrypto
|
||
|
||
# 生成证书
|
||
cert:
|
||
chmod +x generate_cert.sh
|
||
./generate_cert.sh
|
||
|
||
# 运行服务器(默认端口8443)
|
||
run: $(SERVER_TARGET) cert
|
||
./$(SERVER_TARGET)
|
||
|
||
# 运行服务器(指定端口)
|
||
run-port: $(SERVER_TARGET) cert
|
||
@echo "请输入端口号:"
|
||
@read port; ./$(SERVER_TARGET) -p $$port
|
||
|
||
# 测试客户端
|
||
test: $(CLIENT_TARGET)
|
||
@echo "测试客户端,发送消息 'Hello World'"
|
||
./$(CLIENT_TARGET) -m "Hello World"
|
||
|
||
# 测试循环客户端
|
||
test-loop: $(CLIENT_TARGET)
|
||
@echo "测试循环客户端,发送5次消息,间隔2秒"
|
||
./$(CLIENT_TARGET) -m "Loop Test" -c 5 -i 2
|
||
|
||
# 测试TLS 1.2
|
||
test-tls12: $(CLIENT_TARGET)
|
||
@echo "测试TLS 1.2连接"
|
||
./$(CLIENT_TARGET) -m "TLS 1.2 Test" -t 1.2
|
||
|
||
# 测试TLS 1.3
|
||
test-tls13: $(CLIENT_TARGET)
|
||
@echo "测试TLS 1.3连接"
|
||
./$(CLIENT_TARGET) -m "TLS 1.3 Test" -t 1.3
|
||
|
||
# 测试TLS版本对比
|
||
test-tls-compare: $(CLIENT_TARGET)
|
||
@echo "测试TLS版本对比"
|
||
@echo "=== TLS 1.2 测试 ==="
|
||
./$(CLIENT_TARGET) -m "TLS 1.2" -t 1.2 -c 2 -i 1
|
||
@echo ""
|
||
@echo "=== TLS 1.3 测试 ==="
|
||
./$(CLIENT_TARGET) -m "TLS 1.3" -t 1.3 -c 2 -i 1
|
||
@echo ""
|
||
@echo "=== 自动协商测试 ==="
|
||
./$(CLIENT_TARGET) -m "Auto TLS" -t auto -c 2 -i 1
|
||
|
||
# 测试并发连接
|
||
test-concurrent: $(CLIENT_TARGET)
|
||
@echo "测试并发客户端连接"
|
||
@echo "启动2个并发客户端..."
|
||
./$(CLIENT_TARGET) -m "Concurrent 1" -c 1 &
|
||
./$(CLIENT_TARGET) -m "Concurrent 2" -c 1 &
|
||
wait
|
||
@echo "并发测试完成"
|
||
|
||
# 测试长消息
|
||
test-long: $(TEST_TARGET)
|
||
@echo "测试长消息,发送1000字符消息"
|
||
./$(TEST_TARGET) 1000
|
||
|
||
# 清理
|
||
clean:
|
||
rm -f $(SERVER_TARGET) $(CLIENT_TARGET) $(TEST_TARGET)
|
||
rm -rf cert/
|
||
|
||
# 安装依赖(Ubuntu/Debian)
|
||
install-deps:
|
||
sudo apt-get update
|
||
sudo apt-get install -y libssl-dev
|
||
|
||
# 安装依赖(CentOS/RHEL)
|
||
install-deps-centos:
|
||
sudo yum install -y openssl-devel
|
||
|
||
# 显示编译器信息
|
||
info:
|
||
@echo "当前编译器: $(CC)"
|
||
@echo "编译选项: $(CFLAGS)"
|
||
@echo "链接选项: $(LDFLAGS)"
|
||
|
||
# 帮助信息
|
||
help:
|
||
@echo "可用目标:"
|
||
@echo " all - 编译服务器、客户端和测试程序"
|
||
@echo " cert - 生成自签名证书"
|
||
@echo " run - 运行服务器(端口8443)"
|
||
@echo " run-port - 运行服务器(指定端口)"
|
||
@echo " test - 测试客户端连接"
|
||
@echo " test-loop - 测试循环客户端连接"
|
||
@echo " test-tls12 - 测试TLS 1.2连接"
|
||
@echo " test-tls13 - 测试TLS 1.3连接"
|
||
@echo " test-tls-compare - 测试TLS版本对比"
|
||
@echo " test-concurrent - 测试并发客户端连接"
|
||
@echo " test-long - 测试长消息发送"
|
||
@echo " clean - 清理生成的文件"
|
||
@echo " install-deps - 安装依赖(Ubuntu/Debian)"
|
||
@echo " info - 显示编译器信息"
|
||
@echo " help - 显示此帮助信息"
|
||
@echo ""
|
||
@echo "编译器参数:"
|
||
@echo " CC=clang make all - 使用clang编译器"
|
||
@echo " CC=gcc make all - 使用gcc编译器(默认)"
|
||
@echo " CC=cc make all - 使用系统默认编译器"
|
||
|
||
.PHONY: all cert run run-port clean install-deps install-deps-centos info help
|