bpo-35257: Avoid leaking LTO linker flags into distutils (GH-10900) · python/cpython@cf10a75 (original) (raw)
`@@ -84,6 +84,10 @@ CONFIGURE_CFLAGS= @CFLAGS@
`
84
84
`# Use it when a compiler flag should not be part of the distutils CFLAGS
`
85
85
`# once Python is installed (Issue #21121).
`
86
86
`CONFIGURE_CFLAGS_NODIST=@CFLAGS_NODIST@
`
``
87
`+
LDFLAGS_NODIST is used in the same manner as CFLAGS_NODIST.
`
``
88
`+
Use it when a linker flag should not be part of the distutils LDFLAGS
`
``
89
`+
once Python is installed (bpo-35257)
`
``
90
`+
CONFIGURE_LDFLAGS_NODIST=@LDFLAGS_NODIST@
`
87
91
`CONFIGURE_CPPFLAGS= @CPPFLAGS@
`
88
92
`CONFIGURE_LDFLAGS= @LDFLAGS@
`
89
93
`# Avoid assigning CFLAGS, LDFLAGS, etc. so users can use them on the
`
`@@ -96,6 +100,7 @@ PY_CFLAGS_NODIST=$(CONFIGURE_CFLAGS_NODIST) (CFLAGSNODIST)−I(CFLAGS_NODIST) -I(CFLAGSNODIST)−I(srcdir)/Include
`
96
100
`# environment variables
`
97
101
`PY_CPPFLAGS= (BASECPPFLAGS)−I.−I(BASECPPFLAGS) -I. -I(BASECPPFLAGS)−I.−I(srcdir)/Include (CONFIGURECPPFLAGS)(CONFIGURE_CPPFLAGS) (CONFIGURECPPFLAGS)(CPPFLAGS)
`
98
102
`PY_LDFLAGS= (CONFIGURELDFLAGS)(CONFIGURE_LDFLAGS) (CONFIGURELDFLAGS)(LDFLAGS)
`
``
103
`+
PY_LDFLAGS_NODIST=$(CONFIGURE_LDFLAGS_NODIST) $(LDFLAGS_NODIST)
`
99
104
`NO_AS_NEEDED= @NO_AS_NEEDED@
`
100
105
`SGI_ABI= @SGI_ABI@
`
101
106
`CCSHARED= @CCSHARED@
`
`@@ -107,6 +112,8 @@ CFLAGSFORSHARED=@CFLAGSFORSHARED@
`
107
112
`PY_STDMODULE_CFLAGS= (PYCFLAGS)(PY_CFLAGS) (PYCFLAGS)(PY_CFLAGS_NODIST) (PYCPPFLAGS)(PY_CPPFLAGS) (PYCPPFLAGS)(CFLAGSFORSHARED)
`
108
113
`PY_BUILTIN_MODULE_CFLAGS= $(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE_BUILTIN
`
109
114
`PY_CORE_CFLAGS= $(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE
`
``
115
`+
Linker flags used for building the interpreter object files
`
``
116
`+
PY_CORE_LDFLAGS=$(PY_LDFLAGS) $(PY_LDFLAGS_NODIST)
`
110
117
`# Strict or non-strict aliasing flags used to compile dtoa.c, see above
`
111
118
`CFLAGS_ALIASING=@CFLAGS_ALIASING@
`
112
119
``
`@@ -146,7 +153,7 @@ CONFINCLUDEPY= (CONFINCLUDEDIR)/python(CONFINCLUDEDIR)/python(CONFINCLUDEDIR)/python(LDVERSION)
`
146
153
`SHLIB_SUFFIX= @SHLIB_SUFFIX@
`
147
154
`EXT_SUFFIX= @EXT_SUFFIX@
`
148
155
`LDSHARED= @LDSHARED@ $(PY_LDFLAGS)
`
149
``
`-
BLDSHARED= @BLDSHARED@ $(PY_LDFLAGS)
`
``
156
`+
BLDSHARED= @BLDSHARED@ $(PY_LDFLAGS_NODIST)
`
150
157
`LDCXXSHARED= @LDCXXSHARED@
`
151
158
`DESTSHARED= $(BINLIBDEST)/lib-dynload
`
152
159
``
`@@ -496,7 +503,7 @@ profile-run-stamp:
`
496
503
` touch $@
`
497
504
``
498
505
`build_all_generate_profile:
`
499
``
`-
(MAKE)@DEFMAKERULE@CFLAGSNODIST="(MAKE) @DEF_MAKE_RULE@ CFLAGS_NODIST="(MAKE)@DEFMAKERULE@CFLAGSNODIST="(CFLAGS_NODIST) (PGOPROFGENFLAG)"LDFLAGS="(PGO_PROF_GEN_FLAG)" LDFLAGS="(PGOPROFGENFLAG)"LDFLAGS="(LDFLAGS) (PGOPROFGENFLAG)"LIBS="(PGO_PROF_GEN_FLAG)" LIBS="(PGOPROFGENFLAG)"LIBS="(LIBS)"
`
``
506
`+
(MAKE)@DEFMAKERULE@CFLAGSNODIST="(MAKE) @DEF_MAKE_RULE@ CFLAGS_NODIST="(MAKE)@DEFMAKERULE@CFLAGSNODIST="(CFLAGS_NODIST) (PGOPROFGENFLAG)"LDFLAGSNODIST="(PGO_PROF_GEN_FLAG)" LDFLAGS_NODIST="(PGOPROFGENFLAG)"LDFLAGSNODIST="(LDFLAGS_NODIST) (PGOPROFGENFLAG)"LIBS="(PGO_PROF_GEN_FLAG)" LIBS="(PGOPROFGENFLAG)"LIBS="(LIBS)"
`
500
507
``
501
508
`run_profile_task:
`
502
509
` @ # FIXME: can't run for a cross build
`
`@@ -510,7 +517,7 @@ build_all_merge_profile:
`
510
517
`profile-opt: profile-run-stamp
`
511
518
` @echo "Rebuilding with profile guided optimizations:"
`
512
519
` -rm -f profile-clean-stamp
`
513
``
`-
(MAKE)@DEFMAKERULE@CFLAGSNODIST="(MAKE) @DEF_MAKE_RULE@ CFLAGS_NODIST="(MAKE)@DEFMAKERULE@CFLAGSNODIST="(CFLAGS_NODIST) (PGOPROFUSEFLAG)"LDFLAGS="(PGO_PROF_USE_FLAG)" LDFLAGS="(PGOPROFUSEFLAG)"LDFLAGS="(LDFLAGS)"
`
``
520
`+
(MAKE)@DEFMAKERULE@CFLAGSNODIST="(MAKE) @DEF_MAKE_RULE@ CFLAGS_NODIST="(MAKE)@DEFMAKERULE@CFLAGSNODIST="(CFLAGS_NODIST) (PGOPROFUSEFLAG)"LDFLAGSNODIST="(PGO_PROF_USE_FLAG)" LDFLAGS_NODIST="(PGOPROFUSEFLAG)"LDFLAGSNODIST="(LDFLAGS_NODIST)"
`
514
521
``
515
522
`# Compile and run with gcov
`
516
523
`.PHONY=coverage coverage-lcov coverage-report
`
`@@ -567,7 +574,7 @@ clinic: check-clean-src $(srcdir)/Modules/_blake2/blake2s_impl.c
`
567
574
``
568
575
`# Build the interpreter
`
569
576
`$(BUILDPYTHON): Programs/python.o (LIBRARY)(LIBRARY) (LIBRARY)(LDLIBRARY) $(PY3LIBRARY)
`
570
``
`-
(LINKCC)(LINKCC) (LINKCC)(PY_LDFLAGS) (LINKFORSHARED)−o(LINKFORSHARED) -o (LINKFORSHARED)−o@ Programs/python.o (BLDLIBRARY)(BLDLIBRARY) (BLDLIBRARY)(LIBS) (MODLIBS)(MODLIBS) (MODLIBS)(SYSLIBS)
`
``
577
`+
(LINKCC)(LINKCC) (LINKCC)(PY_CORE_LDFLAGS) (LINKFORSHARED)−o(LINKFORSHARED) -o (LINKFORSHARED)−o@ Programs/python.o (BLDLIBRARY)(BLDLIBRARY) (BLDLIBRARY)(LIBS) (MODLIBS)(MODLIBS) (MODLIBS)(SYSLIBS)
`
571
578
``
572
579
`platform: $(BUILDPYTHON) pybuilddir.txt
`
573
580
` (RUNSHARED)(RUNSHARED) (RUNSHARED)(PYTHON_FOR_BUILD) -c 'import sys ; from sysconfig import get_platform ; print("%s-%d.%d" % (get_platform(), *sys.version_info[:2]))' >platform
`
`@@ -632,7 +639,7 @@ libpython3.so: libpython$(LDVERSION).so
`
632
639
` (BLDSHARED)(BLDSHARED) (BLDSHARED)(NO_AS_NEEDED) -o @−Wl,−h@ -Wl,-h@−Wl,−h@ $^
`
633
640
``
634
641
`libpython$(LDVERSION).dylib: $(LIBRARY_OBJS)
`
635
``
`-
(CC)−dynamiclib−Wl,−singlemodule(CC) -dynamiclib -Wl,-single_module (CC)−dynamiclib−Wl,−singlemodule(PY_LDFLAGS) -undefined dynamic_lookup -Wl,-install_name,$(prefix)/lib/libpython$(LDVERSION).dylib -Wl,-compatibility_version,$(VERSION) -Wl,-current_version,$(VERSION) -o @@ @(LIBRARY_OBJS) (SHLIBS)(SHLIBS) (SHLIBS)(LIBC) $(LIBM); \
`
``
642
`+
(CC)−dynamiclib−Wl,−singlemodule(CC) -dynamiclib -Wl,-single_module (CC)−dynamiclib−Wl,−singlemodule(PY_CORE_LDFLAGS) -undefined dynamic_lookup -Wl,-install_name,$(prefix)/lib/libpython$(LDVERSION).dylib -Wl,-compatibility_version,$(VERSION) -Wl,-current_version,$(VERSION) -o @@ @(LIBRARY_OBJS) (SHLIBS)(SHLIBS) (SHLIBS)(LIBC) $(LIBM); \
`
636
643
``
637
644
``
638
645
`libpython$(VERSION).sl: $(LIBRARY_OBJS)
`
`@@ -657,7 +664,7 @@ (PYTHONFRAMEWORKDIR)/Versions/(PYTHONFRAMEWORKDIR)/Versions/(PYTHONFRAMEWORKDIR)/Versions/(VERSION)/$(PYTHONFRAMEWORK): \
`
657
664
` $(LIBRARY) \
`
658
665
` $(RESSRCDIR)/Info.plist
`
659
666
` (INSTALL)−d−m(INSTALL) -d -m (INSTALL)−d−m(DIRMODE) (PYTHONFRAMEWORKDIR)/Versions/(PYTHONFRAMEWORKDIR)/Versions/(PYTHONFRAMEWORKDIR)/Versions/(VERSION)
`
660
``
`-
(CC)−o(CC) -o (CC)−o(LDLIBRARY) $(PY_LDFLAGS) -dynamiclib \
`
``
667
`+
(CC)−o(CC) -o (CC)−o(LDLIBRARY) $(PY_CORE_LDFLAGS) -dynamiclib \
`
661
668
` -all_load $(LIBRARY) -Wl,-single_module \
`
662
669
` -install_name (DESTDIR)(DESTDIR)(DESTDIR)(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK) \
`
663
670
` -compatibility_version $(VERSION) \
`
`@@ -698,15 +705,15 @@ Makefile Modules/config.c: Makefile.pre \
`
698
705
``
699
706
``
700
707
`Programs/_testembed: Programs/_testembed.o (LIBRARY)(LIBRARY) (LIBRARY)(LDLIBRARY) $(PY3LIBRARY)
`
701
``
`-
(LINKCC)(LINKCC) (LINKCC)(PY_LDFLAGS) (LINKFORSHARED)−o(LINKFORSHARED) -o (LINKFORSHARED)−o@ Programs/_testembed.o (BLDLIBRARY)(BLDLIBRARY) (BLDLIBRARY)(LIBS) (MODLIBS)(MODLIBS) (MODLIBS)(SYSLIBS)
`
``
708
`+
(LINKCC)(LINKCC) (LINKCC)(PY_CORE_LDFLAGS) (LINKFORSHARED)−o(LINKFORSHARED) -o (LINKFORSHARED)−o@ Programs/_testembed.o (BLDLIBRARY)(BLDLIBRARY) (BLDLIBRARY)(LIBS) (MODLIBS)(MODLIBS) (MODLIBS)(SYSLIBS)
`
702
709
``
703
710
`############################################################################
`
704
711
`# Importlib
`
705
712
``
706
713
`Programs/_freeze_importlib.o: Programs/_freeze_importlib.c Makefile
`
707
714
``
708
715
`Programs/_freeze_importlib: Programs/_freeze_importlib.o $(LIBRARY_OBJS_OMIT_FROZEN)
`
709
``
`-
(LINKCC)(LINKCC) (LINKCC)(PY_LDFLAGS) -o @Programs/freezeimportlib.o@ Programs/_freeze_importlib.o @Programs/freezeimportlib.o(LIBRARY_OBJS_OMIT_FROZEN) (LIBS)(LIBS) (LIBS)(MODLIBS) $(SYSLIBS)
`
``
716
`+
(LINKCC)(LINKCC) (LINKCC)(PY_CORE_LDFLAGS) -o @Programs/freezeimportlib.o@ Programs/_freeze_importlib.o @Programs/freezeimportlib.o(LIBRARY_OBJS_OMIT_FROZEN) (LIBS)(LIBS) (LIBS)(MODLIBS) $(SYSLIBS)
`
710
717
``
711
718
`.PHONY: regen-importlib
`
712
719
`regen-importlib: Programs/_freeze_importlib
`
`@@ -794,7 +801,7 @@ Python/sysmodule.o: $(srcdir)/Python/sysmodule.c Makefile
`
794
801
`$(IO_OBJS): $(IO_H)
`
795
802
``
796
803
`$(PGEN): $(PGENOBJS)
`
797
``
`-
(CC)(CC) (CC)(OPT) (PYLDFLAGS)(PY_LDFLAGS) (PYLDFLAGS)(PGENOBJS) (LIBS)−o(LIBS) -o (LIBS)−o(PGEN)
`
``
804
`+
(CC)(CC) (CC)(OPT) (PYCORELDFLAGS)(PY_CORE_LDFLAGS) (PYCORELDFLAGS)(PGENOBJS) (LIBS)−o(LIBS) -o (LIBS)−o(PGEN)
`
798
805
``
799
806
`.PHONY: regen-grammar
`
800
807
`regen-grammar: $(PGEN)
`