summaryrefslogtreecommitdiffstats
path: root/config.profiles/harmattan/rules
diff options
context:
space:
mode:
authorQt by Nokia <qt-info@nokia.com>2011-04-27 12:05:43 +0200
committeraxis <qt-info@nokia.com>2011-04-27 12:05:43 +0200
commit38be0d13830efd2d98281c645c3a60afe05ffece (patch)
tree6ea73f3ec77f7d153333779883e8120f82820abe /config.profiles/harmattan/rules
Initial import from the monolithic Qt.
This is the beginning of revision history for this module. If you want to look at revision history older than this, please refer to the Qt Git wiki for how to use Git history grafting. At the time of writing, this wiki is located here: http://qt.gitorious.org/qt/pages/GitIntroductionWithQt If you have already performed the grafting and you don't see any history beyond this commit, try running "git log" with the "--follow" argument. Branched from the monolithic repo, Qt master branch, at commit 896db169ea224deb96c59ce8af800d019de63f12
Diffstat (limited to 'config.profiles/harmattan/rules')
-rwxr-xr-xconfig.profiles/harmattan/rules404
1 files changed, 404 insertions, 0 deletions
diff --git a/config.profiles/harmattan/rules b/config.profiles/harmattan/rules
new file mode 100755
index 0000000000..3042551d6a
--- /dev/null
+++ b/config.profiles/harmattan/rules
@@ -0,0 +1,404 @@
+#!/usr/bin/make -f
+
+export QTDIR := $(shell pwd)
+export PATH := $(QTDIR)/bin:$(PATH)
+# workaround to use lrelease.
+export LD_LIBRARY_PATH := $(QTDIR)/lib:$(LD_LIBRARY_PATH)
+export QT_PLUGIN_PATH := $(QTDIR)/plugins
+export DH_VERBOSE=1
+
+# Only present in official source package
+#QTVERSION := $(shell ls changes-* | cut -f2 -d '-')
+CURRENTVERSION := $(shell head -1 debian/changelog | sed 's/[^(]*(\([^)]*\)).*/\1/')
+
+include /usr/share/cdbs/1/rules/debhelper.mk
+include /usr/share/cdbs/1/class/makefile.mk
+include /usr/share/cdbs/1/rules/patchsys-quilt.mk
+include /usr/share/cdbs/1/rules/utils.mk
+
+# Find out how many parallel threads to run
+TMP_BUILD_OPTS = $(subst $(comma),$(space),$(DEB_BUILD_OPTIONS))
+ifneq (,$(filter parallel=%,$(TMP_BUILD_OPTS)))
+ NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(TMP_BUILD_OPTS)))
+ PARALLEL_MAKEFLAGS += -j$(NUMJOBS)
+endif
+BUILD_NOOPT := no
+ifneq (,$(filter noopt,$(TMP_BUILD_OPTS)))
+ BUILD_NOOPT := yes
+endif
+BUILD_DOCS := yes
+ifneq (,$(filter nodoc,$(TMP_BUILD_OPTS)))
+ BUILD_DOCS := no
+endif
+ifneq (,$(filter nodocs,$(TMP_BUILD_OPTS)))
+ BUILD_DOCS := no
+endif
+TRY_TARGET_BUILD := no
+ifneq (,$(filter native-tools,$(TMP_BUILD_OPTS)))
+ TRY_TARGET_BUILD := yes
+endif
+
+DEB_MAKE_INVOKE := $(MAKE) $(PARALLEL_MAKEFLAGS)
+DEB_MAKE_BUILD_TARGET := sub-src
+DEB_MAKE_INSTALL_TARGET := INSTALL_ROOT=$(DEB_DESTDIR) install
+DEB_DH_INSTALL_SOURCEDIR := debian/tmp
+
+# Ensure the *.debug files aren't included in any package other than libqt4-dbg
+DEB_DH_INSTALL_ARGS := --exclude=.debug
+
+DEB_MAKE_CLEAN_TARGET := confclean distclean
+
+# Shlibs of the current upstream version
+DEB_DH_MAKESHLIBS_ARGS_ALL := -V
+
+DEB_DH_SHLIBDEPS_ARGS_ALL := --exclude=.debug -Xusr/bin/host-
+
+# Only present in official source package
+#DEB_INSTALL_CHANGELOGS_ALL := changes-$(QTVERSION)
+
+QT_MAEMO_TESTDIR := debian/tests
+export QMAKEFEATURES=$(CURDIR)/debian/tests
+export QMAKE_INVOKE=$(CURDIR)/bin/qmake
+export QMAKE_BUILD_ROOT=$(CURDIR)
+
+#Test packages that will run using -style option
+QT_AUTOTESTS_GUI_STYLE := "libqt4-gui-tests"
+
+# Select OpenGL backend driver
+# Enable multituch support
+ifeq ($(DEB_HOST_ARCH),arm)
+ CONFIG_ARCH_OPT = armv6
+else
+ ifeq ($(DEB_HOST_ARCH),armel)
+ CONFIG_ARCH_OPT = armv6
+ else
+ CONFIG_ARCH_OPT = i386
+ endif
+
+endif
+
+EXTRA_CONFIGURE_OPTS += -DQT_QLOCALE_USES_FCVT -DQT_EXPERIMENTAL_CLIENT_DECORATIONS -DQT_MEEGO_EXPERIMENTAL_SHADERCACHE -DQT_MEEGO_EXPERIMENTAL_SHADERCACHE_TRACE
+
+# Check if running inside scratchbox, and that host-gcc works
+IN_SBOX = $(shell if [ -f /targets/links/scratchbox.config ]; then echo yes; else echo no; fi)
+HOST_GCC_WORKS = $(shell if host-gcc --version > /dev/null; then echo yes; else echo no; fi)
+TARGET_BUILD = no
+ifeq ($(TRY_TARGET_BUILD),yes)
+ ifeq ($(IN_SBOX),yes)
+ ifeq ($(HOST_GCC_WORKS),yes)
+ TARGET_BUILD = yes
+ endif
+ endif
+# Except don't use host-gcc if building for i386
+ ifeq ($(DEB_HOST_ARCH),i386)
+ TARGET_BUILD = no
+ endif
+endif
+
+TARGET_PLATFORM = linux-g++-maemo
+HOST_PLATFORM = unsupported/linux-host-g++
+PLATFORM_FLAG = -platform $(TARGET_PLATFORM)
+FORCE_PKG_CONFIG_FLAG =
+HOST_EXLUDES =
+ifeq ($(TARGET_BUILD),yes)
+ PLATFORM_FLAG = -platform $(HOST_PLATFORM) \
+ -xplatform $(TARGET_PLATFORM)
+ FORCE_PKG_CONFIG_FLAG = -force-pkg-config
+ HOST_EXCLUDES := usr/bin/host- usr/bin/qmake
+endif
+
+DEB_STRIP_EXCLUDE := $(HOST_EXCLUDES)
+
+# Determine target architecture
+ifeq ($(DEB_HOST_ARCH_OS),linux)
+ ifeq ($(CONFIG_ARCH_OPT),armv6)
+ GL_BACKEND=es2
+ EXTRA_CONFIGURE_OPTS += -graphicssystem runtime \
+ -runtimegraphicssystem meego
+ CONFIG_BUILD_OPT = -release
+ else
+ GL_BACKEND=desktop
+ CONFIG_BUILD_OPT = -debug
+ endif
+else
+ TARGET_PLATFORM = glibc-g++
+endif
+
+#If noopt is selected, force -debug and some compilation flags
+ifeq ($(BUILD_NOOPT),yes)
+ CONFIG_BUILD_OPT = -debug
+ CFLAGS = -g
+ CXXFLAGS = -g
+ export CFLAGS
+ export CXXFLAGS
+endif
+
+MAKE_DOCS := -make docs
+DOCS_EXCLUDE :=
+ifeq ($(BUILD_DOCS),no)
+ MAKE_DOCS := -nomake docs
+endif
+
+common-build-arch:: debian/stamp-makefile-build-tools
+
+debian/stamp-makefile-build-tools: debian/stamp-makefile-build
+ $(DEB_MAKE_INVOKE) sub-tools
+ touch $@
+
+common-configure-arch:: config.status
+
+config.status:
+ # Create mkspecs/glibc-g++ from mkspecs/linux-g++, needed by GNU/kFreeBSD
+ # we cannot use directly linux-g++ due to src/corelib/io/io.pri
+ rm -rf mkspecs/glibc-g++
+ cp -a mkspecs/linux-g++ mkspecs/glibc-g++
+ ./configure -opensource \
+ -confirm-license \
+ $(CONFIG_BUILD_OPT) \
+ -prefix "/usr" \
+ -bindir "/usr/bin" \
+ -libdir "/usr/lib" \
+ -docdir "/usr/share/qt4/doc" \
+ -headerdir "/usr/include/qt4" \
+ -datadir "/usr/share/qt4" \
+ -plugindir "/usr/lib/qt4/plugins" \
+ -importdir "/usr/lib/qt4/imports" \
+ -translationdir "/usr/share/qt4/translations" \
+ -sysconfdir "/etc/xdg" \
+ $(PLATFORM_FLAG) \
+ $(FORCE_PKG_CONFIG_FLAG) \
+ -arch $(CONFIG_ARCH_OPT) \
+ -fast \
+ -no-optimized-qmake \
+ -reduce-relocations \
+ -no-separate-debug-info \
+ -no-rpath \
+ -system-zlib \
+ -system-libtiff \
+ -system-libpng \
+ -system-libjpeg \
+ -no-nas-sound \
+ -qt-gif \
+ -no-qt3support \
+ -no-libmng \
+ -opengl $(GL_BACKEND) \
+ -accessibility \
+ -make tools \
+ $(MAKE_DOCS) \
+ -nomake examples \
+ -nomake demos \
+ -little-endian \
+ -no-cups \
+ -no-gtkstyle \
+ -exceptions \
+ -no-xinerama \
+ -no-xcursor \
+ -dbus-linked \
+ -glib \
+ -no-pch \
+ -gstreamer \
+ -svg \
+ -no-webkit \
+ -no-sql-ibase \
+ -xmlpatterns \
+ -system-sqlite \
+ -plugin-sql-sqlite \
+ -openssl \
+ -phonon \
+ -xinput2 \
+ -icu \
+ $(EXTRA_CONFIGURE_OPTS)
+
+BINARY_NAMES := qmake moc lrelease rcc uic
+HOST_BINARIES := $(addprefix $(CURDIR)/bin/, $(addprefix host-, $(BINARY_NAMES)))
+
+# host-prefixed binaries are to be copied anyway regardless of the platform
+common-build-arch:: $(HOST_BINARIES) debian/stamp-makefile-build-target-binaries
+
+$(HOST_BINARIES):
+ cp "$(subst host-,,$@)" "$@"
+ if [ -n "$(HOST_EXCLUDES)" ]; then host-strip --strip-all "$@"; fi
+
+debian/stamp-makefile-build-target-binaries: $(HOST_BINARIES)
+# Build target-platform tools when cross-compiling
+ # First make sure qdoc3 is built
+ if [ "x$(BUILD_DOCS)" = "xyes" ]; then $(DEB_MAKE_INVOKE) -C tools/qdoc3; fi
+ # Keep qmake as is while building the rest, build into native-qmake
+ (cd qmake && $(DEB_MAKE_INVOKE) clean && $(QMAKE_INVOKE) -spec "$(CURDIR)/mkspecs/$(TARGET_PLATFORM)" && $(DEB_MAKE_INVOKE) "TARGET=$(QTDIR)/bin/native-qmake")
+ # bootstrap needs to be first
+ for dir in src/tools/bootstrap src/tools/moc tools/linguist/lrelease src/tools/rcc src/tools/uic; do \
+ (cd "$$dir" && $(DEB_MAKE_INVOKE) clean && $(QMAKE_INVOKE) -spec "$(CURDIR)/mkspecs/$(TARGET_PLATFORM)" && $(DEB_MAKE_INVOKE)) \
+ done
+ #Use the host binaries for the rest of the Qt build
+ for binary in moc rcc uic lrelease; do \
+ mv "$(CURDIR)/bin/$$binary" "$(CURDIR)/bin/native-$$binary" ; \
+ cp "$(CURDIR)/bin/host-$$binary" "$(CURDIR)/bin/$$binary"; \
+ done
+ touch $@
+
+#Build the auto tests
+TEST_PACKAGES := $(filter %-tests, $(DEB_PACKAGES))
+common-build-arch:: $(addprefix debian/stamp-makefile-build-autotest-,$(TEST_PACKAGES))
+
+BUILD_TEST_PACKAGE_NAME = $(subst debian/stamp-makefile-build-autotest-,,$@)
+BUILD_TEST_DIR = build_tests/$(BUILD_TEST_PACKAGE_NAME)
+$(addprefix debian/stamp-makefile-build-autotest-,$(TEST_PACKAGES)) :
+ rm -f tests/auto/$(BUILD_TEST_PACKAGE_NAME).pro
+ cp debian/tests/$(BUILD_TEST_PACKAGE_NAME).pro tests/auto
+ mkdir -p $(BUILD_TEST_DIR)
+ cd $(BUILD_TEST_DIR) && $(QMAKE_INVOKE) -recursive $(CURDIR)/tests/auto/$(BUILD_TEST_PACKAGE_NAME).pro CONFIG+=maemo_tests
+ $(DEB_MAKE_INVOKE) -C $(BUILD_TEST_DIR)
+ touch $@
+
+
+clean::
+# Extra stuff missed by confclean/distclean
+
+ # Misc. files
+ rm -f \
+ config.status \
+ config.tests/.qmake.cache \
+ .qmake.cache \
+ examples/dbus/*/Makefile.* \
+ mkspecs/qconfig.pri \
+ src/corelib/global/qconfig.* \
+ src/tools/uic/qclass_lib_map.h \
+ lib/*.so.* \
+ lib/*.la \
+ tests/auto/libqt4-gui-tests.pri \
+ tests/auto/maemo-auto.pro \
+ tests/auto/qt4-acceptance-tests.pri \
+ tests/auto/qt4-maemo-auto-tests.pri \
+ ;
+
+ # Misc. directories
+ rm -rf \
+ examples/tools/plugandpaint/plugins/ \
+ examples/tools/styleplugin/styles/ \
+ mkspecs/glibc-g++/ \
+ plugins/ \
+ include/ \
+ doc-build/ \
+ doc/html/ \
+ doc/qch/ \
+ ;
+
+ # hppa test directory
+ rm -rf debian/hppa-tmp
+
+ # Leftover dirs
+ find -depth -type d \( -false \
+ -o -name debug-shared \
+ -o -name debug-static \
+ -o -name \*.gch \
+ -o -name .moc\* \
+ -o -name .obj\* \
+ -o -name .pch \
+ -o -name pkgconfig \
+ -o -name .rcc \
+ -o -name release-shared \
+ -o -name release-static \
+ -o -name .uic \
+ \) -print0 | xargs -0 rm -rf
+
+ # Leftover files and all symlinks except those in .git
+ find \( -false \
+ -o \( -name \*.a -a ! -path \*/tests/auto/qdir/types/\*.a \) \
+ -o -name Makefile.Debug \
+ -o -name Makefile.Release \
+ -o -name \*.o \
+ -o -name \*.prl \
+ -o \( -name \*.so -a ! -path \*/tests/auto/qlibrary/library_path/invalid.so \) \
+ -o -name \*.so.debug \
+ -o -type l \
+ \! -path ./.git/\* \
+ \) -print0 | xargs -0 rm -rf
+
+ # Delete all Makefiles, excluding some from src/3rdparty
+ find $(CURDIR) -name Makefile \
+ ! -path $(CURDIR)/src/3rdparty/Makefile \
+ ! -path $(CURDIR)/src/3rdparty/freetype/\* \
+ ! -path $(CURDIR)/src/3rdparty/zlib/\* \
+ ! -path $(CURDIR)/src/3rdparty/ptmalloc/Makefile \
+ ! -path $(CURDIR)/util/gencmap/Makefile \
+ -print0 | xargs -0 rm -rf
+
+ # Any remaining executables
+ find $(CURDIR) -type f -perm +111 -exec file -i '{}' \; \
+ | grep -e application/x-executable \
+ | cut -d ':' -f 1 | xargs rm -f
+
+ # Generated on build
+ rm -f debian/shlibs.local
+ rm -f debian/stamp-makefile-build-tools
+ rm -f debian/stamp-makefile-build-docs
+ rm -f debian/stamp-makefile-build-target-binaries
+ rm -f $(addprefix debian/stamp-makefile-build-autotest-,$(TEST_PACKAGES))
+ rm -f $(addprefix debian/,$(addsuffix .install, $(TEST_PACKAGES)))
+ rm -f $(addprefix tests/auto/,$(addsuffix .pro, $(TEST_PACKAGES)))
+ rm -rf build_tests/
+
+
+common-install-arch::
+ mkdir -p $(DEB_DESTDIR)/usr/share/qt4/translations/
+ cp $(CURDIR)/translations/*.ts $(DEB_DESTDIR)/usr/share/qt4/translations/.
+ find $(DEB_DESTDIR)/usr/share/qt4/translations/ -type f -name "*.ts" | xargs $(CURDIR)/bin/lrelease
+ rm -rf $(DEB_DESTDIR)/usr/share/qt4/translations/*.ts
+# Fix wrong path in pkgconfig files
+ find $(DEB_DESTDIR)/usr/lib/pkgconfig -type f -name '*.pc' \
+ -exec perl -pi -e "s, -L$(CURDIR)/?\S+,,g" {} \;
+# Fix wrong path in prl files
+ find $(DEB_DESTDIR)/usr/lib -type f -name '*.prl' \
+ -exec perl -pi -e "s, -L$(CURDIR)/\S+,,g" {} \;
+ find $(DEB_DESTDIR)/usr/lib -type f -name '*.prl' \
+ -exec sed -i -e "/^QMAKE_PRL_BUILD_DIR/d;s/\(QMAKE_PRL_LIBS =\).*/\1/" {} \;
+
+
+install/qt4-declarative-qmlviewer::
+ install -p -D "debian/QMLViewer.desktop" "$(DEB_DESTDIR)/usr/share/applications/QMLViewer.desktop"
+ install -p -D "debian/QMLViewer.png" "$(DEB_DESTDIR)/usr/share/icons/hicolor/64x64/apps/QMLViewer.png"
+
+
+$(patsubst %,install/%,$(TEST_PACKAGES)) :: install/%:
+ rm -f debian/$(cdbs_curpkg).install
+ $(DEB_MAKE_INVOKE) -C build_tests/$(cdbs_curpkg) $(DEB_MAKE_INSTALL_TARGET)
+ $(DEB_MAKE_INVOKE) -C build_tests/$(cdbs_curpkg) QTM_TEST_INSTALL_FILE=$(CURDIR)/debian/$(cdbs_curpkg).install installtests
+ if [ -z "$(findstring $(cdbs_curpkg),$(QT_AUTOTESTS_GUI_STYLE))" ]; then \
+ $(QT_MAEMO_TESTDIR)/create_tests_xml -t $(QT_MAEMO_TESTDIR) \
+ -i $(DEB_DESTDIR) -p $(CURDIR)/debian/$(cdbs_curpkg).install ;\
+ else \
+ $(QT_MAEMO_TESTDIR)/create_tests_xml -t $(QT_MAEMO_TESTDIR) -c "-style plastique" \
+ -i $(DEB_DESTDIR) -p $(CURDIR)/debian/$(cdbs_curpkg).install ;\
+ fi
+
+common-install-arch::
+ find "$(CURDIR)/bin" -name "host-*" -exec install -p -D {} "$(DEB_DESTDIR)/usr/bin" \;
+ find "$(CURDIR)/bin" -name "native-*" -exec install -p -D {} "$(DEB_DESTDIR)/usr/bin" \;
+
+
+install/libqt4-doc::
+ mkdir -p "$(DEB_DESTDIR)/usr/share/qt4/doc/html/"
+ if [ "x$(BUILD_DOCS)" = "xno" ]; then touch "$(DEB_DESTDIR)/usr/share/qt4/doc/html/BUILT_WITH_NODOCS"; fi
+
+common-build-indep:: debian/stamp-makefile-build-docs
+
+debian/stamp-makefile-build-docs:
+ if [ "x$(BUILD_DOCS)" = "xyes" ]; then $(DEB_MAKE_INVOKE) docs; fi
+ touch $@
+
+binary-predeb/libqt4-dev::
+ sed -i -e 's/#PLATFORM_ARG#/$(TARGET_PLATFORM)/g' debian/$(cdbs_curpkg)/DEBIAN/postinst
+
+# Automatically install lintian overrides, stolen from debian-qt-kde.mk
+$(patsubst %,binary-install/%,$(DEB_PACKAGES)) :: binary-install/%:
+ if test -e debian/$(cdbs_curpkg).lintian; then \
+ install -p -D -m644 debian/$(cdbs_curpkg).lintian \
+ debian/$(cdbs_curpkg)/usr/share/lintian/overrides/$(cdbs_curpkg); \
+ fi
+
+# Generate shlibs local files
+$(patsubst %,binary-fixup/%,$(DEB_ALL_PACKAGES)) :: binary-fixup/%: binary-strip/%
+ if test -e debian/$(cdbs_curpkg)/DEBIAN/shlibs ; then \
+ sed 's/>=[^)]*/= $(CURRENTVERSION)/' debian/$(cdbs_curpkg)/DEBIAN/shlibs >> debian/shlibs.local ;\
+ fi
+