Subversion Repositories freemyipod

Rev

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

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