1
|
# binary file name
|
2
|
TARGET=rumba
|
3
|
|
4
|
# CROSS_COMPILE=
|
5
|
QUIET=@
|
6
|
|
7
|
# N = build release version
|
8
|
# y = optimize but include debugger info
|
9
|
# Y = build debug version
|
10
|
DEBUG=N
|
11
|
|
12
|
C_SOURCES=\
|
13
|
src/main.c \
|
14
|
src/osmosdr.c \
|
15
|
src/sam3u.c \
|
16
|
src/serial.c \
|
17
|
src/utils.c \
|
18
|
src/lattice/hardware.c \
|
19
|
src/lattice/slim_pro.c \
|
20
|
src/lattice/slim_vme.c
|
21
|
|
22
|
# general compiler flags
|
23
|
CFLAGS=-Wall
|
24
|
LDFLAGS=-Wl,-Map=$(FULLTARGET).map
|
25
|
LIBS=-lrt
|
26
|
|
27
|
##############################################################################
|
28
|
|
29
|
SUBDIRS=$(sort $(dir $(C_SOURCES)))
|
30
|
|
31
|
DEPDIR=deps
|
32
|
OBJDIR=objs
|
33
|
BINDIR=bin
|
34
|
DEPDIRS=$(addprefix $(DEPDIR)/,$(SUBDIRS))
|
35
|
OBJDIRS=$(addprefix $(OBJDIR)/,$(SUBDIRS))
|
36
|
|
37
|
CC=$(CROSS_COMPILE)gcc
|
38
|
LD=$(CROSS_COMPILE)gcc
|
39
|
|
40
|
COBJS=$(C_SOURCES:%.c=%.o)
|
41
|
DEPS=$(C_SOURCES:%.c=%.dep)
|
42
|
FULLDEPS=$(addprefix $(DEPDIR)/,$(DEPS))
|
43
|
FULLCOBJS=$(addprefix $(OBJDIR)/,$(COBJS))
|
44
|
FULLTARGET=$(addprefix $(BINDIR)/,$(TARGET))
|
45
|
|
46
|
ifeq ($(DEBUG),Y)
|
47
|
# debug version
|
48
|
CFLAGS+=-O0 -g3
|
49
|
LDFLAGS+=-g3
|
50
|
else ifeq ($(DEBUG),y)
|
51
|
# optimized version with debugger info
|
52
|
CFLAGS+=-O2 -g3 -Werror -ffunction-sections -fdata-sections
|
53
|
LDFLAGS+=-g3 -Wl,--gc-sections
|
54
|
else
|
55
|
# release version
|
56
|
CFLAGS+=-O2 -s -Werror -ffunction-sections -fdata-sections
|
57
|
LDFLAGS+=-s -Wl,--gc-sections
|
58
|
endif
|
59
|
|
60
|
.PHONY: all build clean distclean
|
61
|
|
62
|
all: build
|
63
|
|
64
|
build: $(FULLTARGET)
|
65
|
|
66
|
-include $(FULLDEPS)
|
67
|
|
68
|
$(FULLTARGET): $(DEPDIRS) $(OBJDIRS) $(BINDIR) $(FULLCOBJS)
|
69
|
@echo LD \ $(TARGET)
|
70
|
$(QUIET)$(LD) $(LDFLAGS) -o $(FULLTARGET) -Wl,--start-group $(FULLCOBJS) $(LIBS) -Wl,--end-group
|
71
|
$(QUIET)ln -sf $(FULLTARGET) $(TARGET)
|
72
|
|
73
|
$(FULLCOBJS):
|
74
|
@echo C\ \ \ $(patsubst $(OBJDIR)/%,%,$(patsubst %.o,%.c, $@))
|
75
|
$(QUIET)$(CC) $(CFLAGS) $(CFLAGS_$(subst /,_,$(patsubst %.o,%,$@))) -MD -MP -MF $(patsubst %.o,$(DEPDIR)/%.dep,$(patsubst $(OBJDIR)/%,%,$@)) -c $(patsubst $(OBJDIR)/%,%,$(patsubst %.o,%.c, $@)) -o $@
|
76
|
|
77
|
$(DEPDIRS):
|
78
|
$(QUIET)mkdir -p $@
|
79
|
|
80
|
$(OBJDIRS):
|
81
|
$(QUIET)mkdir -p $@
|
82
|
|
83
|
$(BINDIR):
|
84
|
$(QUIET)mkdir -p $@
|
85
|
|
86
|
clean:
|
87
|
$(QUIET)echo CLEAN
|
88
|
$(QUIET)rm -Rf $(DEPDIR) $(OBJDIR) $(BINDIR) $(TARGET) $(TARGET).map *~ *.s *.ss
|
89
|
|
90
|
distclean: clean
|