a
    a                     @   s   d Z ddlZddlmZ ddlZddlmZ dd Zdd Zd	d
 ZdddZ	dddZ
edkrddlmZ ef i e
dd  dS )zf
setup.py for HiGHS scipy interface

Some CMake files are used to create source lists for compilation
    N)datetime)joinc                 C   s.   ddl m} || j}|d ur*|j| d S )Nr   )get_cxx_std_flag)"scipy._build_utils.compiler_helperr   Z_cxx_compilerextra_compile_argsappend)	build_extextr   Zstd_flag r
   k/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-packages/scipy/optimize/_highs/setup.pypre_build_hook   s    
r   c                 C   s@   ddl m} || j}|d ur<d|vr.g |d< |d | d S )Nr   )get_c_std_flagZextra_compiler_args)r   r   compilerr   )
build_clibZ
build_infor   Zc_flagr
   r
   r   basiclu_pre_build_hook   s    
r   c                 C   s   t tj|  } t| dddl}| }||t| }||d  |t|d |  }||| d}dd |D }W d    n1 s0    Y  dd |D }|S )Nrutf-8encoding
c                 S   s    g | ]}|d  dkr|  qS )r   #)strip.0sr
   r
   r   
<listcomp>%       z _get_sources.<locals>.<listcomp>c                 S   s   g | ]}t td | qS )zsrc/)strpathlibPathr   r
   r
   r   r   (   r   )	r   r   __file__parentopenreadfindlensplit)
CMakeListsstart_token	end_tokenfr   	start_idxend_idxsourcesr
   r
   r   _get_sources   s    ",r.   )c                 C   s   t tj|  } t| dddP}| }||t| d }||d  |t|d |  }W d    n1 st0    Y  |||  S )Nr   r   r      )	r   r   r    r!   r"   r#   r$   r%   r   )r'   r(   r)   r*   r   r+   r,   r
   r
   r   _get_version,   s    @r1    c                 C   s  ddl m} |d| |}tddd}|d\}}tdd}d	}tttj	 }	t
 d
}
ddddd| fdd|
 d fd|fd|fd|fdd|	 d fg	}g d}tddd}|jd|dtddddgd|td tddd}tdd d}d!d" |D }|jd#td$dd%g| | dtd$dtdd&tdd'tddd(dtddd(dtddddgd)dg||d*}t|_|jd+td$dd,gdtd$dtdd'tdd&tdd-gd)d.}t|_|tjd$dd/ |S )0Nr   )ConfigurationZ_highszCMakeLists.txtzproject(HIGHS VERSIONzLANGUAGES CXX C.HIGHS_VERSION_PATCHzn/az%Y-%m-%d)ZCMAKE_BUILD_TYPEz	"Release")ZHiGHSRELEASEN)ZIPX_ONONZHIGHS_GITHASHz"%s"ZHIGHS_COMPILATION_DATE"HIGHS_VERSION_MAJORHIGHS_VERSION_MINOR	HIGHS_DIR)ZOPENMPZEXT_PRESOLVEZSCIP_DEVZHiGHSDEVZ	OSI_FOUNDzsrc/CMakeLists.txtzset(basiclu_sources
r/   ZbasiclusrcZipmincludec)r-   include_dirslanguagemacros_pre_build_hookzset(ipx_sources
zset(sources
c                 S   s"   g | ]}t |jjd kr|qS )Zmip)r   r   r!   namer   r
   r
   r   r   o   s   z!configuration.<locals>.<listcomp>Z_highs_wrapperZcythonz_highs_wrapper.cxxZlp_dataioZipxzc++)r-   r>   r?   	librariesdefine_macrosundef_macrosZ_highs_constantsz_highs_constants.cxxZsimplex)r-   r>   r?   z*.pxd)Znumpy.distutils.misc_utilr3   r1   r&   r   r   r   r    r!   resolver   todaystrftimer.   Zadd_libraryr   r   add_extensionr   rA   Zadd_data_filesospath)parent_packagetop_pathr3   configZ_major_dot_minorr8   r9   r5   ZGITHASHr:   Z
TODAY_DATEZDEFINE_MACROSZUNDEF_MACROSZbasiclu_sourcesZipx_sourcesZhighs_sourcesr	   r
   r
   r   configuration5   s    

rP   __main__)setup)rN   )r/   )r2   N)__doc__r   r   rK   os.pathr   r   r   r.   r1   rP   __name__Znumpy.distutils.corerR   Ztodictr
   r
   r
   r   <module>   s   
	
h