Files
Demo_hello/Makefile
2023-10-30 22:26:28 +08:00

98 lines
3.4 KiB
Makefile
Executable File

#*******************************************************************************
# Path information
#*******************************************************************************
LOCAL_DIR := $(realpath $(shell pwd))
DEMO_TOP := $(LOCAL_DIR)
SOURCE_DIR := $(DEMO_TOP)/src
DYNAMIC_DIR := $(DEMO_TOP)/lib
INCLUDE_DIR := $(DEMO_TOP)/include
OUTPUT_DIR := $(LOCAL_DIR)/output
INSTALL_DIR ?= $(LOCAL_DIR)/__install
#*******************************************************************************
# Variables
#*******************************************************************************
# target
TARGET ?= demo_hello
PRODUCT ?= LBC2
PLATFORM_RK3568 := LBC2
#*******************************************************************************
# Functions
#*******************************************************************************
#*******************************************************************************
# Objects
#*******************************************************************************
sources = $(subst $(LOCAL_DIR)/,,$(shell find $(SOURCE_DIR) -name "*.c"))
#$(info sources=$(sources))
filter_out_files :=
filter_out_dirs :=
sources_out := $(foreach dir,$(filter_out_dirs),$(shell find $(dir) -name "*.c"))
#$(info sources_out=$(sources_out))
sources := $(filter-out $(sources_out),$(sources))
sources := $(foreach file,$(sources),$(if $(filter $(subst $(LOCAL_DIR)/,,$(strip $(patsubst %/,%,$(sort $(dir $(file)))))),$(filter_out_dirs)),,$(file)))
objects = $(addprefix $(OUTPUT_DIR)/,$(patsubst %.c,%.o,$(sources)))
$(info objects=$(objects))
#*******************************************************************************
# Compile configure
#*******************************************************************************
ARCH := arm
ifneq ($(filter $(PRODUCT),$(PLATFORM_RK3568)),)
ARCH := arm64
#CROSS_COMPILE := $(HOME)/Workspaces/Toolchains/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
CROSS_COMPILE := $(HOME)/Workspaces/Toolchains/aarch64/aarch64-linux-android-4.9/
endif
CC := $(CROSS_COMPILE)gcc
LD := $(CROSS_COMPILE)ld
AR := $(CROSS_COMPILE)ar
STRIP := $(CROSS_COMPILE)strip
export ARCH CROSS_COMPILE
INC_DIRS := $(INCLUDE_DIR)
LIB_DIRS := $(DYNAMIC_DIR)
LIBS := $(LIBS_$(PLATFORM))
CFLAGS :=
CFLAGS += $(if $(INC_DIRS),$(addprefix -I,$(sort $(INC_DIRS)))) -g -Wall -O2
LDFLAGS += $(if $(LIB_DIRS),$(addprefix -L,$(sort $(LIB_DIRS)))) $(if $(LIBS),$(addprefix -l,$(sort $(LIBS))))
ARFLAGS +=
#*******************************************************************************
# Targets
#*******************************************************************************
.PHONY: init $(TARGET) install clean help
all: init $(TARGET)
init:
@mkdir -p $(OUTPUT_DIR)
$(TARGET): $(objects)
@echo ">>>>>>>>>>>>>>>>>>> $@ >>>>>>>>>>>>>>>>>>>"
$(CC) -o $(OUTPUT_DIR)/$@ $^ $(CFLAGS) $(LDFLAGS)
$(OUTPUT_DIR)/%.o: %.c
@mkdir -p $(@D)
@$(CC) -o $@ -c $< $(CFLAGS)
install:
@echo ">>>>>>>>>>>>>>>>>>> $@ >>>>>>>>>>>>>>>>>>>"
@if [ -d ${INSTALL_DIR} ]; then cp -arf $(OUTPUT_DIR)/t1_test ${INSTALL_DIR}/; fi
clean:
@echo ">>>>>>>>>>>>>>>>>>> $@ >>>>>>>>>>>>>>>>>>>"
@rm -rf $(OUTPUT_DIR)
@if [ -d $(LOCAL_DIR)/__install ]; then \
rm -rf $(LOCAL_DIR)/__install; \
fi
help:
@echo "usage: make PRODUCT={PRODUCT}"