2015-09-05 00:46:59 +02:00
|
|
|
############################################################################
|
2019-08-05 14:04:14 +02:00
|
|
|
# boards/Board.mk
|
2015-09-05 00:46:59 +02:00
|
|
|
#
|
2021-09-28 11:35:20 +02:00
|
|
|
# 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
|
2015-09-05 00:46:59 +02:00
|
|
|
#
|
2021-09-28 11:35:20 +02:00
|
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
2015-09-05 00:46:59 +02:00
|
|
|
#
|
2021-09-28 11:35:20 +02:00
|
|
|
# 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.
|
2015-09-05 00:46:59 +02:00
|
|
|
#
|
|
|
|
############################################################################
|
|
|
|
|
2020-04-15 05:31:42 +02:00
|
|
|
ifneq ($(RCSRCS)$(RCRAWS),)
|
|
|
|
ETCDIR := etctmp
|
|
|
|
ETCSRC := $(ETCDIR:%=%.c)
|
|
|
|
|
|
|
|
CSRCS += $(ETCSRC)
|
|
|
|
|
|
|
|
RCOBJS = $(RCSRCS:%=$(ETCDIR)$(DELIM)%)
|
|
|
|
|
|
|
|
$(RCOBJS): $(ETCDIR)$(DELIM)%: %
|
|
|
|
$(Q) mkdir -p $(dir $@)
|
|
|
|
$(call PREPROCESS, $<, $@)
|
|
|
|
|
2024-01-03 12:44:44 +01:00
|
|
|
$(ETCSRC): $(foreach raw,$(RCRAWS), $(if $(wildcard $(BOARD_DIR)$(DELIM)src$(DELIM)$(raw)), $(BOARD_DIR)$(DELIM)src$(DELIM)$(raw), $(BOARD_COMMON_DIR)$(DELIM)$(raw))) $(RCOBJS)
|
2020-04-15 05:31:42 +02:00
|
|
|
$(foreach raw, $(RCRAWS), \
|
2021-03-16 07:47:14 +01:00
|
|
|
$(shell rm -rf $(ETCDIR)$(DELIM)$(raw)) \
|
2020-04-15 05:31:42 +02:00
|
|
|
$(shell mkdir -p $(dir $(ETCDIR)$(DELIM)$(raw))) \
|
2024-01-03 12:44:44 +01:00
|
|
|
$(shell cp -rfp $(if $(wildcard $(BOARD_DIR)$(DELIM)src$(DELIM)$(raw)), $(BOARD_DIR)$(DELIM)src$(DELIM)$(raw), $(BOARD_COMMON_DIR)$(DELIM)$(raw)) $(ETCDIR)$(DELIM)$(raw)))
|
sched: move etc romfs mount from nsh to sched/init
Usually the startup script is placed under /etc. The contents of the etc directory
are compiled and linked with Nuttx binary in the form of romfs. After startup,
it will be mounted by Nsh.
etc is generated by the different boards, that use genromfs and xxd tools to generate
and compile it into the Nuttx, for example: boards/arm/at32/at32f437-mini/tool/mkromfs.sh
The more common method is etc image generated from the content in the corresponding
board/arch/board/board/src/etc directory, and added by Makefile for example:
boards/sim/sim/sim/src/etc.
But in kernel/protected mode, Nuttx kernel and apps are run in different privileged/
non-privileged mode or the isolated binarys, so as that nsh should use syscall to
access Nuttx kernel by exported API. In this scenario, nsh can not mount the etc image
content, because that is generated in board and as a part of Nuttx kernel.
changes:
- move etc romfs mount from nsh to Nuttx, but keep the script to parse and execute.
- move and rename the related CONFIG, move customized nsh_romfsimg.h to etc_romfs.c
in boards, and no need declaration for romfs_img/romfs_img_len.
This commit changes and updates all configurations in Nuttx arch/board as much as possible,
but if any missing, please refer to the following simple guide:
- rename CONFIG_NSH_ROMFSETC to CONFIG_ETC_ROMFS, and delete CONFIG_NSH_ARCHROMFS in defconfig
- rename the etc romfs mount configs, for example CONFIG_NSH_FATDEVNO to CONFIG_ETC_FATDEVNO
- move customized nsh_romfsimg.h to etc_romfs.c in board/arch/board/board/src and no need
declaration for romfs_img/romfs_img_len.
- delete default nsh_romfsimg.h, if ROMFSETC is enabled, should generate and compile etc_romfs.c
in board/arch/board/board/src.
Signed-off-by: fangxinyong <fangxinyong@xiaomi.com>
2023-11-26 04:51:46 +01:00
|
|
|
$(Q) genromfs -f romfs.img -d $(ETCDIR)$(DELIM)$(CONFIG_ETC_ROMFSMOUNTPT) -V "NSHInitVol"
|
2022-01-25 04:03:51 +01:00
|
|
|
$(Q) echo "#include <nuttx/compiler.h>" > $@
|
|
|
|
$(Q) xxd -i romfs.img | sed -e "s/^unsigned char/const unsigned char aligned_data(4)/g" >> $@
|
2020-04-15 05:31:42 +02:00
|
|
|
$(Q) rm romfs.img
|
|
|
|
endif
|
|
|
|
|
2015-09-05 00:46:59 +02:00
|
|
|
ifneq ($(ZDSVERSION),)
|
|
|
|
AOBJS = $(ASRCS:.S=$(OBJEXT))
|
|
|
|
else
|
|
|
|
AOBJS = $(ASRCS:$(ASMEXT)=$(OBJEXT))
|
|
|
|
endif
|
|
|
|
COBJS = $(CSRCS:.c=$(OBJEXT))
|
2016-11-27 18:19:46 +01:00
|
|
|
CXXOBJS = $(CXXSRCS:.cxx=$(OBJEXT))
|
2015-09-05 00:46:59 +02:00
|
|
|
|
|
|
|
SRCS = $(ASRCS) $(CSRCS)
|
|
|
|
OBJS = $(AOBJS) $(COBJS)
|
|
|
|
|
|
|
|
SCHEDSRCDIR = $(TOPDIR)$(DELIM)sched
|
|
|
|
ARCHSRCDIR = $(TOPDIR)$(DELIM)arch$(DELIM)$(CONFIG_ARCH)$(DELIM)src
|
2017-07-06 22:04:11 +02:00
|
|
|
ifneq ($(CONFIG_ARCH_FAMILY),)
|
|
|
|
ARCH_FAMILY = $(patsubst "%",%,$(CONFIG_ARCH_FAMILY))
|
|
|
|
endif
|
2015-09-05 00:46:59 +02:00
|
|
|
|
2022-11-01 14:47:53 +01:00
|
|
|
CFLAGS += ${INCDIR_PREFIX}"$(SCHEDSRCDIR)"
|
|
|
|
CFLAGS += ${INCDIR_PREFIX}"$(ARCHSRCDIR)$(DELIM)chip"
|
2019-08-08 15:17:43 +02:00
|
|
|
ifneq ($(CONFIG_ARCH_SIM),y)
|
2022-11-01 14:47:53 +01:00
|
|
|
CFLAGS += ${INCDIR_PREFIX}"$(ARCHSRCDIR)$(DELIM)common"
|
2020-05-19 11:43:29 +02:00
|
|
|
endif
|
2017-07-06 22:04:11 +02:00
|
|
|
ifneq ($(ARCH_FAMILY),)
|
2022-11-01 14:47:53 +01:00
|
|
|
CFLAGS += ${INCDIR_PREFIX}"$(ARCHSRCDIR)$(DELIM)$(ARCH_FAMILY)"
|
2015-09-05 00:46:59 +02:00
|
|
|
endif
|
|
|
|
|
|
|
|
all: libboard$(LIBEXT)
|
|
|
|
|
|
|
|
ifneq ($(ZDSVERSION),)
|
|
|
|
$(ASRCS) $(HEAD_ASRC): %$(ASMEXT): %.S
|
2022-02-20 03:34:50 +01:00
|
|
|
$(Q) $(CPP) $(CPPFLAGS) $(call CONVERT_PATH,$<) -o $@.tmp
|
2015-09-05 00:46:59 +02:00
|
|
|
$(Q) cat $@.tmp | sed -e "s/^#/;/g" > $@
|
|
|
|
$(Q) rm $@.tmp
|
|
|
|
endif
|
|
|
|
|
|
|
|
$(AOBJS): %$(OBJEXT): %$(ASMEXT)
|
|
|
|
$(call ASSEMBLE, $<, $@)
|
|
|
|
|
|
|
|
$(COBJS) $(LINKOBJS): %$(OBJEXT): %.c
|
|
|
|
$(call COMPILE, $<, $@)
|
|
|
|
|
2016-11-27 18:19:46 +01:00
|
|
|
$(CXXOBJS) $(LINKOBJS): %$(OBJEXT): %.cxx
|
|
|
|
$(call COMPILEXX, $<, $@)
|
|
|
|
|
|
|
|
libboard$(LIBEXT): $(OBJS) $(CXXOBJS)
|
2020-09-12 03:31:38 +02:00
|
|
|
$(call ARCHIVE, $@, $(OBJS) $(CXXOBJS))
|
2015-09-05 00:46:59 +02:00
|
|
|
|
2020-07-22 09:54:29 +02:00
|
|
|
.depend: Makefile $(SRCS) $(CXXSRCS) $(RCSRCS) $(TOPDIR)$(DELIM).config
|
2015-09-05 00:46:59 +02:00
|
|
|
ifneq ($(ZDSVERSION),)
|
2020-03-23 03:44:03 +01:00
|
|
|
$(Q) $(MKDEP) $(DEPPATH) "$(CC)" -- $(CFLAGS) -- $(SRCS) >Make.dep
|
2015-09-05 00:46:59 +02:00
|
|
|
else
|
2020-03-23 03:44:03 +01:00
|
|
|
$(Q) $(MKDEP) $(DEPPATH) $(CC) -- $(CFLAGS) -- $(SRCS) >Make.dep
|
2016-11-27 18:19:46 +01:00
|
|
|
endif
|
|
|
|
ifneq ($(CXXSRCS),)
|
2020-03-23 03:44:03 +01:00
|
|
|
$(Q) $(MKDEP) $(DEPPATH) "$(CXX)" -- $(CXXFLAGS) -- $(CXXSRCS) >>Make.dep
|
2020-04-15 05:31:42 +02:00
|
|
|
endif
|
|
|
|
ifneq ($(RCSRCS),)
|
|
|
|
$(Q) $(MKDEP) $(DEPPATH) "$(CPP)" --obj-path . -- $(CPPFLAGS) -- $(RCSRCS) >>Make.dep
|
2015-09-05 00:46:59 +02:00
|
|
|
endif
|
2020-03-23 03:44:03 +01:00
|
|
|
$(Q) touch $@
|
2015-09-05 00:46:59 +02:00
|
|
|
|
2020-03-23 03:44:03 +01:00
|
|
|
depend: .depend
|
2015-09-05 00:46:59 +02:00
|
|
|
|
2020-09-14 16:50:40 +02:00
|
|
|
context::
|
2016-10-18 18:54:26 +02:00
|
|
|
|
2020-11-28 17:31:32 +01:00
|
|
|
clean::
|
2015-09-05 00:46:59 +02:00
|
|
|
$(call DELFILE, libboard$(LIBEXT))
|
2020-04-15 05:31:42 +02:00
|
|
|
$(call DELFILE, $(ETCSRC))
|
|
|
|
$(call DELDIR, $(ETCDIR))
|
2015-09-05 00:46:59 +02:00
|
|
|
$(call CLEAN)
|
|
|
|
|
2020-11-28 17:31:32 +01:00
|
|
|
distclean:: clean
|
2015-09-05 00:46:59 +02:00
|
|
|
$(call DELFILE, Make.dep)
|
2020-03-23 03:44:03 +01:00
|
|
|
$(call DELFILE, .depend)
|
2015-09-05 00:46:59 +02:00
|
|
|
|
|
|
|
-include Make.dep
|