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