port-work; won't compile or even work
[ppcskel.git] / common.mk
1 AR = $(PREFIX)ar
2 AS = $(PREFIX)as
3 CC = $(PREFIX)gcc
4 CXX = $(PREFIX)g++
5 LD = $(PREFIX)ld
6 OBJCOPY = $(PREFIX)objcopy
7 RANLIB = $(PREFIX)ranlib
8 STRIP = $(PREFIX)strip
9
10 BIN2S = $(DEVKITPPC)/bin/bin2s
11
12 ifeq ($(NOMAPFILE),)
13 LDFLAGS += -Wl,-Map,$(TARGET).map
14 endif
15
16 ifneq ($(LDSCRIPT),)
17 LDFLAGS += -Wl,-T$(LDSCRIPT)
18 endif
19
20 DEPDIR = .deps
21
22 all: $(TARGET)
23
24 $(TARGET): $(OBJS)
25         @echo "  LINK      $@"
26         @$(CC) $(LDFLAGS) $(OBJS) $(LIBS) -o $@
27
28 ifneq ($(LDSCRIPT),)
29 $(TARGET): $(LDSCRIPT)
30 endif
31
32 %.o: %.c
33         @echo "  COMPILE   $<"
34         @mkdir -p $(DEPDIR)
35         @$(CC) $(CFLAGS) $(DEFINES) -Wp,-MMD,$(DEPDIR)/$(*F).d,-MQ,"$@",-MP -c $< -o $@
36
37 %.o: %.s
38         @echo "  ASSEMBLE  $<"
39         @$(CC) $(CFLAGS) $(DEFINES) $(ASFLAGS) -c $< -o $@
40
41 %.o: %.S
42         @echo "  ASSEMBLE  $<"
43         @$(CC) $(CFLAGS) $(DEFINES) $(ASFLAGS) -c $< -o $@
44
45 clean:
46         rm -rf $(DEPDIR)
47         rm -f $(TARGET) $(TARGET).map $(OBJS)
48
49 define bin2o
50         @echo "  BIN2S     $(notdir $<)"
51         @$(BIN2S) -a 32 $< | $(AS) -o $(@)
52         @echo "extern const u8" `(echo $(<F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end[];" > `(echo $(<F) | tr . _)`.h
53         @echo "extern const u8" `(echo $(<F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"[];" >> `(echo $(<F) | tr . _)`.h
54         @echo "extern const u32" `(echo $(<F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size";" >> `(echo $(<F) | tr . _)`.h
55 endef
56
57 -include $(DEPDIR)/*
58
59 .PHONY: clean
60