332 lines
9.7 KiB
CMake
332 lines
9.7 KiB
CMake
|
# ##############################################################################
|
||
|
# apps/benchmarks/coremark-pro/CMakeLists.txt
|
||
|
#
|
||
|
# Licensed to the Apache Software Foundation (ASF) under one or more contributor
|
||
|
# license agreements. See the NOTICE file distributed with this work for
|
||
|
# additional information regarding copyright ownership. The ASF licenses this
|
||
|
# file to you under the Apache License, Version 2.0 (the "License"); you may not
|
||
|
# use this file except in compliance with the License. You may obtain a copy of
|
||
|
# the License at
|
||
|
#
|
||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||
|
#
|
||
|
# Unless required by applicable law or agreed to in writing, software
|
||
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||
|
# License for the specific language governing permissions and limitations under
|
||
|
# the License.
|
||
|
#
|
||
|
# ##############################################################################
|
||
|
|
||
|
if(CONFIG_BENCHMARK_COREMARK_PRO)
|
||
|
|
||
|
set(COREMARKAPP_DIR ${CMAKE_CURRENT_LIST_DIR}/coremark-pro)
|
||
|
|
||
|
if(NOT EXISTS ${COREMARKAPP_DIR})
|
||
|
FetchContent_Declare(
|
||
|
coremark_fetch
|
||
|
URL https://github.com/eembc/coremark-pro/archive/refs/heads/main.zip
|
||
|
SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/coremark-pro BINARY_DIR
|
||
|
${CMAKE_BINARY_DIR}/apps/benchmarks/coremark/coremark-pro
|
||
|
DOWNLOAD_NO_PROGRESS true
|
||
|
TIMEOUT 30)
|
||
|
|
||
|
FetchContent_GetProperties(coremark_fetch)
|
||
|
if(NOT coremark_fetch_POPULATED)
|
||
|
FetchContent_Populate(coremark_fetch)
|
||
|
endif()
|
||
|
endif()
|
||
|
|
||
|
nuttx_add_library(coremark_pro STATIC)
|
||
|
|
||
|
set(CSRCS
|
||
|
coremark-pro/mith/src/md5.c
|
||
|
coremark-pro/mith/src/mith_lib.c
|
||
|
coremark-pro/mith/src/mith_workload.c
|
||
|
coremark-pro/mith/src/th_bignum.c
|
||
|
coremark-pro/mith/src/th_encode.c
|
||
|
coremark-pro/mith/src/th_lib.c
|
||
|
coremark-pro/mith/src/th_math.c
|
||
|
coremark-pro/mith/src/th_rand.c)
|
||
|
|
||
|
file(GLOB MITH_AL_SRCS coremark-pro/mith/al/src/*.c)
|
||
|
|
||
|
list(APPEND CSRCS ${MITH_AL_SRCS})
|
||
|
|
||
|
set(CFLAGS
|
||
|
-Wno-undef
|
||
|
-Wno-strict-prototypes
|
||
|
-Wno-unused-variable
|
||
|
-Wno-pointer-sign
|
||
|
-Wno-unused-but-set-variable
|
||
|
-Wno-shadow
|
||
|
-DNDEBUG
|
||
|
-DHOST_EXAMPLE_CODE=1
|
||
|
-DHAVE_SYS_STAT_H=1
|
||
|
-DGCC_INLINE_MACRO=1
|
||
|
-DMAX_CONTEXTS=100
|
||
|
-DEE_SIZEOF_INT=4
|
||
|
-DUSE_FP128=0)
|
||
|
|
||
|
set(INCDIR ${CMAKE_CURRENT_LIST_DIR}/coremark-pro/mith/include
|
||
|
${CMAKE_CURRENT_LIST_DIR}/coremark-pro/mith/al/include)
|
||
|
|
||
|
if(CONFIG_BENCHMARK_COREMARK_PRO_USE_SINGLE_CONTEXT)
|
||
|
list(APPEND CFLAGS -DUSE_SINGLE_CONTEXT=1 -DHAVE_PTHREAD=0
|
||
|
-DUSE_NATIVE_PTHREAD=0)
|
||
|
else()
|
||
|
list(APPEND CFLAGS -DUSE_SINGLE_CONTEXT=0 -DHAVE_PTHREAD=1
|
||
|
-DUSE_NATIVE_PTHREAD=1)
|
||
|
endif()
|
||
|
|
||
|
if(CONFIG_BENCHMARK_COREMARK_PRO_SMP)
|
||
|
list(APPEND CFLAGS -DHAVE_PTHREAD_SETAFFINITY_NP=1 -DHAVE_PTHREAD_SELF=1)
|
||
|
endif()
|
||
|
|
||
|
if(CONFIG_BENCHMARK_COREMARK_PRO_64BIT)
|
||
|
list(APPEND CFLAGS -DEE_SIZEOF_PTR=8 -DEE_PTR_ALIGN=8 -DEE_SIZEOF_LONG=8)
|
||
|
endif()
|
||
|
|
||
|
if(CONFIG_BENCHMARK_COREMARK_PRO_USE_FP64)
|
||
|
|
||
|
list(APPEND CFLAGS -DUSE_FP64=1 -DUSE_FP32=0)
|
||
|
list(APPEND CSRCS coremark-pro/benchmarks/fp/linpack/ref/inputs_f64.c)
|
||
|
|
||
|
else()
|
||
|
list(APPEND CFLAGS -DUSE_FP32=1 -DUSE_FP64=0)
|
||
|
list(APPEND CSRCS coremark-pro/benchmarks/fp/linpack/ref/inputs_f32.c)
|
||
|
endif()
|
||
|
|
||
|
if(CONFIG_BENCHMARK_COREMARK_PRO_CORE_TEST)
|
||
|
file(GLOB CORE_TEST_SRCS coremark-pro/benchmarks/core/*.c)
|
||
|
set(CORE_TEST_CSRCS coremark-pro/workloads/core/core.c ${CORE_TEST_SRCS})
|
||
|
nuttx_add_application(
|
||
|
NAME
|
||
|
core
|
||
|
PRIORITY
|
||
|
${CONFIG_BENCHMARK_COREMARK_PRO_PRIORITY}
|
||
|
STACKSIZE
|
||
|
${CONFIG_BENCHMARK_COREMARK_PRO_STACKSIZE}
|
||
|
MODULE
|
||
|
${CONFIG_BENCHMARK_COREMARK_PRO}
|
||
|
COMPILE_FLAGS
|
||
|
${CFLAGS}
|
||
|
SRCS
|
||
|
${CORE_TEST_CSRCS}
|
||
|
INCLUDE_DIRECTORIES
|
||
|
${INCDIR}
|
||
|
DEPENDS
|
||
|
coremark_pro)
|
||
|
endif()
|
||
|
|
||
|
if(CONFIG_BENCHMARK_COREMARK_PRO_CJPEG_TEST)
|
||
|
file(GLOB CJPEG_SRCS coremark-pro/benchmarks/consumer_v2/cjpeg/*.c)
|
||
|
set(CJPEG_CSRCS
|
||
|
coremark-pro/workloads/cjpeg-rose7-preset/cjpeg-rose7-preset.c
|
||
|
coremark-pro/benchmarks/consumer_v2/cjpeg/data/Rose256_bmp.c
|
||
|
${CJPEG_SRCS})
|
||
|
nuttx_add_application(
|
||
|
NAME
|
||
|
cjpeg_rose7_preset
|
||
|
PRIORITY
|
||
|
${CONFIG_BENCHMARK_COREMARK_PRO_PRIORITY}
|
||
|
STACKSIZE
|
||
|
${CONFIG_BENCHMARK_COREMARK_PRO_STACKSIZE}
|
||
|
MODULE
|
||
|
${CONFIG_BENCHMARK_COREMARK_PRO}
|
||
|
COMPILE_FLAGS
|
||
|
${CFLAGS}
|
||
|
SRCS
|
||
|
${CJPEG_CSRCS}
|
||
|
INCLUDE_DIRECTORIES
|
||
|
${INCDIR}
|
||
|
DEPENDS
|
||
|
coremark_pro)
|
||
|
endif()
|
||
|
|
||
|
if(CONFIG_BENCHMARK_COREMARK_PRO_SHA_TEST)
|
||
|
file(GLOB SHA_TEST_SRCS coremark-pro/benchmarks/darkmark/sha/*.c)
|
||
|
set(SHA_TEST_CSRCS coremark-pro/workloads/sha-test/sha-test.c
|
||
|
${SHA_TEST_SRCS})
|
||
|
nuttx_add_application(
|
||
|
NAME
|
||
|
sha_test
|
||
|
PRIORITY
|
||
|
${CONFIG_BENCHMARK_COREMARK_PRO_PRIORITY}
|
||
|
STACKSIZE
|
||
|
${CONFIG_BENCHMARK_COREMARK_PRO_STACKSIZE}
|
||
|
MODULE
|
||
|
${CONFIG_BENCHMARK_COREMARK_PRO}
|
||
|
COMPILE_FLAGS
|
||
|
${CFLAGS}
|
||
|
SRCS
|
||
|
${SHA_TEST_CSRCS}
|
||
|
INCLUDE_DIRECTORIES
|
||
|
${INCDIR}
|
||
|
DEPENDS
|
||
|
coremark_pro)
|
||
|
endif()
|
||
|
|
||
|
if(CONFIG_BENCHMARK_COREMARK_PRO_ZIP_TEST)
|
||
|
set(ZIP_TEST_CSRCS coremark-pro/workloads/zip-test/zip-test.c
|
||
|
coremark-pro/benchmarks/darkmark/zip/zip_darkmark.c)
|
||
|
set(ZIP_TEST_FLAGS ${CFLAGS} -Dgzclose_r=coremark_zip_gzclose_r
|
||
|
-Dgzclose_w=coremark_zip_gzclose_w)
|
||
|
set(ZIP_TEST_INCDIR ${INCDIR} ${NUTTX_APPS_DIR}/system/zlib/zlib)
|
||
|
nuttx_add_application(
|
||
|
NAME
|
||
|
zip_test
|
||
|
PRIORITY
|
||
|
${CONFIG_BENCHMARK_COREMARK_PRO_PRIORITY}
|
||
|
STACKSIZE
|
||
|
${CONFIG_BENCHMARK_COREMARK_PRO_STACKSIZE}
|
||
|
MODULE
|
||
|
${CONFIG_BENCHMARK_COREMARK_PRO}
|
||
|
COMPILE_FLAGS
|
||
|
${ZIP_TEST_FLAGS}
|
||
|
SRCS
|
||
|
${ZIP_TEST_CSRCS}
|
||
|
INCLUDE_DIRECTORIES
|
||
|
${ZIP_TEST_INCDIR}
|
||
|
DEPENDS
|
||
|
coremark_pro)
|
||
|
endif()
|
||
|
|
||
|
if(CONFIG_BENCHMARK_COREMARK_PRO_LINEAR_ALG_MID_TEST)
|
||
|
set(ALG_MID_CSRCS
|
||
|
coremark-pro/workloads/linear_alg-mid-100x100-sp/linear_alg-mid-100x100-sp.c
|
||
|
coremark-pro/benchmarks/fp/linpack/linpack.c)
|
||
|
nuttx_add_application(
|
||
|
NAME
|
||
|
linear_alg_mid_100x100_sp
|
||
|
PRIORITY
|
||
|
${CONFIG_BENCHMARK_COREMARK_PRO_PRIORITY}
|
||
|
STACKSIZE
|
||
|
${CONFIG_BENCHMARK_COREMARK_PRO_STACKSIZE}
|
||
|
MODULE
|
||
|
${CONFIG_BENCHMARK_COREMARK_PRO}
|
||
|
COMPILE_FLAGS
|
||
|
${CFLAGS}
|
||
|
SRCS
|
||
|
${ALG_MID_CSRCS}
|
||
|
INCLUDE_DIRECTORIES
|
||
|
${INCDIR}
|
||
|
DEPENDS
|
||
|
coremark_pro)
|
||
|
endif()
|
||
|
|
||
|
if(CONFIG_BENCHMARK_COREMARK_PRO_RADIX_TEST)
|
||
|
if(CONFIG_BENCHMARK_COREMARK_PRO_USE_FP64)
|
||
|
file(GLOB RADIX_SRCS coremark-pro/benchmarks/fp/fft_radix2/ref/*.c)
|
||
|
else()
|
||
|
file(GLOB RADIX_SRCS coremark-pro/benchmarks/fp/fft_radix2/ref-sp/*.c)
|
||
|
endif()
|
||
|
|
||
|
set(RADIX_CSRCS
|
||
|
coremark-pro/workloads/radix2-big-64k/radix2-big-64k.c
|
||
|
coremark-pro/benchmarks/fp/fft_radix2/fft_radix2.c ${RADIX_SRCS})
|
||
|
nuttx_add_application(
|
||
|
NAME
|
||
|
radix2_big_64k
|
||
|
PRIORITY
|
||
|
${CONFIG_BENCHMARK_COREMARK_PRO_PRIORITY}
|
||
|
STACKSIZE
|
||
|
${CONFIG_BENCHMARK_COREMARK_PRO_STACKSIZE}
|
||
|
MODULE
|
||
|
${CONFIG_BENCHMARK_COREMARK_PRO}
|
||
|
COMPILE_FLAGS
|
||
|
${CFLAGS}
|
||
|
SRCS
|
||
|
${RADIX_CSRCS}
|
||
|
INCLUDE_DIRECTORIES
|
||
|
${INCDIR}
|
||
|
DEPENDS
|
||
|
coremark_pro)
|
||
|
endif()
|
||
|
|
||
|
if(CONFIG_BENCHMARK_COREMARK_PRO_LOOPS_ALL_MID_TEST)
|
||
|
if(CONFIG_BENCHMARK_COREMARK_PRO_USE_FP64)
|
||
|
file(GLOB MID_SRCS coremark-pro/benchmarks/fp/loops/ref/*.c)
|
||
|
else()
|
||
|
file(GLOB MID_SRCS coremark-pro/benchmarks/fp/loops/ref-sp/*.c)
|
||
|
endif()
|
||
|
|
||
|
set(MID_CSRCS
|
||
|
coremark-pro/workloads/loops-all-mid-10k-sp/loops-all-mid-10k-sp.c
|
||
|
coremark-pro/benchmarks/fp/loops/loops.c ${MID_SRCS})
|
||
|
nuttx_add_application(
|
||
|
NAME
|
||
|
loops_all_mid_10k_sp
|
||
|
PRIORITY
|
||
|
${CONFIG_BENCHMARK_COREMARK_PRO_PRIORITY}
|
||
|
STACKSIZE
|
||
|
${CONFIG_BENCHMARK_COREMARK_PRO_STACKSIZE}
|
||
|
MODULE
|
||
|
${CONFIG_BENCHMARK_COREMARK_PRO}
|
||
|
COMPILE_FLAGS
|
||
|
${CFLAGS}
|
||
|
SRCS
|
||
|
${MID_CSRCS}
|
||
|
INCLUDE_DIRECTORIES
|
||
|
${INCDIR}
|
||
|
DEPENDS
|
||
|
coremark_pro)
|
||
|
endif()
|
||
|
|
||
|
if(CONFIG_BENCHMARK_COREMARK_PRO_NNET_TEST)
|
||
|
if(CONFIG_BENCHMARK_COREMARK_PRO_USE_FP64)
|
||
|
file(GLOB NNET_SRCS coremark-pro/benchmarks/fp/nnet/ref/*.c)
|
||
|
else()
|
||
|
file(GLOB NNET_SRCS coremark-pro/benchmarks/fp/nnet/ref-sp/*.c)
|
||
|
endif()
|
||
|
file(GLOB FP_NNET_SRCS coremark-pro/benchmarks/fp/nnet/*.c)
|
||
|
set(NNET_CSRCS coremark-pro/workloads/nnet_test/nnet_test.c ${FP_NNET_SRCS}
|
||
|
${NNET_SRCS})
|
||
|
nuttx_add_application(
|
||
|
NAME
|
||
|
nnet_test
|
||
|
PRIORITY
|
||
|
${CONFIG_BENCHMARK_COREMARK_PRO_PRIORITY}
|
||
|
STACKSIZE
|
||
|
${CONFIG_BENCHMARK_COREMARK_PRO_STACKSIZE}
|
||
|
MODULE
|
||
|
${CONFIG_BENCHMARK_COREMARK_PRO}
|
||
|
COMPILE_FLAGS
|
||
|
${CFLAGS}
|
||
|
SRCS
|
||
|
${NNET_CSRCS}
|
||
|
INCLUDE_DIRECTORIES
|
||
|
${INCDIR}
|
||
|
DEPENDS
|
||
|
coremark_pro)
|
||
|
endif()
|
||
|
|
||
|
if(CONFIG_BENCHMARK_COREMARK_PRO_PARSER_125K)
|
||
|
file(GLOB PARSER_SRCS coremark-pro/benchmarks/darkmark/parser/*.c)
|
||
|
set(PARSER_CSRCS coremark-pro/workloads/parser-125k/parser-125k.c
|
||
|
${PARSER_SRCS})
|
||
|
nuttx_add_application(
|
||
|
NAME
|
||
|
parser_125k
|
||
|
PRIORITY
|
||
|
${CONFIG_BENCHMARK_COREMARK_PRO_PRIORITY}
|
||
|
STACKSIZE
|
||
|
${CONFIG_BENCHMARK_COREMARK_PRO_STACKSIZE}
|
||
|
MODULE
|
||
|
${CONFIG_BENCHMARK_COREMARK_PRO}
|
||
|
COMPILE_FLAGS
|
||
|
${CFLAGS}
|
||
|
SRCS
|
||
|
${PARSER_CSRCS}
|
||
|
INCLUDE_DIRECTORIES
|
||
|
${INCDIR}
|
||
|
DEPENDS
|
||
|
coremark_pro)
|
||
|
endif()
|
||
|
|
||
|
target_sources(coremark_pro PRIVATE ${CSRCS})
|
||
|
target_include_directories(coremark_pro PRIVATE ${INCDIR})
|
||
|
target_compile_options(coremark_pro PRIVATE ${CFLAGS})
|
||
|
|
||
|
endif()
|