o
    e[
                     @  s   d dl mZ d dlZd dlZd dlZd dlZd dlZddlm	Z	 ddl
mZ ddlmZ dddZdddZdddZedkrMeeejdd  dS dS )    )annotationsN   )CoreData)	RegenInfo)	OptionKey	regeninfor   regen_timestampfloatreturnboolc                 C  sZ   | j D ]}tj| j|}t|j}||kr dS qtd ddlm	} |
| j dS )NTzDEverything is up-to-date, regeneration of build files is not needed.r   )Vs2010BackendF)Zdepfilesospathjoin	build_dirstatst_mtimeprintZbackend.vs2010backendr   Ztouch_regen_timestamp)r   r   iZcurfileZcurtimer    r   E/usr/lib/python3.10/site-packages/mesonbuild/scripts/regen_checker.py
need_regen   s   
r   meson_commandT.List[str]backendstrNonec                 C  s(   |dd| j | jd| g }t| d S )Nz
--internalZ
regeneratez
--backend=)r   
source_dir
subprocess
check_call)r   r   r   cmdr   r   r   regen'   s   r!   argsintc           	      C  s   | d }t j|d}t j|d}t|d}t|}t|ts$J W d    n1 s.w   Y  t|d}t|}t|tsEJ W d    n1 sOw   Y  |	t
d}t|tsbJ t |j}t||rtt||j| dS )Nr   zregeninfo.dumpzcoredata.datrbr   )r   r   r   openpickleload
isinstancer   r   Z
get_optionr   r   r   r   r   r!   r   )	r"   Zprivate_dirZdumpfileZcoredata_filefr   coredatar   r   r   r   r   run/   s"   


r+   __main__   )r   r   r   r	   r
   r   )r   r   r   r   r   r   r
   r   )r"   r   r
   r#   )
__future__r   sysr   r&   r   typingTr*   r   Zbackend.backendsr   Zmesonlibr   r   r!   r+   __name__exitargvr   r   r   r   <module>   s   


