# -*- mode: makefile -*-
# -----------------------------------------------------------------
# Programmer(s): Cody J. Balos @ LLNL
# -----------------------------------------------------------------
# SUNDIALS Copyright Start
# Copyright (c) 2002-2024, Lawrence Livermore National Security
# and Southern Methodist University.
# All rights reserved.
#
# See the top-level LICENSE and NOTICE files for details.
#
# SPDX-License-Identifier: BSD-3-Clause
# SUNDIALS Copyright End
# -----------------------------------------------------------------
# Makefile for KINSOL Fortran 2003 interface serial examples
#
# This file is generated from a template using variables
# set at configuration time. It can be used as a template for
# other user Makefiles.
# -----------------------------------------------------------------

SHELL = sh

prefix     = /usr
includedir = ${prefix}/fortran
libdir     = ${prefix}/lib/riscv64-linux-gnu

F90      = /usr/bin/mpif90
F90FLAGS = -O3 -DSUNDIALS_INT32_T -cpp
F90LIBS  =  -lm

# ------------------------------------------------------------------------------

INCLUDES  = -I${includedir}
LIBRARIES = -lsundials_fkinsol_mod -lsundials_kinsol ${F90LIBS}
LINKFLAGS = -Wl,-rpath,/usr/lib/riscv64-linux-gnu

INCLUDES_KLU  = ${INCLUDES} -I/usr/include/suitesparse
LIBRARIES_KLU = ${LIBRARIES} \
                -lsundials_sunmatrixsparse -lsundials_fsunmatrixsparse_mod \
                -lsundials_sunlinsolklu -lsundials_fsunlinsolklu_mod -lsundials_fcore_mod -lsundials_core \
                  /usr/lib/riscv64-linux-gnu/libklu.so /usr/lib/riscv64-linux-gnu/libamd.so /usr/lib/riscv64-linux-gnu/libcolamd.so /usr/lib/riscv64-linux-gnu/libbtf.so /usr/lib/riscv64-linux-gnu/libsuitesparseconfig.so
LINKFLAGS_KLU = ${LINKFLAGS}:/usr/lib/riscv64-linux-gnu

# ------------------------------------------------------------------------------

EXAMPLES =  kinDiagon_kry_f2003
EXAMPLES_DEPENDENCIES = 

OBJECTS = ${EXAMPLES:=.o}
OBJECTS_DEPENDENCIES = ${EXAMPLES_DEPENDENCIES:=.o}

# KLU Examples
EXAMPLES_KLU = 
OBJECTS_KLU  = ${EXAMPLES_KLU:=.o}

# ------------------------------------------------------------------------------

.SUFFIXES : .o .f90

.f90.o :
	${F90} ${F90FLAGS} ${INCLUDES} -c $<

# ------------------------------------------------------------------------------

all: examples examples_klu

examples: ${OBJECTS_DEPENDENCIES} ${OBJECTS}
	@for i in ${EXAMPLES} ; do \
	  echo "${F90} -o $${i} $${i}.o ${OBJECTS_DEPENDENCIES} ${F90FLAGS} ${INCLUDES} -L${libdir} ${LIBRARIES} ${LINKFLAGS}" ; \
	  ${F90} -o $${i} $${i}.o ${OBJECTS_DEPENDENCIES} ${F90FLAGS} ${INCLUDES} -L${libdir} ${LIBRARIES} ${LINKFLAGS} ; \
	done

examples_klu: ${OBJECTS_KLU}
	@for i in ${EXAMPLES_KLU} ; do \
	  echo "${F90} -o $${i} $${i}.o ${F90FLAGS} ${INCLUDES_KLU} -L${libdir} ${LIBRARIES_KLU} ${LINKFLAGS_KLU}" ; \
	  ${F90} -o $${i} $${i}.o ${F90FLAGS} ${INCLUDES_KLU} -L${libdir} ${LIBRARIES_KLU} ${LINKFLAGS_KLU} ; \
	done

clean:
	rm -f *.o *.mod
	rm -f ${OBJECTS} ${OBJECTS_KLU}
	rm -f ${EXAMPLES} ${EXAMPLES_KLU}

# ------------------------------------------------------------------------------
