genode/repos/libports/lib/import/import-qt5.inc
Christian Prochaska a155d0e531 qt5: fix parallel build issues related to generated files
Store all files generated by moc and rcc in the application's build
directory to prevent the use of unfinished generated files for other
applications built at the same time.

Issue #3115
2019-01-30 13:35:28 +01:00

95 lines
2.6 KiB
PHP

# prevent import file to be included twice, for example via import-qt5_gui.mk
# and import-qt5_core.mk
ifeq ($(QT5_IMPORTED),)
QT5_IMPORTED = true
# hook for selectively skipping qt5 builds by the buildbot
ifneq ($(INHIBIT_QT5),)
REQUIRES += removal_of_INHIBIT_QT5_env_var
endif
QT_VERSION := 5.8.0
# identify the qt5 repository by searching for a file that is unique for qt5
QT5_REP_DIR := $(call select_from_repositories,lib/import/import-qt5.inc)
QT5_REP_DIR := $(realpath $(dir $(QT5_REP_DIR))../..)
QT5_PORT_DIR := $(call select_from_ports,qt5)
QT5_CONTRIB_DIR := $(QT5_PORT_DIR)/src/lib/qt5/qt5
ifeq ($(CONTRIB_DIR),)
QT5_INC_DIR += $(call select_from_repositories,src/lib/qt5/qt5/qtbase/mkspecs/genode-g++)
else
QT5_INC_DIR += $(QT5_PORT_DIR)/include \
$(QT5_CONTRIB_DIR)/qtbase/mkspecs/genode-g++ \
$(QT5_REP_DIR)/include/qt5
endif
INC_DIR += $(QT5_INC_DIR)
# extracted from qt.prf
QT_DEFINES += -DQT_STATICPLUGIN
QT_DEFINES += -D__GENODE__
CC_OPT += $(QT_DEFINES)
# handle moc-headers, resources and ui descriptions
#
# Locations of moc, rcc, and uic binaries
#
QT5_HOST_TOOL_INSTALL_LOCATION ?= /usr/local/genode-qt5
MOC = $(QT5_HOST_TOOL_INSTALL_LOCATION)/bin/moc
RCC = $(QT5_HOST_TOOL_INSTALL_LOCATION)/bin/rcc
UIC = $(QT5_HOST_TOOL_INSTALL_LOCATION)/bin/uic
$(MOC) $(RCC) $(UIC):
$(error Error: could not find '$@'. The Qt5 host tools can be installed with the '<GENODE_DIR>/tool/tool_chain_qt5' script)
# moc rules
moc_%.cpp: %.h $(MOC)
$(MSG_CONVERT)$@
$(VERBOSE) $(MOC) $(QT_DEFINES) $(addprefix -I,$(QT5_INC_DIR)) $< -o $@
%.moc: %.cpp $(MOC)
$(MSG_CONVERT)$@
$(VERBOSE) $(MOC) $(QT_DEFINES) $(addprefix -I,$(QT5_INC_DIR)) $< -o $@
# rcc rule
qrc_%.cpp: %.qrc $(RCC)
$(MSG_CONVERT)$@
$(VERBOSE) $(RCC) -name $(basename $(notdir $<)) $< -o $@
# uic rule
ui_%.h: %.ui $(UIC)
$(MSG_CONVERT)$@
$(VERBOSE) $(UIC) $< -o $@
# add include dirs for QT5-specific genode addons
INC_DIR += $(QT5_REP_DIR)/include/qt5/genode
#
# add C++ include dirs and libs
#
# We cannot just extend the 'LIBS' variable here because 'import-*.mk' are
# included (in 'base/mk/lib.mk') by iterating through the elements of the
# 'LIBS' variable. Hence, we also need to manually import the stdcxx snippet.
#
LIBS += stdcxx
include $(call select_from_repositories,lib/import/import-stdcxx.mk)
# set QT_ARCH definition according to the SPECS variable
ifneq ($(filter x86_32,$(SPECS)),)
QT_DEFINES += -DQT_ARCH_I386
endif
ifneq ($(filter x86_64,$(SPECS)),)
QT_DEFINES += -DQT_ARCH_X86_64
endif
ifneq ($(filter arm,$(SPECS)),)
QT_DEFINES += -DQT_ARCH_ARMV6
endif
endif