nuttx-apps/logging/embedlog/Makefile
aviralgarg05 da143595e1 apps: add missing module metadata for executable tools
Add the missing module metadata for the executable ELF helpers used by the package fixture flow so the generated artifacts describe their target and type consistently.

Also fix the existing embedlog spelling issue that is picked up by the current apps check, keeping this branch clean under CI.

Signed-off-by: aviralgarg05 <gargaviral99@gmail.com>
2026-06-22 22:27:07 +08:00

248 lines
7.6 KiB
Makefile

############################################################################
# apps/logging/embedlog/Makefile
#
# SPDX-License-Identifier: Apache-2.0
#
# 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
CP = cp -R
UNPACK = tar -xzf
PACKEXT = .tar.gz
NXTOOLSDIR = $(APPDIR)/tools
EMBEDLOG_URL = https://distfiles.bofc.pl/embedlog
EMBEDLOG_VERSION = 0.7.2
EMBEDLOG_SRC_SHA256 = 561021ab825584ac7cdf88adb639950ab9fddb474fd52fc8950bc4c70d8d9960
EMBEDLOG_EXT = tar.gz
EMBEDLOG_SOURCES = embedlog-$(EMBEDLOG_VERSION)
EMBEDLOG_TARBALL = $(EMBEDLOG_SOURCES).$(EMBEDLOG_EXT)
CFLAGS += ${INCDIR_PREFIX}$(APPDIR)$(DELIM)include$(DELIM)logging
CSRCS = $(EMBEDLOG_SOURCES)/src/el-options.c \
$(EMBEDLOG_SOURCES)/src/el-perror.c \
$(EMBEDLOG_SOURCES)/src/el-pmemory.c \
$(EMBEDLOG_SOURCES)/src/el-print.c \
$(EMBEDLOG_SOURCES)/src/el-puts.c \
$(EMBEDLOG_SOURCES)/src/el-ts.c \
$(EMBEDLOG_SOURCES)/src/el-flush.c \
$(EMBEDLOG_SOURCES)/src/el-utils.c \
# compile-time configuration of embedlog
ifeq ($(CONFIG_EMBEDLOG_ENABLE_TIMESTAMP),y)
CFLAGS += -DENABLE_TIMESTAMP
CFLAGS += -DENABLE_REALTIME
CFLAGS += -DENABLE_MONOTONIC
endif
ifeq ($(CONFIG_EMBEDLOG_ENABLE_FRACTIONS),y)
CFLAGS += -DENABLE_FRACTIONS
else
CFLAGS += -DENABLE_FRACTIONS=0
endif
ifeq ($(CONFIG_EMBEDLOG_ENABLE_COLORS),y)
CFLAGS += -DENABLE_COLORS
else
CFLAGS += -DENABLE_COLORS=0
endif
ifeq ($(CONFIG_EMBEDLOG_ENABLE_PREFIX),y)
CFLAGS += -DENABLE_PREFIX
CFLAGS += -DEL_PREFIX_MAX=$(CONFIG_EMBEDLOG_PREFIX_MAX)
else
CFLAGS += -DENABLE_PREFIX=0
CFLAGS += -DEL_PREFIX_MAX=0
endif
ifeq ($(CONFIG_EMBEDLOG_ENABLE_FUNCINFO),y)
CFLAGS += -DENABLE_FUNCINFO
CFLAGS += -DEL_FUNCLEN_MAX=$(CONFIG_EMBEDLOG_FUNCLEN_MAX)
else
CFLAGS += -DENABLE_FUNCINFO=0
CFLAGS += -DEL_FUNCLEN_MAX=0
endif
ifeq ($(CONFIG_EMBEDLOG_ENABLE_FINFO),y)
CFLAGS += -DENABLE_FINFO
CFLAGS += -DEL_FLEN_MAX=$(CONFIG_EMBEDLOG_FLEN_MAX)
else
CFLAGS += -DENABLE_FINFO=0
CFLAGS += -DNOFINFO
CFLAGS += -DEL_FLEN_MAX=0
endif
ifeq ($(CONFIG_EMBEDLOG_ENABLE_OUT_CUSTOM),y)
CFLAGS += -DENABLE_OUT_CUSTOM
else
CFLAGS += -DENABLE_OUT_CUSTOM=0
endif
ifeq ($(CONFIG_EMBEDLOG_ENABLE_OUT_STDERR),y)
CFLAGS += -DENABLE_OUT_STDERR
else
CFLAGS += -DENABLE_OUT_STDERR=0
endif
ifeq ($(CONFIG_EMBEDLOG_ENABLE_OUT_FILE),y)
CFLAGS += -DENABLE_OUT_FILE
CSRCS += $(EMBEDLOG_SOURCES)/src/el-file.c
else
CFLAGS += -DENABLE_OUT_FILE=0
endif
ifeq ($(CONFIG_EMBEDLOG_ENABLE_BINARY_LOGS),y)
CFLAGS += -DENABLE_BINARY_LOGS
CSRCS += $(EMBEDLOG_SOURCES)/src/el-pbinary.c
CSRCS += $(EMBEDLOG_SOURCES)/src/el-encode-number.c
CSRCS += $(EMBEDLOG_SOURCES)/src/el-decode-number.c
else
CFLAGS += -DENABLE_BINARY_LOGS=0
endif
ifeq ($(CONFIG_EMBEDLOG_ENABLE_OUT_TTY),y)
CFLAGS += -DENABLE_OUT_TTY
CSRCS += $(EMBEDLOG_SOURCES)/src/el-tty.c
else
CFLAGS += -DENABLE_OUT_TTY=0
endif
ifeq ($(CONFIG_EMBEDLOG_ENABLE_PTHREAD),y)
CFLAGS += -DENABLE_PTHREAD
CSRCS += $(EMBEDLOG_SOURCES)/src/el-lock.c
else
CFLAGS += -DENABLE_PTHREAD=0
endif
CFLAGS += -DEL_LOG_MAX=$(CONFIG_EMBEDLOG_LOG_MAX)
CFLAGS += -DEL_MEM_LINE_SIZE=$(CONFIG_EMBEDLOG_MEM_LINE_SIZE)
# config.h is available only when building with autotools
CFLAGS += -DHAVE_CONFIG_H=0
# embedlog uses access(path, F_OK) to determine if file exists or not and since
# nuttx always returns OK here, we mark access as not working and make embedlog
# to use stat() for that purpose
CFLAGS += -DHAVE_ACCESS=0
# tell embedlog which features are available in nuttx os
CFLAGS += -DENABLE_REENTRANT
CFLAGS += -DENABLE_OUT_SYSLOG
CFLAGS += -DHAVE_STAT
CFLAGS += -DHAVE_TERMIOS_H
CFLAGS += -DHAVE_UNISTD_H
CFLAGS += -DHAVE_FSYNC
CFLAGS += -DHAVE_FILENO
CFLAGS += -DENABLE_COLORS_EXTENDED=0
# symlinks are only supported on pseudofs, where nobody is going to
# store logfiles, thus symlinks are useless on nuttx
CFLAGS += -DHAVE_SYMLINK=0
# nuttx has its own snprintf implementation, disable internal snprintf
# implementation
CFLAGS += -DPREFER_PORTABLE_SNPRINTF=0
CFLAGS += -DNEED_SNPRINTF_ONLY=0
CFLAGS += -DHAVE_SNPRINTF
# not yet implemented features - silent compiler warnings
CFLAGS += -DENABLE_OUT_NET=0
# nuttx does not implement clock() function
CFLAGS += -DENABLE_CLOCK=0
ifneq ($(CONFIG_EMBEDLOG_DEMO_PROGRAMS),)
# build demo programs as library instead of standalone programs
CFLAGS += -DEMBEDLOG_DEMO_LIBRARY
MODULE = $(CONFIG_EMBEDLOG_DEMO_PROGRAMS)
PROGNAME = el_demo_print_memory
PRIORITY = $(CONFIG_EMBEDLOG_DEMO_PROGRAMS_PRIORITY)
STACKSIZE = $(CONFIG_EMBEDLOG_DEMO_PROGRAMS_STACKSIZE)
MAINSRC = $(EMBEDLOG_SOURCES)/examples/print-memory.c
PROGNAME += el_demo_print_options
PRIORITY += $(CONFIG_EMBEDLOG_DEMO_PROGRAMS_PRIORITY)
STACKSIZE += $(CONFIG_EMBEDLOG_DEMO_PROGRAMS_STACKSIZE)
MAINSRC += $(EMBEDLOG_SOURCES)/examples/print-options.c
PROGNAME += el_demo_print_simple
PRIORITY += $(CONFIG_EMBEDLOG_DEMO_PROGRAMS_PRIORITY)
STACKSIZE += $(CONFIG_EMBEDLOG_DEMO_PROGRAMS_STACKSIZE)
MAINSRC += $(EMBEDLOG_SOURCES)/examples/print-simple.c
PROGNAME += el_demo_print_thread_safe
PRIORITY += $(CONFIG_EMBEDLOG_DEMO_PROGRAMS_PRIORITY)
STACKSIZE += $(CONFIG_EMBEDLOG_DEMO_PROGRAMS_STACKSIZE)
MAINSRC += $(EMBEDLOG_SOURCES)/examples/print-thread-safe.c
PROGNAME += el_demo_print_to_file
PRIORITY += $(CONFIG_EMBEDLOG_DEMO_PROGRAMS_PRIORITY)
STACKSIZE += $(CONFIG_EMBEDLOG_DEMO_PROGRAMS_STACKSIZE)
MAINSRC += $(EMBEDLOG_SOURCES)/examples/print-to-file.c
PROGNAME += el_demo_print_tty
PRIORITY += $(CONFIG_EMBEDLOG_DEMO_PROGRAMS_PRIORITY)
STACKSIZE += $(CONFIG_EMBEDLOG_DEMO_PROGRAMS_STACKSIZE)
MAINSRC += $(EMBEDLOG_SOURCES)/examples/print-tty.c
endif
# building of embedlog
# Download and unpack tarball if no git repo found
ifeq ($(wildcard $(EMBEDLOG_SOURCES)/.git),)
$(EMBEDLOG_TARBALL):
@echo "Downloading: $@"
$(Q) curl -L -o $@ $(EMBEDLOG_URL)/$@
${Q} $(NXTOOLSDIR)/check-hash.sh sha256 $(EMBEDLOG_SRC_SHA256) $@
$(EMBEDLOG_SOURCES): $(EMBEDLOG_TARBALL)
@echo "Unpacking $< -> $@"
$(Q) $(call DELDIR, $@)
$(Q) $(UNPACK) $<
$(Q) touch $@
endif
$(EMBEDLOG_SOURCES)/include/embedlog.h: $(EMBEDLOG_SOURCES)/include/embedlog.h.in
@echo "Generating: $@"
$(Q) sed -e "s/@ENABLE_OUT_FILE@/$(CONFIG_EMBEDLOG_ENABLE_OUT_FILE)/" \
-e "s/@ENABLE_OUT_TTY@/$(CONFIG_EMBEDLOG_ENABLE_OUT_TTY)/" \
-e "s/@ENABLE_PREFIX@/$(CONFIG_EMBEDLOG_ENABLE_PREFIX)/" \
-e "s/@ENABLE_OUT_CUSTOM@/$(CONFIG_EMBEDLOG_ENABLE_OUT_CUSTOM)/" \
-e "s/@ENABLE_PTHREAD@/$(CONFIG_EMBEDLOG_ENABLE_PTHREAD)/" \
-e "s/^#if y$$/#if 1/" \
-e "s/^#if $$/#if 0/" \
-e "s/^#if n$$/#if 0/" $< > $@
create_includes: $(EMBEDLOG_SOURCES)/include/embedlog.h
$(Q) $(CP) $< $(APPDIR)/include/logging
context:: $(EMBEDLOG_SOURCES)
$(Q) $(MAKE) create_includes
clean::
$(Q) $(call DELFILE, $(APPDIR)/include/logging/embedlog.h)
$(Q) $(foreach COBJ, $(COBJS), $(call DELFILE, $(COBJ)))
distclean::
$(Q) $(call DELDIR, $(EMBEDLOG_SOURCES))
$(Q) $(call DELDIR, $(EMBEDLOG_TARBALL))
include $(APPDIR)/Application.mk