TLK: Clean up obsolete files
[3rdparty/ote_partner/tlk.git] / makefile
1 #PREFIX ?= .
2 PREFIX ?= ..
3
4 TOOLCHAIN_PREFIX ?= ../tools/arm-eabi-4.7/bin/arm-eabi-
5 TOOLCHAIN_PREFIX64 ?= ../tools/aarch64-linux-android-4.8/bin/aarch64-linux-android-
6 PROJECT=tegra
7
8 ifeq ($(MAKECMDGOALS),spotless)
9 spotless:
10         rm -rf $(PREFIX)/build-* $(LK_IMAGE)
11 else
12
13 -include local.mk
14 include make/macros.mk
15
16 # If one of our goals (from the commandline) happens to have a
17 # matching project/goal.mk, then we should re-invoke make with
18 # that project name specified...
19
20 project-name := $(firstword $(MAKECMDGOALS))
21
22 ifneq ($(project-name),)
23 ifneq ($(wildcard project/$(project-name).mk),)
24 do-nothing := 1
25 $(MAKECMDGOALS) _all: make-make
26 make-make:
27         @PROJECT=$(project-name) $(MAKE) $(filter-out $(project-name), $(MAKECMDGOALS))
28 endif
29 endif
30
31 ifeq ($(do-nothing),)
32
33 ifeq ($(PROJECT),)
34 $(error No project specified.  Use "make projectname" or put "PROJECT := projectname" in local.mk)
35 endif
36
37 DEBUG ?= 2
38
39 BUILDDIR := $(PREFIX)/build-$(TARGET)
40 OUTBIN := $(BUILDDIR)/lk.bin
41 OUTELF := $(BUILDDIR)/lk
42 OUTSYS := $(BUILDDIR)/lk.sys
43 OUTTASK := $(BUILDDIR)/lk.task
44 CONFIGHEADER := $(BUILDDIR)/config.h
45 IMGBIN := $(BUILDDIR)/img.bin
46 LK_IMAGE ?= $(BUILDDIR)/tos.img
47
48 # conditionally built monitor files
49 MONELF :=
50 MONBIN :=
51
52 INCLUDES := -I$(BUILDDIR) -Iinclude -I../lib/include
53 GLOBAL_OPTFLAGS ?= -Os
54 GLOBAL_COMPILEFLAGS := -g -fno-builtin -finline -W -Wall -Wno-multichar -Wno-unused-parameter -Wno-unused-function -include $(CONFIGHEADER)
55 GLOBAL_CFLAGS := --std=c99 -Werror-implicit-function-declaration
56 #GLOBAL_CFLAGS += -Werror
57 GLOBAL_CPPFLAGS := -fno-exceptions -fno-rtti -fno-threadsafe-statics
58 #GLOBAL_CPPFLAGS += -Weffc++
59 GLOBAL_ASMFLAGS := -DASSEMBLY
60 GLOBAL_LDFLAGS :=
61
62 GLOBAL_COMPILEFLAGS += -ffunction-sections -fdata-sections
63 GLOBAL_LDFLAGS += -gc-sections
64
65 # top level rule
66 all:: $(LK_IMAGE) $(OUTTASK) $(OUTELF).lst $(OUTELF).debug.lst $(OUTELF).sym $(OUTELF).size
67
68 # master module object list
69 ALLOBJS_MODULE :=
70
71 # master object list (for dep generation)
72 ALLOBJS :=
73
74 # a linker script needs to be declared in one of the project/target/platform files
75 LINKER_SCRIPT :=
76 MON_LINKER_SCRIPT :=
77
78 # anything you add here will be deleted in make clean
79 GENERATED := $(CONFIGHEADER)
80
81 # anything added to DEFINES will be put into $(BUILDDIR)/config.h
82 DEFINES := LK=1
83
84 # Anything added to SRCDEPS will become a dependency of every source file in the system.
85 # Useful for header files that may be included by one or more source files.
86 SRCDEPS := $(CONFIGHEADER)
87
88 # these need to be filled out by the project/target/platform rules.mk files
89 TARGET :=
90 PLATFORM :=
91 ARCH :=
92 ALLMODULES :=
93 MODULES :=
94
95 # any rules you put here will also be built by the system before considered being complete
96 EXTRA_BUILDDEPS :=
97
98 # any rules you put here will be depended on in clean builds
99 EXTRA_CLEANDEPS :=
100
101 # any objects you put here get linked with the final image
102 EXTRA_OBJS :=
103
104 include project/$(PROJECT).mk
105 include target/$(TARGET)/rules.mk
106 include platform/$(PLATFORM)/rules.mk
107
108 $(info PROJECT = $(PROJECT))
109 $(info PLATFORM = $(PLATFORM))
110 $(info TARGET = $(TARGET))
111
112 include arch/$(ARCH)/rules.mk
113 include platform/rules.mk
114 include target/rules.mk
115 include kernel/rules.mk
116 include dev/rules.mk
117 include app/rules.mk
118 #include task/rules.mk
119
120 # recursively include any modules in the MODULE variable, leaving a trail of included
121 # modules in the ALLMODULES list
122 include make/recurse.mk
123
124 # any extra top level build dependencies that someone declared
125 all:: $(EXTRA_BUILDDEPS)
126
127 # add some automatic configuration defines
128 DEFINES += \
129         PROJECT_$(PROJECT)=1 \
130         TARGET_$(TARGET)=1 \
131         PLATFORM_$(PLATFORM)=1 \
132         ARCH_$(ARCH)=1 \
133         $(addsuffix =1,$(addprefix WITH_,$(ALLMODULES)))
134
135 # debug build?
136 ifneq ($(DEBUG),)
137 DEFINES += \
138         DEBUG=$(DEBUG)
139 endif
140
141 # allow additional defines from outside the build system
142 ifneq ($(EXTERNAL_DEFINES),)
143 DEFINES += $(EXTERNAL_DEFINES)
144 $(info EXTERNAL_DEFINES = $(EXTERNAL_DEFINES))
145 endif
146
147 DEPS := $(ALLOBJS:%o=%d)
148
149 #$(warning DEPS=$(DEPS))
150
151 # default to no ccache
152 CCACHE ?=
153 CC := $(CCACHE) $(TOOLCHAIN_PREFIX)gcc
154 LD := $(TOOLCHAIN_PREFIX)ld
155 OBJDUMP := $(TOOLCHAIN_PREFIX)objdump
156 OBJCOPY := $(TOOLCHAIN_PREFIX)objcopy
157 CPPFILT := $(TOOLCHAIN_PREFIX)c++filt
158 SIZE := $(TOOLCHAIN_PREFIX)size
159 NM := $(TOOLCHAIN_PREFIX)nm
160
161 # put all of the global build flags in config.h to force a rebuild if any change
162 DEFINES += INCLUDES=\"$(subst $(SPACE),_,$(INCLUDES))\"
163 DEFINES += GLOBAL_COMPILEFLAGS=\"$(subst $(SPACE),_,$(GLOBAL_COMPILEFLAGS))\"
164 DEFINES += GLOBAL_OPTFLAGS=\"$(subst $(SPACE),_,$(GLOBAL_OPTFLAGS))\"
165 DEFINES += GLOBAL_CFLAGS=\"$(subst $(SPACE),_,$(GLOBAL_CFLAGS))\"
166 DEFINES += GLOBAL_CPPFLAGS=\"$(subst $(SPACE),_,$(GLOBAL_CPPFLAGS))\"
167 DEFINES += GLOBAL_ASMFLAGS=\"$(subst $(SPACE),_,$(GLOBAL_ASMFLAGS))\"
168 DEFINES += GLOBAL_LDFLAGS=\"$(subst $(SPACE),_,$(GLOBAL_LDFLAGS))\"
169
170 # comment out or override if you want to see the full output of each command
171 NOECHO ?= @
172
173 #$(warning ALLMODULE_OBJS=$(ALLMODULE_OBJS))
174
175 ifneq ($(OBJS),)
176 $(warning OBJS=$(OBJS))
177 $(error OBJS is not empty, please convert to new module format)
178 endif
179 ifneq ($(OPTFLAGS),)
180 $(warning OPTFLAGS=$(OPTFLAGS))
181 $(error OPTFLAGS is not empty, please use GLOBAL_OPTFLAGS or MODULE_OPTFLAGS)
182 endif
183 ifneq ($(CFLAGS),)
184 $(warning CFLAGS=$(CFLAGS))
185 $(error CFLAGS is not empty, please use GLOBAL_CFLAGS or MODULE_CFLAGS)
186 endif
187 ifneq ($(CPPFLAGS),)
188 $(warning CPPFLAGS=$(CPPFLAGS))
189 $(error CPPFLAGS is not empty, please use GLOBAL_CPPFLAGS or MODULE_CPPFLAGS)
190 endif
191
192 # the logic to compile and link stuff is in here
193 include make/build.mk
194
195 clean: $(EXTRA_CLEANDEPS)
196         rm -f $(ALLOBJS) $(DEPS) $(GENERATED) $(OUTBIN) $(OUTELF) $(OUTSYS) $(OUTTASK) $(OUTELF).lst
197
198 install: all
199         scp $(OUTBIN) 192.168.0.4:/tftproot
200
201 # generate a config.h file with all of the DEFINES laid out in #define format
202 configheader:
203
204 $(CONFIGHEADER): configheader
205         $(call MAKECONFIGHEADER,$@,DEFINES)
206
207 # Empty rule for the .d files. The above rules will build .d files as a side
208 # effect. Only works on gcc 3.x and above, however.
209 %.d:
210
211 ifeq ($(filter $(MAKECMDGOALS), clean), )
212 -include $(DEPS)
213 endif
214
215 .PHONY: configheader
216 endif
217
218 endif # make spotless