source: soft/giet_vm/Makefile @ 773

Last change on this file since 773 was 772, checked in by meunier, 9 years ago
  • Ajout de l'application rosenfeld
  • Changement du nom du flag O_CREATE en O_CREAT
File size: 17.0 KB
RevLine 
[595]1-include params.mk
[302]2
[595]3export # export all variable to applications sub-Makefile
4
[232]5CC = mipsel-unknown-elf-gcc
6AS = mipsel-unknown-elf-as
7LD = mipsel-unknown-elf-ld
8DU = mipsel-unknown-elf-objdump
[380]9AR = mipsel-unknown-elf-ar
[158]10
[595]11# Defaults values for hardware parameters and applications
[611]12# These parameters should be defined in the params.mk file
[595]13ARCH      ?= pathname
[581]14X_SIZE    ?= 1
15Y_SIZE    ?= 1
[595]16NB_PROCS  ?= 1
[580]17NB_TTYS   ?= 1
[595]18FBF_WIDTH ?= 256
19IOC_TYPE  ?= BDV
[739]20MWR_TYPE  ?= CPY
[611]21APPLIS    ?= shell
[326]22
[595]23# build the list of applications used as argument by genmap
24GENMAP_APPLIS := $(addprefix --,$(APPLIS))
[510]25
[649]26# build the list of application.py (used as dependencies by genmap)
27APPLIS_PY      = applications/classif/classif.py        \
28                 applications/convol/convol.py          \
29                 applications/coproc/coproc.py          \
30                 applications/display/display.py        \
31                 applications/dhrystone/dhrystone.py    \
32                 applications/gameoflife/gameoflife.py  \
[739]33                 applications/mjpeg/mjpeg.py            \
[649]34                 applications/ocean/ocean.py            \
[673]35                 applications/raycast/raycast.py        \
[649]36                 applications/router/router.py          \
[772]37                 applications/rosenfeld/rosenfeld.py    \
[649]38                 applications/shell/shell.py            \
39                 applications/sort/sort.py              \
[753]40                 applications/transpose/transpose.py    \
41                 applications/coremark/coremark.py
[326]42
[595]43# build the list of applications to be executed (used in the all rule)
44APPLIS_ELF    := $(addsuffix /appli.elf,$(addprefix applications/,$(APPLIS)))
[204]45
[600]46# Build PYTHONPATH
[602]47PYTHONPATH := $(shell find . -name *.py | grep -o "\(.*\)/" | sort -u | tr '\n' :)
[600]48
[595]49# check hardware platform definition
50ifeq ($(wildcard $(ARCH)),)
51$(error please define in ARCH parameter the path to the platform)
52endif
[580]53
[608]54### Rules that don't build a target file
[662]55.PHONY: all dirs list extract clean clean-disk install-disk $(APPLIS_ELF)
[595]56
[463]57### Objects to be linked for the drivers library
[535]58DRIVERS_OBJS = build/drivers/dma_driver.o      \
59               build/drivers/cma_driver.o      \
60               build/drivers/xcu_driver.o      \
61               build/drivers/bdv_driver.o      \
62               build/drivers/hba_driver.o      \
63               build/drivers/sdc_driver.o      \
64               build/drivers/spi_driver.o      \
65               build/drivers/rdk_driver.o      \
66               build/drivers/iob_driver.o      \
67               build/drivers/mmc_driver.o      \
68               build/drivers/mwr_driver.o      \
69               build/drivers/nic_driver.o      \
70               build/drivers/tim_driver.o      \
71               build/drivers/tty_driver.o      \
[380]72               build/drivers/pic_driver.o
73
74### Objects to be linked for kernel.elf
[510]75KERNEL_OBJS  = build/common/utils.o            \
76               build/common/kernel_locks.o     \
77               build/common/kernel_barriers.o  \
78               build/common/tty0.o             \
79               build/common/vmem.o             \
80               build/common/kernel_malloc.o    \
81               build/fat32/fat32.o             \
82               build/kernel/giet.o             \
83               build/kernel/switch.o           \
84               build/kernel/ctx_handler.o      \
85               build/kernel/exc_handler.o      \
86               build/kernel/sys_handler.o      \
87               build/kernel/irq_handler.o      \
[258]88               build/kernel/kernel_init.o
[162]89
[258]90### Objects to be linked for boot.elf
[510]91BOOT_OBJS    = build/common/utils.o            \
92               build/common/kernel_locks.o     \
93               build/common/kernel_barriers.o  \
94               build/common/tty0.o             \
95               build/common/pmem.o             \
96               build/common/vmem.o             \
97               build/common/kernel_malloc.o    \
98               build/fat32/fat32.o             \
99               build/kernel/ctx_handler.o      \
[535]100               build/kernel/irq_handler.o      \
[595]101               build/kernel/sys_handler.o      \
[510]102               build/kernel/switch.o           \
103               build/boot/boot.o               \
[366]104               build/boot/boot_entry.o
[258]105
[585]106### Objects to be linked for the user library
107USER_OBJS     = build/libs/malloc.o            \
108                build/libs/mwmr_channel.o      \
109                build/libs/stdio.o             \
110                build/libs/stdlib.o            \
111                build/libs/string.o            \
112                build/libs/user_barrier.o      \
[709]113                build/libs/user_lock.o
[585]114
[583]115### Objects to be linked for the math library
116MATH_OBJS     = build/libs/math/e_pow.o        \
117                build/libs/math/e_rem_pio2.o   \
118                build/libs/math/k_cos.o        \
119                build/libs/math/k_rem_pio2.o   \
120                build/libs/math/k_sin.o        \
121                build/libs/math/s_copysign.o   \
122                build/libs/math/s_fabs.o       \
123                build/libs/math/s_finite.o     \
124                build/libs/math/s_floor.o      \
125                build/libs/math/s_isnan.o      \
126                build/libs/math/sqrt.o         \
127                build/libs/math/s_rint.o       \
128                build/libs/math/s_scalbn.o     \
129                build/libs/math/s_sin.o        \
[667]130                build/libs/math/s_cos.o        \
[595]131                build/libs/math/e_sqrt.o       
[580]132
[162]133
[435]134CFLAGS = -Wall -ffreestanding -mno-gpopt -mips32 -g -O2 \
[753]135                 -fno-delete-null-pointer-checks $(XCFLAGS)
[158]136
[258]137GIET_INCLUDE = -Igiet_boot    \
138               -Igiet_kernel  \
139               -Igiet_xml     \
140               -Igiet_fat32   \
141               -Igiet_drivers \
142               -Igiet_common  \
143               -Igiet_libs    \
144               -I.
[158]145
[302]146DISK_IMAGE  := hdd/virt_hdd.dmg
147
[595]148### The Mtools used to build the FAT32 disk image perform a few sanity checks,
[582]149### to make sure that the disk is indeed an MS-DOS disk. However, the size
150### of the disk image used by the Giet-VM is not MS-DOS compliant.
151### Setting this variable prevents these checks.
152MTOOLS_SKIP_CHECK := 1
153
[595]154##################################
155### first rule executed (make all)
[599]156all: dirs                            \
[609]157     install-disk
[580]158        mdir -/ -b -i $(DISK_IMAGE) ::/
[160]159
[608]160#####################################################
161### create build directories
[599]162dirs:
163        @mkdir -p build/boot
164        @mkdir -p build/common
165        @mkdir -p build/drivers
166        @mkdir -p build/fat32
167        @mkdir -p build/kernel
168        @mkdir -p build/libs/math
169        @mkdir -p hdd
170
[608]171#####################################################
172### make a recursive list of the virtual disk content
173list:
174         mdir -/ -w -i $(DISK_IMAGE) ::/
175
176########################################################
177### copy the files generated by the virtual prototype on
178### the virtual disk "home" directory to the giet_vm home directory
179extract:
180        mcopy -o -i $(DISK_IMAGE) ::/home .
181
182########################################
183### clean all binary files
184clean:
185        rm -f *.o *.elf *.bin *.txt core
186        rm -f hard_config.h giet_vsegs.ld map.bin map.xml
[694]187        rm -rf build/
[611]188        cd applications/classif      && $(MAKE) clean && cd ../..
189        cd applications/convol       && $(MAKE) clean && cd ../..
190        cd applications/coproc       && $(MAKE) clean && cd ../..
191        cd applications/display      && $(MAKE) clean && cd ../..
192        cd applications/dhrystone    && $(MAKE) clean && cd ../..
193        cd applications/gameoflife   && $(MAKE) clean && cd ../..
[739]194        cd applications/mjpeg        && $(MAKE) clean && cd ../..
[611]195        cd applications/ocean        && $(MAKE) clean && cd ../..
[673]196        cd applications/raycast      && $(MAKE) clean && cd ../..
[611]197        cd applications/router       && $(MAKE) clean && cd ../..
[772]198        cd applications/rosenfeld    && $(MAKE) clean && cd ../..
[611]199        cd applications/shell        && $(MAKE) clean && cd ../..
200        cd applications/sort         && $(MAKE) clean && cd ../..
201        cd applications/transpose    && $(MAKE) clean && cd ../..
[753]202        cd applications/coremark     && $(MAKE) clean && cd ../..
[608]203
204########################################
205### delete disk image
206clean-disk:
[753]207        rm -rf $(DISK_IMAGE)
[608]208
[609]209########################################
210### Copy content in the disk image
211### create the three build / misc / home directories
212### store the images files into misc
213install-disk: $(DISK_IMAGE) build/kernel/kernel.elf $(APPLIS_ELF)
[611]214        mmd -o -i $< ::/bin               || true
215        mmd -o -i $< ::/bin/kernel        || true
216        mmd -o -i $< ::/bin/classif       || true
217        mmd -o -i $< ::/bin/convol        || true
218        mmd -o -i $< ::/bin/coproc        || true
219        mmd -o -i $< ::/bin/dhrystone     || true
220        mmd -o -i $< ::/bin/display       || true
221        mmd -o -i $< ::/bin/gameoflife    || true
[739]222        mmd -o -i $< ::/bin/mjpeg         || true
[611]223        mmd -o -i $< ::/bin/ocean         || true
[673]224        mmd -o -i $< ::/bin/raycast       || true
[611]225        mmd -o -i $< ::/bin/router        || true
[772]226        mmd -o -i $< ::/bin/rosenfeld     || true
[611]227        mmd -o -i $< ::/bin/shell         || true
228        mmd -o -i $< ::/bin/sort          || true
229        mmd -o -i $< ::/bin/transpose     || true
[753]230        mmd -o -i $< ::/bin/coremark      || true
[611]231        mmd -o -i $< ::/misc              || true
232        mmd -o -i $< ::/home              || true
[609]233        mcopy -o -i $< map.bin ::/
[611]234        mcopy -o -i $< build/kernel/kernel.elf ::/bin/kernel
235        mcopy -o -i $< applications/classif/appli.elf ::/bin/classif          || true
236        mcopy -o -i $< applications/convol/appli.elf ::/bin/convol            || true
237        mcopy -o -i $< applications/coproc/appli.elf ::/bin/coproc            || true
238        mcopy -o -i $< applications/dhrystone/appli.elf ::/bin/dhrystone      || true
239        mcopy -o -i $< applications/display/appli.elf ::/bin/display          || true
240        mcopy -o -i $< applications/gameoflife/appli.elf ::/bin/gameoflife    || true
[739]241        mcopy -o -i $< applications/mjpeg/appli.elf ::/bin/mjpeg              || true
[611]242        mcopy -o -i $< applications/ocean/appli.elf ::/bin/ocean              || true
[673]243        mcopy -o -i $< applications/raycast/appli.elf ::/bin/raycast          || true
[611]244        mcopy -o -i $< applications/router/appli.elf ::/bin/router            || true
[772]245        mcopy -o -i $< applications/rosenfeld/appli.elf ::/bin/rosenfeld      || true
[611]246        mcopy -o -i $< applications/shell/appli.elf ::/bin/shell              || true
247        mcopy -o -i $< applications/sort/appli.elf ::/bin/sort                || true
248        mcopy -o -i $< applications/transpose/appli.elf ::/bin/transpose      || true
[753]249        mcopy -o -i $< applications/coremark/appli.elf ::/bin/coremark        || true
[609]250        mcopy -o -i $< images/images_128.raw ::/misc
251        mcopy -o -i $< images/philips_1024.raw ::/misc
252        mcopy -o -i $< images/lena_256.raw ::/misc
253        mcopy -o -i $< images/bridge_256.raw ::/misc
254        mcopy -o -i $< images/couple_512.raw ::/misc
[675]255        mcopy -o -i $< images/door_32.raw ::/misc
256        mcopy -o -i $< images/handle_32.raw ::/misc
257        mcopy -o -i $< images/rock_32.raw ::/misc
258        mcopy -o -i $< images/wood_32.raw ::/misc
[739]259        mcopy -o -i $< images/wood_32.raw ::/misc
260        mcopy -o -i $< images/plan_48.mjpg ::/misc
261        mcopy -o -i $< images/mandel_128.mjpg ::/misc
262        mcopy -o -i $< images/video_160_120.mjpg ::/misc
[609]263
[595]264#########################
265### Disk image generation
[582]266### This requires the generic LINUX/MacOS script "create_dmg" script
[258]267### written by C.Fuguet. (should be installed in GIET-VM root directory).
[609]268$(DISK_IMAGE): build/boot/boot.elf
269        rm -f $@
270        ./create_dmg create $(basename $@)
271        dd if=$@ of=temp.dmg count=65536
272        mv temp.dmg $@
273        dd if=build/boot/boot.elf of=$@ seek=2 conv=notrunc
[295]274
[595]275#########################################################################
[326]276### mapping generation: map.bin / map.xml / hard_config.h / giet_vsegs.ld
[701]277hard_config.h: $(ARCH)/arch.py $(APPLIS_PY)
[510]278        giet_python/genmap --arch=$(ARCH)     \
279                       --x=$(X_SIZE)      \
280                       --y=$(Y_SIZE)      \
281                       --p=$(NB_PROCS)    \
282                       --tty=$(NB_TTYS)   \
283                       --fbf=$(FBF_WIDTH) \
[553]284                       --ioc=$(IOC_TYPE)  \
[739]285                       --mwr=$(MWR_TYPE)  \
[510]286                       --giet=.           \
[595]287                       $(GENMAP_APPLIS)   \
[510]288                       --xml=.
[158]289
[583]290################################
291### drivers library compilation
292build/drivers/%.o: giet_drivers/%.c \
293                   giet_drivers/%.h \
294                   hard_config.h    \
295                   giet_config.h
[295]296        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
297
[380]298build/drivers/libdrivers.a: $(DRIVERS_OBJS)
299        $(AR) -rcs $@ $(DRIVERS_OBJS)
300
[374]301##########################
[583]302### fat32 compilation
[258]303build/fat32/fat32.o: giet_fat32/fat32.c \
304                     giet_fat32/fat32.h \
[326]305                     hard_config.h      \
306                     giet_config.h
[258]307        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
308
[583]309##########################
310### common compilation
311build/common/%.o: giet_common/%.c   \
312                  giet_common/%.h   \
313                  hard_config.h     \
314                  giet_config.h
[258]315        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
316
[374]317########################
[177]318### boot compilation
[573]319### Copy bootloader into sector 2 of disk image
[326]320build/boot/boot.elf: $(BOOT_OBJS)            \
[380]321                     giet_boot/boot.ld       \
[583]322                     build/drivers/libdrivers.a
[582]323        $(LD) -o $@ -T giet_boot/boot.ld $(BOOT_OBJS) -Lbuild/drivers -ldrivers
[189]324        $(DU) -D $@ > $@.txt
[158]325
[258]326build/boot/boot.o: giet_boot/boot.c          \
327                   giet_common/utils.h       \
328                   giet_fat32/fat32.h        \
[289]329                   giet_common/vmem.h        \
[326]330                   hard_config.h             \
[366]331                   giet_config.h
[258]332        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
[158]333
[366]334build/boot/boot_entry.o: giet_boot/boot_entry.S \
335                         hard_config.h
336        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
337
[374]338#########################
[258]339### kernel compilation
[326]340build/kernel/kernel.elf: $(KERNEL_OBJS)        \
[380]341                         giet_kernel/kernel.ld \
342                         build/drivers/libdrivers.a
[582]343        $(LD) -o $@ -T giet_kernel/kernel.ld $(KERNEL_OBJS) -Lbuild/drivers -ldrivers
344        $(DU) -D $@ > $@.txt
[158]345
[326]346build/kernel/%.o: giet_kernel/%.c    \
347                  hard_config.h      \
[582]348                  giet_config.h
[258]349        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
350
[326]351build/kernel/%.o: giet_kernel/%.s    \
352                  hard_config.h      \
[582]353                  giet_config.h
[258]354        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
355
[374]356###########################
[585]357### user library compilation
[595]358build/libs/%.o: giet_libs/%.c        \
359                     giet_libs/%.h   \
360                     hard_config.h   \
361                     giet_config.h
362        $(CC) $(CFLAGS) $(GIET_INCLUDE) -c -o $@ $<
[258]363
[585]364build/libs/libuser.a: $(USER_OBJS)
365        $(AR) -rcs $@ $^
366
[583]367################################
368### math library compilation
369build/libs/math/%.o: giet_libs/math/%.c             \
370                     giet_libs/math/math_private.h  \
371                     giet_libs/math.h
[595]372        $(CC) $(CFLAGS) $(GIET_INCLUDE) -c -o $@ $<
[258]373
[583]374build/libs/libmath.a: $(MATH_OBJS)
[580]375        $(AR) -rcs $@ $^
376
[374]377########################################
[595]378### classif   application compilation
[609]379applications/classif/appli.elf: build/libs/libuser.a
[595]380        $(MAKE) -C applications/classif
[189]381
[595]382########################################
383### convol   application compilation
[609]384applications/convol/appli.elf: build/libs/libuser.a
[595]385        $(MAKE) -C applications/convol
[189]386
[374]387########################################
[595]388### coproc   application compilation
[609]389applications/coproc/appli.elf: build/libs/libuser.a
[595]390        $(MAKE) -C applications/coproc
[189]391
[595]392########################################
393### dhrystone   application compilation
[609]394applications/dhrystone/appli.elf: build/libs/libuser.a
[595]395        $(MAKE) -C applications/dhrystone
[189]396
[374]397########################################
[595]398### display  application compilation
[609]399applications/display/appli.elf: build/libs/libuser.a
[595]400        $(MAKE) -C applications/display
[189]401
[374]402########################################
[595]403### gameoflife  application compilation
[609]404applications/gameoflife/appli.elf: build/libs/libuser.a
[595]405        $(MAKE) -C applications/gameoflife
[251]406
[595]407########################################
[739]408### mjpeg  application compilation
409applications/mjpeg/appli.elf: build/libs/libuser.a
410        $(MAKE) -C applications/mjpeg
411
412########################################
[595]413### ocean  application compilation
[609]414applications/ocean/appli.elf: build/libs/libmath.a  build/libs/libuser.a
[598]415        cd applications/ocean && $(MAKE) && cd ../..
[251]416
[374]417########################################
[673]418### raycast application compilation
419applications/raycast/appli.elf: build/libs/libmath.a build/libs/libuser.a
420        $(MAKE) -C applications/raycast
421
422########################################
[595]423### router  application compilation
[609]424applications/router/appli.elf: build/libs/libuser.a
[595]425        $(MAKE) -C applications/router
[241]426
[595]427########################################
[772]428### rosenfeld application compilation
429applications/rosenfeld/appli.elf: build/libs/libmath.a build/libs/libuser.a
430        $(MAKE) -C applications/rosenfeld
431
432########################################
[595]433### shell  application compilation
[609]434applications/shell/appli.elf: build/libs/libuser.a
[595]435        $(MAKE) -C applications/shell
[241]436
[374]437########################################
[595]438### sort  application compilation
[609]439applications/sort/appli.elf: build/libs/libuser.a
[595]440        $(MAKE) -C applications/sort
[256]441
[374]442########################################
[295]443### transpose compilation
[609]444applications/transpose/appli.elf: build/libs/libuser.a
[595]445        $(MAKE) -C applications/transpose
[295]446
[753]447########################################
448### coremark compilation
449applications/coremark/appli.elf: build/libs/libuser.a
450        $(MAKE) -C applications/coremark
451
Note: See TracBrowser for help on using the repository browser.