
    |h                     n   S SK r S SKrS SKrS SKrS SKJr  \R                  " \R                  " 5       5      R                  5       r	\R                  " \
5      R                  R                  5       r\R                  S5      R                  5       R                  \5      R                  5       r\R                  S5      R                  5       R                  \5      R                  5       r\R"                  " \5        S SKJr  S SKJr  S SKrS SKrS SKJr  \ " S S	5      5       rS
\S\4S jrS r\" 5         g)    N)	dataclasslibbin)compile_urcl_to_executable)Elf32)	Tracebackc                   p    \ rS rSr% \\S'   \\S'   \R                  \S'   \R                  \S'   \	\S'   Sr
g)	CommandLineArguments   source_fileoutput_fileexecutable_formatmachine_typeis_main N)__name__
__module____qualname____firstlineno__str__annotations__targetExecutableFormatIsabool__static_attributes__r       '/mnt/public/Repos/urclelf/./__main__.pyr
   r
      s)    ...**Mr   r
   source_pathoptionsc                    [        U S5       n[        UR                  5       [        R                  " [        R
                  " UR                  [        R                  R                  [        R                  R                  5      [        R                  R                  UR                  UR                  S95      n[        U[         5      (       a  UnO[#        U5        [%        5         [        UR&                  S5       nUR)                  W5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr)r   executable_typer   r   zw+b)openr   readr   CompileOptionsTargetr   	ByteOrderLITTLEOsAbiSYSVExecutableTypeOBJECTr   r   
isinstancebytesprintexitr   write)r   r    fileprogrambytes_for_files        r   command_line_compiler6      s    	k3	4,IIK!!}}W%9%96;K;K;R;RTZT`T`TeTef & 5 5 < <")";";	
 gu%%$N'NF'%%u-JJ~& . 
 	 .- 
 	s$   C/D0<DD0
D-	)D00
D>c                  ^   [         R                  " SS9n U R                  S5        U R                  SSS9  U R                  SSS	S
S9  U R                  SSSSS9  U R                  SSSSS9  U R                  [        R
                  SS  5      nUR                  c  UR                  R                  S5      S   R                  S5      S   S-   n[        R                  U5      R                  5       R                  [        5      R                  5       n[        U5      Ul        UR                  R                  5       S:X  a  [         R"                  R$                  nOjUR                  R                  5       S;   a  [         R"                  R&                  nO1[)        SUR                  R                  5        S35        [+        5         UR,                  R                  5       S:X  a  [         R.                  R0                  nOjUR,                  R                  5       S:X  a  [         R.                  R2                  nO1[)        S UR4                  R                  5        S35        [+        5         [7        UR                  UR                  WUR8                  (       + WS!9n[;        UR                  U5        g )"Nz&Compiles URCL code to x86 executables.)descriptionr   z-or   )destz-fr   elfzoutput file format)r9   defaulthelpz-libr   
store_truez.pass this if this file is not the entry point.)r9   actionr<   z-mmachinei386z%instruction set of the target machine   /.r   z.or   )r:   NzExecutable file format 'z' not known.x64zMachine type ')r   r   r   r   r   )argparseArgumentParseradd_argument
parse_argssysargvr   r   splitBIN_DIRjoinpathresolverelative_tor   r   lowerr   r   FLATELFr0   r1   r?   r   X86X64exec_file_typer
   r   r6   )argument_parserkfilenameoutput_pathr   r?   s         r   mainr[   /   s!   --:bcO  /  M :  ,?Ui j  eLO   A  IvLs t""388AB<0A}}==&&s+B/55c:1=D&&x088:FFwOWWYK(  "e+"3388	
			"	"	$	5"3377()<)<)B)B)D(E\RSyyF"**..	
	e	#**..q//5578EFMMMM+EE		A *r   )rF   rJ   ospathlibdataclassesr   PathgetcwdrO   OLD_CWD__file__parentCURRENT_DIRrN   rP   LIB_DIRrM   chdircompiler   r:   r   r   x86errorr   r
   r   r6   r[   r   r   r   <module>rj      s     
 	  !
,,ryy{
#
+
+
-ll8$++335


u
%
-
-
/
;
;K
H
P
P
R


u
%
-
-
/
;
;K
H
P
P
R   .   
 
  'c '4H '(#+J r   