diff --git a/classes/populate_sdk_qt6.bbclass b/classes/populate_sdk_qt6.bbclass new file mode 100644 index 0000000..14fb21c --- /dev/null +++ b/classes/populate_sdk_qt6.bbclass @@ -0,0 +1,5 @@ +inherit populate_sdk_qt6_base + +# include all available modules +TOOLCHAIN_HOST_TASK:append = " nativesdk-packagegroup-qt6-toolchain-host" +TOOLCHAIN_TARGET_TASK:append = " packagegroup-qt6-modules" diff --git a/classes/populate_sdk_qt6_base.bbclass b/classes/populate_sdk_qt6_base.bbclass index d66db42..a6a7478 100644 --- a/classes/populate_sdk_qt6_base.bbclass +++ b/classes/populate_sdk_qt6_base.bbclass @@ -10,6 +10,9 @@ PATH_DELIM:sdkmingw32 = ";" QT6_INSTALL_HOST_LIBEXECDIR = "${QT6_INSTALL_LIBEXECDIR}" QT6_INSTALL_HOST_LIBEXECDIR:sdkmingw32 = "${QT6_INSTALL_LIBEXECDIR:mingw32}" +TARGET_SYSROOT ?= "${SDKTARGETSYSROOT}" +NATIVE_SYSROOT ?= "${SDKPATHNATIVE}" + create_qt6_sdk_files () { # Generate a qt.conf file to be deployed with the SDK qtconf=${WORKDIR}/qt.conf @@ -28,23 +31,23 @@ create_qt6_sdk_files () { echo 'Settings = ${QT6_INSTALL_SYSCONFDIR}' >> $qtconf echo 'Examples = ${QT6_INSTALL_EXAMPLESDIR}' >> $qtconf echo 'Tests = ${QT6_INSTALL_TESTSDIR}' >> $qtconf - echo 'HostPrefix = ${@os.path.relpath(d.expand("${SDKPATHNATIVE}"), d.expand("${SDKPATHNATIVE}${QT6_INSTALL_BINDIR}"))}' >> $qtconf - echo 'HostData = ${@os.path.relpath(d.expand("${SDKTARGETSYSROOT}${QT6_INSTALL_ARCHDATADIR}"), d.expand("${SDKPATHNATIVE}"))}' >> $qtconf - echo 'HostBinaries = ${@os.path.relpath(d.expand("${SDKPATHNATIVE}${QT6_INSTALL_BINDIR}"), d.expand("${SDKPATHNATIVE}"))}' >> $qtconf - echo 'HostLibraries = ${@os.path.relpath(d.expand("${SDKPATHNATIVE}${QT6_INSTALL_LIBDIR}"), d.expand("${SDKPATHNATIVE}"))}' >> $qtconf - echo 'HostLibraryExecutables = ${@os.path.relpath(d.expand("${SDKPATHNATIVE}${QT6_INSTALL_HOST_LIBEXECDIR}"), d.expand("${SDKPATHNATIVE}"))}' >> $qtconf - echo 'Sysroot = ${@os.path.relpath(d.expand("${SDKTARGETSYSROOT}"), d.expand("${SDKPATHNATIVE}${QT6_INSTALL_BINDIR}"))}' >> $qtconf + echo 'HostPrefix = ${@os.path.relpath("${NATIVE_SYSROOT}", "${NATIVE_SYSROOT}${QT6_INSTALL_BINDIR}")}' >> $qtconf + echo 'HostData = ${@os.path.relpath("${TARGET_SYSROOT}${QT6_INSTALL_ARCHDATADIR}", "${NATIVE_SYSROOT}")}' >> $qtconf + echo 'HostBinaries = ${@os.path.relpath("${NATIVE_SYSROOT}${QT6_INSTALL_BINDIR}", "${NATIVE_SYSROOT}")}' >> $qtconf + echo 'HostLibraries = ${@os.path.relpath("${NATIVE_SYSROOT}${QT6_INSTALL_LIBDIR}", "${NATIVE_SYSROOT}")}' >> $qtconf + echo 'HostLibraryExecutables = ${@os.path.relpath("${NATIVE_SYSROOT}${QT6_INSTALL_HOST_LIBEXECDIR}", "${NATIVE_SYSROOT}")}' >> $qtconf + echo 'Sysroot = ${@os.path.relpath("${TARGET_SYSROOT}", "${NATIVE_SYSROOT}${QT6_INSTALL_BINDIR}")}' >> $qtconf echo 'HostSpec = linux-oe-g++' >> $qtconf echo 'TargetSpec = linux-oe-g++' >> $qtconf echo 'SysrootifyPrefix = true' >> $qtconf # add qt.conf to both bin and libexec dirs - cp ${WORKDIR}/qt.conf ${SDK_OUTPUT}${SDKPATHNATIVE}${QT6_INSTALL_BINDIR}/ - cp ${WORKDIR}/qt.conf ${SDK_OUTPUT}${SDKPATHNATIVE}${QT6_INSTALL_HOST_LIBEXECDIR}/ - cp ${WORKDIR}/qt.conf ${SDK_OUTPUT}${SDKPATHNATIVE}${QT6_INSTALL_BINDIR}/target_qt.conf + cp ${WORKDIR}/qt.conf ${SDK_OUTPUT}${NATIVE_SYSROOT}${QT6_INSTALL_BINDIR}/ + cp ${WORKDIR}/qt.conf ${SDK_OUTPUT}${NATIVE_SYSROOT}${QT6_INSTALL_HOST_LIBEXECDIR}/ + cp ${WORKDIR}/qt.conf ${SDK_OUTPUT}${NATIVE_SYSROOT}${QT6_INSTALL_BINDIR}/target_qt.conf - install -d ${SDK_OUTPUT}${SDKPATHNATIVE}/environment-setup.d - script=${SDK_OUTPUT}${SDKPATHNATIVE}/environment-setup.d/qt6.sh + install -d ${SDK_OUTPUT}${NATIVE_SYSROOT}/environment-setup.d + script=${SDK_OUTPUT}${NATIVE_SYSROOT}/environment-setup.d/qt6.sh touch $script echo 'export OE_QMAKE_CFLAGS="$CFLAGS"' >> $script echo 'export OE_QMAKE_CXXFLAGS="$CXXFLAGS"' >> $script @@ -57,36 +60,21 @@ create_qt6_sdk_files () { echo 'export OE_QMAKE_OBJCOPY="$OBJCOPY"' >> $script echo 'export OE_QMAKE_AR_LTCG="${HOST_PREFIX}gcc-ar"' >> $script - mkspec=${SDK_OUTPUT}${SDKTARGETSYSROOT}${QT6_INSTALL_MKSPECSDIR}/linux-oe-g++/qmake.conf - echo "count(QMAKE_AR, 1): QMAKE_AR = ${AR} cqs" >> $mkspec - echo "count(QMAKE_AR_LTCG, 1): QMAKE_AR_LTCG = ${HOST_PREFIX}gcc-ar cqs" >> $mkspec - echo "isEmpty(QMAKE_STRIP): QMAKE_STRIP = ${STRIP}" >> $mkspec - echo "isEmpty(QMAKE_OBJCOPY): QMAKE_OBJCOPY = ${OBJCOPY}" >> $mkspec - echo "isEmpty(QMAKE_CC): QMAKE_CC = ${CC}" >> $mkspec - echo "isEmpty(QMAKE_CFLAGS): QMAKE_CFLAGS = ${CFLAGS}" >> $mkspec - echo "isEmpty(QMAKE_CXX): QMAKE_CXX = ${CXX}" >> $mkspec - echo "isEmpty(QMAKE_CXXFLAGS): QMAKE_CXXFLAGS = ${CXXFLAGS}" >> $mkspec - echo "isEmpty(QMAKE_LINK): QMAKE_LINK = ${CXX}" >> $mkspec - echo "isEmpty(QMAKE_LFLAGS): QMAKE_LFLAGS = ${LDFLAGS}" >> $mkspec - sed -i $mkspec \ - -e 's:${RECIPE_SYSROOT}:$$[QT_SYSROOT]:' \ - -e 's:${TARGET_PREFIX}:$$[QT_HOST_PREFIX]${bindir}/${TARGET_SYS}/${TARGET_PREFIX}:' - # Generate a toolchain file for using Qt without running setup-environment script - cat > ${SDK_OUTPUT}${SDKPATHNATIVE}/usr/share/cmake/Qt6Toolchain.cmake < ${SDK_OUTPUT}${NATIVE_SYSROOT}/usr/share/cmake/Qt6Toolchain.cmake < ${SDK_OUTPUT}${SDKPATHNATIVE}/usr/share/conan/profile < ${SDK_OUTPUT}${NATIVE_SYSROOT}/usr/share/conan/profile <> ${D}${QT6_INSTALL_MKSPECSDIR}/linux-oe-g++/qmake.conf <