qmake.sh (3558B)
1# This build-helper sets up qmake’s cross environment 2# in cases the build-style is mixed, 3# e.g. when in a gnu-configure style the configure 4# script calls qmake or a makefile in a gnu-makefile style, 5# respectively. 6 7if [ "$CROSS_BUILD" ]; then 8 mkdir -p "${XBPS_WRAPPERDIR}/target-spec/linux-g++" 9 cat > "${XBPS_WRAPPERDIR}/target-spec/linux-g++/qmake.conf" <<_EOF 10MAKEFILE_GENERATOR = UNIX 11CONFIG += incremental no_qt_rpath 12QMAKE_INCREMENTAL_STYLE = sublib 13 14include(/usr/lib/qt5/mkspecs/common/linux.conf) 15include(/usr/lib/qt5/mkspecs/common/gcc-base-unix.conf) 16include(/usr/lib/qt5/mkspecs/common/g++-unix.conf) 17 18QMAKE_TARGET_CONFIG = ${XBPS_CROSS_BASE}/usr/lib/qt5/mkspecs/qconfig.pri 19QMAKE_TARGET_MODULE = ${XBPS_CROSS_BASE}/usr/lib/qt5/mkspecs/qmodule.pri 20QMAKEMODULES = ${XBPS_CROSS_BASE}/usr/lib/qt5/mkspecs/modules 21QMAKE_CC = ${CC} 22QMAKE_CXX = ${CXX} 23QMAKE_LINK = ${CXX} 24QMAKE_LINK_C = ${CC} 25QMAKE_LINK_SHLIB = ${CXX} 26 27QMAKE_AR = ${XBPS_CROSS_TRIPLET}-gcc-ar cqs 28QMAKE_OBJCOPY = ${OBJCOPY} 29QMAKE_NM = ${NM} -P 30QMAKE_STRIP = ${STRIP} 31 32QMAKE_CFLAGS = ${CFLAGS} 33QMAKE_CXXFLAGS = ${CXXFLAGS} 34QMAKE_LFLAGS = ${LDFLAGS} 35load(qt_config) 36_EOF 37 echo "#include \"${XBPS_CROSS_BASE}/usr/lib/qt5/mkspecs/linux-g++/qplatformdefs.h\"" > "${XBPS_WRAPPERDIR}/target-spec/linux-g++/qplatformdefs.h" 38 39 cat > "${XBPS_WRAPPERDIR}/qt.conf" <<_EOF 40[Paths] 41Sysroot=${XBPS_CROSS_BASE} 42Prefix=${XBPS_CROSS_BASE}/usr 43ArchData=${XBPS_CROSS_BASE}/usr/lib/qt5 44Data=${XBPS_CROSS_BASE}/usr/share/qt5 45Documentation=${XBPS_CROSS_BASE}/usr/share/doc/qt5 46Headers=${XBPS_CROSS_BASE}/usr/include/qt5 47Libraries=${XBPS_CROSS_BASE}/usr/lib 48LibraryExecutables=/usr/lib/qt5/libexec 49Binaries=/usr/lib/qt5/bin 50Tests=${XBPS_CROSS_BASE}/usr/tests 51Plugins=/usr/lib/qt5/plugins 52Imports=${XBPS_CROSS_BASE}/usr/lib/qt5/imports 53Qml2Imports=${XBPS_CROSS_BASE}/usr/lib/qt5/qml 54Translations=${XBPS_CROSS_BASE}/usr/share/qt5/translations 55Settings=${XBPS_CROSS_BASE}/etc/xdg 56Examples=${XBPS_CROSS_BASE}/usr/share/qt5/examples 57HostPrefix=/usr 58HostData=/usr/lib/qt5 59HostBinaries=/usr/lib/qt5/bin 60HostLibraries=/usr/lib 61Spec=linux-g++ 62TargetSpec=$XBPS_WRAPPERDIR/target-spec/linux-g++ 63_EOF 64 65 # create the qmake-wrapper here because it only 66 # makes sense together with the qmake build-helper 67 # and not to interfere with e.g. the qmake build-style 68 # 69 # XXX: Intentionally quote {C,CXX,LD}FLAGS here but not in native. 70 # - Cross Build: 71 # + base flags will be picked up from QMAKE_{C,CXX,LD}FLAGS 72 # + hardening flags will be picked up from environment variables 73 # - Native Build: 74 # + hardening flags will be picked up first (Makefile, qt.conf?) 75 # + base flags will be picked up from QMAKE_{C,CXX,LD}FLAGS 76 # Maybe there're better workaround, I don't know. 77 cat > "${XBPS_WRAPPERDIR}/qmake" <<_EOF 78#!/bin/sh 79exec /usr/lib/qt5/bin/qmake "\$@" -qtconf "${XBPS_WRAPPERDIR}/qt.conf" \\ 80 QMAKE_CFLAGS+="\${CFLAGS}" \\ 81 QMAKE_CXXFLAGS+="\${CXXFLAGS}" \\ 82 QMAKE_LFLAGS+="\${LDFLAGS}" 83_EOF 84else 85 cat > "${XBPS_WRAPPERDIR}/qmake" <<_EOF 86#!/bin/sh 87exec /usr/lib/qt5/bin/qmake \ 88 "\$@" \ 89 PREFIX=/usr \ 90 QT_INSTALL_PREFIX=/usr \ 91 LIB=/usr/lib \ 92 QMAKE_CC=$CC QMAKE_CXX=$CXX \ 93 QMAKE_LINK=$CXX QMAKE_LINK_C=$CC \ 94 QMAKE_CFLAGS+="${CFLAGS}" \ 95 QMAKE_CXXFLAGS+="${CXXFLAGS}" \ 96 QMAKE_LFLAGS+="${LDFLAGS}" \ 97 CONFIG+=no_qt_rpath 98_EOF 99fi 100chmod 755 ${XBPS_WRAPPERDIR}/qmake 101cp -p ${XBPS_WRAPPERDIR}/qmake{,-qt5}