X-Git-Url: http://rtime.felk.cvut.cz/gitweb/omk.git/blobdiff_plain/3fde8aef176d34e28b31d179580b0e3a8f0c7686..80a4e38fe5eab6c1fe51390f96eefe600996adbf:/snippets/qt diff --git a/snippets/qt b/snippets/qt index 613b16f..df11bc0 100644 --- a/snippets/qt +++ b/snippets/qt @@ -1,23 +1,25 @@ -# QT_SUBDIRS .. subdirectories where to build QT applications using qmake +# 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),) +ifneq ($(QT_SUBDIRS)$(QT_PROJECTS),) -.PHONY: qt-subpass clean-qt distclean-qt +# Usage: $(call qt_project_template,<.pro_file relative to SOURCES_DIR>) +define qt_project_template -# Usage: $(call qt_makefile_template,) -define qt_subdir_template +.PHONY: qt-subpass-$(1) clean-qt-$(dir $(1)) -$(LOCAL_BUILD_DIR)/$(1)/Makefile: $(wildcard $(SOURCES_DIR)/$(1)/*.pro) - $(Q)mkdir -p $(LOCAL_BUILD_DIR)/$(1) && \ - cd $(LOCAL_BUILD_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)$(1) \ + 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)/*.pro + $(SOURCES_DIR)/$(1) # This horrible substitution is here to properly escape # -Wl,-rpath,$ORIGIN flags. It includes escaping for make, shell, @@ -26,21 +28,22 @@ QMAKE_LFLAGS = $$(subst $$$$,\\\\\\$$$$\$$$$,$$(LDFLAGS)) # Hook to binary pass binary-pass-submakes: qt-subpass-$(1) -qt-subpass-$(1): $(LOCAL_BUILD_DIR)/$(1)/Makefile - $(Q)$(MAKE) SOURCES_DIR=$(SOURCES_DIR)/$(1) \ - RELATIVE_DIR=$(RELATIVE_PREFIX)$(1) -C $(LOCAL_BUILD_DIR)/$(1) || exit 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-$(1) -clean-qt-$(1): $(LOCAL_BUILD_DIR)/$(1)/Makefile - @$(QUIET_CMD_ECHO) " QT CLEAN $(1)" - $(Q)$(MAKE) SOURCES_DIR=$(SOURCES_DIR)/$(1) \ - RELATIVE_DIR=$(RELATIVE_PREFIX)$(1) \ - -C $(LOCAL_BUILD_DIR)/$(1) clean - $(Q)rm $(LOCAL_BUILD_DIR)/$(1)/Makefile +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 dir,$(QT_SUBDIRS), $(eval $(call qt_subdir_template,$(dir)))) +$(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