# $NetBSD: Makefile.common,v 1.42 2024/11/12 21:42:53 nros Exp $
# used by audio/qt6-qtspeech/Makefile
# used by comms/qt6-qtconnectivity/Makefile
# used by databases/qt6-odbc/Makefile
# used by databases/qt6-psql/Makefile
# used by devel/qt6-qt5compat/Makefile
# used by devel/qt6-qttools/Makefile
# used by devel/qt6-qtwayland/Makefile
# used by geography/qt6-qtlocation/Makefile
# used by geography/qt6-qtpositioning/Makefile
# used by graphics/qt6-qt3d/Makefile
# used by graphics/qt6-qtcharts/Makefile
# used by graphics/qt6-qtdatavis3d/Makefile
# used by graphics/qt6-qtimageformats/Makefile
# used by graphics/qt6-qtlottie/Makefile
# used by graphics/qt6-qtquick3d/Makefile
# used by graphics/qt6-qtquicktimeline/Makefile
# used by graphics/qt6-qtshadertools/Makefile
# used by graphics/qt6-qtsvg/Makefile
# used by inputmethod/qt6-qtvirtualkeyboard/Makefile
# used by lang/qt6-qtdeclarative/Makefile
# used by lang/qt6-qtlanguageserver/Makefile
# used by lang/qt6-qtscxml/Makefile
# used by misc/qt6-qtsensors/Makefile
# used by multimedia/qt6-qtmultimedia/Makefile
# used by net/qt6-qtgrpc/Makefile
# used by net/qt6-qtremoteobjects/Makefile
# used by net/qt6-qtwebsockets/Makefile
# used by security/qt6-qtnetworkauth/Makefile
# used by www/qt6-qthttpserver/Makefile
# used by www/qt6-qtwebchannel/Makefile
# used by x11/qt6-qtbase/Makefile
# used by x11/qt6-qtserialport/Makefile
# used by x11/qt6-qttranslations/Makefile

.include "../../meta-pkgs/qt6/Makefile.common"

.include "../../mk/dlopen.buildlink3.mk"
BUILDLINK_TRANSFORM+=	opt:-ldl:${BUILDLINK_LDADD.dl:Q}

USE_LANGUAGES=		c c++
USE_TOOLS+=		cmake gmake perl:build pkg-config
#TOOL_DEPENDS+=		ninja-build-[0-9]*:../../devel/ninja-build

# https://doc.qt.io/qt-6/supported-platforms.html
GCC_REQD+=		9

# required for -msse2
.if ${MACHINE_ARCH} == "i386"
CFLAGS+=		-mstackrealign
.endif

# Avoid failures to due 'register' usage in X11 headers.
CXXFLAGS+=		-Wno-register

# wcstof(3) etc. is used in C++ code.
CFLAGS.NetBSD+=		-D_NETBSD_SOURCE

CFLAGS.SunOS+=		-D__EXTENSIONS__

# include/openssl/e_os2.h:283:25: error: '_Noreturn' does not name a type
CXXFLAGS.SunOS+=	-D_Noreturn=""

# for GL_GLEXT_LEGACY with GL/gl.h error, GL_ARB_shader_objects is not defined.
BUILDLINK_TRANSFORM+=	rm:-Wundef

MAKE_ENV+=		QTPREFIX=${QTPREFIX:Q}

# pkgsrc does not set rpath during build
# but qdbuscpp2xml and qdbuscpp2xml are
# executed during build,
# some libs also link to libs in lib so
# this is needed by some ld:s to not
# cause linking errors.
.if ${OPSYS} == "Darwin"
CMAKE_INSTALL_NAME_DIR=	${QTPREFIX}/lib
MAKE_ENV+=		DYLD_LIBRARY_PATH=${WRKSRC}/lib
.else
MAKE_ENV+=		LD_LIBRARY_PATH=${WRKSRC}/lib
.endif

# avoid creating a .qt directory in the users home directory
SCRIPTS_ENV+=		HOME=${WRKDIR}

.if "${PKGPATH}" != "x11/qt6-qtbase"
CMAKE_INSTALL_PREFIX=	${QTPREFIX}
.include "../../devel/cmake/configure-settings.mk"
CONFIGURE_ARGS+=	-- ${CMAKE_CONFIGURE_ARGS}
QTCONFDIR?=		.
do-configure:
	cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} ${QTPREFIX}/bin/qt-configure-module ${QTCONFDIR} ${CONFIGURE_ARGS}
.endif

#do-build:
#	cd ${WRKSRC}/${QTCONFDIR} && ${SETENV} ${MAKE_ENV} ninja ${BUILD_TARGET}

#do-install:
#	cd ${WRKSRC}/${QTCONFDIR} && ${SETENV} ${INSTALL_ENV} ninja ${INSTALL_TARGET}

PKGCONFIG_OVERRIDE_STAGE=	post-build
.PHONY: pkgconfig-link
post-install: pkgconfig-link
pkgconfig-link:
	${RUN}	if ${TEST} -d ${DESTDIR}${QTPREFIX}/lib/pkgconfig; then			\
		${ECHO} -- Linking pkg-config files to pkgconfig dir in prefix;		\
		${INSTALL_DATA_DIR} ${DESTDIR}${PREFIX}/lib/pkgconfig;			\
		${FIND} ${DESTDIR}${QTPREFIX}/lib/pkgconfig -name "*.pc" -print |	\
			while read pcpath; do						\
			pcfile=`basename $${pcpath}`;					\
			cd ${DESTDIR}${PREFIX}/lib/pkgconfig && 			\
			${LN} -f -s ${QTPREFIX}/lib/pkgconfig/$${pcfile} $${pcfile};	\
		done									\
		fi
