mirror of
https://github.com/apache/nuttx-apps.git
synced 2026-08-18 20:18:21 +00:00
Application.mk:unify module compilation
we can build a module like app, use 'DYNLIB' mark current path is a loadable module and CFLAGSELF and CMODFLAGS can act on these compiled as loadable module Signed-off-by: anjiahao <anjiahao@xiaomi.com> Signed-off-by: wanggang26 <wanggang26@xiaomi.com> Signed-off-by: xuxin19 <xuxin19@xiaomi.com>
This commit is contained in:
parent
eca0928319
commit
5debbb8d46
1 changed files with 32 additions and 22 deletions
|
|
@ -23,12 +23,18 @@
|
|||
# has the value "m"
|
||||
|
||||
ifneq ($(MAINSRC),)
|
||||
ifeq ($(MODULE),m)
|
||||
BUILD_MODULE = y
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_BUILD_KERNEL),y)
|
||||
ifeq ($(DYNLIB),y)
|
||||
BUILD_MODULE = y
|
||||
MODAELFFLAGS = $(CMODULELFFLAGS)
|
||||
MODCFLAGS = $(CMODULEFLAGS)
|
||||
MODCXXFLAGS = $(CXXMODULEFLAGS)
|
||||
MODLDFLAGS = $(LDMODULEFLAGS)
|
||||
else ifneq ($(or $(filter y,$(CONFIG_BUILD_KERNEL)), $(filter m,$(MODULE))),)
|
||||
BUILD_MODULE = y
|
||||
MODAELFFLAGS = $(AELFFLAGS)
|
||||
MODCFLAGS = $(CELFFLAGS)
|
||||
MODCXXFLAGS = $(CXXELFFLAGS)
|
||||
MODLDFLAGS = $(LDELFFLAGS)
|
||||
endif
|
||||
endif
|
||||
|
||||
|
|
@ -42,6 +48,10 @@ else
|
|||
CWD = $(CURDIR)
|
||||
endif
|
||||
|
||||
SUFFIX ?= $(subst $(DELIM),.,$(CWD))
|
||||
|
||||
PROGNAME := $(subst ",,$(PROGNAME))
|
||||
|
||||
# Add the static application library to the linked libraries.
|
||||
|
||||
LDLIBS += $(call CONVERT_PATH,$(BIN))
|
||||
|
|
@ -68,10 +78,6 @@ endif
|
|||
|
||||
PREFIX ?=
|
||||
|
||||
SUFFIX ?= $(subst $(DELIM),.,$(CWD))
|
||||
|
||||
PROGNAME := $(subst ",,$(PROGNAME))
|
||||
|
||||
# Object files
|
||||
|
||||
RASRCS = $(filter %.s,$(ASRCS))
|
||||
|
|
@ -140,6 +146,10 @@ ifeq ($(WASM_BUILD),y)
|
|||
DO_REGISTRATION = n
|
||||
endif
|
||||
|
||||
ifeq ($(DYNLIB),y)
|
||||
DO_REGISTRATION = n
|
||||
endif
|
||||
|
||||
# Compile flags, notice the default flags only suitable for flat build
|
||||
|
||||
ZIGELFFLAGS ?= $(ZIGFLAGS)
|
||||
|
|
@ -161,19 +171,19 @@ all:: $(PREFIX).built
|
|||
|
||||
define ELFASSEMBLE
|
||||
$(ECHO_BEGIN)"AS: $1 "
|
||||
$(Q) $(CC) -c $(AELFFLAGS) $($(strip $1)_AELFFLAGS) $1 -o $2
|
||||
$(Q) $(MODULECC) -c $(MODAELFFLAGS) $($(strip $1)_AELFFLAGS) $1 -o $2
|
||||
$(ECHO_END)
|
||||
endef
|
||||
|
||||
define ELFCOMPILE
|
||||
$(ECHO_BEGIN)"CC: $1 "
|
||||
$(Q) $(CC) -c $(CELFFLAGS) $($(strip $1)_CELFFLAGS) $1 -o $2
|
||||
$(Q) $(MODULECC) -c $(MODCFLAGS) $($(strip $1)_CELFFLAGS) $1 -o $2
|
||||
$(ECHO_END)
|
||||
endef
|
||||
|
||||
define ELFCOMPILEXX
|
||||
$(ECHO_BEGIN)"CXX: $1 "
|
||||
$(Q) $(CXX) -c $(CXXELFFLAGS) $($(strip $1)_CXXELFFLAGS) $1 -o $2
|
||||
$(Q) $(CXX) -c $(MODCXXFLAGS) $($(strip $1)_CXXELFFLAGS) $1 -o $2
|
||||
$(ECHO_END)
|
||||
endef
|
||||
|
||||
|
|
@ -204,7 +214,7 @@ endef
|
|||
|
||||
define ELFLD
|
||||
$(ECHO_BEGIN)"LD: $2 "
|
||||
$(Q) $(LD) $(LDELFFLAGS) $(LDLIBPATH) $(ARCHCRT0OBJ) $1 $(LDSTARTGROUP) $(LDLIBS) $(LDENDGROUP) -o $2
|
||||
$(Q) $(MODULELD) $(MODLDFLAGS) $(LDMAP) $(LDLIBPATH) $(ARCHCRT0OBJ) $1 $(LDSTARTGROUP) $(LDLIBS) $(LDENDGROUP) -o $2
|
||||
$(ECHO_END)
|
||||
endef
|
||||
|
||||
|
|
@ -216,19 +226,19 @@ define RENAMEMAIN
|
|||
endef
|
||||
|
||||
$(RAOBJS): $(PREFIX)%.s$(SUFFIX)$(OBJEXT): %.s
|
||||
$(if $(and $(CONFIG_MODULES),$(AELFFLAGS)), \
|
||||
$(if $(and $(CONFIG_MODULES),$(MODAELFFLAGS)), \
|
||||
$(call ELFASSEMBLE, $<, $@), $(call ASSEMBLE, $<, $@))
|
||||
|
||||
$(CAOBJS): $(PREFIX)%.S$(SUFFIX)$(OBJEXT): %.S
|
||||
$(if $(and $(CONFIG_MODULES),$(AELFFLAGS)), \
|
||||
$(if $(and $(CONFIG_MODULES),$(MODAELFFLAGS)), \
|
||||
$(call ELFASSEMBLE, $<, $@), $(call ASSEMBLE, $<, $@))
|
||||
|
||||
$(COBJS): $(PREFIX)%.c$(SUFFIX)$(OBJEXT): %.c
|
||||
$(if $(and $(CONFIG_MODULES),$(CELFFLAGS)), \
|
||||
$(if $(and $(CONFIG_MODULES),$(MODCFLAGS)), \
|
||||
$(call ELFCOMPILE, $<, $@), $(call COMPILE, $<, $@))
|
||||
|
||||
$(CXXOBJS): $(PREFIX)%$(CXXEXT)$(SUFFIX)$(OBJEXT): %$(CXXEXT)
|
||||
$(if $(and $(CONFIG_MODULES),$(CXXELFFLAGS)), \
|
||||
$(if $(and $(CONFIG_MODULES),$(MODCXXFLAGS)), \
|
||||
$(call ELFCOMPILEXX, $<, $@), $(call COMPILEXX, $<, $@))
|
||||
|
||||
$(RUSTOBJS): $(PREFIX)%$(RUSTEXT)$(SUFFIX)$(OBJEXT): %$(RUSTEXT)
|
||||
|
|
@ -270,11 +280,11 @@ $(PREFIX).built: $(AROBJS)
|
|||
ifeq ($(BUILD_MODULE),y)
|
||||
|
||||
$(MAINCXXOBJ): $(PREFIX)%$(CXXEXT)$(SUFFIX)$(OBJEXT): %$(CXXEXT)
|
||||
$(if $(and $(CONFIG_MODULES),$(CXXELFFLAGS)), \
|
||||
$(if $(and $(CONFIG_MODULES),$(MODCXXFLAGS)), \
|
||||
$(call ELFCOMPILEXX, $<, $@), $(call COMPILEXX, $<, $@))
|
||||
|
||||
$(MAINCOBJ): $(PREFIX)%.c$(SUFFIX)$(OBJEXT): %.c
|
||||
$(if $(and $(CONFIG_MODULES),$(CELFFLAGS)), \
|
||||
$(if $(and $(CONFIG_MODULES),$(MODCFLAGS)), \
|
||||
$(call ELFCOMPILE, $<, $@), $(call COMPILE, $<, $@))
|
||||
|
||||
$(MAINZIGOBJ): $(PREFIX)%$(ZIGEXT)$(SUFFIX)$(OBJEXT): %$(ZIGEXT)
|
||||
|
|
@ -294,7 +304,7 @@ $(PROGLIST): $(MAINCOBJ) $(MAINCXXOBJ) $(MAINRUSTOBJ) $(MAINZIGOBJ) $(MAINDOBJ)
|
|||
$(call ELFLD, $(PROGOBJ_$@), $(call CONVERT_PATH,$@))
|
||||
$(Q) chmod +x $@
|
||||
ifneq ($(CONFIG_DEBUG_SYMBOLS),y)
|
||||
$(Q) $(STRIP) $@
|
||||
$(Q) $(MODULESTRIP) $@
|
||||
endif
|
||||
|
||||
install:: $(PROGLIST)
|
||||
|
|
@ -305,13 +315,13 @@ else
|
|||
$(MAINCXXOBJ): $(PREFIX)%$(CXXEXT)$(SUFFIX)$(OBJEXT): %$(CXXEXT)
|
||||
$(eval $<_CXXFLAGS += ${shell $(DEFINE) "$(CXX)" main=$(addsuffix _main,$(PROGNAME_$@))})
|
||||
$(eval $<_CXXELFFLAGS += ${shell $(DEFINE) "$(CXX)" main=$(addsuffix _main,$(PROGNAME_$@))})
|
||||
$(if $(and $(CONFIG_MODULES),$(CXXELFFLAGS)), \
|
||||
$(if $(and $(CONFIG_MODULES),$(MODCXXFLAGS)), \
|
||||
$(call ELFCOMPILEXX, $<, $@), $(call COMPILEXX, $<, $@))
|
||||
|
||||
$(MAINCOBJ): $(PREFIX)%.c$(SUFFIX)$(OBJEXT): %.c
|
||||
$(eval $<_CFLAGS += ${DEFINE_PREFIX}main=$(addsuffix _main,$(PROGNAME_$@)))
|
||||
$(eval $<_CELFFLAGS += ${DEFINE_PREFIX}main=$(addsuffix _main,$(PROGNAME_$@)))
|
||||
$(if $(and $(CONFIG_MODULES),$(CELFFLAGS)), \
|
||||
$(if $(and $(CONFIG_MODULES),$(MODCFLAGS)), \
|
||||
$(call ELFCOMPILE, $<, $@), $(call COMPILE, $<, $@))
|
||||
|
||||
$(MAINRUSTOBJ): $(PREFIX)%$(RUSTEXT)$(SUFFIX)$(OBJEXT): %$(RUSTEXT)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue