IR-controller/Makefile
2014-03-19 00:22:14 +04:00

122 lines
2.9 KiB
Makefile

BIN=testproject
# Headers that don't have c-files with same name
# but project depends on them
INDEPENDENT_HEADERS=usb_conf.h includes.h
# Here are STDPeriphLib objects used in project
SPL=
SPL+=misc
SPL+=stm32f10x_adc
SPL+=stm32f10x_bkp
SPL+=stm32f10x_can
SPL+=stm32f10x_cec
SPL+=stm32f10x_crc
SPL+=stm32f10x_dac
SPL+=stm32f10x_dbgmcu
SPL+=stm32f10x_dma
SPL+=stm32f10x_exti
SPL+=stm32f10x_flash
SPL+=stm32f10x_fsmc
SPL+=stm32f10x_gpio
SPL+=stm32f10x_i2c
SPL+=stm32f10x_iwdg
SPL+=stm32f10x_pwr
SPL+=stm32f10x_rcc
SPL+=stm32f10x_rtc
SPL+=stm32f10x_sdio
SPL+=stm32f10x_spi
SPL+=stm32f10x_tim
SPL+=stm32f10x_usart
SPL+=stm32f10x_wwdg
STLIBDIR=stm32_lib
OBJDIR=mk
USB_LIBDIR=usb_lib
INDEPENDENT_HEADERS+=$(STLIBDIR)/stm32f10x_conf.h
TOOLS_PATH=/usr/arm-none-eabi
TOOLS_PREFIX=arm-none-eabi-
CPFLAGS=-Obinary
ODFLAGS=-S
CFLAGS=-c -mcpu=cortex-m3 -mthumb -Wall -Werror -mapcs-frame -D__thumb2__=1 -Os
CFLAGS+=-msoft-float -gdwarf-2 -mno-sched-prolog -fno-hosted -mtune=cortex-m3
CFLAGS+=-march=armv7-m -mfix-cortex-m3-ldrd -ffunction-sections -fdata-sections
CFLAGS+=-I./cmsis -I./stm32_lib -I./usb_lib -I.
CFLAGS+=-DSTM32F10X_MD
LDFLAGS=-static -mcpu=cortex-m3 -mthumb -mthumb-interwork -Wl,--start-group
LDFLAGS+=-L$(TOOLS_PATH)/lib/thumb2 -lc -lg -lstdc++ -lsupc++ -lgcc -lm
LDFLAGS+=-Wl,--end-group -Xlinker -Map -Xlinker $(BIN).map -Xlinker
LDFLAGS+=-T ./cmsis/stm32f100rb_flash.ld -o $(BIN)
LDFLAGS+=-Wl,--gc-sections -Wl,-s
ASFLAGS=-mcpu=cortex-m3 -I./cmsis -I./stm32_lib -gdwarf-2 -gdwarf-2
CC=$(TOOLS_PREFIX)gcc
AS=$(TOOLS_PREFIX)as
SIZE=$(TOOLS_PREFIX)size
CP=$(TOOLS_PREFIX)objcopy
OD=$(TOOLS_PREFIX)objdump
# These are main project sources
SRC=$(wildcard *.c)
MAIN_OBJ=$(addprefix $(OBJDIR)/, $(SRC:%.c=%.o))
STM32_LIBSRC=$(addprefix $(STLIBDIR)/, $(addsuffix .c, $(SPL)))
OBJ=$(addprefix $(OBJDIR)/, $(addsuffix .o, $(SPL)))
OBJ+=$(OBJDIR)/system_stm32f10x.o $(OBJDIR)/startup.o
STM32_LIBSRC+=cmsis/system_stm32f10x.c
# USB library sources
USB_SRC=$(wildcard $(USB_LIBDIR)/*.c)
USB_OBJ=$(addprefix $(OBJDIR)/, $(USB_SRC:$(USB_LIBDIR)/%.c=%.o))
ALL_OBJ=$(OBJ) $(MAIN_OBJ) $(USB_OBJ)
ALL_SRC=$(SRC) $(STM32_LIBSRC) $(USB_SRC)
all: $(BIN)
$(OBJDIR):
mkdir $(OBJDIR)
$(OBJDIR)/%.o: $(STLIBDIR)/%.c
$(CC) $(CFLAGS) $< -o $@
$(OBJDIR)/system_stm32f10x.o: ./cmsis/system_stm32f10x.c
$(CC) $(CFLAGS) $< -o $@
$(OBJDIR)/startup.o: ./cmsis/startup_stm32f10x_md.s
$(AS) $(ASFLAGS) ./cmsis/startup_stm32f10x_md.s -o $(OBJDIR)/startup.o
$(OBJDIR)/%.o: %.c
$(CC) $(CFLAGS) $< -o $@
$(OBJDIR)/%.o: $(USB_LIBDIR)/%.c
$(CC) $(CFLAGS) $< -o $@
$(SRC) : %.c : %.h $(INDEPENDENT_HEADERS)
@touch $@
%.h: ;
$(BIN): $(OBJDIR) $(ALL_OBJ)
$(CC) $(ALL_OBJ) $(LDFLAGS)
$(CP) $(CPFLAGS) $(BIN) $(BIN).bin
$(OD) $(ODFLAGS) $(BIN) > $(BIN).list
$(SIZE) -B $(BIN)
clean:
rm -f $(ALL_OBJ) $(BIN).map $(BIN) $(BIN).list
rmdir $(OBJDIR)
load: $(BIN)
st-flash write $(BIN).bin 0x08000000
.PHONY: clean load