source: soft/giet_vm/Makefile @ 374

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

Introducing new user libraries in Makefile.

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