# TNT - TNT's Not Tunnel # High-performance terminal chat server written in C CC = gcc CFLAGS = -Wall -Wextra -O2 -std=c11 -D_XOPEN_SOURCE=700 LDFLAGS = -pthread INCLUDES = -Iinclude SRC_DIR = src INC_DIR = include OBJ_DIR = obj SOURCES = $(wildcard $(SRC_DIR)/*.c) OBJECTS = $(SOURCES:$(SRC_DIR)/%.c=$(OBJ_DIR)/%.o) TARGET = tnt .PHONY: all clean install uninstall all: $(TARGET) $(TARGET): $(OBJECTS) $(CC) $(OBJECTS) -o $@ $(LDFLAGS) @echo "Build complete: $(TARGET)" $(OBJ_DIR)/%.o: $(SRC_DIR)/%.c | $(OBJ_DIR) $(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@ $(OBJ_DIR): mkdir -p $(OBJ_DIR) clean: rm -rf $(OBJ_DIR) $(TARGET) @echo "Clean complete" install: $(TARGET) install -d $(DESTDIR)/usr/local/bin install -m 755 $(TARGET) $(DESTDIR)/usr/local/bin/ uninstall: rm -f $(DESTDIR)/usr/local/bin/$(TARGET) # Development targets debug: CFLAGS += -g -DDEBUG debug: clean $(TARGET) release: CFLAGS += -O3 -DNDEBUG release: clean $(TARGET) strip $(TARGET) # Show build info info: @echo "Compiler: $(CC)" @echo "Flags: $(CFLAGS)" @echo "Sources: $(SOURCES)" @echo "Objects: $(OBJECTS)"