################################################################################
#	Makefile	For BWidgets-test
#	T.Barnaby,	BEAM Ltd,	2021-05-06
################################################################################
#

DIR		= $(shell pwd)
TARGET		?= fedora
#TARGET		?= dsmc
UseQt		= 6

ifeq ("${TARGET}","dsmc")
toolsSysroot 	= /usr/share/bsyslinux2-qt6-arm64/sysroots/armv8a-poky-linux
toolsPathBase	= /usr/share/bsyslinux2-qt6-arm64/sysroots/x86_64-pokysdk-linux
toolsPath	= ${toolsPathBase}/usr/bin/aarch64-poky-linux
toolsPrefix	= aarch64-poky-linux-
toolsFlags	= --sysroot=${toolsSysroot}
toolsFlags	+= -mcpu=cortex-a53 -march=armv8-a+crc+crypto -fstack-protector-strong  -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -Wl,-z,relro,-z,now

CROSS_COMPILE	:= ${toolsPrefix}
CXX		= ${toolsPrefix}g++ ${toolsFlags}
CC		= ${toolsPrefix}gcc ${toolsFlags}
LD		= ${toolsPrefix}ld ${toolsFlags}
CXXFLAGS	+= ${toolsFlags} -O2 -g
ARCH_LIB	= lib

export PATH		:= ${toolsPath}:${PATH}
export CROSS_COMPILE	:= ${toolsPrefix}

else
ARCH_LIB	= lib64

endif

ifeq ("${UseQt}","5")
# QT
QTDIR		= ${toolsSysroot}/usr/${ARCH_LIB}/qt5
QTINCDIR	= ${toolsSysroot}/usr/include/qt5
QTMOC		= $(QTDIR)/bin/moc
CXXFLAGS	+= -I${QTINCDIR} -I${QTINCDIR}/Qt -I${QTINCDIR}/QtGui -I${QTINCDIR}/QtWidgets -I${QTINCDIR}/QtCore
CXXFLAGS	+= -I${QTINCDIR}/QtGui/5.15.7/QtGui
CXXFLAGS	+= -I${QTINCDIR}/QtGui/5.15.8/QtGui
CXXFLAGS	+= -I${QTINCDIR}/QtGui/5.15.9/QtGui
CXXFLAGS	+= -I${QTINCDIR}/QtGui/5.15.10/QtGui
LDLIBS		:= -lQt5Core -lQt5Gui -lQt5Widgets ${LDLIBS}
endif

ifeq ("${UseQt}","6")
ifeq ("${TARGET}","dsmc")
QTDIR		= ${toolsSysroot}/usr/lib
QTINCDIR	= ${toolsSysroot}/usr/include
QTMOC		= ${toolsPathBase}/usr/libexec/moc
CXXFLAGS	+= -I${QTINCDIR}/QtGui/6.5.0/QtGui
else
QTDIR		= ${toolsSysroot}/usr/${ARCH_LIB}/qt6
QTINCDIR	= ${toolsSysroot}/usr/include/qt6
QTMOC		= $(QTDIR)/libexec/moc
CXXFLAGS	+= -I${QTINCDIR}/QtGui/6.5.1/QtGui
endif

CXXFLAGS	+= -I${QTINCDIR} -I${QTINCDIR}/Qt -I${QTINCDIR}/QtGui -I${QTINCDIR}/QtWidgets -I${QTINCDIR}/QtCore
LDLIBS		:= -lQt6Core -lQt6Gui -lQt6Widgets ${LDLIBS}
endif

${BUILDDIR}%_moc.o: %.h
	@echo "Creating moc $@ ..."
	$(QTMOC) -o ${BUILDDIR}$<.cpp $<
	$(CXX) $(CXXFLAGS) -c -o $@ ${BUILDDIR}$<.cpp


CXXFLAGS	+= -DTARGET=\"$(TARGET)\" -DTARGET_$(TARGET)
CXXFLAGS	+= -I.
CXXFLAGS	+= -I${toolsSysroot}/usr/include/gstreamer-1.0 -I${toolsSysroot}/usr/include/glib-2.0 -I${toolsSysroot}/usr/lib64/glib-2.0/include -I${toolsSysroot}/usr/lib/glib-2.0/include
LDLIBS		+= -lgstpbutils-1.0 -lgstvideo-1.0 -lgstaudio-1.0 -lgstbase-1.0 -lgstreamer-1.0 -lgobject-2.0 -lglib-2.0
LDLIBS		+= -lgstwayland-1.0
LDLIBS		+= -lgstvideo-1.0
LDLIBS		+= -lgstapp-1.0

# Main bits
PROG		= test1
OBJS		+= TestVideo.o TestVideo_moc.o
OBJS		:= $(addprefix ${BUILDDIR},${OBJS})
PROG		:= $(addprefix ${BUILDDIR},${PROG})

export GST_PLUGIN_PATH	:= ${DIR}/waylandsink/gstreamer1.0-plugins-bad/build/ext/wayland:${GST_PLUGIN_PATH}
	
all:	$(PROG)

clean:
	rm -f *.o $(PROG)

${PROG}: $(OBJS)
	$(CXX) $(LDFLAGS) -o $@ $(OBJS) $(LDLIBS)

run:
	echo "GST_PLUGIN_PATH: ${GST_PLUGIN_PATH}"
	./${PROG}
	
run-debug:
	WAYLAND_DEBUG=1 ${PROG}


release:
	(cd ..; tar -czf test011-qt6-video.tar.gz test011-qt6-video/Makefile test011-qt6-video/TestVideo.cpp test011-qt6-video/TestVideo.h)
