source: soft/giet_vm/Makefile @ 299

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

ntroducing the TOTAL_PROCS variable in the hard_config.h file
(used by the synchronisation barrier in kernel_init.c)

File size: 16.0 KB
RevLine 
[162]1export # export all variable to sub-Makefile
[232]2CC = mipsel-unknown-elf-gcc
3AS = mipsel-unknown-elf-as
4LD = mipsel-unknown-elf-ld
5DU = mipsel-unknown-elf-objdump
[158]6
[258]7### FAT parameters definition for Disk image
8### sector_size          = 512
9### partition_begin_lba  = 300
10### sector_per_cluster   = 8
11### partition sectors    = 524832
[204]12
[299]13MAP_XML      = mappings/4c_1p_sort_iob.xml
[162]14
[258]15### Objects to be linked for kernel.elf
[289]16KERNEL_OBJS  = build/common/utils.o       \
17               build/common/vmem.o        \
[258]18               build/fat32/fat32.o        \
19               build/drivers/dma_driver.o \
[295]20               build/drivers/cma_driver.o \
[258]21               build/drivers/fbf_driver.o \
22               build/drivers/xcu_driver.o \
23               build/drivers/icu_driver.o \
24               build/drivers/ioc_driver.o \
[289]25               build/drivers/bdv_driver.o \
26               build/drivers/hba_driver.o \
27               build/drivers/sdc_driver.o \
28               build/drivers/spi_driver.o \
[295]29               build/drivers/rdk_driver.o \
[258]30               build/drivers/iob_driver.o \
31               build/drivers/mmc_driver.o \
32               build/drivers/mwr_driver.o \
33               build/drivers/nic_driver.o \
34               build/drivers/tim_driver.o \
35               build/drivers/tty_driver.o \
[295]36               build/drivers/pic_driver.o \
[258]37               build/kernel/giet.o        \
38               build/kernel/switch.o      \
39               build/kernel/ctx_handler.o \
40               build/kernel/exc_handler.o \
41               build/kernel/sys_handler.o \
42               build/kernel/irq_handler.o \
43               build/kernel/kernel_init.o
[162]44
[258]45### Objects to be linked for boot.elf
[289]46BOOT_OBJS    = build/common/utils.o       \
47               build/common/vmem.o        \
[258]48               build/fat32/fat32.o        \
[295]49               build/drivers/dma_driver.o \
[258]50               build/drivers/tty_driver.o \
[295]51               build/drivers/pic_driver.o \
[258]52               build/drivers/xcu_driver.o \
53               build/drivers/ioc_driver.o \
[299]54               build/drivers/iob_driver.o \
[289]55               build/drivers/bdv_driver.o \
56               build/drivers/sdc_driver.o \
57               build/drivers/spi_driver.o \
[295]58               build/drivers/rdk_driver.o \
[258]59               build/drivers/mmc_driver.o \
[295]60               build/drivers/mwr_driver.o \
[258]61               build/kernel/ctx_handler.o \
62               build/kernel/switch.o      \
63               build/boot/boot.o
64
65### Objects to be linked for display.elf
[189]66DISPLAY_OBJS = build/display/main.o \
[258]67               build/libs/stdio.o
[162]68
[258]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
[162]73
[258]74### Objects to be linked for hello.elf
75HELLO_OBJS   = build/hello/main.o   \
76               build/libs/stdio.o         
[158]77
[258]78### Objects to be linked for pgcd.elf
79PGCD_OBJS    = build/pgcd/main.o          \
80               build/libs/stdio.o
[158]81
[258]82### Objects to be linked for game.elf
83GAMEOFLIFE_OBJS = build/gameoflife/main.o \
84                  build/libs/stdio.o      \
85                  build/libs/barrier.o
[251]86
[258]87### Objects to be linked for dhrystone.elf
[241]88DHRYSTONE_OBJS = build/dhrystone/dhry_1.o \
89                 build/dhrystone/dhry_2.o \
[272]90                 build/libs/stdlib.o      \
[258]91                 build/libs/stdio.o       \
92                 build/libs/string.o      \
93                 build/libs/spin_lock.o   \
[241]94                 build/libs/malloc.o
95
[258]96### Objects to be linked for sort.elf
97SORT_OBJS   = build/sort/main.o        \
98              build/libs/stdio.o       \
99              build/libs/spin_lock.o   \
100              build/libs/barrier.o
[241]101
[295]102### Objects to be linked for transpose.elf
103TRANSPOSE_OBJS = build/transpose/main.o  \
104                 build/libs/stdio.o      \
105                 build/libs/malloc.o     \
106                 build/libs/spin_lock.o  \
107                 build/libs/barrier.o
[258]108
[272]109CFLAGS = -Wall -ffreestanding -mno-gpopt -mips32
[158]110
[289]111
[258]112GIET_INCLUDE = -Igiet_boot    \
113               -Igiet_kernel  \
114               -Igiet_xml     \
115               -Igiet_fat32   \
116               -Igiet_drivers \
117               -Igiet_common  \
118               -Igiet_libs    \
119               -I.
[158]120
[258]121USER_INCLUDE = -Igiet_libs    \
122               -Igiet_xml     \
123               -I.
[160]124
[258]125all: map.bin                         \
126     build/boot/boot.elf             \
127     build/kernel/kernel.elf         \
128     build/display/display.elf       \
129     build/router/router.elf         \
130     build/hello/hello.elf           \
131     build/pgcd/pgcd.elf             \
132     build/dhrystone/dhrystone.elf   \
133     build/gameoflife/gameoflife.elf \
134     build/sort/sort.elf             \
[295]135     build/transpose/transpose.elf   \
[258]136     hdd/virt_hdd.dmg
[160]137
[258]138### Disk image generation
[272]139### This requires the generic LINUX/MacOS script "create_dmg" script
[258]140### written by C.Fuguet. (should be installed in GIET-VM root directory).
[295]141hdd/virt_hdd.dmg: map.bin                \
142         build/boot/boot.elf             \
143         build/kernel/kernel.elf         \
144         build/display/display.elf       \
145         build/hello/hello.elf           \
146         build/pgcd/pgcd.elf             \
147         build/router/router.elf         \
148         build/dhrystone/dhrystone.elf   \
149         build/gameoflife/gameoflife.elf \
150         build/sort/sort.elf             \
151         build/transpose/transpose.elf
152
[258]153### remove all content of virtual disk virt_hdd
154        rm -rf hdd/virt_hdd/*
155### copy content to virtual disk from build, misc and map.bin
156### the boot.elf file is not copied on the virtual disk
157        cp -r build hdd/virt_hdd
158        rm -rf hdd/virt_hdd/build/boot
159        cp -r hdd/misc hdd/virt_hdd
160        cp map.bin  hdd/virt_hdd
161### create temporary partition image (partition_image.dmg)
162        ./create_dmg create hdd/virt_hdd partition_image
163### copy standard MBR into virtual disk image (mbr.dmg)
164        cp hdd/mbr.dmg $@ 
165### copy boot.elf into virtual disk image (sector 2)
166        dd if=build/boot/boot.elf of=$@ seek=2
167### copy partition image into virtual disk image (sector 300)
168        dd if=partition_image.dmg of=$@ seek=300 
169### remove partition image
170        rm partition_image.dmg
171
[177]172### mapping compilation
[204]173map.bin: $(MAP_XML)
[258]174        $(MAKE) -C giet_xml
175        giet_xml/xml2bin $< .
[158]176
[258]177### drivers compilation
[295]178build/drivers/cma_driver.o: giet_drivers/cma_driver.c  \
179                            giet_drivers/cma_driver.h  \
180                            giet_config.h              \
181                            $(MAP_XML)
182        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
183
[258]184build/drivers/dma_driver.o: giet_drivers/dma_driver.c  \
185                            giet_drivers/dma_driver.h  \
186                            giet_config.h              \
187                            $(MAP_XML)
188        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
[158]189
[258]190build/drivers/fbf_driver.o: giet_drivers/fbf_driver.c  \
191                            giet_drivers/fbf_driver.h  \
192                            giet_config.h              \
193                            $(MAP_XML)
194        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
[158]195
[258]196build/drivers/xcu_driver.o: giet_drivers/xcu_driver.c  \
197                            giet_drivers/xcu_driver.h  \
198                            giet_config.h              \
199                            $(MAP_XML)
200        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
[158]201
[258]202build/drivers/icu_driver.o: giet_drivers/icu_driver.c  \
203                            giet_drivers/icu_driver.h  \
204                            giet_config.h              \
205                            $(MAP_XML)
206        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
207
208build/drivers/ioc_driver.o: giet_drivers/ioc_driver.c  \
209                            giet_drivers/ioc_driver.h  \
210                            giet_config.h              \
211                            $(MAP_XML)
212        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
213
[289]214build/drivers/bdv_driver.o: giet_drivers/bdv_driver.c  \
215                            giet_drivers/bdv_driver.h  \
216                            giet_config.h              \
217                            $(MAP_XML)
218        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
219
220build/drivers/hba_driver.o: giet_drivers/hba_driver.c  \
221                            giet_drivers/hba_driver.h  \
222                            giet_config.h              \
223                            $(MAP_XML)
224        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
225
226build/drivers/sdc_driver.o: giet_drivers/sdc_driver.c  \
227                            giet_drivers/sdc_driver.h  \
228                            giet_config.h              \
229                            $(MAP_XML)
230        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
231
232build/drivers/spi_driver.o: giet_drivers/spi_driver.c  \
233                            giet_drivers/spi_driver.h  \
234                            giet_config.h              \
235                            $(MAP_XML)
236        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
237
[295]238build/drivers/rdk_driver.o: giet_drivers/rdk_driver.c  \
239                            giet_drivers/rdk_driver.h  \
240                            giet_config.h              \
241                            $(MAP_XML)
242        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
243
[258]244build/drivers/iob_driver.o: giet_drivers/iob_driver.c  \
245                            giet_drivers/iob_driver.h  \
246                            giet_config.h              \
247                            $(MAP_XML)
248        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
249
250build/drivers/mmc_driver.o: giet_drivers/mmc_driver.c  \
251                            giet_drivers/mmc_driver.h  \
252                            giet_config.h              \
253                            $(MAP_XML)
254        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
255
256build/drivers/mwr_driver.o: giet_drivers/mwr_driver.c  \
257                            giet_drivers/mwr_driver.h  \
258                            giet_config.h              \
259                            $(MAP_XML)
260        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
261
262build/drivers/nic_driver.o: giet_drivers/nic_driver.c  \
263                            giet_drivers/nic_driver.h  \
264                            giet_config.h              \
265                            $(MAP_XML)
266        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
267
268build/drivers/tim_driver.o: giet_drivers/tim_driver.c  \
269                            giet_drivers/tim_driver.h  \
270                            giet_config.h              \
271                            $(MAP_XML)
272        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
273
274build/drivers/tty_driver.o: giet_drivers/tty_driver.c  \
275                            giet_drivers/tty_driver.h  \
276                            giet_config.h              \
277                            $(MAP_XML)
278        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
279
[295]280build/drivers/pic_driver.o: giet_drivers/pic_driver.c  \
281                            giet_drivers/pic_driver.h  \
282                            giet_config.h              \
283                            $(MAP_XML)
284        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
285
[258]286### fat32 compilation
287build/fat32/fat32.o: giet_fat32/fat32.c \
288                     giet_fat32/fat32.h \
289                     giet_config.h      \
290                     $(MAP_XML)
291        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
292
293### utils compilation
294build/common/utils.o: giet_common/utils.c \
295                      giet_common/utils.h \
296                      giet_config.h       \
297                      $(MAP_XML)
298        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
299
300### vmem compilation
301build/common/vmem.o: giet_common/vmem.c \
302                     giet_common/vmem.h \
303                     giet_config.h    \
304                     $(MAP_XML)
305        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
306
[177]307### boot compilation
[258]308build/boot/boot.elf: $(BOOT_OBJS) 
309        $(LD) -o $@ -T giet_boot/boot.ld $(BOOT_OBJS) 
[189]310        $(DU) -D $@ > $@.txt
[158]311
[258]312build/boot/boot.o: giet_boot/boot.c          \
313                   giet_common/utils.h       \
314                   giet_fat32/fat32.h        \
[289]315                   giet_common/vmem.h        \
[258]316                   giet_drivers/tty_driver.h \
317                   giet_drivers/ioc_driver.h \
318                   giet_config.h             \
319                   $(MAP_XML)
320        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
[158]321
[258]322### kernel compilation
323build/kernel/kernel.elf: $(KERNEL_OBJS) giet_kernel/kernel.ld
324        $(LD) -o $@ -T giet_kernel/kernel.ld $(KERNEL_OBJS)
325        $(DU) -D $@ > $@.txt
[158]326
[258]327build/kernel/%.o: giet_kernel/%.c giet_config.h $(MAP_XML)
328        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
329
330build/kernel/%.o: giet_kernel/%.s giet_config.h $(MAP_XML)
331        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
332
333
334
335
336### libs compilation
337build/libs/stdio.o: giet_libs/stdio.c \
338                    giet_libs/stdio.h \
339                    giet_config.h 
340        $(CC) $(CFLAGS) $(USER_INCLUDE) -c -o $@ $<
341
342build/libs/mwmr_channel.o: giet_libs/mwmr_channel.c \
343                           giet_libs/mwmr_channel.h \
344                           giet_config.h
345        $(CC) $(CFLAGS) $(USER_INCLUDE) -c -o $@ $<
346
347build/libs/malloc.o: giet_libs/malloc.c         \
348                     giet_libs/malloc.h         \
349                     giet_libs/malloc_private.h \
350                     giet_config.h
351        $(CC) $(CFLAGS) $(USER_INCLUDE) -c -o $@ $<
352
353build/libs/barrier.o: giet_libs/barrier.c \
354                      giet_libs/barrier.h \
355                      giet_config.h
356        $(CC) $(CFLAGS) $(USER_INCLUDE) -c -o $@ $<
357
[259]358build/libs/stdlib.o: giet_libs/stdlib.c \
359                     giet_libs/stdlib.h \
360                     giet_config.h
361        $(CC) $(CFLAGS) $(USER_INCLUDE) -c -o $@ $<
362
[258]363build/libs/string.o: giet_libs/string.c \
364                     giet_libs/string.h \
365                     giet_config.h
366        $(CC) $(CFLAGS) $(USER_INCLUDE) -c -o $@ $<
367
368build/libs/spin_lock.o: giet_libs/spin_lock.c \
369                        giet_libs/spin_lock.h \
370                        giet_config.h
371        $(CC) $(CFLAGS) $(USER_INCLUDE) -c -o $@ $<
372
373
374
375
[189]376### display compilation
377build/display/display.elf: $(DISPLAY_OBJS) display/display.ld
378        $(LD) -o $@ -T display/display.ld $(DISPLAY_OBJS)
379        $(DU) -D $@ > $@.txt
[158]380
[258]381build/display/main.o: display/main_cma.c
382        $(CC) $(USER_INCLUDE) $(CFLAGS)  -c -o $@ $<
[189]383
384### router compilation
385build/router/router.elf: $(ROUTER_OBJS) router/router.ld
386        $(LD) -o $@ -T router/router.ld $(ROUTER_OBJS)
387        $(DU) -D $@ > $@.txt
388
389build/router/main.o: router/main.c
[258]390        $(CC) $(USER_INCLUDE) $(CFLAGS)  -c -o $@ $<
[189]391
392### hello compilation
393build/hello/hello.elf: $(HELLO_OBJS) hello/hello.ld
394        $(LD) -o $@ -T hello/hello.ld $(HELLO_OBJS)
395        $(DU) -D $@ > $@.txt
396
397build/hello/main.o: hello/main.c
[258]398        $(CC) $(USER_INCLUDE) $(CFLAGS) -c -o $@ $<
[189]399
400### pgcd compilation
401build/pgcd/pgcd.elf: $(PGCD_OBJS) pgcd/pgcd.ld
402        $(LD) -o $@ -T pgcd/pgcd.ld $(PGCD_OBJS)
403        $(DU) -D $@ > $@.txt
404
405build/pgcd/main.o: pgcd/main.c
[258]406        $(CC) $(USER_INCLUDE) $(CFLAGS) -c -o $@ $<
[189]407
[251]408### gameoflife compilation
409build/gameoflife/gameoflife.elf: $(GAMEOFLIFE_OBJS) gameoflife/gameoflife.ld
410        $(LD) -o $@ -T gameoflife/gameoflife.ld $(GAMEOFLIFE_OBJS)
411        $(DU) -D $@ > $@.txt
412
413build/gameoflife/main.o: gameoflife/main.c
[258]414        $(CC) $(USER_INCLUDE) $(CFLAGS) -O3 -c -o $@ $<
[251]415
[241]416### dhrystone compilation
417build/dhrystone/dhrystone.elf: $(DHRYSTONE_OBJS) dhrystone/dhrystone.ld
418        $(LD) -o $@ -T dhrystone/dhrystone.ld $(DHRYSTONE_OBJS)
419        $(DU) -D $@ > $@.txt
420
421build/dhrystone/dhry_1.o: dhrystone/dhry_1.c
[258]422        $(CC) $(USER_INCLUDE) $(CFLAGS)  -c -o $@ $<
[241]423
424build/dhrystone/dhry_2.o: dhrystone/dhry_2.c
[258]425        $(CC) $(USER_INCLUDE) $(CFLAGS)  -c -o $@ $<
[241]426
[256]427### sort compilation
[258]428build/sort/sort.elf: $(SORT_OBJS) sort/sort.ld
[256]429        $(LD) -o $@ -T sort/sort.ld $(SORT_OBJS)
430        $(DU) -D $@ > $@.txt
431
432build/sort/main.o: sort/main.c
[258]433        $(CC) $(USER_INCLUDE) $(CFLAGS) -c -o $@ $<
[256]434
[295]435### transpose compilation
436build/transpose/transpose.elf: $(TRANSPOSE_OBJS) transpose/transpose.ld
437        $(LD) -o $@ -T transpose/transpose.ld $(TRANSPOSE_OBJS)
438        $(DU) -D $@ > $@.txt
439
440build/transpose/main.o: transpose/main.c
441        $(CC) $(USER_INCLUDE) $(CFLAGS) -c -o $@ $<
442
[177]443### clean
[158]444clean:
[252]445        rm -f *.o *.elf *.bin *.txt core  giet_vsegs.ld hard_config.h map.bin*~
[258]446        $(MAKE) -s clean -C giet_xml
[232]447        rm -rf build/boot/*
[258]448        rm -rf build/fat32/*
449        rm -rf build/common/*
450        rm -rf build/drivers/*
451        rm -rf build/kernel/*
452        rm -rf build/reset/*
[232]453        rm -rf build/libs/*
454        rm -rf build/pgcd/*
455        rm -rf build/hello/*
456        rm -rf build/display/*
457        rm -rf build/router/*
[251]458        rm -rf build/gameoflife/*
[241]459        rm -rf build/dhrystone/*
[258]460        rm -rf build/sort/*
[295]461        rm -rf build/transpose/*
[258]462        rm -rf build/map.bin
[272]463        rm -rf hdd/virt_hdd/*
[258]464        rm -rf hdd/virt_hdd.dmg
Note: See TracBrowser for help on using the repository browser.