.PHONY: all test

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

# GOTAGS=signal_legacy builds the OMEMO cgo bindings against the pre-fork
# libsignal-protocol-c instead of libomemo-c (e.g. on Debian bullseye, which
# only packages the former) - Omemo0 (eu.siacs.conversations.axolotl) only,
# no Omemo1/Omemo2 (both need protocol v4, which vanilla libsignal-protocol-c
# doesn't have).
GOTAGS :=

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 $(if $(filter-out 0,$(NO_MOLD)),,-fuse-ld=mold)" \
	go build -ldflags "-X main.commit=${COMMIT}" -tags "${GOTAGS}" -o release/telegabber

test:
	go test -race -short -tags "${GOTAGS}" -v ./config ./ ./telegram ./xmpp ./xmpp/gateway ./xmpp/jingle ./xmpp/extensions ./persistence ./telegram/formatter ./badger ./e2ee/... ./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 "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 .
