# Copyright 2019 The Bazel Authors. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. load( "//go/private:platforms.bzl", "GOARCH_CONSTRAINTS", "GOOS_CONSTRAINTS", "PLATFORMS", ) def declare_constraints(): """Generates constraint_values and platform targets for valid platforms. Each constraint_value corresponds to a valid goos or goarch. The goos and goarch values belong to the constraint_settings @platforms//os:os and @platforms//cpu:cpu, respectively. To avoid redundancy, if there is an equivalent value in @platforms, we define an alias here instead of another constraint_value. Each platform defined here selects a goos and goarch constraint value. These platforms may be used with --platforms for cross-compilation, though users may create their own platforms (and @bazel_tools//platforms:default_platform will be used most of the time). """ for goos, constraint in GOOS_CONSTRAINTS.items(): if constraint.startswith("@io_bazel_rules_go//go/toolchain:"): native.constraint_value( name = goos, constraint_setting = "@platforms//os:os", ) else: native.alias( name = goos, actual = constraint, ) for goarch, constraint in GOARCH_CONSTRAINTS.items(): if constraint.startswith("@io_bazel_rules_go//go/toolchain:"): native.constraint_value( name = goarch, constraint_setting = "@platforms//cpu:cpu", ) else: native.alias( name = goarch, actual = constraint, ) native.constraint_setting( name = "cgo_constraint", ) native.constraint_value( name = "cgo_on", constraint_setting = ":cgo_constraint", ) native.constraint_value( name = "cgo_off", constraint_setting = ":cgo_constraint", ) for p in PLATFORMS: native.platform( name = p.name, constraint_values = p.constraints, )