blob: a6ffce2aa1d28bc53c3fbd3e670e6003ed4c1551 [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
Sketch🕴️9988c512025-07-31 16:45:04 +040046# clean:
47# rm -f sketch
Giorgi Lekveishvili3d0067f2025-06-20 06:12:46 +040048
49build_arm64: export CGO_ENABLED=0
50build_arm64: export GO111MODULE=on
51build_arm64: export GOOS=linux
52build_arm64: export GOARCH=arm64
53build_arm64:
Sketch🕴️9988c512025-07-31 16:45:04 +040054 make
55 cp sketch sketch_arm64
Giorgi Lekveishvili3d0067f2025-06-20 06:12:46 +040056
57build_amd64: export CGO_ENABLED=0
58build_amd64: export GO111MODULE=on
59build_amd64: export GOOS=linux
60build_amd64: export GOARCH=amd64
61build_amd64:
Sketch🕴️9988c512025-07-31 16:45:04 +040062 make
63 cp sketch sketch_amd64
Giorgi Lekveishvili3d0067f2025-06-20 06:12:46 +040064
65push_arm64: clean build_arm64
66 $(podman) build --platform linux/arm64 --tag=$(repo_name)/sketch:arm64 $(docker_flags) .
67 $(podman) push $(repo_name)/sketch:arm64
68
69push_amd64: clean build_amd64
70 $(podman) build --platform linux/amd64 --tag=$(repo_name)/sketch:amd64 $(docker_flags) .
71 $(podman) push $(repo_name)/sketch:amd64
72
73push: push_arm64 push_amd64
74 $(podman) manifest create $(repo_name)/sketch:latest $(repo_name)/sketch:arm64 $(repo_name)/sketch:amd64
75 $(podman) manifest push --purge $(repo_name)/sketch:latest $(manifest_dest)