# ############################################################################## # apps/system/zlib/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_LIB_ZLIB) # ############################################################################ # Config and Fetch zlib lib # ############################################################################ set(ZLIB_DIR ${CMAKE_CURRENT_LIST_DIR}/zlib) if(NOT EXISTS ${ZLIB_DIR}) set(ZLIB_URL https://github.com/madler/zlib/releases/download/v1.3/zlib13.zip) FetchContent_Declare( zlib_fetch URL ${ZLIB_URL} SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/zlib BINARY_DIR ${CMAKE_BINARY_DIR}/apps/system/zlib/zlib DOWNLOAD_NO_PROGRESS true TIMEOUT 30) FetchContent_GetProperties(zlib_fetch) if(NOT zlib_fetch_POPULATED) FetchContent_Populate(zlib_fetch) endif() endif() # ############################################################################ # Flags # ############################################################################ set(CFLAGS -Dunix -Wno-shadow -Wno-strict-prototypes -Wno-undef) if(NOT CONFIG_FS_LARGEFILE) list(APPEND CFLAGS -DIOAPI_NO_64 -DMINIZIP_FOPEN_NO_64) endif() # ############################################################################ # Sources # ############################################################################ file(GLOB ZLIB_CSRCS ${ZLIB_DIR}/*.c) set(CSRCS ${ZLIB_DIR}/contrib/minizip/ioapi.c ${ZLIB_DIR}/contrib/minizip/mztools.c ${ZLIB_DIR}/contrib/minizip/unzip.c ${ZLIB_DIR}/contrib/minizip/zip.c ${ZLIB_CSRCS}) # ############################################################################ # Include Directory # ############################################################################ set(INCDIR ${CMAKE_CURRENT_LIST_DIR}/zlib) # ############################################################################ # Library Configuration # ############################################################################ nuttx_add_library(zlib STATIC) target_sources(zlib PRIVATE ${CSRCS}) target_include_directories(zlib PRIVATE ${INCDIR}) target_compile_options(zlib PRIVATE ${CFLAGS}) # ############################################################################ # Applications Configuration # ############################################################################ if(CONFIG_UTILS_GZIP) nuttx_add_application( MODULE ${CONFIG_LIB_ZLIB} NAME ${CONFIG_UTILS_GZIP_PROGNAME} STACKSIZE ${CONFIG_UTILS_GZIP_STACKSIZE} PRIORITY ${CONFIG_UTILS_GZIP_PRIORITY} SRCS ${ZLIB_DIR}/test/minigzip.c INCLUDE_DIRECTORIES ${INCDIR} COMPILE_FLAGS ${CFLAGS} DEPENDS zlib) endif() if(CONFIG_UTILS_ZIP) nuttx_add_application( MODULE ${CONFIG_LIB_ZLIB} NAME ${CONFIG_UTILS_ZIP_PROGNAME} STACKSIZE ${CONFIG_UTILS_ZIP_STACKSIZE} PRIORITY ${CONFIG_UTILS_ZIP_PRIORITY} SRCS ${ZLIB_DIR}/contrib/minizip/minizip.c INCLUDE_DIRECTORIES ${INCDIR} COMPILE_FLAGS ${CFLAGS} DEPENDS zlib) endif() if(CONFIG_UTILS_UNZIP) nuttx_add_application( MODULE ${CONFIG_LIB_ZLIB} NAME ${CONFIG_UTILS_UNZIP_PROGNAME} STACKSIZE ${CONFIG_UTILS_UNZIP_STACKSIZE} PRIORITY ${CONFIG_UTILS_UNZIP_PRIORITY} SRCS ${ZLIB_DIR}/contrib/minizip/miniunz.c INCLUDE_DIRECTORIES ${INCDIR} COMPILE_FLAGS ${CFLAGS} DEPENDS zlib) endif() if(CONFIG_LIB_ZLIB_TEST) nuttx_add_application( MODULE ${CONFIG_LIB_ZLIB} NAME zlib_infcover_test STACKSIZE ${CONFIG_LIB_ZLIB_TEST_STACKSIZE} PRIORITY ${CONFIG_LIB_ZLIB_TEST_PRIORITY} SRCS ${ZLIB_DIR}/test/infcover.c INCLUDE_DIRECTORIES ${INCDIR} COMPILE_FLAGS ${CFLAGS} DEPENDS zlib) endif() endif()