#   Copyright (c) 2018 The Regents of the University of California,
#   through Lawrence Berkeley National Laboratory.  
#
#   Author: David Williams-Young
#   
#   This file is part of PEXSI. All rights reserved.
#   
#   Redistribution and use in source and binary forms, with or without
#   modification, are permitted provided that the following conditions are met:
#   
#   (1) Redistributions of source code must retain the above copyright notice, this
#   list of conditions and the following disclaimer.
#   (2) Redistributions in binary form must reproduce the above copyright notice,
#   this list of conditions and the following disclaimer in the documentation
#   and/or other materials provided with the distribution.
#   (3) Neither the name of the University of California, Lawrence Berkeley
#   National Laboratory, U.S. Dept. of Energy nor the names of its contributors may
#   be used to endorse or promote products derived from this software without
#   specific prior written permission.
#   
#   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
#   ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
#   WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
#   DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
#   ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
#   (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
#   LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
#   ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
#   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
#   SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#   
#   You are under no obligation whatsoever to provide any bug fixes, patches, or
#   upgrades to the features, functionality or performance of the source code
#   ("Enhancements") to anyone; however, if you choose to make your Enhancements
#   available either publicly, or directly to Lawrence Berkeley National
#   Laboratory, without imposing a separate written license agreement for such
#   Enhancements, then you hereby grant the following license: a non-exclusive,
#   royalty-free perpetual license to install, use, modify, prepare derivative
#   works, incorporate into other computer software, distribute, and sublicense
#   such enhancements or derivative works thereof, in binary and source code form.
#

macro( add_pexsi_example_exe _name _ext)

  add_executable( ${_name} ${_name}${_ext} )
  target_link_libraries(  ${_name} PRIVATE pexsi )
  target_compile_options( ${_name} PRIVATE "-Wno-write-strings"  )

  if( NOT ${_ext} MATCHES ".cpp" )
    target_compile_options( ${_name} PRIVATE "-Wno-discarded-qualifiers"  )
  endif()

endmacro()


# Example test cases

# C Examples
add_pexsi_example_exe( driver_ksdft                 .c )
add_pexsi_example_exe( driver2_ksdft                .c )
add_pexsi_example_exe( driver_pselinv_real          .c )
add_pexsi_example_exe( driver_pselinv_complex       .c )
add_pexsi_example_exe( driver_pselinv_real_unsym    .c )
add_pexsi_example_exe( driver_pselinv_complex_unsym .c )

# CXX Examples
add_pexsi_example_exe( run_fermi         .cpp )
add_pexsi_example_exe( run_fermi_complex .cpp )
#add_pexsi_example_exe( run_ksdft         .cpp )
#add_pexsi_example_exe( run_inertia       .cpp )
add_pexsi_example_exe( run_pselinv       .cpp )
add_pexsi_example_exe( run_pselinv_unsym .cpp )

file( 
  COPY
    big.unsym.matrix
    lap2dc.matrix
    lap2dc_real.matrix
    lap2dc_imag.matrix
    lap2di.matrix
    lap2dr.matrix
  DESTINATION
    ${PROJECT_BINARY_DIR}/examples
)
