# ############################################################################## # 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()