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