]> rtime.felk.cvut.cz Git - l4.git/blob - kernel/fiasco/src/Modules.arm
Inital import
[l4.git] / kernel / fiasco / src / Modules.arm
1 # -*- makefile -*-
2
3 ###############################################################################
4
5
6 SUBSYSTEMS :=   ABI LIBAMM KERNEL LIBK DRIVERS MINILIBC \
7                 CXXLIB VERSION JABI TCBOFFSET CRT0
8
9
10 PREPROCESS_PARTS        += arch $(CONFIG_ABI) 32bit $(CONFIG_XARCH) \
11                            h3800 noncont_mem \
12                            abs_syscalls
13
14 PREPROCESS_PARTS-$(CONFIG_SERIAL)             += serial
15 PREPROCESS_PARTS-$(CONFIG_MP)                 += mp
16 PREPROCESS_PARTS-$(CONFIG_FPU)                += fpu
17 PREPROCESS_PARTS-$(CONFIG_LIST_ALLOC_SANITY)  += list_alloc_debug
18 PREPROCESS_PARTS-$(CONFIG_JDB)                += debug jdb log
19 PREPROCESS_PARTS-$(CONFIG_PERF_CNT)           += perf_cnt
20
21 PREPROCESS_PARTS-$(CONFIG_ARM_920T)                 += armv5 arm920t vcache
22 PREPROCESS_PARTS-$(CONFIG_ARM_926)                  += armv5 926 vcache
23 PREPROCESS_PARTS-$(CONFIG_ARM_V6PLUS)               += armv6plus
24 PREPROCESS_PARTS-$(CONFIG_ARM_V6)                   += armv6
25 PREPROCESS_PARTS-$(CONFIG_ARM_V7)                   += armv7
26 PREPROCESS_PARTS-$(CONFIG_ARM_1176)                 += arm1176
27 PREPROCESS_PARTS-$(CONFIG_ARM_MPCORE)               += mpcore
28 PREPROCESS_PARTS-$(CONFIG_ARM_CORTEX_A8)            += armca8
29 PREPROCESS_PARTS-$(CONFIG_ARM_CORTEX_A9)            += armca9
30 PREPROCESS_PARTS-$(CONFIG_ARM_TZ)                   += tz
31 PREPROCESS_PARTS-$(CONFIG_ARM_1176_CACHE_ALIAS_FIX) += arm1176_cache_alias_fix
32 PREPROCESS_PARTS-$(CONFIG_SCHED_FIXED_PRIO)  += sched_fixed_prio
33 PREPROCESS_PARTS-$(CONFIG_SCHED_WFQ)         += sched_wfq
34 PREPROCESS_PARTS-$(CONFIG_SCHED_FP_WFQ)      += sched_fp_wfq
35
36 PREPROCESS_PARTS        += $(PREPROCESS_PARTS-y)
37
38 OBJ_SPACE-y = phys
39 OBJ_SPACE-  = virt
40 OBJ_SPACE   = $(OBJ_SPACE-$(CONFIG_DISABLE_VIRT_OBJ_SPACE))
41
42
43 ifeq ("$(CONFIG_ARM_1176)@$(CONFIG_ARM_1176_CACHE_ALIAS_FIX)","y@")
44 OBJ_SPACE_TYPE = phys
45 else
46 OBJ_SPACE_TYPE = $(if $(CONFIG_ARM_V6PLUS),$(OBJ_SPACE),phys)
47 endif
48
49 PREPROCESS_PARTS        += obj_space_$(OBJ_SPACE_TYPE)
50
51 #
52 # TYPES subsystem
53 #
54
55 PRIVATE_INCDIR += types/$(CONFIG_XARCH) types
56
57 VPATH_LIBUART  := $(srcdir)/lib/uart $(srcdir)/lib/uart/arm
58 PRIVATE_INCDIR += lib/uart
59
60 #
61 # DRIVERS Subsystem
62 #
63 DRIVERS                 := libdrivers.a libgluedriverslibc.a
64 VPATH                   += drivers/$(CONFIG_XARCH) drivers
65 PRIVATE_INCDIR          += drivers/$(CONFIG_XARCH) drivers
66 INTERFACES_DRIVERS      := sa1100 mux_console console uart filter_console \
67                            h3xxx io mem mmu reset processor delayloop
68 io_IMPL                 := io io-arm
69 mmu_IMPL                := mmu mmu-arm
70 mem_IMPL                := mem mem-arm
71 uart_IMPL               := uart
72 reset_IMPL              :=
73 processor_IMPL          := processor processor-arm
74 CXXSRC_DRIVERS          := glue_libc.cc 
75 NOOPT                   += $(patsubst %.o, %, $(OBJ_DRIVERS))
76 ALWAYS_INLINE           += mem
77
78 #
79 # MINILIBC Subsystem
80 #
81 MINILIBC        := libc.a
82 VPATH           += lib/minilibc/$(CONFIG_XARCH) lib/minilibc
83 PRIVATE_INCDIR  += lib/minilibc/$(CONFIG_XARCH)/include lib/minilibc/include
84 CSRC_MINILIBC   := atexit.c memccpy.c memcmp.c memmove.c memset.c memcpy.c \
85                    memchr.c panic.c strchr.c strcmp.c strcpy.c strlen.c \
86                    strncmp.c strncpy.c strstr.c __assert_fail.c printf.c \
87                    __v_printf.c vprintf.c strtol.c strtoul.c __lltostr.c \
88                    __ltostr.c putchar.c puts.c getchar.c gets.c \
89                    construction.c sprintf.c snprintf.c vsnprintf.c vsprintf.c \
90                    longjmp.c isalnum.c isalpha.c isascii.c isblank.c \
91                    iscntrl.c isdigit.c isgraph.c islower.c isprint.c \
92                    ispunct.c isspace.c isupper.c isxdigit.c strspn.c \
93                    strcspn.c tolower.c raise.c aeabi.c
94 ASSRC_MINILIBC  := setjmp.S
95 NOOPT           += $(patsubst %.o, %, $(OBJ_MINILIBC))
96
97
98 #
99 # LIBAMM subsystem
100 #
101 LIBAMM          := libamm.a
102 VPATH           += lib/amm
103 PRIVATE_INCDIR  += lib/amm
104 CSRC_LIBAMM     := amm_alloc_entry.c amm_allocate.c amm_deallocate.c amm_destroy.c \
105                    amm_dump.c amm_find_addr.c amm_find_gen.c amm_free_entry.c \
106                    amm_init.c amm_init_gen.c amm_iterate.c amm_iterate_gen.c \
107                    amm_join.c amm_modify.c amm_protect.c amm_reserve.c \
108                    amm_select.c amm_split.c
109
110 #
111 # LIBGZIP subsystem (only for Jdb)
112 #
113 ifneq ($(CONFIG_JDB_GZIP),)
114   LIBGZIP               := libgzip.a
115   VPATH         += lib/gzip
116   PRIVATE_INCDIR        += lib/gzip
117   CSRC_LIBGZIP  := adler32.c crc32.c gzip.c trees.c deflate.c zutil.c
118   NOOPT         += $(patsubst %.o, %, $(OBJ_LIBGZIP))
119 endif
120
121
122 #
123 # JABI Subsystem
124 #
125 JABI                    := libjabi.a
126 VPATH                   += jabi/$(CONFIG_XARCH) jabi
127 INTERFACES_JABI         := jdb_ktrace
128
129 #
130 # ABI Subsystem
131 #
132
133 ABI             := libabi.a
134 VPATH           += abi/$(CONFIG_XARCH) abi 
135
136 INTERFACES_ABI  := kip l4_types l4_fpage l4_msg_item \
137                    l4_buf_desc l4_error
138
139 l4_types_IMPL   := l4_types l4_types-debug
140
141
142 # x0!=32Bit UIDs
143 kip_IMPL        := kip kip-debug kip-arm
144
145
146 #
147 # KERNEL subsystem
148 #
149 KERNEL          := fiasco
150 KERNEL_EXTRA    := Symbols
151 VPATH           += kern/$(CONFIG_XARCH) kern kern/shared
152 VPATH           += jdb/arm jdb
153 PRIVATE_INCDIR  += kern/$(CONFIG_XARCH) kern kern/shared
154
155 INTERFACES_KERNEL :=    kmem boot_info pages __main globals config \
156                         main cache kobject_mapdb dbg_page_info \
157                         bitmap kernel_uart pagetable mem_layout \
158                         mapped_alloc kmem_alloc kip_init kmem_space \
159                         queue_item queue cpu_mask rcupdate irq_pin \
160                         mem_unit boot_uart_init kernel_console cpu mem_region \
161                         thread kobject_helper icu_helper \
162                         syscalls paging vmem_alloc kdb_ke terminate \
163                         cpu_lock irq sender startup per_cpu_data \
164                         per_cpu_data_alloc ptab_base ref_obj ref_ptr \
165                         entry_frame irq_chip helping_lock switch_lock \
166                         kmem_slab_simple region kmem_slab slab_cache_anon \
167                         thread_state context mp_lock sched_context fpu \
168                         fpu_state kobject_dbg kobject l4_buf_iter continuation \
169                         mapping mappable mapping_tree \
170                         mapdb map_util mem_space mem_space_sigma0    \
171                         space task thread_lock irq_chip_generic \
172                         receiver timer factory ipc_gate vcpu \
173                         timeout ipc_timeout ipc_sender \
174                         timeslice_timeout spin_lock \
175                         dirq fpu_alloc kernel_thread pic cmdline \
176                         buddy_alloc trap_state warn \
177                         bootstrap virq vkey kern_lib_page \
178                         watchdog perf_cnt jdb_extensions kernel_task \
179                         ram_quota lock irq_controller \
180                         obj_space vlog outer_cache \
181                         utcb_init utcb_support prio_list sys_call_page \
182                         app_cpu_thread ipi scheduler \
183                         clock ready_queue_wfq ready_queue_fp
184
185 PREPROCESS_PARTS        += ulock
186 INTERFACES_KERNEL       += u_semaphore
187
188 INTERFACES_KERNEL-$(CONFIG_SERIAL) += uart_console
189 INTERFACES_KERNEL-$(CONFIG_ARM_TZ)      += vm
190
191 INTERFACES_KERNEL += $(INTERFACES_KERNEL-y)
192
193
194 boot_info_IMPL          := boot_info boot_info-arch
195 bootstrap_IMPL          := bootstrap
196 clock_IMPL              := clock
197 config_IMPL             := config config-arm
198 context_IMPL            := context context-arm context-vcpu
199 continuation_IMPL       := continuation-arm
200 cpu_IMPL                := cpu cpu-arm
201 cpu_lock_IMPL           := cpu_lock cpu_lock-generic
202 entry_frame_IMPL        := entry_frame entry_frame-arm                       \
203                            entry_frame-abs-timeout-hack
204 dirq_IMPL               := dirq dirq-arm
205 fpu_IMPL                := fpu fpu-arm
206 ipi_IMPL                := ipi ipi-arm
207 kdb_ke_IMPL             := kdb_ke kdb_ke-arm
208 kernel_task_IMPL        := kernel_task kernel_task-arm
209 kernel_thread_IMPL      := kernel_thread kernel_thread-std kernel_thread-arm
210 kernel_uart_IMPL        := kernel_uart
211 map_util_IMPL           := map_util map_util-mem map_util-objs
212 mapping_IMPL            := mapping-arm mapping
213 mem_layout_IMPL         := mem_layout mem_layout-arm mem_layout-noncont
214 mem_space_IMPL          := mem_space mem_space-arm mem_space-user
215 kmem_alloc_IMPL         := kmem_alloc kmem_alloc-arm
216 obj_space_IMPL          := obj_space obj_space-$(OBJ_SPACE_TYPE)
217 outer_cache_IMPL        := outer_cache
218 pagetable_IMPL          := pagetable pagetable-arch
219 paging_IMPL             := paging-arm paging
220 perf_cnt_IMPL           := perf_cnt perf_cnt-arm
221 pic_IMPL                := pic pic-arm
222 sched_context_IMPL      := sched_context-wfq sched_context-fixed_prio \
223                            sched_context-fp_wfq sched_context
224 space_IMPL              := space space-arm
225 spin_lock_IMPL          := spin_lock spin_lock-arm
226 startup_IMPL            := startup startup-arm
227 sys_call_page_IMPL      := sys_call_page sys_call_page-arm
228 task_IMPL               := task task-arm
229 thread_IMPL             := thread thread-list thread-arm \
230                            thread-jdb thread-ipc \
231                            thread-pagefault  thread-log \
232                            thread-ulock thread-vcpu
233 timer_IMPL              := timer timer-arm
234 utcb_support_IMPL       := utcb_support utcb_support-arm
235 vmem_alloc_IMPL         := vmem_alloc vmem_alloc-arch
236 tb_entry_IMPL           := tb_entry tb_entry-arm
237
238 JDB_INTERFACES          := jdb_handler_queue jdb_module jdb_pic            \
239                            jdb jdb_core jdb_prompt_ext jdb_list            \
240                            jdb_prompt_module jdb_exit_module jdb_kern_info \
241                            jdb_tcb jdb_screen jdb_thread_list jdb_input    \
242                            jdb_symbol jdb_lines push_console               \
243                            jdb_timeout jdb_dump jdb_ptab                   \
244                            jdb_attach_irq jdb_table                        \
245                            jdb_kern_info_kmem_alloc jdb_kern_info_region   \
246                            jdb_kern_info_kip jdb_mapdb kern_cnt            \
247                            jdb_trace jdb_trace_set jdb_entry_frame         \
248                            jdb_kobject jdb_kobject_names                   \
249                            jdb_util jdb_space jdb_utcb                     \
250                            jdb_trap_state jdb_ipi jdb_rcupdate             \
251                            jdb_ipc_gate jdb_obj_space jdb_log jdb_factory  \
252                            jdb_semaphore jdb_thread jdb_scheduler jdb_sender_list\
253                            jdb_perf jdb_vm jdb_regex jdb_disasm
254
255 JDB_TBUF_IFS            := jdb_tbuf jdb_tbuf_init jdb_tbuf_output          \
256                            jdb_tbuf_show                                   \
257                            tb_entry tb_entry_output
258
259
260 ifeq ("$(CONFIG_JDB)","y")
261 INTERFACES_KERNEL       += $(JDB_INTERFACES) $(JDB_TBUF_IFS) $(DBG_INTERFACES)
262 jdb_IMPL                := jdb jdb-arm jdb-ansi jdb-thread
263 jdb_kern_info_IMPL      := jdb_kern_info jdb_kern_info-arm \
264                            jdb_kern_info-bench jdb_kern_info-bench-arm \
265                            jdb_kern_info-cpu-arm
266 jdb_dump_entry_frame_IMPL:= jdb_dump_entry_frame-arm
267 jdb_tcb_IMPL            := jdb_tcb jdb_tcb-arm
268 jdb_ptab_IMPL           := jdb_ptab jdb_ptab-ia32-ux-arm jdb_ptab-arm
269 jdb_entry_frame_IMPL    := jdb_entry_frame-arm
270 jdb_trace_set_IMPL      := jdb_trace_set jdb_trace_set-arm
271 thread_IMPL             += thread-debug 
272
273 ifneq ($(CONFIG_JDB_GZIP),)
274  ifneq ($(wildcard $(srcdir)/lib/gzip),)
275   SUBSYSTEMS            += LIBGZIP
276   KERNEL_EXTRA_LIBS     += $(LIBGZIP)
277   INTERFACES_KERNEL     += jdb_gzip
278  endif
279 endif
280 endif
281
282 CXXSRC_KERNEL           := kernel_panic.cc libc_backend_lock.cc
283 ASSRC_KERNEL            := ivt.S
284 ifeq ($(CONFIG_MP),y)
285 ASSRC_KERNEL            += tramp-mp.S
286 endif
287
288 NOOPT                   += $(filter jdb%,\
289                              $(foreach in,$(INTERFACES_KERNEL), \
290                                $(if $($(in)_IMPL),$($(in)_IMPL),$(in))))
291 NOOPT                   += tb_entry tb_entry_output
292
293
294 #INTERFACES_KERNEL = boot_info __main mapdb region \
295 #  space_context space space_index space_index_util \
296 #  stack kmem kmem_alloc slab_cache_anon kmem_slab_simple kmem_slab \
297 #  switch_lock thread_lock helping_lock kernel_lock timer \
298 #  thread_state sched context threadid thread_regs sender receiver \
299 #  thread kernel_thread thread_util \
300 #  map_util irq dirq virq console paranoia globals \
301 #  checksum main config
302
303 #
304 # CRT0 subsystem
305 #
306 CRT0            := crt0.o
307 ASSRC_CRT0      := crt0.S
308
309
310 #
311 # CXXLIB Subsystem
312
313 CXXLIB                  := libcxx.a
314 VPATH                   += lib/cxxlib
315 INTERFACES_CXXLIB       := paranoia s_cruft
316
317 #
318 # LIBK subsystem
319 #
320 LIBK            := libk.a
321 VPATH           += lib/libk/$(CONFIG_XARCH) lib/libk
322 PRIVATE_INCDIR  += lib/libk/$(CONFIG_XARCH) lib/libk
323
324 #INTERFACES_LIBK:= atomic lock_guard profile uuencode gmon unistd panic auto_ptr
325 INTERFACES_LIBK := std_macros atomic lock_guard auto_ptr dlist
326 atomic_IMPL     := atomic atomic-arm-up
327
328 ifeq ("$(CONFIG_JDB_DISASM)","y")
329   # $(srcdir)/lib/disasm may be removed
330   ifeq ($(wildcard $(srcdir)/lib/disasm),)
331     $(error $(srcdir)/lib/disasm is missing, disable CONFIG_JDB_DISASM)
332   endif
333   SUBSYSTEMS          += LIBDISASM
334   KERNEL_EXTRA_LIBS   += $(LIBDISASM)
335   PREPROCESS_PARTS    += jdb_disasm
336
337   LIBDISASM           := libdisasm.a
338   VPATH               += lib/disasm lib/disasm/elf lib/disasm/include \
339                          lib/disasm/include/opcode lib/disasm/opcodes \
340                          lib/disasm/libiberty lib/disasm/bfd
341   PRIVATE_INCDIR      += lib/disasm lib/disasm/elf lib/disasm/include \
342                          lib/disasm/include/opcode lib/disasm/opcodes \
343                          lib/disasm/libiberty lib/disasm/bfd
344   PRIVATE_INCDIR      += lib/disasm
345   CSRC_LIBDISASM      := disasm.c arm-dis.c dis-init.c dis-buf.c safe-ctype.c
346   NOOPT               += $(patsubst %.o, %, $(OBJ_LIBDISASM))
347 endif
348
349 #
350 # VERSION subsystem
351 #
352 VERSION         := version.h
353
354 TCBOFFSET       := tcboffset.h
355 CXXSRC_TCBOFFSET        := tcboffset.cc dump_tcboffsets.cc
356
357 BSP_NAME         := $(patsubst "%",%,$(CONFIG_BSP_NAME))
358 MODULES_FILE_BSP := $(srcdir)/kern/arm/bsp/$(BSP_NAME)/Modules
359 ifeq ($(wildcard $(MODULES_FILE_BSP)),)
360   $(error No BSP name defined or no BSP Modules file available)
361 endif
362
363 include $(MODULES_FILE_BSP)
364 VPATH += kern/arm/bsp/$(BSP_NAME) kern/arm/bsp
365
366 ifeq ("$(filter LIBUART, $(SUBSYSTEMS))","LIBUART")
367   LIBUART                       := uart/libuart.a
368 endif
369
370 MODULES_FILES = $(MODULES_FILE) $(MODULES_FILE_BSP)