diff --git a/lib/libc/Makefile b/lib/libc/Makefile index 66a4146b524312035aedd4cc823646608747661a..1941622583d32ed572cf83b41a52c54f4522e187 100644 --- a/lib/libc/Makefile +++ b/lib/libc/Makefile @@ -2,188 +2,45 @@ include $(LITEOSTOPDIR)/config.mk MODULE_NAME := c -LOCAL_MODULES = \ - musl/src/ctype \ - musl/src/env \ - musl/src/errno \ - musl/src/exit \ - musl/src/internal \ - musl/src/linux \ - musl/src/locale \ - musl/src/malloc \ - musl/src/multibyte \ - musl/src/network \ - musl/src/prng \ - musl/src/sched \ - musl/src/stdio \ - musl/src/stdlib \ - musl/src/string \ - musl/src/math \ - musl/src/time +ARCH = arm +TOPDIR = $(LITEOSTOPDIR)/../.. +MUSLDIR = $(TOPDIR)/third_party/musl +MUSLPORTINGDIR = $(MUSLDIR)/porting/liteos_a/kernel +OPTRTDIR = $(TOPDIR)/third_party/optimized-routines -LOCAL_SRCS = $(wildcard musl/src/ctype/*.c) \ - $(wildcard musl/src/env/*.c) \ - $(wildcard musl/src/errno/*.c) \ - $(wildcard musl/src/exit/*.c) \ - $(wildcard musl/src/linux/*.c) \ - $(wildcard musl/src/locale/*.c) \ - $(wildcard musl/src/malloc/*.c) \ - $(wildcard musl/src/multibyte/*.c) \ - $(wildcard musl/src/network/*.c) \ - $(wildcard musl/src/prng/*.c) \ - $(wildcard musl/src/sched/*.c) \ - $(wildcard musl/src/stdlib/*.c) +MUSL_SRCS = -ifeq ($(LOSCFG_ARCH_ARM_VER), "armv7-a") -LOCAL_SRCS += \ - optimization/arm/memchr.S \ - optimization/arm/memcpy.S \ - optimization/arm/strcmp.S \ - optimization/arm/strcpy.c \ - optimization/arm/strlen.S -endif +MUSLPORTING_SRCS = \ + src/*/$(ARCH)/*.[csS] \ + src/*/*.c -LOCAL_SRCS_MATH = $(wildcard musl/src/math/*.c) -LOCAL_SRCS_INTERNAL = $(wildcard musl/src/internal/*.c) -LOCAL_SRCS_STDIO = $(wildcard musl/src/stdio/*.c) -LOCAL_SRCS_STRING = $(wildcard musl/src/string/*.c) -LOCAL_SRCS_TIME = $(wildcard musl/src/time/*.c) +LOCAL_SRCS = $(wildcard $(addprefix $(MUSLPORTINGDIR)/,$(MUSLPORTING_SRCS))) +LOCAL_SRCS := $(filter-out $(subst $(MUSLPORTINGDIR),$(MUSLDIR),$(LOCAL_SRCS)),$(addprefix $(MUSLDIR)/,$(MUSL_SRCS)) $(LOCAL_SRCS)) ifeq ($(LOSCFG_ARCH_ARM_VER), "armv7-a") -LOCAL_FILTER_SRCS_STRING = memchr.c memcpy.c strcmp.c strcpy.c strlen.c -LOCAL_SRCS_STRING := $(filter-out $(LOCAL_FILTER_SRCS_STRING),$(wildcard musl/src/string/*.c)) +LOCAL_SRCS := $(filter-out $(addprefix $(MUSLDIR)/src/string/,memchr.c memcpy.c strcmp.c strcpy.c strlen.c), $(LOCAL_SRCS)) +LOCAL_SRCS += \ + $(OPTRTDIR)/string/arm/memchr.S \ + $(OPTRTDIR)/string/arm/memcpy.S \ + $(OPTRTDIR)/string/arm/strcmp.S \ + $(OPTRTDIR)/string/arm/strcpy.c \ + $(OPTRTDIR)/string/arm/strlen-armv6t2.S endif +LOCAL_SRCS += $(wildcard src/*.c src/*/*.c) + LOCAL_INCLUDE := \ - -I $(LITEOSTOPDIR)/lib/libc/musl/include \ - -I $(LITEOSTOPDIR)/lib/libc/musl/arch/arm \ - -I $(LITEOSTOPDIR)/lib/libc/musl/arch/generic \ - -I $(LITEOSTOPDIR)/lib/libc/musl/obj/include \ - -I $(LITEOSTOPDIR)/lib/libc/musl/src/include \ - -I $(LITEOSTOPDIR)/lib/libc/musl/src/dirent \ - -I $(LITEOSTOPDIR)/lib/libc/musl/src/errno \ - -I $(LITEOSTOPDIR)/lib/libc/musl/src/internal \ - -I $(LITEOSTOPDIR)/lib/libc/musl/src/multibyte \ - -I $(LITEOSTOPDIR)/lib/libc/musl/src/time \ -I $(LITEOSTOPDIR)/syscall \ -I $(LITEOSTOPDIR)/bsd/dev/random \ -I $(LITEOSTOPDIR)/bsd/compat/linuxkpi/include -ifeq ($(LOSCFG_LLTSER), y) -LOCAL_INCLUDE += -I $(LITEOSTOPDIR)/tools/gcov_ser -endif +LOCAL_INCLUDE += $(addprefix -I$(MUSLPORTINGDIR)/, src/include src/internal) -LOCAL_FLAGS := $(LOCAL_INCLUDE) +LOCAL_FLAGS := $(LOCAL_INCLUDE) $(LITEOS_GCOV_OPTS) ifeq ($(LOSCFG_COMPILER_CLANG_LLVM), y) LOCAL_FLAGS +=-Wno-char-subscripts -Wno-unknown-pragmas else LOCAL_FLAGS += -frounding-math -Wno-unused-but-set-variable -Wno-unknown-pragmas endif -ifeq ($(OS), Linux) -OBJOUT := $(BUILD)$(dir $(subst $(LITEOSTOPDIR),,$(shell pwd)))$(MODULE_NAME) -LOCAL_PWD := $(shell pwd) -else -TEMPLITEOSTOPDIR:=$(shell cygpath -u $(LITEOSTOPDIR)) -OBJOUT := $(BUILD)$(dir $(subst $(TEMPLITEOSTOPDIR),,$(shell pwd)))$(MODULE_NAME) -LOCAL_PWD := $(shell cygpath -m $(shell pwd)) -endif - -ifeq ($(LOCAL_SO), y) -LIBSO := $(OUT)/lib/lib$(MODULE_NAME).so -LIBA := $(OUT)/lib/lib$(MODULE_NAME).a -else -LIBSO := -LIBA := $(OUT)/lib/lib$(MODULE_NAME).a -endif -LIB := $(LIBA) $(LIBSO) - -# create a separate list of objects per source type - -LOCAL_CSRCS := $(filter %.c,$(LOCAL_SRCS)) -LOCAL_CSRCS_MATH := $(filter %.c,$(LOCAL_SRCS_MATH)) -LOCAL_CSRCS_INTERNAL := $(filter %.c,$(LOCAL_SRCS_INTERNAL)) -LOCAL_CSRCS_STDIO := $(filter %.c,$(LOCAL_SRCS_STDIO)) -LOCAL_CSRCS_STRING := $(filter %.c,$(LOCAL_SRCS_STRING)) -LOCAL_CSRCS_TIME := $(filter %.c,$(LOCAL_SRCS_TIME)) - -LOCAL_ASMSRCS := $(filter %.S,$(LOCAL_SRCS)) - -LOCAL_COBJS := $(patsubst %.c,$(OBJOUT)/%.o,$(LOCAL_CSRCS)) -LOCAL_COBJS_MATH := $(patsubst %.c,$(OBJOUT)/%.o,$(LOCAL_CSRCS_MATH)) -LOCAL_COBJS_INTERNAL := $(patsubst %.c,$(OBJOUT)/%.o,$(LOCAL_CSRCS_INTERNAL)) -LOCAL_COBJS_STDIO := $(patsubst %.c,$(OBJOUT)/%.o,$(LOCAL_CSRCS_STDIO)) -LOCAL_COBJS_STRING := $(patsubst %.c,$(OBJOUT)/%.o,$(LOCAL_CSRCS_STRING)) -LOCAL_COBJS_TIME := $(patsubst %.c,$(OBJOUT)/%.o,$(LOCAL_CSRCS_TIME)) - -LOCAL_ASMOBJS := $(patsubst %.S,$(OBJOUT)/%.o,$(LOCAL_ASMSRCS)) - -LOCAL_OBJS := $(LOCAL_COBJS) $(LOCAL_ASMOBJS) $(LOCAL_COBJS_MATH) $(LOCAL_COBJS_INTERNAL) $(LOCAL_COBJS_STDIO) $(LOCAL_COBJS_STRING) $(LOCAL_COBJS_TIME) -LOCAL_CGCH := $(patsubst %.h,%.h.gch,$(LOCAL_CHS)) -LOCAL_CPPGCH := $(patsubst %.h,%.h.gch,$(LOCAL_CPPHS)) - -all : $(LIB) - -$(LOCAL_COBJS): $(OBJOUT)/%.o: %.c sub_math - $(HIDE)$(OBJ_MKDIR) - $(HIDE)$(CC) $(LITEOS_CFLAGS) $(LOCAL_FLAGS) -c $< -o $@ - -$(LOCAL_ASMOBJS): $(OBJOUT)/%.o: %.S - $(HIDE)$(OBJ_MKDIR) - $(HIDE)$(CC) $(LITEOS_CFLAGS) $(LOCAL_FLAGS) -c $< -o $@ - -sub_math: - $(HIDE)$(MAKE) -C musl/src/math all LOCAL_COBJS_MATH="$(LOCAL_COBJS_MATH)" OBJOUT="$(OBJOUT)" LOCAL_FLAGS="$(LOCAL_FLAGS)" - -sub_internal: sub_math - $(HIDE)$(MAKE) -C musl/src/internal all LOCAL_COBJS_INTERNAL="$(LOCAL_COBJS_INTERNAL)" OBJOUT="$(OBJOUT)" LOCAL_FLAGS="$(LOCAL_FLAGS)" - -sub_stdio: sub_math - $(HIDE)$(MAKE) -C musl/src/stdio all LOCAL_COBJS_STDIO="$(LOCAL_COBJS_STDIO)" OBJOUT="$(OBJOUT)" LOCAL_FLAGS="$(LOCAL_FLAGS)" - -sub_string: sub_math - $(HIDE)$(MAKE) -C musl/src/string all LOCAL_COBJS_STRING="$(LOCAL_COBJS_STRING)" OBJOUT="$(OBJOUT)" LOCAL_FLAGS="$(LOCAL_FLAGS)" - -sub_time: sub_math - $(HIDE)$(MAKE) -C musl/src/time all LOCAL_COBJS_TIME="$(LOCAL_COBJS_TIME)" OBJOUT="$(OBJOUT)" LOCAL_FLAGS="$(LOCAL_FLAGS)" - -$(LOCAL_CGCH): %.h.gch : %.h - $(HIDE)$(CC) $(LITEOS_CFLAGS) $(LOCAL_FLAGS) $> $^ - -$(LOCAL_CPPGCH): %.h.gch : %.h - $(HIDE)$(GPP) $(LITEOS_CXXFLAGS) $(LOCAL_FLAGS) $(LOCAL_CPPFLAGS) -x c++-header $> $^ - -LOCAL_GCH := $(LOCAL_CGCH) $(LOCAL_CPPGCH) - -$(LOCAL_OBJS): $(LOCAL_GCH) -$(LIBA): $(LOCAL_OBJS) sub_math sub_internal sub_stdio sub_string sub_time - $(HIDE)$(OBJ_MKDIR) - -ifeq ($(OS), Linux) - $(HIDE)$(AR) $(ARFLAGS) $@ $(LOCAL_OBJS) -else -ifeq ($(LOCAL_MODULES),) - $(HIDE)$(AR) $(ARFLAGS) $@ $(LOCAL_OBJS) -else - $(HIDE)for i in $(LOCAL_MODULES); do \ - pushd $(OBJOUT)/$$i 1>/dev/null; \ - $(AR) $(ARFLAGS) $@ *.o;\ - popd 1>/dev/null;\ - done -endif -endif - -ifeq ($(LOCAL_SO), y) -$(LIBSO): $(LOCAL_OBJS) - $(HIDE)$(CC) $(LITEOS_CFLAGS) -fPIC -shared $^ -o $@ -endif - -clean: - $(HIDE)$(RM) $(LIB) $(OBJOUT) $(LOCAL_GCH) *.bak *~ - -.PHONY: all clean sub_math sub_internal sub_stdio sub_string sub_time - -# clear some variables we set here -LOCAL_CSRCS := -LOCAL_COBJS := - +include $(MODULE) diff --git a/lib/libc/musl b/lib/libc/musl deleted file mode 120000 index 939d63a1539bd61b9112b74c2a06c841b843be97..0000000000000000000000000000000000000000 --- a/lib/libc/musl +++ /dev/null @@ -1 +0,0 @@ -../../../../third_party/musl/kernel \ No newline at end of file diff --git a/lib/libc/optimization/arm/memchr.S b/lib/libc/optimization/arm/memchr.S deleted file mode 120000 index eda33c218cf0ade0d63f863c60fd042da6a1ee35..0000000000000000000000000000000000000000 --- a/lib/libc/optimization/arm/memchr.S +++ /dev/null @@ -1 +0,0 @@ -../../../../../../third_party/optimized-routines/string/arm/memchr.S \ No newline at end of file diff --git a/lib/libc/optimization/arm/memcpy.S b/lib/libc/optimization/arm/memcpy.S deleted file mode 120000 index 2c97f410ea23f9bfac370b3fec7d4cd574188a64..0000000000000000000000000000000000000000 --- a/lib/libc/optimization/arm/memcpy.S +++ /dev/null @@ -1 +0,0 @@ -../../../../../../third_party/optimized-routines/string/arm/memcpy.S \ No newline at end of file diff --git a/lib/libc/optimization/arm/strcmp.S b/lib/libc/optimization/arm/strcmp.S deleted file mode 120000 index 921ebe90e95900dddbfefa239b18d7f1e50e7c26..0000000000000000000000000000000000000000 --- a/lib/libc/optimization/arm/strcmp.S +++ /dev/null @@ -1 +0,0 @@ -../../../../../../third_party/optimized-routines/string/arm/strcmp.S \ No newline at end of file diff --git a/lib/libc/optimization/arm/strcpy.c b/lib/libc/optimization/arm/strcpy.c deleted file mode 120000 index ab07c4d157b820042e213f95bf82a881778c24b3..0000000000000000000000000000000000000000 --- a/lib/libc/optimization/arm/strcpy.c +++ /dev/null @@ -1 +0,0 @@ -../../../../../../third_party/optimized-routines/string/arm/strcpy.c \ No newline at end of file diff --git a/lib/libc/optimization/arm/strlen.S b/lib/libc/optimization/arm/strlen.S deleted file mode 120000 index eecf51cce11ac14ea21a6a42f58b9dc228ee7384..0000000000000000000000000000000000000000 --- a/lib/libc/optimization/arm/strlen.S +++ /dev/null @@ -1 +0,0 @@ -../../../../../../third_party/optimized-routines/string/arm/strlen-armv6t2.S \ No newline at end of file diff --git a/lib/libc/optimization/asmdefs.h b/lib/libc/optimization/asmdefs.h deleted file mode 120000 index 1cb01634a381b70b2e29c883800b990f5b700874..0000000000000000000000000000000000000000 --- a/lib/libc/optimization/asmdefs.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../third_party/optimized-routines/string/asmdefs.h \ No newline at end of file diff --git a/tools/build/mk/los_config.mk b/tools/build/mk/los_config.mk index a489709063cbe00c769e150a859f9fee39b25911..5dc501704f7716c04a07e9f121dafc1c68b6a126 100644 --- a/tools/build/mk/los_config.mk +++ b/tools/build/mk/los_config.mk @@ -229,10 +229,8 @@ ifeq ($(LOSCFG_LIB_LIBC), y) LITEOS_BASELIB += -lc -lsec LITEOS_LIBC_INCLUDE += \ $(LITEOS_LIBSCREW_INCLUDE) \ - -I $(LITEOSTOPDIR)/lib/libc/musl/include \ - -I $(LITEOSTOPDIR)/lib/libc/musl/obj/include \ - -I $(LITEOSTOPDIR)/lib/libc/musl/arch/arm \ - -I $(LITEOSTOPDIR)/lib/libc/musl/arch/generic \ + -I $(LITEOSTOPDIR)/lib/libc/include \ + -I $(LITEOSTHIRDPARTY)/musl/porting/liteos_a/kernel/include \ -I $(LITEOSTHIRDPARTY)/bounds_checking_function/include endif @@ -585,7 +583,6 @@ LITEOS_CXXINCLUDE += \ -I $(LITEOS_COMPILER_CXX_PATH)/c++/$(VERSION_NUM)/ext \ -I $(LITEOS_COMPILER_CXX_PATH)/c++/$(VERSION_NUM)/backward \ -I $(LITEOSTOPDIR)/compat/posix/include \ - -I $(LITEOSTOPDIR)/lib/libc/musl/include \ -I $(LITEOSTOPDIR)/fs/include \ -I $(LITEOSTOPDIR)/kernel/include \ $(LITEOS_LIBC_INCLUDE) diff --git a/tools/build/mk/module.mk b/tools/build/mk/module.mk index 5152c6a68668d46a2f30307bc017b3817b09f999..7391fe0379f827bb69caedf1b645691cd0846d7f 100644 --- a/tools/build/mk/module.mk +++ b/tools/build/mk/module.mk @@ -63,25 +63,12 @@ LOCAL_OBJS := $(LOCAL_COBJS) $(LOCAL_CPPOBJS) $(LOCAL_ASMOBJS) $(LOCAL_ASMOBJS2) LOCAL_CGCH := $(patsubst %.h,%.h.gch,$(LOCAL_CHS)) LOCAL_CPPGCH := $(patsubst %.h,%.h.gch,$(LOCAL_CPPHS)) -#$(info LOCAL_SRCS = $(LOCAL_SRCS)) -#$(info LOCAL_CSRCS = $(LOCAL_CSRCS)) -#$(info LOCAL_CPPSRCS = $(LOCAL_CPPSRCS)) -#$(info LOCAL_ASMSRCS = $(LOCAL_ASMSRCS)) -#$(info LOCAL_ASMSRCS2 = $(LOCAL_ASMSRCS2)) -#$(info LOCAL_CCSRCS = $(LOCAL_CCSRCS)) - -#$(info LOCAL_OBJS = $(LOCAL_OBJS)) -#$(info LOCAL_COBJS = $(LOCAL_COBJS)) -#$(info LOCAL_CPPOBJS = $(LOCAL_CPPOBJS)) -#$(info LOCAL_ASMOBJS = $(LOCAL_ASMOBJS)) -#$(info LOCAL_ASMOBJS2 = $(LOCAL_ASMOBJS2)) -#$(info LOCAL_CCOBJS = $(LOCAL_CCOBJS)) all : $(LIB) $(LOCAL_COBJS): $(OBJOUT)/%.o: %.c $(HIDE)$(OBJ_MKDIR) - $(HIDE)$(CC) $(LITEOS_CFLAGS) $(LOCAL_INCLUDE) $(LOCAL_FLAGS) $(LOCAL_CFLAGS) -c $< -o $@ + $(HIDE)$(CC) $(LITEOS_CFLAGS) $(LOCAL_FLAGS) $(LOCAL_CFLAGS) -c $< -o $@ $(LOCAL_CPPOBJS): $(OBJOUT)/%.o: %.cpp $(HIDE)$(OBJ_MKDIR)