
    h|                        d dl Z d dlZd dlZd dlZd dlmZ  ej         ej                                                              Z	 ej        e
          j                                        Ze                    d                                                              e                                          Ze                    d                                                              e                                          Z ej        e           d dlmZ d dlmZ d dlZd dlZd dlmZ e G d d	                      Zd
edefdZd Z e             dS )    N)	dataclasslibbin)compile_urcl_to_executable)Elf32)	Tracebackc                   V    e Zd ZU eed<   eed<   ej        ed<   ej        ed<   eed<   dS )CommandLineArgumentssource_fileoutput_fileexecutable_formatmachine_typeis_mainN)	__name__
__module____qualname__str__annotations__targetExecutableFormatIsabool     2/home/seanl/mnt/public/Repos/urclelf/./__main__.pyr
   r
      sN         ....*MMMMMr   r
   source_pathoptionsc                 V   t          | d          5 }t          |                                t          j        t          j        |j        t          j        j        t          j	        j
                  t          j        j        |j        |j                            }t          |t                     r|}nt#          |           t%                       t          |j        d          5 }|                    |           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )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_compiler3      s}   	k3		 '4,IIKK!}W%96;K;RTZT`Teff & 5 <")";	  
 
 gu%% 	$NN'NNNFFF'%u-- 	'JJ~&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 's6   CD$D:DD
	
DD
	DD"%D"c                     t          j        d          } |                     d           |                     dd           |                     ddd	d
           |                     dddd           |                     dddd           |                     t          j        dd                    }|j        |j                            d          d                             d          d         dz   }t          
                    |                                                              t                                                    }t          |          |_        |j                                        dk    rt           j        j        }n|j                                        dv rt           j        j        }ng|j                                        dk    rt           j        j        }n8t+          d|j                                         d           t-                       |j                                        dk    rt           j        j        }ng|j                                        d k    rt           j        j        }n8t+          d!|j                                         d           t-                       t9          |j        |j        ||j         |"          }t=          |j        |           d S )#Nz&Compiles URCL code to x86 executables.)descriptionr   z-or   )destz-fr   elfzoutput file format)r6   defaulthelpz-libr   
store_truez.pass this if this file is not the entry point.)r6   actionr9   z-mmachinei386z%instruction set of the target machine   /.r   z.or   )r7   Ncoffz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ELFCOFFr-   r.   r<   r   X86X64exec_file_typer
   r   r3   )argument_parserkfilenameoutput_pathr   r<   s         r   mainrZ   /   s   -:bcccO  ///  M :::  ,?Ui jjj  eLO   A  A  A  IvLs ttt""38ABB<00A}=&&s++B/55c::1=D&&x0088::FFwOOWWYYK((  ""e++"38	
		"	"	$	$	5	5"37	
		"	"	$	$	.	."38R)<)B)B)D)DRRRSSSyF""*.	
		e	#	#*.Eq/5577EEEFFFMM+E		 	 	A *****r   )rD   rH   ospathlibdataclassesr   PathgetcwdrM   OLD_CWD__file__parentCURRENT_DIRrL   rN   LIB_DIRrK   chdircompiler   r7   r   r   x86errorr   r
   r   r3   rZ   r   r   r   <module>ri      s    



 				  ! ! ! ! ! !
',yry{{
#
#
+
+
-
-gl8$$+3355


u
%
%
-
-
/
/
;
;K
H
H
P
P
R
R


u
%
%
-
-
/
/
;
;K
H
H
P
P
R
R     . . . . . .        



      
       'c '4H ' ' ' '(%+ %+ %+N r   