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