.PHONY: all test

COMMIT := $(shell git rev-parse --short HEAD)
TD_COMMIT := "5bbfc1cf5dab94f82e02f3430ded7241d4653551"
VERSION := "v1.12.8"
MAKEOPTS := "-j4"

NTG_LIB_DIR ?= /usr/local/lib
NTG_INC_DIR ?= /usr/local/include

all:
	mkdir -p release
	CGO_ENABLED=1 \
	CGO_CFLAGS="-I$(NTG_INC_DIR)" \
	CGO_LDFLAGS="-L$(NTG_LIB_DIR) -lntgcalls -lresolv_shim -lstdc++ -lm -ldl -lrt -lpthread -lz -lresolv -fuse-ld=mold" \
	go build -ldflags "-X main.commit=${COMMIT}" -o release/telegabber

test:
	go test -race -short -v ./config ./ ./telegram ./xmpp ./xmpp/gateway ./xmpp/jingle ./persistence ./telegram/formatter ./badger ./calls ./calls/signaling ./calls/signaling/tgsig ./calls/signaling/xmppsig ./calls/audio

# Pion-loopback test 
test_loop:
	go test -race -v -count=1 -run '^(TestXmppsigPionLoop_|TestHookTrack_|TestSetTrackHandler_)' ./calls/signaling/xmppsig

test_indocker:
	DOCKER_BUILDKIT=1 docker build --progress=plain --build-arg "TD_COMMIT=${TD_COMMIT}" --build-arg "MAKEOPTS=${MAKEOPTS}" --target test .

lint:
	$(GOPATH)/bin/golint ./...

build_indocker:
	DOCKER_BUILDKIT=1 docker build --build-arg "TD_COMMIT=${TD_COMMIT}" --build-arg "VERSION=${VERSION}" --build-arg "MAKEOPTS=${MAKEOPTS}" --output=release --target binaries .

build_indocker_staging:
	DOCKER_BUILDKIT=1 docker build --build-arg "TD_COMMIT=${TD_COMMIT}" --build-arg "MAKEOPTS=${MAKEOPTS}" --network host --output=release --target binaries -f staging.Dockerfile .

build_tdlib:
	DOCKER_BUILDKIT=1 docker build --build-arg "TD_COMMIT=${TD_COMMIT}" --build-arg "MAKEOPTS=${MAKEOPTS}" --output=tdlib --target binaries -f tdlib.Dockerfile .
