ee4d8b738f
Signed-off-by: yinshengkai <yinshengkai@xiaomi.com>
121 lines
3.8 KiB
Makefile
121 lines
3.8 KiB
Makefile
############################################################################
|
|
# apps/system/psmq/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
|
|
|
|
CP = cp -R
|
|
UNPACK = tar -xzf
|
|
PACKEXT = .tar.gz
|
|
NXTOOLSDIR = $(APPDIR)/tools
|
|
|
|
PSMQ_URL = https://distfiles.bofc.pl/psmq
|
|
PSMQ_VERSION = 0.2.1
|
|
PSMQ_SRC_SHA256 = b029fa06752ad7dce89f6b899f27a08a1bd1ee0a4e1d9df407274f0322bf1946
|
|
PSMQ_EXT = tar.gz
|
|
PSMQ_SOURCES = psmq-$(PSMQ_VERSION)
|
|
PSMQ_TARBALL = $(PSMQ_SOURCES).$(PSMQ_EXT)
|
|
|
|
CFLAGS += ${INCDIR_PREFIX}$(APPDIR)$(DELIM)include$(DELIM)system
|
|
CFLAGS += ${INCDIR_PREFIX}$(APPDIR)$(DELIM)system$(DELIM)psmq$(DELIM)$(PSMQ_SOURCES)
|
|
|
|
# mandatory source files to compile
|
|
CSRCS = $(PSMQ_SOURCES)/lib/psmq.c \
|
|
$(PSMQ_SOURCES)/src/broker.c \
|
|
$(PSMQ_SOURCES)/src/cfg.c \
|
|
$(PSMQ_SOURCES)/src/globals.c \
|
|
$(PSMQ_SOURCES)/src/topic-list.c \
|
|
$(PSMQ_SOURCES)/src/utils.c
|
|
|
|
# compile-time options from Kconfig
|
|
CFLAGS += -DPSMQ_MAX_CLIENTS=$(CONFIG_PSMQ_MAX_CLIENTS)
|
|
|
|
# build psmq as library and disable standalone applications (apps will
|
|
# still be compiled but into shared library rather than standalone application
|
|
CFLAGS += -DPSMQ_LIBRARY=1
|
|
CFLAGS += -DPSMQ_STANDALONE=0
|
|
|
|
# nuttx has no opterr variable
|
|
CFLAGS += -DPSMQ_NO_OPTERR=1
|
|
|
|
# nuttx does not really support signals, so disable them. There will be no way
|
|
# to gently kill programs.
|
|
CFLAGS += -DPSMQ_NO_SIGNALS=1
|
|
|
|
# package string needed by tools when passing '-v' option
|
|
CFLAGS += -DPACKAGE_STRING="\"psmq $(PSMQ_VERSION)\""
|
|
CFLAGS += -DPACKAGE_VERSION=\"$(PSMQ_VERSION)\"
|
|
|
|
# register psmqd broker daemon application
|
|
PROGNAME = psmqd
|
|
PRIORITY = $(CONFIG_PSMQD_PRIORITY)
|
|
STACKSIZE = $(CONFIG_PSMQD_STACKSIZE)
|
|
MAINSRC = $(PSMQ_SOURCES)/src/psmqd.c
|
|
|
|
# register psmq_pub application if it was enabled
|
|
ifeq ($(CONFIG_PSMQ_TOOLS_PUB),y)
|
|
PROGNAME += psmq_pub
|
|
PRIORITY += $(CONFIG_PSMQ_PUB_PRIORITY)
|
|
STACKSIZE += $(CONFIG_PSMQ_PUB_STACKSIZE)
|
|
MAINSRC += $(PSMQ_SOURCES)/src/psmq-pub.c
|
|
endif
|
|
|
|
# register psmq_sub application if it was enabled
|
|
ifeq ($(CONFIG_PSMQ_TOOLS_SUB),y)
|
|
PROGNAME += psmq_sub
|
|
PRIORITY += $(CONFIG_PSMQ_SUB_PRIORITY)
|
|
STACKSIZE += $(CONFIG_PSMQ_SUB_STACKSIZE)
|
|
MAINSRC += $(PSMQ_SOURCES)/src/psmq-sub.c
|
|
endif
|
|
|
|
# download and build psmq
|
|
|
|
$(PSMQ_TARBALL):
|
|
@echo "Downloading: $@"
|
|
$(Q) curl -L -o $@ $(PSMQ_URL)/$@
|
|
$(Q) $(NXTOOLSDIR)/check-hash.sh sha256 $(PSMQ_SRC_SHA256) $@
|
|
|
|
$(PSMQ_SOURCES): $(PSMQ_TARBALL)
|
|
@echo "Unpacking $< -> $@"
|
|
$(Q) $(call DELDIR, $@)
|
|
$(Q) $(UNPACK) $<
|
|
$(Q) touch $@
|
|
|
|
$(PSMQ_SOURCES)/inc/psmq.h: $(PSMQ_SOURCES)/inc/psmq.h.in
|
|
@echo "Generating: $@"
|
|
$(Q) sed -e "s/@PSMQ_MSG_MAX@/$(CONFIG_PSMQ_MSG_MAX)/" $< > $@
|
|
|
|
create_includes: $(PSMQ_SOURCES)/inc/psmq.h
|
|
$(Q) $(CP) $< $(APPDIR)/include/system
|
|
|
|
context:: $(PSMQ_SOURCES)
|
|
$(Q) $(MAKE) create_includes
|
|
|
|
clean::
|
|
$(Q) $(call DELFILE, $(APPDIR)/include/system/psmq.h)
|
|
$(Q) $(foreach COBJ, $(COBJS), $(call DELFILE, $(COBJ)))
|
|
|
|
distclean::
|
|
$(Q) $(call DELDIR, $(PSMQ_SOURCES))
|
|
$(Q) $(call DELDIR, $(PSMQ_TARBALL))
|
|
|
|
MODULE = $(CONFIG_SYSTEM_PSMQ)
|
|
|
|
include $(APPDIR)/Application.mk
|