qt.mk 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620
  1. ######################################################################
  2. #
  3. # Qt Embedded for Linux
  4. # http://www.qtsoftware.com/
  5. #
  6. # This makefile was originally composed by Thomas Lundquist <thomasez@zelow.no>
  7. # Later heavily modified by buildroot developers
  8. #
  9. # BTW, this uses alot of FPU calls and it's pretty slow if you use
  10. # the kernels FPU emulation so it's better to choose soft float in the
  11. # buildroot config (and uClibc.config of course, if you have your own.)
  12. #
  13. ######################################################################
  14. QT_VERSION = 4.7.3
  15. QT_SOURCE = qt-everywhere-opensource-src-$(QT_VERSION).tar.gz
  16. QT_SITE = http://get.qt.nokia.com/qt/source
  17. QT_INSTALL_STAGING = YES
  18. ifeq ($(BR2_PACKAGE_QT_LICENSE_APPROVED),y)
  19. QT_CONFIGURE_OPTS += -opensource -confirm-license
  20. endif
  21. QT_CONFIG_FILE=$(call qstrip,$(BR2_PACKAGE_QT_CONFIG_FILE))
  22. ifneq ($(QT_CONFIG_FILE),)
  23. QT_CONFIGURE_OPTS += -config buildroot
  24. endif
  25. ifeq ($(BR2_LARGEFILE),y)
  26. QT_CONFIGURE_OPTS += -largefile
  27. else
  28. QT_CONFIGURE_OPTS += -no-largefile
  29. endif
  30. ifeq ($(BR2_PACKAGE_QT_QT3SUPPORT),y)
  31. QT_CONFIGURE_OPTS += -qt3support
  32. else
  33. QT_CONFIGURE_OPTS += -no-qt3support
  34. endif
  35. ifeq ($(BR2_PACKAGE_QT_DEMOS),y)
  36. QT_CONFIGURE_OPTS += -examplesdir $(TARGET_DIR)/usr/share/qt/examples -demosdir $(TARGET_DIR)/usr/share/qt/demos
  37. else
  38. QT_CONFIGURE_OPTS += -nomake examples -nomake demos
  39. endif
  40. # ensure glib is built first if enabled for Qt's glib support
  41. ifeq ($(BR2_PACKAGE_LIBGLIB2),y)
  42. QT_DEPENDENCIES += libglib2
  43. endif
  44. ### Pixel depths
  45. QT_PIXEL_DEPTHS := # empty
  46. ifeq ($(BR2_PACKAGE_QT_PIXEL_DEPTH_1),y)
  47. QT_PIXEL_DEPTHS += 1
  48. endif
  49. ifeq ($(BR2_PACKAGE_QT_PIXEL_DEPTH_4),y)
  50. QT_PIXEL_DEPTHS += 4
  51. endif
  52. ifeq ($(BR2_PACKAGE_QT_PIXEL_DEPTH_8),y)
  53. QT_PIXEL_DEPTHS += 8
  54. endif
  55. ifeq ($(BR2_PACKAGE_QT_PIXEL_DEPTH_12),y)
  56. QT_PIXEL_DEPTHS += 12
  57. endif
  58. ifeq ($(BR2_PACKAGE_QT_PIXEL_DEPTH_15),y)
  59. QT_PIXEL_DEPTHS += 15
  60. endif
  61. ifeq ($(BR2_PACKAGE_QT_PIXEL_DEPTH_16),y)
  62. QT_PIXEL_DEPTHS += 16
  63. endif
  64. ifeq ($(BR2_PACKAGE_QT_PIXEL_DEPTH_18),y)
  65. QT_PIXEL_DEPTHS += 18
  66. endif
  67. ifeq ($(BR2_PACKAGE_QT_PIXEL_DEPTH_24),y)
  68. QT_PIXEL_DEPTHS += 24
  69. endif
  70. ifeq ($(BR2_PACKAGE_QT_PIXEL_DEPTH_32),y)
  71. QT_PIXEL_DEPTHS += 32
  72. endif
  73. ifneq ($(QT_PIXEL_DEPTHS),)
  74. QT_CONFIGURE_OPTS += -depths $(subst $(space),$(comma),$(strip $(QT_PIXEL_DEPTHS)))
  75. endif
  76. ### Display drivers
  77. ifeq ($(BR2_PACKAGE_QT_GFX_LINUXFB),y)
  78. QT_CONFIGURE_OPTS += -qt-gfx-linuxfb
  79. else
  80. QT_CONFIGURE_OPTS += -no-gfx-linuxfb
  81. endif
  82. ifeq ($(BR2_PACKAGE_QT_GFX_TRANSFORMED),y)
  83. QT_CONFIGURE_OPTS += -qt-gfx-transformed
  84. else
  85. QT_CONFIGURE_OPTS += -no-gfx-transformed
  86. endif
  87. ifeq ($(BR2_PACKAGE_QT_GFX_QVFB),y)
  88. QT_CONFIGURE_OPTS += -qt-gfx-qvfb
  89. else
  90. QT_CONFIGURE_OPTS += -no-gfx-qvfb
  91. endif
  92. ifeq ($(BR2_PACKAGE_QT_GFX_VNC),y)
  93. QT_CONFIGURE_OPTS += -qt-gfx-vnc
  94. else
  95. QT_CONFIGURE_OPTS += -no-gfx-vnc
  96. endif
  97. ifeq ($(BR2_PACKAGE_QT_GFX_MULTISCREEN),y)
  98. QT_CONFIGURE_OPTS += -qt-gfx-multiscreen
  99. else
  100. QT_CONFIGURE_OPTS += -no-gfx-multiscreen
  101. endif
  102. ifeq ($(BR2_PACKAGE_QT_GFX_DIRECTFB),y)
  103. QT_CONFIGURE_OPTS += -qt-gfx-directfb
  104. QT_DEPENDENCIES += directfb
  105. else
  106. QT_CONFIGURE_OPTS += -no-gfx-directfb
  107. endif
  108. ### Mouse drivers
  109. ifeq ($(BR2_PACKAGE_QT_MOUSE_PC),y)
  110. QT_CONFIGURE_OPTS += -qt-mouse-pc
  111. else
  112. QT_CONFIGURE_OPTS += -no-mouse-pc
  113. endif
  114. ifeq ($(BR2_PACKAGE_QT_MOUSE_LINUXTP),y)
  115. QT_CONFIGURE_OPTS += -qt-mouse-linuxtp
  116. else
  117. QT_CONFIGURE_OPTS += -no-mouse-linuxtp
  118. endif
  119. ifeq ($(BR2_PACKAGE_QT_MOUSE_LINUXINPUT),y)
  120. QT_CONFIGURE_OPTS += -qt-mouse-linuxinput
  121. else
  122. QT_CONFIGURE_OPTS += -no-mouse-linuxinput
  123. endif
  124. ifeq ($(BR2_PACKAGE_QT_MOUSE_TSLIB),y)
  125. QT_CONFIGURE_OPTS += -qt-mouse-tslib
  126. QT_DEPENDENCIES += tslib
  127. else
  128. QT_CONFIGURE_OPTS += -no-mouse-tslib
  129. endif
  130. ifeq ($(BR2_PACKAGE_QT_MOUSE_QVFB),y)
  131. QT_CONFIGURE_OPTS += -qt-mouse-qvfb
  132. else
  133. QT_CONFIGURE_OPTS += -no-mouse-qvfb
  134. endif
  135. ifeq ($(BR2_PACKAGE_QT_MOUSE_NO_QWS_CURSOR),y)
  136. QT_CONFIGURE_OPTS += -D QT_NO_QWS_CURSOR
  137. endif
  138. ### Keyboard drivers
  139. ifeq ($(BR2_PACKAGE_QT_KEYBOARD_TTY),y)
  140. QT_CONFIGURE_OPTS += -qt-kbd-tty
  141. else
  142. QT_CONFIGURE_OPTS += -no-kbd-tty
  143. endif
  144. ifeq ($(BR2_PACKAGE_QT_KEYBOARD_LINUXINPUT),y)
  145. QT_CONFIGURE_OPTS += -qt-kbd-linuxinput
  146. else
  147. QT_CONFIGURE_OPTS += -no-kbd-linuxinput
  148. endif
  149. ifeq ($(BR2_PACKAGE_QT_KEYBOARD_QVFB),y)
  150. QT_CONFIGURE_OPTS += -qt-kbd-qvfb
  151. else
  152. QT_CONFIGURE_OPTS += -no-kbd-qvfb
  153. endif
  154. ifeq ($(BR2_PACKAGE_QT_DEBUG),y)
  155. QT_CONFIGURE_OPTS += -debug
  156. else
  157. QT_CONFIGURE_OPTS += -release
  158. endif
  159. ifeq ($(BR2_PACKAGE_QT_SHARED),y)
  160. QT_CONFIGURE_OPTS += -shared
  161. else
  162. QT_CONFIGURE_OPTS += -static
  163. endif
  164. ifeq ($(BR2_ENDIAN),"LITTLE")
  165. QT_CONFIGURE_OPTS += -little-endian
  166. else
  167. QT_CONFIGURE_OPTS += -big-endian
  168. endif
  169. ifeq ($(BR2_arm),y)
  170. QT_EMB_PLATFORM = arm
  171. else ifeq ($(BR2_armeb),y)
  172. QT_EMB_PLATFORM = arm
  173. else ifeq ($(BR2_avr32),y)
  174. QT_EMB_PLATFORM = avr32
  175. else ifeq ($(BR2_i386),y)
  176. QT_EMB_PLATFORM = x86
  177. else ifeq ($(BR2_x86_64),y)
  178. QT_EMB_PLATFORM = x86_64
  179. else ifeq ($(BR2_mips),y)
  180. QT_EMB_PLATFORM = mips
  181. else ifeq ($(BR2_mipsel),y)
  182. QT_EMB_PLATFORM = mips
  183. else ifeq ($(BR2_powerpc),y)
  184. QT_EMB_PLATFORM = powerpc
  185. else
  186. QT_EMB_PLATFORM = generic
  187. endif
  188. QT_CONFIGURE_OPTS += -embedded $(QT_EMB_PLATFORM)
  189. ifneq ($(BR2_PACKAGE_QT_GUI_MODULE),y)
  190. QT_CONFIGURE_OPTS += -no-gui
  191. endif
  192. ifeq ($(BR2_PACKAGE_QT_GIF),y)
  193. QT_CONFIGURE_OPTS += -qt-gif
  194. else
  195. QT_CONFIGURE_OPTS += -no-gif
  196. endif
  197. ifeq ($(BR2_PACKAGE_QT_LIBMNG),y)
  198. QT_CONFIGURE_OPTS += -qt-libmng
  199. else
  200. QT_CONFIGURE_OPTS += -no-libmng
  201. endif
  202. ifeq ($(BR2_PACKAGE_QT_QTZLIB),y)
  203. QT_CONFIGURE_OPTS += -qt-zlib
  204. else
  205. ifeq ($(BR2_PACKAGE_QT_SYSTEMZLIB),y)
  206. QT_CONFIGURE_OPTS += -system-zlib
  207. QT_DEPENDENCIES += zlib
  208. endif
  209. endif
  210. ifeq ($(BR2_PACKAGE_QT_QTJPEG),y)
  211. QT_CONFIGURE_OPTS += -qt-libjpeg
  212. else
  213. ifeq ($(BR2_PACKAGE_QT_SYSTEMJPEG),y)
  214. QT_CONFIGURE_OPTS += -system-libjpeg
  215. QT_DEPENDENCIES += jpeg
  216. else
  217. QT_CONFIGURE_OPTS += -no-libjpeg
  218. endif
  219. endif
  220. ifeq ($(BR2_PACKAGE_QT_QTPNG),y)
  221. QT_CONFIGURE_OPTS += -qt-libpng
  222. else
  223. ifeq ($(BR2_PACKAGE_QT_SYSTEMPNG),y)
  224. QT_CONFIGURE_OPTS += -system-libpng
  225. QT_DEPENDENCIES += libpng
  226. else
  227. QT_CONFIGURE_OPTS += -no-libpng
  228. endif
  229. endif
  230. ifeq ($(BR2_PACKAGE_QT_QTTIFF),y)
  231. QT_CONFIGURE_OPTS += -qt-libtiff
  232. else
  233. ifeq ($(BR2_PACKAGE_QT_SYSTEMTIFF),y)
  234. QT_CONFIGURE_OPTS += -system-libtiff
  235. QT_DEPENDENCIES += tiff
  236. else
  237. QT_CONFIGURE_OPTS += -no-libtiff
  238. endif
  239. endif
  240. QT_FONTS = $(addprefix $(STAGING_DIR)/usr/lib/fonts/, $(addsuffix *.qpf, \
  241. $(if $(BR2_PACKAGE_QT_FONT_MICRO),micro) \
  242. $(if $(BR2_PACKAGE_QT_FONT_FIXED),fixed) \
  243. $(if $(BR2_PACKAGE_QT_FONT_HELVETICA),helvetica) \
  244. $(if $(BR2_PACKAGE_QT_FONT_JAPANESE),japanese) \
  245. $(if $(BR2_PACKAGE_QT_FONT_UNIFONT),unifont)))
  246. ifeq ($(BR2_PACKAGE_QT_QTFREETYPE),y)
  247. QT_CONFIGURE_OPTS += -qt-freetype
  248. else
  249. ifeq ($(BR2_PACKAGE_QT_SYSTEMFREETYPE),y)
  250. QT_CONFIGURE_OPTS += -system-freetype
  251. QT_CONFIGURE_OPTS += -I $(STAGING_DIR)/usr/include/freetype2/
  252. QT_DEPENDENCIES += freetype
  253. else
  254. QT_CONFIGURE_OPTS += -no-freetype
  255. endif
  256. endif
  257. ifeq ($(BR2_PACKAGE_QT_DBUS),y)
  258. QT_DEPENDENCIES += dbus
  259. endif
  260. ifeq ($(BR2_PACKAGE_QT_OPENSSL),y)
  261. QT_CONFIGURE_OPTS += -openssl
  262. QT_DEPENDENCIES += openssl
  263. else
  264. QT_CONFIGURE_OPTS += -no-openssl
  265. endif
  266. # Qt SQL Drivers
  267. ifeq ($(BR2_PACKAGE_QT_SQL_MODULE),y)
  268. ifeq ($(BR2_PACKAGE_QT_IBASE),y)
  269. QT_CONFIGURE_OPTS += -qt-sql-ibase
  270. endif
  271. ifeq ($(BR2_PACKAGE_QT_MYSQL),y)
  272. QT_CONFIGURE_OPTS += -qt-sql-mysql -mysql_config $(STAGING_DIR)/usr/bin/mysql_config
  273. QT_DEPENDENCIES += mysql_client
  274. endif
  275. ifeq ($(BR2_PACKAGE_QT_ODBC),y)
  276. QT_CONFIGURE_OPTS += -qt-sql-odbc
  277. endif
  278. ifeq ($(BR2_PACKAGE_QT_PSQL),y)
  279. QT_CONFIGURE_OPTS += -qt-sql-psql
  280. endif
  281. ifeq ($(BR2_PACKAGE_QT_SQLITE_QT),y)
  282. QT_CONFIGURE_OPTS += -qt-sql-sqlite
  283. else
  284. ifeq ($(BR2_PACKAGE_QT_SQLITE_SYSTEM),y)
  285. QT_CONFIGURE_OPTS += -system-sqlite
  286. QT_DEPENDENCIES += sqlite
  287. else
  288. QT_CONFIGURE_OPTS += -no-sql-sqlite
  289. endif
  290. endif
  291. ifeq ($(BR2_PACKAGE_QT_SQLITE2),y)
  292. QT_CONFIGURE_OPTS += -qt-sql-sqlite2
  293. endif
  294. else
  295. # By default, no SQL driver is turned on by configure.
  296. # but it seems sqlite isn't disabled despite what says
  297. # configure --help
  298. QT_CONFIGURE_OPTS += -no-sql-sqlite
  299. endif
  300. ifeq ($(BR2_PACKAGE_QT_XMLPATTERNS),y)
  301. QT_CONFIGURE_OPTS += -xmlpatterns -exceptions
  302. else
  303. QT_CONFIGURE_OPTS += -no-xmlpatterns
  304. endif
  305. ifeq ($(BR2_PACKAGE_QT_MULTIMEDIA),y)
  306. QT_CONFIGURE_OPTS += -multimedia
  307. else
  308. QT_CONFIGURE_OPTS += -no-multimedia
  309. endif
  310. ifeq ($(BR2_PACKAGE_QT_AUDIO_BACKEND),y)
  311. QT_CONFIGURE_OPTS += -audio-backend
  312. QT_DEPENDENCIES += alsa-lib
  313. else
  314. QT_CONFIGURE_OPTS += -no-audio-backend
  315. endif
  316. ifeq ($(BR2_PACKAGE_QT_PHONON),y)
  317. QT_CONFIGURE_OPTS += -phonon
  318. QT_DEPENDENCIES += gstreamer gst-plugins-base
  319. else
  320. QT_CONFIGURE_OPTS += -no-phonon
  321. endif
  322. ifeq ($(BR2_PACKAGE_QT_PHONON_BACKEND),y)
  323. QT_CONFIGURE_OPTS += -phonon-backend
  324. else
  325. QT_CONFIGURE_OPTS += -no-phonon-backend
  326. endif
  327. ifeq ($(BR2_PACKAGE_QT_SVG),y)
  328. QT_CONFIGURE_OPTS += -svg
  329. else
  330. QT_CONFIGURE_OPTS += -no-svg
  331. endif
  332. ifeq ($(BR2_PACKAGE_QT_WEBKIT),y)
  333. QT_CONFIGURE_OPTS += -webkit
  334. else
  335. QT_CONFIGURE_OPTS += -no-webkit
  336. endif
  337. ifeq ($(BR2_PACKAGE_QT_SCRIPT),y)
  338. QT_CONFIGURE_OPTS += -script
  339. else
  340. QT_CONFIGURE_OPTS += -no-script
  341. endif
  342. ifeq ($(BR2_PACKAGE_QT_SCRIPTTOOLS),y)
  343. QT_CONFIGURE_OPTS += -scripttools
  344. else
  345. QT_CONFIGURE_OPTS += -no-scripttools
  346. endif
  347. ifeq ($(BR2_PACKAGE_QT_JAVASCRIPTCORE),y)
  348. QT_CONFIGURE_OPTS += -javascript-jit
  349. else
  350. QT_CONFIGURE_OPTS += -no-javascript-jit
  351. endif
  352. ifeq ($(BR2_PACKAGE_QT_STL),y)
  353. QT_CONFIGURE_OPTS += -stl
  354. else
  355. QT_CONFIGURE_OPTS += -no-stl
  356. endif
  357. # ccache and precompiled headers don't play well together
  358. ifeq ($(BR2_CCACHE),y)
  359. QT_CONFIGURE_OPTS += -no-pch
  360. endif
  361. # x86x86fix
  362. # Workaround Qt Embedded bug when crosscompiling for x86 under x86 with linux
  363. # host. It's unclear if this would happen on other hosts.
  364. ifneq ($(findstring linux,$(GNU_HOST_NAME)),)
  365. ifneq ($(findstring x86,$(QT_EMB_PLATFORM)),)
  366. QT_CONFIGURE_OPTS += -platform linux-g++
  367. endif
  368. endif
  369. # End of workaround.
  370. # Variable for other Qt applications to use
  371. QT_QMAKE:=$(HOST_DIR)/usr/bin/qmake -spec qws/linux-$(QT_EMB_PLATFORM)-g++
  372. ################################################################################
  373. # QT_QMAKE_SET -- helper macro to set QMAKE_<variable> = <value> in
  374. # the qmake.conf file. Will remove existing variable declaration if
  375. # available.
  376. #
  377. # Argument 1 is the variable name (without QMAKE_)
  378. # Argument 2 is the value to set variable to
  379. # Argument 3 is the base source directory of Qt
  380. #
  381. # E.G. use like this:
  382. # $(call QT_QMAKE_SET,variable,value,directory)
  383. ################################################################################
  384. define QT_QMAKE_SET
  385. $(SED) '/QMAKE_$(1)/d' $(3)/mkspecs/qws/linux-$(QT_EMB_PLATFORM)-g++/qmake.conf
  386. $(SED) '/include.*qws.conf/aQMAKE_$(1) = $(2)' $(3)/mkspecs/qws/linux-$(QT_EMB_PLATFORM)-g++/qmake.conf
  387. endef
  388. ifneq ($(BR2_INET_IPV6),y)
  389. define QT_CONFIGURE_IPV6
  390. $(SED) 's/^CFG_IPV6=auto/CFG_IPV6=no/' $(@D)/configure
  391. $(SED) 's/^CFG_IPV6IFNAME=auto/CFG_IPV6IFNAME=no/' $(@D)/configure
  392. endef
  393. endif
  394. ifneq ($(QT_CONFIG_FILE),)
  395. define QT_CONFIGURE_CONFIG_FILE
  396. cp $(QT_CONFIG_FILE) $(@D)/src/corelib/global/qconfig-buildroot.h
  397. endef
  398. endif
  399. define QT_CONFIGURE_CMDS
  400. -[ -f $(@D)/Makefile ] && $(MAKE) -C $(@D) confclean
  401. $(QT_CONFIGURE_IPV6)
  402. $(QT_CONFIGURE_CONFIG_FILE)
  403. # Fix compiler path
  404. $(call QT_QMAKE_SET,CC,$(TARGET_CC),$(@D))
  405. $(call QT_QMAKE_SET,CXX,$(TARGET_CXX),$(@D))
  406. $(call QT_QMAKE_SET,LINK,$(TARGET_CXX),$(@D))
  407. $(call QT_QMAKE_SET,LINK_SHLIB,$(TARGET_CXX),$(@D))
  408. $(call QT_QMAKE_SET,AR,$(TARGET_AR) cqs,$(@D))
  409. $(call QT_QMAKE_SET,OBJCOPY,$(TARGET_OBJCOPY),$(@D))
  410. $(call QT_QMAKE_SET,RANLIB,$(TARGET_RANLIB),$(@D))
  411. $(call QT_QMAKE_SET,STRIP,$(TARGET_STRIP),$(@D))
  412. $(call QT_QMAKE_SET,CFLAGS,$(TARGET_CFLAGS),$(@D))
  413. $(call QT_QMAKE_SET,CXXFLAGS,$(TARGET_CXXFLAGS),$(@D))
  414. $(call QT_QMAKE_SET,LFLAGS,$(TARGET_LDFLAGS),$(@D))
  415. # Don't use TARGET_CONFIGURE_OPTS here, qmake would be compiled for the target
  416. # instead of the host then. So set PKG_CONFIG* manually.
  417. (cd $(@D); \
  418. PKG_CONFIG_SYSROOT_DIR="$(STAGING_DIR)" \
  419. PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \
  420. PKG_CONFIG_PATH="$(STAGING_DIR)/usr/lib/pkgconfig:$(PKG_CONFIG_PATH)" \
  421. MAKEFLAGS="$(MAKEFLAGS) -j$(BR2_JLEVEL)" ./configure \
  422. $(if $(VERBOSE),-verbose,-silent) \
  423. -force-pkg-config \
  424. $(QT_CONFIGURE_OPTS) \
  425. -no-gfx-qnx \
  426. -no-kbd-qnx \
  427. -no-mouse-qnx \
  428. -no-xinerama \
  429. -no-cups \
  430. -no-nis \
  431. -no-accessibility \
  432. -no-separate-debug-info \
  433. -prefix /usr \
  434. -plugindir /usr/lib/qt/plugins \
  435. -hostprefix $(STAGING_DIR) \
  436. -fast \
  437. -no-rpath \
  438. )
  439. endef
  440. define QT_BUILD_CMDS
  441. $(MAKE) -C $(@D)
  442. endef
  443. # Build the list of libraries and plugins to install to the target
  444. QT_INSTALL_LIBS += QtCore
  445. QT_HOST_PROGRAMS += moc rcc qmake lrelease
  446. ifeq ($(BR2_PACKAGE_QT_GUI_MODULE),y)
  447. QT_INSTALL_LIBS += QtGui
  448. QT_HOST_PROGRAMS += uic
  449. endif
  450. ifeq ($(BR2_PACKAGE_QT_SQL_MODULE),y)
  451. QT_INSTALL_LIBS += QtSql
  452. endif
  453. ifeq ($(BR2_PACKAGE_QT_MULTIMEDIA),y)
  454. QT_INSTALL_LIBS += QtMultimedia
  455. endif
  456. ifeq ($(BR2_PACKAGE_QT_PHONON),y)
  457. QT_INSTALL_LIBS += phonon
  458. endif
  459. ifeq ($(BR2_PACKAGE_QT_SVG),y)
  460. QT_INSTALL_LIBS += QtSvg
  461. endif
  462. ifeq ($(BR2_PACKAGE_QT_NETWORK),y)
  463. QT_INSTALL_LIBS += QtNetwork
  464. endif
  465. ifeq ($(BR2_PACKAGE_QT_WEBKIT),y)
  466. QT_INSTALL_LIBS += QtWebKit
  467. endif
  468. ifeq ($(BR2_PACKAGE_QT_XML),y)
  469. QT_INSTALL_LIBS += QtXml
  470. endif
  471. ifeq ($(BR2_PACKAGE_QT_DBUS),y)
  472. QT_INSTALL_LIBS += QtDBus
  473. endif
  474. ifeq ($(BR2_PACKAGE_QT_XMLPATTERNS),y)
  475. QT_INSTALL_LIBS += QtXmlPatterns
  476. endif
  477. ifeq ($(BR2_PACKAGE_QT_SCRIPT),y)
  478. QT_INSTALL_LIBS += QtScript
  479. endif
  480. ifeq ($(BR2_PACKAGE_QT_SCRIPTTOOLS),y)
  481. QT_INSTALL_LIBS += QtScriptTools
  482. endif
  483. ifeq ($(BR2_PACKAGE_QT_QT3SUPPORT),y)
  484. QT_INSTALL_LIBS += Qt3Support
  485. endif
  486. QT_CONF_FILE=$(HOST_DIR)/usr/bin/qt.conf
  487. # Since host programs and spec files have been moved to $(HOST_DIR),
  488. # we need to tell qmake the new location of the various elements,
  489. # through a qt.conf file.
  490. define QT_INSTALL_QT_CONF
  491. mkdir -p $(dir $(QT_CONF_FILE))
  492. echo "[Paths]" > $(QT_CONF_FILE)
  493. echo "Prefix=$(HOST_DIR)/usr" >> $(QT_CONF_FILE)
  494. echo "Headers=$(STAGING_DIR)/usr/include" >> $(QT_CONF_FILE)
  495. echo "Libraries=$(STAGING_DIR)/usr/lib" >> $(QT_CONF_FILE)
  496. echo "Data=$(HOST_DIR)/usr" >> $(QT_CONF_FILE)
  497. echo "Binaries=$(HOST_DIR)/usr/bin" >> $(QT_CONF_FILE)
  498. endef
  499. # After running Qt normal installation process (which installs
  500. # everything in the STAGING_DIR), we move host programs such as qmake,
  501. # rcc or uic to the HOST_DIR so that they are available at the usual
  502. # location. A qt.conf file is generated to make sure that all host
  503. # programs still find all files they need.
  504. define QT_INSTALL_STAGING_CMDS
  505. $(MAKE) -C $(@D) install
  506. mkdir -p $(HOST_DIR)/usr/bin
  507. mv $(addprefix $(STAGING_DIR)/usr/bin/,$(QT_HOST_PROGRAMS)) $(HOST_DIR)/usr/bin
  508. rm -rf $(HOST_DIR)/usr/mkspecs
  509. mv $(STAGING_DIR)/usr/mkspecs $(HOST_DIR)/usr
  510. $(QT_INSTALL_QT_CONF)
  511. endef
  512. # Library installation
  513. ifeq ($(BR2_PACKAGE_QT_SHARED),y)
  514. define QT_INSTALL_TARGET_LIBS
  515. for lib in $(QT_INSTALL_LIBS); do \
  516. cp -dpf $(STAGING_DIR)/usr/lib/lib$${lib}.so.* $(TARGET_DIR)/usr/lib ; \
  517. done
  518. endef
  519. endif
  520. # Plugin installation
  521. define QT_INSTALL_TARGET_PLUGINS
  522. if [ -d $(STAGING_DIR)/usr/lib/qt/plugins/ ] ; then \
  523. mkdir -p $(TARGET_DIR)/usr/lib/qt/plugins ; \
  524. cp -dpfr $(STAGING_DIR)/usr/lib/qt/plugins/* $(TARGET_DIR)/usr/lib/qt/plugins ; \
  525. fi
  526. endef
  527. # Fonts installation
  528. ifneq ($(QT_FONTS),)
  529. define QT_INSTALL_TARGET_FONTS
  530. mkdir -p $(TARGET_DIR)/usr/lib/fonts
  531. cp -dpf $(QT_FONTS) $(TARGET_DIR)/usr/lib/fonts
  532. endef
  533. endif
  534. ifeq ($(BR2_PACKAGE_QT_QTFREETYPE)$(BR2_PACKAGE_QT_SYSTEMFREETYPE),y)
  535. define QT_INSTALL_TARGET_FONTS_TTF
  536. mkdir -p $(TARGET_DIR)/usr/lib/fonts
  537. cp -dpf $(STAGING_DIR)/usr/lib/fonts/*.ttf $(TARGET_DIR)/usr/lib/fonts
  538. endef
  539. endif
  540. define QT_INSTALL_TARGET_CMDS
  541. $(QT_INSTALL_TARGET_LIBS)
  542. $(QT_INSTALL_TARGET_PLUGINS)
  543. $(QT_INSTALL_TARGET_FONTS)
  544. $(QT_INSTALL_TARGET_FONTS_TTF)
  545. endef
  546. define QT_CLEAN_CMDS
  547. -$(MAKE) -C $(@D) clean
  548. endef
  549. define QT_UNINSTALL_TARGET_CMDS
  550. -rm -rf $(TARGET_DIR)/usr/lib/fonts
  551. -rm $(TARGET_DIR)/usr/lib/libQt*.so.*
  552. -rm $(TARGET_DIR)/usr/lib/libphonon.so.*
  553. endef
  554. $(eval $(call GENTARGETS,package,qt))