#!/bin/sh
# Copyright 1998-2019 Lawrence Livermore National Security, LLC and other
# HYPRE Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)

INTERNAL_HEADER=_hypre_struct_mv.h

#===========================================================================
# Include guards and other includes
#===========================================================================

cat > $INTERNAL_HEADER <<@

/*** DO NOT EDIT THIS FILE DIRECTLY (use 'headers' to generate) ***/


#ifndef hypre_STRUCT_MV_HEADER
#define hypre_STRUCT_MV_HEADER

#include <stdlib.h>
#include <stdio.h>
#include <math.h>

#include "HYPRE_struct_mv.h"
#include "_hypre_utilities.h"

@

cat >> $INTERNAL_HEADER <<@
#ifdef __cplusplus
extern "C" {
#endif
@

#===========================================================================
# Structures and prototypes
#===========================================================================

cat box.h                  >> $INTERNAL_HEADER
cat assumed_part.h         >> $INTERNAL_HEADER
cat box_manager.h          >> $INTERNAL_HEADER
cat struct_grid.h          >> $INTERNAL_HEADER
cat struct_stencil.h       >> $INTERNAL_HEADER
cat struct_communication.h >> $INTERNAL_HEADER
cat computation.h          >> $INTERNAL_HEADER
cat struct_matrix.h        >> $INTERNAL_HEADER
cat struct_vector.h        >> $INTERNAL_HEADER
cat protos.h               >> $INTERNAL_HEADER

#===========================================================================
# BoxLoops
#===========================================================================

cat >> $INTERNAL_HEADER <<@

#if defined(HYPRE_USING_DEVICE_OPENMP)
@

cat boxloop_omp_device.h          >> $INTERNAL_HEADER

cat >> $INTERNAL_HEADER <<@

#elif !defined(HYPRE_USING_RAJA) && !defined(HYPRE_USING_KOKKOS) && !defined(HYPRE_USING_CUDA) && !defined(HYPRE_USING_HIP)
@

cat boxloop_host.h                >> $INTERNAL_HEADER

cat >> $INTERNAL_HEADER <<@

#endif
@

#===========================================================================
# Include guards
#===========================================================================

cat >> $INTERNAL_HEADER <<@

#ifdef __cplusplus
}
#endif

#endif

@


INTERNAL_HEADER=_hypre_struct_mv.hpp

#===========================================================================
# Include guards and other includes
#===========================================================================

cat > $INTERNAL_HEADER <<@

/*** DO NOT EDIT THIS FILE DIRECTLY (use 'headers' to generate) ***/


#ifndef hypre_STRUCT_MV_HPP
#define hypre_STRUCT_MV_HPP

#include "_hypre_utilities.hpp"

@

cat >> $INTERNAL_HEADER <<@
#ifdef __cplusplus
extern "C++" {
#endif
@

#===========================================================================
# BoxLoops
#===========================================================================

cat >> $INTERNAL_HEADER <<@

#if defined(HYPRE_USING_RAJA)
@

cat boxloop_raja.h                >> $INTERNAL_HEADER

cat >> $INTERNAL_HEADER <<@

#elif defined(HYPRE_USING_KOKKOS)
@

cat boxloop_kokkos.h              >> $INTERNAL_HEADER

cat >> $INTERNAL_HEADER <<@

#elif defined(HYPRE_USING_CUDA) || defined(HYPRE_USING_HIP)
@

cat boxloop_cuda.h                >> $INTERNAL_HEADER

cat >> $INTERNAL_HEADER <<@

#endif
@

#===========================================================================
# Include guards
#===========================================================================

cat >> $INTERNAL_HEADER <<@

#ifdef __cplusplus
}
#endif

#endif

@

