68 lines
1.5 KiB
Makefile
Executable File
68 lines
1.5 KiB
Makefile
Executable File
#===============================================================================
|
|
# export variables
|
|
#===============================================================================
|
|
|
|
TARGET := str_bit
|
|
LOAD_ADDR = 0x0
|
|
|
|
#
|
|
# Include the make variables (CC, etc...)
|
|
#
|
|
AS = $(CROSS_COMPILE)as
|
|
LD = $(CROSS_COMPILE)ld
|
|
CC = $(CROSS_COMPILE)gcc
|
|
CPP = $(CC) -E
|
|
AR = $(CROSS_COMPILE)ar
|
|
NM = $(CROSS_COMPILE)nm
|
|
LDR = $(CROSS_COMPILE)ldr
|
|
STRIP = $(CROSS_COMPILE)strip
|
|
OBJCOPY = $(CROSS_COMPILE)objcopy
|
|
OBJDUMP = $(CROSS_COMPILE)objdump
|
|
RANLIB = $(CROSS_COMPILE)RANLIB
|
|
|
|
PHONY: help
|
|
|
|
GREEN="\e[32;1m"
|
|
NORMAL="\e[39m"
|
|
RED="\e[31m"
|
|
|
|
LDSCRIPT := linker.lds
|
|
LDFLAGS := -Bstatic -T $(LDSCRIPT) -Ttext $(LOAD_ADDR)
|
|
|
|
CFLAGS += -march=armv8-a -Wall -g -c -fPIC -nostdinc -fno-builtin
|
|
|
|
SFLAGS := $(CFLAGS)
|
|
|
|
CSRC = ${wildcard *.c lib/*.c}
|
|
ASRC = $(wildcard *.S lib/*.S)
|
|
|
|
COBJS := $(patsubst %.c, %.o, $(CSRC))
|
|
AOBJS += $(patsubst %.S, %.o, $(ASRC))
|
|
|
|
COBJS:=$(COBJS:%.C=%.o)
|
|
AOBJS:=$(AOBJS:%.S=%.o)
|
|
|
|
|
|
all: $(AOBJS) $(COBJS)
|
|
$(LD) $^ $(LDFLAGS) -Map $(TARGET).map -o $(TARGET).elf
|
|
$(OBJCOPY) -O binary $(TARGET).elf $(TARGET).bin
|
|
$(OBJDUMP) $(TARGET).elf -S -D >$(TARGET).dump
|
|
|
|
help:
|
|
@echo -e ${GREEN}
|
|
@echo "make CROSS_COMPILE=aarch64-gcc12.2.0-linux- all -- Build the bin, Use 64bit compiler"
|
|
@echo "make CROSS_COMPILE=aarch64-gcc12.2.0-linux- clean -- Clean all"
|
|
@echo -e ${NORMAL}
|
|
|
|
%.o: %.S
|
|
$(CC) $(SFLAGS) -o $@ $<
|
|
|
|
%.o: %.c
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
.PHONY : clean
|
|
clean:
|
|
-rm -rf $(COBJS) $(AOBJS) $(TARGET).elf $(TARGET).bin $(TARGET).map $(LIBS) $(TARGET).dump
|
|
|
|
|