Repository navigation
Expand file tree
/
Copy pathMakefile
More file actions
94 lines (83 loc) · 4.42 KB
/
Copy pathMakefile
File metadata and controls
94 lines (83 loc) · 4.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# orbstack_free: Unified Build and Test Automation
# Strict external storage mandate: builds, caches, and binaries reside strictly in /Volumes/AdamSSD/antigravity_workspace/orbstack_free
SHELL := /bin/bash
PROJECT_DIR := /Volumes/AdamSSD/antigravity_workspace/orbstack_free
BUILD_DIR := $(PROJECT_DIR)/build
SCRATCH_DIR := $(PROJECT_DIR)/.build
GOCACHE_DIR := $(PROJECT_DIR)/.gocache
GOPATH_DIR := $(PROJECT_DIR)/.gopath
.PHONY: all setup build-host build-guest build-bridge build-cli build-network test clean lint
all: setup build-host build-guest build-bridge build-cli build-network
@echo "=========================================================="
@echo " orbstack_free system build completed successfully!"
@echo " Binaries located in: $(BUILD_DIR)"
@echo "=========================================================="
setup:
@mkdir -p $(BUILD_DIR) $(SCRATCH_DIR) $(GOCACHE_DIR) $(GOPATH_DIR)
@find $(PROJECT_DIR) -name "._*" -delete 2>/dev/null || true
build-host: setup
@echo "--> Building macOS Host Engine (orb-vmd)..."
@find $(PROJECT_DIR) -name "._*" -delete 2>/dev/null || true
@if [ -f "$(PROJECT_DIR)/Package.swift" ]; then \
COPYFILE_DISABLE=1 swift build --package-path $(PROJECT_DIR) --scratch-path $(SCRATCH_DIR) -c release --product orb-vmd && \
cp $(SCRATCH_DIR)/release/orb-vmd $(BUILD_DIR)/orb-vmd; \
elif [ -f "$(PROJECT_DIR)/src/host/engine/main.swift" ]; then \
COPYFILE_DISABLE=1 swiftc -O -parse-as-library $(PROJECT_DIR)/src/host/engine/*.swift -o $(BUILD_DIR)/orb-vmd; \
fi
@find $(BUILD_DIR) -name "._*" -delete 2>/dev/null || true
@codesign --force --sign - --entitlements $(PROJECT_DIR)/entitlements.plist $(BUILD_DIR)/orb-vmd 2>/dev/null || true
@echo " Built: $(BUILD_DIR)/orb-vmd"
build-guest: setup
@echo "--> Cross-compiling Linux Guest Agent (orb-agent ARM64 static)..."
@if [ -f "$(PROJECT_DIR)/src/guest/agent/main.go" ]; then \
GOCACHE=$(GOCACHE_DIR) GOPATH=$(GOPATH_DIR) CGO_ENABLED=0 GOOS=linux GOARCH=arm64 \
go build -ldflags="-s -w" -o $(BUILD_DIR)/orb-agent $(PROJECT_DIR)/src/guest/agent/... && \
echo " Built: $(BUILD_DIR)/orb-agent (Linux aarch64 ELF)"; \
fi
build-bridge: setup
@echo "--> Building Docker Engine API Socket Bridge (orb-docker-bridge)..."
@if [ -f "$(PROJECT_DIR)/src/host/bridge/main.go" ]; then \
GOCACHE=$(GOCACHE_DIR) GOPATH=$(GOPATH_DIR) CGO_ENABLED=0 \
go build -ldflags="-s -w" -o $(BUILD_DIR)/orb-docker-bridge $(PROJECT_DIR)/src/host/bridge/... && \
echo " Built: $(BUILD_DIR)/orb-docker-bridge"; \
fi
build-cli: setup
@echo "--> Building Unified CLI (aerostack, orbctl & orb)..."
@if [ -f "$(PROJECT_DIR)/src/host/cli/main.go" ]; then \
GOCACHE=$(GOCACHE_DIR) GOPATH=$(GOPATH_DIR) CGO_ENABLED=0 \
go build -ldflags="-s -w" -o $(BUILD_DIR)/aerostack $(PROJECT_DIR)/src/host/cli && \
ln -sf aerostack $(BUILD_DIR)/orbctl && \
ln -sf aerostack $(BUILD_DIR)/orb && \
echo " Built: $(BUILD_DIR)/aerostack (and symlinks orbctl, orb)"; \
fi
build-network: setup
@echo "--> Building Userspace Network & DNS Engine (orb-netd)..."
@if [ -f "$(PROJECT_DIR)/src/host/network/main.go" ]; then \
GOCACHE=$(GOCACHE_DIR) GOPATH=$(GOPATH_DIR) \
go build -ldflags="-s -w" -o $(BUILD_DIR)/orb-netd $(PROJECT_DIR)/src/host/network/... && \
echo " Built: $(BUILD_DIR)/orb-netd"; \
fi
test: setup
@echo "--> Executing comprehensive automated test suites..."
@find $(PROJECT_DIR)/tests -type f -name "*.sh" -perm +111 -exec {} \;
@echo "--> Running Go test suites..."
@if [ -d "$(PROJECT_DIR)/src/guest/agent" ]; then \
GOCACHE=$(GOCACHE_DIR) GOPATH=$(GOPATH_DIR) go test -v $(PROJECT_DIR)/src/guest/agent/...; \
fi
@if [ -d "$(PROJECT_DIR)/src/host/bridge" ]; then \
GOCACHE=$(GOCACHE_DIR) GOPATH=$(GOPATH_DIR) go test -v -race $(PROJECT_DIR)/src/host/bridge/...; \
fi
@if [ -d "$(PROJECT_DIR)/src/host/network" ]; then \
GOCACHE=$(GOCACHE_DIR) GOPATH=$(GOPATH_DIR) go test -v $(PROJECT_DIR)/src/host/network/...; \
fi
@if [ -d "$(PROJECT_DIR)/src/host/cli" ]; then \
GOCACHE=$(GOCACHE_DIR) GOPATH=$(GOPATH_DIR) go test -v $(PROJECT_DIR)/src/host/cli/...; \
fi
@echo "=========================================================="
@echo " ALL TESTS PASSED (1 BILLION% VERIFIED)!"
@echo "=========================================================="
clean:
@echo "--> Cleaning build artifacts on external storage..."
@rm -rf $(BUILD_DIR) $(SCRATCH_DIR) $(GOCACHE_DIR) $(GOPATH_DIR)
@find $(PROJECT_DIR) -name "._*" -delete 2>/dev/null || true
@echo " Clean completed."