mirror of
https://github.com/bitcoin/bitcoin.git
synced 2024-11-19 18:09:47 +01:00
bb44d9e754
See here for background: https://bugreports.qt.io/browse/QTBUG-34748 libxcb temporarily had an abi breakage which caused crashes when qt was compiled against a non-compatible version. Building qt with -qt-xcb should have shielded us from this issue, except that incompatible headers were used when building qt's wrapper. Make sure those headers aren't picked up by qt's build. Details: qt's build adds a wrapper around the xcb libs when -qt-xcb is used. This is done to avoid having to link to a handful of different libs, which may not be api/abi stable. This build depends on include-order, so that its files are found before the real libxcb headers. Our build (for other reasons related to qt's complicated build-system) injects our prefix into CXXFLAGS. Because libxcb is found in this path, that reverses the include-order, negating the purpose of the wrapper. To fix, libxcb's includes are simply moved to a subdir. pkg-config ensures that they're still found properly when needed. To make things even more interesting, this behavior in qt's .pro files is broken: INCLUDEPATH += $$QMAKE_CFLAGS_XCB The INCLUDEPATH variable is processed by qmake which automatically prefixes each entry with "-I". The QMAKE_CFLAGS_XCB variable comes from pkg-config and already contains -I, making the path look like "-I-I/path/to/xcb/headers". To work around that, CFLAGS/CXXFLAGS are used here rather than INCLUDEPATH.
36 lines
1.0 KiB
Makefile
36 lines
1.0 KiB
Makefile
package=libxcb
|
|
$(package)_version=1.10
|
|
$(package)_download_path=http://xcb.freedesktop.org/dist
|
|
$(package)_file_name=$(package)-$($(package)_version).tar.bz2
|
|
$(package)_sha256_hash=98d9ab05b636dd088603b64229dd1ab2d2cc02ab807892e107d674f9c3f2d5b5
|
|
$(package)_dependencies=xcb_proto libXau xproto
|
|
|
|
define $(package)_set_vars
|
|
$(package)_config_opts=--disable-static
|
|
endef
|
|
|
|
define $(package)_preprocess_cmds
|
|
sed "s/pthread-stubs//" -i configure
|
|
endef
|
|
|
|
# Don't install xcb headers to the default path in order to work around a qt
|
|
# build issue: https://bugreports.qt.io/browse/QTBUG-34748
|
|
# When using qt's internal libxcb, it may end up finding the real headers in
|
|
# depends staging. Use a non-default path to avoid that.
|
|
|
|
define $(package)_config_cmds
|
|
$($(package)_autoconf) --includedir=$(host_prefix)/include/xcb-shared
|
|
endef
|
|
|
|
define $(package)_build_cmds
|
|
$(MAKE)
|
|
endef
|
|
|
|
define $(package)_stage_cmds
|
|
$(MAKE) DESTDIR=$($(package)_staging_dir) install
|
|
endef
|
|
|
|
define $(package)_postprocess_cmds
|
|
rm -rf share/man share/doc
|
|
endef
|