@@ -991,32 +991,99 @@ Main build steps
991991Main Makefile targets
992992---------------------
993993
994- * ``make ``: Build Python with the standard library.
995- * ``make platform: ``: build the ``python `` program, but don't build the
996- standard library extension modules.
997- * ``make profile-opt ``: build Python using Profile Guided Optimization (PGO).
998- You can use the configure :option: `--enable-optimizations ` option to make
999- this the default target of the ``make `` command (``make all `` or just
1000- ``make ``).
1001-
1002- * ``make test ``: Build Python and run the Python test suite with ``--fast-ci ``
1003- option. Variables:
1004-
1005- * ``TESTOPTS ``: additional regrtest command line options.
1006- * ``TESTPYTHONOPTS ``: additional Python command line options.
1007- * ``TESTTIMEOUT ``: timeout in seconds (default: 20 minutes).
1008-
1009- * ``make buildbottest ``: Similar to ``make test ``, but use ``--slow-ci ``
1010- option and default timeout of 20 minutes, instead of ``--fast-ci `` option
1011- and a default timeout of 10 minutes.
1012-
1013- * ``make install ``: Build and install Python.
1014- * ``make regen-all ``: Regenerate (almost) all generated files;
1015- ``make regen-stdlib-module-names `` and ``autoconf `` must be run separately
1016- for the remaining generated files.
1017- * ``make clean ``: Remove built files.
1018- * ``make distclean ``: Same than ``make clean ``, but remove also files created
1019- by the configure script.
994+ make
995+ ^^^^
996+
997+ For the most part, when rebuilding after editing some code or
998+ refreshing your checkout from upstream, all you need to do is execute
999+ ``make ``, which (per Make's semantics) builds the default target, the
1000+ first one defined in the Makefile. By tradition (including in the
1001+ CPython project) this is usually the ``all `` target. The
1002+ ``configure `` script expands an ``autoconf `` variable,
1003+ ``@DEF_MAKE_ALL_RULE@ `` to describe precisely which targets ``make
1004+ all `` will build. The three choices are:
1005+
1006+ * ``profile-opt `` (configured with ``--enable-optimizations ``)
1007+ * ``build_wasm `` (configured with ``--with-emscripten-target ``)
1008+ * ``build_all `` (configured without explicitly using either of the others)
1009+
1010+ Depending on the most recent source file changes, Make will rebuild
1011+ any targets (object files and executables) deemed out-of-date,
1012+ including running ``configure `` again if necessary. Source/target
1013+ dependencies are many and maintained manually however, so Make
1014+ sometimes doesn't have all the information necessary to correctly
1015+ detect all targets which need to be rebuilt. Depending on which
1016+ targets aren't rebuilt, you might experience a number of problems. If
1017+ you have build or test problems which you can't otherwise explain,
1018+ ``make clean && make `` should work around most dependency problems, at
1019+ the expense of longer build times.
1020+
1021+
1022+ make platform
1023+ ^^^^^^^^^^^^^
1024+
1025+ Build the ``python `` program, but don't build the standard library
1026+ extension modules. This generates a file named ``platform `` which
1027+ contains a single line describing the details of the build platform,
1028+ e.g., ``macosx-14.3-arm64-3.12 `` or ``linux-x86_64-3.13 ``.
1029+
1030+
1031+ make profile-opt
1032+ ^^^^^^^^^^^^^^^^
1033+
1034+ Build Python using profile-guided optimization (PGO). You can use the
1035+ configure :option: `--enable-optimizations ` option to make this the
1036+ default target of the ``make `` command (``make all `` or just
1037+ ``make ``).
1038+
1039+
1040+
1041+ make clean
1042+ ^^^^^^^^^^
1043+
1044+ Remove built files.
1045+
1046+
1047+ make distclean
1048+ ^^^^^^^^^^^^^^
1049+
1050+ In addition to the the work done by ``make clean ``, remove files
1051+ created by the configure script. ``configure `` will have to be run
1052+ before building again. [# ]_
1053+
1054+
1055+ make install
1056+ ^^^^^^^^^^^^
1057+
1058+ Build the ``all `` target and install Python.
1059+
1060+
1061+ make test
1062+ ^^^^^^^^^
1063+
1064+ Build the ``all `` target and run the Python test suite with the
1065+ ``--fast-ci `` option. Variables:
1066+
1067+ * ``TESTOPTS ``: additional regrtest command-line options.
1068+ * ``TESTPYTHONOPTS ``: additional Python command-line options.
1069+ * ``TESTTIMEOUT ``: timeout in seconds (default: 10 minutes).
1070+
1071+
1072+ make buildbottest
1073+ ^^^^^^^^^^^^^^^^^
1074+
1075+ This is similar to ``make test ``, but uses the ``--slow-ci ``
1076+ option and default timeout of 20 minutes, instead of ``--fast-ci `` option.
1077+
1078+
1079+ make regen-all
1080+ ^^^^^^^^^^^^^^
1081+
1082+ Regenerate (almost) all generated files. These include (but are not
1083+ limited to) bytecode cases, and parser generator file.
1084+ ``make regen-stdlib-module-names `` and ``autoconf `` must be run
1085+ separately for the remaining `generated files <#generated-files >`_.
1086+
10201087
10211088C extensions
10221089------------
@@ -1311,3 +1378,14 @@ Linker flags
13111378 Linker flags used for building the interpreter object files.
13121379
13131380 .. versionadded :: 3.8
1381+
1382+
1383+ .. rubric :: Footnotes
1384+
1385+ .. [# ] ``git clean -fdx `` is an even more extreme way to "clean" your
1386+ checkout. It removes all files not known to Git.
1387+ When bug hunting using ``git bisect ``, this is
1388+ `recommended between probes <https://github.com/python/cpython/issues/114505#issuecomment-1907021718 >`_
1389+ to guarantee a completely clean build. **Use with care **, as it
1390+ will delete all files not checked into Git, including your
1391+ new, uncommitted work.
0 commit comments