mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2025-12-05 21:15:38 -05:00
164 lines
6.0 KiB
Makefile
164 lines
6.0 KiB
Makefile
BINARY_NAME=dms
|
|
BINARY_NAME_INSTALL=dankinstall
|
|
SOURCE_DIR=cmd/dms
|
|
SOURCE_DIR_INSTALL=cmd/dankinstall
|
|
BUILD_DIR=bin
|
|
PREFIX ?= /usr/local
|
|
INSTALL_DIR=$(PREFIX)/bin
|
|
|
|
GO=go
|
|
GOFLAGS=-ldflags="-s -w"
|
|
|
|
# Version and build info
|
|
BASE_VERSION=$(shell git describe --tags --abbrev=0 2>/dev/null | sed 's/^v//' || echo "0.0.0")
|
|
COMMIT_COUNT=$(shell git rev-list --count HEAD 2>/dev/null || echo "0")
|
|
COMMIT_HASH=$(shell git rev-parse --short=8 HEAD 2>/dev/null || echo "unknown")
|
|
VERSION?=$(BASE_VERSION)+git$(COMMIT_COUNT).$(COMMIT_HASH)
|
|
BUILD_TIME?=$(shell date -u '+%Y-%m-%d_%H:%M:%S')
|
|
COMMIT?=$(COMMIT_HASH)
|
|
|
|
BUILD_LDFLAGS=-ldflags='-s -w -X main.Version=$(VERSION) -X main.buildTime=$(BUILD_TIME) -X main.commit=$(COMMIT)'
|
|
|
|
# Architecture to build for dist target (amd64, arm64, or all)
|
|
ARCH ?= all
|
|
|
|
.PHONY: all build dankinstall dist clean install install-all install-dankinstall uninstall uninstall-all uninstall-dankinstall install-config uninstall-config test fmt vet deps print-version help
|
|
|
|
# Default target
|
|
all: build
|
|
|
|
# Build the main binary (dms)
|
|
build:
|
|
@echo "Building $(BINARY_NAME)..."
|
|
@mkdir -p $(BUILD_DIR)
|
|
CGO_ENABLED=0 $(GO) build $(BUILD_LDFLAGS) -o $(BUILD_DIR)/$(BINARY_NAME) ./$(SOURCE_DIR)
|
|
@echo "Build complete: $(BUILD_DIR)/$(BINARY_NAME)"
|
|
|
|
dankinstall:
|
|
@echo "Building $(BINARY_NAME_INSTALL)..."
|
|
@mkdir -p $(BUILD_DIR)
|
|
CGO_ENABLED=0 $(GO) build $(BUILD_LDFLAGS) -o $(BUILD_DIR)/$(BINARY_NAME_INSTALL) ./$(SOURCE_DIR_INSTALL)
|
|
@echo "Build complete: $(BUILD_DIR)/$(BINARY_NAME_INSTALL)"
|
|
|
|
# Build distro binaries for amd64 and arm64 (Linux only, no update/greeter support)
|
|
dist:
|
|
ifeq ($(ARCH),all)
|
|
@echo "Building $(BINARY_NAME) for distribution (amd64 and arm64)..."
|
|
@mkdir -p $(BUILD_DIR)
|
|
@echo "Building for linux/amd64..."
|
|
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 $(GO) build -tags distro_binary $(BUILD_LDFLAGS) -o $(BUILD_DIR)/$(BINARY_NAME)-linux-amd64 ./$(SOURCE_DIR)
|
|
@echo "Building for linux/arm64..."
|
|
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 $(GO) build -tags distro_binary $(BUILD_LDFLAGS) -o $(BUILD_DIR)/$(BINARY_NAME)-linux-arm64 ./$(SOURCE_DIR)
|
|
@echo "Distribution builds complete:"
|
|
@echo " $(BUILD_DIR)/$(BINARY_NAME)-linux-amd64"
|
|
@echo " $(BUILD_DIR)/$(BINARY_NAME)-linux-arm64"
|
|
else
|
|
@echo "Building $(BINARY_NAME) for distribution ($(ARCH))..."
|
|
@mkdir -p $(BUILD_DIR)
|
|
@echo "Building for linux/$(ARCH)..."
|
|
CGO_ENABLED=0 GOOS=linux GOARCH=$(ARCH) $(GO) build -tags distro_binary $(BUILD_LDFLAGS) -o $(BUILD_DIR)/$(BINARY_NAME)-linux-$(ARCH) ./$(SOURCE_DIR)
|
|
@echo "Distribution build complete:"
|
|
@echo " $(BUILD_DIR)/$(BINARY_NAME)-linux-$(ARCH)"
|
|
endif
|
|
|
|
build-all: build dankinstall
|
|
|
|
install: build
|
|
@echo "Installing $(BINARY_NAME) to $(INSTALL_DIR)..."
|
|
@install -D -m 755 $(BUILD_DIR)/$(BINARY_NAME) $(INSTALL_DIR)/$(BINARY_NAME)
|
|
@echo "Installation complete"
|
|
|
|
install-all: build-all
|
|
@echo "Installing $(BINARY_NAME) to $(INSTALL_DIR)..."
|
|
@install -D -m 755 $(BUILD_DIR)/$(BINARY_NAME) $(INSTALL_DIR)/$(BINARY_NAME)
|
|
@echo "Installing $(BINARY_NAME_INSTALL) to $(INSTALL_DIR)..."
|
|
@install -D -m 755 $(BUILD_DIR)/$(BINARY_NAME_INSTALL) $(INSTALL_DIR)/$(BINARY_NAME_INSTALL)
|
|
@echo "Installation complete"
|
|
|
|
install-dankinstall: dankinstall
|
|
@echo "Installing $(BINARY_NAME_INSTALL) to $(INSTALL_DIR)..."
|
|
@install -D -m 755 $(BUILD_DIR)/$(BINARY_NAME_INSTALL) $(INSTALL_DIR)/$(BINARY_NAME_INSTALL)
|
|
@echo "Installation complete"
|
|
|
|
uninstall:
|
|
@echo "Uninstalling $(BINARY_NAME) from $(INSTALL_DIR)..."
|
|
@rm -f $(INSTALL_DIR)/$(BINARY_NAME)
|
|
@echo "Uninstall complete"
|
|
|
|
uninstall-all:
|
|
@echo "Uninstalling $(BINARY_NAME) from $(INSTALL_DIR)..."
|
|
@rm -f $(INSTALL_DIR)/$(BINARY_NAME)
|
|
@echo "Uninstalling $(BINARY_NAME_INSTALL) from $(INSTALL_DIR)..."
|
|
@rm -f $(INSTALL_DIR)/$(BINARY_NAME_INSTALL)
|
|
@echo "Uninstall complete"
|
|
|
|
uninstall-dankinstall:
|
|
@echo "Uninstalling $(BINARY_NAME_INSTALL) from $(INSTALL_DIR)..."
|
|
@rm -f $(INSTALL_DIR)/$(BINARY_NAME_INSTALL)
|
|
@echo "Uninstall complete"
|
|
|
|
clean:
|
|
@echo "Cleaning build artifacts..."
|
|
@rm -rf $(BUILD_DIR)
|
|
@echo "Clean complete"
|
|
|
|
test:
|
|
@echo "Running tests..."
|
|
$(GO) test -v ./...
|
|
|
|
fmt:
|
|
@echo "Formatting Go code..."
|
|
$(GO) fmt ./...
|
|
|
|
vet:
|
|
@echo "Running go vet..."
|
|
$(GO) vet ./...
|
|
|
|
deps:
|
|
@echo "Updating dependencies..."
|
|
$(GO) mod tidy
|
|
$(GO) mod download
|
|
|
|
dev:
|
|
@echo "Building $(BINARY_NAME) for development..."
|
|
@mkdir -p $(BUILD_DIR)
|
|
$(GO) build -o $(BUILD_DIR)/$(BINARY_NAME) ./$(SOURCE_DIR)
|
|
@echo "Development build complete: $(BUILD_DIR)/$(BINARY_NAME)"
|
|
|
|
check-go:
|
|
@echo "Checking Go version..."
|
|
@go version | grep -E "go1\.(2[2-9]|[3-9][0-9])" > /dev/null || (echo "ERROR: Go 1.22 or higher required" && exit 1)
|
|
@echo "Go version OK"
|
|
|
|
version: check-go
|
|
@echo "Version: $(VERSION)"
|
|
@echo "Build Time: $(BUILD_TIME)"
|
|
@echo "Commit: $(COMMIT)"
|
|
|
|
print-version:
|
|
@echo "$(VERSION)"
|
|
|
|
help:
|
|
@echo "Available targets:"
|
|
@echo " all - Build the main binary (dms) (default)"
|
|
@echo " build - Build the main binary (dms)"
|
|
@echo " dankinstall - Build dankinstall binary"
|
|
@echo " dist - Build dms for linux amd64/arm64 (no update/greeter)"
|
|
@echo " Use ARCH=amd64 or ARCH=arm64 to build only one"
|
|
@echo " build-all - Build both binaries"
|
|
@echo " install - Install dms to $(INSTALL_DIR)"
|
|
@echo " install-all - Install both dms and dankinstall to $(INSTALL_DIR)"
|
|
@echo " install-dankinstall - Install only dankinstall to $(INSTALL_DIR)"
|
|
@echo " uninstall - Remove dms from $(INSTALL_DIR)"
|
|
@echo " uninstall-all - Remove both binaries from $(INSTALL_DIR)"
|
|
@echo " uninstall-dankinstall - Remove only dankinstall from $(INSTALL_DIR)"
|
|
@echo " clean - Clean build artifacts"
|
|
@echo " test - Run tests"
|
|
@echo " fmt - Format Go code"
|
|
@echo " vet - Run go vet"
|
|
@echo " deps - Update dependencies"
|
|
@echo " dev - Build with debug info"
|
|
@echo " check-go - Check Go version compatibility"
|
|
@echo " version - Show version information"
|
|
@echo " help - Show this help message"
|