1 |
a59a9825
|
Christian Daniel
|
# binary file name
|
2 |
b84ad82c
|
Christian Daniel
|
TARGET=rumba
|
3 |
a59a9825
|
Christian Daniel
|
|
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 |
4cd82c23
|
Christian Daniel
|
src/utils.c \
|
18 |
|
|
src/lattice/hardware.c \
|
19 |
|
|
src/lattice/slim_pro.c \
|
20 |
|
|
src/lattice/slim_vme.c
|
21 |
a59a9825
|
Christian Daniel
|
|
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
|