mirror of
https://gitee.com/moluo-tech/AT-Command.git
synced 2025-02-05 17:28:23 +08:00
111 lines
2.8 KiB
Makefile
111 lines
2.8 KiB
Makefile
# Specify the compiler name
|
|
CROSS_COMPILE ?=
|
|
|
|
# Name of the target
|
|
TARGET_NAME := demo
|
|
|
|
# Source File Directory
|
|
source_path := ./ ../../src
|
|
source_path += ./src
|
|
source_path += ./cmd
|
|
|
|
# Source Files
|
|
source_files :=
|
|
|
|
# Header file directory
|
|
include_path := ./include ../../include
|
|
|
|
# Exclude files that do not participate in compilation
|
|
exclude_files := ../../src/at_port.c
|
|
|
|
#Dependency library
|
|
LIB =
|
|
|
|
#MAKEFLAGS := -j $(shell nproc)
|
|
|
|
#
|
|
# 警告选项
|
|
#
|
|
WARNINGS := -Wall -Wextra -Werror\
|
|
-Wshadow -Wundef -Wmaybe-uninitialized \
|
|
-Wno-unused-function -Wno-error=strict-prototypes -Wpointer-arith -fno-strict-aliasing -Wno-error=cpp -Wuninitialized \
|
|
-Wno-missing-field-initializers -Wno-parentheses -Wno-format-nonliteral -Wno-cast-qual -Wunreachable-code -Wno-switch-default \
|
|
-Wreturn-type -Wmultichar -Wformat-security -Wno-ignored-qualifiers -Wno-error=pedantic -Wno-sign-compare -Wno-error=missing-prototypes -Wdouble-promotion -Wclobbered -Wdeprecated \
|
|
-Wempty-body -Wstack-usage=4096 -Wno-unused-parameter \
|
|
-Wtype-limits -Wsizeof-pointer-memaccess -Wpointer-arith -Wno-pointer-to-int-cast -Wno-pointer-sign
|
|
|
|
##############################################################################
|
|
# Compile options
|
|
#
|
|
CFLAGS := -O0 -g -fPIC -Wall $(WARNINGS)
|
|
CFLAGS += -std=gnu99
|
|
|
|
#############################################################################
|
|
# Linker options
|
|
#
|
|
# Link script
|
|
LDFLAGS = -Tlinker.lds -Wl,-Map=$(TARGET).map
|
|
#pthread
|
|
LDFLAGS += -pthread -lpthread
|
|
|
|
#############################################################################
|
|
AS = $(CROSS_COMPILE)as
|
|
LD = $(CROSS_COMPILE)ld
|
|
CC = $(CROSS_COMPILE)gcc
|
|
CPP = $(CC) -E
|
|
AR = $(CROSS_COMPILE)ar
|
|
NM = $(CROSS_COMPILE)nm
|
|
|
|
#Target directory
|
|
BIN_DIR := ./output/
|
|
OBJ_DIR := ./output/obj/
|
|
TARGET := $(BIN_DIR)$(TARGET_NAME)
|
|
TOPDIR := $(shell pwd)/
|
|
|
|
#Source file directory
|
|
SRC_DIRS := $(source_path)
|
|
|
|
#Search the list of source files
|
|
CSRCS := $(shell find $(SRC_DIRS) -maxdepth 1 -path '*.c')
|
|
CSRCS += $(source_files)
|
|
CSRCS := $(notdir $(CSRCS))
|
|
#排除文件列表
|
|
EXCLUDE_LIST := $(notdir $(exclude_files))
|
|
|
|
CSRCS := $(filter-out $(EXCLUDE_LIST), $(CSRCS))
|
|
|
|
#
|
|
# Target files(*.o)
|
|
#
|
|
OBJS := $(addprefix $(OBJ_DIR),$(CSRCS:.c=.o) )
|
|
|
|
|
|
CFLAGS += $(patsubst %,-I$(TOPDIR)%,$(subst ./, ,$(SRC_DIRS)))
|
|
CFLAGS += $(addprefix -I$(TOPDIR),$(include_path) )
|
|
|
|
#指定搜索目录
|
|
VPATH += $(addprefix :, $(SRC_DIRS))
|
|
|
|
all: default $(TARGET)
|
|
|
|
$(TARGET):$(OBJS)
|
|
@$(CC) $(LDFLAGS) -o $@ $^
|
|
@echo Creating $(notdir $(TARGET)) ...
|
|
|
|
$(OBJ_DIR)%.o: %.c
|
|
@echo 'Compiling ' $< ...
|
|
@$(CC) $(CFLAGS) -c -o $@ $<
|
|
|
|
.PHONY: all clean default
|
|
|
|
#创建输出目录
|
|
default:
|
|
@rm -rf $(TARGET)
|
|
@mkdir -p $(BIN_DIR)
|
|
@mkdir -p $(OBJ_DIR)
|
|
|
|
clean:
|
|
rm -rf $(TARGET).map
|
|
rm -rf $(TARGET)
|
|
@rm -rf $(OBJS)
|
|
@rm -rf tmp
|