qt.mk 16 KB

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