blob: 18bf327107199797a423aa8056f638b998ae9514 [file] [log] [blame]
Josh Bleecher Snyder1c18ec92025-07-08 10:55:54 -07001# Makefile for building sketch with embedded assets
2#
3# Two-layer architecture:
4# 1. Linux binary ("innie") - runs in container, embeds webui assets
5# 2. Native binary ("outie") - runs on user's machine, embeds innie
6
Josh Bleecher Snyder6ae637a2025-07-09 12:41:56 -07007# Allow overriding some env vars, used by GoReleaser
8BUILT_BY ?= make
9SKETCH_VERSION ?=
Josh Bleecher Snyder973413b2025-07-08 19:35:05 +000010GOOS ?= $(shell go env GOOS)
11GOARCH ?= $(shell go env GOARCH)
12
Josh Bleecher Snyder6ae637a2025-07-09 12:41:56 -070013export BUILT_BY
14export SKETCH_VERSION
15export GOOS
16export GOARCH
17export LDFLAGS := -X main.builtBy=$(BUILT_BY) -X main.release=$(SKETCH_VERSION)
18
19.PHONY: all clean outie innie webui
Josh Bleecher Snyder1c18ec92025-07-08 10:55:54 -070020
21all: outie
22
23outie: innie
Josh Bleecher Snyder6ae637a2025-07-09 12:41:56 -070024 ./build/outie.sh
Josh Bleecher Snyder1c18ec92025-07-08 10:55:54 -070025
Josh Bleecher Snyder6ae637a2025-07-09 12:41:56 -070026innie: webui
27 ./build/innie.sh
Josh Bleecher Snyder1c18ec92025-07-08 10:55:54 -070028
Josh Bleecher Snyder6ae637a2025-07-09 12:41:56 -070029webui:
30 ./build/webui.sh
Josh Bleecher Snyder1c18ec92025-07-08 10:55:54 -070031
32clean:
Josh Bleecher Snyder6ae637a2025-07-09 12:41:56 -070033 ./build/clean.sh
Giorgi Lekveishvili3d0067f2025-06-20 06:12:46 +040034
35
36
37# DODO
38
39repo_name ?= giolekva
40podman ?= docker
41docker_flags=--provenance=false --sbom=false
42ifeq ($(podman), podman)
43manifest_dest=docker://docker.io/$(repo_name)/sketch:latest
44endif
45
46clean:
47 rm -f sketch
48
49build_arm64: export CGO_ENABLED=0
50build_arm64: export GO111MODULE=on
51build_arm64: export GOOS=linux
52build_arm64: export GOARCH=arm64
53build_arm64:
54 go build -o sketch_arm64 cmd/sketch/*.go
55
56build_amd64: export CGO_ENABLED=0
57build_amd64: export GO111MODULE=on
58build_amd64: export GOOS=linux
59build_amd64: export GOARCH=amd64
60build_amd64:
61 go build -o sketch_amd64 cmd/sketch/*.go
62
63push_arm64: clean build_arm64
64 $(podman) build --platform linux/arm64 --tag=$(repo_name)/sketch:arm64 $(docker_flags) .
65 $(podman) push $(repo_name)/sketch:arm64
66
67push_amd64: clean build_amd64
68 $(podman) build --platform linux/amd64 --tag=$(repo_name)/sketch:amd64 $(docker_flags) .
69 $(podman) push $(repo_name)/sketch:amd64
70
71push: push_arm64 push_amd64
72 $(podman) manifest create $(repo_name)/sketch:latest $(repo_name)/sketch:arm64 $(repo_name)/sketch:amd64
73 $(podman) manifest push --purge $(repo_name)/sketch:latest $(manifest_dest)