xref: /OK3568_Linux_fs/yocto/meta-qt5/recipes-qt/qt5/qt5-creator_git.bb (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593SmuzhiyunSUMMARY = "Qt Creator is a new cross-platform Qt IDE"
2*4882a593Smuzhiyun
3*4882a593Smuzhiyun# Note:
4*4882a593Smuzhiyun# The toolchain auto detection does not work completely yet. To compile/debug
5*4882a593Smuzhiyun# open menu 'Tools/Options and select 'Build & Run'. In tab 'Kits' select 'Desktop'
6*4882a593Smuzhiyun# 'Compiler/Manage...' and add local gcc'. At 'Debugger' select
7*4882a593Smuzhiyun# 'System GDB at /usr/bin/gdb.
8*4882a593Smuzhiyun
9*4882a593SmuzhiyunHOMEPAGE = "https://qt-project.org/"
10*4882a593SmuzhiyunLICENSE = "GPL-3.0-only"
11*4882a593SmuzhiyunLIC_FILES_CHKSUM = " \
12*4882a593Smuzhiyun    file://LICENSE.GPL3-EXCEPT;md5=763d8c535a234d9a3fb682c7ecb6c073 \
13*4882a593Smuzhiyun"
14*4882a593Smuzhiyun
15*4882a593Smuzhiyuninherit qmake5 pkgconfig mime-xdg
16*4882a593Smuzhiyun
17*4882a593SmuzhiyunDEPENDS += "qtbase qtscript qtxmlpatterns qtx11extras qtdeclarative qttools qttools-native qtsvg chrpath-replacement-native zlib"
18*4882a593SmuzhiyunDEPENDS:append:libc-musl = " libexecinfo"
19*4882a593Smuzhiyun
20*4882a593SmuzhiyunSRCREV = "39ac7b1bf6add473026687003311b702742b6b21"
21*4882a593SmuzhiyunPV = "4.15.2+git${SRCPV}"
22*4882a593Smuzhiyun# Patches from https://github.com/meta-qt5/qtcreator/commits/b4.9.2
23*4882a593Smuzhiyun# 4.9.2.meta-qt5.1
24*4882a593SmuzhiyunSRC_URI = " \
25*4882a593Smuzhiyun    git://code.qt.io/qt-creator/qt-creator.git;branch=4.15 \
26*4882a593Smuzhiyun    file://0001-app-Use-malloc_trim-only-on-glibc.patch \
27*4882a593Smuzhiyun    file://0002-clangformat-Fix-build-with-LLVM-13.patch \
28*4882a593Smuzhiyun    file://0003-clangformat-Fix-build-with-LLVM-13.patch \
29*4882a593Smuzhiyun"
30*4882a593SmuzhiyunSRC_URI:append:libc-musl = " file://0001-Link-with-libexecinfo-on-musl.patch"
31*4882a593Smuzhiyun
32*4882a593SmuzhiyunS = "${WORKDIR}/git"
33*4882a593Smuzhiyun
34*4882a593SmuzhiyunEXTRA_QMAKEVARS_PRE += " \
35*4882a593Smuzhiyun    IDE_LIBRARY_BASENAME=${baselib}${QT_DIR_NAME} \
36*4882a593Smuzhiyun    CONFIG+=disable_external_rpath \
37*4882a593Smuzhiyun"
38*4882a593Smuzhiyun
39*4882a593SmuzhiyunEXTRANATIVEPATH += "chrpath-native"
40*4882a593Smuzhiyun
41*4882a593SmuzhiyunPACKAGECONFIG ??= ""
42*4882a593SmuzhiyunPACKAGECONFIG:append:toolchain-clang = " clang"
43*4882a593Smuzhiyun
44*4882a593Smuzhiyun# Important note: In case clang was added to qttools' PACKAGECONFIG, it has to
45*4882a593Smuzhiyun# be added here too - otherwise build fails trying to link native clang libraries
46*4882a593SmuzhiyunPACKAGECONFIG[clang] = ",,clang"
47*4882a593Smuzhiyun
48*4882a593SmuzhiyunCOMPATIBLE_HOST:toolchain-clang:riscv32 = "null"
49*4882a593SmuzhiyunCOMPATIBLE_HOST:toolchain-clang:riscv64 = "null"
50*4882a593Smuzhiyun
51*4882a593Smuzhiyundo_configure:append() {
52*4882a593Smuzhiyun    # Find native tools
53*4882a593Smuzhiyun    sed -i 's:${STAGING_BINDIR}.*/qdoc:${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/qdoc:g' ${B}/Makefile
54*4882a593Smuzhiyun    if [ -e ${B}/share/qtcreator/translations/Makefile ]; then
55*4882a593Smuzhiyun        sed -i 's:${STAGING_BINDIR}/lrelease:${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/lrelease:g' ${B}/share/qtcreator/translations/Makefile
56*4882a593Smuzhiyun        sed -i 's:${STAGING_BINDIR}/lupdate:${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/lupdate:g' ${B}/share/qtcreator/translations/Makefile
57*4882a593Smuzhiyun        sed -i 's:${STAGING_BINDIR}/xmlpatterns:${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/xmlpatterns:g' ${B}/share/qtcreator/translations/Makefile
58*4882a593Smuzhiyun        sed -i 's:${STAGING_BINDIR}/lconvert:${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/lconvert:g' ${B}/share/qtcreator/translations/Makefile
59*4882a593Smuzhiyun    fi
60*4882a593Smuzhiyun}
61*4882a593Smuzhiyun
62*4882a593Smuzhiyundo_install() {
63*4882a593Smuzhiyun    oe_runmake install INSTALL_ROOT=${D}${prefix}
64*4882a593Smuzhiyun    if [ "${@bb.utils.contains("PACKAGECONFIG", "clang", "1", "0", d)}" = "1" ]; then
65*4882a593Smuzhiyun        # Remove RPATHs embedded in bins
66*4882a593Smuzhiyun        chrpath --delete ${D}${libdir}/qtcreator/plugins/libClang*
67*4882a593Smuzhiyun        chrpath --delete ${D}${libexecdir}/qtcreator/clang*
68*4882a593Smuzhiyun    fi
69*4882a593Smuzhiyun}
70*4882a593Smuzhiyun
71*4882a593SmuzhiyunFILES:${PN} += " \
72*4882a593Smuzhiyun    ${datadir}/qtcreator \
73*4882a593Smuzhiyun    ${datadir}/metainfo \
74*4882a593Smuzhiyun    ${datadir}/icons \
75*4882a593Smuzhiyun    ${libdir}${QT_DIR_NAME}/qtcreator \
76*4882a593Smuzhiyun"
77*4882a593Smuzhiyun
78*4882a593SmuzhiyunFILES:${PN}-dev += " \
79*4882a593Smuzhiyun    ${libdir}${QT_DIR_NAME}/qtcreator/*${SOLIBSDEV} \
80*4882a593Smuzhiyun"
81*4882a593Smuzhiyun
82*4882a593SmuzhiyunRDEPENDS:${PN} += "perl python3"
83*4882a593SmuzhiyunRCONFLICTS:${PN} = "qt-creator"
84*4882a593Smuzhiyun
85*4882a593Smuzhiyun# To give best user experience out of the box..
86*4882a593SmuzhiyunRRECOMMENDS:${PN} += " \
87*4882a593Smuzhiyun    packagegroup-qt5-toolchain-target \
88*4882a593Smuzhiyun    binutils \
89*4882a593Smuzhiyun    ccache \
90*4882a593Smuzhiyun    make \
91*4882a593Smuzhiyun    gcc-symlinks g++-symlinks cpp-symlinks \
92*4882a593Smuzhiyun    gdb \
93*4882a593Smuzhiyun    cmake \
94*4882a593Smuzhiyun    qtwebengine-dev \
95*4882a593Smuzhiyun    qtwebengine-mkspecs \
96*4882a593Smuzhiyun    qtwebengine-plugins \
97*4882a593Smuzhiyun    ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'qtwebengine-qmlplugins', '', d)} \
98*4882a593Smuzhiyun"
99*4882a593Smuzhiyun
100*4882a593Smuzhiyun# ERROR: qt5-creator-4.5.1-r0 do_package_qa: QA Issue: No GNU_HASH in the elf binary: '/OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/qt5-creator/4.5.1-r0/packages-split/qt5-creator/usr/lib/qt5/qtcreator/libqbscore.so.1.10.1'
101*4882a593SmuzhiyunINSANE_SKIP:${PN} += "ldflags"
102*4882a593Smuzhiyun
103*4882a593Smuzhiyuninherit features_check
104*4882a593SmuzhiyunREQUIRED_DISTRO_FEATURES ?= "x11 opengl"
105*4882a593Smuzhiyun
106*4882a593Smuzhiyunpython() {
107*4882a593Smuzhiyun    if 'meta-python2' not in d.getVar('BBFILE_COLLECTIONS').split():
108*4882a593Smuzhiyun        raise bb.parse.SkipRecipe('Requires meta-python2 to be present.')
109*4882a593Smuzhiyun}
110