From 62e2011e48d3139670a920bd937ff31b3f762d4e Mon Sep 17 00:00:00 2001 From: cuiziwei Date: Fri, 21 Jun 2024 15:22:40 +0800 Subject: [PATCH] apps/audioutils:Add libmad library. libmad0-dev and libmad0-dev cannot be installed simultaneously, which causes conflicts when compiling sim m32 and sim m64. Therefore, the libmad library has been ported to apps/audioutils and will be compiled with NuttX. Signed-off-by: cuiziwei --- audioutils/libmad/.gitignore | 2 ++ audioutils/libmad/CMakeLists.txt | 35 ++++++++++++++++++++++++++ audioutils/libmad/Kconfig | 8 ++++++ audioutils/libmad/Make.defs | 23 +++++++++++++++++ audioutils/libmad/Makefile | 43 ++++++++++++++++++++++++++++++++ 5 files changed, 111 insertions(+) create mode 100644 audioutils/libmad/.gitignore create mode 100644 audioutils/libmad/CMakeLists.txt create mode 100644 audioutils/libmad/Kconfig create mode 100644 audioutils/libmad/Make.defs create mode 100644 audioutils/libmad/Makefile diff --git a/audioutils/libmad/.gitignore b/audioutils/libmad/.gitignore new file mode 100644 index 000000000..e54b58b51 --- /dev/null +++ b/audioutils/libmad/.gitignore @@ -0,0 +1,2 @@ +/libmad +/*.zip \ No newline at end of file diff --git a/audioutils/libmad/CMakeLists.txt b/audioutils/libmad/CMakeLists.txt new file mode 100644 index 000000000..51b45bc3d --- /dev/null +++ b/audioutils/libmad/CMakeLists.txt @@ -0,0 +1,35 @@ +# ############################################################################## +# apps/audioutils/libmad/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_AUDIOUTILS_LIBMAD) + + nuttx_add_library(libmad STATIC) + + file(GLOB LIBMAD_SRCS libmad/*.c) + set(CSRCS ${LIBMAD_SRCS}) + set(CFLAGS -Wno-shadow -Wno-stringop-overflow -DFPM_DEFAULT -DSIZEOF_INT=4) + set(INCDIR ${CMAKE_CURRENT_LIST_DIR}/libmad + ${CMAKE_CURRENT_LIST_DIR}/libmad/msvc++) + + target_sources(libmad PRIVATE ${CSRCS}) + target_include_directories(libmad PRIVATE ${INCDIR}) + target_compile_options(libmad PRIVATE ${CFLAGS}) + +endif() diff --git a/audioutils/libmad/Kconfig b/audioutils/libmad/Kconfig new file mode 100644 index 000000000..13732d4bf --- /dev/null +++ b/audioutils/libmad/Kconfig @@ -0,0 +1,8 @@ +# +# For a description of the syntax of this configuration file, +# see the file kconfig-language.txt in the NuttX tools repository. +# + +config AUDIOUTILS_LIBMAD + bool "Enable libmad" + default n diff --git a/audioutils/libmad/Make.defs b/audioutils/libmad/Make.defs new file mode 100644 index 000000000..b4f54edda --- /dev/null +++ b/audioutils/libmad/Make.defs @@ -0,0 +1,23 @@ +############################################################################ +# apps/audioutils/libmad/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_AUDIOUTILS_LIBMAD),) +CONFIGURED_APPS += $(APPDIR)/audioutils/libmad +endif diff --git a/audioutils/libmad/Makefile b/audioutils/libmad/Makefile new file mode 100644 index 000000000..789107246 --- /dev/null +++ b/audioutils/libmad/Makefile @@ -0,0 +1,43 @@ +############################################################################ +# apps/audioutils/libmad/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 libmad/*.c) +CFLAGS += -DFPM_DEFAULT -DSIZEOF_INT=4 +CFLAGS += -Wno-shadow -Wno-stringop-overflow + +# Download and unpack libmad if no git repo found +ifeq ($(wildcard libmad/.git),) +VERSION ?= master +libmad.zip: + $(Q) curl -L https://github.com/markjeee/libmad/archive/refs/heads/master.zip -o libmad.zip + $(Q) unzip -o libmad.zip + $(Q) mv libmad-$(VERSION) libmad + +context:: libmad.zip + +distclean:: + $(call DELDIR, libmad) + $(call DELFILE, libmad.zip) + +endif + +include $(APPDIR)/Application.mk