]> rtime.felk.cvut.cz Git - l4.git/blob - kernel/fiasco/src/Modules.ppc32
a7c184d0a91a7a8cc4a7fe8e763cef9eb1a4406c
[l4.git] / kernel / fiasco / src / Modules.ppc32
1 # -*- makefile -*-
2
3 ###############################################################################
4
5 include $(srcdir)/Modules.generic
6
7 SUBSYSTEMS  :=  ABI KERNEL LIBUART LIBK DRIVERS MINILIBC CXXLIB CRT0 \
8                 VERSION JABI TCBOFFSET
9
10
11 PREPROCESS_PARTS        += $(CONFIG_XARCH) $(CONFIG_ABI) 32bit \
12                            abs_syscalls big_endian jdb_thread_names \
13                            obj_space_phys
14
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)
21
22 #
23 # TYPES subsystem
24 #
25 PRIVATE_INCDIR += types/$(CONFIG_XARCH) types
26
27 #
28 # LIBUART subsystem
29 #
30 ifeq ("$(filter LIBUART, $(SUBSYSTEMS))","LIBUART")
31 LIBUART                 := uart/libuart.a
32 PREPROCESS_PARTS        += libuart
33 endif
34
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
39
40 #
41 # DRIVERS Subsystem
42 #
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
53 uart_IMPL               := uart
54 CXXSRC_DRIVERS          := glue_libc.cc
55 NOOPT                   += $(patsubst %.o, %, $(OBJ_DRIVERS))
56
57 #
58 # MINILIBC Subsystem
59 #
60 MINILIBC        := libc.a
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 \
72                    strcspn.c tolower.c
73 ASSRC_MINILIBC  := setjmp.S
74 NOOPT           += $(patsubst %.o, %, $(OBJ_MINILIBC))
75
76
77 #
78 # JABI Subsystem
79 #
80 JABI            := libjabi.a
81 VPATH           += jabi/$(CONFIG_XARCH) jabi
82 INTERFACES_JABI := jdb_ktrace
83
84
85 #
86 # ABI Subsystem
87 #
88 ABI             := libabi.a
89 VPATH           += abi/$(CONFIG_XARCH) abi
90 INTERFACES_ABI  := kip l4_types l4_fpage l4_msg_item l4_buf_desc l4_error
91
92 kip_IMPL        := kip kip-debug kip-ppc32
93 l4_types_IMPL   := l4_types l4_types-debug
94
95 #
96 # KERNEL subsystem
97 #
98 KERNEL          := fiasco
99 KERNEL_EXTRA    := Symbols
100 VPATH           += kern/$(CONFIG_XARCH) kern
101 VPATH           += jdb/$(CONFIG_XARCH) jdb
102 PRIVATE_INCDIR  += kern/$(CONFIG_XARCH) kern kern/ia32
103
104 INTERFACES_KERNEL +=    boot_uart_init bootstrap decrementer msr ppc_types     \
105                         util utcb_support irq_chip_generic
106
107 PREPROCESS_PARTS        += ulock
108 INTERFACES_KERNEL       += u_semaphore
109 INTERFACES_KERNEL-$(CONFIG_SERIAL) += uart_console
110
111 INTERFACES_KERNEL += $(INTERFACES_KERNEL-y)
112
113
114 boot_info_IMPL          := boot_info boot_info-ppc32
115 clock_IMPL              := clock
116 config_IMPL             := config config-ppc32
117 context_IMPL            := context context-ppc32 context-vcpu
118 continuation_IMPL       := continuation-ppc32
119 cpu_IMPL                := cpu cpu-ppc32
120 cpu_lock_IMPL           := cpu_lock cpu_lock-generic
121 dirq_IMPL               := dirq dirq-ppc32
122 entry_frame_IMPL        := entry_frame entry_frame-ppc32
123 kdb_ke_IMPL             := kdb_ke kdb_ke-ppc32
124 kernel_task_IMPL        := kernel_task kernel_task-ppc32
125 kernel_thread_IMPL      := kernel_thread kernel_thread-std kernel_thread-ppc32
126 kernel_uart_IMPL        := kernel_uart kernel_uart-ppc32
127 kmem_alloc_IMPL         := kmem_alloc kmem_alloc-ppc32
128 map_util_IMPL           := map_util map_util-mem map_util-objs
129 mapping_IMPL            := mapping-ppc32 mapping
130 mem_layout_IMPL         := mem_layout mem_layout-ppc32
131 mem_unit_IMPL           := mem_unit-ppc32
132 mem_space_IMPL          := mem_space mem_space-user mem_space-ppc32 \
133                            mem_space-htab mem_space-cache mem_space-user-ppc32
134 obj_space_IMPL          := obj_space obj_space-phys
135 paging_IMPL             := paging-ppc32 paging
136 pic_IMPL                := pic
137 sched_context_IMPL      := sched_context-wfq sched_context-fixed_prio \
138                            sched_context-fp_wfq sched_context
139 space_IMPL              := space space-ppc32
140 startup_IMPL            := startup startup-ppc32
141 sys_call_page_IMPL      := sys_call_page sys_call_page-ppc32
142 task_IMPL               := task task-ppc32
143 timer_IMPL              := timer timer-decr-ppc32
144 thread_IMPL             := thread thread-log thread-pagefault \
145                            thread-ppc32 thread-ipc thread-jdb \
146                            thread-ulock thread-vcpu
147 utcb_init_IMPL          := utcb_init utcb_init-ppc32
148 utcb_support_IMPL       := utcb_support utcb_support-ppc32
149 vmem_alloc_IMPL         := vmem_alloc vmem_alloc-ppc32
150 tb_entry_IMPL           := tb_entry tb_entry-ppc32
151 warn_IMPL               := warn warn-ppc32
152
153
154 ifeq ("$(CONFIG_JDB)","y")
155 JDB                     := jdb_compound.o
156 SUBSYSTEMS              += JDB
157 INTERFACES_JDB          := jdb jdb_attach_irq jdb_core jdb_scheduler jdb_entry_frame \
158                            jdb_exit_module jdb_factory jdb_handler_queue       \
159                            jdb_input jdb_ipc_gate jdb_kobject jdb_kobject_names\
160                            jdb_lines jdb_list jdb_module jdb_prompt_module     \
161                            jdb_obj_space jdb_prompt_ext jdb_screen jdb_space   \
162                            jdb_symbol jdb_table jdb_tcb jdb_thread             \
163                            jdb_thread_list jdb_util kern_cnt         \
164                            push_console jdb_regex jdb_disasm jdb_bp            \
165                            jdb_tbuf_output              \
166                            jdb_tbuf_show tb_entry_output
167
168 INTERFACES_KERNEL       += jdb_tbuf jdb_tbuf_init tb_entry jdb_trace
169
170 jdb_IMPL                := jdb jdb-ansi jdb-ppc32 jdb-thread
171 jdb_tcb_IMPL            := jdb_tcb jdb_tcb-ppc32
172 jdb_entry_frame_IMPL    := jdb_entry_frame-ppc32
173 jdb_bp                  := jdb_bp
174 thread_IMPL             += thread-debug 
175 endif
176
177 CXXSRC_KERNEL           := kernel_panic.cc libc_backend_lock.cc
178 ASSRC_KERNEL            := exception.S phys_mem.S
179
180 NOOPT                   += $(filter jdb%,\
181                              $(foreach in,$(INTERFACES_KERNEL), \
182                                $(if $($(in)_IMPL),$($(in)_IMPL),$(in))))
183 NOOPT                   += tb_entry #tb_entry_output
184
185 #
186 # CRT0 subsystem
187 #
188 CRT0            := crt0.o
189 ASSRC_CRT0      := crt0.S
190
191
192 #
193 # CXXLIB Subsystem
194
195 CXXLIB                  := libcxx.a
196 VPATH                   += lib/cxxlib
197 INTERFACES_CXXLIB       := paranoia s_cruft
198
199 #
200 # LIBK subsystem
201 #
202 LIBK            := libk.a
203 VPATH           += lib/libk/$(CONFIG_XARCH) lib/libk
204 PRIVATE_INCDIR  += lib/libk/$(CONFIG_XARCH) lib/libk
205
206 INTERFACES_LIBK := auto_ptr atomic dlist lock_guard std_macros
207 atomic_IMPL     := atomic atomic-ppc32
208
209 #
210 # LIBDISASM subsystem (only for Jdb)
211 #
212 ifeq ("$(CONFIG_JDB_DISASM)","y")
213   # $(srcdir)/lib/disasm may be removed
214   ifeq ($(wildcard $(srcdir)/lib/disasm),)
215     $(error $(srcdir)/lib/disasm is missing, disable CONFIG_JDB_DISASM)
216   endif
217   SUBSYSTEMS          += LIBDISASM
218   KERNEL_EXTRA_LIBS   += $(LIBDISASM)
219   PREPROCESS_PARTS    += jdb_disasm
220
221   LIBDISASM           := libdisasm.a
222   VPATH               += lib/disasm lib/disasm/elf lib/disasm/include \
223                          lib/disasm/include/opcode lib/disasm/opcodes \
224                          lib/disasm/libiberty lib/disasm/bfd
225   PRIVATE_INCDIR      += lib/disasm lib/disasm/elf lib/disasm/include \
226                          lib/disasm/include/opcode lib/disasm/opcodes \
227                          lib/disasm/libiberty lib/disasm/bfd
228   PRIVATE_INCDIR      += lib/disasm
229   CSRC_LIBDISASM      := disasm.c ppc-dis.c ppc-opc.c dis-init.c dis-buf.c \
230                          safe-ctype.c libbfd.c
231   NOOPT               += $(patsubst %.o, %, $(OBJ_LIBDISASM))
232 endif
233
234 #
235 # VERSION subsystem
236 #
237 VERSION         := version.h
238
239 TCBOFFSET       := tcboffset.h
240 CXXSRC_TCBOFFSET        := tcboffset.cc dump_tcboffsets.cc
241
242 #
243 # BSP subsystem
244 #
245 BSP_NAME         := $(patsubst "%",%,$(CONFIG_BSP_NAME))
246 MODULES_FILE_BSP := $(srcdir)/kern/ppc32/bsp/$(BSP_NAME)/Modules
247 ifeq ($(wildcard $(MODULES_FILE_BSP)),)
248   $(error No BSP name defined or no BSP Modules file available)
249 endif
250
251 include $(MODULES_FILE_BSP)
252 VPATH += kern/ppc32/bsp/$(BSP_NAME) kern/ppc32/bsp
253
254 ifeq ("$(filter LIBUART, $(SUBSYSTEMS))","LIBUART")
255   LIBUART                       := uart/libuart.a
256 endif
257
258 MODULES_FILES = $(MODULES_FILE) $(MODULES_FILE_BSP)