Add support for the new PARALLEL_DIRS option
authorChris Lattner <sabre@nondot.org>
Wed, 18 Sep 2002 03:22:27 +0000 (03:22 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 18 Sep 2002 03:22:27 +0000 (03:22 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3807 91177308-0d34-0410-b5e6-96231b3b80d8

Makefile.common
Makefile.rules

index 70219068211c8cbb2b3dbf3375a15a7ce335ec15..5beeaa7ca737bc015b2e60ee96dae8945432ff39 100644 (file)
 #    example, ../.. for two levels deep.
 #
 # 2. DIRS - A list of subdirectories to be built.  Fake targets are set up
-#    so that each of the targets "all", "install", and "clean" each build.
-#    the subdirectories before the local target.
+#    so that each of the targets "all", "install", and "clean" each build
+#    the subdirectories before the local target.  DIRS are guaranteed to be
+#    built in order.
 #
-# 3. Source - If specified, this sets the source code filenames.  If this
+# 3. PARALLEL_DIRS - A list of subdirectories to be built, but that may be
+#    built in any order.  All DIRS are built in order before PARALLEL_DIRS are
+#    built, which are then built in any order.
+#
+# 4. Source - If specified, this sets the source code filenames.  If this
 #    is not set, it defaults to be all of the .cpp, .c, .y, and .l files 
 #    in the current directory.  Also, if you want to build files in addition
 #    to the local files, you can use the ExtraSource variable
@@ -174,15 +179,23 @@ ObjectsG = $(addprefix $(BUILD_ROOT)/Debug/,$(Objs))
 
 
 #---------------------------------------------------------
-# Handle the DIRS option
+# Handle the DIRS and PARALLEL_DIRS options
 #---------------------------------------------------------
 
-ifdef DIRS  # Only do this if we're using DIRS!
-
-all install clean::
+all install clean ::
        $(VERB) for dir in ${DIRS}; do \
                (cd $$dir; $(MAKE) $@) || exit 1; \
        done
+
+# Handle PARALLEL_DIRS
+ifdef PARALLEL_DIRS
+all     :: $(addsuffix /.makeall    , $(PARALLEL_DIRS))
+install :: $(addsuffix /.makeinstall, $(PARALLEL_DIRS))
+clean   :: $(addsuffix /.makeclean  , $(PARALLEL_DIRS))
+
+%/.makeall %/.makeinstall %/.makeclean:
+       $(VERB) cd $(@D); $(MAKE) $(subst $(@D)/.make,,$@)
+
 endif
 
 #---------------------------------------------------------
index 70219068211c8cbb2b3dbf3375a15a7ce335ec15..5beeaa7ca737bc015b2e60ee96dae8945432ff39 100644 (file)
 #    example, ../.. for two levels deep.
 #
 # 2. DIRS - A list of subdirectories to be built.  Fake targets are set up
-#    so that each of the targets "all", "install", and "clean" each build.
-#    the subdirectories before the local target.
+#    so that each of the targets "all", "install", and "clean" each build
+#    the subdirectories before the local target.  DIRS are guaranteed to be
+#    built in order.
 #
-# 3. Source - If specified, this sets the source code filenames.  If this
+# 3. PARALLEL_DIRS - A list of subdirectories to be built, but that may be
+#    built in any order.  All DIRS are built in order before PARALLEL_DIRS are
+#    built, which are then built in any order.
+#
+# 4. Source - If specified, this sets the source code filenames.  If this
 #    is not set, it defaults to be all of the .cpp, .c, .y, and .l files 
 #    in the current directory.  Also, if you want to build files in addition
 #    to the local files, you can use the ExtraSource variable
@@ -174,15 +179,23 @@ ObjectsG = $(addprefix $(BUILD_ROOT)/Debug/,$(Objs))
 
 
 #---------------------------------------------------------
-# Handle the DIRS option
+# Handle the DIRS and PARALLEL_DIRS options
 #---------------------------------------------------------
 
-ifdef DIRS  # Only do this if we're using DIRS!
-
-all install clean::
+all install clean ::
        $(VERB) for dir in ${DIRS}; do \
                (cd $$dir; $(MAKE) $@) || exit 1; \
        done
+
+# Handle PARALLEL_DIRS
+ifdef PARALLEL_DIRS
+all     :: $(addsuffix /.makeall    , $(PARALLEL_DIRS))
+install :: $(addsuffix /.makeinstall, $(PARALLEL_DIRS))
+clean   :: $(addsuffix /.makeclean  , $(PARALLEL_DIRS))
+
+%/.makeall %/.makeinstall %/.makeclean:
+       $(VERB) cd $(@D); $(MAKE) $(subst $(@D)/.make,,$@)
+
 endif
 
 #---------------------------------------------------------