golang.org/x/build@v0.0.0-20240506185731-218518f32b70/cmd/buildlet/Makefile (about) 1 # Common targets: 2 # 3 # - compile: build all buildlets (but do not upload) 4 # - upload: build and upload all buildlets to prod 5 # - dev-upload: build and upload all buildlets to dev cluster 6 # - install-go: install the version of Go needed by the Makefile 7 # 8 # Individual targets: 9 # 10 # - buildlet.linux-amd64: build buildlet for linux-amd64 (but do not upload) 11 # - upload.linux-amd64: build buildlet for linux-amd64 and upload to prod 12 # - dev-upload.linux-amd64: build buildlet for linux-amd64 and upload to dev cluster 13 14 GO=go1.20 15 16 ALL=\ 17 buildlet.aix-ppc64 \ 18 buildlet.darwin-amd64 \ 19 buildlet.darwin-arm64 \ 20 buildlet.dragonfly-amd64 \ 21 buildlet.freebsd-amd64 \ 22 buildlet.freebsd-arm \ 23 buildlet.freebsd-arm-5 \ 24 buildlet.freebsd-arm-7 \ 25 buildlet.freebsd-riscv64 \ 26 buildlet.illumos-amd64 \ 27 buildlet.linux-amd64 \ 28 buildlet.linux-arm \ 29 buildlet.linux-arm-5 \ 30 buildlet.linux-arm-7 \ 31 buildlet.linux-arm-arm5 \ 32 buildlet.linux-arm64 \ 33 buildlet.linux-mips \ 34 buildlet.linux-mips64 \ 35 buildlet.linux-mips64le \ 36 buildlet.linux-mipsle \ 37 buildlet.linux-ppc64 \ 38 buildlet.linux-ppc64le \ 39 buildlet.linux-riscv64 \ 40 buildlet.linux-s390x \ 41 buildlet.netbsd-386 \ 42 buildlet.netbsd-amd64 \ 43 buildlet.netbsd-arm \ 44 buildlet.netbsd-arm-5 \ 45 buildlet.netbsd-arm-7 \ 46 buildlet.netbsd-arm64 \ 47 buildlet.openbsd-386 \ 48 buildlet.openbsd-amd64 \ 49 buildlet.openbsd-arm \ 50 buildlet.openbsd-arm-7 \ 51 buildlet.plan9-386 \ 52 buildlet.plan9-amd64 \ 53 buildlet.plan9-arm \ 54 buildlet.plan9-arm-5 \ 55 buildlet.plan9-arm-7 \ 56 buildlet.solaris-amd64 \ 57 buildlet.windows-386 \ 58 buildlet.windows-amd64 \ 59 buildlet.windows-arm64 \ 60 61 usage: FORCE 62 @sed -E '/^$$/q; s/^# ?//' Makefile 63 exit 1 64 65 FORCE: 66 67 # A convenience for people who are missing $(GO). 68 install-go: 69 go install golang.org/dl/$(GO)@latest 70 $(GO) download 71 72 clean: 73 rm -f buildlet.*-* 74 75 # Compile everything without uploading. 76 compile: $(ALL) 77 78 GOFILES:=$(shell ls *.go) 79 80 VERSION:=$(USER)-$(shell date -u +'%Y-%m-%dT%H:%M:%SZ') 81 82 BUILD=CGO_ENABLED=0 $(GO) build -ldflags='-X main.Version=$(VERSION)' -o 83 84 buildlet.%-386: $(GOFILES) 85 GOOS=$* GOARCH=386 $(BUILD) $@ 86 87 buildlet.%-amd64: $(GOFILES) 88 GOOS=$* GOARCH=amd64 $(BUILD) $@ 89 90 # For ARM we need both GOARM settings because on some operating systems 91 # (for example OpenBSD) we can't write a single binary that runs on both ARMv5 and ARMv7. 92 buildlet.%-arm-5: $(GOFILES) 93 GOOS=$* GOARCH=arm GOARM=5 $(BUILD) $@ 94 buildlet.%-arm-7: $(GOFILES) 95 GOOS=$* GOARCH=arm GOARM=7 $(BUILD) $@ 96 97 # Legacy names that existing reverse builders may still be downloading. 98 # Yes, both the Linux variants are GOARM=5. 99 # (On Linux it doesn't matter much since we use the vdso routines for atomics.) 100 # Reverse builders should eventually be updated to use the -5 or -7 form directly. 101 buildlet.freebsd-arm: buildlet.freebsd-arm-5 102 cp $< $@ 103 buildlet.linux-arm: buildlet.linux-arm-5 104 cp $< $@ 105 buildlet.linux-arm-arm5: buildlet.linux-arm-5 106 cp $< $@ 107 buildlet.netbsd-arm: buildlet.netbsd-arm-7 108 cp $< $@ 109 buildlet.openbsd-arm: buildlet.openbsd-arm-7 110 cp $< $@ 111 buildlet.plan9-arm: buildlet.plan9-arm-5 112 cp $< $@ 113 114 buildlet.%-arm64: $(GOFILES) 115 GOOS=$* GOARCH=arm64 $(BUILD) $@ 116 117 buildlet.%-mips: $(GOFILES) 118 GOOS=$* GOARCH=mips $(BUILD) $@ 119 120 buildlet.%-mipsle: $(GOFILES) 121 GOOS=$* GOARCH=mipsle $(BUILD) $@ 122 123 buildlet.%-mips64: $(GOFILES) 124 GOOS=$* GOARCH=mips64 $(BUILD) $@ 125 126 buildlet.%-mips64le: $(GOFILES) 127 GOOS=$* GOARCH=mips64le $(BUILD) $@ 128 129 buildlet.%-ppc64: $(GOFILES) 130 GOOS=$* GOARCH=ppc64 $(BUILD) $@ 131 132 buildlet.%-ppc64le: $(GOFILES) 133 GOOS=$* GOARCH=ppc64le $(BUILD) $@ 134 135 buildlet.%-riscv64: $(GOFILES) 136 GOOS=$* GOARCH=riscv64 $(BUILD) $@ 137 138 buildlet.%-s390x: $(GOFILES) 139 GOOS=$* GOARCH=s390x $(BUILD) $@ 140 141 # Upload everything. 142 upload: $(ALL:buildlet.%=upload.%) 143 144 UPLOAD=$(GO) run golang.org/x/build/cmd/upload -verbose -public -cacheable=false 145 146 upload.%: buildlet.% 147 $(UPLOAD) -file=$< go-builder-data/$< 148 149 # Upload everything to dev cluster. 150 dev-upload: $(ALL:buildlet.%=upload.%) 151 152 dev-upload.%: buildlet.% 153 $(UPLOAD) -file=$< dev-go-builder-data/$< 154