From a48810f4a58efdae1cc0bb1981825721fdd93d9a Mon Sep 17 00:00:00 2001 From: anjiahao Date: Mon, 25 Sep 2023 15:58:02 +0800 Subject: [PATCH] zlib:add support for zlib We can use zip & unzip commands in nuttx Signed-off-by: anjiahao --- system/zlib/.gitignore | 2 + system/zlib/Kconfig | 90 ++++++++++++++++++++++++++++++++++++++++++ system/zlib/Make.defs | 24 +++++++++++ system/zlib/Makefile | 87 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 203 insertions(+) create mode 100644 system/zlib/.gitignore create mode 100644 system/zlib/Kconfig create mode 100644 system/zlib/Make.defs create mode 100644 system/zlib/Makefile diff --git a/system/zlib/.gitignore b/system/zlib/.gitignore new file mode 100644 index 000000000..7630f0b5d --- /dev/null +++ b/system/zlib/.gitignore @@ -0,0 +1,2 @@ +*.zip +zlib/ diff --git a/system/zlib/Kconfig b/system/zlib/Kconfig new file mode 100644 index 000000000..8fcc90f6e --- /dev/null +++ b/system/zlib/Kconfig @@ -0,0 +1,90 @@ +# +# For a description of the syntax of this configuration file, +# see the file kconfig-language.txt in the NuttX tools repository. +# + +config LIB_ZLIB + tristate "zlib data compression library" + default n + +if LIB_ZLIB + +config LIB_ZLIB_TEST + tristate "zlib test" + default n + help + Enable the test for zlib. + +if LIB_ZLIB_TEST + +config LIB_ZLIB_TEST_PRIORITY + int "Zlib test priority" + default 100 + +config LIB_ZLIB_TEST_STACKSIZE + int "Zlib test stack size" + default DEFAULT_TASK_STACKSIZE + +endif # LIB_ZLIB_TEST + +config UTILS_GZIP + bool "GZIP tool" + default n + ---help--- + Enable gzip utility + +if UTILS_GZIP +config UTILS_GZIP_PROGNAME + string "Programe Name" + default "gzip" + +config UTILS_GZIP_PRIORITY + int "gzip utility priority" + default 100 + +config UTILS_GZIP_STACKSIZE + int "gzip utility statcksize" + default 32768 +endif + +config UTILS_ZIP + bool "ZIP tool" + default n + ---help--- + Enable zip utility + +if UTILS_ZIP +config UTILS_ZIP_PROGNAME + string "Programe Name" + default "zip" + +config UTILS_ZIP_PRIORITY + int "zip utility priority" + default 100 + +config UTILS_ZIP_STACKSIZE + int "zip utility statcksize" + default 32768 +endif + +config UTILS_UNZIP + bool "UNZIP tool" + default n + ---help--- + Enable unzip utility + +if UTILS_UNZIP +config UTILS_UNZIP_PROGNAME + string "Programe Name" + default "unzip" + +config UTILS_UNZIP_PRIORITY + int "unzip utility priority" + default 100 + +config UTILS_UNZIP_STACKSIZE + int "unzip utility statcksize" + default 32768 +endif + +endif diff --git a/system/zlib/Make.defs b/system/zlib/Make.defs new file mode 100644 index 000000000..87e7a148e --- /dev/null +++ b/system/zlib/Make.defs @@ -0,0 +1,24 @@ +############################################################################ +# apps/system/zlib/Make.defs +# +# 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. +# +############################################################################ + + +ifneq ($(CONFIG_LIB_ZLIB),) +CONFIGURED_APPS += $(APPDIR)/system/zlib +endif diff --git a/system/zlib/Makefile b/system/zlib/Makefile new file mode 100644 index 000000000..0409e1c52 --- /dev/null +++ b/system/zlib/Makefile @@ -0,0 +1,87 @@ +############################################################################ +# apps/system/zlib/Makefile +# +# 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. +# +############################################################################ + + +include $(APPDIR)/Make.defs + +CSRCS += $(wildcard zlib/*.c) +CSRCS += zlib/contrib/minizip/ioapi.c +CSRCS += zlib/contrib/minizip/mztools.c +CSRCS += zlib/contrib/minizip/unzip.c +CSRCS += zlib/contrib/minizip/zip.c + +CFLAGS += -Dunix -Wno-shadow -Wno-strict-prototypes -Wno-undef +CFLAGS += ${INCDIR_PREFIX}zlib + +ZLIB_ZIP = zlib13.zip +ZLIB_SRC = zlib + +ifeq ($(wildcard zlib/.git),) +$(ZLIB_ZIP): + @echo "Downloading: $(ZLIB_ZIP)" + $(Q) curl -O -L https://github.com/madler/zlib/releases/download/v1.3/zlib13.zip + +$(ZLIB_SRC) : $(ZLIB_ZIP) + unzip -o $(ZLIB_ZIP) + mv zlib-1.3 $(ZLIB_SRC) +endif + +context:: $(ZLIB_SRC) + +distclean:: + $(call DELDIR, $(ZLIB_SRC)) + $(call DELFILE, $(ZLIB_ZIP)) + +MODULE = $(CONFIG_LIB_ZLIB) + +ifneq ($(CONFIG_FS_LARGEFILE),y) +CFLAGS += -DIOAPI_NO_64 +CFLAGS += -DMINIZIP_FOPEN_NO_64 +endif + +ifneq ($(CONFIG_UTILS_GZIP),) +PROGNAME += $(CONFIG_UTILS_GZIP_PROGNAME) +PRIORITY += $(CONFIG_UTILS_GZIP_PRIORITY) +STACKSIZE += $(CONFIG_UTILS_GZIP_STACKSIZE) +MAINSRC += zlib/test/minigzip.c +endif + +ifneq ($(CONFIG_UTILS_ZIP),) +PROGNAME += $(CONFIG_UTILS_ZIP_PROGNAME) +PRIORITY += $(CONFIG_UTILS_ZIP_PRIORITY) +STACKSIZE += $(CONFIG_UTILS_ZIP_STACKSIZE) +MAINSRC += zlib/contrib/minizip/minizip.c +endif + +ifneq ($(CONFIG_UTILS_UNZIP),) +PROGNAME += $(CONFIG_UTILS_UNZIP_PROGNAME) +PRIORITY += $(CONFIG_UTILS_UNZIP_PRIORITY) +STACKSIZE += $(CONFIG_UTILS_UNZIP_STACKSIZE) +MAINSRC += zlib/contrib/minizip/miniunz.c +endif + +ifneq ($(CONFIG_LIB_ZLIB_TEST),) +PRIORITY += $(CONFIG_LIB_ZLIB_TEST_PRIORITY) +STACKSIZE += $(CONFIG_LIB_ZLIB_TEST_STACKSIZE) +PROGNAME += zlib_infcover_test +MAINSRC += zlib/test/infcover.c +endif + +include $(APPDIR)/Application.mk