# Copyright 2022 PingCAP, Inc.
#
# 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.

PROJECT=observability
P=8

# Get system info, include OS and ARCH
OS ?= $(shell uname -s)
ifeq ($(OS), Darwin)
    OS := osx
else ifeq ($(OS), darwin)
    OS := osx
else ifeq ($(OS), Linux)
    OS := linux
endif

ARCH ?= $(shell uname -m)
ifeq ($(ARCH), arm64)
    ARCH := x86_64
else ifeq ($(ARCH), amd64)
    ARCH := x86_64
else ifeq ($(ARCH), aarch64)
    ARCH := aarch_64
endif

FAIL_ON_STDOUT := awk '{ print } END { if (NR > 0) { exit 1 } }'

CURDIR := $(shell pwd)
TEST_DIR := /tmp/agent-control-server
CODECOV_BASH := /tmp/codecov_bash

GO              := GO111MODULE=on go
GOBUILD         := $(GO) build $(BUILD_FLAGS) -tags codes
GOTEST          := $(GO) test -p $(P)
OVERALLS        := GO111MODULE=on overalls
STATICCHECK     := GO111MODULE=on staticcheck
EDITION    ?= Enterprise

# Ensure EDITION is set to Community or Enterprise before running build process.
ifneq "$(EDITION)" "Enterprise"
  $(error Please set the correct environment variable EDITION before running `make`)
endif

# use 'make <target> PREFIX=/path/for/prefix' to overwrite the PREFIX value
ifeq (${PREFIX},)
    PREFIX := /usr/local
endif

LINUX     := "Linux"
MAC       := "Darwin"

PACKAGE_LIST  := go list ./...| grep -vE "test|docs|proto|message|swagger|structs|/api|/mockapi|/pkg/agentcontrol"
PACKAGES  ?= $$($(PACKAGE_LIST))
LINT_PACKAGE_LIST  := go list ./...| grep -vE "docs|proto|test"
LINT_PACKAGES  ?= $$($(LINT_PACKAGE_LIST))
#PACKAGE_DIRECTORIES := $(PACKAGE_LIST) | sed 's|github.com/tidbcloud/$(PROJECT)||'
PACKAGE_DIRECTORIES := $(PACKAGE_LIST)
FILES     := $$(find $$($(PACKAGE_DIRECTORIES)) -name "*.go")

FAILPOINT_ENABLE  := $$(find $$PWD/ -type d | grep -vE "(\.git)" | xargs bin/failpoint-ctl enable)
FAILPOINT_DISABLE := $$(find $$PWD/ -type d | grep -vE "(\.git)" | xargs bin/failpoint-ctl disable)

LDFLAGS += -X "github.com/tidbcloud/observability/utils/versioninfo.ReleaseVersion=$(shell git describe --tags --dirty --always)"
LDFLAGS += -X "github.com/tidbcloud/observability/utils/versioninfo.GitHash=$(shell git rev-parse HEAD)"
LDFLAGS += -X "github.com/tidbcloud/observability/utils/versioninfo.GitBranch=$(shell git rev-parse --abbrev-ref HEAD)"
LDFLAGS += -X "github.com/tidbcloud/observability/utils/versioninfo.Edition=$(EDITION)"
LDFLAGS += -buildid $(shell git rev-parse HEAD)

RACE_FLAG =
ifeq ("$(WITH_RACE)", "1")
	RACE_FLAG = -race
	GOBUILD   = $(GO) build
endif

CHECK_FLAG =
ifeq ("$(WITH_CHECK)", "1")
	CHECK_FLAG = $(TEST_LDFLAGS)
endif

REGISTRY ?= 552185537300.dkr.ecr.us-west-2.amazonaws.com/agent-control-server
PROVIDER ?= eks
VENDOR ?= aws

ifneq ($(findstring gke,$(PROVIDER)),)
    ifneq ($(findstring prod,$(PROVIDER)),)
        REGISTRY = us-west1-docker.pkg.dev/gcp-autonomous-prod/agent-control-server/agent-control-server
    else
        REGISTRY = us-west1-docker.pkg.dev/gcp-autonomous-dev/agent-control-server/agent-control-server
    endif
else ifneq ($(findstring eks,$(PROVIDER)),)
    ifneq ($(findstring prod,$(PROVIDER)),)
        REGISTRY = 557537366020.dkr.ecr.us-west-2.amazonaws.com/agent-control-server
    else
        REGISTRY = 552185537300.dkr.ecr.us-west-2.amazonaws.com/agent-control-server
    endif
else ifneq ($(findstring aks,$(PROVIDER)),)
    ifneq ($(findstring prod,$(PROVIDER)),)
        REGISTRY = o11ydeveastus.azurecr.io/agent-control-server
    else
        REGISTRY = o11ydeveastus.azurecr.io/agent-control-server
    endif
endif

