source: soft/giet_vm/Makefile @ 386

Last change on this file since 386 was 380, checked in by alain, 10 years ago

Introducing a drivers library (libdrivers.a) to reduce the kernel.elf and boot.elf sizes

File size: 19.1 KB
Line 
1-include build.mk
2
3export # export all variable to sub-Makefile
4CC = mipsel-unknown-elf-gcc
5AS = mipsel-unknown-elf-as
6LD = mipsel-unknown-elf-ld
7DU = mipsel-unknown-elf-objdump
8AR = mipsel-unknown-elf-ar
9
10ARCH ?= ../tsar-trunk-svn-2013/platforms/tsar_generic_iob
11X    ?= 16
12Y    ?= 8
13P    ?= 4
14APP  ?= convol
15
16.PHONY: map.bin
17
18### FAT parameters definition for Disk image
19### sector_size          = 512
20### partition_begin_lba  = 300
21### sector_per_cluster   = 8
22### partition sectors    = 524832
23
24### Objects to be linked for the drivers static library
25DRIVERS_OBJS = build/drivers/dma_driver.o \
26               build/drivers/cma_driver.o \
27               build/drivers/fbf_driver.o \
28               build/drivers/xcu_driver.o \
29               build/drivers/icu_driver.o \
30               build/drivers/ioc_driver.o \
31               build/drivers/bdv_driver.o \
32               build/drivers/hba_driver.o \
33               build/drivers/sdc_driver.o \
34               build/drivers/spi_driver.o \
35               build/drivers/rdk_driver.o \
36               build/drivers/iob_driver.o \
37               build/drivers/mmc_driver.o \
38               build/drivers/mwr_driver.o \
39               build/drivers/nic_driver.o \
40               build/drivers/tim_driver.o \
41               build/drivers/tty_driver.o \
42               build/drivers/pic_driver.o
43
44### Objects to be linked for kernel.elf
45KERNEL_OBJS  = build/common/utils.o       \
46               build/common/vmem.o        \
47               build/fat32/fat32.o        \
48               build/kernel/giet.o        \
49               build/kernel/switch.o      \
50               build/kernel/ctx_handler.o \
51               build/kernel/exc_handler.o \
52               build/kernel/sys_handler.o \
53               build/kernel/irq_handler.o \
54               build/kernel/kernel_init.o
55
56### Objects to be linked for boot.elf
57BOOT_OBJS    = build/common/utils.o       \
58               build/common/vmem.o        \
59               build/fat32/fat32.o        \
60               build/kernel/ctx_handler.o \
61               build/kernel/switch.o      \
62               build/boot/boot.o          \
63               build/boot/boot_entry.o
64
65### Objects to be linked for display.elf
66DISPLAY_OBJS = build/display/main.o \
67               build/libs/stdio.o
68
69### Objects to be linked for router.elf
70ROUTER_OBJS  = build/router/main.o        \
71               build/libs/mwmr_channel.o  \
72               build/libs/stdio.o
73
74### Objects to be linked for hello.elf
75HELLO_OBJS   = build/hello/main.o   \
76               build/libs/stdio.o         
77
78### Objects to be linked for pgcd.elf
79PGCD_OBJS    = build/pgcd/main.o          \
80               build/libs/stdio.o
81
82### Objects to be linked for game.elf
83GAMEOFLIFE_OBJS = build/gameoflife/main.o    \
84                  build/libs/stdio.o         \
85                  build/libs/barrier.o       \
86                  build/libs/remote_malloc.o \
87                  build/libs/spin_lock.o
88                 
89
90### Objects to be linked for dhrystone.elf
91DHRYSTONE_OBJS = build/dhrystone/dhry_1.o \
92                 build/dhrystone/dhry_2.o \
93                 build/libs/stdlib.o      \
94                 build/libs/stdio.o       \
95                 build/libs/string.o      \
96                 build/libs/spin_lock.o   \
97                 build/libs/malloc.o
98
99### Objects to be linked for sort.elf
100SORT_OBJS   = build/sort/main.o          \
101              build/libs/stdio.o         \
102              build/libs/barrier.o       \
103              build/libs/remote_malloc.o \
104              build/libs/spin_lock.o
105
106### Objects to be linked for transpose.elf
107TRANSPOSE_OBJS = build/transpose/main.o     \
108                 build/libs/stdio.o         \
109                 build/libs/barrier.o       \
110                 build/libs/remote_malloc.o \
111                 build/libs/spin_lock.o
112
113### Objects to be linked for convol.elf
114CONVOL_OBJS  = build/convol/main.o        \
115               build/libs/stdio.o         \
116               build/libs/stdlib.o        \
117               build/libs/barrier.o       \
118               build/libs/remote_malloc.o \
119               build/libs/spin_lock.o
120
121CFLAGS = -Wall -ffreestanding -mno-gpopt -mips32 -g -O2
122
123GIET_INCLUDE = -Igiet_boot    \
124               -Igiet_kernel  \
125               -Igiet_xml     \
126               -Igiet_fat32   \
127               -Igiet_drivers \
128               -Igiet_common  \
129               -Igiet_libs    \
130               -I.
131
132USER_INCLUDE = -Igiet_libs    \
133               -Igiet_xml     \
134               -I.
135
136DISK_IMAGE  := hdd/virt_hdd.dmg
137
138all: map.bin                         \
139     hard_config.h                   \
140     giet_vsegs.ld                   \
141     build/boot/boot.elf             \
142     build/kernel/kernel.elf         \
143     build/display/display.elf       \
144     build/hello/hello.elf           \
145     build/pgcd/pgcd.elf             \
146     build/router/router.elf         \
147     build/dhrystone/dhrystone.elf   \
148     build/gameoflife/gameoflife.elf \
149     build/sort/sort.elf             \
150     build/transpose/transpose.elf   \
151     build/convol/convol.elf         \
152     $(DISK_IMAGE)                   
153         
154### Copy always all files into disk image
155        mcopy -o -i $(DISK_IMAGE) build/kernel/kernel.elf ::/build/kernel
156        mcopy -o -i $(DISK_IMAGE) build/display/display.elf ::/build/display
157        mcopy -o -i $(DISK_IMAGE) build/sort/sort.elf ::/build/sort
158        mcopy -o -i $(DISK_IMAGE) build/transpose/transpose.elf ::/build/transpose
159        mcopy -o -i $(DISK_IMAGE) build/convol/convol.elf ::/build/convol
160        mcopy -o -i $(DISK_IMAGE) build/hello/hello.elf ::/build/hello
161        mcopy -o -i $(DISK_IMAGE) build/pgcd/pgcd.elf ::/build/pgcd
162        mcopy -o -i $(DISK_IMAGE) build/router/router.elf ::/build/router
163        mcopy -o -i $(DISK_IMAGE) build/gameoflife/gameoflife.elf ::/build/gameoflife
164        mcopy -o -i $(DISK_IMAGE) build/dhrystone/dhrystone.elf ::/build/dhrystone
165        mcopy -o -i $(DISK_IMAGE) transpose/images.raw ::/misc
166        mcopy -o -i $(DISK_IMAGE) convol/philips_image.raw ::/misc
167        mcopy -o -i $(DISK_IMAGE) map.bin ::/
168### Copy bootloader into sector 2 of disk image
169        dd if=build/boot/boot.elf of=$(DISK_IMAGE) seek=2 conv=notrunc
170### Checking root directory
171        mdir -/ -b -i $(DISK_IMAGE) ::/
172
173### Disk image generation (no files in this step)
174### This requires the generic LINUX/MacOS script "create_dmg" script
175### written by C.Fuguet. (should be installed in GIET-VM root directory).
176$(DISK_IMAGE):
177        ./create_dmg create $(basename $(DISK_IMAGE))
178        mmd -o -i $(DISK_IMAGE) ::/build
179        mmd -o -i $(DISK_IMAGE) ::/build/kernel
180        mmd -o -i $(DISK_IMAGE) ::/build/display
181        mmd -o -i $(DISK_IMAGE) ::/build/sort 
182        mmd -o -i $(DISK_IMAGE) ::/build/transpose
183        mmd -o -i $(DISK_IMAGE) ::/build/convol
184        mmd -o -i $(DISK_IMAGE) ::/build/hello
185        mmd -o -i $(DISK_IMAGE) ::/build/pgcd 
186        mmd -o -i $(DISK_IMAGE) ::/build/router
187        mmd -o -i $(DISK_IMAGE) ::/build/gameoflife
188        mmd -o -i $(DISK_IMAGE) ::/build/dhrystone
189        mmd -o -i $(DISK_IMAGE) ::/misc
190        dd if=$(DISK_IMAGE) of=temp.dmg count=65536
191        mv temp.dmg $(DISK_IMAGE)
192
193### mapping generation: map.bin / map.xml / hard_config.h / giet_vsegs.ld
194map.bin hard_config.h giet_vsegs.ld: $(ARCH)/arch.py  $(APP)/$(APP).py
195        giet_python/genmap --arch=$(ARCH) --x=$(X) --y=$(Y) --p=$(P) --giet=. --$(APP) --xml=.
196
197### drivers compilation
198build/drivers/cma_driver.o: giet_drivers/cma_driver.c  \
199                            giet_drivers/cma_driver.h  \
200                            hard_config.h              \
201                            giet_config.h
202        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
203
204build/drivers/dma_driver.o: giet_drivers/dma_driver.c  \
205                            giet_drivers/dma_driver.h  \
206                            hard_config.h              \
207                            giet_config.h
208        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
209
210build/drivers/fbf_driver.o: giet_drivers/fbf_driver.c  \
211                            giet_drivers/fbf_driver.h  \
212                            hard_config.h              \
213                            giet_config.h
214        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
215
216build/drivers/xcu_driver.o: giet_drivers/xcu_driver.c  \
217                            giet_drivers/xcu_driver.h  \
218                            hard_config.h              \
219                            giet_config.h
220        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
221
222build/drivers/icu_driver.o: giet_drivers/icu_driver.c  \
223                            giet_drivers/icu_driver.h  \
224                            hard_config.h              \
225                            giet_config.h
226        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
227
228build/drivers/ioc_driver.o: giet_drivers/ioc_driver.c  \
229                            giet_drivers/ioc_driver.h  \
230                            hard_config.h              \
231                            giet_config.h
232        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
233
234build/drivers/bdv_driver.o: giet_drivers/bdv_driver.c  \
235                            giet_drivers/bdv_driver.h  \
236                            hard_config.h              \
237                            giet_config.h
238        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
239
240build/drivers/hba_driver.o: giet_drivers/hba_driver.c  \
241                            giet_drivers/hba_driver.h  \
242                            hard_config.h              \
243                            giet_config.h
244        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
245
246build/drivers/sdc_driver.o: giet_drivers/sdc_driver.c  \
247                            giet_drivers/sdc_driver.h  \
248                            hard_config.h              \
249                            giet_config.h
250        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
251
252build/drivers/spi_driver.o: giet_drivers/spi_driver.c  \
253                            giet_drivers/spi_driver.h  \
254                            hard_config.h              \
255                            giet_config.h
256        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
257
258build/drivers/rdk_driver.o: giet_drivers/rdk_driver.c  \
259                            giet_drivers/rdk_driver.h  \
260                            hard_config.h              \
261                            giet_config.h
262        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
263
264build/drivers/iob_driver.o: giet_drivers/iob_driver.c  \
265                            giet_drivers/iob_driver.h  \
266                            hard_config.h              \
267                            giet_config.h
268        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
269
270build/drivers/mmc_driver.o: giet_drivers/mmc_driver.c  \
271                            giet_drivers/mmc_driver.h  \
272                            hard_config.h              \
273                            giet_config.h
274        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
275
276build/drivers/mwr_driver.o: giet_drivers/mwr_driver.c  \
277                            giet_drivers/mwr_driver.h  \
278                            hard_config.h              \
279                            giet_config.h
280        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
281
282build/drivers/nic_driver.o: giet_drivers/nic_driver.c  \
283                            giet_drivers/nic_driver.h  \
284                            hard_config.h              \
285                            giet_config.h
286        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
287
288build/drivers/tim_driver.o: giet_drivers/tim_driver.c  \
289                            giet_drivers/tim_driver.h  \
290                            hard_config.h              \
291                            giet_config.h
292        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
293
294build/drivers/tty_driver.o: giet_drivers/tty_driver.c  \
295                            giet_drivers/tty_driver.h  \
296                            hard_config.h              \
297                            giet_config.h
298        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
299
300build/drivers/pic_driver.o: giet_drivers/pic_driver.c  \
301                            giet_drivers/pic_driver.h  \
302                            hard_config.h              \
303                            giet_config.h
304        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
305
306################################
307### drivers library compilation
308build/drivers/libdrivers.a: $(DRIVERS_OBJS)
309        $(AR) -rcs $@ $(DRIVERS_OBJS)
310
311##########################
312### common compilation
313build/fat32/fat32.o: giet_fat32/fat32.c \
314                     giet_fat32/fat32.h \
315                     hard_config.h      \
316                     giet_config.h
317        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
318
319build/common/utils.o: giet_common/utils.c \
320                      giet_common/utils.h \
321                      hard_config.h       \
322                      giet_config.h
323        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
324
325build/common/vmem.o: giet_common/vmem.c \
326                     giet_common/vmem.h \
327                     hard_config.h      \
328                     giet_config.h
329        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
330
331########################
332### boot compilation
333build/boot/boot.elf: $(BOOT_OBJS)            \
334                     giet_boot/boot.ld       \
335                     build/drivers/libdrivers.a
336        $(LD) -o $@ -T giet_boot/boot.ld $(BOOT_OBJS) -Lbuild/drivers -ldrivers 
337        $(DU) -D $@ > $@.txt
338
339build/boot/boot.o: giet_boot/boot.c          \
340                   giet_common/utils.h       \
341                   giet_fat32/fat32.h        \
342                   giet_common/vmem.h        \
343                   giet_drivers/tty_driver.h \
344                   giet_drivers/ioc_driver.h \
345                   hard_config.h             \
346                   giet_config.h
347        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
348
349build/boot/boot_entry.o: giet_boot/boot_entry.S \
350                         hard_config.h
351        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
352
353#########################
354### kernel compilation
355build/kernel/kernel.elf: $(KERNEL_OBJS)        \
356                         giet_kernel/kernel.ld \
357                         build/drivers/libdrivers.a
358        $(LD) -o $@ -T giet_kernel/kernel.ld $(KERNEL_OBJS) -Lbuild/drivers -ldrivers   
359        $(DU) -D $@ > $@.txt
360
361build/kernel/%.o: giet_kernel/%.c    \
362                  hard_config.h      \
363                  giet_config.h 
364        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
365
366build/kernel/%.o: giet_kernel/%.s    \
367                  hard_config.h      \
368                  giet_config.h
369        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
370
371###########################
372### user libs compilation
373build/libs/stdio.o: giet_libs/stdio.c \
374                    giet_libs/stdio.h \
375                    hard_config.h     \
376                    giet_config.h 
377        $(CC) $(CFLAGS) $(USER_INCLUDE) -c -o $@ $<
378
379build/libs/mwmr_channel.o: giet_libs/mwmr_channel.c \
380                           giet_libs/mwmr_channel.h \
381                           hard_config.h            \
382                           giet_config.h
383        $(CC) $(CFLAGS) $(USER_INCLUDE) -c -o $@ $<
384
385build/libs/malloc.o: giet_libs/malloc.c         \
386                     giet_libs/malloc.h         \
387                     giet_libs/malloc_private.h \
388                     hard_config.h              \
389                     giet_config.h
390        $(CC) $(CFLAGS) $(USER_INCLUDE) -c -o $@ $<
391
392build/libs/barrier.o: giet_libs/barrier.c \
393                      giet_libs/barrier.h \
394                      hard_config.h       \
395                      giet_config.h
396        $(CC) $(CFLAGS) $(USER_INCLUDE) -c -o $@ $<
397
398build/libs/stdlib.o: giet_libs/stdlib.c \
399                     giet_libs/stdlib.h \
400                     hard_config.h      \
401                     giet_config.h
402        $(CC) $(CFLAGS) $(USER_INCLUDE) -c -o $@ $<
403
404build/libs/string.o: giet_libs/string.c \
405                     giet_libs/string.h \
406                     hard_config.h      \
407                     giet_config.h
408        $(CC) $(CFLAGS) $(USER_INCLUDE) -c -o $@ $<
409
410build/libs/spin_lock.o: giet_libs/spin_lock.c \
411                        giet_libs/spin_lock.h \
412                        hard_config.h         \
413                        giet_config.h
414        $(CC) $(CFLAGS) $(USER_INCLUDE) -c -o $@ $<
415
416build/libs/remote_malloc.o: giet_libs/remote_malloc.c \
417                            giet_libs/spin_lock.h \
418                            hard_config.h         \
419                            giet_config.h
420        $(CC) $(CFLAGS) $(USER_INCLUDE) -c -o $@ $<
421
422build/libs/sbt_barrier.o: giet_libs/sbt_barrier.c \
423                          hard_config.h         \
424                          giet_config.h
425        $(CC) $(CFLAGS) $(USER_INCLUDE) -c -o $@ $<
426
427########################################
428### display application compilation
429build/display/display.elf: $(DISPLAY_OBJS) display/display.ld hard_config.h
430        $(LD) -o $@ -T display/display.ld $(DISPLAY_OBJS)
431        $(DU) -D $@ > $@.txt
432
433build/display/main.o: display/main_cma.c
434        $(CC) $(USER_INCLUDE) $(CFLAGS)  -c -o $@ $<
435
436########################################
437### router compilation
438build/router/router.elf: $(ROUTER_OBJS) router/router.ld hard_config.h
439        $(LD) -o $@ -T router/router.ld $(ROUTER_OBJS)
440        $(DU) -D $@ > $@.txt
441
442build/router/main.o: router/main.c
443        $(CC) $(USER_INCLUDE) $(CFLAGS)  -c -o $@ $<
444
445########################################
446### hello compilation
447build/hello/hello.elf: $(HELLO_OBJS) hello/hello.ld hard_config.h
448        $(LD) -o $@ -T hello/hello.ld $(HELLO_OBJS)
449        $(DU) -D $@ > $@.txt
450
451build/hello/main.o: hello/main.c
452        $(CC) $(USER_INCLUDE) $(CFLAGS) -c -o $@ $<
453
454########################################
455### pgcd compilation
456build/pgcd/pgcd.elf: $(PGCD_OBJS) pgcd/pgcd.ld hard_config.h
457        $(LD) -o $@ -T pgcd/pgcd.ld $(PGCD_OBJS)
458        $(DU) -D $@ > $@.txt
459
460build/pgcd/main.o: pgcd/main.c
461        $(CC) $(USER_INCLUDE) $(CFLAGS) -c -o $@ $<
462
463########################################
464### gameoflife compilation
465build/gameoflife/gameoflife.elf: $(GAMEOFLIFE_OBJS) gameoflife/gameoflife.ld
466        $(LD) -o $@ -T gameoflife/gameoflife.ld $(GAMEOFLIFE_OBJS)
467        $(DU) -D $@ > $@.txt
468
469build/gameoflife/main.o: gameoflife/main.c
470        $(CC) $(USER_INCLUDE) $(CFLAGS) -O3 -c -o $@ $<
471
472########################################
473### dhrystone compilation
474build/dhrystone/dhrystone.elf: $(DHRYSTONE_OBJS) dhrystone/dhrystone.ld hard_config.h
475        $(LD) -o $@ -T dhrystone/dhrystone.ld $(DHRYSTONE_OBJS)
476        $(DU) -D $@ > $@.txt
477
478build/dhrystone/dhry_1.o: dhrystone/dhry_1.c
479        $(CC) $(USER_INCLUDE) $(CFLAGS)  -c -o $@ $<
480
481build/dhrystone/dhry_2.o: dhrystone/dhry_2.c
482        $(CC) $(USER_INCLUDE) $(CFLAGS)  -c -o $@ $<
483
484########################################
485### sort compilation
486build/sort/sort.elf: $(SORT_OBJS) sort/sort.ld hard_config.h
487        $(LD) -o $@ -T sort/sort.ld $(SORT_OBJS)
488        $(DU) -D $@ > $@.txt
489
490build/sort/main.o: sort/main.c
491        $(CC) $(USER_INCLUDE) $(CFLAGS) -c -o $@ $<
492
493########################################
494### transpose compilation
495build/transpose/transpose.elf: $(TRANSPOSE_OBJS) transpose/transpose.ld hard_config.h
496        $(LD) -o $@ -T transpose/transpose.ld $(TRANSPOSE_OBJS)
497        $(DU) -D $@ > $@.txt
498
499build/transpose/main.o: transpose/main.c
500        $(CC) $(USER_INCLUDE) $(CFLAGS) -c -o $@ $<
501
502########################################
503### convol compilation
504build/convol/convol.elf: $(CONVOL_OBJS) convol/convol.ld hard_config.h
505        $(LD) -o $@ -T convol/convol.ld $(CONVOL_OBJS)
506        $(DU) -D $@ > $@.txt
507
508build/convol/main.o: convol/main.c
509        $(CC) $(USER_INCLUDE) $(CFLAGS) -O0 -c -o $@ $<
510
511########################################
512### clean
513clean:
514        rm -f *.o *.elf *.bin *.txt core 
515        rm -f hard_config.h giet_vsegs.ld map.bin map.xml
516        rm -rf build/boot/*
517        rm -rf build/fat32/*
518        rm -rf build/common/*
519        rm -rf build/drivers/*
520        rm -rf build/kernel/*
521        rm -rf build/reset/*
522        rm -rf build/libs/*
523        rm -rf build/pgcd/*
524        rm -rf build/hello/*
525        rm -rf build/display/*
526        rm -rf build/router/*
527        rm -rf build/gameoflife/*
528        rm -rf build/dhrystone/*
529        rm -rf build/sort/*
530        rm -rf build/transpose/*
531        rm -rf build/convol/*
532        rm -rf $(DISK_IMAGE)
Note: See TracBrowser for help on using the repository browser.