diff src/qt.mk @ 452:ade2c475c772

new package: qt (by Mark Brand)
author Volker Grabsch <vog@notjusthosting.com>
date Sat, 03 Oct 2009 21:11:16 +0200
parents
children 5ba19c633370
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/qt.mk	Sat Oct 03 21:11:16 2009 +0200
@@ -0,0 +1,152 @@
+# Copyright (C) 2009  Mark Brand
+#                     Volker Grabsch
+#
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject
+# to the following conditions:
+#
+# The above copyright notice and this permission notice shall be
+# included in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+# Qt
+PKG             := qt
+$(PKG)_IGNORE   :=
+$(PKG)_VERSION  := 4.6.0-tp1
+$(PKG)_CHECKSUM := 4394bea076279ea090549d3caa00cc1f5e33a22b
+$(PKG)_SUBDIR   := $(PKG)-everywhere-opensource-src-$($(PKG)_VERSION)
+$(PKG)_FILE     := $(PKG)-everywhere-opensource-src-$($(PKG)_VERSION).tar.gz
+$(PKG)_WEBSITE  := http://qt.nokia.com/
+$(PKG)_URL      := http://get.qt.nokia.com/qt/source/$($(PKG)_FILE)
+$(PKG)_DEPS     := gcc
+
+define $(PKG)_UPDATE
+    wget -q -O- 'http://qt.gitorious.org/qt/qt/commits' | \
+    grep '<li><a href="/qt/qt/commit/' | \
+    $(SED) -n 's,.*<a[^>]*>v\([0-9][^>]*\)<.*,\1,p' | \
+    tail -1
+endef
+
+define $(PKG)_BUILD
+
+    # Note on patchfile qt-win32.patch
+    # A patchfile should have been applied already. Since we make a copy
+    # of the patched directory here, it is important that the changes
+    # in the patches do not break the native build.
+
+    # Bogus install bin directory for the DLLs
+    # Should stay empty because of -prefix-install
+    mkdir '$(1)'/bindirsink
+
+    # First configure a minimal native version of Qt
+    # for moc, rcc, uic and qmake
+    cp -a '$(1)' '$(1)'.native
+    cd '$(1)'.native && ./configure \
+        -opensource \
+        -confirm-license \
+        -prefix '$(PREFIX)/$(TARGET)' \
+        -prefix-install \
+        -bindir '$(1)'/bindirsink \
+        -fast \
+        -nomake demos \
+        -nomake examples \
+        -nomake libs \
+        -nomake tools \
+        -nomake docs \
+        -nomake translations
+
+    $(MAKE) -C '$(1)'.native -j $(JOBS) sub-tools-bootstrap
+    $(MAKE) -C '$(1)'.native -j $(JOBS) sub-moc
+    $(MAKE) -C '$(1)'.native -j $(JOBS) sub-rcc
+    $(MAKE) -C '$(1)'.native -j $(JOBS) sub-uic
+    $(MAKE) -C '$(1)'.native clean
+
+    # Trick the build system into using native tools
+    ln -s '$(1)'.native/bin/{moc,rcc,uic,qmake} '$(1)'/bin/
+
+    # Make sure we don't build the tools again
+    echo 'qmake:' >'$(1)'/qmake/Makefile.unix
+    for f in `ls -1 '$(1)'/src/tools`; \
+        do echo TEMPLATE = subdirs >'$(1)'/src/tools/"$$f"/"$$f".pro; \
+    done
+
+    # Trick the buildsystem into using win32 feature files:
+    mv '$(1)'/mkspecs/features/unix '$(1)'/mkspecs/features/unix.orig
+    ln -s win32 '$(1)'/mkspecs/features/unix
+
+    # Adjust the mkspec values that contain the TARGET platform prefix
+    $(SED) 's/HOSTPLATFORMPREFIX-/$(TARGET)-/g;'                  -i '$(1)'/mkspecs/win32-g++/qmake.conf
+    $(SED) 's^HOSTPLATFORMINCLUDE^$(PREFIX)/$(TARGET)/include^g;' -i '$(1)'/mkspecs/win32-g++/qmake.conf
+
+    # Make sure qmake doesn't use compilation paths meant for unix
+    find '$(1)'/src -name '*.pr[oi]' -exec \
+        $(SED) 's/\(^\|[^_/]\)unix/\1linux/g;' -i {} \;
+
+    # Make qmake use compilation paths meant for Windows
+    find '$(1)'/src -name '*.pr[oi]' -exec \
+        $(SED) 's/\(^\|[^_/]\)win32\([^-]\|$$\)/\1unix\2/g;' -i {} \;
+
+    # Fix-ups for files not found during configure
+    # Probably errors in QT 4.6 Technology Preview 1
+    ln -s ../WebKit.pri '$(1)'/src/3rdparty/webkit/WebKit
+
+    # Fix-ups for files not found during make
+    # Probably errors in QT 4.6 Technology Preview 1
+    mkdir                 '$(1)'/src/3rdparty/webkit/JavaScriptCore/generated/release
+    ln -s ../chartables.c '$(1)'/src/3rdparty/webkit/JavaScriptCore/generated/release/
+    ln -s ../Grammar.cpp  '$(1)'/src/3rdparty/webkit/JavaScriptCore/generated/release/
+    mkdir                 '$(1)'/src/3rdparty/webkit/JavaScriptCore/generated/debug
+    ln -s ../chartables.c '$(1)'/src/3rdparty/webkit/JavaScriptCore/generated/debug/
+    ln -s ../Grammar.cpp  '$(1)'/src/3rdparty/webkit/JavaScriptCore/generated/debug/
+
+    # Fix case of filename
+    $(SED) 's/QWidget\.h/qwidget.h/g;' -i '$(1)'/src/3rdparty/webkit/WebCore/plugins/win/PluginViewWin.cpp
+
+    # Configure Qt for MinGW target
+    cd '$(1)' && ./configure \
+        -opensource \
+        -confirm-license \
+        -xplatform win32-g++ \
+        -host-arch i386 \
+        -little-endian \
+        -exceptions \
+        -static \
+        -prefix '$(PREFIX)/$(TARGET)' \
+        -prefix-install \
+        -bindir '$(1)'/bindirsink \
+        -plugin-sql-odbc \
+        -plugin-sql-psql \
+        -plugin-sql-sqlite \
+        -plugin-sql-mysql \
+        -script \
+        -webkit \
+        -phonon \
+        -no-phonon-backend \
+        -accessibility \
+        -no-reduce-exports \
+        -no-rpath \
+        -make libs \
+        -nomake demos \
+        -nomake docs \
+        -nomake examples \
+        -continue
+
+    $(MAKE) -C '$(1)' -j '$(JOBS)'
+    $(TARGET)-ranlib '$(1)'/lib/*.a
+    $(MAKE) -C '$(1)' install
+
+    # install native tools manually
+    $(INSTALL) -m755 '$(1)'.native/bin/{moc,rcc,uic} '$(PREFIX)/$(TARGET)/bin/'
+    $(INSTALL) -m755 '$(1)'.native/bin/qmake '$(PREFIX)/bin/$(TARGET)-qmake'
+endef