HEX
Server: Apache/2.4.65 (Debian)
System: Linux kubikelcreative 5.10.0-35-amd64 #1 SMP Debian 5.10.237-1 (2025-05-19) x86_64
User: www-data (33)
PHP: 8.4.13
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/gyp/generator/__pycache__/eclipse.cpython-39.pyc
a

r�^eB�@s�dZddlmZddlZddlZddlZddlZddlZddl	Z	ddl
mmZ
daiZdD]Zdeee<q^dD]Zdee<qtd	ed
<dd�Zd
d�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�ZdS)%a�GYP backend that generates Eclipse CDT settings files.

This backend DOES NOT generate Eclipse CDT projects. Instead, it generates XML
files that can be imported into an Eclipse CDT project. The XML file contains a
list of include paths and symbols (i.e. defines).

Because a full .cproject definition is not created by this generator, it's not
possible to properly define the include dirs and symbols for each file
individually.  Instead, one set of includes/symbols is generated for the entire
project.  This works fairly well (and is a vast improvement in general), but may
still result in a few indexer issues here and there.

This generator has no automated tests, so expect it to be broken.
�)�escapeNF)ZINTERMEDIATE_DIRZPRODUCT_DIRZLIB_DIRZSHARED_LIB_DIR�$)ZRULE_INPUT_PATHZRULE_INPUT_ROOTZRULE_INPUT_NAMEZRULE_INPUT_DIRNAMEZRULE_INPUT_EXTZEXECUTABLE_PREFIXZEXECUTABLE_SUFFIXZSTATIC_LIB_PREFIXZSTATIC_LIB_SUFFIXZSHARED_LIB_PREFIXZSHARED_LIB_SUFFIXZCONFIGURATION_NAME��$SHARED_INTERMEDIATE_DIRZSHARED_INTERMEDIATE_DIRc	Cs�|�di�}|��D]\}}|�||�qtj�|�}|�d|�|dkr�ddlmm}t	|dg�}t	|dg�}tj
�||�dS)N�generator_flagsZOS�winr�+generator_additional_non_configuration_keys�"generator_additional_path_sections)�get�items�
setdefault�gyp�common�	GetFlavorZgyp.generator.msvs�	generatorZmsvs�getattr�msvs_emulationZCalculateCommonVariables)	Zdefault_variables�paramsr�key�val�flavorZmsvs_generatorrr	�r�7/usr/lib/python3/dist-packages/gyp/generator/eclipse.py�CalculateVariables5s��rcCs |�di�}|�dd�rdadS)zOCalculate the generator specific info that gets fed to input (called by
  gyp).rZadjust_static_librariesFTN)r
�4generator_wants_static_library_dependencies_adjusted)rrrrr�CalculateGeneratorInputInfoGsrcCs�t�}g}|r�t�|�}|�gd��tj|tjtjtjd�}	|	��d}
d}|
��D]@}|�	d�rjd}qV|�	d�rxq�|rV|�
�}
|
|vrV|�|
�qVtj
�|�}|dkr�|�d	i�}|D]�}||}||d
vr�|d
|}|dk�rtj�||�}|�|�}n|d}|D]2}|�	d��r|d
d�}
|
|v�r|�|
��qd|vr�|d}|D]Z}|D]N}
|
�d|�}
tj�|
��s�tj�|�}|d|
}
tj�|
�}
|�|
��q`�qXq�t|�}|��|D]}||v�r�|�|��q�|S)z�Calculate the set of include directories to be used.

  Returns:
    A list including all the include_dir's specified for every target followed
    by any include directories that were added as cflag compiler options.
  )�-Ez-xc++z-v�-)�args�stdin�stdout�stderr�Fz#includeTzEnd of search list.rr�configurations�cflagsz-I�N�include_dirsr�/)�set�shlex�split�extend�
subprocess�Popen�PIPE�communicate�
splitlines�
startswith�strip�appendr
rrr
r�MsvsSettingsZ	GetCflags�replace�os�path�isabs�dirname�abspath�add�list�sort)�target_list�target_dicts�shared_intermediate_dirs�config_namer�
compiler_pathZgyp_includes_setZcompiler_includes_list�command�proc�outputZin_include_list�line�include_dirrr�target_name�target�config�
msvs_settingsr$Zcflagr&Zshared_intermediate_dirZbase_dirZall_includes_listZcompiler_includerrr�GetAllIncludeDirectoriesPsl


�	



�
rLc	Csvtj�|d�\}}}||�di�}|D]$\}}|dvr*tj�|j|�Sq*dD]}tj�|�}|rT|SqTdS)aDetermine a command that can be used to invoke the compiler.

  Returns:
    If this is a gyp project that has explicit make settings, try to determine
    the compiler from that.  Otherwise, see if a compiler was specified via the
    CC_target environment variable.
  rZmake_global_settings)�CC�CXX)Z	CC_targetrMrNZgcc)	r
rZParseQualifiedTargetr
r6r7�join�toplevel_dir�environ)	r>�data�optionsZ
build_file�_Zmake_global_settings_dictr�valueZcompilerrrr�GetCompilerPath�s	
rVcCs�i}tj�|�}|dkr$|�di�}|D]�}	||	}
|dkrVtj�|
|�}|�|�}ng}||
dvr||
d|}
|
d}ng}||D]P}|�dd�}t|�dkr�|�	d�|d�
�|vr�q�|d�
�||d�
�<q�q(|dkr�|S|�r�t�|�}|�gd	��t
j|d
t
jt
jd�}|��d}|�d�}|D]L}|�
��sH�q6|�d
d�}|d}t|�dk�rt|d}nd}|||<�q6|S)z�Calculate the defines for a project.

  Returns:
    A dict that includes explict defines declared in gyp files along with all of
    the default defines that the compiler uses.
  rrr#�defines�=r"�1r)rz-dMr�.)r�cwdrr �
� r%�)r
rrr
rr4ZGetComputedDefinesr*�lenr3r2r)r+r,r-r.r/)r>r?rRrArrBZall_definesrrrHrIrKZ
extra_definesrJZtarget_definesZdefineZsplit_definerCZcpp_procZ
cpp_outputZ	cpp_linesZcpp_lineZcpp_line_partsrrrrr�
GetAllDefines�sR



�


r`cCs\|�d�|�d�|D]4}|�d|�|D]}|�d|�q.|�d�q|�d�dS)z9Write the includes section of a CDT settings export file.zT  <section name="org.eclipse.cdt.internal.ui.wizards.settingswizards.IncludePaths">
�=    <language name="holder for library settings"></language>
�    <language name="%s">
z;      <includepath workspace_path="false">%s</includepath>
�    </language>
�
  </section>
N)�write)�out�
eclipse_langsr&�langrGrrr�WriteIncludePaths�s

�ric	Cst|�d�|�d�|D]L}|�d|�t|���D]"}|�dt|�t||�f�q6|�d�q|�d�dS)z7Write the macros section of a CDT settings export file.zN  <section name="org.eclipse.cdt.internal.ui.wizards.settingswizards.Macros">
rarbz6      <macro><name>%s</name><value>%s</value></macro>
rcrdN)re�sorted�keysr)rfrgrWrhrrrr�WriteMacross

�rlc

Cs�|d}|�di�}tj�|�dd�|�}tj�|j|�}tj�|dd�tj�|d�g}	t|||||tj�|d�||	�t|||j|tj�|d��dS)	NrSrZ
output_dirrf�obj�genzeclipse-cdt-settings.xmlzeclipse-classpath.xml)r
r6r7rOrP�GenerateCdtSettingsFile�GenerateClasspathFile)
r>r?rRrrArSrZ	build_dir�toplevel_buildr@rrr�GenerateOutputForConfigs8����	��rrc
Cs�tj�|�t|d��~}|�d�|�d�gd�}	t|||�}
t||||||
�}t||	|�t||||||
�}t	||	|�|�d�Wd�n1s�0YdS)N�wz'<?xml version="1.0" encoding="UTF-8"?>
z<cdtprojectproperties>
)zC++ Source Filez
C Source FilezAssembly Source FilezGNU C++zGNU CZAssemblyz</cdtprojectproperties>
)
r
r�EnsureDirExists�openrerVrLrir`rl)
r>r?rRrrA�out_namerSr@rfrgrBr&rWrrrro;s 

�
�rocs~tj�|�t�d����fdd�}|dt||���|dt||���|ddg�|dtj�	|d	�g�t�
���|�d
S)z�Generates a classpath file suitable for symbol navigation and code
  completion of Java code (such as in Android projects) by finding all
  .java and .jar files used as action inputs.Z	classpathcsrt�}|D]0}tj�|�r0|�tj�|���q
|�|�q
t|�D](}t��d�}|�d|�|�d|�qDdS)NZclasspathentry�kindr7)	r(r6r7r8r;�relpathrj�ETZ
SubElement)rw�pathsZ	rel_pathsr7Z
entry_element��resultrPrr�AddElementsYsz*GenerateClasspathFile.<locals>.AddElements�lib�srcZconz'org.eclipse.jdt.launching.JRE_CONTAINERrEz.eclipse-java-buildN)r
rrtryZElement�GetJavaJars�GetJavaSourceDirsr6r7rOZElementTreere)r>r?rPrqrvr}rr{rrpQs
rpccs�|D]v}||}|�dg�D]\}|dD]N}tj�|�ddkr(|�d�s(tj�|�r^|Vq(tj�tj�|�|�Vq(qqdS)z1Generates a sequence of all .jars used as inputs.�actions�inputsr"z.jarrN)r
r6r7�splitextr1r8rOr9)r>r?rPrHrI�action�input_rrrr�ssr�c

cs�|D]�}||}|�dg�D]�}|dD]�}tj�|�ddkr(|�d�s(tj�tj�tj�|�|��}|}tj�|�dvr�tj�|�\}}	|r�||krl|Vq(ql|Vq(qqdS)zAGenerates a sequence of all likely java package root directories.r�r�r"z.javar)r�javaN)	r
r6r7r�r1r9rO�basenamer*)
r>r?rPrHrIr�r�Zdir_Z
parent_searchrTrrrr��s"��r�cCsj|djrtd��|�di��dd�}|r<t|||||�n*||dd}|D]}t|||||�qPdS)zFGenerate an XML settings file that can be imported into a CDT project.rSz.--generator_output not implemented for eclipserrJNrr#)Zgenerator_output�NotImplementedErrorr
rr)r>r?rRrZuser_configZconfig_namesrArrr�GenerateOutput�s

�
�r�)�__doc__Zxml.sax.saxutilsr�os.pathr6r,r
Z
gyp.commonZgyp.msvs_emulationr)Zxml.etree.cElementTreeZetreeZcElementTreeryrZgenerator_default_variablesr9ZunusedrrrLrVr`rirlrrrorpr�r�r�rrrr�<module>s:
�	Y;!"