# Copyright 1999-2017 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Id$ EAPI=7 inherit eutils git-r3 toolchain-funcs SRCTYPE="free" DESCRIPTION="Trinity's Qt3 toolkit fork - a comprehensive C++ application development framework." HOMEPAGE="http://trinitydesktop.org/" EGIT_REPO_URI="https://mirror.git.trinitydesktop.org/gitea/TDE/tqt3" LICENSE="|| ( GPL-2 GPL-3 )" SLOT="3.5" IUSE="cups debug doc examples firebird ipv6 mysql nas nis +opengl postgres sqlite +xinerama tablet +xrandr glib mng fontconfig +hiddenvisibility" RDEPEND=" virtual/jpeg:= media-libs/freetype media-libs/libpng:= sys-libs/zlib x11-libs/libXft x11-libs/libXcursor x11-libs/libXi x11-libs/libXrandr x11-libs/libSM cups? ( net-print/cups ) firebird? ( dev-db/firebird ) mysql? ( virtual/mysql ) nas? ( media-libs/nas ) opengl? ( virtual/opengl virtual/glu ) postgres? ( dev-db/postgresql:= ) sqlite? ( dev-db/sqlite:= ) mng? ( media-libs/libmng ) glib? ( dev-libs/glib ) fontconfig? ( media-libs/fontconfig ) xinerama? ( x11-libs/libXinerama ) xrandr? ( x11-libs/libXrandr )" DEPEND="${RDEPEND} x11-base/xorg-proto" TQTBASE="/usr/tqt3" pkg_setup() { export TQTDIR="${S}" CXX=$(tc-getCXX) if [[ ${CXX/g++/} != ${CXX} ]]; then PLATCXX="g++" elif [[ ${CXX/icpc/} != ${CXX} ]]; then PLATCXX="icc" else die "Unknown compiler ${CXX}." fi case ${CHOST} in *-freebsd*|*-dragonfly*) PLATNAME="freebsd" ;; *-openbsd*) PLATNAME="openbsd" ;; *-netbsd*) PLATNAME="netbsd" ;; *-darwin*) PLATNAME="darwin" ;; *-linux-*|*-linux) PLATNAME="linux" ;; *) die "Unknown CHOST, no platform choosed." esac if [[ "$CHOST" == *64* && "$PLATCXX" == "g++" ]]; then export PLATFORM="${PLATNAME}-${PLATCXX}-64" else export PLATFORM="${PLATNAME}-${PLATCXX}" fi } src_prepare() { # Apply user-provided patches eapply_user # Do not link with -rpath. See Gentoo bug #75181. find "${S}"/mkspecs -name qmake.conf | xargs \ sed -i -e 's:QMAKE_RPATH.*:QMAKE_RPATH =:' || die sed -i -e "s:QMAKE_CFLAGS_RELEASE.*=.*:QMAKE_CFLAGS_RELEASE=${CFLAGS}:" \ -e 's:QMAKE_CFLAGS\t\t=.*:QMAKE_CFLAGS =:' \ -e "s:QMAKE_CXXFLAGS_RELEASE.*=.*:QMAKE_CXXFLAGS_RELEASE=${CXXFLAGS}:" \ -e "s:QMAKE_LFLAGS_RELEASE.*=.*:QMAKE_LFLAGS_RELEASE=${LDFLAGS}:" \ -e "s:\.*=.*:QMAKE_CC=$(tc-getCC):" \ -e "s:\.*=.*:QMAKE_CXX=$(tc-getCXX):" \ -e "s:\.*=.*:QMAKE_LINK=$(tc-getCXX):" \ -e "s:\.*=.*:QMAKE_LINK_SHLIB=$(tc-getCXX):" \ -e "s:\.*=.*:QMAKE_STRIP=:" \ "${S}/mkspecs/${PLATFORM}/qmake.conf" || die if use hiddenvisibility; then sed -i -e 's:QMAKE_CFLAGS =:QMAKE_CFLAGS = -fvisibility=hidden -fvisibility-inlines-hidden:' \ "${S}/mkspecs/${PLATFORM}/qmake.conf" || die fi if [ $(get_libdir) != "lib" ] ; then sed -i -e "s:/lib$:/$(get_libdir):" \ "${S}/mkspecs/${PLATFORM}/qmake.conf" || die fi sed -i -e "s:CXXFLAGS.*=:CXXFLAGS=${CXXFLAGS} :" \ -e "s:LFLAGS.*=:LFLAGS=${LDFLAGS} :" \ "${S}/qmake/Makefile.unix" || die # Remove docs from install if we don't need them use doc || sed -i -e '/INSTALLS.*=.*htmldocs/d' \ "${S}/src/qt_install.pri" || die } src_configure() { export SYSCONF="${D}${TQTBASE}"/etc/settings # Let's just allow writing to these directories # during emerge as it makes TQt much happier. addwrite "${TQTBASE}/etc/settings" addwrite "${HOME}/.qt" # Common options myconf=" -sm -thread -stl -no-verbose -largefile -no-pch -inputmethod" myconf+=" $(echo -{qt-imgfmt-,system-lib}{jpeg,png}) -qt-gif -system-zlib" myconf+=" -platform ${PLATFORM} -xplatform ${PLATFORM}" myconf+=" -xft -xrender -xshape -xkb -xcursor -prefix ${TQTBASE}" myconf+=" -libdir ${TQTBASE}/$(get_libdir) -fast -no-sql-odbc" [ "$(get_libdir)" != "lib" ] && myconf+="${myconf} -L/usr/$(get_libdir)" # Optional options use nas && myconf+=" -system-nas-sound" || myconf+=" -no-nas-sound" use nis && myconf+=" -nis" || myconf+=" -no-nis" use xrandr && myconf+=" -xrandr" || myconf+=" -no-xrandr" use mng && myconf+=" -qt-imgfmt -system-libmng" || myconf+=" -no-imgfmt-mng" use cups && myconf+=" -cups" || myconf+=" -no-cups" use opengl && myconf+=" -enable-module=opengl -no-dlopen-opengl" || myconf+=" -disable-opengl" use xinerama && myconf+=" -xinerama" || myconf+=" -no-xinerama" use ipv6 && myconf+=" -ipv6" || myconf+=" -no-ipv6" use glib && myconf+=" -glibmainloop" || myconf+=" -no-glibmainloop" use fontconfig && myconf+=" -lfontconfig" use debug && myconf+=" -debug" || myconf+=" -release -no-g++-exceptions -no-exceptions" use mysql && myconf+=" -plugin-sql-mysql -I/usr/include/mysql -L/usr/$(get_libdir)/mysql" || myconf+=" -no-sql-mysql" use postgres && myconf+=" -plugin-sql-psql -I/usr/include/postgresql/server -I/usr/include/postgresql/pgsql -I/usr/include/postgresql/pgsql/server" || myconf+=" -no-sql-psql" use firebird && myconf+=" -plugin-sql-ibase -I/opt/firebird/include" || myconf+=" -no-sql-ibase" use sqlite && myconf+=" -plugin-sql-sqlite -plugin-sql-sqlite3" || myconf+=" -no-sql-sqlite -no-sql-sqlite3" use tablet && myconf+=" -tablet" || myconf+=" -no-tablet" export YACC='byacc -d' tc-export CC CXX export LINK="$(tc-getCXX)" ./configure ${myconf} || die } src_compile() { # Compile TQt with TQmake and TQmoc emake src-qmake src-moc sub-src || die # Compile TQt plugins (if any selected) emake sub-plugins || die # Compile TQDesigner (TQuic is needed by tdelibs), TQAssistant and friends (msg2tqm, qembed..) emake sub-tools || die # Compile examples and tutorials if use examples; then emake sub-tutorial sub-examples || die fi } src_install() { # Install TQt with all compiled before emake INSTALL_ROOT="${D}" install # Fix pkgconfig location dodir /usr/$(get_libdir) mv "${D}${TQTBASE}/$(get_libdir)/pkgconfig" "${D}/usr/$(get_libdir)/" # List all the multilib libdirs local libdirs for alibdir in $(get_all_libdirs); do libdirs="${libdirs}:${TQTBASE}/${alibdir}" done # Set environment variables cat < "${T}"/44tqt3 PATH=${TQTBASE}/bin ROOTPATH=${TQTBASE}/bin LDPATH=${libdirs:1} MANPATH=${TQTBASE}/doc/man EOF cat < "${T}"/44-tqt3-revdep SEARCH_DIRS="${TQTBASE}" EOF insinto /etc/revdep-rebuild doins "${T}"/44-tqt3-revdep doenvd "${T}"/44tqt3 if [ "${SYMLINK_LIB}" = "yes" ]; then dosym $(get_abi_LIBDIR ${DEFAULT_ABI}) ${TQTBASE}/lib fi keepdir ${TQTBASE}/etc/settings if use doc; then insinto ${TQTBASE} doins -r "${S}"/doc fi # Install example and tutorial sources if use examples; then find "${S}"/examples "${S}"/tutorial -name Makefile | \ xargs sed -i -e "s:${S}:${TQTBASE}:g" cp -r "${S}"/examples "${D}"${TQTBASE}/ cp -r "${S}"/tutorial "${D}"${TQTBASE}/ fi # Misc build requirements sed -e "s:${S}:${TQTBASE}:g" \ "${S}"/.qmake.cache > "${D}"${TQTBASE}/.qmake.cache } pkg_postinst() { echo elog "After rebuilding TQt, it can happen that TQt plugins (such as TQt/TDE styles," elog "or widgets for the TQt designer) are no longer recognized. If this situation" elog "occurs you should recompile the packages providing these plugins," elog "and you should also make sure that TQt and its plugins were compiled with the" elog "same version of GCC. Packages that may need to be rebuilt are, for instance," elog "trinity-base/tdelibs and trinity-base/tdeartwork-styles." echo }