3
2f                 @   s   d dl Z d dlZd dlZd dlZd dlZd dlT d dlmZ d dlm	Z	m
Z
mZmZ d dlmZ d dlmZ ejje jje d dlmZ ejeZdd	 Zd
d Zdd Zedkreeje dS )    N)*)utils)expectrun_bld_cmd_ensure_loggingrun_cmd_no_failrun_cmd)Case)get_standard_makefile_args)extract_from_macrosc             C   s|   t jdjtjj| d |t jd}tj| |j	ddd |j	ddd |j	d	d
tj
 dd tj| |} | j| j| jfS )Nza
{0} [--debug]
OR
{0} --verbose
OR
{0} --help

[1mEXAMPLES:[0m
    [1;32m# Run [0m
    > {0}
r   )usagedescriptionformatter_class	buildrootzbuild path root)helpinstallpathzinstall path caseroot?zCase directory to build)nargsdefaultr   )argparseArgumentParserformatospathbasenameArgumentDefaultsHelpFormatterr   setup_standard_logging_optionsadd_argumentgetcwd.parse_args_and_handle_standard_logging_optionsr   r   r   )argsr   parser r"   X/global/cfs/cdirs/e3sm/www/Tutorials/2024/E3SM_repo/20240504/share/build/buildlib.kokkosparse_command_line   s    


r$   c             C   s   t jjd}|d k	rt jj|}t jj|d}tt jj|d| d tt jj|d| d tt jjt jj|dd| d d S t	d |j
d	}t jj|d
d}tt jj|d t jj|dd}tt jj|d t|dd$d}	|	d |	d%  }
}|jdd& j }d|krrd|kr4t jj|d}
d|
krJdj|
}
n(tj|
}t|d k	dj|
 dj|}
|j
d}|j
d}d| d|
 d| d| }|  d } t jj| st j|  t|t| d! td"j||t| d! td#j|t| d! d S )'NZKokkos_ROOTincludez!Non-existent kokkos install dir ''z1Missing include subfolder in kokkos install dir 'zKokkos_Core.hppzMissing kokkos headers in 'z<no value foudn in env for Kokkos_ROOT. building from scratchSRCROOT	externalsZekatzMissing ekat submoduleZexternkokkosz Missing kokkos submodule in EKATKOKKOS_OPTIONS)
extra_vars      z:=ZDCMAKE_CXX_COMPILERZKokkos_ENABLE_CUDAzbin/nvcc_wrapper/z-DCMAKE_CXX_COMPILER={}z{} is not in PATH?GMAKEGMAKE_Jzcmake  z0 -DCMAKE_CXX_STANDARD=17 -DCMAKE_INSTALL_PREFIX=z/build)from_dirz{} VERBOSE=1 -j {}z
{} install)r*   r3   )r   environgetr   abspathjoinr   isdirisfileprint	get_valuer
   splitstripr   shutilwhichmakedirsr   logger)bldrootr   caseZinstalled_kokkos_dirZkokkos_rootinclude_dirsrcrootZekat_dirZ
kokkos_dirZ
macro_valscxxZkokkos_options_rawZkokkos_optionsZcxx_path	gmake_cmdgmake_jZgen_makefile_cmdr"   r"   r#   buildlib3   sF    $







	

rI   c             C   s8   t | |\}}}t|dd}t||| W d Q R X d S )NF)	read_only)r$   r   rI   )argvdocumentationrB   r   r   rC   r"   r"   r#   _mainz   s    rM   __main__)r   sysr   loggingr>   standard_script_setupCIMEr   
CIME.utilsr   r   r   r   	CIME.caser   
CIME.buildr	   r   appenddirname__file__buildlib_utilr
   	getLogger__name__rA   r$   rI   rM   rK   __doc__r"   r"   r"   r#   <module>   s   (
"G