TOPDIR=.
REALTOP=$(shell readlink -f .)

EMPIRIX_PIPELINE_FRAMEWORK_DIR:=$(EMPIRIX_PIPELINE_FRAMEWORK_DIR)
EMPIRIX_PIPELINE_FRAMEWORK_MAKEFILE_SUPPORT_DIR:=$(EMPIRIX_PIPELINE_FRAMEWORK_DIR)/makefiles
EMPIRIX_PIPELINE_FRAMEWORK_SCRIPT_SUPPORT_DIR:=$(EMPIRIX_PIPELINE_FRAMEWORK_DIR)/scripts

-include ${EMPIRIX_PIPELINE_FRAMEWORK_MAKEFILE_SUPPORT_DIR}/Common-defines.mk
-include ${EMPIRIX_PIPELINE_FRAMEWORK_MAKEFILE_SUPPORT_DIR}/Version-defines.mk
-include ${EMPIRIX_PIPELINE_FRAMEWORK_MAKEFILE_SUPPORT_DIR}/Deploy-defines.mk
-include ${EMPIRIX_PIPELINE_FRAMEWORK_MAKEFILE_SUPPORT_DIR}/Deploy-targets.mk

REMOTE_CONAN_NAME_FOR_PULL?=nexus_proxy

CONAN_PACKAGES:=conan-base/$(CONAN_VERSION)@empirix/$(CONAN_CHANNEL)

# ------------------------------------------------------------------------------------------
# Check for dependencies
# ------------------------------------------------------------------------------------------

check_deps:
	@mkdir -p $(CONAN_INSTALL_DIR) && rm -rf $(CONAN_INSTALL_DIR)/*
	@if ! conan remote list | grep $(REMOTE_CONAN_NAME_FOR_PULL) 2>/dev/null 1>&2; then \
		echo "ERROR: there is no Conan remote repository named [$(REMOTE_CONAN_NAME_FOR_PULL)]. Please run setup-devel-centos7.sh again." ; \
		exit 123 ; \
	fi
	cd $(CONAN_INSTALL_DIR) && \
		conan install ..

# ------------------------------------------------------------------------------------------
# Build targets
# ------------------------------------------------------------------------------------------

fulldist:
	@echo "This repository has nothing to build"

docker_fulldist: fulldist

# --------------
# Shell commands
# --------------

BUILDER_IMAGE_TAG=1
BUILDER_IMAGE_TYPE=standard

bash:
	@echo "Updating builder image: infovista/cpp-builder-ol9-$(BUILDER_IMAGE_TYPE):$(BUILDER_IMAGE_TAG)"
	@docker pull -q ghcr.io/infovista/cpp-builder-ol9-$(BUILDER_IMAGE_TYPE):$(BUILDER_IMAGE_TAG)
	@echo "Starting builder image: infovista/cpp-builder-ol9-$(BUILDER_IMAGE_TYPE):$(BUILDER_IMAGE_TAG)"
	@docker run --rm -ti  \
		--name builder_bash_baselibs \
        --volume ~/.docker_builder_bash_history:/root/.bash_history:rw \
        --network=host --privileged \
        --cap-add=SYS_PTRACE --security-opt seccomp=unconfined \
        --volume `pwd`:`pwd` \
        --volume /opt/empirix/conan:/opt/empirix/conan \
        --volume /var/run/docker.sock:/var/run/docker.sock \
        --volume /etc/docker/daemon.json:/etc/docker/daemon.json \
        --volume ~/.config/helm/repositories.yaml:/root/.config/helm/repositories.yaml \
        --volume ~/.docker/config.json:/root/.docker/config.json \
        --volume ~/.conan:/root/.conan \
        --volume /etc/yum/vars/artifactory-yum-repository:/etc/yum/vars/artifactory-yum-repository \
        --mount type=tmpfs,destination=/home/builder/rpmbuild \
        --workdir=`pwd` \
        --env TEAMCITY_VERSION="" \
        --env BUILD_AGENT="0" \
        ghcr.io/infovista/cpp-builder-ol9-$(BUILDER_IMAGE_TYPE):$(BUILDER_IMAGE_TAG) || true

# ------------------------------------------------------------------------------------------
# Packaging targets 
# ------------------------------------------------------------------------------------------

fullpackaging:
	@echo "##teamcity[blockOpened name='Packaging as Conan']"
	conan create . empirix/$(CONAN_CHANNEL)
	@echo "##teamcity[blockClosed name='Packaging as Conan']"

docker_fullpackaging:: fullpackaging

packaging_conan:
	@echo "##teamcity[blockOpened name='Packaging as Conan']"
	conan create . empirix/$(CONAN_CHANNEL)
	@echo "##teamcity[blockClosed name='Packaging as Conan']"

packaging_folders:

packaging_image_content:

# ------------------------------------------------------------------------------------------
# Automated tests targets
# ------------------------------------------------------------------------------------------

# In future when this repo start supporting the automated test
# we just need to uncomment below incude line
#-include ${EMPIRIX_PIPELINE_FRAMEWORK_MAKEFILE_SUPPORT_DIR}/AutomatedTests-targets.mk

automated_tests_stop:
automated_tests:
ifeq ($(ARCH),docker)
	@echo "##teamcity[blockOpened name='$(ARCH) AutomatedTests']"
	@echo "======================================================================================================================"
	@echo "== $(ARCH) Automated tests"
	@echo "======================================================================================================================"
	@echo "No automated tests are supported by this repo"
	@echo "##teamcity[blockClosed name='$(ARCH) AutomatedTests']"
endif

# ------------------------------------------------------------------------------------------
# Unit test targets
# ------------------------------------------------------------------------------------------

docker_unit_tests:
	@echo "This repository has no unit tests"

# ------------------------------------------------------------------------------------------
#  # Documentation
# ------------------------------------------------------------------------------------------
#
docker_documentation:
	@echo "No documentation auto-generated by this repo"

# ------------------------------------------------------------------------------------------
# Code coverage targets
# ------------------------------------------------------------------------------------------

docker_gcov_finalize:
	@echo "This repository has no coverage"

# ------------------------------------------------------------------------------------------
# Deploy targets
# ------------------------------------------------------------------------------------------

docker_deploy:
	$(MAKE) deploy_clean_logfile
	$(MAKE) deploy_conan

-include ${EMPIRIX_PIPELINE_FRAMEWORK_MAKEFILE_SUPPORT_DIR}/Common-targets.mk

# ------------------------------------------------------------------------------------------
# Cleanup targets
# ------------------------------------------------------------------------------------------

-include ${EMPIRIX_PIPELINE_FRAMEWORK_MAKEFILE_SUPPORT_DIR}/RootMakefile-targets.mk
