902544a40ad8326306d22d84c34b92900de40606
[openwrt/svn-archive/archive.git] / lang / pyqt4 / Makefile
1 #
2 # Copyright (C) 2010 OpenWrt.org
3 #
4 # This is free software, licensed under the GNU General Public License v2.
5 # See /LICENSE for more information.
6 #
7
8 include $(TOPDIR)/rules.mk
9
10 PKG_NAME:=pyqt4
11 PKG_VERSION:=4.7.4
12 PKG_RELEASE:=1
13
14 PKG_SOURCE:=PyQt-x11-gpl-$(PKG_VERSION).tar.gz
15 PKG_SOURCE_URL:=http://www.riverbankcomputing.co.uk/static/Downloads/PyQt4
16 PKG_MD5SUM:=88e9f1bc467cccf424d2032e3470982c
17 PKG_BUILD_DIR:=$(BUILD_DIR)/PyQt-x11-gpl-$(PKG_VERSION)
18 PKG_INSTALL:=1
19 PKG_BUILD_PARALLEL:=1
20
21 PKG_BUILD_DEPENDS:=python-sip qt4
22
23 include $(INCLUDE_DIR)/package.mk
24 $(call include_mk, python-package.mk)
25 $(call include_mk, python-sip-package.mk)
26
27 define Package/pyqt4
28 SECTION:=language-python
29 CATEGORY:=Languages
30 SUBMENU:=Python
31 TITLE:=Python QT4
32 URL:=http://www.riverbankcomputing.co.uk/software/pyqt/download
33 DEPENDS:=+qt4 +dbus-python +python-sip @QT4_WS_X11
34 endef
35
36 define Package/pyqt4/Description
37 Python QT4 framework bindings.
38 endef
39
40 TARGET_INCDIRS+=$(STAGING_DIR)/include \
41 $(STAGING_DIR)/usr/include \
42 $(STAGING_DIR)/usr/include/Qt \
43 $(STAGING_DIR)/usr/include/Qt3Support \
44 $(STAGING_DIR)/usr/include/QtCore \
45 $(STAGING_DIR)/usr/include/QtDBus \
46 $(STAGING_DIR)/usr/include/QtGui \
47 $(STAGING_DIR)/usr/include/QtNetwork \
48 $(STAGING_DIR)/usr/include/QtSql \
49 $(STAGING_DIR)/usr/include/QtSvg \
50 $(STAGING_DIR)/usr/include/QtTest \
51 $(STAGING_DIR)/usr/include/QtXml \
52 $(STAGING_DIR)/usr/include/python$(PYTHON_VERSION) \
53 $(STAGING_DIR)/usr/lib/dbus-1.0/include \
54 $(TOOLCHAIN_DIR)/include \
55 $(TOOLCHAIN_DIR)/usr/include
56
57 TARGET_LIBDIRS+=$(STAGING_DIR)/lib \
58 $(STAGING_DIR)/usr/lib \
59 $(TOOLCHAIN_DIR)/lib \
60 $(TOOLCHAIN_DIR)/usr/lib
61
62 EXTRA_CFLAGS:=
63 EXTRA_LDFLAGS:=-Wl,-rpath-link=$(STAGING_DIR)/usr/lib \
64 -Wl,-rpath=/usr/lib/
65
66 QTDIRSFILE:=$(PKG_BUILD_DIR)/qtdirs.out
67 SIPCFGFILE:=$(PKG_BUILD_DIR)/sipconfig.macros
68
69 QT_VERSION:=./files/qt_versioning.sh version "$(STAGING_DIR)/usr/include" "$(PKG_BUILD_DIR)/qtver.tmp"
70 QT_EDITION:=./files/qt_versioning.sh edition "$(STAGING_DIR)/usr/include" "$(PKG_BUILD_DIR)/qtver.tmp"
71
72 # Welcome to cross compilation hell. Dinner is served!
73
74 define Build/Configure
75 echo "$(STAGING_DIR)/usr" > $(QTDIRSFILE); \
76 echo "$(STAGING_DIR)/usr/include" >> $(QTDIRSFILE); \
77 echo "$(STAGING_DIR)/usr/lib" >> $(QTDIRSFILE); \
78 echo "$(STAGING_DIR)/usr/bin" >> $(QTDIRSFILE); \
79 echo "$(STAGING_DIR)/usr/share" >> $(QTDIRSFILE); \
80 echo "$(STAGING_DIR)/usr/lib/Qt/plugins" >> $(QTDIRSFILE); \
81 $(QT_VERSION) >> $(QTDIRSFILE); \
82 $(QT_EDITION) >> $(QTDIRSFILE); \
83 echo "Open Source" >> $(QTDIRSFILE); \
84 echo "shared" >> $(QTDIRSFILE); \
85 \
86 $(CP) "$(PYTHON_SIP_CONFIG_TEMPLATE)" "$(SIPCFGFILE)"; \
87 echo "INCDIR_QT $(STAGING_DIR)/usr/include" >> $(SIPCFGFILE); \
88 echo "LIBDIR_QT $(STAGING_DIR)/usr/lib" >> $(SIPCFGFILE); \
89 echo "MOC $(STAGING_DIR_HOST)/bin/moc" >> $(SIPCFGFILE); \
90 echo "QT_INSTALL_BINS $(STAGING_DIR)/usr/bin" >> $(SIPCFGFILE); \
91 echo "QT_INSTALL_HEADERS $(STAGING_DIR)/usr/include" >> $(SIPCFGFILE); \
92 echo "QT_INSTALL_LIBS $(STAGING_DIR)/usr/lib" >> $(SIPCFGFILE); \
93 echo "INCDIR $(TARGET_INCDIRS)" >> $(SIPCFGFILE); \
94 echo "INCDIR_OPENGL $(TARGET_INCDIRS)" >> $(SIPCFGFILE); \
95 echo "INCDIR_X11 $(TARGET_INCDIRS)" >> $(SIPCFGFILE); \
96 echo "LIBDIR $(TARGET_LIBDIRS)" >> $(SIPCFGFILE); \
97 echo "LIBDIR_OPENGL $(TARGET_LIBDIRS)" >> $(SIPCFGFILE); \
98 echo "LIBDIR_X11 $(TARGET_LIBDIRS)" >> $(SIPCFGFILE); \
99 ( \
100 export PYTHONPATH="$(STAGING_DIR_HOST)/$(PYTHON_PKG_DIR)"; \
101 cd "$(PKG_BUILD_DIR)"; \
102 python -B ./configure.py \
103 --use-arch="$(ARCH)" \
104 --qmake="$(STAGING_DIR_HOST)/bin/qmake" \
105 --qmake-spec="$(STAGING_DIR)/usr/share/mkspecs/linux-openwrt-g++" \
106 --qmake-prefix='TARGET_CC="$(TARGET_CROSS)gcc"' \
107 --qmake-prefix='TARGET_CXX="$(TARGET_CROSS)g++"' \
108 --qmake-prefix='TARGET_AR="$(TARGET_CROSS)ar cqs"' \
109 --qmake-prefix='TARGET_OBJCOPY="$(TARGET_CROSS)objcopy"' \
110 --qmake-prefix='TARGET_RANLIB="$(TARGET_CROSS)ranlib"' \
111 --qmake-prefix='TARGET_CFLAGS="$(TARGET_CFLAGS) $(EXTRA_CFLAGS)"' \
112 --qmake-prefix='TARGET_CXXFLAGS="$(TARGET_CFLAGS) $(EXTRA_CFLAGS)"' \
113 --qmake-prefix='TARGET_LDFLAGS="$(TARGET_LDFLAGS) $(EXTRA_LDFLAGS)"' \
114 --qmake-prefix='TARGET_INCDIRS="$(TARGET_INCDIRS)"' \
115 --qmake-prefix='TARGET_LIBDIRS="$(TARGET_LIBDIRS)"' \
116 --qmake-prefix='STAGING_DIR_HOST="$(STAGING_DIR)/../host"' \
117 --qtdirs-file="$(QTDIRSFILE)" \
118 --sipconfig-macros="$(SIPCFGFILE)" \
119 --dbus="$(STAGING_DIR)/usr/include/dbus-1.0" \
120 --bindir="$(PKG_INSTALL_DIR)/usr/bin" \
121 --destdir="$(PKG_INSTALL_DIR)/$(PYTHON_PKG_DIR)" \
122 --plugin-destdir="$(PKG_INSTALL_DIR)/usr/lib/Qt/plugins" \
123 --pydbus-installdir="$(PKG_INSTALL_DIR)/$(PYTHON_PKG_DIR)" \
124 --sipdir="$(PKG_INSTALL_DIR)/usr/share/sip" \
125 --protected-is-public \
126 --crosscompile \
127 --no-designer-plugin \
128 --no-qsci-api \
129 --confirm-license \
130 --verbose \
131 ); \
132 ./files/fixup.sh "$(PKG_BUILD_DIR)"
133 endef
134
135 #FIXME: Something still puts the host Python include path into the CFLAGS.
136 # I'm currently unsure who does this. Most likely SIP. arghh..
137
138 define Build/Compile
139 $(MAKE_VARS) $(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR)
140 endef
141
142 define Build/Install
143 $(MAKE_VARS) DESTDIR="" $(MAKE) -C $(PKG_BUILD_DIR) install
144 endef
145
146 define Package/pyqt4/install
147 $(INSTALL_DIR) $(1)/usr/bin
148 $(INSTALL_DIR) $(1)/$(PYTHON_PKG_DIR)/PyQt4
149 $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/{pylupdate4,pyrcc4,pyuic4} $(1)/usr/bin
150 $(INSTALL_DATA) $(PKG_INSTALL_DIR)/$(PYTHON_PKG_DIR)/qt.so $(1)/$(PYTHON_PKG_DIR)
151 $(CP) $(PKG_INSTALL_DIR)/$(PYTHON_PKG_DIR)/PyQt4 $(1)/$(PYTHON_PKG_DIR)
152 endef
153
154 $(eval $(call RequireCommand,python, \
155 Please install Python 2.x \
156 ))
157
158 $(eval $(call BuildPackage,pyqt4))