You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

226 lines
8.1 KiB

##
## qt.spec -- OpenPKG RPM Specification
## Copyright (c) 2000-2003 The OpenPKG Project <http://www.openpkg.org/>
## Copyright (c) 2000-2003 Ralf S. Engelschall <rse@engelschall.com>
## Copyright (c) 2000-2003 Cable & Wireless <http://www.cw.com/>
##
## Permission to use, copy, modify, and distribute this software for
## any purpose with or without fee is hereby granted, provided that
## the above copyright notice and this permission notice appear in all
## copies.
##
## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
## SUCH DAMAGE.
##
# package information
Name: qt
Summary: The Qt Toolkit
URL: http://www.trolltech.com/products/qt/x11.html
Vendor: TrollTech AS
Packager: The OpenPKG Project
Distribution: OpenPKG [EVAL]
Group: XWindow
License: GPL
Version: 3.2.0
Release: 20030813
# package options
%option with_pgsql no
%option with_mysql no
# list of sources
Source0: ftp://ftp.trolltech.com/pub/qt/source/qt-x11-free-%{version}.tar.bz2
# build information
Prefix: %{l_prefix}
BuildRoot: %{l_buildroot}
BuildPreReq: OpenPKG, openpkg >= 20030103, X11, gcc
PreReq: OpenPKG, openpkg >= 20030103, X11
%if "%{with_pgsql}" == "yes"
BuildPreReq: postgresql
PreReq: postgresql
%endif
%if "%{with_mysql}" == "yes"
BuildPreReq: mysql
PreReq: mysql
%endif
AutoReq: no
AutoReqProv: no
%description
Qt is a GUI (graphical user interface) software toolkit which simplifies
the task of writing and maintaining GUIs, and allows the developer to
create prototypes and feature-rich applications quickly. Offering C++
library bindings, Qt enables development in an object-oriented
environment and appeals to developers with portability in mind. Qt's
portable C++ library bindings allow for error-free recompiling on at
least the three major platforms Unix (and Linux), Apple Macintosh, and
Microsoft Windows. Its API architecture is designed to reduce complexity
and increase reliability through a signal and slot mechanism, which is
similar to templates in C++, but with influences from component
technology.
%prep
%setup -q -n qt-x11-free-%{version}
%build
# display a warning that this package is a beast
( echo "This package requires about 1.3 GB of temporary disk space and"
echo "about three hours of time (with gcc) to build on a 800Mhz system."
echo "So be prepared and patient, please... ;-)"
) | %{l_rpmtool} msg -b -t notice
export QTDIR=`pwd`
case "%{l_target}" in
*-freebsd* ) oscomp="freebsd-g++"
%{l_shtool} subst \
-e 's/defined(_POSIX_THREAD_SAFE_FUNCTIONS)/_POSIX_THREAD_SAFE_FUNCTIONS - 0 >0/g' \
src/dialogs/qfiledialog.cpp src/kernel/qfont_x11.cpp \
src/tools/qdatetime.cpp src/tools/qdir_unix.cpp
;;
*-linux* ) oscomp="linux-g++"
;;
*-solaris* ) oscomp="solaris-g++"
;;
* ) echo "platform %{l_target} not supported" 2>&1; exit 1 ;;
esac
# special trolltech configuration
CC="%{l_cc}" \
CXX="%{l_cxx}" \
CFLAGS="%{l_cflags -O}" \
CXXFLAGS="%{l_cxxflags -O}" \
CPPFLAGS="%{l_cppflags}" \
LDFLAGS="%{l_ldflags}" \
echo "yes" | ./configure \
%if "%{with_pgsql}" == "yes"
-qt-sql-psql \
%endif
%if "%{with_mysql}" == "yes"
-qt-sql-mysql \
%endif
-platform $oscomp \
-prefix %{l_prefix} \
-docdir %{l_prefix}/share/qt/doc \
-datadir %{l_prefix}/share/qt/data \
-release -static -stl -sm \
-qt-zlib -qt-libpng -qt-libjpeg -qt-libmng -qt-gif \
-no-nis -no-cups -no-nas-sound -no-xinerama \
-no-xrender -no-xft -no-tablet -no-xkb \
-no-thread
# set $HOME to a writable directory for qsettings
HOME=$PWD
%{l_make} %{l_mflags -O} \
MAKE="%{l_make} %{l_mflags -O}" \
symlinks src-qmake src-moc sub-src sub-tools
# generate the multithreaded library definitions also
mv lib/qt.pc .
# run configure a second time to get threaded libs as well
CC="%{l_cc}" \
CXX="%{l_cxx}" \
CFLAGS="%{l_cflags -O}" \
CXXFLAGS="%{l_cxxflags -O}" \
CPPFLAGS="%{l_cppflags}" \
LDFLAGS="%{l_ldflags}" \
echo "yes" | ./configure \
%if "%{with_pgsql}" == "yes"
-qt-sql-psql \
%endif
%if "%{with_mysql}" == "yes"
-qt-sql-mysql \
%endif
-platform $oscomp \
-prefix %{l_prefix} \
-docdir %{l_prefix}/share/qt/doc \
-datadir %{l_prefix}/share/qt/data \
-release -static -stl -sm \
-qt-zlib -qt-libpng -qt-libjpeg -qt-libmng -qt-gif \
-no-nis -no-cups -no-nas-sound -no-xinerama \
-no-xrender -no-xft -no-tablet -no-xkb \
-thread
# make our targets a second time to get threaded libs, too
%{l_make} %{l_mflags -O} \
MAKE="%{l_make} %{l_mflags -O}" \
symlinks src-qmake src-moc sub-src sub-tools
# patch and prepare pkg-config (.pc) files
mv qt.pc lib
%{l_shtool} subst \
-e 's;[ \t]*$;;g' \
-e 's;\(Libs.*$\);\1 -pthread;g' \
lib/qt-mt.pc
%install
rm -rf $RPM_BUILD_ROOT
# make directory structure
%{l_shtool} mkdir -f -p -m 755 \
$RPM_BUILD_ROOT%{l_prefix}/bin \
$RPM_BUILD_ROOT%{l_prefix}/lib/pkgconfig \
$RPM_BUILD_ROOT%{l_prefix}/include/qt/private \
$RPM_BUILD_ROOT%{l_prefix}/man/man1 \
$RPM_BUILD_ROOT%{l_prefix}/man/man3 \
$RPM_BUILD_ROOT%{l_prefix}/share/qt/doc/html \
$RPM_BUILD_ROOT%{l_prefix}/share/qt/templates \
$RPM_BUILD_ROOT%{l_prefix}/share/qt/phrasebooks \
$RPM_BUILD_ROOT%{l_prefix}/share/qt/images
# copy binaries, headers, and then libraries to their target
%{l_shtool} install -c -s -m 755 \
bin/qmake bin/moc bin/uic \
bin/linguist bin/lrelease bin/lupdate \
bin/assistant bin/qtconfig bin/designer \
$RPM_BUILD_ROOT%{l_prefix}/bin/
# copy mkspecs directory for later portable use of qmake
cp -rp mkspecs $RPM_BUILD_ROOT%{l_prefix}/share/qt/
# correct man suffix
for man in doc/man/man3/*.3qt; do
%{l_shtool} subst -e 's;\.3qt;.3;' $man
mv $man `echo $man | sed -e 's;\.3qt$;.3;'`
done
%{l_shtool} install -c -m 644 \
include/*.h $RPM_BUILD_ROOT%{l_prefix}/include/qt/
%{l_shtool} install -c -m 644 \
include/private/*.h $RPM_BUILD_ROOT%{l_prefix}/include/qt/private/
%{l_shtool} install -c -m 644 \
doc/html/* $RPM_BUILD_ROOT%{l_prefix}/share/qt/doc/html/
%{l_shtool} install -c -m 644 \
tools/designer/templates/*.ui $RPM_BUILD_ROOT%{l_prefix}/share/qt/templates/
%{l_shtool} install -c -m 644 \
tools/linguist/phrasebooks/*.qph $RPM_BUILD_ROOT%{l_prefix}/share/qt/phrasebooks/
%{l_shtool} install -c -m 644 \
tools/designer/designer/images/* $RPM_BUILD_ROOT%{l_prefix}/share/qt/images/
%{l_shtool} install -c -m 644 \
lib/*.a lib/*.prl $RPM_BUILD_ROOT%{l_prefix}/lib/
%{l_shtool} install -c -m 644 \
lib/*.pc $RPM_BUILD_ROOT%{l_prefix}/lib/pkgconfig/
%{l_shtool} install -c -m 644 \
doc/man/man3/*.3 $RPM_BUILD_ROOT%{l_prefix}/man/man3/
%{l_shtool} install -c -m 644 \
doc/man/man1/*.1 $RPM_BUILD_ROOT%{l_prefix}/man/man1/
%{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT %{l_files_std}
%files -f files
%clean
rm -rf $RPM_BUILD_ROOT