scripts: add --cmake-only to west build

This forces CMake to run, but skips running any build system target
afterwards.

Signed-off-by: Marti Bolivar <marti.bolivar@nordicsemi.no>
diff --git a/scripts/west_commands/build.py b/scripts/west_commands/build.py
index faf8c6e..798f7b8 100644
--- a/scripts/west_commands/build.py
+++ b/scripts/west_commands/build.py
@@ -15,6 +15,12 @@
 
 _ARG_SEPARATOR = '--'
 
+BUILD_USAGE = '''\
+west build [-h] [-b BOARD] [-d BUILD_DIR]
+           [-t TARGET] [-p {auto, always, never}] [-c] [--cmake-only]
+           [-f] [source_dir] -- [cmake_opt [cmake_opt ...]]
+'''
+
 BUILD_DESCRIPTION = '''\
 Convenience wrapper for building Zephyr applications.
 
@@ -104,9 +110,7 @@
             help=self.help,
             formatter_class=argparse.RawDescriptionHelpFormatter,
             description=self.description,
-            usage='''west build [-h] [-b BOARD] [-d BUILD_DIR]
-                  [-t TARGET] [-p {auto, always, never}] [-c] [-f] [source_dir]
-                  -- [cmake_opt [cmake_opt ...]]''')
+            usage=BUILD_USAGE)
 
         # Remember to update scripts/west-completion.bash if you add or remove
         # flags
@@ -133,6 +137,8 @@
                             application.''')
         parser.add_argument('-c', '--cmake', action='store_true',
                             help='Force CMake to run')
+        parser.add_argument('--cmake-only', action='store_true',
+                            help="Just run CMake; don't build. Implies -c.")
         self.add_force_arg(parser)
         return parser
 
@@ -173,7 +179,8 @@
                 self.run_cmake = True
             else:
                 self._update_cache()
-                if self.args.cmake or self.args.cmake_opts:
+                if (self.args.cmake or self.args.cmake_opts or
+                        self.args.cmake_only):
                     self.run_cmake = True
         else:
             self.run_cmake = True
@@ -182,6 +189,9 @@
 
         board, origin = self._find_board()
         self._run_cmake(board, origin, self.args.cmake_opts)
+        if args.cmake_only:
+            return
+
         self._sanity_check()
         self._update_cache()