# 기존 SDK image의 개발 headers로만 빌드한다. 설치/다운로드를 수행하지 않는다.
SDK ?= /opt/nvidia/deepstream/deepstream
PYTHON ?= python3
# SDK binding은 internals v5다. Torch의 v11 headers를 대신 사용하지 않는다.
PYBIND_INCLUDE ?=
BUILD_DIR ?= build
EXT_SUFFIX := $(shell $(PYTHON) -c 'import sysconfig; print(sysconfig.get_config_var("EXT_SUFFIX"))')
CXXFLAGS += -O2 -std=c++17 -shared -fPIC -fvisibility=hidden
INCLUDES := -I$(shell $(PYTHON) -c 'import sysconfig; print(sysconfig.get_path("include"))') $(if $(PYBIND_INCLUDE),-I$(PYBIND_INCLUDE)) -I$(SDK)/service-maker/includes -I$(SDK)/sources/includes $(shell pkg-config --cflags gstreamer-rtp-1.0)
LIBS := -L$(SDK)/lib -lnvds_service_maker -lnvds_meta -lnvdsgst_meta $(shell pkg-config --libs gstreamer-rtp-1.0)

.PHONY: all
all: $(BUILD_DIR)/contextra_frame_meta$(EXT_SUFFIX) $(BUILD_DIR)/libcontextra_rtp_time.so

$(BUILD_DIR)/libcontextra_rtp_time.so: rtp_signal.cpp rtp_time.hpp input_queue.hpp encoded_cache.hpp Makefile
	mkdir -p $(BUILD_DIR)
	$(CXX) $(filter-out -fvisibility=hidden,$(CXXFLAGS)) $(INCLUDES) $< $(LIBS) -lnvds_service_maker_utils -Wl,--enable-new-dtags,-rpath,'$(SDK)/lib' -o $@

$(BUILD_DIR)/contextra_frame_meta$(EXT_SUFFIX): binding.cpp rtp_time.hpp Makefile
	test -n "$(PYBIND_INCLUDE)" && test -f "$(PYBIND_INCLUDE)/pybind11/pybind11.h"
	mkdir -p $(BUILD_DIR)
	$(CXX) $(CXXFLAGS) $(INCLUDES) $< $(LIBS) -o $@
