build-style: new build-style for sip-build
This commit is contained in:
parent
7fc634a63f
commit
614abf4613
1 changed files with 147 additions and 0 deletions
147
common/build-style/sip-build.sh
Normal file
147
common/build-style/sip-build.sh
Normal file
|
@ -0,0 +1,147 @@
|
||||||
|
#
|
||||||
|
# This helper is for templates using sip-build.
|
||||||
|
#
|
||||||
|
|
||||||
|
do_configure() {
|
||||||
|
local _qt=
|
||||||
|
local _spec=
|
||||||
|
local _mkspec=
|
||||||
|
|
||||||
|
: "${sip_builddir:=build}"
|
||||||
|
mkdir -p "$sip_builddir"
|
||||||
|
|
||||||
|
if [ ! -d /$py3_sitelib/pyqtbuild ]; then
|
||||||
|
: "who uses sip-build without qmake anyway?"
|
||||||
|
elif [ -x /usr/lib/qt6/bin/qmake ]; then
|
||||||
|
_qt=qt6
|
||||||
|
elif [ -x /usr/lib/qt5/bin/qmake ]; then
|
||||||
|
_qt=qt5
|
||||||
|
else
|
||||||
|
msg_error 'qmake not found\n'
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! "$_qt" ]; then
|
||||||
|
: "who use sip-build without qmake anyway?"
|
||||||
|
elif [ "$CROSS_BUILD" ]; then
|
||||||
|
_mkspec="usr/lib/$_qt/mkspecs"
|
||||||
|
_spec="$XBPS_WRAPPERDIR/sip-build/target-spec/linux-g++"
|
||||||
|
mkdir -p "$_spec"
|
||||||
|
cat >"$_spec/qmake.conf" <<-_EOF
|
||||||
|
MAKEFILE_GENERATOR = UNIX
|
||||||
|
CONFIG += incremental no_qt_rpath
|
||||||
|
QMAKE_INCREMENTAL_STYLE = sublib
|
||||||
|
|
||||||
|
include(/$_mkspec/common/linux.conf)
|
||||||
|
include(/$_mkspec/common/gcc-base-unix.conf)
|
||||||
|
include(/$_mkspec/common/g++-unix.conf)
|
||||||
|
|
||||||
|
QMAKE_TARGET_CONFIG = $XBPS_CROSS_BASE/$_mkspec/qconfig.pri
|
||||||
|
QMAKE_TARGET_MODULE = $XBPS_CROSS_BASE/$_mkspec/qmodule.pri
|
||||||
|
QMAKEMODULES = $XBPS_CROSS_BASE/$_mkspec/modules
|
||||||
|
QMAKE_CC = $CC
|
||||||
|
QMAKE_CXX = $CXX
|
||||||
|
QMAKE_LINK = $CXX
|
||||||
|
QMAKE_LINK_C = $CC
|
||||||
|
QMAKE_LINK_SHLIB = $CXX
|
||||||
|
|
||||||
|
QMAKE_AR = $XBPS_CROSS_TRIPLET-gcc-ar cqs
|
||||||
|
QMAKE_OBJCOPY = $OBJCOPY
|
||||||
|
QMAKE_NM = $NM -P
|
||||||
|
QMAKE_STRIP = $STRIP
|
||||||
|
|
||||||
|
QMAKE_CFLAGS = $CFLAGS -I$XBPS_CROSS_BASE/usr/include/python$py3_ver
|
||||||
|
QMAKE_CXXFLAGS = $CXXFLAGS -I$XBPS_CROSS_BASE/usr/include/python$py3_ver
|
||||||
|
QMAKE_LFLAGS = -L$XBPS_CROSS_BASE/usr/lib $LDFLAGS
|
||||||
|
load(qt_config)
|
||||||
|
_EOF
|
||||||
|
|
||||||
|
printf '#include "%s/%s/linux-g++/qplatformdefs.h"\n' \
|
||||||
|
"$XBPS_CROSS_BASE" "$_mkspec" >"$_spec/qplatformdefs.h"
|
||||||
|
cat >"$XBPS_WRAPPERDIR/sip-build/qt.conf" <<-_EOF
|
||||||
|
[Paths]
|
||||||
|
Sysroot=$XBPS_CROSS_BASE
|
||||||
|
Prefix=$XBPS_CROSS_BASE/usr
|
||||||
|
ArchData=$XBPS_CROSS_BASE/usr/lib/$_qt
|
||||||
|
Data=$XBPS_CROSS_BASE/usr/share/$_qt
|
||||||
|
Documentation=$XBPS_CROSS_BASE/usr/share/doc/$_qt
|
||||||
|
Headers=$XBPS_CROSS_BASE/usr/include/$_qt
|
||||||
|
Libraries=$XBPS_CROSS_BASE/usr/lib
|
||||||
|
LibraryExecutables=/usr/lib/$_qt/libexec
|
||||||
|
Binaries=/usr/lib/$_qt/bin
|
||||||
|
Tests=$XBPS_CROSS_BASE/usr/tests
|
||||||
|
Plugins=/usr/lib/$_qt/plugins
|
||||||
|
Imports=$XBPS_CROSS_BASE/usr/lib/$_qt/imports
|
||||||
|
Qml2Imports=$XBPS_CROSS_BASE/usr/lib/$_qt/qml
|
||||||
|
Translations=$XBPS_CROSS_BASE/usr/share/$_qt/translations
|
||||||
|
Settings=$XBPS_CROSS_BASE/etc/xdg
|
||||||
|
Examples=$XBPS_CROSS_BASE/usr/share/$_qt/examples
|
||||||
|
HostPrefix=/usr
|
||||||
|
HostData=/usr/lib/$_qt
|
||||||
|
HostBinaries=/usr/lib/$_qt/bin
|
||||||
|
HostLibraries=/usr/lib
|
||||||
|
HostLibraryExecutables=/usr/lib/$_qt/libexec
|
||||||
|
Spec=linux-g++
|
||||||
|
TargetSpec=$_spec
|
||||||
|
_EOF
|
||||||
|
# Call it sip-qmake to not override qmake build-helper
|
||||||
|
#
|
||||||
|
# XXX: Intentionally quote {C,CXX,LD}FLAGS here but not native.
|
||||||
|
# - Cross Build:
|
||||||
|
# + base flags will be picked up from QMAKE_{C,CXX,LD}FLAGS
|
||||||
|
# + hardening flags will be picked up from environment variables
|
||||||
|
# - Native Build:
|
||||||
|
# + hardening flags will be picked up first (Makefile, qt.conf?)
|
||||||
|
# + base flags will be picked up from QMAKE_{C,CXX,LD}FLAGS
|
||||||
|
# Maybe there're better workaround, I don't know.
|
||||||
|
cat >"$XBPS_WRAPPERDIR/sip-qmake" <<-_EOF
|
||||||
|
#!/bin/sh
|
||||||
|
exec /usr/lib/$_qt/bin/qmake "\$@" \\
|
||||||
|
-qtconf "$XBPS_WRAPPERDIR/sip-build/qt.conf" \\
|
||||||
|
PKG_CONFIG_EXECUTABLE=${XBPS_WRAPPERDIR}/${PKG_CONFIG} \\
|
||||||
|
QMAKE_CFLAGS+="\$CFLAGS" \\
|
||||||
|
QMAKE_CXXFLAGS+="\$CXXFLAGS" \\
|
||||||
|
QMAKE_LFLAGS+="\$LDFLAGS"
|
||||||
|
_EOF
|
||||||
|
chmod 755 ${XBPS_WRAPPERDIR}/sip-qmake
|
||||||
|
else
|
||||||
|
cat >"${XBPS_WRAPPERDIR}/sip-qmake" <<-_EOF
|
||||||
|
#!/bin/sh
|
||||||
|
exec /usr/lib/$_qt/bin/qmake \\
|
||||||
|
"\$@" \\
|
||||||
|
PREFIX=/usr \\
|
||||||
|
QT_INSTALL_PREFIX=/usr \\
|
||||||
|
LIB=/usr/lib \\
|
||||||
|
QMAKE_CC="$CC" QMAKE_CXX="$CXX" \\
|
||||||
|
QMAKE_LINK="$CXX" QMAKE_LINK_C="$CC" \\
|
||||||
|
QMAKE_CFLAGS+="$CFLAGS" \\
|
||||||
|
QMAKE_CXXFLAGS+="$CXXFLAGS" \\
|
||||||
|
QMAKE_LFLAGS+="$LDFLAGS" \\
|
||||||
|
CONFIG+=no_qt_rpath
|
||||||
|
_EOF
|
||||||
|
chmod 755 ${XBPS_WRAPPERDIR}/sip-qmake
|
||||||
|
fi
|
||||||
|
|
||||||
|
sip-build --no-make \
|
||||||
|
${_qt:+--qmake "$XBPS_WRAPPERDIR/sip-qmake"} \
|
||||||
|
--api-dir /usr/share/$_qt/qsci/api/python \
|
||||||
|
$configure_args \
|
||||||
|
--build-dir "$sip_builddir"
|
||||||
|
|
||||||
|
if [ "$CROSS_BUILD" ]; then
|
||||||
|
# -I/usr/include/python$py3_ver is set by sip-build :(
|
||||||
|
find "$sip_builddir" -name Makefile |
|
||||||
|
xargs sed -i "s,-I\\(/usr/include\\),-I$XBPS_CROSS_BASE\\1,g"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
do_build() {
|
||||||
|
: "${sip_builddir:=build}"
|
||||||
|
make -C "${sip_builddir}" ${makejobs}
|
||||||
|
}
|
||||||
|
|
||||||
|
do_install() {
|
||||||
|
: "${sip_builddir:=build}"
|
||||||
|
make -C "${sip_builddir}" \
|
||||||
|
DESTDIR=${DESTDIR} INSTALL_ROOT=${DESTDIR} \
|
||||||
|
install
|
||||||
|
}
|
Loading…
Reference in a new issue