]> rtime.felk.cvut.cz Git - l4.git/blob - kernel/fiasco/src/Modules.ppc32
update
[l4.git] / kernel / fiasco / src / Modules.ppc32
1 # -*- makefile -*-
2
3 ###############################################################################
4
5
6 SUBSYSTEMS  :=  ABI LIBAMM KERNEL LIBUART LIBK DRIVERS MINILIBC CXXLIB CRT0 \
7                 VERSION JABI TCBOFFSET
8
9
10 PREPROCESS_PARTS        += $(CONFIG_XARCH) $(CONFIG_ABI) 32bit \
11                            abs_syscalls big_endian jdb_thread_names \
12                            obj_space_phys
13
14 PREPROCESS_PARTS-$(CONFIG_SERIAL)             += serial
15 PREPROCESS_PARTS-$(CONFIG_JDB) += debug jdb log
16 PREPROCESS_PARTS-$(CONFIG_SCHED_FIXED_PRIO)  += sched_fixed_prio
17 PREPROCESS_PARTS-$(CONFIG_SCHED_WFQ)         += sched_wfq
18 PREPROCESS_PARTS-$(CONFIG_SCHED_FP_WFQ)      += sched_fp_wfq
19 PREPROCESS_PARTS        += $(PREPROCESS_PARTS-y)
20
21 #
22 # TYPES subsystem
23 #
24 PRIVATE_INCDIR += types/$(CONFIG_XARCH) types
25
26 #
27 # LIBUART subsystem
28 #
29 ifeq ("$(filter LIBUART, $(SUBSYSTEMS))","LIBUART")
30 LIBUART                 := uart/libuart.a
31 PREPROCESS_PARTS        += libuart
32 endif
33
34 OBJECTS_LIBUART         += uart_of.o uart_mpc52xx.o
35 VPATH_LIBUART           := $(srcdir)/lib/uart \
36                            $(srcdir)/lib/uart/$(CONFIG_XARCH)
37 PRIVATE_INCDIR          += lib/uart drivers/$(CONFIG_XARCH)/include
38
39 #
40 # DRIVERS Subsystem
41 #
42 DRIVERS                 := libdrivers.a libgluedriverslibc.a
43 VPATH                   += drivers/$(CONFIG_XARCH) drivers
44 PRIVATE_INCDIR          += drivers/$(CONFIG_XARCH) drivers 
45 INTERFACES_DRIVERS      := mux_console console mem reset uart filter_console \
46                            processor delayloop io
47 io_IMPL                 := io io-ppc32
48 mem_IMPL                := mem mem-ppc32
49 #uart_IMPL              := uart uart-sa1100 uart-16550 uart-pl011
50 reset_IMPL              := reset-ppc32
51 processor_IMPL          := processor processor-ppc32
52 uart_IMPL               := uart
53 CXXSRC_DRIVERS          := glue_libc.cc
54 NOOPT                   += $(patsubst %.o, %, $(OBJ_DRIVERS))
55
56 #
57 # MINILIBC Subsystem
58 #
59 MINILIBC        := libc.a
60 VPATH           += lib/minilibc/$(CONFIG_XARCH) lib/minilibc
61 PRIVATE_INCDIR  += lib/minilibc/$(CONFIG_XARCH)/include lib/minilibc/include
62 CSRC_MINILIBC   := atexit.c memccpy.c memcmp.c memmove.c memset.c memcpy.c \
63                    memchr.c panic.c strchr.c strcmp.c strcpy.c strlen.c \
64                    strncmp.c strncpy.c strstr.c __assert_fail.c printf.c \
65                    __v_printf.c vprintf.c strtol.c strtoul.c __lltostr.c \
66                    __ltostr.c putchar.c puts.c getchar.c gets.c \
67                    construction.c sprintf.c snprintf.c vsnprintf.c vsprintf.c \
68                    longjmp.c isalnum.c isalpha.c isascii.c isblank.c \
69                    iscntrl.c isdigit.c isgraph.c islower.c isprint.c \
70                    ispunct.c isspace.c isupper.c isxdigit.c strspn.c \
71                    strcspn.c tolower.c
72 ASSRC_MINILIBC  := setjmp.S
73 NOOPT           += $(patsubst %.o, %, $(OBJ_MINILIBC))
74
75
76 #
77 # LIBAMM subsystem
78 #
79 LIBAMM          := libamm.a
80 VPATH           += lib/amm
81 PRIVATE_INCDIR  += lib/amm
82 CSRC_LIBAMM     := amm_alloc_entry.c amm_allocate.c amm_deallocate.c amm_destroy.c \
83                    amm_dump.c amm_find_addr.c amm_find_gen.c amm_free_entry.c \
84                    amm_init.c amm_init_gen.c amm_iterate.c amm_iterate_gen.c \
85                    amm_join.c amm_modify.c amm_protect.c amm_reserve.c \
86                    amm_select.c amm_split.c
87
88
89 #
90 # JABI Subsystem
91 #
92 JABI            := libjabi.a
93 VPATH           += jabi/$(CONFIG_XARCH) jabi
94 INTERFACES_JABI := jdb_ktrace
95
96
97 #
98 # ABI Subsystem
99 #
100 ABI             := libabi.a
101 VPATH           += abi/$(CONFIG_XARCH) abi
102 INTERFACES_ABI  := kip l4_types l4_fpage l4_msg_item l4_buf_desc l4_error
103
104 kip_IMPL        := kip kip-debug kip-ppc32
105 l4_types_IMPL   := l4_types l4_types-debug
106
107 #
108 # KERNEL subsystem
109 #
110 KERNEL          := fiasco
111 KERNEL_EXTRA    := Symbols
112 VPATH           += kern/$(CONFIG_XARCH) kern
113 VPATH           += jdb/$(CONFIG_XARCH) jdb
114 PRIVATE_INCDIR  += kern/$(CONFIG_XARCH) kern kern/ia32
115
116 INTERFACES_KERNEL :=    banner bitmap boot_info boot_uart_init bootstrap       \
117                         buddy_alloc cmdline config context cpu scheduler      \
118                         clock cpu_lock cpu_mask decrementer dbg_page_info \
119                         dirq entry_frame factory fpu fpu_alloc fpu_state       \
120                         globals helping_lock ipc_gate ipc_timeout ipi irq      \
121                         irq_chip irq_controller irq_pin kernel_console        \
122                         kernel_thread kernel_task kernel_uart kdb_ke kip_init  \
123                         kmem kmem_alloc kmem_slab kmem_slab_simple kobject     \
124                         l4_buf_iter lock main map_util mapdb mappable          \
125                         mapped_alloc mapping mapping_tree mem_layout mem_space \
126                         mem_space_sigma0 mem_unit msr obj_space paging         \
127                         per_cpu_data per_cpu_data_alloc perf_cnt pic ppc_types \
128                         prio_list queue queue_item pages ptab_base  \
129                         ram_quota rcupdate receiver ref_obj ref_ptr ipc_sender \
130                         sched_context sender kobject_mapdb spin_lock           \
131                         slab_cache_anon space startup switch_lock sys_call_page\
132                         syscalls task terminate thread_lock thread_state       \
133                         timeout timeslice_timeout timer trap_state thread      \
134                         util utcb_init utcb_support vkey virq vlog             \
135                         vmem_alloc warn watchdog continuation irq_chip_generic \
136                         kobject_dbg kobject_helper icu_helper vcpu \
137                         ready_queue_wfq ready_queue_fp
138
139 PREPROCESS_PARTS        += ulock
140 INTERFACES_KERNEL       += u_semaphore
141 INTERFACES_KERNEL-$(CONFIG_SERIAL) += uart_console
142
143 INTERFACES_KERNEL += $(INTERFACES_KERNEL-y)
144
145
146 boot_info_IMPL          := boot_info boot_info-ppc32
147 clock_IMPL              := clock
148 config_IMPL             := config config-ppc32
149 context_IMPL            := context context-ppc32 context-vcpu
150 continuation_IMPL       := continuation-ppc32
151 cpu_IMPL                := cpu cpu-ppc32
152 cpu_lock_IMPL           := cpu_lock cpu_lock-generic
153 dirq_IMPL               := dirq dirq-ppc32
154 entry_frame_IMPL        := entry_frame entry_frame-ppc32
155 kdb_ke_IMPL             := kdb_ke kdb_ke-ppc32
156 kernel_task_IMPL        := kernel_task kernel_task-ppc32
157 kernel_thread_IMPL      := kernel_thread kernel_thread-std kernel_thread-ppc32
158 kernel_uart_IMPL        := kernel_uart kernel_uart-ppc32
159 kmem_alloc_IMPL         := kmem_alloc kmem_alloc-ppc32
160 kmem_slab_IMPL          := kmem_slab kmem_slab-ppc32
161 map_util_IMPL           := map_util map_util-mem map_util-objs
162 mapping_IMPL            := mapping-ppc32 mapping
163 mem_layout_IMPL         := mem_layout mem_layout-ppc32
164 mem_unit_IMPL           := mem_unit-ppc32
165 mem_space_IMPL          := mem_space mem_space-user mem_space-ppc32 \
166                            mem_space-htab mem_space-cache mem_space-user-ppc32
167 obj_space_IMPL          := obj_space obj_space-phys
168 paging_IMPL             := paging-ppc32 paging
169 pic_IMPL                := pic
170 sched_context_IMPL      := sched_context-wfq sched_context-fixed_prio \
171                            sched_context-fp_wfq sched_context
172 space_IMPL              := space space-ppc32
173 startup_IMPL            := startup startup-ppc32
174 sys_call_page_IMPL      := sys_call_page sys_call_page-ppc32
175 task_IMPL               := task task-ppc32
176 timer_IMPL              := timer timer-decr-ppc32
177 thread_IMPL             := thread thread-list thread-log thread-pagefault \
178                            thread-ppc32 thread-ipc thread-jdb \
179                            thread-ulock thread-vcpu
180 utcb_init_IMPL          := utcb_init utcb_init-ppc32
181 utcb_support_IMPL       := utcb_support utcb_support-ppc32
182 vmem_alloc_IMPL         := vmem_alloc vmem_alloc-ppc32
183 tb_entry_IMPL           := tb_entry tb_entry-ppc32
184 warn_IMPL               := warn warn-ppc32
185
186
187 #
188 # JDB subsystem
189 #
190 ifeq ("$(CONFIG_JDB)","y")
191 JDB_INTERFACES          := jdb jdb_attach_irq jdb_core jdb_scheduler jdb_entry_frame \
192                            jdb_exit_module jdb_factory jdb_handler_queue       \
193                            jdb_input jdb_ipc_gate jdb_kobject jdb_kobject_names\
194                            jdb_lines jdb_list jdb_module jdb_prompt_module     \
195                            jdb_obj_space jdb_prompt_ext jdb_screen jdb_space   \
196                            jdb_symbol jdb_table jdb_tcb jdb_thread             \
197                            jdb_thread_list jdb_trace jdb_util kern_cnt         \
198                            push_console jdb_regex jdb_disasm jdb_bp
199 JDB_TBUF_IFS            := jdb_tbuf jdb_tbuf_init jdb_tbuf_output \
200                            jdb_tbuf_show tb_entry tb_entry_output
201
202 INTERFACES_KERNEL       += $(JDB_INTERFACES) $(JDB_TBUF_IFS) #$(DBG_INTERFACES)
203 jdb_IMPL                := jdb jdb-ansi jdb-ppc32 jdb-thread
204 jdb_tcb_IMPL            := jdb_tcb jdb_tcb-ppc32
205 jdb_entry_frame_IMPL    := jdb_entry_frame-ppc32
206 jdb_bp                  := jdb_bp
207 thread_IMPL             += thread-debug 
208 endif
209
210 CXXSRC_KERNEL           := kernel_panic.cc libc_backend_lock.cc
211 ASSRC_KERNEL            := exception.S phys_mem.S
212
213 NOOPT                   += $(filter jdb%,\
214                              $(foreach in,$(INTERFACES_KERNEL), \
215                                $(if $($(in)_IMPL),$($(in)_IMPL),$(in))))
216 NOOPT                   += tb_entry #tb_entry_output
217
218 #
219 # CRT0 subsystem
220 #
221 CRT0            := crt0.o
222 ASSRC_CRT0      := crt0.S
223
224
225 #
226 # CXXLIB Subsystem
227
228 CXXLIB                  := libcxx.a
229 VPATH                   += lib/cxxlib
230 INTERFACES_CXXLIB       := paranoia s_cruft
231
232 #
233 # LIBK subsystem
234 #
235 LIBK            := libk.a
236 VPATH           += lib/libk/$(CONFIG_XARCH) lib/libk
237 PRIVATE_INCDIR  += lib/libk/$(CONFIG_XARCH) lib/libk
238
239 INTERFACES_LIBK := auto_ptr atomic dlist lock_guard mem_region std_macros
240 atomic_IMPL     := atomic atomic-ppc32
241
242 #
243 # LIBDISASM subsystem (only for Jdb)
244 #
245 ifeq ("$(CONFIG_JDB_DISASM)","y")
246   # $(srcdir)/lib/disasm may be removed
247   ifeq ($(wildcard $(srcdir)/lib/disasm),)
248     $(error $(srcdir)/lib/disasm is missing, disable CONFIG_JDB_DISASM)
249   endif
250   SUBSYSTEMS          += LIBDISASM
251   KERNEL_EXTRA_LIBS   += $(LIBDISASM)
252   PREPROCESS_PARTS    += jdb_disasm
253
254   LIBDISASM           := libdisasm.a
255   VPATH               += lib/disasm lib/disasm/elf lib/disasm/include \
256                          lib/disasm/include/opcode lib/disasm/opcodes \
257                          lib/disasm/libiberty lib/disasm/bfd
258   PRIVATE_INCDIR      += lib/disasm lib/disasm/elf lib/disasm/include \
259                          lib/disasm/include/opcode lib/disasm/opcodes \
260                          lib/disasm/libiberty lib/disasm/bfd
261   PRIVATE_INCDIR      += lib/disasm
262   CSRC_LIBDISASM      := disasm.c ppc-dis.c ppc-opc.c dis-init.c dis-buf.c \
263                          safe-ctype.c libbfd.c
264   NOOPT               += $(patsubst %.o, %, $(OBJ_LIBDISASM))
265 endif
266
267 #
268 # VERSION subsystem
269 #
270 VERSION         := version.h
271
272 TCBOFFSET       := tcboffset.h
273 CXXSRC_TCBOFFSET        := tcboffset.cc dump_tcboffsets.cc
274
275 #
276 # BSP subsystem
277 #
278 BSP_NAME         := $(patsubst "%",%,$(CONFIG_BSP_NAME))
279 MODULES_FILE_BSP := $(srcdir)/kern/ppc32/bsp/$(BSP_NAME)/Modules
280 ifeq ($(wildcard $(MODULES_FILE_BSP)),)
281   $(error No BSP name defined or no BSP Modules file available)
282 endif
283
284 include $(MODULES_FILE_BSP)
285 VPATH += kern/ppc32/bsp/$(BSP_NAME) kern/ppc32/bsp
286
287 ifeq ("$(filter LIBUART, $(SUBSYSTEMS))","LIBUART")
288   LIBUART                       := uart/libuart.a
289 endif
290
291 MODULES_FILES = $(MODULES_FILE) $(MODULES_FILE_BSP)