Subversion Repositories freemyipod

Rev

Rev 253 | Rev 462 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
253 theseven 1
NAME := ftlstub
2
 
457 theseven 3
CROSS   ?= arm-elf-eabi-
253 theseven 4
CC      := $(CROSS)gcc
5
AS      := $(CROSS)as
6
LD      := $(CROSS)ld
7
OBJCOPY := $(CROSS)objcopy
8
UCLPACK := ucl2e10singleblk
9
 
10
CFLAGS  += -Os -mthumb -fno-pie -fno-stack-protector -fomit-frame-pointer -I. -ffunction-sections
11
LDFLAGS += --gc-sections
12
 
13
preprocess = $(shell $(CC) $(PPCFLAGS) $(2) -E -P -x c $(1) | grep -v "^\#")
14
preprocesspaths = $(shell $(CC) $(PPCFLAGS) $(2) -E -P -x c $(1) | grep -v "^\#" | sed -e "s:^..*:$(dir $(1))&:")
15
 
16
SRC := $(call preprocesspaths,SOURCES,)
17
OBJ := $(SRC:%.c=build/%.o)
18
OBJ := $(OBJ:%.S=build/%.o)
19
 
20
all: $(NAME)
21
 
22
$(NAME): build/$(NAME).ucl
23
 
24
build/$(NAME).ucl: build/$(NAME).bin
25
	@echo [UCL]    $<
26
	@$(UCLPACK) $^ $@
27
 
28
build/$(NAME).bin: build/$(NAME).elf
29
	@echo [OC]     $<
30
	@$(OBJCOPY) -O binary $^ $@
31
 
32
build/$(NAME).elf: ls.x $(OBJ) build/main.o
33
	@echo [LD]     $@
34
	@$(LD) $(LDFLAGS) -o $@ -T ls.x $(OBJ)
35
 
36
build/%.o: %.c
37
	@echo [CC]     $<
38
ifeq ($(shell uname),WindowsNT)
39
	@-if not exist $(subst /,\,$(dir $@)) md $(subst /,\,$(dir $@))
40
else
41
	@-mkdir -p $(dir $@)
42
endif
43
	@$(CC) -c $(CFLAGS) -o $@ $<
44
	@$(CC) -MM $(CFLAGS) $< > $@.dep.tmp
45
	@sed -e "s|.*:|$@:|" < $@.dep.tmp > $@.dep
46
ifeq ($(shell uname),WindowsNT)
47
	@sed -e "s/.*://" -e "s/\\$$//" < $@.dep.tmp | fmt -1 | sed -e "s/^ *//" -e "s/$$/:/" >> $@.dep
48
else
49
	@sed -e 's/.*://' -e 's/\\$$//' < $@.dep.tmp | fmt -1 | sed -e 's/^ *//' -e 's/$$/:/' >> $@.dep
50
endif
51
	@rm -f $@.dep.tmp
52
 
53
build/%.o: %.S
54
	@echo [CC]     $<
55
ifeq ($(shell uname),WindowsNT)
56
	@-if not exist $(subst /,\,$(dir $@)) md $(subst /,\,$(dir $@))
57
else
58
	@-mkdir -p $(dir $@)
59
endif
60
	@$(CC) -c $(CFLAGS) -o $@ $<
61
	@$(CC) -MM $(CFLAGS) $< > $@.dep.tmp
62
	@sed -e "s|.*:|$@:|" < $@.dep.tmp > $@.dep
63
ifeq ($(shell uname),WindowsNT)
64
	@sed -e "s/.*://" -e "s/\\$$//" < $@.dep.tmp | fmt -1 | sed -e "s/^ *//" -e "s/$$/:/" >> $@.dep
65
else
66
	@sed -e 's/.*://' -e 's/\\$$//' < $@.dep.tmp | fmt -1 | sed -e 's/^ *//' -e 's/$$/:/' >> $@.dep
67
endif
68
	@rm -f $@.dep.tmp
69
 
70
-include $(OBJ:%=%.dep)
71
 
72
clean:
73
	rm -rf build
74
 
75
.PHONY: all clean $(NAME)