xref: /OK3568_Linux_fs/yocto/meta-openembedded/meta-oe/recipes-extended/wxwidgets/wxwidgets_3.1.5.bb (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593SmuzhiyunSUMMARY = "Cross-Plattform GUI Library"
2*4882a593SmuzhiyunDESCRIPTION = "wxWidgets is a free and open source cross-platform C++ framework for writing advanced GUI applications using native controls."
3*4882a593SmuzhiyunHOMEPAGE = "https://www.wxwidgets.org/"
4*4882a593SmuzhiyunBUGTRACKER = "https://trac.wxwidgets.org/"
5*4882a593Smuzhiyun
6*4882a593Smuzhiyun# WXwindows licence is a modified version of LGPL explicitly allowing not
7*4882a593Smuzhiyun# distributing the sources of an application using the library even in the
8*4882a593Smuzhiyun# case of static linking.
9*4882a593SmuzhiyunLICENSE = "WXwindows"
10*4882a593SmuzhiyunLIC_FILES_CHKSUM = "file://docs/licence.txt;md5=981f50a934828620b08f44d75db557c6"
11*4882a593Smuzhiyun
12*4882a593Smuzhiyuninherit ${@bb.utils.contains('PACKAGECONFIG', 'qt', 'cmake_qt5', 'cmake', d)}
13*4882a593Smuzhiyuninherit lib_package binconfig pkgconfig
14*4882a593Smuzhiyun
15*4882a593SmuzhiyunDEPENDS += " \
16*4882a593Smuzhiyun    jpeg \
17*4882a593Smuzhiyun    libpng \
18*4882a593Smuzhiyun    tiff \
19*4882a593Smuzhiyun"
20*4882a593Smuzhiyun
21*4882a593SmuzhiyunSRC_URI = " \
22*4882a593Smuzhiyun    gitsm://github.com/wxWidgets/wxWidgets.git;branch=master;protocol=https \
23*4882a593Smuzhiyun    file://0001-wx-config.in-Disable-cross-magic-it-does-not-work-fo.patch \
24*4882a593Smuzhiyun    file://fix-libdir-for-multilib.patch \
25*4882a593Smuzhiyun    file://respect-DESTDIR-when-create-link.patch \
26*4882a593Smuzhiyun    file://not-append-system-name-to-lib-name.patch \
27*4882a593Smuzhiyun    file://wx-config-fix-libdir-for-multilib.patch \
28*4882a593Smuzhiyun"
29*4882a593SmuzhiyunSRCREV= "9c0a8be1dc32063d91ed1901fd5fcd54f4f955a1"
30*4882a593SmuzhiyunS = "${WORKDIR}/git"
31*4882a593Smuzhiyun
32*4882a593Smuzhiyun# These can be either 'builtin' or 'sys' and builtin means cloned soures are
33*4882a593Smuzhiyun# build. So these cannot be PACKAGECONFIGs and let's use libs where we can (see
34*4882a593Smuzhiyun# DEPENDS)
35*4882a593SmuzhiyunEXTRA_OECMAKE += " \
36*4882a593Smuzhiyun    -DwxUSE_GLCANVAS_EGL=OFF \
37*4882a593Smuzhiyun    -DwxUSE_LIBJPEG=sys \
38*4882a593Smuzhiyun    -DwxUSE_LIBPNG=sys \
39*4882a593Smuzhiyun    -DwxUSE_LIBTIFF=sys \
40*4882a593Smuzhiyun    -DwxUSE_REGEX=builtin \
41*4882a593Smuzhiyun    -DwxPLATFORM_LIB_DIR=${@d.getVar('baselib').replace('lib', '')} \
42*4882a593Smuzhiyun"
43*4882a593SmuzhiyunEXTRA_OECMAKE:append:libc-musl = " \
44*4882a593Smuzhiyun    -DHAVE_LOCALE_T=OFF \
45*4882a593Smuzhiyun"
46*4882a593SmuzhiyunEXTRA_OECMAKE:append:class-target = ' -DEGREP="/bin/grep -E"'
47*4882a593Smuzhiyun
48*4882a593Smuzhiyun# OpenGL support currently seems tied to using libglu, which requires x11
49*4882a593SmuzhiyunPACKAGECONFIG ?= "${@bb.utils.contains_any('DISTRO_FEATURES', 'x11 wayland', 'gtk', 'no_gui', d)} \
50*4882a593Smuzhiyun    ${@bb.utils.contains('DISTRO_FEATURES', 'x11 opengl', 'opengl', '', d)} \
51*4882a593Smuzhiyun"
52*4882a593Smuzhiyun
53*4882a593SmuzhiyunPACKAGECONFIG:remove:class-native = "opengl"
54*4882a593Smuzhiyun
55*4882a593Smuzhiyun# Note on toolkit-PACKAGECONFIGs: select exactly one of 'no_gui' / 'gtk' / 'qt'
56*4882a593SmuzhiyunPACKAGECONFIG[no_gui] = "-DwxUSE_GUI=OFF,,,,,qt gtk opengl"
57*4882a593SmuzhiyunPACKAGECONFIG[gtk] = "-DwxBUILD_TOOLKIT=gtk3 -DwxUSE_GUI=ON,,gtk+3,,,no_gui qt"
58*4882a593SmuzhiyunPACKAGECONFIG[qt] = "-DwxBUILD_TOOLKIT=qt  -DwxUSE_GUI=ON,,qtbase,,,no_gui gtk"
59*4882a593Smuzhiyunpython () {
60*4882a593Smuzhiyun    pkgconfig = d.getVar('PACKAGECONFIG')
61*4882a593Smuzhiyun    if (not 'no_gui' in pkgconfig) and (not 'gtk' in pkgconfig) and (not 'qt' in pkgconfig):
62*4882a593Smuzhiyun        bb.error("PACKAGECONFIG must select a toolkit. Add one of no_gui / gtk / qt!")
63*4882a593Smuzhiyun}
64*4882a593Smuzhiyun
65*4882a593Smuzhiyun# Notes on other PACKAGECONFIGs:
66*4882a593Smuzhiyun# * 'no_gui' overrides some configs below so they are marked as conflicting
67*4882a593Smuzhiyun#   with 'no_gui' to avoid surprises
68*4882a593Smuzhiyun# * qt+gstreamer is broken due to incorrect references on glib-2.0 -> mark
69*4882a593Smuzhiyun#   as conflicting
70*4882a593Smuzhiyun# * wxUSE_LIBGNOMEVFS is for gtk2 (see init.cmake) which we don't support
71*4882a593Smuzhiyun#   -> no gvfs PACKAGECONFIG
72*4882a593Smuzhiyun# * libmspack is in meta-security
73*4882a593SmuzhiyunPACKAGECONFIG[gstreamer] = "-DwxUSE_MEDIACTRL=ON,-DwxUSE_MEDIACTRL=OFF,gstreamer1.0-plugins-base,,,no_gui qt"
74*4882a593SmuzhiyunPACKAGECONFIG[libsecret] = "-DwxUSE_SECRETSTORE=ON,-DwxUSE_SECRETSTORE=OFF,libsecret,,,no_gui"
75*4882a593SmuzhiyunPACKAGECONFIG[lzma] = "-DwxUSE_LIBLZMA=ON,-DwxUSE_LIBLZMA=OFF,xz"
76*4882a593SmuzhiyunPACKAGECONFIG[mspack] = "-DwxUSE_LIBMSPACK=ON,-DwxUSE_LIBMSPACK=OFF,libmspack"
77*4882a593SmuzhiyunPACKAGECONFIG[opengl] = "-DwxUSE_OPENGL=ON,-DwxUSE_OPENGL=OFF,libglu"
78*4882a593SmuzhiyunPACKAGECONFIG[sdl_audio] = "-DwxUSE_LIBSDL=ON,-DwxUSE_LIBSDL=OFF,libsdl2"
79*4882a593SmuzhiyunPACKAGECONFIG[webkit] = "-DwxUSE_WEBVIEW_WEBKIT=ON,-DwxUSE_WEBVIEW_WEBKIT=OFF,webkitgtk,,,no_gui"
80*4882a593SmuzhiyunPACKAGECONFIG[curl] = "-DwxUSE_WEBREQUEST_CURL=ON,-DwxUSE_WEBREQUEST_CURL=OFF,curl"
81*4882a593Smuzhiyun
82*4882a593Smuzhiyundo_compile:append() {
83*4882a593Smuzhiyun    # if not at re-compile
84*4882a593Smuzhiyun    if [ -L ${B}/wx-config ]; then
85*4882a593Smuzhiyun        # ${B}/wx-config is a symlink for build and not needed after compile
86*4882a593Smuzhiyun        # So for our purposes do:
87*4882a593Smuzhiyun        # 1. make a file out of wx-config so that binconfig.bbclass detects it
88*4882a593Smuzhiyun        # 2. make sure we do not move the file used for compiling into sysroot
89*4882a593Smuzhiyun        cp --remove-destination `readlink ${B}/wx-config | sed 's:inplace-::'` ${B}/wx-config
90*4882a593Smuzhiyun    fi
91*4882a593Smuzhiyun    # 3. Set full sysroot paths so sstate can translate them when setting
92*4882a593Smuzhiyun    #    up wxwidgets's consumer sysroots
93*4882a593Smuzhiyun    sed -i \
94*4882a593Smuzhiyun        -e 's,^includedir=.*,includedir="${STAGING_INCDIR}",g' \
95*4882a593Smuzhiyun        -e 's,^libdir=.*",libdir="${STAGING_LIBDIR}",g' \
96*4882a593Smuzhiyun        -e 's,^bindir=.*",bindir="${STAGING_BINDIR}",g' \
97*4882a593Smuzhiyun        ${B}/wx-config
98*4882a593Smuzhiyun}
99*4882a593Smuzhiyun
100*4882a593Smuzhiyundo_install:append() {
101*4882a593Smuzhiyun    # do not ship bindir if empty
102*4882a593Smuzhiyun    rmdir --ignore-fail-on-non-empty ${D}${bindir}
103*4882a593Smuzhiyun}
104*4882a593Smuzhiyun
105*4882a593Smuzhiyun# lib names are not canonical
106*4882a593SmuzhiyunFILES_SOLIBSDEV = ""
107*4882a593Smuzhiyun
108*4882a593SmuzhiyunFILES:${PN} += " \
109*4882a593Smuzhiyun    ${libdir}/libwx_*.so \
110*4882a593Smuzhiyun    ${libdir}/wx/ \
111*4882a593Smuzhiyun"
112*4882a593Smuzhiyun
113*4882a593SmuzhiyunFILES:${PN}-dev += " \
114*4882a593Smuzhiyun    ${libdir}/wx/include/ \
115*4882a593Smuzhiyun    ${libdir}/wx/config/ \
116*4882a593Smuzhiyun"
117*4882a593Smuzhiyun
118*4882a593SmuzhiyunRDEPENDS:${PN}-dev += "grep"
119*4882a593Smuzhiyun
120*4882a593SmuzhiyunBBCLASSEXTEND = "native"
121