# Copyright lowRISC contributors.
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0

vendor_coremark_base_files = files([
  'eembc_coremark/core_list_join.c',
  'eembc_coremark/core_main.c',
  'eembc_coremark/core_matrix.c',
  'eembc_coremark/core_state.c',
  'eembc_coremark/core_util.c',
])
