import os

env = Environment(
	ENV = os.environ,
	
	CC = 'arm-none-eabi-gcc',
	CXX = 'arm-none-eabi-g++',
	AS = 'arm-none-eabi-gcc',
	CCFLAGS = '-O2 -Wall -ggdb -mcpu=cortex-m4 -mthumb -mhard-float -ffunction-sections',
	CXXFLAGS = '-fno-exceptions -fno-rtti',
	ASFLAGS = '-c -x assembler-with-cpp -mcpu=cortex-m4 -mthumb -mhard-float',
	
	#CPPDEFINES = [],
	
	LINK = 'arm-none-eabi-gcc',
	LINKFLAGS = '-Wall -mcpu=cortex-m4 -mthumb -mhard-float -nostartfiles -Wl,-Tsuzumebachi.ld', # -Wl,--gc-sections
	
	AR = 'arm-none-eabi-ar',
	RANLIB = 'arm-none-eabi-ranlib',
	
	CPPPATH = ['os', 'hal', 'drivers'],
	#LIBPATH = [],
	
	LIBS = ['m'],
)

sources = Glob('os/*.cpp') + Glob('hal/*.cpp') + Glob('drivers/*.cpp') + Glob('*.cpp')

firmware = env.Program('suzumebachi.elf', sources)
env.Depends(firmware, 'suzumebachi.ld')

env.Command('prog', ['suzumebachi.elf'], 'openocd -f openocd.cfg -c flash_chip')

Default('suzumebachi.elf')