]> rtime.felk.cvut.cz Git - omk.git/blobdiff - snippets/qt
Removed binary-pass and converted to link-pseudo-pass - it doesn't work
[omk.git] / snippets / qt
index c865b91bcb17a555c33e86949faa449a487342c9..c09b28afcee9bb373191081bf9696e436866418c 100644 (file)
@@ -3,20 +3,49 @@
 
 ifneq ($(QT_SUBDIRS),)
 
-.PHONY: qt-subpass
-qt-subpass:
-       +@$(foreach dir, $(QT_SUBDIRS), $(call mkdir_def,$(USER_OBJS_DIR)/$(dir)) ; \
-               if [ ! -e $(SOURCES_DIR)/$(dir)/Makefile ] ; then  \
-               ( cd $(SOURCES_DIR)/$(dir) ; $(QTDIR:%=%/bin/)qmake TOP_DIR=$(MAKERULES_DIR) \
-                    RELATIVE_DIR=$(RELATIVE_PREFIX)$(dir) $(QTDIR:%=QTDIR=%) CC=$(CC) \
-                    CXX=$(CXX) || exit 1 ;) ; fi ; \
+.PHONY: qt-subpass clean-qt distclean-qt
+
+# Usage: $(call qt_makefile_template,<qt-subdir>)
+define qt_makefile_template
+$(SOURCES_DIR)/$(1)/Makefile: $(wildcard $(SOURCES_DIR)/$(1)/*.pro)
+       cd $(SOURCES_DIR)/$(1); $(QTDIR:%=%/bin/)qmake TOP_DIR=$(OUTPUT_DIR) \
+            RELATIVE_DIR=$(RELATIVE_PREFIX)$(1) $(QTDIR:%=QTDIR=%) CC=$(CC) \
+            CXX=$(CXX) LIBS+="-L$(USER_LIB_DIR)" INCLUDEPATH+="$(USER_INCLUDE_DIR)"
+endef
+$(foreach dir,$(QT_SUBDIRS), $(eval $(call qt_makefile_template,$(dir))))
+
+qt-subpass: $(foreach dir,$(QT_SUBDIRS), $(SOURCES_DIR)/$(dir)/Makefile)
+       $(foreach dir,$(QT_SUBDIRS),\
                $(MAKE) SOURCES_DIR=$(SOURCES_DIR)/$(dir) \
                RELATIVE_DIR=$(RELATIVE_PREFIX)$(dir) -C $(SOURCES_DIR)/$(dir) \
                -f $(SOURCES_DIR)/$(dir)/Makefile || exit 1 ;)
 
 # Hook to binary pass
-binary-pass: qt-subpass
+binary-pass-submakes: qt-subpass
+
+# Hook to clean pass
+clean-local: clean-qt
+clean-qt:
+       +@$(foreach dir, $(QT_SUBDIRS), \
+               $(if $(wildcard $(SOURCES_DIR)/$(dir)/Makefile), \
+               @$(QUIET_CMD_ECHO) "  CLEAN   $(dir)"; \
+               $(MAKE) SOURCES_DIR=$(SOURCES_DIR)/$(dir) \
+               RELATIVE_DIR=$(RELATIVE_PREFIX)$(dir) -C $(SOURCES_DIR)/$(dir) \
+               -f $(SOURCES_DIR)/$(dir)/Makefile clean|| exit 1 ;))
 
+
+# Hook to distclean
+distclean: distclean-qt
+
+# TODO: Add distclean-qt-pass to handle QT_SUBDIRS in the whole
+# tree. This way we only distclean toplevel subdirs.
+distclean-qt:
+       +@$(foreach dir, $(QT_SUBDIRS), \
+               $(if $(wildcard $(SOURCES_DIR)/$(dir)/Makefile), \
+               @$(QUIET_CMD_ECHO) "  DISTCLEAN $(dir)"; \
+               $(MAKE) SOURCES_DIR=$(SOURCES_DIR)/$(dir) \
+               RELATIVE_DIR=$(RELATIVE_PREFIX)$(dir) -C $(SOURCES_DIR)/$(dir) \
+               -f $(SOURCES_DIR)/$(dir)/Makefile distclean|| exit 1 ;))
 endif
 
 # Local Variables: