gcx/blockchain/genex-chain/Makefile

128 lines
3.6 KiB
Makefile

# ============================================================
# Genex Chain — Makefile
# ============================================================
# 基于 Cosmos SDK + cosmos/evm + CometBFT
#
# 需要: Go 1.23.8+, CGO, Linux/macOS (或 Docker)
# ============================================================
BINARY_NAME := genexd
APP_NAME := GenexChain
VERSION := 1.0.0
COMMIT := $(shell git rev-parse --short HEAD 2>/dev/null || echo "dev")
CHAIN_ID := genex-1
EVM_CHAIN_ID := 8888
BUILD_DIR := build
DOCKER_IMAGE := genex-chain
# Build flags
LDFLAGS := -X github.com/cosmos/cosmos-sdk/version.Name=$(APP_NAME) \
-X github.com/cosmos/cosmos-sdk/version.AppName=$(BINARY_NAME) \
-X github.com/cosmos/cosmos-sdk/version.Version=$(VERSION) \
-X github.com/cosmos/cosmos-sdk/version.Commit=$(COMMIT) \
-X github.com/cosmos/cosmos-sdk/version.BuildTags=netgo,ledger \
-w -s
BUILD_FLAGS := -ldflags '$(LDFLAGS)' -tags "netgo,ledger" -trimpath
.PHONY: all build install clean test lint docker docker-run docker-stop \
init-local start deps format help version
## help: Display this help message
help:
@echo "Genex Chain — Build System"
@echo ""
@echo "Usage: make <target>"
@echo ""
@echo "Targets:"
@grep -E '^## ' Makefile | sed 's/## / /'
## all: Build the binary
all: build
## deps: Download and tidy dependencies
deps:
@echo "==> Downloading dependencies..."
go mod tidy
go mod download
## build: Build genexd binary
build: deps
@echo "==> Building $(BINARY_NAME)..."
@mkdir -p $(BUILD_DIR)
CGO_ENABLED=1 go build $(BUILD_FLAGS) -o $(BUILD_DIR)/$(BINARY_NAME) ./cmd/genexd/
@echo "Binary: $(BUILD_DIR)/$(BINARY_NAME)"
## install: Install genexd to GOPATH/bin
install: deps
@echo "==> Installing $(BINARY_NAME)..."
CGO_ENABLED=1 go install $(BUILD_FLAGS) ./cmd/genexd/
## test: Run all tests
test:
@echo "==> Running tests..."
go test -v ./x/evm/ante/ ./x/evm/keeper/
@echo "All tests passed!"
## test-contracts: Run Solidity contract tests (requires Foundry)
test-contracts:
@echo "==> Running contract tests..."
cd ../genex-contracts && forge test -vvv
## lint: Run linters
lint:
@echo "==> Running linters..."
@which golangci-lint > /dev/null 2>&1 || (echo "golangci-lint not found" && exit 1)
golangci-lint run ./...
## format: Format Go code
format:
@echo "==> Formatting code..."
gofmt -s -w .
## clean: Remove build artifacts
clean:
@echo "==> Cleaning..."
rm -rf $(BUILD_DIR)
## init-local: Initialize a local single-node testnet
init-local: build
@echo "==> Initializing local testnet..."
$(BUILD_DIR)/$(BINARY_NAME) init genex-local --chain-id $(CHAIN_ID)
@echo "Local testnet initialized at ~/.genexd"
@echo "Start with: make start"
## start: Start the local node
start:
@echo "==> Starting Genex Chain..."
$(BUILD_DIR)/$(BINARY_NAME) start \
--minimum-gas-prices 0agnx \
--evm.chain-id $(EVM_CHAIN_ID)
## docker: Build Docker image
docker:
@echo "==> Building Docker image..."
docker build -t $(DOCKER_IMAGE):$(VERSION) -t $(DOCKER_IMAGE):latest .
@echo "Image: $(DOCKER_IMAGE):$(VERSION)"
## docker-run: Run single node in Docker
docker-run:
@echo "==> Running Genex Chain in Docker..."
docker run -d --name genex-node \
-p 26656:26656 -p 26657:26657 \
-p 8545:8545 -p 8546:8546 \
-p 1317:1317 -p 9090:9090 \
$(DOCKER_IMAGE):latest
## docker-stop: Stop Docker node
docker-stop:
docker stop genex-node && docker rm genex-node
## version: Show version
version:
@echo "$(APP_NAME) $(VERSION) ($(COMMIT))"
@echo "Chain ID: $(CHAIN_ID)"
@echo "EVM Chain ID: $(EVM_CHAIN_ID)"
@echo "Denom: agnx (GNX)"
@echo "Bech32: genex"