Ë ½TC� „ãóì—dZddlmZddlZddlZddlZddlZddlZddl Z ddl m cm Z daiZdD] Zdezee<Œ dD]Zdee<Œ d ed <d „Zd „Zd „Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zy)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)ÚINTERMEDIATE_DIRÚ PRODUCT_DIRÚLIB_DIRÚSHARED_LIB_DIRÚ$) ÚRULE_INPUT_PATHÚRULE_INPUT_ROOTÚRULE_INPUT_NAMEÚRULE_INPUT_DIRNAMEÚRULE_INPUT_EXTÚEXECUTABLE_PREFIXÚEXECUTABLE_SUFFIXÚSTATIC_LIB_PREFIXÚSTATIC_LIB_SUFFIXÚSHARED_LIB_PREFIXÚSHARED_LIB_SUFFIXÚCONFIGURATION_NAMEÚú$SHARED_INTERMEDIATE_DIRÚSHARED_INTERMEDIATE_DIRcóp—|jdi«}|j«D]\}}|j||«Œtjj |«}|jd|«|dk(rDddlmcm}t|dg«}t|dg«}tjj||«yy)NÚgenerator_flagsÚOSÚwinrÚ+generator_additional_non_configuration_keysÚ"generator_additional_path_sections) ÚgetÚitemsÚ setdefaultÚgypÚcommonÚ GetFlavorÚgyp.generator.msvsÚ generatorÚmsvsÚgetattrÚmsvs_emulationÚCalculateCommonVariables) Údefault_variablesÚparamsrÚkeyÚvalÚflavorÚmsvs_generatorrrs ú:/usr/lib/python3.12/site-packages/gyp/generator/eclipse.pyÚCalculateVariablesr15s¯€Ø—J‘JÐ0°"Ó5€/Ø!×'Ñ'Ö)�h€cˆ3Ø× Ñ   cÕ*ð*ä �:‰:× Ñ  Ó '€&Ø×јt VÔ,Ø ˆu‚_÷0Ð/Ü29¸.Ø5°ró3;Ð/ä)0°Ø,¨bó*2Ð&ô×Ñ×/Ñ/Ð0AÀ6ÕJðócóR—|jdi«}|jdd«rdayy)zOCalculate the generator specific info that gets fed to input (called by gyp).rÚadjust_static_librariesFTN)rÚ4generator_wants_static_library_dependencies_adjusted)r+rs r0ÚCalculateGeneratorInputInfor6Gs1€ð—J‘JÐ0°"Ó5€/Ø×ÑÐ2°EÔ:à;?Ñ8ð;r2có$—t«}g}|råtj|«}|jgd¢«t j |tj tj tj ¬«} | j«d} d} | j«D]R} | jd«rd} Œ| jd«rn+| sŒ-| j«} | |vsŒB|j| «ŒTtjj|«}|dk(r|jd i«}|D�](}||}||d vsŒ|d |}|dk(r2tj j#|«}|j%|«}n|d }|D]/}|jd «sŒ|d d} | |vsŒ|j| «Œ1d|vsŒŽ|d}|D]‘}|D]Š} | j'd|«} t(j*j-| «sFt(j*j/|«}|dz| z} t(j*j1| «} |j3| «ŒŒŒ“�Œ+t5|«}|j7«|D]}||vsŒ|j|«Œ|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!r"r#rr(Ú MsvsSettingsÚ GetCflagsÚreplaceÚosÚpathÚisabsÚdirnameÚabspathÚaddÚlistÚsort)Ú target_listÚ target_dictsÚshared_intermediate_dirsÚ config_namer+Ú compiler_pathÚgyp_includes_setÚcompiler_includes_listÚcommandÚprocÚoutputÚin_include_listÚlineÚ include_dirr.rÚ target_nameÚtargetÚconfigÚ msvs_settingsr@ÚcflagrBÚshared_intermediate_dirÚbase_dirÚall_includes_listÚcompiler_includes r0ÚGetAllIncludeDirectoriesrqPsz€ô“UÐØÐñÜ�k‰k˜-Ó(€GØ ‡N�NÒ-Ô.Ü × Ñ  ´ ·±Ü#-§?¡?¼:¿?¹?ô L€Dà × Ñ Ó  Ñ "€Fð€OØ×!Ñ!Ö#ˆØ �‰˜Ô $ØˆØØ �‰Ð.Ô /Ù Ú Ø—j‘j“lˆ Ø Ð4Ò 4Ø × 'Ñ '¨ Õ 4ð$ô �:‰:× Ñ  Ó '€&Ø ˆu‚_Ø—j‘jÐ!2°BÓ7€OÜ €kØ ˜+Ñ &€FØ�fÐ-Ñ.Ò.ØÐ&Ñ'¨ Ñ4€fð �5ŠÜ×*Ñ*×7Ñ7¸ÀÓPˆ Ø×(Ñ(¨Ó5‰à˜Ñ!ˆÛˆ%Ø × Ñ ˜DÕ !ؘa˜b˜ ˆ+Ø Ð 6Ò 6Ø "× )Ñ )¨+Õ 6ð ð ˜6Ò !ؘnÑ-ˆ Û'?Ð #Û)ˆkØ%×-Ñ-Ð.HØ.EóGˆKä—7‘7—=‘= Ô-ÜŸ™Ÿ™¨Ó5ˆhà$ s™N¨[Ñ8ˆkÜŸG™GŸO™O¨KÓ8ˆkà × Ñ  Õ -ñ*ò(@ð/!ôHÐ+Ó,ÐØ×ÑÔÛ0ÐØ Ð/Ò /Ø×ÑÐ/Õ0ð1ð Ðr2cóF—tjj|d«\}}}||jdi«}|D]5\}}|dvsŒ tj j |j|«cSdD]'}tjj|«}|sŒ%|cSy)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. rÚmake_global_settings)ÚCCÚCXX)Ú CC_targetrtruÚgcc) r!r"ÚParseQualifiedTargetrrSrTÚjoinÚ toplevel_dirÚenviron) r[ÚdataÚoptionsÚ build_fileÚ_Úmake_global_settings_dictr,ÚvalueÚcompilers r0ÚGetCompilerPathrƒ©s˜€ô—Z‘Z×4Ñ4°[À±^ÓDÑ€*ˆa�Ø" :Ñ.×2Ñ2Ð3IÈ2ÓNÐÛ-�j€cˆ5Ø ˆmÒÜ �W‰W�\‰\˜'×.Ñ.°Ó 6Ò6ð.ó (€cÜ�z‰z�~‰~˜cÓ"€HÚØ ‚oð(ð r2cóÆ—i}tjj|«}|dk(r|jdi«}|D]Ï} || } |dk(r2tjj | «} | j |«} ng} || dvr| d|} | d}ng}|| zD]p}|jdd«}t|«dk(r|jd«|dj«|vrŒJ|dj«||dj«<ŒrŒÑ|dk(r|S|rËtj|«}|jgd ¢«tj|d tjtj¬ «}|j!«d}|jd «}|D]E}|j«sŒ|jd d«}|d}t|«dk\r|d}nd}|||<ŒG|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)r8z-dMr9Ú.)r:Úcwdr;r<Ú Ú rAé)r!r"r#rr(rPÚGetComputedDefinesrFÚlenrOrNrErGrHrIrJrK)r[r\r|r^r+r_Ú all_definesr.rrhrirkÚ extra_definesrjÚtarget_definesÚdefineÚ split_definerbÚcpp_procÚ cpp_outputÚ cpp_linesÚcpp_lineÚcpp_line_partsr,r-s r0Ú GetAllDefinesr™Ásñ€ð€+Ü �:‰:× Ñ  Ó '€&Ø ˆu‚_Ø—j‘jÐ!2°BÓ7€OÛ €kØ ˜+Ñ &€Fà �‚Ü×(Ñ(×5Ñ5°f¸oÓN€mØ#×6Ñ6°{ÓC�mà€mØ�fÐ-Ñ.Ñ.ØÐ&Ñ'¨ Ñ4€fؘiÑ(�nà€nØ  =Ô0ˆØ—\‘\ # qÓ)€lÜ ˆ\Ó ˜aÒ Ø×јCÔ Ø �a‰× Ñ Ó  KÑ /àØ-9¸!©_×-BÑ-BÓ-D€k�,˜q‘/×'Ñ'Ó)Ò*ñ1ð!ð, ˆu‚_Ø ÐÙÜ�k‰k˜-Ó(€GØ ‡N�NÒ%Ô&Ü×Ñ W°#Ü&0§o¡o¼j¿o¹oôO€Hà×%Ñ%Ó'¨Ñ*€JØ× Ñ  Ó&€IÛˆØ �^‰^Ô ØØ—~‘~ c¨1Ó-€nØ ˜1Ñ €cÜ ˆ^Ó  Ò !ؘQÑ‰àˆØ€k�#Òðð Ðr2cóø—|jd«|jd«|D]B}|jd|z«|D]}|jd|z«Œ|jd«ŒD|jd«y)z9Write the includes section of a CDT settings export file.zT
ú= ú z; %s ú ú
N)Úwrite)ÚoutÚ eclipse_langsrBÚlangrgs r0ÚWriteIncludePathsr£üs}€ð‡)�)ð /ô0à‡)�)Ð LÔMÛ€d؇I�IÐ*¨TÑ1Ô2Û#ˆ Ø ‡i�iÐNØñõð$ð‡I�IÐ!Õ"ð ð ‡)�)Ð Õr2c óX—|jd«|jd«|D]r}|jd|z«t|j««D]/}|jdt|«›dt||«›d�«Œ1|jd«Œt|jd«y ) z7Write the macros section of a CDT settings export file.zN
r›rœz zz r�ržN)rŸÚsortedÚkeysr)r r¡r…r¢r,s r0Ú WriteMacrosr§ s”€ð‡)�)ð )ô*à‡)�)Ð LÔMÛ€d؇I�IÐ*¨TÑ1Ô2Ü�g—l‘l“nÖ%ˆØ ‡i‚iܘ•œf W¨S¡\Õ2ð4õ5ð&ð‡I�IÐ!Õ"ð ð ‡)�)Ð Õr2c ó6—|d}|jdi«}tjj|jdd«|«}tjj|j|«}tjj|dd«tjj|d«g} t |||||tjj|d«|| «t |||j|tjj|d««y) Nr}rÚ output_dirr ÚobjÚgenzeclipse-cdt-settings.xmlzeclipse-classpath.xml)rrSrTryrzÚGenerateCdtSettingsFileÚGenerateClasspathFile) r[r\r|r+r^r}rÚ build_dirÚtoplevel_buildr]s r0ÚGenerateOutputForConfigr°sô€à �9Ñ €'Ø—J‘JÐ0°"Ó5€/ô�g‰g�l‰l˜?×.Ñ.¨|¸UÓCØ&ó(€)ô—7‘7—<‘< × 4Ñ 4°iÓ@€.ô!Ÿg™gŸl™l¨>¸5À%ÓHÜ Ÿg™gŸl™l¨>¸5ÓAðCÐô˜+Ø&ØØ Ø%ÜŸ'™'Ÿ,™, ~Ø'AóCà!Ø2ô4ô˜ Ø$Ø×,Ñ,Ø&ÜŸ™Ÿ ™  ^Ø%<ó>õ ?r2c ó€—tjj|«t|d«5}|j d«|j d«gd¢} t |||«} t |||||| «} t|| | «t|||||| «} t|| | «|j d«ddd«y#1swYyxYw)NÚwz' z )zC++ Source Filez C Source FilezAssembly Source FilezGNU C++zGNU CÚAssemblyz ) r!r"ÚEnsureDirExistsÚopenrŸrƒrqr£r™r§) r[r\r|r+r^Úout_namer}r]r r¡r_rBr…s r0r¬r¬;s´€ô‡*�*×јXÔ&Ü ˆH�cÔ˜c؇I�IÐ8Ô9؇I�IÐ(Ô)ò5€Mä# K°°wÓ?€MÜ+¨K¸Ø,DØ,7¸ÀóP€Lô�c˜=¨,Ô7ܘK¨°t¸[Ø" Mó3€Gä��] GÔ,à‡I�IÐ)Ô*÷×Ñús ¬A?B4Â4B=cóx‡‡—tjj|«tjd«Šˆˆfd„}|dt ||‰««|dt ||‰««|ddg«|dtjj|d«g«tj‰«j|«y ) 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.Ú classpathcó|•—t«}|D]b}tjj|«r0|j tjj |‰««ŒR|j |«Œdt |«D]<}tj‰d«}|jd|«|jd|«Œ>y)NÚclasspathentryÚkindrT) rDrSrTrUrXÚrelpathr¥ÚETÚ SubElement)r»ÚpathsÚ rel_pathsrTÚ entry_elementÚresultrzs €€r0Ú AddElementsz*GenerateClasspathFile..AddElementsYs�ø€ô“€IÛˆÜ �‰�‰�tÔ Ø� ‰ ”b—g‘g—o‘o d¨LÓ9Õ:à� ‰ �dÕð ô �yÖ!ˆÜ—m‘m FÐ,<Ó=€mØ×ј Ô%Ø×ј Õ%ñ"r2ÚlibÚsrcÚconz'org.eclipse.jdt.launching.JRE_CONTAINERrdz.eclipse-java-buildN) r!r"r´r½ÚElementÚ GetJavaJarsÚGetJavaSourceDirsrSrTryÚ ElementTreerŸ)r[r\rzr¯r¶rÃrÂs ` @r0r­r­Qs—ù€ô ‡*�*×јXÔ&Ü �:‰:�kÓ "€&õ &ñˆe”[ ¨l¸LÓIÔJÙ ˆeÔ& {°LÀ,ÓOÔPá ˆeÐ?Ð@ÔAñˆhœŸ™Ÿ™ nÐ6KÓLÐMÔNä‡.�.�Ó×јxÕ(r2c#óœK—|D]Ã}||}|jdg«D]§}|dD]�}tjj|«ddk(sŒ)|j d«rŒ;tjj |«r|–—Œ_tjj tjj|«|«–—ŒŸŒ©ŒÅy­w)z1Generates a sequence of all .jars used as inputs.ÚactionsÚinputsr>z.jarrN)rrSrTÚsplitextrMrUryrV)r[r\rzrhriÚactionÚinput_s r0rÈrÈssžèø€ã €kØ ˜+Ñ &€FØ—*‘*˜Y¨Ö+ˆØ˜8Ô$ˆ&Ü �7‰7× Ñ ˜FÓ # AÑ &¨&Ó 0¸×9JÑ9JÈ3Õ9OÜ �W‰W�]‰]˜6Ô "Ø‹Lä—'‘'—,‘,œrŸw™wŸ™¨{Ó;¸VÓDÓ Dñ %ñ,ñ!ùs‚A C ÁC Á"A*C c #ó„K—|D�]6}||}|jdg«D�]}|dD�] }tjj|«ddk(sŒ*|j d«rŒz.javar)rÅÚjavaN) rrSrTrÎrMrVryÚbasenamerF) r[r\rzrhrirÏrÐÚdir_Ú parent_searchrs r0rÉrÉ€sèø€ä €kØ ˜+Ñ &€FØ—*‘*˜Y¨×+ˆØ˜8Õ$ˆ&Ü �G‰G× Ñ ˜VÓ $ QÑ '¨7Ó 2Ø×!Ñ! #Õ&Ü—‘—‘¤§¡§¡¬b¯g©g¯o©o¸kÓ.JØ.4ó"6ó7ˆ$ðˆ-Ü—‘× Ñ  Ó/°ÑFÜ!Ÿw™wŸ}™}¨]Ó;Ñ ˆM˜1Ù  M°\Ò$AàŠjØô —‘× Ñ  Ó/°ÒFð Ô ò%%ò,ñ!ùs‚AEÁEÁ%C EÄ2Ecóâ—|djr td«‚|jdi«jdd«}|rt|||||«y||dd}|D]}t|||||«Œy)zFGenerate an XML settings file that can be imported into a CDT project.r}z.--generator_output not implemented for eclipserrjNrr?)Úgenerator_outputÚNotImplementedErrorrr°)r[r\r|r+Ú user_configÚ config_namesr^s r0ÚGenerateOutputrÛšs…€ð ˆIÑ×'Ò'Ü ÐNÓ OÐOà— ‘ Ð,¨bÓ1×5Ñ5°hÀÓE€+ÙܘK¨°t¸VØ'õ)ð   ¨A¡Ñ/Ð0@ÑA€LÛ#ˆ ܘk¨<¸¸vØ)õ+ñ$r2)Ú__doc__Úxml.sax.saxutilsrÚos.pathrSrHr!Ú gyp.commonÚgyp.msvs_emulationrEÚxml.etree.cElementTreeÚetreeÚ cElementTreer½r5Úgenerator_default_variablesrVÚunusedr1r6rqrƒr™r£r§r°r¬r­rÈrÉrÛ©r2r0ÚrçsÄðñ õ$ÛÛÛ ÛÛÛ ß#Ð#à7<Ð4ðÐóP€Gà),¨w©Ð˜gÒ&ðPó%€Fð )+ИfÒ%ð %ððÐ5Ñ6òKò$@òVòrò08òv ò ò?òB+ò,)òD Eò ó4+r2