#   Copyright The containerd Authors.

#   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.


#linux specific settings
WHALE="+"
ONI="-"
COMMANDS += containerd-shim-runc-v2

# check GOOS for cross compile builds
ifeq ($(GOOS),linux)
  ifneq ($(GOARCH),$(filter $(GOARCH),mips mipsle mips64 mips64le ppc64))
    ifeq ($(STATIC),)
	    GO_GCFLAGS += -buildmode=pie
    endif
  endif
endif

# amd64 supports go test -race
ifeq ($(GOARCH),amd64)
	TESTFLAGS_RACE= -race
endif
