source: soft/giet_vm/Makefile @ 175

Last change on this file since 175 was 175, checked in by karaoui, 12 years ago

+ Adding the init attribute to the mwmr to specify the width of the mwmr channel
+ Fixing bugs in kernels_init

File size: 3.3 KB
RevLine 
[162]1export # export all variable to sub-Makefile
[158]2CC=mipsel-unknown-elf-gcc
3AS=mipsel-unknown-elf-as
4LD=mipsel-unknown-elf-ld
5DU=mipsel-unknown-elf-objdump
6
[162]7#current directory absolute path
8SOFT_PATH       = $(shell pwd)/
9
10SYS_NAME    = sys
11BOOT_NAME   = boot
12LIB_NAME    = libs
13
14SYS_PATH    = $(SOFT_PATH)$(SYS_NAME)
15BOOT_PATH   = $(SOFT_PATH)$(BOOT_NAME)
16LIB_PATH    = $(SOFT_PATH)$(LIB_NAME)
17MAP_PATH    = $(SOFT_PATH)xml/
18BUILD_PATH      = $(SOFT_PATH)build/
19ELF_PATH        = $(SOFT_PATH)build/
20
21#list of all applications directory
22APP_DIRS        = $(shell ls -d apps/*/ ) 
23
24SYS_OBJS_LIST = \
[166]25        vm_handler.o \
[162]26                sys_handler.o \
27                giet.o \
[160]28                switch.o \
29                common.o \
30                ctx_handler.o \
31                drivers.o \
32                exc_handler.o \
33                irq_handler.o \
[165]34                kernel_init.o
[158]35
[162]36BOOT_OBJS_LIST = reset.o \
37                                boot_handler.o
[158]38
[162]39#LIB_SRCS = $(wildcard $(LIB_NAME)/*.c)
[165]40LIB_OBJS_LIST = stdio.o \
41                                mwmr_channel.o \
42                                barrier.o \
43                                spin_lock.o \
[162]44                                common.o
[158]45
[162]46LIB_OBJS = $(patsubst %,$(LIB_NAME)/%,$(LIB_OBJS_LIST))
47SYS_OBJS   = $(patsubst %,$(SYS_NAME)/%,$(SYS_OBJS_LIST))
48BOOT_OBJS   = $(patsubst %,$(BOOT_NAME)/%,$(BOOT_OBJS_LIST))
49
50
[160]51CFLAGS=-Wall -ffreestanding -mno-gpopt -mips32 -g
[158]52
[175]53SYS_INCLUDE  = -I$(SYS_PATH)  -I$(MAP_PATH) -I$(LIB_PATH) -I.
[162]54BOOT_INCLUDE = -I$(BOOT_PATH) -I$(MAP_PATH) -I$(LIB_PATH) -I.
[175]55LIB_INCLUDE      = -I$(LIB_PATH)  -I$(MAP_PATH)
56INCLUDE          = -I$(LIB_PATH)  -I$(MAP_PATH)
[158]57
[160]58TRASH= /dev/null||true
59
60.PHONY: apps prepare
61
[161]62all: prepare soft.elf
[160]63       
[161]64## merge all *.elf to soft.elf
65soft.elf: boot.elf sys.elf map.bin apps
[163]66        $(MAKE) -C memo
67        memo/memo.x  map.bin
[162]68        $(DU) -D $@ > $(BUILD_PATH)$@.txt
[160]69
70## prepare the environement
71prepare:
[175]72        @mkdir $(BUILD_PATH)                            2>$(TRASH)
73        @mkdir $(ELF_PATH)                                      2>$(TRASH)
74        @mkdir $(BUILD_PATH)/$(BOOT_NAME)       2>$(TRASH)
75        @mkdir $(BUILD_PATH)/$(LIB_NAME)        2>$(TRASH)
76        @mkdir $(BUILD_PATH)/$(SYS_NAME)        2>$(TRASH)
[160]77
[158]78## mapping compilation
79map.bin: map.xml
[162]80        $(MAKE) -C xml                         
[158]81        xml/xml2bin map.xml map.bin
82
83## system compilation
[161]84sys.elf: $(SYS_OBJS) $(SYS_PATH)/sys.ld
[162]85        (cd $(BUILD_PATH); $(LD) -o $@ -T $(SYS_PATH)/sys.ld $(SYS_OBJS) )
86        (cd $(BUILD_PATH); $(DU) -D $@ > $@.txt)
[158]87
[162]88$(SYS_NAME)/%.o: $(SYS_NAME)/%.c
89        $(CC) $(SYS_INCLUDE) $(CFLAGS)  -c -o $(BUILD_PATH)/$@ $<
[158]90
[162]91$(SYS_NAME)/%.o: $(SYS_NAME)/%.s
92        $(CC) $(SYS_INCLUDE) $(CFLAGS)  -c -o $(BUILD_PATH)/$@ $<
[158]93
[162]94$(SYS_NAME)/%.o: $(SYS_NAME)/%.S
95        $(CC) $(SYS_INCLUDE) $(CFLAGS)  -c -o $(BUILD_PATH)/$@ $<
[158]96
[162]97## boot compilation
98boot.elf: $(BOOT_OBJS) $(BOOT_PATH)/boot.ld
99        (cd $(BUILD_PATH); $(LD) -o $@ -T $(BOOT_PATH)/boot.ld $(BOOT_OBJS) )
100        (cd $(BUILD_PATH); $(DU) -D $@ > $@.txt)
[158]101
[162]102$(BOOT_NAME)/%.o: $(BOOT_NAME)/%.c
103        $(CC) $(BOOT_INCLUDE) $(CFLAGS)  -c -o $(BUILD_PATH)/$@ $<
[158]104
[162]105$(BOOT_NAME)/%.o: $(BOOT_NAME)/%.s
106        $(CC) $(BOOT_INCLUDE) $(CFLAGS)  -c -o $(BUILD_PATH)/$@ $<
[158]107
[162]108$(BOOT_NAME)/%.o: $(BOOT_NAME)/%.S
109        $(CC) $(BOOT_INCLUDE) $(CFLAGS)  -c -o $(BUILD_PATH)/$@ $<
[158]110
[162]111##libs compilation
112$(LIB_NAME)/%.o: $(LIB_NAME)/%.c
[175]113        $(CC) $(CFLAGS) $(LIB_INCLUDE) -c -o $(BUILD_PATH)/$@ $<
[158]114
[162]115## applications
116apps: $(LIB_OBJS)
[160]117        @echo "---------------------------------------------BUILDING APPS------------------------------------------------------"
[162]118        set -e; for d in $(APP_DIRS); do $(MAKE)  -C $$d ; echo "Compiling $$d";  done
[158]119
120### special rules
121clean:
[161]122        rm -f *.o *.elf *.bin *.txt core *~  2>$(TRASH)
[175]123        $(MAKE) -s clean -C xml/ 2>$(TRASH)
124        $(MAKE) -s clean -C memo/ 2>$(TRASH)
[162]125        rm -r $(BUILD_PATH) 2>$(TRASH)
126        set -e; for d in $(APP_DIRS); do $(MAKE) clean -C $$d ; done
Note: See TracBrowser for help on using the repository browser.