]> rtime.felk.cvut.cz Git - omk.git/blob - snippets/qt.omk
Update wvtool
[omk.git] / snippets / qt.omk
1 # QT_PROJECTS      .. list of QT .pro file to use for compilation
2 # QT_SUBDIRS       .. subdirectories where to build QT applications using qmake (depricated)
3 # QTDIR            .. where QT resides
4
5 ifneq ($(QT_SUBDIRS)$(QT_PROJECTS),)
6
7 # Usage: $(call qt_project_template,<.pro_file relative to SOURCES_DIR>)
8 define qt_project_template
9
10 .PHONY: qt-subpass-$(1) clean-qt-$(dir $(1))
11
12 # FIXME: Handle multiple .pro files correctly
13 $(LOCAL_BUILD_DIR)/$(dir $(1))Makefile: $(SOURCES_DIR)/$(1)
14         $(Q)mkdir -p $$(dir $$(@)) && cd $$(dir $$(@)) &&               \
15         $(if $(QMAKE),$(QMAKE),$(QTDIR:%=%/bin/)qmake)                  \
16              TOP_DIR=$(OUTPUT_DIR)                                      \
17              RELATIVE_DIR=$(RELATIVE_PREFIX)$(dir $(1))                 \
18              $(QTDIR:%=QTDIR=%) CC=$(CC) CXX=$(CXX)                     \
19              LIBS+="-L$(USER_LIB_DIR)" DESTDIR=$(USER_BIN_DIR)          \
20              INCLUDEPATH+="$(USER_INCLUDE_DIR)"                         \
21              DEPENDPATH+="$(USER_INCLUDE_DIR)"                          \
22              QMAKE_LFLAGS="-Wl,-rpath-link,$(USER_LIB_DIR) $$(QMAKE_LFLAGS)" \
23              $(SOURCES_DIR)/$(1)
24
25 # This horrible substitution is here to properly escape
26 # -Wl,-rpath,$ORIGIN flags. It includes escaping for make, shell,
27 # qmake and again make and shell run on qmake generated makefile.
28 QMAKE_LFLAGS = $$(subst $$$$,\\\\\\$$$$\$$$$,$$(LDFLAGS))
29
30 # Hook to binary pass
31 binary-pass-submakes: qt-subpass-$(1)
32 qt-subpass-$(1): $(LOCAL_BUILD_DIR)/$(dir $(1))Makefile
33         $(Q)$(MAKE) SOURCES_DIR=$(SOURCES_DIR)/$(dir $(1)) \
34                 RELATIVE_DIR=$(RELATIVE_PREFIX)$(dir $(1)) -C $(LOCAL_BUILD_DIR)/$(dir $(1)) || exit 1 ;
35
36 # Hook to clean pass
37 clean-local:: $(LOCAL_BUILD_DIR)/$(dir $(1))Makefile
38         @$(QUIET_CMD_ECHO) "  QT CLEAN $(dir $(1))"
39         $(Q)$(MAKE) SOURCES_DIR=$(SOURCES_DIR)/$(dir $(1)) \
40           RELATIVE_DIR=$(RELATIVE_PREFIX)$(dir $(1)) \
41           -C $(LOCAL_BUILD_DIR)/$(dir $(1)) clean
42         $(Q)rm $(LOCAL_BUILD_DIR)/$(dir $(1))Makefile
43 endef
44
45 $(foreach pro,$(QT_PROJECTS), $(eval $(call qt_project_template,$(pro))))
46 $(foreach pro,$(foreach dir,$(QT_SUBDIRS), $(wildcard $(SOURCES_DIR)/$(dir)/*.pro)), $(eval $(call qt_project_template,$(pro:$(SOURCES_DIR)/%=%))))
47
48 endif