diff --git a/benchmarks/iozone/CMakeLists.txt b/benchmarks/iozone/CMakeLists.txt new file mode 100644 index 000000000..843fa53ac --- /dev/null +++ b/benchmarks/iozone/CMakeLists.txt @@ -0,0 +1,87 @@ +# ############################################################################## +# apps/benchmarks/iozone/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_IOZONE) + + # Define the directory and file paths + set(IOZONE_VERSION "${CONFIG_BENCHMARK_IOZONE_VERSION}") # Adjust this as + # needed + set(IOZONE_DIR ${CMAKE_CURRENT_LIST_DIR}/iozone) + set(IOZONE_ZIP ${IOZONE_DIR}.tgz) + set(IOZONE_URL + "https://www.iozone.org/src/current/iozone${IOZONE_VERSION}.tgz") + + # Download and unpack iozone if not already present + if(NOT EXISTS ${IOZONE_DIR}) + FetchContent_Declare( + iozone_fetch + URL ${IOZONE_URL} SOURCE_DIR ${IOZONE_DIR} + DOWNLOAD_NO_PROGRESS true + TIMEOUT 30 + PATCH_COMMAND patch -p1 -d ${IOZONE_DIR} < + ${CMAKE_CURRENT_LIST_DIR}/iozone.patch) + + FetchContent_GetProperties(iozone_fetch) + if(NOT iozone_fetch_POPULATED) + FetchContent_Populate(iozone_fetch) + endif() + endif() + + # Define source files + set(CSRCS ${IOZONE_DIR}/src/current/libbif.c) + set(MAINSRC ${IOZONE_DIR}/src/current/iozone.c) + + # Define compile flags + set(CFLAGS + -Dunix + -DHAVE_ANSIC_C + -DHAVE_PREAD + -DNAME=\"nuttx\" + -DNO_MADVISE + -DNO_FORK + -D__FreeBSD__ + -DNO_THREADS + -Wno-unused-parameter + -Wno-unused-function + -Wno-shadow + -Wno-unused-but-set-variable + -Wno-strict-prototypes + -Wno-misleading-indentation + -Wno-maybe-uninitialized + -DMAXBUFFERSIZE=32*1024 + -DMAXSTREAMS=8 + -DMAXNAMESIZE=NAME_MAX + -DRECLEN_START=1024) + + # Add application to the build + set(SRCS ${IOZONE_DIR}/src/current/iozone.c ${CSRCS}) + nuttx_add_application( + NAME + iozone + PRIORITY + ${CONFIG_BENCHMARK_IOZONE_PRIORITY} + STACKSIZE + ${CONFIG_BENCHMARK_IOZONE_STACKSIZE} + COMPILE_FLAGS + ${CFLAGS} + SRCS + ${SRCS}) + +endif()