Files
multitls/Makefile
huanglinhuan dbb413b49d first commit
2025-10-14 20:06:34 +08:00

134 lines
3.9 KiB
Makefile
Executable File
Raw Permalink 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
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