# QT_PROJECTS .. list of QT .pro file to use for compilation # QT_SUBDIRS .. subdirectories where to build QT applications using qmake (depricated) # QTDIR .. where QT resides ifneq ($(QT_SUBDIRS)$(QT_PROJECTS),) # Usage: $(call qt_project_template,<.pro_file relative to SOURCES_DIR>) define qt_project_template .PHONY: qt-subpass-$(1) clean-qt-$(dir $(1)) # FIXME: Handle multiple .pro files correctly $(LOCAL_BUILD_DIR)/$(dir $(1))Makefile: $(SOURCES_DIR)/$(1) $(Q)mkdir -p $$(dir $$(@)) && cd $$(dir $$(@)) && \ $(QTDIR:%=%/bin/)qmake \ TOP_DIR=$(OUTPUT_DIR) \ RELATIVE_DIR=$(RELATIVE_PREFIX)$(dir $(1)) \ $(QTDIR:%=QTDIR=%) CC=$(CC) CXX=$(CXX) \ LIBS+="-L$(USER_LIB_DIR)" DESTDIR=$(USER_BIN_DIR) \ INCLUDEPATH+="$(USER_INCLUDE_DIR)" \ QMAKE_LFLAGS="-Wl,-rpath-link,$(USER_LIB_DIR) $$(QMAKE_LFLAGS)" \ $(SOURCES_DIR)/$(1) # This horrible substitution is here to properly escape # -Wl,-rpath,$ORIGIN flags. It includes escaping for make, shell, # qmake and again make and shell run on qmake generated makefile. QMAKE_LFLAGS = $$(subst $$$$,\\\\\\$$$$\$$$$,$$(LDFLAGS)) # Hook to binary pass binary-pass-submakes: qt-subpass-$(1) qt-subpass-$(1): $(LOCAL_BUILD_DIR)/$(dir $(1))Makefile $(Q)$(MAKE) SOURCES_DIR=$(SOURCES_DIR)/$(dir $(1)) \ RELATIVE_DIR=$(RELATIVE_PREFIX)$(dir $(1)) -C $(LOCAL_BUILD_DIR)/$(dir $(1)) || exit 1 ; # Hook to clean pass clean-local: clean-qt-$(dir $(1)) clean-qt-$(dir $(1)): $(LOCAL_BUILD_DIR)/$(dir $(1))Makefile @$(QUIET_CMD_ECHO) " QT CLEAN $(dir $(1))" $(Q)$(MAKE) SOURCES_DIR=$(SOURCES_DIR)/$(dir $(1)) \ RELATIVE_DIR=$(RELATIVE_PREFIX)$(dir $(1)) \ -C $(LOCAL_BUILD_DIR)/$(dir $(1)) clean $(Q)rm $(LOCAL_BUILD_DIR)/$(dir $(1))Makefile endef $(foreach pro,$(QT_PROJECTS), $(eval $(call qt_project_template,$(pro)))) $(foreach pro,$(foreach dir,$(QT_SUBDIRS), $(wildcard $(dir)/*.pro)), $(eval $(call qt_project_template,$(pro)))) endif # Local Variables: # mode:makefile # End: