# Copyright 2020 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=metering
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/metering-server
CODECOV_BASH := /tmp/codecov_bash

GO              := GO111MODULE=on go
GOBUILD         := $(GO) build $(BUILD_FLAGS) -trimpath -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|cmd|pkg/common/constants|pkg/common/utils/apigateway|pkg/common/utils/bigquery|pkg/common/utils/storage|pkg/httpapi|pkg/common/metrics"
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/metering/pkg/common/utils/versioninfo.ReleaseVersion=$(shell git describe --tags --dirty --always)"
LDFLAGS += -X "github.com/tidbcloud/metering/pkg/common/utils/versioninfo.GitHash=$(shell git rev-parse HEAD)"
LDFLAGS += -X "github.com/tidbcloud/metering/pkg/common/utils/versioninfo.GitBranch=$(shell git rev-parse --abbrev-ref HEAD)"
LDFLAGS += -X "github.com/tidbcloud/metering/pkg/common/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
