diff options
Diffstat (limited to 'meta-oe/recipes-extended/wxwidgets')
9 files changed, 499 insertions, 0 deletions
diff --git a/meta-oe/recipes-extended/wxwidgets/wxwidgets/0001-Set-HAVE_LARGEFILE_SUPPORT-to-1-explicitly.patch b/meta-oe/recipes-extended/wxwidgets/wxwidgets/0001-Set-HAVE_LARGEFILE_SUPPORT-to-1-explicitly.patch new file mode 100644 index 0000000000..5160f2e1fe --- /dev/null +++ b/meta-oe/recipes-extended/wxwidgets/wxwidgets/0001-Set-HAVE_LARGEFILE_SUPPORT-to-1-explicitly.patch @@ -0,0 +1,30 @@ +From e108aff9d6dae613f486c1b1681f4a3cdf17b845 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Mon, 19 Dec 2022 15:07:55 -0800 +Subject: [PATCH] Set HAVE_LARGEFILE_SUPPORT to 1 explicitly + +nothing sets this to 0, but for some reason it gets undef'd + +Upstream-Status: Pending +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + build/cmake/setup.h.in | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/build/cmake/setup.h.in b/build/cmake/setup.h.in +index bce33a73f3..22afb4cfa0 100644 +--- a/build/cmake/setup.h.in ++++ b/build/cmake/setup.h.in +@@ -869,8 +869,7 @@ + /* + * Define if large (64 bit file offsets) files are supported. + */ +-#cmakedefine HAVE_LARGEFILE_SUPPORT 1 +- ++#define HAVE_LARGEFILE_SUPPORT 1 + /* + * Use OpenGL + */ +-- +2.39.0 + diff --git a/meta-oe/recipes-extended/wxwidgets/wxwidgets/0001-locale-Avoid-using-glibc-specific-defines-on-musl.patch b/meta-oe/recipes-extended/wxwidgets/wxwidgets/0001-locale-Avoid-using-glibc-specific-defines-on-musl.patch new file mode 100644 index 0000000000..52f4449339 --- /dev/null +++ b/meta-oe/recipes-extended/wxwidgets/wxwidgets/0001-locale-Avoid-using-glibc-specific-defines-on-musl.patch @@ -0,0 +1,26 @@ +From 72c3b7324f00047e6dc5d8380ed2f6ff2494a6f9 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Sun, 18 Dec 2022 14:51:34 -0800 +Subject: [PATCH] locale: Avoid using glibc specific defines on musl + +musl does not provide some glibc-only enum members e.g. _NL_ADDRESS_LANG_NAME + +Upstream-Status: Submitted [https://github.com/wxWidgets/wxWidgets/pull/23050] +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + src/unix/uilocale.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/unix/uilocale.cpp b/src/unix/uilocale.cpp +index 57773e17f5..86816ba896 100644 +--- a/src/unix/uilocale.cpp ++++ b/src/unix/uilocale.cpp +@@ -619,7 +619,7 @@ wxString + wxUILocaleImplUnix::GetLocalizedName(wxLocaleName name, wxLocaleForm form) const + { + wxString str; +-#if defined(HAVE_LANGINFO_H) && defined(__LINUX__) ++#if defined(HAVE_LANGINFO_H) && defined(__LINUX__) && defined(__GLIBC__) + switch (name) + { + case wxLOCALE_NAME_LOCALE: diff --git a/meta-oe/recipes-extended/wxwidgets/wxwidgets/0001-wx-config.in-Disable-cross-magic-it-does-not-work-fo.patch b/meta-oe/recipes-extended/wxwidgets/wxwidgets/0001-wx-config.in-Disable-cross-magic-it-does-not-work-fo.patch new file mode 100644 index 0000000000..b3b9e79c53 --- /dev/null +++ b/meta-oe/recipes-extended/wxwidgets/wxwidgets/0001-wx-config.in-Disable-cross-magic-it-does-not-work-fo.patch @@ -0,0 +1,35 @@ +From a071243763f4b06fc7e71f541c49cecf380b6f27 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com> +Date: Sun, 11 Oct 2020 22:16:55 +0200 +Subject: [PATCH] wx-config.in: Disable cross magic - it does not work for us +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +E.g 'wx-config --libs' appends a '-Linux' to all libraries (e.g +-lwx_gtk3u_xrc-3.1 is reported as -lwx_gtk3u_xrc-3.1-Linux) which is wrong and +make projects depending on wxwidgets fail. + +Upstream-Status: Inappropriate [oe specific] + +Signed-off-by: Andreas Müller <schnitzeltony@gmail.com> +--- + wx-config.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/wx-config.in b/wx-config.in +index d132e3182f..d0d162e8a3 100755 +--- a/wx-config.in ++++ b/wx-config.in +@@ -396,7 +396,7 @@ get_mask() + } + + # Returns true if this script is for a cross compiled config. +-is_cross() { [ "x@cross_compiling@" = "xyes" ]; } ++is_cross() { [ "xno" = "xyes" ]; } + + + # Determine the base directories we require. +-- +2.26.2 + diff --git a/meta-oe/recipes-extended/wxwidgets/wxwidgets/create-links-with-relative-path.patch b/meta-oe/recipes-extended/wxwidgets/wxwidgets/create-links-with-relative-path.patch new file mode 100644 index 0000000000..6eef0b6790 --- /dev/null +++ b/meta-oe/recipes-extended/wxwidgets/wxwidgets/create-links-with-relative-path.patch @@ -0,0 +1,52 @@ +It fails to build python3-wxgtk4 which depends on wxwidgets: + +| ERROR: wxwidgets-native-3.2.1-r0 do_populate_sysroot: sstate found an + absolute path symlink /path/to/build/tmp-glibc/work/x86_64-linux + /wxwidgets-native/3.2.1-r0/sysroot-destdir/path/to/build/tmp-glibc/work + /x86_64-linux/wxwidgets-native/3.2.1-r0/recipe-sysroot-native/usr/bin/wx-config + pointing at /path/to/build/tmp-glibc/work/x86_64-linux/wxwidgets-native/3.2.1-r0 + /recipe-sysroot-native/usr/lib/wx/config/gtk3-unicode-3.2. + Please replace this with a relative link. +| ERROR: wxwidgets-native-3.2.1-r0 do_populate_sysroot: sstate found an + absolute path symlink /path/to/build/tmp-glibc/work/x86_64-linux/wxwidgets-native + /3.2.1-r0/sysroot-destdir/path/to/build/tmp-glibc/work/x86_64-linux/wxwidgets-native + /3.2.1-r0/recipe-sysroot-native/usr/bin/wxrc pointing at /path/to/build/tmp-glibc + /work/x86_64-linux/wxwidgets-native/3.2.1-r0/recipe-sysroot-native/usr/bin/wxrc-3.2. + Please replace this with a relative link. + +Create symlink with relative path to fix the issues. + +Upstream-Status: Pending + +Signed-off-by: Kai Kang <kai.kang@windriver.com> +--- + build/cmake/install.cmake | 2 +- + build/cmake/utils/CMakeLists.txt | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/build/cmake/install.cmake b/build/cmake/install.cmake +index d3303faabb..c79e187f37 100644 +--- a/build/cmake/install.cmake ++++ b/build/cmake/install.cmake +@@ -42,7 +42,7 @@ else() + install(DIRECTORY DESTINATION "bin") + install(CODE "execute_process( \ + COMMAND ${CMAKE_COMMAND} -E create_symlink \ +- \"${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/wx/config/${wxBUILD_FILE_ID}\" \ ++ \"../lib${LIB_SUFFIX}/wx/config/${wxBUILD_FILE_ID}\" \ + \"\$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/wx-config\" \ + )" + ) +diff --git a/build/cmake/utils/CMakeLists.txt b/build/cmake/utils/CMakeLists.txt +index dbed8cc9b3..1dbc3261d3 100644 +--- a/build/cmake/utils/CMakeLists.txt ++++ b/build/cmake/utils/CMakeLists.txt +@@ -40,7 +40,7 @@ if(wxUSE_XRC) + # Don't use wx_install() here to preserve escaping. + install(CODE "execute_process( \ + COMMAND ${CMAKE_COMMAND} -E create_symlink \ +- \"${CMAKE_INSTALL_PREFIX}/bin/${wxrc_output_name}${EXE_SUFFIX}\" \ ++ \"./${wxrc_output_name}${EXE_SUFFIX}\" \ + \"\$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/wxrc${EXE_SUFFIX}\" \ + )" + ) diff --git a/meta-oe/recipes-extended/wxwidgets/wxwidgets/fix-libdir-for-multilib.patch b/meta-oe/recipes-extended/wxwidgets/wxwidgets/fix-libdir-for-multilib.patch new file mode 100644 index 0000000000..ea204ed3b1 --- /dev/null +++ b/meta-oe/recipes-extended/wxwidgets/wxwidgets/fix-libdir-for-multilib.patch @@ -0,0 +1,107 @@ +wxWidgets hardcodes libdir with 'lib' and does not support multilib which will +change it. Respect variable wxPLATFORM_LIB_DIR to support libdir be configurable. + +Upstream-Status: Pending + +Signed-off-by: Kai Kang <kai.kang@windriver.com> + +Rebase for wxWidgets 3.2.1. Replace wxPLATFORM_LIB_DIR with LIB_SUFFIX in this +patch that LIB_SUFFIX has been passed to cmake in cmake.bbclass. + +Signed-off-by: Kai Kang <kai.kang@windriver.com> +--- + CMakeLists.txt | 2 +- + build/cmake/config.cmake | 2 +- + build/cmake/functions.cmake | 4 ++-- + build/cmake/install.cmake | 12 ++++++------ + 4 files changed, 10 insertions(+), 10 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index a49ecd3883..d469471f38 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -45,7 +45,7 @@ include(build/cmake/policies.cmake NO_POLICY_SCOPE) + # Initialize variables for quick access to wx root dir in sub dirs + set(wxSOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) + set(wxBINARY_DIR ${CMAKE_BINARY_DIR}) +-set(wxOUTPUT_DIR ${wxBINARY_DIR}/lib) ++set(wxOUTPUT_DIR ${wxBINARY_DIR}/lib${LIB_SUFFIX}) + + # parse the version number from wx/version.h and include in wxMAJOR_VERSION and wxMINOR_VERSION + file(READ "${wxSOURCE_DIR}/include/wx/version.h" WX_VERSION_H_CONTENTS) +diff --git a/build/cmake/config.cmake b/build/cmake/config.cmake +index b359560bc0..c59ea60923 100644 +--- a/build/cmake/config.cmake ++++ b/build/cmake/config.cmake +@@ -76,7 +76,7 @@ function(wx_write_config_inplace) + execute_process( + COMMAND + "${CMAKE_COMMAND}" -E ${COPY_CMD} +- "${CMAKE_CURRENT_BINARY_DIR}/lib/wx/config/inplace-${TOOLCHAIN_FULLNAME}" ++ "${CMAKE_CURRENT_BINARY_DIR}/lib${LIB_SUFFIX}/wx/config/inplace-${TOOLCHAIN_FULLNAME}" + "${CMAKE_CURRENT_BINARY_DIR}/wx-config" + ) + endfunction() +diff --git a/build/cmake/functions.cmake b/build/cmake/functions.cmake +index 7182364e5e..55fbebc7ee 100644 +--- a/build/cmake/functions.cmake ++++ b/build/cmake/functions.cmake +@@ -435,8 +435,8 @@ macro(wx_add_library name) + endif() + wx_install(TARGETS ${name} + EXPORT wxWidgetsTargets +- LIBRARY DESTINATION "lib${GEN_EXPR_DIR}${wxPLATFORM_LIB_DIR}" +- ARCHIVE DESTINATION "lib${GEN_EXPR_DIR}${wxPLATFORM_LIB_DIR}" ++ LIBRARY DESTINATION "lib${LIB_SUFFIX}${GEN_EXPR_DIR}${wxPLATFORM_LIB_DIR}" ++ ARCHIVE DESTINATION "lib${LIB_SUFFIX}${GEN_EXPR_DIR}${wxPLATFORM_LIB_DIR}" + RUNTIME DESTINATION "${runtime_dir}${GEN_EXPR_DIR}${wxPLATFORM_LIB_DIR}" + BUNDLE DESTINATION Applications/wxWidgets + ) +diff --git a/build/cmake/install.cmake b/build/cmake/install.cmake +index 384c6837b8..d3303faabb 100644 +--- a/build/cmake/install.cmake ++++ b/build/cmake/install.cmake +@@ -29,11 +29,11 @@ if(WIN32_MSVC_NAMING) + else() + install( + DIRECTORY "${wxSETUP_HEADER_PATH}" +- DESTINATION "lib/wx/include") ++ DESTINATION "lib${LIB_SUFFIX}/wx/include") + + install( + FILES "${wxOUTPUT_DIR}/wx/config/${wxBUILD_FILE_ID}" +- DESTINATION "lib/wx/config" ++ DESTINATION "lib${LIB_SUFFIX}/wx/config" + PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ + GROUP_EXECUTE GROUP_READ + WORLD_EXECUTE WORLD_READ +@@ -42,13 +42,13 @@ else() + install(DIRECTORY DESTINATION "bin") + install(CODE "execute_process( \ + COMMAND ${CMAKE_COMMAND} -E create_symlink \ +- \"${CMAKE_INSTALL_PREFIX}/lib/wx/config/${wxBUILD_FILE_ID}\" \ ++ \"${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/wx/config/${wxBUILD_FILE_ID}\" \ + \"\$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/wx-config\" \ + )" + ) + endif() + +-install(EXPORT wxWidgetsTargets NAMESPACE wx:: DESTINATION "lib/cmake/wxWidgets/${wxPLATFORM_LIB_DIR}") ++install(EXPORT wxWidgetsTargets NAMESPACE wx:: DESTINATION "lib${LIB_SUFFIX}/cmake/wxWidgets/${wxPLATFORM_LIB_DIR}") + + # find_package config file + include(CMakePackageConfigHelpers) +@@ -71,11 +71,11 @@ write_basic_package_version_file( + configure_package_config_file( + "${wxSOURCE_DIR}/build/cmake/wxWidgetsConfig.cmake.in" + "${projectConfig}" +- INSTALL_DESTINATION "lib/cmake/wxWidgets" ++ INSTALL_DESTINATION "lib${LIB_SUFFIX}/cmake/wxWidgets" + ) + install( + FILES "${projectConfig}" "${versionConfig}" +- DESTINATION "lib/cmake/wxWidgets" ++ DESTINATION "lib${LIB_SUFFIX}/cmake/wxWidgets" + ) + + # uninstall target diff --git a/meta-oe/recipes-extended/wxwidgets/wxwidgets/musl-locale-l.patch b/meta-oe/recipes-extended/wxwidgets/wxwidgets/musl-locale-l.patch new file mode 100644 index 0000000000..e4ca6579f8 --- /dev/null +++ b/meta-oe/recipes-extended/wxwidgets/wxwidgets/musl-locale-l.patch @@ -0,0 +1,34 @@ +Upstream-Status: Pending + +these macro'd away functions don't exist in musl (yet) +diff --git a/include/wx/xlocale.h b/include/wx/xlocale.h +index c433d25..3ab9d84 100644 +--- a/include/wx/xlocale.h ++++ b/include/wx/xlocale.h +@@ -33,6 +33,26 @@ + #include "wx/crt.h" // Includes wx/chartype.h, wx/wxcrt.h(wx/string.h) + #include "wx/intl.h" // wxLanguage + ++#ifndef strtol_l ++#define strtol_l(s, p, base, l) strtol(s, p, base) ++#endif ++ ++#ifndef strtoul_l ++#define strtoul_l(s, p, base, l) strtoul(s, p, base) ++#endif ++ ++#ifndef wcstod_l ++#define wcstod_l(s, p, l) wcstod(s, p) ++#endif ++ ++#ifndef wcstol_l ++#define wcstol_l(s, p, base, l) wcstol(s, p, base) ++#endif ++ ++#ifndef wcstoul_l ++#define wcstoul_l(s, p, base, l) wcstoul(s, p, base) ++#endif ++ + // The platform-specific locale type + // If wxXLocale_t is not defined, then only "C" locale support is provided + #ifdef wxHAS_XLOCALE_SUPPORT diff --git a/meta-oe/recipes-extended/wxwidgets/wxwidgets/not-append-system-name-to-lib-name.patch b/meta-oe/recipes-extended/wxwidgets/wxwidgets/not-append-system-name-to-lib-name.patch new file mode 100644 index 0000000000..6329256b0c --- /dev/null +++ b/meta-oe/recipes-extended/wxwidgets/wxwidgets/not-append-system-name-to-lib-name.patch @@ -0,0 +1,32 @@ +It appends system name to library names for cross compile. For example, the +library name is libwx_baseu-3.1-Linux.so rather than libwx_baseu-3.1.so. It is +not appropriate for oe. + +Upstream-Status: Pending [oe specific] + +Signed-off-by: Kai Kang <kai.kang@windriver.com> + +Rebase for wxWidgets 3.2.1. + +Signed-off-by: Kai Kang <kai.kang@windriver.com> +--- + build/cmake/functions.cmake | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/build/cmake/functions.cmake b/build/cmake/functions.cmake +index e374d9a273..c6b1908bd6 100644 +--- a/build/cmake/functions.cmake ++++ b/build/cmake/functions.cmake +@@ -219,9 +219,9 @@ function(wx_set_target_properties target_name) + endif() + + set(cross_target) +- if (CMAKE_CROSSCOMPILING) +- set(cross_target "-${CMAKE_SYSTEM_NAME}") +- endif() ++ #if (CMAKE_CROSSCOMPILING) ++ # set(cross_target "-${CMAKE_SYSTEM_NAME}") ++ #endif() + + set(lib_prefix "lib") + if(MSVC OR (WIN32 AND wxBUILD_SHARED)) diff --git a/meta-oe/recipes-extended/wxwidgets/wxwidgets/wx-config-fix-libdir-for-multilib.patch b/meta-oe/recipes-extended/wxwidgets/wxwidgets/wx-config-fix-libdir-for-multilib.patch new file mode 100644 index 0000000000..628f8dee56 --- /dev/null +++ b/meta-oe/recipes-extended/wxwidgets/wxwidgets/wx-config-fix-libdir-for-multilib.patch @@ -0,0 +1,60 @@ +It sets 'libdir' with path element 'lib' directly which is not suitable for +multilib. Add an option '--baselib' for wx-config to support multilib when +cross compile. And set default value of baselib with "lib${wxPLATFORM_LIB_DIR}". + +Upstream-Status: Pending [oe specific] + +Signed-off-by: Kai Kang <kai.kang@windriver.com> + +Rebase for wxWidgets 3.2.1. Replace wxPLATFORM_LIB_DIR with variable LIB_SUFFIX. + +Signed-off-by: Kai Kang <kai.kang@windriver.com> +--- + build/cmake/config.cmake | 2 +- + wx-config.in | 6 ++++-- + 2 files changed, 5 insertions(+), 3 deletions(-) + +diff --git a/build/cmake/config.cmake b/build/cmake/config.cmake +index 52ae69d3f6..28aa733eb0 100644 +--- a/build/cmake/config.cmake ++++ b/build/cmake/config.cmake +@@ -86,7 +86,7 @@ function(wx_write_config) + set(prefix ${CMAKE_INSTALL_PREFIX}) + set(exec_prefix "\${prefix}") + set(includedir "\${prefix}/include") +- set(libdir "\${exec_prefix}/lib") ++ set(libdir "\${exec_prefix}/\${baselib}") + set(bindir "\${exec_prefix}/bin") + + find_program(EGREP egrep) +diff --git a/wx-config.in b/wx-config.in +index e3f7d115bb..0e78af03c7 100755 +--- a/wx-config.in ++++ b/wx-config.in +@@ -42,7 +42,8 @@ usage() + { + cat 1>&2 <<EOF + +- wx-config [--prefix[=DIR]] [--exec-prefix[=DIR]] [--release] [--version-full] ++ wx-config [--prefix[=DIR]] [--exec-prefix[=DIR]][--baselib=DIR] ++ [--release] [--version-full] + [--list] [--selected-config] [--host=HOST] [--toolkit=TOOLKIT] + [--universal[=yes|no]] [--unicode[=yes|no]] [--static[=yes|no]] + [--debug[=yes|no]] [--version[=VERSION]] [--flavour=FLAVOUR] +@@ -137,7 +138,7 @@ wxconfig_output_options="prefix exec_prefix + + # Options that permit the user to supply hints that may affect the output. + # These options all accept arbitrary values, to interpret as they please. +-wxconfig_input_options="prefix exec_prefix utility $wxconfig_schema" ++wxconfig_input_options="prefix exec_prefix baselib utility $wxconfig_schema" + + # Input options that accept only a yes or no argument. + # +@@ -404,6 +405,7 @@ is_cross() { [ "x@cross_compiling@" = "xyes" ]; } + # Determine the base directories we require. + prefix=${input_option_prefix-${this_prefix:-@prefix@}} + exec_prefix=${input_option_exec_prefix-${input_option_prefix-${this_exec_prefix:-@exec_prefix@}}} ++baselib=${input_option_baselib:-lib${LIB_SUFFIX}} + wxconfdir="@libdir@/wx/config" + + installed_configs=`cd "$wxconfdir" 2> /dev/null && ls | grep -v "^inplace-"` diff --git a/meta-oe/recipes-extended/wxwidgets/wxwidgets_3.2.1.bb b/meta-oe/recipes-extended/wxwidgets/wxwidgets_3.2.1.bb new file mode 100644 index 0000000000..91653e2852 --- /dev/null +++ b/meta-oe/recipes-extended/wxwidgets/wxwidgets_3.2.1.bb @@ -0,0 +1,123 @@ +SUMMARY = "Cross-Plattform GUI Library" +DESCRIPTION = "wxWidgets is a free and open source cross-platform C++ framework for writing advanced GUI applications using native controls." +HOMEPAGE = "https://www.wxwidgets.org/" +BUGTRACKER = "https://trac.wxwidgets.org/" + +# WXwindows licence is a modified version of LGPL explicitly allowing not +# distributing the sources of an application using the library even in the +# case of static linking. +LICENSE = "WXwindows" +LIC_FILES_CHKSUM = "file://docs/licence.txt;md5=981f50a934828620b08f44d75db557c6" + +inherit ${@bb.utils.contains('PACKAGECONFIG', 'qt', 'cmake_qt5', 'cmake', d)} +inherit lib_package binconfig pkgconfig + +DEPENDS += " \ + jpeg \ + libpng \ + tiff \ +" + +SRC_URI = "gitsm://github.com/wxWidgets/wxWidgets.git;branch=3.2;protocol=https \ + file://0001-wx-config.in-Disable-cross-magic-it-does-not-work-fo.patch \ + file://fix-libdir-for-multilib.patch \ + file://create-links-with-relative-path.patch \ + file://not-append-system-name-to-lib-name.patch \ + file://wx-config-fix-libdir-for-multilib.patch \ + file://0001-locale-Avoid-using-glibc-specific-defines-on-musl.patch \ + file://musl-locale-l.patch \ + file://0001-Set-HAVE_LARGEFILE_SUPPORT-to-1-explicitly.patch \ + " +SRCREV= "97e99707c5d2271a70cb686720b48dbf34ced496" +S = "${WORKDIR}/git" + +# These can be either 'builtin' or 'sys' and builtin means cloned soures are +# build. So these cannot be PACKAGECONFIGs and let's use libs where we can (see +# DEPENDS) +EXTRA_OECMAKE += " \ + -DwxUSE_GLCANVAS_EGL=OFF \ + -DwxUSE_LIBJPEG=sys \ + -DwxUSE_LIBPNG=sys \ + -DwxUSE_LIBTIFF=sys \ + -DwxUSE_REGEX=builtin \ +" +EXTRA_OECMAKE:append:class-target = ' -DEGREP="/bin/grep -E"' + +# OpenGL support currently seems tied to using libglu, which requires x11 +PACKAGECONFIG ?= "${@bb.utils.contains_any('DISTRO_FEATURES', 'x11 wayland', 'gtk', 'no_gui', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'x11 opengl', 'opengl', '', d)} \ +" + +PACKAGECONFIG:remove:class-native = "opengl" + +# Note on toolkit-PACKAGECONFIGs: select exactly one of 'no_gui' / 'gtk' / 'qt' +PACKAGECONFIG[no_gui] = "-DwxUSE_GUI=OFF,,,,,qt gtk opengl" +PACKAGECONFIG[gtk] = "-DwxBUILD_TOOLKIT=gtk3 -DwxUSE_GUI=ON -DwxUSE_PRIVATE_FONTS=ON,,gtk+3,,,no_gui qt" +PACKAGECONFIG[qt] = "-DwxBUILD_TOOLKIT=qt -DwxUSE_GUI=ON,,qtbase,,,no_gui gtk" +python () { + pkgconfig = d.getVar('PACKAGECONFIG') + if (not 'no_gui' in pkgconfig) and (not 'gtk' in pkgconfig) and (not 'qt' in pkgconfig): + bb.error("PACKAGECONFIG must select a toolkit. Add one of no_gui / gtk / qt!") +} + +# Notes on other PACKAGECONFIGs: +# * 'no_gui' overrides some configs below so they are marked as conflicting +# with 'no_gui' to avoid surprises +# * qt+gstreamer is broken due to incorrect references on glib-2.0 -> mark +# as conflicting +# * wxUSE_LIBGNOMEVFS is for gtk2 (see init.cmake) which we don't support +# -> no gvfs PACKAGECONFIG +# * libmspack is in meta-security +PACKAGECONFIG[gstreamer] = "-DwxUSE_MEDIACTRL=ON,-DwxUSE_MEDIACTRL=OFF,gstreamer1.0-plugins-base,,,no_gui qt" +PACKAGECONFIG[libsecret] = "-DwxUSE_SECRETSTORE=ON,-DwxUSE_SECRETSTORE=OFF,libsecret,,,no_gui" +PACKAGECONFIG[lzma] = "-DwxUSE_LIBLZMA=ON,-DwxUSE_LIBLZMA=OFF,xz" +PACKAGECONFIG[mspack] = "-DwxUSE_LIBMSPACK=ON,-DwxUSE_LIBMSPACK=OFF,libmspack" +PACKAGECONFIG[opengl] = "-DwxUSE_OPENGL=ON,-DwxUSE_OPENGL=OFF,libglu" +PACKAGECONFIG[sdl_audio] = "-DwxUSE_LIBSDL=ON,-DwxUSE_LIBSDL=OFF,libsdl2" +PACKAGECONFIG[webkit] = "-DwxUSE_WEBVIEW_WEBKIT=ON,-DwxUSE_WEBVIEW_WEBKIT=OFF,webkitgtk3,,,no_gui" +PACKAGECONFIG[curl] = "-DwxUSE_WEBREQUEST_CURL=ON,-DwxUSE_WEBREQUEST_CURL=OFF,curl" + +# Support LFS unconditionally +CXXFLAGS += "-D_FILE_OFFSET_BITS=64" + +do_compile:append() { + # if not at re-compile + if [ -L ${B}/wx-config ]; then + # ${B}/wx-config is a symlink for build and not needed after compile + # So for our purposes do: + # 1. make a file out of wx-config so that binconfig.bbclass detects it + # 2. make sure we do not move the file used for compiling into sysroot + cp --remove-destination `readlink ${B}/wx-config | sed 's:inplace-::'` ${B}/wx-config + fi + # 3. Set full sysroot paths so sstate can translate them when setting + # up wxwidgets's consumer sysroots + sed -i \ + -e 's,^includedir=.*,includedir="${STAGING_INCDIR}",g' \ + -e 's,^libdir=.*",libdir="${STAGING_LIBDIR}",g' \ + -e 's,^bindir=.*",bindir="${STAGING_BINDIR}",g' \ + ${B}/wx-config +} + +do_install:append() { + # do not ship bindir if empty + rmdir --ignore-fail-on-non-empty ${D}${bindir} + + # fix host contamination + sed -i -e "s#${STAGING_DIR_NATIVE}##g" \ + -e "s#${STAGING_DIR_TARGET}##g" \ + ${D}${libdir}/wx/config/*-unicode-3.2 \ + ${D}${libdir}/cmake/wxWidgets/wxWidgetsTargets.cmake +} + +FILES:${PN} += " \ + ${libdir}/wx/ \ +" + +FILES:${PN}-dev += " \ + ${libdir}/wx/include/ \ + ${libdir}/wx/config/ \ +" + +RDEPENDS:${PN}-dev += "grep" + +BBCLASSEXTEND = "native" |