#CC=arm-none-eabi-gcc AS=arm-none-eabi-as CXX=arm-none-eabi-g++ OBJCOPY=arm-none-eabi-objcopy OBJDUMP=arm-none-eabi-objdump #CFLAGS=-ffreestanding -march=armv7-a -mcpu=cortex-a8 -mfloat-abi=softfp -mfpu=neon --std=gnu99 -ggdb -Wall -Wextra -pedantic -Wno-unused-parameter -Og -flto CXXFLAGS=-ffreestanding -march=armv7-a -mcpu=cortex-a8 -mfloat-abi=softfp -mfpu=neon -mno-unaligned-access --std=c++11 -ggdb -Wall -Wextra -pedantic -Wno-unused-parameter -fno-rtti -fstrict-enums -Wabi -Og -flto LDFLAGS=-static C_SRCS= CXX_SRCS=cortexa8.cc drv_omap35x_gpt.cc drv_omap35x_i2c.cc drv_omap35x_sdmmc.cc drv_tps65950.cc main.cc mm.cc newlib_syscall.cc omap35x.cc omap35x_intc.cc omap35x_prcm.cc pagecache.cc phys_mm.cc scheduler.cc sleep.cc syscall.cc uart.cc S_SRCS=cortexa8_asm.s OBJS=$(addprefix objs/,$(C_SRCS:.c=.o)) $(addprefix objs/,$(CXX_SRCS:.cc=.o)) $(addprefix objs/,$(S_SRCS:.s=.o)) all: fw.img fw: $(OBJS) fw_cxx.ld $(CXX) $(CXXFLAGS) $(LDFLAGS) -o $@ $(OBJS) -lc -T fw_cxx.ld fw.bin: fw $(OBJCOPY) -O binary $< $@ fw.img: fw.bin ./mkimage -A arm -O linux -T kernel -C none -a 0x80008000 -e `$(OBJDUMP) -f fw | grep "start address" | cut -d\ -f 3` -n none -d $< $@ beagle-nand.bin: fw.img ./bb_nandflash.sh $< $@ kernel >/dev/null 2>&1 ./bb_nandflash_ecc $@ 0x0 0xe80000 || true qemu: beagle-nand.bin qemu-system-arm -M beagle -m 256M -mtdblock beagle-nand.bin -sd sd.bin -nographic -s objs/%.o: %.c $(CXX) $(CXXFLAGS) -c -MMD -MP -o $@ $< @cp objs/$*.d objs/$*.P; rm -f objs/$*.d objs/%.o: %.cc $(CXX) $(CXXFLAGS) -c -MMD -MP -o $@ $< @cp objs/$*.d objs/$*.P; rm -f objs/$*.d objs/%.o: %.s $(AS) $(ASOPTS) -o $@ $< clean: rm -f $(OBJS) $(addprefix objs/,$(C_SRCS:.c=.P)) $(addprefix objs/,$(CXX_SRCS:.cc=.P)) fw fw.bin fw.img .PSEUDO=all clean qemu -include $(addprefix objs/,$(C_SRCS:.c=.P)) -include $(addprefix objs/,$(CXX_SRCS:.cc=.P))