@@ -991,32 +991,99 @@ Main build steps
991
991
Main Makefile targets
992
992
---------------------
993
993
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 c
EDBE
lean ``, 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
+
1020
1087
1021
1088
C extensions
1022
1089
------------
@@ -1311,3 +1378,14 @@ Linker flags
1311
1378
Linker flags used for building the interpreter object files.
1312
1379
1313
1380
.. 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