3 ###############################################################################
5 include $(srcdir)/Modules.generic
7 SUBSYSTEMS := ABI LIBAMM KERNEL LIBUART LIBK DRIVERS MINILIBC CXXLIB CRT0 \
11 PREPROCESS_PARTS += $(CONFIG_XARCH) $(CONFIG_ABI) 32bit \
12 abs_syscalls big_endian jdb_thread_names \
15 PREPROCESS_PARTS-$(CONFIG_SERIAL) += serial
16 PREPROCESS_PARTS-$(CONFIG_JDB) += debug jdb log
17 PREPROCESS_PARTS-$(CONFIG_SCHED_FIXED_PRIO) += sched_fixed_prio
18 PREPROCESS_PARTS-$(CONFIG_SCHED_WFQ) += sched_wfq
19 PREPROCESS_PARTS-$(CONFIG_SCHED_FP_WFQ) += sched_fp_wfq
20 PREPROCESS_PARTS += $(PREPROCESS_PARTS-y)
25 PRIVATE_INCDIR += types/$(CONFIG_XARCH) types
30 ifeq ("$(filter LIBUART, $(SUBSYSTEMS))","LIBUART")
31 LIBUART := uart/libuart.a
32 PREPROCESS_PARTS += libuart
35 OBJECTS_LIBUART += uart_of.o uart_mpc52xx.o
36 VPATH_LIBUART := $(srcdir)/lib/uart \
37 $(srcdir)/lib/uart/$(CONFIG_XARCH)
38 PRIVATE_INCDIR += lib/uart drivers/$(CONFIG_XARCH)/include
43 DRIVERS := libdrivers.a libgluedriverslibc.a
44 VPATH += drivers/$(CONFIG_XARCH) drivers
45 PRIVATE_INCDIR += drivers/$(CONFIG_XARCH) drivers
46 INTERFACES_DRIVERS := mux_console console mem reset uart filter_console \
47 processor delayloop io
48 io_IMPL := io io-ppc32
49 mem_IMPL := mem mem-ppc32
50 #uart_IMPL := uart uart-sa1100 uart-16550 uart-pl011
51 reset_IMPL := reset-ppc32
52 processor_IMPL := processor processor-ppc32
54 CXXSRC_DRIVERS := glue_libc.cc
55 NOOPT += $(patsubst %.o, %, $(OBJ_DRIVERS))
61 VPATH += lib/minilibc/$(CONFIG_XARCH) lib/minilibc
62 PRIVATE_INCDIR += lib/minilibc/$(CONFIG_XARCH)/include lib/minilibc/include
63 CSRC_MINILIBC := atexit.c memccpy.c memcmp.c memmove.c memset.c memcpy.c \
64 memchr.c panic.c strchr.c strcmp.c strcpy.c strlen.c \
65 strncmp.c strncpy.c strstr.c __assert_fail.c printf.c \
66 __v_printf.c vprintf.c strtol.c strtoul.c __lltostr.c \
67 __ltostr.c putchar.c puts.c getchar.c gets.c \
68 construction.c sprintf.c snprintf.c vsnprintf.c vsprintf.c \
69 longjmp.c isalnum.c isalpha.c isascii.c isblank.c \
70 iscntrl.c isdigit.c isgraph.c islower.c isprint.c \
71 ispunct.c isspace.c isupper.c isxdigit.c strspn.c \
73 ASSRC_MINILIBC := setjmp.S
74 NOOPT += $(patsubst %.o, %, $(OBJ_MINILIBC))
82 PRIVATE_INCDIR += lib/amm
83 CSRC_LIBAMM := amm_alloc_entry.c amm_allocate.c amm_deallocate.c amm_destroy.c \
84 amm_dump.c amm_find_addr.c amm_find_gen.c amm_free_entry.c \
85 amm_init.c amm_init_gen.c amm_iterate.c amm_iterate_gen.c \
86 amm_join.c amm_modify.c amm_protect.c amm_reserve.c \
87 amm_select.c amm_split.c
94 VPATH += jabi/$(CONFIG_XARCH) jabi
95 INTERFACES_JABI := jdb_ktrace
102 VPATH += abi/$(CONFIG_XARCH) abi
103 INTERFACES_ABI := kip l4_types l4_fpage l4_msg_item l4_buf_desc l4_error
105 kip_IMPL := kip kip-debug kip-ppc32
106 l4_types_IMPL := l4_types l4_types-debug
112 KERNEL_EXTRA := Symbols
113 VPATH += kern/$(CONFIG_XARCH) kern
114 VPATH += jdb/$(CONFIG_XARCH) jdb
115 PRIVATE_INCDIR += kern/$(CONFIG_XARCH) kern kern/ia32
117 INTERFACES_KERNEL += boot_uart_init bootstrap decrementer msr ppc_types \
118 util utcb_support virq irq_chip_generic
120 PREPROCESS_PARTS += ulock
121 INTERFACES_KERNEL += u_semaphore
122 INTERFACES_KERNEL-$(CONFIG_SERIAL) += uart_console
124 INTERFACES_KERNEL += $(INTERFACES_KERNEL-y)
127 boot_info_IMPL := boot_info boot_info-ppc32
129 config_IMPL := config config-ppc32
130 context_IMPL := context context-ppc32 context-vcpu
131 continuation_IMPL := continuation-ppc32
132 cpu_IMPL := cpu cpu-ppc32
133 cpu_lock_IMPL := cpu_lock cpu_lock-generic
134 dirq_IMPL := dirq dirq-ppc32
135 entry_frame_IMPL := entry_frame entry_frame-ppc32
136 kdb_ke_IMPL := kdb_ke kdb_ke-ppc32
137 kernel_task_IMPL := kernel_task kernel_task-ppc32
138 kernel_thread_IMPL := kernel_thread kernel_thread-std kernel_thread-ppc32
139 kernel_uart_IMPL := kernel_uart kernel_uart-ppc32
140 kmem_alloc_IMPL := kmem_alloc kmem_alloc-ppc32
141 kmem_slab_IMPL := kmem_slab kmem_slab-ppc32
142 map_util_IMPL := map_util map_util-mem map_util-objs
143 mapping_IMPL := mapping-ppc32 mapping
144 mem_layout_IMPL := mem_layout mem_layout-ppc32
145 mem_unit_IMPL := mem_unit-ppc32
146 mem_space_IMPL := mem_space mem_space-user mem_space-ppc32 \
147 mem_space-htab mem_space-cache mem_space-user-ppc32
148 obj_space_IMPL := obj_space obj_space-phys
149 paging_IMPL := paging-ppc32 paging
151 sched_context_IMPL := sched_context-wfq sched_context-fixed_prio \
152 sched_context-fp_wfq sched_context
153 space_IMPL := space space-ppc32
154 startup_IMPL := startup startup-ppc32
155 sys_call_page_IMPL := sys_call_page sys_call_page-ppc32
156 task_IMPL := task task-ppc32
157 timer_IMPL := timer timer-decr-ppc32
158 thread_IMPL := thread thread-list thread-log thread-pagefault \
159 thread-ppc32 thread-ipc thread-jdb \
160 thread-ulock thread-vcpu
161 utcb_init_IMPL := utcb_init utcb_init-ppc32
162 utcb_support_IMPL := utcb_support utcb_support-ppc32
163 vmem_alloc_IMPL := vmem_alloc vmem_alloc-ppc32
164 tb_entry_IMPL := tb_entry tb_entry-ppc32
165 warn_IMPL := warn warn-ppc32
171 ifeq ("$(CONFIG_JDB)","y")
172 JDB_INTERFACES := jdb jdb_attach_irq jdb_core jdb_scheduler jdb_entry_frame \
173 jdb_exit_module jdb_factory jdb_handler_queue \
174 jdb_input jdb_ipc_gate jdb_kobject jdb_kobject_names\
175 jdb_lines jdb_list jdb_module jdb_prompt_module \
176 jdb_obj_space jdb_prompt_ext jdb_screen jdb_space \
177 jdb_symbol jdb_table jdb_tcb jdb_thread \
178 jdb_thread_list jdb_trace jdb_util kern_cnt \
179 push_console jdb_regex jdb_disasm jdb_bp
180 JDB_TBUF_IFS := jdb_tbuf jdb_tbuf_init jdb_tbuf_output \
181 jdb_tbuf_show tb_entry tb_entry_output
183 INTERFACES_KERNEL += $(JDB_INTERFACES) $(JDB_TBUF_IFS) #$(DBG_INTERFACES)
184 jdb_IMPL := jdb jdb-ansi jdb-ppc32 jdb-thread
185 jdb_tcb_IMPL := jdb_tcb jdb_tcb-ppc32
186 jdb_entry_frame_IMPL := jdb_entry_frame-ppc32
188 thread_IMPL += thread-debug
191 CXXSRC_KERNEL := kernel_panic.cc libc_backend_lock.cc
192 ASSRC_KERNEL := exception.S phys_mem.S
194 NOOPT += $(filter jdb%,\
195 $(foreach in,$(INTERFACES_KERNEL), \
196 $(if $($(in)_IMPL),$($(in)_IMPL),$(in))))
197 NOOPT += tb_entry #tb_entry_output
211 INTERFACES_CXXLIB := paranoia s_cruft
217 VPATH += lib/libk/$(CONFIG_XARCH) lib/libk
218 PRIVATE_INCDIR += lib/libk/$(CONFIG_XARCH) lib/libk
220 INTERFACES_LIBK := auto_ptr atomic dlist lock_guard std_macros
221 atomic_IMPL := atomic atomic-ppc32
224 # LIBDISASM subsystem (only for Jdb)
226 ifeq ("$(CONFIG_JDB_DISASM)","y")
227 # $(srcdir)/lib/disasm may be removed
228 ifeq ($(wildcard $(srcdir)/lib/disasm),)
229 $(error $(srcdir)/lib/disasm is missing, disable CONFIG_JDB_DISASM)
231 SUBSYSTEMS += LIBDISASM
232 KERNEL_EXTRA_LIBS += $(LIBDISASM)
233 PREPROCESS_PARTS += jdb_disasm
235 LIBDISASM := libdisasm.a
236 VPATH += lib/disasm lib/disasm/elf lib/disasm/include \
237 lib/disasm/include/opcode lib/disasm/opcodes \
238 lib/disasm/libiberty lib/disasm/bfd
239 PRIVATE_INCDIR += lib/disasm lib/disasm/elf lib/disasm/include \
240 lib/disasm/include/opcode lib/disasm/opcodes \
241 lib/disasm/libiberty lib/disasm/bfd
242 PRIVATE_INCDIR += lib/disasm
243 CSRC_LIBDISASM := disasm.c ppc-dis.c ppc-opc.c dis-init.c dis-buf.c \
244 safe-ctype.c libbfd.c
245 NOOPT += $(patsubst %.o, %, $(OBJ_LIBDISASM))
253 TCBOFFSET := tcboffset.h
254 CXXSRC_TCBOFFSET := tcboffset.cc dump_tcboffsets.cc
259 BSP_NAME := $(patsubst "%",%,$(CONFIG_BSP_NAME))
260 MODULES_FILE_BSP := $(srcdir)/kern/ppc32/bsp/$(BSP_NAME)/Modules
261 ifeq ($(wildcard $(MODULES_FILE_BSP)),)
262 $(error No BSP name defined or no BSP Modules file available)
265 include $(MODULES_FILE_BSP)
266 VPATH += kern/ppc32/bsp/$(BSP_NAME) kern/ppc32/bsp
268 ifeq ("$(filter LIBUART, $(SUBSYSTEMS))","LIBUART")
269 LIBUART := uart/libuart.a
272 MODULES_FILES = $(MODULES_FILE) $(MODULES_FILE_BSP)