diff --git a/BUILD b/BUILD index 394ed858..212e400d 100644 --- a/BUILD +++ b/BUILD @@ -151,6 +151,16 @@ go_binary( visibility = ["//visibility:public"], ) +go_binary( + name = "bazelisk-windows-arm64", + out = "bazelisk-windows_arm64.exe", + embed = [":go_default_library"], + goarch = "arm64", + goos = "windows", + pure = "on", + visibility = ["//visibility:public"], +) + genrule( name = "bazelisk-darwin-amd64-for-npm", srcs = [":bazelisk-darwin-amd64"], @@ -191,6 +201,14 @@ genrule( output_to_bindir = 1, ) +genrule( + name = "bazelisk-windows-arm64-for-npm", + srcs = [":bazelisk-windows-arm64"], + outs = ["bazelisk-windows_arm64.exe"], + cmd = "cp $(location :bazelisk-windows-arm64) \"$@\"", + output_to_bindir = 1, +) + pkg_npm( name = "npm_package", srcs = [ diff --git a/WORKSPACE b/WORKSPACE index 82983302..13dee7d6 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -50,7 +50,7 @@ go_repository( go_rules_dependencies() -go_register_toolchains(version = "1.16.4") +go_register_toolchains(version = "1.17.1") gazelle_dependencies() diff --git a/bazelisk.py b/bazelisk.py index b6fab96e..2a1655b5 100755 --- a/bazelisk.py +++ b/bazelisk.py @@ -207,9 +207,9 @@ def determine_executable_filename_suffix(): def determine_bazel_filename(version): machine = normalized_machine_arch_name() - if machine != "x86_64": + if machine not in ["x86_64", "arm64"]: raise Exception( - 'Unsupported machine architecture "{}". Bazel currently only supports x86_64.'.format( + 'Unsupported machine architecture "{}". Bazel currently only supports x86_64 and arm64.'.format( machine ) ) @@ -227,6 +227,8 @@ def normalized_machine_arch_name(): machine = platform.machine().lower() if machine == "amd64": machine = "x86_64" + elif machine == "ARM64": + machine = "arm64" return machine diff --git a/build.sh b/build.sh index be34d344..263ccb3e 100755 --- a/build.sh +++ b/build.sh @@ -27,7 +27,9 @@ go build //:bazelisk-darwin-universal \ //:bazelisk-linux-amd64 \ //:bazelisk-linux-arm64 \ - //:bazelisk-windows-amd64 + //:bazelisk-windows-amd64 \ + //:bazelisk-windows-arm64 + echo cp bazel-out/*-opt-*/bin/bazelisk-darwin_amd64 bin/bazelisk-darwin-amd64 @@ -36,6 +38,8 @@ cp bazel-out/*-opt/bin/bazelisk-darwin_universal bin/bazelisk-darwin cp bazel-out/*-opt-*/bin/bazelisk-linux_amd64 bin/bazelisk-linux-amd64 cp bazel-out/*-opt-*/bin/bazelisk-linux_arm64 bin/bazelisk-linux-arm64 cp bazel-out/*-opt-*/bin/bazelisk-windows_amd64.exe bin/bazelisk-windows-amd64.exe +cp bazel-out/*-opt-*/bin/bazelisk-windows_arm64.exe bin/bazelisk-windows-arm64.exe + rm -f bazelisk ### Build release artifacts using `go build`. @@ -45,6 +49,7 @@ rm -f bazelisk # GOOS=darwin GOARCH=arm64 go build -o bin/bazelisk-darwin-arm64 # lipo -create -output bin/bazelisk-darwin bin/bazelisk-darwin-amd64 bin/bazelisk-darwin-arm64 # GOOS=windows GOARCH=amd64 go build -o bin/bazelisk-windows-amd64.exe +# GOOS=windows GOARCH=arm64 go build -o bin/bazelisk-windows-arm64.exe ### Print some information about the generated binaries. echo "== Bazelisk binaries are ready =="