Hi Inada-san,

You can query the sysconfig module to check how Python has been built.

Example:

pyvstinner@apu$ python3
Python 3.7.4 (default, Jul  9 2019, 16:32:37)
[GCC 9.1.1 20190503 (Red Hat 9.1.1-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sysconfig

>>> sysconfig.get_config_var('PY_CFLAGS')
'-Wno-unused-result -Wsign-compare -DDYNAMIC_ANNOTATIONS_ENABLED=1
-DNDEBUG  -O2 -g -pipe -Wall -Werror=format-security
-Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions
-fstack-protector-strong -grecord-gcc-switches   -m64 -mtune=generic
-fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection
-D_GNU_SOURCE -fPIC -fwrapv'

>>> sysconfig.get_config_var('PY_CFLAGS_NODIST')
'-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2
-Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong
-grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1
-specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic
-fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection
-D_GNU_SOURCE -fPIC -fwrapv -flto -fuse-linker-plugin
-ffat-lto-objects -flto-partition=none -g -std=c99 -Wextra
-Wno-unused-result -Wno-unused-parameter
-Wno-missing-field-initializers -Wno-cast-function-type
-Werror=implicit-function-declaration -O2 -g -pipe -Wall
-Werror=format-security -Wp,-D_FORTIFY_SOURCE=2
-Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong
-grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1
-specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic
-fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection
-D_GNU_SOURCE -fPIC -fwrapv -fprofile-use -fprofile-correction'

>>> sysconfig.get_config_var('PY_LDFLAGS')
'-Wl,-z,relro -Wl,--as-needed  -Wl,-z,now  -g'

>>> sysconfig.get_config_var('PY_LDFLAGS_NODIST')
'-Wl,-z,relro -Wl,--as-needed  -Wl,-z,now
-specs=/usr/lib/rpm/redhat/redhat-hardened-ld -g  -flto
-fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g'

>>> import shlex
>>> [opt for opt in shlex.split(sysconfig.get_config_var('PY_CFLAGS') + 
>>> sysconfig.get_config_var('PY_CFLAGS_NODIST')) if opt.startswith('-O') or 
>>> 'profile' in opt]
['-O2', '-O2', '-fprofile-use', '-fprofile-correction']

>>> [opt for opt in shlex.split(sysconfig.get_config_var('PY_LDFLAGS') + 
>>> sysconfig.get_config_var('PY_LDFLAGS_NODIST')) if 'lto' in opt]
['-flto', '-ffat-lto-objects', '-flto-partition=none']


You can see that Fedora 30 /usr/bin/python3.7 is built using -O2 and
has been optimized with PGO (compiler flag -fprofile-use) and LTO
(linker flag -flto).

Victor


Le mar. 15 oct. 2019 à 11:02, Inada Naoki <songofaca...@gmail.com> a écrit :
>
> Hi, all.
>
> I want Homebrew uses `--enable-optimizations` and `--with-lto` option
> for building Python.  But maintainer said:
>
> > Given this is not a default option, probably not, unless it is done in 
> > upstream (“official”) binaries.
>
> https://github.com/Homebrew/homebrew-core/pull/45337
>
> Are these options used for official macOS binaries?
> Is there official information about the build step of official binaries?
>
> Regards,
> --
> Inada Naoki  <songofaca...@gmail.com>
> _______________________________________________
> Python-Dev mailing list -- python-dev@python.org
> To unsubscribe send an email to python-dev-le...@python.org
> https://mail.python.org/mailman3/lists/python-dev.python.org/
> Message archived at 
> https://mail.python.org/archives/list/python-dev@python.org/message/EILILECNTLTW4VCBCPW37R4QRU7ZBDEU/
> Code of Conduct: http://python.org/psf/codeofconduct/



-- 
Night gathers, and now my watch begins. It shall not end until my death.
_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-le...@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at 
https://mail.python.org/archives/list/python-dev@python.org/message/33GTAOJBEQ2QM25ZK27FFWTIE45D2SAX/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to