88 lines
1.9 KiB
Makefile
88 lines
1.9 KiB
Makefile
# binary file name
|
|
TARGET=sdr-samba
|
|
|
|
# CROSS_COMPILE=
|
|
QUIET=@
|
|
|
|
# N = build release version
|
|
# y = optimize but include debugger info
|
|
# Y = build debug version
|
|
DEBUG=N
|
|
|
|
C_SOURCES=\
|
|
src/main.c \
|
|
src/osmosdr.c \
|
|
src/sam3u.c \
|
|
src/serial.c \
|
|
src/utils.c
|
|
|
|
# general compiler flags
|
|
CFLAGS=-Wall
|
|
LDFLAGS=-Wl,-Map=$(FULLTARGET).map
|
|
LIBS=-lrt
|
|
|
|
##############################################################################
|
|
|
|
SUBDIRS=$(sort $(dir $(C_SOURCES)))
|
|
|
|
DEPDIR=deps
|
|
OBJDIR=objs
|
|
BINDIR=bin
|
|
DEPDIRS=$(addprefix $(DEPDIR)/,$(SUBDIRS))
|
|
OBJDIRS=$(addprefix $(OBJDIR)/,$(SUBDIRS))
|
|
|
|
CC=$(CROSS_COMPILE)gcc
|
|
LD=$(CROSS_COMPILE)gcc
|
|
|
|
COBJS=$(C_SOURCES:%.c=%.o)
|
|
DEPS=$(C_SOURCES:%.c=%.dep)
|
|
FULLDEPS=$(addprefix $(DEPDIR)/,$(DEPS))
|
|
FULLCOBJS=$(addprefix $(OBJDIR)/,$(COBJS))
|
|
FULLTARGET=$(addprefix $(BINDIR)/,$(TARGET))
|
|
|
|
ifeq ($(DEBUG),Y)
|
|
# debug version
|
|
CFLAGS+=-O0 -g3
|
|
LDFLAGS+=-g3
|
|
else ifeq ($(DEBUG),y)
|
|
# optimized version with debugger info
|
|
CFLAGS+=-O2 -g3 -Werror -ffunction-sections -fdata-sections
|
|
LDFLAGS+=-g3 -Wl,--gc-sections
|
|
else
|
|
# release version
|
|
CFLAGS+=-O2 -s -Werror -ffunction-sections -fdata-sections
|
|
LDFLAGS+=-s -Wl,--gc-sections
|
|
endif
|
|
|
|
.PHONY: all build clean distclean
|
|
|
|
all: build
|
|
|
|
build: $(FULLTARGET)
|
|
|
|
-include $(FULLDEPS)
|
|
|
|
$(FULLTARGET): $(DEPDIRS) $(OBJDIRS) $(BINDIR) $(FULLCOBJS)
|
|
@echo LD \ $(TARGET)
|
|
$(QUIET)$(LD) $(LDFLAGS) -o $(FULLTARGET) -Wl,--start-group $(FULLCOBJS) $(LIBS) -Wl,--end-group
|
|
$(QUIET)ln -sf $(FULLTARGET) $(TARGET)
|
|
|
|
$(FULLCOBJS):
|
|
@echo C\ \ \ $(patsubst $(OBJDIR)/%,%,$(patsubst %.o,%.c, $@))
|
|
$(QUIET)$(CC) $(CFLAGS) $(CFLAGS_$(subst /,_,$(patsubst %.o,%,$@))) -MD -MP -MF $(patsubst %.o,$(DEPDIR)/%.dep,$(patsubst $(OBJDIR)/%,%,$@)) -c $(patsubst $(OBJDIR)/%,%,$(patsubst %.o,%.c, $@)) -o $@
|
|
|
|
$(DEPDIRS):
|
|
$(QUIET)mkdir -p $@
|
|
|
|
$(OBJDIRS):
|
|
$(QUIET)mkdir -p $@
|
|
|
|
$(BINDIR):
|
|
$(QUIET)mkdir -p $@
|
|
|
|
clean:
|
|
$(QUIET)echo CLEAN
|
|
$(QUIET)rm -Rf $(DEPDIR) $(OBJDIR) $(BINDIR) $(TARGET) $(TARGET).map *~ *.s *.ss
|
|
|
|
distclean: clean
|