10d163575Sopenharmony_ciinclude $(LITEOSTOPDIR)/config.mk
20d163575Sopenharmony_ci
30d163575Sopenharmony_ciMODULE_NAME := c
40d163575Sopenharmony_ci
50d163575Sopenharmony_ciTOPDIR = $(LITEOSTOPDIR)/../..
60d163575Sopenharmony_ciMUSLDIR = $(TOPDIR)/third_party/musl
70d163575Sopenharmony_ciMUSLPORTINGDIR = $(MUSLDIR)/porting/liteos_a/kernel
80d163575Sopenharmony_ciOPTRTDIR = $(TOPDIR)/third_party/optimized-routines
90d163575Sopenharmony_ci
100d163575Sopenharmony_ciMUSL_SRCS =
110d163575Sopenharmony_ciLOCAL_OPT_DIR = src/arch/$(ARCH)
120d163575Sopenharmony_ciLOCAL_OPT_SRCS =
130d163575Sopenharmony_ciLOCAL_FILTER_SRCS =
140d163575Sopenharmony_ci
150d163575Sopenharmony_ciMUSLPORTING_SRCS = \
160d163575Sopenharmony_ci	src/*/$(ARCH)/*.[csS] \
170d163575Sopenharmony_ci	src/*/*.c
180d163575Sopenharmony_ci
190d163575Sopenharmony_ciLOCAL_SRCS = $(wildcard $(addprefix $(MUSLPORTINGDIR)/,$(MUSLPORTING_SRCS)))
200d163575Sopenharmony_ciLOCAL_SRCS := $(filter-out $(subst $(MUSLPORTINGDIR),$(MUSLDIR),$(LOCAL_SRCS)),$(addprefix $(MUSLDIR)/,$(MUSL_SRCS)) $(LOCAL_SRCS))
210d163575Sopenharmony_ciLOCAL_SRCS += $(wildcard src/*.c src/*.S)
220d163575Sopenharmony_ci# Sources optimized for specific architectures
230d163575Sopenharmony_ciLOCAL_OPT_SRCS := $(wildcard $(LOCAL_OPT_DIR)/*.c, $(LOCAL_OPT_DIR)/*.S)
240d163575Sopenharmony_ci# Enumerate common src files with the same name as the optimized srcs
250d163575Sopenharmony_ciLOCAL_FILTER_SRCS := $(addprefix $(MUSLPORTINGDIR)/src/string/,$(subst $(LOCAL_OPT_DIR)/,,$(LOCAL_OPT_SRCS)))
260d163575Sopenharmony_ciLOCAL_FILTER_SRCS += $(addprefix src/,$(subst $(LOCAL_OPT_DIR)/,,$(LOCAL_OPT_SRCS)))
270d163575Sopenharmony_ciLOCAL_FILTER_SRCS := $(subst .S,.c, $(LOCAL_FILTER_SRCS))
280d163575Sopenharmony_ci
290d163575Sopenharmony_ciifeq ($(LOSCFG_ARCH_ARM_VER), "armv7-a")
300d163575Sopenharmony_ciLOCAL_SRCS := $(filter-out $(addprefix $(MUSLPORTINGDIR)/src/string/,memchr.c memcpy.c strcmp.c strcpy.c strlen.c), $(LOCAL_SRCS))
310d163575Sopenharmony_ciLOCAL_SRCS += \
320d163575Sopenharmony_ci	$(OPTRTDIR)/string/arm/memchr.S \
330d163575Sopenharmony_ci	$(OPTRTDIR)/string/arm/memcpy.S \
340d163575Sopenharmony_ci	$(OPTRTDIR)/string/arm/strcmp.S \
350d163575Sopenharmony_ci	$(OPTRTDIR)/string/arm/strcpy.c \
360d163575Sopenharmony_ci	$(OPTRTDIR)/string/arm/strlen-armv6t2.S
370d163575Sopenharmony_ci
380d163575Sopenharmony_ciLOCAL_CMACRO = \
390d163575Sopenharmony_ci	-D__strlen_armv6t2=strlen \
400d163575Sopenharmony_ci	-D__strcmp_arm=strcmp \
410d163575Sopenharmony_ci	-D__memchr_arm=memchr
420d163575Sopenharmony_ci
430d163575Sopenharmony_ciifeq ($(LOSCFG_KERNEL_LMS), y)
440d163575Sopenharmony_ciLOCAL_CMACRO += -D__memcpy_arm=__memcpy -D__strcpy_arm=__strcpy
450d163575Sopenharmony_cielse
460d163575Sopenharmony_ciLOCAL_CMACRO += -D__memcpy_arm=memcpy -D__strcpy_arm=strcpy
470d163575Sopenharmony_ciendif
480d163575Sopenharmony_ci
490d163575Sopenharmony_ci# Replace the general srcs of the same name with specially optimized srcs
500d163575Sopenharmony_ciLOCAL_SRCS += $(LOCAL_OPT_SRCS)
510d163575Sopenharmony_ciLOCAL_SRCS := $(filter-out $(LOCAL_FILTER_SRCS),$(LOCAL_SRCS))
520d163575Sopenharmony_ciendif
530d163575Sopenharmony_ci
540d163575Sopenharmony_ciLOCAL_INCLUDE := \
550d163575Sopenharmony_ci	-I $(LITEOSTOPDIR)/syscall \
560d163575Sopenharmony_ci	-I $(LITEOSTOPDIR)/bsd/dev/random
570d163575Sopenharmony_ci
580d163575Sopenharmony_ciLOCAL_INCLUDE += $(addprefix -I$(MUSLPORTINGDIR)/, src/include src/internal)
590d163575Sopenharmony_ci
600d163575Sopenharmony_ciLOCAL_FLAGS := $(LOCAL_INCLUDE) $(LOCAL_CMACRO)
610d163575Sopenharmony_ciifeq ($(LOSCFG_COMPILER_CLANG_LLVM), y)
620d163575Sopenharmony_ciLOCAL_FLAGS +=-Wno-char-subscripts -Wno-ignored-pragmas -Wno-strict-prototypes
630d163575Sopenharmony_cielse
640d163575Sopenharmony_ciLOCAL_FLAGS += -frounding-math -Wno-unused-but-set-variable
650d163575Sopenharmony_ciendif
660d163575Sopenharmony_ciLOCAL_FLAGS += -Wno-shift-op-parentheses -Wno-logical-op-parentheses -Wno-bitwise-op-parentheses -Wno-unknown-pragmas
670d163575Sopenharmony_ciLOCAL_FLAGS += -Wno-unused-but-set-variable
680d163575Sopenharmony_ci
690d163575Sopenharmony_ciinclude $(MODULE)
70