futriis/Makefile

96 lines
3.1 KiB
Makefile

# /futriis/Makefile
# Makefile для сборки проекта futriis на Unix-системах (Solaris, OpenIndiana, Linux)
.PHONY: all clean deps build build-server run run-server test install help
# Переменные
BINARY_NAME=futriis
SERVER_BINARY_NAME=futriisd
GO=go
GOFLAGS=-ldflags="-s -w"
BUILD_DIR=build
CMD_DIR=./cmd/futriis
# Цвета для вывода
GREEN=\033[0;32m
RED=\033[0;31m
NC=\033[0m # No Color
# Проверка операционной системы
UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S),Linux)
OS_SUPPORTED=true
endif
ifeq ($(UNAME_S),SunOS)
OS_SUPPORTED=true
endif
ifndef OS_SUPPORTED
$(error "Операционная система $(UNAME_S) не поддерживается. Проект поддерживает только Solaris, OpenIndiana и Linux.")
endif
all: clean deps build
# Создание директории для сборки
$(BUILD_DIR):
@mkdir -p $(BUILD_DIR)
@mkdir -p $(BUILD_DIR)/plugins
@mkdir -p $(BUILD_DIR)/data
# Установка зависимостей
deps:
@echo "$(GREEN)Установка зависимостей...$(NC)"
$(GO) mod download
$(GO) mod tidy
# Сборка клиента
build: $(BUILD_DIR)
@echo "$(GREEN)Сборка клиента для $(UNAME_S)...$(NC)"
$(GO) build $(GOFLAGS) -o $(BUILD_DIR)/$(BINARY_NAME) $(CMD_DIR)
@echo "$(GREEN)Сборка завершена. Бинарный файл: $(BUILD_DIR)/$(BINARY_NAME)$(NC)"
# Сборка сервера
build-server: $(BUILD_DIR)
@echo "$(GREEN)Сборка сервера для $(UNAME_S)...$(NC)"
$(GO) build $(GOFLAGS) -o $(BUILD_DIR)/$(SERVER_BINARY_NAME) $(CMD_DIR)
@echo "$(GREEN)Сборка сервера завершена. Бинарный файл: $(BUILD_DIR)/$(SERVER_BINARY_NAME)$(NC)"
# Установка проекта
install:
@echo "$(GREEN)Установка проекта...$(NC)"
$(GO) install $(GOFLAGS) $(CMD_DIR)
@echo "$(GREEN)Установка завершена$(NC)"
# Запуск клиента
run: build
@echo "$(GREEN)Запуск futriis клиента...$(NC)"
./$(BUILD_DIR)/$(BINARY_NAME)
# Запуск сервера
run-server: build-server
@echo "$(GREEN)Запуск futriis сервера...$(NC)"
./$(BUILD_DIR)/$(SERVER_BINARY_NAME) -server -config config.toml
# Тестирование
test:
@echo "$(GREEN)Запуск тестов...$(NC)"
$(GO) test -v ./...
# Очистка
clean:
@echo "$(GREEN)Очистка...$(NC)"
rm -rf $(BUILD_DIR)
$(GO) clean
# Показать помощь
help:
@echo "Доступные команды Make:"
@echo " make deps - установка зависимостей"
@echo " make build - сборка клиента"
@echo " make build-server - сборка сервера"
@echo " make install - установка проекта"
@echo " make run - запуск клиента"
@echo " make run-server - запуск сервера"
@echo " make test - запуск тестов"
@echo " make clean - очистка"
@echo " make help - показать эту справку"