yb_arm/makefile

179 lines
4.9 KiB
Makefile
Raw Permalink Normal View History

2023-07-12 14:14:31 +08:00
#========================================================================================================
# platform makefile
2025-06-02 23:38:34 +08:00
#FileName: makefile
#Author: xianfeng.du
#Data 2022-08-10
#Description: top makefile
2023-07-12 14:14:31 +08:00
#========================================================================================================
2025-06-02 23:38:34 +08:00
VERSION = 1.00
2023-07-12 14:14:31 +08:00
OPTION ?=
2025-06-02 23:38:34 +08:00
ifeq ($(OPTION),GCC)
CROSS_CC ?=
2023-07-12 14:14:31 +08:00
else
2025-06-02 23:38:34 +08:00
# TOOLS ?= /opt/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin
# CROSS_CC ?= $(TOOLS)/aarch64-linux-gnu-
CROSS_CC ?= aarch64-linux-gnu-
2023-07-12 14:14:31 +08:00
endif
2025-06-02 23:38:34 +08:00
AR = ar
CC = $(CROSS_CC)gcc
#$(info "CC=" $(CC))
2023-07-12 14:14:31 +08:00
2025-06-02 23:38:34 +08:00
DEFINES ?=
#DEFINES ?= UBLOX_ENABLE
2023-07-12 14:14:31 +08:00
2025-06-02 23:38:34 +08:00
DEFINES += ARM_VERSION=\"${arm_version}\"
DEFINES += ARM_TAG=\"${arm_tag}\"
DEFINES += ARM_BUILD_DATE=\"${arm_build_date}\"
2024-05-17 12:46:35 +08:00
2023-07-12 14:14:31 +08:00
ifeq ($(fronthaul_option),jesd)
2025-06-02 23:38:34 +08:00
DEFINES += ENABLE_JESD_TEST
2025-05-20 01:51:25 +08:00
ifeq ($(backhaul_option),pcie)
DEFINES += PCIE_WITH_JESD
endif
2023-07-12 14:14:31 +08:00
endif
2025-06-02 23:38:34 +08:00
#optimization level -O2
C_OPT_FLAGS ?= -O2
2023-07-12 14:14:31 +08:00
2025-06-02 23:38:34 +08:00
CC_FLAGS ?= $(C_OPT_FLAGS) -Wall -g
CC_FLAGS += -Werror -Wno-unused-function
CC_FLAGS += $(foreach d,$(DEFINES),-D$(d))
CC_FLAGS += -fPIC
2023-07-12 14:14:31 +08:00
2025-06-02 23:38:34 +08:00
LIB_DIRS ?= ./lib
2023-07-12 14:14:31 +08:00
2025-06-02 23:38:34 +08:00
SRC_DIRS ?= ./app/src
SRC_DIRS += ./osp/src
SRC_DIRS += ./driver/arm_csu/src
SRC_DIRS += ./driver/init/src
2023-07-12 14:14:31 +08:00
INCLUDE_DIRS ?= ./app/inc
INCLUDE_DIRS += ./osp/inc
INCLUDE_DIRS += ./driver/arm_csu/inc
INCLUDE_DIRS += ./driver/init/inc
2025-06-02 23:38:34 +08:00
INCLUDE_DIRS += ./driver/tfu/stc/inc
test ?= $(test_option)
case ?= $(test_id)
2023-07-12 14:14:31 +08:00
ifeq ($(test),yes)
2025-06-02 23:38:34 +08:00
DEFINES += PALLADIUM_TEST
#testbench
2023-07-12 14:14:31 +08:00
CASE_ID := $(case)
TEST_DIR := ./test/case$(CASE_ID)
2025-06-02 23:38:34 +08:00
SRC_DIRS += $(TEST_DIR)/src
INCLUDE_DIRS += $(TEST_DIR)/inc
2023-07-12 14:14:31 +08:00
endif
cache ?= $(cache_option)
ifeq ($(cache),yes)
2025-06-02 23:38:34 +08:00
DEFINES += CACHE_ENABLE
2023-07-12 14:14:31 +08:00
endif
2025-06-02 23:38:34 +08:00
LD_FLAGS ?= -lgcc -lc
LD_FLAGS += -lm -ldl -Wl,-rpath=./
LD_FLAGS += -lpthread
LD_FLAGS += -rdynamic -funwind-tables -ffunction-sections
2023-07-12 14:14:31 +08:00
ifeq ($(fronthaul_option),jesd)
2025-06-02 23:38:34 +08:00
LD_FLAGS += -lrfic -lstc
2023-07-12 14:14:31 +08:00
endif
2025-06-02 23:38:34 +08:00
LD_FLAGS += -lstc
$(info "DEFINES=" $(DEFINES))
2023-07-12 14:14:31 +08:00
2025-06-02 23:38:34 +08:00
#Flatten files and remove the duplicate by sort
2023-07-12 14:14:31 +08:00
ABS_SRC_DIRS := $(foreach d,$(SRC_DIRS),$(abspath $(d)))
SRC_FILES := $(foreach d,$(ABS_SRC_DIRS),$(wildcard $(d)/*.c))
2025-06-02 23:38:34 +08:00
#main.c
2023-07-12 14:14:31 +08:00
MAIN_DIR := ./app/src
2025-06-02 23:38:34 +08:00
MAIN_FILE := ./app/src/main.c
2023-07-12 14:14:31 +08:00
2025-06-02 23:38:34 +08:00
# Allow certain files to be excluded from the build
2023-07-12 14:14:31 +08:00
EXCL_SRCS ?= $(MAIN_FILE)
2025-06-02 23:38:34 +08:00
#EXCL_SRCS += ./app/src/main.c
2023-07-12 14:14:31 +08:00
2025-06-02 23:38:34 +08:00
# Filter source files (allow files to be excluded)
2023-07-12 14:14:31 +08:00
FINAL_SRCS_FILES += $(foreach f,$(SRC_FILES),$(if $(findstring $(abspath $(f)),$(abspath $(EXCL_SRCS))),,$(f)))
2025-06-02 23:38:34 +08:00
#$(info "FINAL_SRCS_FILES=" $(FINAL_SRCS_FILES))
# ==============================================================================
# Variables: Output Files
# ==============================================================================
BUILD_DIR := ./build
OBJ_MAIN_DIR := $(BUILD_DIR)/main
OBJ_DIR := $(BUILD_DIR)/obj
#BIN_DIR := $(BUILD_DIR)/bin
#LIB_DIR := $(BUILD_DIR)/lib
#ELF_FILE := $(BIN_DIR)/test.elf
BIN_FILE := $(BUILD_DIR)/msgtransfer.out
LIB_FILE := $(BUILD_DIR)/libmsgtransfer.a
2023-07-12 14:14:31 +08:00
OBJ_FILES += $(foreach f,$(FINAL_SRCS_FILES),$(OBJ_DIR)/$(patsubst %.c,%.o,$(notdir $(f))))
OBJ_MAIN_FILES += $(foreach f,$(MAIN_FILE),$(OBJ_MAIN_DIR)/$(patsubst %.c,%.o,$(notdir $(f))))
2025-06-02 23:38:34 +08:00
#ifeq ($(fronthaul_option),jesd)
#OBJ_FILES += $(wildcard $(RFIC_DIR)/*.o)
#RFIC_OBJ_DIR := $(BUILD_DIR)/rfic_obj
#RFIC_OBJ_FILES := $(wildcard $(RFIC_OBJ_DIR)/*.o)
#else
#RFIC_OBJ_FILES :=
#endif
# ==============================================================================
# Rules: Compilation
# ==============================================================================
2023-07-12 14:14:31 +08:00
define DO_BUILD_OBJ
$(2)/%.o: $(1)/%.c | $(2)
2025-06-02 23:38:34 +08:00
@echo "# Compiling $$< -> $$@"
$(CC) $(CC_FLAGS) -o $$@ -c $$< $(patsubst %,-I %,$(INCLUDE_DIRS))
#OBJ_TGTS += $(foreach f,$(wildcard $(1)/*.c),$(OBJ_DIR)/$(notdir $(basename $(1)))/$(patsubst %.c,%.o,$(notdir $(f))))
2023-07-12 14:14:31 +08:00
endef
define DO_BUILD_DIR
$(1):
2025-06-02 23:38:34 +08:00
@echo "# Creating directory $$@"
2023-07-12 14:14:31 +08:00
mkdir -p $$@
endef
define DO_BUILD
2025-06-02 23:38:34 +08:00
$(eval $(call DO_BUILD_DIR,$(1)))
$(foreach d,$(sort $(2)),$(eval $(call DO_BUILD_OBJ,$(d),$(1))))
2023-07-12 14:14:31 +08:00
endef
$(eval $(call DO_BUILD,$(OBJ_DIR),$(ABS_SRC_DIRS)))
$(eval $(call DO_BUILD,$(OBJ_MAIN_DIR), $(abspath $(MAIN_DIR))))
$(BIN_FILE):$(OBJ_FILES) $(OBJ_MAIN_FILES)
2025-06-02 23:38:34 +08:00
# @echo "# Creating bin directory $(BIN_DIR)"
# mkdir -p $(BIN_DIR)
@echo "# Linking objects to form $@"
$(CC) -o $@ $^ $(LD_FLAGS) $(patsubst %,-L %,$(LIB_DIRS))
# $(CC) -o $@ $^ $(LD_FLAGS) -T$(LINK_FILE)
2023-07-12 14:14:31 +08:00
2025-06-02 23:38:34 +08:00
#$(LIB_FILE):$(OBJ_FILES) $(RFIC_OBJ_FILES)
2023-07-21 09:57:43 +08:00
$(LIB_FILE):$(OBJ_FILES)
2025-06-02 23:38:34 +08:00
# @echo "# Creating lib directory $(LIB_DIR)"
# mkdir -p $(LIB_DIR)
@echo "# Linking objects to form $@"
$(AR) -rcs $@ $^
# $(CC) -shared -o $@ $^ $(LD_FLAGS)
# ==============================================================================
# Rules: Targets
# ==============================================================================
.DEFAULT_GOAL := all
.PHONY: build lib clean
all: build lib
build: $(BIN_FILE)
2023-07-12 14:14:31 +08:00
2025-06-02 23:38:34 +08:00
lib: $(LIB_FILE)
2023-07-12 14:14:31 +08:00
2025-06-02 23:38:34 +08:00
clean:
@echo "deleted all files"
2023-07-12 14:14:31 +08:00
rm -rf $(BUILD_DIR)