TLK: Clean up obsolete files
[3rdparty/ote_partner/tlk.git] / make / module.mk
1
2 # modules
3 #
4 # args:
5 # MODULE : module name (required)
6 # MODULE_SRCS : list of source files, local path (required)
7 # MODULE_DEPS : other modules that this one depends on
8 # MODULE_DEFINES : #defines local to this module
9 # MODULE_OPTFLAGS : OPTFLAGS local to this module
10 # MODULE_COMPILEFLAGS : COMPILEFLAGS local to this module
11 # MODULE_CFLAGS : CFLAGS local to this module
12 # MODULE_CPPFLAGS : CPPFLAGS local to this module
13 # MODULE_ASMFLAGS : ASMFLAGS local to this module
14 # MODULE_SRCDEPS : extra dependencies that all of this module's files depend on
15 # MODULE_EXTRA_OBJS : extra .o files that should be linked with the module
16
17 # MODULE_ARM_OVERRIDE_SRCS : list of source files, local path that should be force compiled with ARM (if applicable)
18
19 # the minimum module rules.mk file is as follows:
20 #
21 # LOCAL_DIR := $(GET_LOCAL_DIR)
22 # MODULE := $(LOCAL_DIR)
23 #
24 # MODULE_SRCS := $(LOCAL_DIR)/at_least_one_source_file.c
25 #
26 # include make/module.mk
27
28 # test for old style rules.mk
29 ifneq ($(MODULE_OBJS),)
30 $(warning MODULE_OBJS = $(MODULE_OBJS))
31 $(error MODULE $(MODULE) is setting MODULE_OBJS, change to MODULE_SRCS)
32 endif
33 ifneq ($(OBJS),)
34 $(warning OBJS = $(OBJS))
35 $(error MODULE $(MODULE) is probably setting OBJS, change to MODULE_SRCS)
36 endif
37
38 MODULE_SRCDIR := $(MODULE)
39 MODULE_BUILDDIR := $(call TOBUILDDIR,$(MODULE_SRCDIR))
40
41 # add the listed module deps to the global list
42 MODULES += $(MODULE_DEPS)
43
44 #$(info module $(MODULE))
45 #$(info MODULE_SRCDIR $(MODULE_SRCDIR))
46 #$(info MODULE_BUILDDIR $(MODULE_BUILDDIR))
47 #$(info MODULE_DEPS $(MODULE_DEPS))
48 #$(info MODULE_SRCS $(MODULE_SRCS))
49 #$(info MODULE_CC $(MODULE_CC))
50 #$(info MODULE_LD $(MODULE_LD))
51
52 # build with default toolchain/arch, unless module has overridden it
53 ifeq ($(MODULE_CC),)
54 MODULE_CC := $(CCACHE) $(TOOLCHAIN_PREFIX)gcc
55 endif
56 ifeq ($(MODULE_LD),)
57 MODULE_LD := $(TOOLCHAIN_PREFIX)ld
58 endif
59 ifeq ($(MODULE_ARCH),)
60 include arch/$(ARCH)/compile.mk
61 else
62 include arch/$(MODULE_ARCH)/compile.mk
63 endif
64
65 MODULE_DEFINES += MODULE_COMPILEFLAGS=\"$(subst $(SPACE),_,$(MODULE_COMPILEFLAGS))\"
66 MODULE_DEFINES += MODULE_CFLAGS=\"$(subst $(SPACE),_,$(MODULE_CFLAGS))\"
67 MODULE_DEFINES += MODULE_CPPFLAGS=\"$(subst $(SPACE),_,$(MODULE_CPPFLAGS))\"
68 MODULE_DEFINES += MODULE_ASMFLAGS=\"$(subst $(SPACE),_,$(MODULE_ASMFLAGS))\"
69 MODULE_DEFINES += MODULE_LDFLAGS=\"$(subst $(SPACE),_,$(MODULE_LDFLAGS))\"
70 MODULE_DEFINES += MODULE_OPTFLAGS=\"$(subst $(SPACE),_,$(MODULE_OPTFLAGS))\"
71 MODULE_DEFINES += MODULE_INCLUDES=\"$(subst $(SPACE),_,$(MODULE_INCLUDES))\"
72 MODULE_DEFINES += MODULE_DEPS=\"$(subst $(SPACE),_,$(MODULE_DEPS))\"
73
74 # generate a per-module config.h file
75 MODULE_CONFIG := $(MODULE_BUILDDIR)/module_config.h
76
77 $(MODULE_CONFIG): MODULE_DEFINES:=$(MODULE_DEFINES)
78 $(MODULE_CONFIG): configheader
79         $(call MAKECONFIGHEADER,$@,MODULE_DEFINES)
80
81 GENERATED += $(MODULE_CONFIG)
82
83 MODULE_COMPILEFLAGS += --include $(MODULE_CONFIG)
84
85 MODULE_SRCDEPS += $(MODULE_CONFIG)
86
87 # include the rules to compile the module's object files
88 include make/compile.mk
89
90 # MODULE_OBJS is passed back from compile.mk
91 #$(info MODULE_OBJS = $(MODULE_OBJS))
92
93 # build a ld -r style combined object
94 MODULE_OBJECT := $(call TOBUILDDIR,$(MODULE_SRCDIR).mod.o)
95 $(MODULE_OBJECT): MODULE_LD:=$(MODULE_LD)
96 $(MODULE_OBJECT): $(MODULE_OBJS) $(MODULE_EXTRA_OBJS)
97         @$(MKDIR)
98         @echo linking $@
99         $(NOECHO)$(MODULE_LD) -r $^ -o $@
100
101 # track all the objects built
102 ALLOBJS += $(MODULE_OBJS)
103
104 # track the module object for make clean
105 GENERATED += $(MODULE_OBJECT)
106
107 # make the rest of the build depend on our output
108 ifeq ($(MONITOR_MODULE),true)
109 ALLMONITOR_OBJS := $(ALLMONITOR_OBJS) $(MODULE_OBJECT)
110 else
111 ALLMODULE_OBJS := $(ALLMODULE_OBJS) $(MODULE_OBJECT)
112 endif
113
114 # empty out any vars set here
115 MODULE :=
116 MODULE_SRCDIR :=
117 MODULE_BUILDDIR :=
118 MODULE_DEPS :=
119 MODULE_SRCS :=
120 MODULE_OBJS :=
121 MODULE_DEFINES :=
122 MODULE_OPTFLAGS :=
123 MODULE_COMPILEFLAGS :=
124 MODULE_CFLAGS :=
125 MODULE_CPPFLAGS :=
126 MODULE_ASMFLAGS :=
127 MODULE_SRCDEPS :=
128 MODULE_EXTRA_OBJS :=
129 MODULE_CONFIG :=
130 MODULE_OBJECT :=
131 MODULE_ARM_OVERRIDE_SRCS :=
132 MODULE_CC :=
133 MODULE_LD :=
134 MONITOR_MODULE :=