� ,�Re�L��6�dZddlZddlZddlZddlZddlmZeje��5ddl Z ddd��n #1swxYwYddl m Z m Z m Z mZmZddlmZmZddlmZddlmZddlmZd �Zd �Zd d d dd�Zd�Zd�Zdd�Zd dddd�ZGd�de��Z dS)adistutils._msvccompiler Contains MSVCCompiler, an implementation of the abstract CCompiler class for Microsoft Visual Studio 2015. The module is compatible with VS 2015 and later. You can find legacy support for older versions in distutils.msvc9compiler and distutils.msvccompiler. �N�)�DistutilsExecError�DistutilsPlatformError� CompileError�LibError� LinkError)� CCompiler�gen_lib_options)�log)� get_platform)�countc�j� tjtjdtjtjz���}n%#t $rt jd��YdSwxYwd}d}|5t��D]�} tj ||��\}}}n#t $rYn{wxYw|rt|tj krdtj � |��rE tt|����}n#t t"f$rY��wxYw|dkr ||kr||}}��ddd��n #1swxYwY||fS)Nz'Software\Microsoft\VisualStudio\SxS\VC7)�accesszVisual C++ is not registered�NNr�)�winreg� OpenKeyEx�HKEY_LOCAL_MACHINE�KEY_READ�KEY_WOW64_32KEY�OSErrorr �debugr � EnumValue�REG_SZ�os�path�isdir�int�float� ValueError� TypeError)�key� best_version�best_dir�i�v�vc_dir�vt�versions ��/builddir/build/BUILDROOT/alt-python311-setuptools-65.6.3-2.el8.x86_64/opt/alt/python311/lib/python3.11/site-packages/setuptools/_distutils/_msvccompiler.py� _find_vc2015r+'s������ � %� 6��?�V�%;�;� � � ���� ���� � �0�1�1�1��z�z������L��H� � =� =���� =� =�A� � &� 0��a� 8� 8� ��6�2�2��� � � ���� ����� =�R�6�=�(�(�R�W�]�]�6�-B�-B�(��!�%��(�(�m�m�G�G��"�I�.�����H������b�=�=�W�|�%;�%;�-4�f�(�L�� =� =� =� =� =� =� =� =� =� =� =���� =� =� =� =� �� !�!si�8;�A�A�&D&�8B�D&� B �D&�B � 4D&�C2�1D&�2D�D&�D�D&�&D*�-D*c ��tj�d��ptj�d��}|sdS tjtj�|ddd��ddd d d d d dg dd������}n##tjttf$rYdSwxYwtj�|ddd��}tj� |��rd|fSdS)aJReturns "15, path" based on the result of invoking vswhere.exe If no install is found, returns "None, None" The version is returned to avoid unnecessarily changing the function result. It may be ignored when the path is not None. If vswhere.exe is not available, by definition, VS 2017 is not installed. zProgramFiles(x86)� ProgramFilesrzMicrosoft Visual Studio� Installerz vswhere.exez-latestz -prereleasez -requiresz1Microsoft.VisualStudio.Component.VC.Tools.x86.x64z -property�installationPathz -products�*�mbcs�strict)�encoding�errors�VC� Auxiliary�Build�) r�environ�get� subprocess� check_outputr�join�strip�CalledProcessErrorr�UnicodeDecodeErrorr)�rootrs r*� _find_vc2017rBDs�� �:�>�>�-� .� .� P�"�*�.�.��2P�2P�D� ���z���&��� � ��3�[�-������C��"��� ��� � � � �%�'�'�! ���" � )�7�4F� G�����z�z����� �7�<�<��d�K�� 9� 9�D� �w�}�}�T�����4�x�� �:s�AB�B7�6B7�x86�x64�arm�arm64)rC� x86_amd64�x86_arm� x86_arm64c�.�t��\}}|st��\}}|stjd��dStj�|d��}tj�|��stjd|��dS|dfS)Nz$No suitable Visual C++ version foundrz vcvarsall.batz%s cannot be found)rBr+r rrrr=�isfile)� plat_spec�_r$r#� vcvarsalls r*�_find_vcvarsallrOvs����.�.�K�A�x� �0�!-���� �h� �� � �8�9�9�9��z��� � �X��7�7�I� �7�>�>�)� $� $�� � �&� �2�2�2��z� �d�?��c��tjd��r(d�tj���D��St |��\}}|st d��� t jd|�d|�d�t j���� dd � ��}nG#t j $r5}tj |j ��t d |j�����d}~wwxYwd �d �|���D��D��}|S)N�DISTUTILS_USE_SDKc�>�i|]\}}|���|��S���lower)�.0r"�values r*� z_get_vc_env..�s&��H�H�H�z�s�E�� � � � �U�H�H�HrPzUnable to find vcvarsall.batz cmd /u /c "z" z && set)�stderrzutf-16le�replace)r4zError executing c�H�i|]\}}}|�|� |���|�� SrTrU)rWr"rMrXs r*rYz_get_vc_env..�sH�� � � � �C��E� � �� � � � � � �U� � � rPc3�@K�|]}|�d��V��dS)�=N)� partition)rW�lines r*� z_get_vc_env..�s.����O�O�d�d�n�n�S�1�1�O�O�O�O�O�OrP)r�getenvr9�itemsrOrr;r<�STDOUT�decoder?r �error�output�cmd� splitlines)rLrNrM�out�exc�envs r*� _get_vc_envrm�sB�� �y�$�%�%�I�H�H�R�Z�5E�5E�5G�5G�H�H�H�H�"�9�-�-�L�I�q� �E�$�%C�D�D�D�C��%� 9�)� 9� 9�y� 9� 9� 9��$� � � � �&��I�&� .� .� ��� � (�C�C�C� � �#�*����$�%A���%A�%A�B�B�B�����C���� � �O�O�c�n�n�>N�>N�O�O�O� � � �C� �Js�!�>�"� � � ��I�I�I� � �JrPrGrHrI)�win32z win-amd64z win-arm32z win-arm64c�J��eZdZdZdZiZdgZgd�ZdgZdgZ eezeze zZ dZ dZ d Z d Zd xZZd Zd�fd� Zed���Zed���Zdd�Ze�fd���Z dd�Z d d�Z d!d�Z�fd�Zej�fd���Z d�Z!d�Z"d�Z#d"d�Z$�xZ%S)#� MSVCCompilerztConcrete class that implements an interface to Microsoft Visual C++, as defined by the CCompiler abstract class.�msvcz.c)z.ccz.cppz.cxx�.rcz.mcz.resz.objz.libz.dllz%s%sz.exerc�j��t���|||��d|_d|_dS)NF)�super�__init__� plat_name� initialized)�self�verbose�dry_run�force� __class__s �r*r~zMSVCCompiler.__init__�s4��� ������'�5�1�1�1���� ����rPc��|�|�dd����|_|�|�dd����|_dS)z3 Set class-level include/lib dirs. �include��libN)� _parse_pathr:� include_dirs� library_dirs)�cls�vc_envs r*� _configurezMSVCCompiler._configure�sN�� �?�?�6�:�:�i��+D�+D�E�E����?�?�6�:�:�e�R�+@�+@�A�A����rPc�T�d�|�tj��D��S)Nc�P�g|]#}|�|�tj����$SrT)�rstripr�sep)rW�dirs r*� z,MSVCCompiler._parse_path..�s+��K�K�K�s�s�K�� � �2�6�"�"�K�K�KrP)rorrp)�vals r*r�zMSVCCompiler._parse_path�s$��K�K�c�i�i�� �.C�.C�K�K�K�KrPNc���|jr Jd���|�t��}|tvr$tdt t�������t|}t |��}|std���|�|��|�dd��|_|j� tj ��}td|��|_ td|��|_td|��|_td |��|_td |��|_td |��|_d|_gd �|_gd �|_gd�}gd�}g|�d�|_g|�d�|_g|�d�d�d�|_g|�d�d�d�|_g|�|_g|�|_t8jdf|jt8jdf|jt8jdf|jt8jdf|jt8jdf|jt8jdf|jt8jdf|jt8jdf|jt8jdf|ji |_ d|_dS)Nzdon't init multiple timesz--plat-name must be one of z7Unable to find a compatible Visual Studio installation.rr�zcl.exezlink.exezlib.exezrc.exezmc.exezmt.exe)�/nologoz/O2�/W3z/GLz/DNDEBUGz/MD)r�z/Odz/MDdz/Zir�z/D_DEBUG)r��/INCREMENTAL:NO�/LTCG)r�r�r�z /DEBUG:FULLz/MANIFEST:EMBED,ID=1z/DLLz/MANIFEST:EMBED,ID=2z/MANIFESTUAC:NOFT)!r�r �PLAT_TO_VCVARSr�tuplermr�r:�_pathsrorrprv�cc�linkerr��rc�mc�mt�preprocess_options�compile_options�compile_options_debug� ldflags_exe�ldflags_exe_debug�ldflags_shared�ldflags_shared_debug�ldflags_static�ldflags_static_debugr � EXECUTABLE� SHARED_OBJECT�SHARED_LIBRARY�_ldflags)r�rrLr�rs�ldflags� ldflags_debugs r*� initializezMSVCCompiler.initialize�s����#�@�@�%@�@�@�@� � �$���I� �N� *� *�(�E�e�N�.C�.C�E�E��� � #�9�-� ��Y�'�'��� �(�L��� � ��������j�j���,�,�� �� �!�!�"�*�-�-���H�e�,�,���� �E�2�2�� ��Y��.�.����H�e�,�,����H�e�,�,����H�e�,�,���"&��� S�R�R���& �& �& ��"�:�9�9��N�N�N� �=�W�=�&<�=���!I�=�!I�2H�!I��� � � � � � #� � �  ��� % � �% � �% � #�% � � % ��!� )��j���$4�m�$4��!�� !�4� (�$�*:� � !�5� )�4�+;� � !�4� (�$�*@� � $�d� +�T�-@� � $�e� ,�d�.A� � $�d� +�T�-F� � %�t� ,�d�.A� � %�u� -�t�/B� � %�t� ,�d�.G�  �� � ����rPc�f���it��j��fd��j�jzD���S)Nc� ��i|] }|�j�� SrT)� res_extension)rW�extr�s �r*rYz/MSVCCompiler.out_extensions..Es.��������T�'���rP)r}�out_extensions�_rc_extensions�_mc_extensions)r�r�s`�r*r�zMSVCCompiler.out_extensionsAsS���� ��g�g�$� ������.��1D�D���� � rPc �$�|js|���|�||||||��} | \}} }} } |pg} | �d��|r| �|j��n| �|j��d}| D�]|} | |\}}n#t$rY�wxYw|rtj � |��}||j vrd|z}�n�||j vr d|z}d}�n{||j vrN|}d|z} |�|jg| z||gz��n!#t $r}t#|���d}~wwxYw��||jv�rtj �|��}tj �|��} |�|jd|d||g��tj �tj �|����\}}tj �||d z��}|�|jd|z|g��n!#t $r}t#|���d}~wwxYw���t#d |�d |�����|jg| z| z}|r|�d ��|�|��|�d |z��|�|�� |�|����]#t $r}t#|���d}~wwxYw| S)Nz/cFz/Tcz/TpTz/foz-hz-rr{zDon't know how to compile z to z/EHscz/Fo)r�r��_setup_compile�append�extendr�r��KeyErrorrrrq� _c_extensions�_cpp_extensionsr��spawnr�rrr��dirnamer��splitext�basenamer=r�)r��sources� output_dir�macrosr�r� extra_preargs�extra_postargs�depends� compile_info�objects�pp_opts�build� compile_opts� add_cpp_opts�obj�srcr�� input_opt� output_opt�msg�h_dir�rc_dir�baserM�rc_file�argss r*�compilezMSVCCompiler.compileKs����� � �O�O� � � ��*�*� �� �g�w�� � � �;G�7�����%�$�*�� ����D�!�!�!� � 6� � � �� :� ;� ;� ;� ;� � � �� 4� 5� 5� 5�� ��@ (�@ (�C� � ��:���S�S��� � � ��� ����� +��g�o�o�c�*�*���d�(�(�(�!�C�K� � ���,�,�,�!�C�K� �#� � ���+�+�+�� �"�S�[� �,��J�J���y�7�2�j�)�5L�L�M�M�M�M��)�,�,�,�&�s�+�+�+�����,�������+�+�+������,�,�������-�-�� ,��J�J����u�d�F�C�H�I�I�I� �g�.�.�r�w�/?�/?��/D�/D�E�E�G�D�!� �g�l�l�6�4�%�<�@�@�G��J�J������g�>�?�?�?�?��)�,�,�,�&�s�+�+�+�����,�����#�#N��#N�#N��#N�#N�O�O�O��G�9�|�+�g�5�D�� %�� � �G�$�$�$� �K�K� � "� "� "� �K�K��� � $� $� $� �K�K�� '� '� '� (�� � �4� � � � ��%� (� (� (�"�3�'�'�'����� (�����s[� B"�" B/�.B/�#D*�* E�4E�E�B"H8�8 I�I�I�K/�/ L �9L�L c���|js|���|�||��\}}|�||���}|�||��r||d|zgz}|r t jd|jd�|����|� |jg|z��dS#t$r}t|���d}~wwxYwt jd|��dS)N)r��/OUT:�Executing "%s" %s� �skipping %s (up-to-date)) r�r��_fix_object_args�library_filename� _need_linkr rr�r=r�rr) r�r��output_libnamer�r� target_lang�output_filename�lib_argsr�s r*�create_static_libzMSVCCompiler.create_static_lib�s���� � �O�O� � � �"�3�3�G�Z�H�H�����/�/��:�/�V�V�� �?�?�7�O� 4� 4� C��'�O�";�!<�<�H�� �� $�� �-�t�x����(�9K�9K�L�L�L�� � �D�H�:��0�1�1�1�1�1��%� $� $� $��s�m�m�#����� $���� �I�0�/� B� B� B� B� Bs�/A B=�= C�C�Cc�8�|js|���|�||��\}}|�|||��}|\}}}|r%|�dt |��z��t ||||��}|� tj� ||��}|� ||���r�|j || f}d�|pgD��}||z|z|zd|zgz}tj� |d��} |��tj� tj�|����\}}tj� | |�|����}|�d|z��| r| |dd�<| r|�| ��tj� tj�|����}|�|�� t)jd|jd� |����|�|jg|z��dS#t0$r}t3|���d}~wwxYwt)jd|��dS) Nz5I don't know what to do with 'runtime_library_dirs': c��g|]}d|z��S)z/EXPORT:rT)rW�syms r*r�z%MSVCCompiler.link..�s��N�N�N��:��+�N�N�NrPr�rz/IMPLIB:r�r�r�)r�r�r�� _fix_lib_args�warn�strr rrr=r�r�r�r�r�r�r�r�rq�mkpathr rr�r�rr)r�� target_descr�r�r�� librariesr��runtime_library_dirs�export_symbolsrr�r�� build_tempr�� fixed_args�lib_optsr�� export_opts�ld_args�dll_name�dll_ext� implib_filer�s r*�linkzMSVCCompiler.link�s���"�� � �O�O� � � �"�3�3�G�Z�H�H�����'�'� �<�AU�V�V� �8B�5� �<�!5� � � �I�I�G��*�+�+�,� � � � #�4��7K�Y�W�W�� � !� �g�l�l�:��G�G�O� �?�?�7�O� 4� 4�# C��m�K��$6�7�G�N�N��8L�"�N�N�N�K��(�"�[�0�7�:�g��>W�=X�X� ��������4�4�J��)�&(�g�&6�&6��G�$�$�_�5�5�'�'�#��7�!�g�l�l�:�t�7L�7L�X�7V�7V�W�W� ����z�K�7�8�8�8�� ,�+����� �� /����~�.�.�.����������)I�)I�J�J�J� �K�K� � #� #� #� %�� �-�t�{�C�H�H�W�Fallback spawn triggered. Please update distutils monkeypatch.z os.environ) �typer!r��warningsr��mock�patchrr}r�rX)r�rhrl�bagrkr�s �r*rzMSVCCompiler._fallback_spawn s"�����"�d�5�"�b�!�!�#�#�� ��I�I�I� �F�� � � � �2�#�c�(�(�B�B��C�B�B�B�B����� ���� � �V�W�W�W� �Z�_�_�\�3� /� /� +� +���� � �c�*�*�C�I� +� +� +� +� +� +� +� +� +� +� +� +���� +� +� +� +� +� +s&�$� A �A�A �'B5�5B9�<B9c� �d|zS)Nz /LIBPATH:rT�r�r�s r*�library_dir_optionzMSVCCompiler.library_dir_option#s ���S� � rPc� �td���)Nz:don't know how to set runtime library search path for MSVC)rr s r*�runtime_library_dir_optionz'MSVCCompiler.runtime_library_dir_option&s��$� H� � � rPc�,�|�|��S�N)r�)r�r�s r*�library_optionzMSVCCompiler.library_option+s���$�$�S�)�)�)rPc���|r|dz|g}n|g}|D]_}|D]Z}tj�||�|����}tj�|��r|ccS�[�`dS)N�_d)rrr=r�rK)r��dirsr�r� try_namesr��name�libfiles r*�find_library_filezMSVCCompiler.find_library_file.s��� � ��t��S�)�I�I���I�� � �C�!� #� #���'�,�,�s�D�,A�,A�$�,G�,G�H�H���7�>�>�'�*�*�#�"�N�N�N�N�N�#� #� �4rP)rrrr)NNNrNNN)NrN) NNNNNrNNNN)r)&�__name__� __module__� __qualname__�__doc__� compiler_type� executablesr�r�r�r��src_extensionsr�� obj_extension�static_lib_extension�shared_lib_extension�static_lib_format�shared_lib_format� exe_extensionr~� classmethodr�� staticmethodr�r��propertyr�r�r�r�r�� contextlib�contextmanagerrr rrr� __classcell__)r�s@r*ryry�s=�������3�3��M��K��F�M�-�-�-�O��W�N��W�N�#�_�4�~�E��V�N��M��M�!��!��,2�2��)��M�!�!�!�!�!�!� �B�B��[�B��L�L��\�L�N �N �N �N �d� � � � ��X� ��������^�^�^�^�BNR�C�C�C�C�4���!�������DC�DC�DC�DC�L����� ��+�+�+�+���+�,!�!�!� � � � *�*�*��������rPryr)!rrr;r)r� unittest.mockr�suppress� ImportErrorrr4rrrrr� ccompilerr r �_logr �utilr � itertoolsr r+rB�PLAT_SPEC_TO_RUNTIMErOrmrvr�ryrTrPr*�r4s���� � � � ��������������������Z���%�%����M�M�M���������������������������������2�1�1�1�1�1�1�1�������������������"�"�"�:'�'�'�V ���� ������&���4����,���� ���|�|�|�|�|�9�|�|�|�|�|s �:�>�>