Reorganize project structure: move sources to src/, update Makefile, add header symlinks

This commit is contained in:
jek committed 2026-01-15 17:13:15 +03:00
1 parent 9eab53179d
commit f2c10dcbf9
45 files changed
+1612 -1825

No files matched your search

+116 -50
View File
@@ -1,8 +1,15 @@
CC := gcc
CFLAGS := -Os -std=c99 -Wall -Wextra -D_ISOC99_SOURCE -DENABLE_TESTS -DETCP_DEBUG -DETCP_DEBUG_EXT
INCLUDES := -Itinycrypt/lib/include/ -Itinycrypt/lib/source/ -Itinycrypt/tests/include/ -I.
SRC_DIR := src
TEST_DIR := tests
INCLUDES := -I$(SRC_DIR) -Itinycrypt/lib/include/ -Itinycrypt/lib/source/ -Itinycrypt/tests/include/ -I.
# Директории для объектных файлов
OBJ_DIR := obj
SRC_OBJ_DIR := $(OBJ_DIR)/src
TEST_OBJ_DIR := $(OBJ_DIR)/tests
# Исходники tinycrypt
TINYCRYPT_SRCS := \
tinycrypt/lib/source/ecc.c \
tinycrypt/lib/source/ecc_dh.c \
@@ -13,65 +20,124 @@ TINYCRYPT_SRCS := \
tinycrypt/lib/source/ctr_mode.c \
tinycrypt/lib/source/ccm_mode.c
# Объектные файлы tinycrypt (остаются в своих директориях)
TINYCRYPT_OBJS := $(TINYCRYPT_SRCS:.c=.o)
SC_LIB_OBJS := sc_lib.o
UASYNC_OBJS := u_async.o timeout_heap.o
PN_OBJS := pkt_normalizer.o settings.o
LL_QUEUE_OBJS := ll_queue.o
ETCP_OBJS := etcp.o
CONFIG_PARSER_OBJS := config_parser.o
TUN_IF_OBJS := tun_if.o
# Основные объектные файлы (будут в obj/src/)
SC_LIB_OBJS := $(SRC_OBJ_DIR)/sc_lib.o
UASYNC_OBJS := $(SRC_OBJ_DIR)/u_async.o $(SRC_OBJ_DIR)/timeout_heap.o
PN_OBJS := $(SRC_OBJ_DIR)/pkt_normalizer.o $(SRC_OBJ_DIR)/settings.o
LL_QUEUE_OBJS := $(SRC_OBJ_DIR)/ll_queue.o
ETCP_OBJS := $(SRC_OBJ_DIR)/etcp.o
CONFIG_PARSER_OBJS := $(SRC_OBJ_DIR)/config_parser.o
TUN_IF_OBJS := $(SRC_OBJ_DIR)/tun_if.o
CONNECTION_OBJS := $(SRC_OBJ_DIR)/connection.o
ROUTING_OBJS := $(SRC_OBJ_DIR)/routing.o
CONTROL_SOCKET_OBJS := $(SRC_OBJ_DIR)/control_socket.o
UTUN_OBJS := $(SRC_OBJ_DIR)/utun.o
all: utun $(TEST_DIR)/test_sc_lib $(TEST_DIR)/test_udp_secure $(TEST_DIR)/test_pkt_normalizer $(TEST_DIR)/test_etcp $(TEST_DIR)/test_etcp_stress $(TEST_DIR)/test_etcp_simple $(TEST_DIR)/test_connection $(TEST_DIR)/test_connection_stress $(TEST_DIR)/test_new_features $(TEST_DIR)/test_utun_integration $(TEST_DIR)/test_utun_fork
# Тестовые объектные файлы (будут в obj/tests/)
TEST_PKT_NORMALIZER_OBJS := $(TEST_OBJ_DIR)/test_pkt_normalizer.o
TEST_ETCP_OBJS := $(TEST_OBJ_DIR)/test_etcp.o
TEST_ETCP_STRESS_OBJS := $(TEST_OBJ_DIR)/test_etcp_stress.o
TEST_ETCP_SIMPLE_OBJS := $(TEST_OBJ_DIR)/test_etcp_simple.o
TEST_CONNECTION_OBJS := $(TEST_OBJ_DIR)/test_connection.o
TEST_CONNECTION_STRESS_OBJS := $(TEST_OBJ_DIR)/test_connection_stress.o
TEST_NEW_FEATURES_OBJS := $(TEST_OBJ_DIR)/test_new_features.o
TEST_SC_LIB_OBJS := $(TEST_OBJ_DIR)/test_sc_lib.o
TEST_UDP_SECURE_OBJS := $(TEST_OBJ_DIR)/test_udp_secure.o
TEST_UTUN_INTEGRATION_OBJS := $(TEST_OBJ_DIR)/test_utun_integration.o
TEST_UTUN_FORK_OBJS := $(TEST_OBJ_DIR)/test_utun_fork.o
SIMPLE_UASYNC_OBJS := $(TEST_OBJ_DIR)/simple_uasync.o
$(TEST_DIR)/test_pkt_normalizer: $(TEST_DIR)/test_pkt_normalizer.o $(PN_OBJS) $(LL_QUEUE_OBJS) $(UASYNC_OBJS)
$(CC) $(CFLAGS) $(INCLUDES) -o $@ $^
# Основная цель
all: utun \
$(TEST_DIR)/test_sc_lib \
$(TEST_DIR)/test_udp_secure \
$(TEST_DIR)/test_pkt_normalizer \
$(TEST_DIR)/test_etcp \
$(TEST_DIR)/test_etcp_stress \
$(TEST_DIR)/test_etcp_simple \
$(TEST_DIR)/test_connection \
$(TEST_DIR)/test_connection_stress \
$(TEST_DIR)/test_new_features \
$(TEST_DIR)/test_utun_integration \
$(TEST_DIR)/test_utun_fork
$(TEST_DIR)/test_etcp: $(TEST_DIR)/test_etcp.o $(ETCP_OBJS) $(LL_QUEUE_OBJS) $(UASYNC_OBJS)
$(CC) $(CFLAGS) $(INCLUDES) -o $@ $^
# Создание директорий
$(OBJ_DIR):
mkdir -p $(OBJ_DIR)
$(TEST_DIR)/test_etcp_stress: $(TEST_DIR)/test_etcp_stress.o $(ETCP_OBJS) $(LL_QUEUE_OBJS) $(TEST_DIR)/simple_uasync.o
$(CC) $(CFLAGS) $(INCLUDES) -o $@ $^
$(SRC_OBJ_DIR): $(OBJ_DIR)
mkdir -p $(SRC_OBJ_DIR)
$(TEST_DIR)/test_etcp_simple: $(TEST_DIR)/test_etcp_simple.o $(ETCP_OBJS) $(LL_QUEUE_OBJS) $(TEST_DIR)/simple_uasync.o
$(CC) $(CFLAGS) $(INCLUDES) -o $@ $^
$(TEST_OBJ_DIR): $(OBJ_DIR)
mkdir -p $(TEST_OBJ_DIR)
$(TEST_DIR)/test_connection: $(TEST_DIR)/test_connection.o connection.o $(ETCP_OBJS) $(PN_OBJS) $(LL_QUEUE_OBJS) $(UASYNC_OBJS) $(SC_LIB_OBJS) $(TINYCRYPT_OBJS)
$(CC) $(CFLAGS) $(INCLUDES) -o $@ $^
$(TEST_DIR)/test_connection_stress: $(TEST_DIR)/test_connection_stress.o connection.o $(ETCP_OBJS) $(PN_OBJS) $(LL_QUEUE_OBJS) $(UASYNC_OBJS) $(SC_LIB_OBJS) $(TINYCRYPT_OBJS)
$(CC) $(CFLAGS) $(INCLUDES) -o $@ $^
$(TEST_DIR)/test_new_features: $(TEST_DIR)/test_new_features.o $(ETCP_OBJS) $(PN_OBJS) $(LL_QUEUE_OBJS) $(UASYNC_OBJS) connection.o $(SC_LIB_OBJS) $(TINYCRYPT_OBJS)
$(CC) $(CFLAGS) $(INCLUDES) -o $@ $^
utun: utun.o $(CONFIG_PARSER_OBJS) $(TUN_IF_OBJS) connection.o routing.o control_socket.o $(ETCP_OBJS) $(PN_OBJS) $(LL_QUEUE_OBJS) $(UASYNC_OBJS) $(SC_LIB_OBJS) $(TINYCRYPT_OBJS)
$(CC) $(CFLAGS) $(INCLUDES) -o $@ $^
$(TEST_DIR)/test_sc_lib: $(TEST_DIR)/test_sc_lib.o $(SC_LIB_OBJS) $(TINYCRYPT_OBJS)
$(CC) $(CFLAGS) $(INCLUDES) -o $@ $^
$(TEST_DIR)/test_udp_secure: $(TEST_DIR)/test_udp_secure.o $(SC_LIB_OBJS) $(UASYNC_OBJS) $(TINYCRYPT_OBJS)
$(CC) $(CFLAGS) $(INCLUDES) -o $@ $^
$(TEST_DIR)/test_utun_integration: $(TEST_DIR)/test_utun_integration.o $(CONFIG_PARSER_OBJS) $(TUN_IF_OBJS) connection.o $(ETCP_OBJS) $(PN_OBJS) $(LL_QUEUE_OBJS) $(UASYNC_OBJS) $(SC_LIB_OBJS) $(TINYCRYPT_OBJS)
$(CC) $(CFLAGS) $(INCLUDES) -o $@ $^
$(TEST_DIR)/test_utun_fork: $(TEST_DIR)/test_utun_fork.o $(SC_LIB_OBJS) $(TINYCRYPT_OBJS)
$(CC) $(CFLAGS) $(INCLUDES) -o $@ $^
$(TEST_DIR)/test_pkt_normalizer: $(TEST_DIR)/test_pkt_normalizer.o $(PN_OBJS) $(LL_QUEUE_OBJS) $(UASYNC_OBJS)
$(CC) $(CFLAGS) $(INCLUDES) -o $@ $^
$(TEST_DIR)/test_etcp: $(TEST_DIR)/test_etcp.o $(ETCP_OBJS) $(LL_QUEUE_OBJS) $(UASYNC_OBJS)
$(CC) $(CFLAGS) $(INCLUDES) -o $@ $^
%.o: %.c
# Правило компиляции для исходников из src/
$(SRC_OBJ_DIR)/%.o: $(SRC_DIR)/%.c | $(SRC_OBJ_DIR)
$(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@
# Правило компиляции для тестовых .c файлов
$(TEST_OBJ_DIR)/%.o: $(TEST_DIR)/%.c | $(TEST_OBJ_DIR)
$(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@
# Правило компиляции для tinycrypt (оставляем в оригинальных директориях)
tinycrypt/lib/source/%.o: tinycrypt/lib/source/%.c
$(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@
# Правила линковки
utun: $(UTUN_OBJS) $(CONFIG_PARSER_OBJS) $(TUN_IF_OBJS) $(CONNECTION_OBJS) $(ROUTING_OBJS) $(CONTROL_SOCKET_OBJS) $(ETCP_OBJS) $(PN_OBJS) $(LL_QUEUE_OBJS) $(UASYNC_OBJS) $(SC_LIB_OBJS) $(TINYCRYPT_OBJS)
$(CC) $(CFLAGS) $(INCLUDES) -o $@ $^
$(TEST_DIR)/test_pkt_normalizer: $(TEST_PKT_NORMALIZER_OBJS) $(PN_OBJS) $(LL_QUEUE_OBJS) $(UASYNC_OBJS)
$(CC) $(CFLAGS) $(INCLUDES) -o $@ $^
$(TEST_DIR)/test_etcp: $(TEST_ETCP_OBJS) $(ETCP_OBJS) $(LL_QUEUE_OBJS) $(UASYNC_OBJS)
$(CC) $(CFLAGS) $(INCLUDES) -o $@ $^
$(TEST_DIR)/test_etcp_stress: $(TEST_ETCP_STRESS_OBJS) $(ETCP_OBJS) $(LL_QUEUE_OBJS) $(SIMPLE_UASYNC_OBJS)
$(CC) $(CFLAGS) $(INCLUDES) -o $@ $^
$(TEST_DIR)/test_etcp_simple: $(TEST_ETCP_SIMPLE_OBJS) $(ETCP_OBJS) $(LL_QUEUE_OBJS) $(SIMPLE_UASYNC_OBJS)
$(CC) $(CFLAGS) $(INCLUDES) -o $@ $^
$(TEST_DIR)/test_connection: $(TEST_CONNECTION_OBJS) $(CONNECTION_OBJS) $(ETCP_OBJS) $(PN_OBJS) $(LL_QUEUE_OBJS) $(UASYNC_OBJS) $(SC_LIB_OBJS) $(TINYCRYPT_OBJS)
$(CC) $(CFLAGS) $(INCLUDES) -o $@ $^
$(TEST_DIR)/test_connection_stress: $(TEST_CONNECTION_STRESS_OBJS) $(CONNECTION_OBJS) $(ETCP_OBJS) $(PN_OBJS) $(LL_QUEUE_OBJS) $(UASYNC_OBJS) $(SC_LIB_OBJS) $(TINYCRYPT_OBJS)
$(CC) $(CFLAGS) $(INCLUDES) -o $@ $^
$(TEST_DIR)/test_new_features: $(TEST_NEW_FEATURES_OBJS) $(ETCP_OBJS) $(PN_OBJS) $(LL_QUEUE_OBJS) $(UASYNC_OBJS) $(CONNECTION_OBJS) $(SC_LIB_OBJS) $(TINYCRYPT_OBJS)
$(CC) $(CFLAGS) $(INCLUDES) -o $@ $^
$(TEST_DIR)/test_sc_lib: $(TEST_SC_LIB_OBJS) $(SC_LIB_OBJS) $(TINYCRYPT_OBJS)
$(CC) $(CFLAGS) $(INCLUDES) -o $@ $^
$(TEST_DIR)/test_udp_secure: $(TEST_UDP_SECURE_OBJS) $(SC_LIB_OBJS) $(UASYNC_OBJS) $(TINYCRYPT_OBJS)
$(CC) $(CFLAGS) $(INCLUDES) -o $@ $^
$(TEST_DIR)/test_utun_integration: $(TEST_UTUN_INTEGRATION_OBJS) $(CONFIG_PARSER_OBJS) $(TUN_IF_OBJS) $(CONNECTION_OBJS) $(ETCP_OBJS) $(PN_OBJS) $(LL_QUEUE_OBJS) $(UASYNC_OBJS) $(SC_LIB_OBJS) $(TINYCRYPT_OBJS)
$(CC) $(CFLAGS) $(INCLUDES) -o $@ $^
$(TEST_DIR)/test_utun_fork: $(TEST_UTUN_FORK_OBJS) $(SC_LIB_OBJS) $(TINYCRYPT_OBJS)
$(CC) $(CFLAGS) $(INCLUDES) -o $@ $^
# Очистка
clean:
rm -f utun $(TEST_DIR)/test_sc_lib $(TEST_DIR)/test_udp_secure $(TEST_DIR)/test_pkt_normalizer $(TEST_DIR)/test_etcp $(TEST_DIR)/test_etcp_stress $(TEST_DIR)/test_etcp_simple $(TEST_DIR)/test_connection $(TEST_DIR)/test_connection_stress $(TEST_DIR)/test_new_features $(TEST_DIR)/test_utun_integration $(TEST_DIR)/test_utun_fork \
*.o tinycrypt/lib/source/*.o $(TEST_DIR)/*.o
rm -rf $(OBJ_DIR)
rm -f utun \
$(TEST_DIR)/test_sc_lib \
$(TEST_DIR)/test_udp_secure \
$(TEST_DIR)/test_pkt_normalizer \
$(TEST_DIR)/test_etcp \
$(TEST_DIR)/test_etcp_stress \
$(TEST_DIR)/test_etcp_simple \
$(TEST_DIR)/test_connection \
$(TEST_DIR)/test_connection_stress \
$(TEST_DIR)/test_new_features \
$(TEST_DIR)/test_utun_integration \
$(TEST_DIR)/test_utun_fork
rm -f *.o $(TEST_DIR)/*.o tinycrypt/lib/source/*.o
.PHONY: all clean