diff --git a/Makefile b/Makefile index 9323917e..5653d002 100644 --- a/Makefile +++ b/Makefile @@ -116,6 +116,15 @@ else $(HIDE)$(SCRIPTS_PATH)/mklibversion.sh endif +##### make sysroot ##### +sysroot: +ifeq ($(LOSCFG_COMPILER_CLANG_LLVM), y) +ifeq ($(wildcard $(SYSROOT_PATH)/usr/include/$(LLVM_TARGET)/),) + $(HIDE)$(MAKE) -C $(SYSROOT_PATH)/build TARGETS=liteos_a_user +endif + $(HIDE)echo "sysroot:" $(abspath $(SYSROOT_PATH)) +endif + ##### make dynload ##### -include $(LITEOS_MK_PATH)/dynload.mk @@ -132,7 +141,7 @@ $(OUT): $(LITEOS_MENUCONFIG_H) $(BUILD): $(HIDE)mkdir -p $(BUILD) -$(LITEOS_LIBS_TARGET): $(__LIBS) +$(LITEOS_LIBS_TARGET): $(__LIBS) sysroot $(HIDE)for dir in $(LIB_SUBDIRS); \ do $(MAKE) -C $$dir all || exit 1; \ done @@ -151,7 +160,7 @@ genconfig:$(MENUCONFIG_CONF) $(LITEOS_MENUCONFIG_H): .config $(HIDE)$(MAKE) genconfig -$(LITEOS_TARGET): $(__LIBS) +$(LITEOS_TARGET): $(__LIBS) sysroot $(HIDE)touch $(LOSCFG_ENTRY_SRC) $(HIDE)for dir in $(LITEOS_SUBDIRS); \ @@ -165,18 +174,14 @@ $(LITEOS_TARGET): $(__LIBS) $(OBJDUMP) -d $(OUT)/$@ >$(OUT)/$@.asm # $(NM) -S --size-sort $(OUT)/$@ >$(OUT)/$@.size -$(APPS): $(LITEOS_TARGET) +$(APPS): $(LITEOS_TARGET) sysroot $(HIDE)$(MAKE) -C apps all -ifeq ($(LOSCFG_COMPILER_CLANG_LLVM), y) -MULTILIB := $(patsubst $(shell $(CC) --target=$(LLVM_TARGET) $(ARCH_CFLAGS) -print-file-name=lib/$(LLVM_TARGET)/)%,%,$(dir $(shell $(CC) --target=$(LLVM_TARGET) $(ARCH_CFLAGS) -print-libgcc-file-name))) -endif - prepare: $(HIDE)mkdir -p $(OUT)/musl ifeq ($(LOSCFG_COMPILER_CLANG_LLVM), y) - $(HIDE)cp -f $(SYSROOT_PATH)/usr/lib/$(LLVM_TARGET)/$(MULTILIB)/libc.so $(OUT)/musl - $(HIDE)cp -f $(LITEOS_COMPILER_PATH)/lib/$(LLVM_TARGET)/c++/$(MULTILIB)/libc++.so $(OUT)/musl + $(HIDE)cp -f $$($(CC) --target=$(LLVM_TARGET) --sysroot=$(SYSROOT_PATH) $(LITEOS_CFLAGS) -print-file-name=libc.so) $(OUT)/musl + $(HIDE)cp -f $$($(GPP) --target=$(LLVM_TARGET) --sysroot=$(SYSROOT_PATH) $(LITEOS_CXXFLAGS) -print-file-name=libc++.so) $(OUT)/musl else $(HIDE)cp -f $(LITEOS_COMPILER_PATH)/target/usr/lib/libc.so $(OUT)/musl $(HIDE)cp -f $(LITEOS_COMPILER_PATH)/arm-linux-musleabi/lib/libstdc++.so.6 $(OUT)/musl @@ -225,3 +230,4 @@ update_all_config: $(HIDE)test -f tools/build/config/$@ && cp tools/build/config/$@ .config && $(MENUCONFIG_MCONF) $(KCONFIG_FILE_PATH) && $(MENUCONFIG_CONF) --savedefconfig tools/build/config/$@ $(KCONFIG_FILE_PATH) .PHONY: all lib clean cleanall $(LITEOS_TARGET) debug release help update_all_config +.PHONY: prepare sysroot cleanrootfs $(ROOTFS) $(ROOTFSDIR) $(APPS) menuconfig genconfig $(LITEOS_LIBS_TARGET) $(__LIBS) $(OUT) diff --git a/apps/config.mk b/apps/config.mk index 417446cb..21410057 100644 --- a/apps/config.mk +++ b/apps/config.mk @@ -44,7 +44,7 @@ CFLAGS := -std=c99 -fno-exceptions $(BASE_OPTS) $(LITEOS_COPTS_OPTMIZE) CXXFLAGS := -std=c++11 -fexceptions -fpermissive -frtti $(BASE_OPTS) $(LITEOS_COPTS_OPTMIZE) LDCFLAGS := -lc ifeq ($(LOSCFG_COMPILER_CLANG_LLVM), y) -LLVM_SYSROOT := --sysroot=$(SYSROOT_PATH) $(ARCH_CFLAGS) +LLVM_SYSROOT := --sysroot=$(SYSROOT_PATH) LDCXXFLGS := -lc++ -lc++abi -lc else BASE_OPTS += -Wl,-z,relro,-z,now diff --git a/apps/mksh/Makefile b/apps/mksh/Makefile index 8aa8bcdc..182c7c01 100755 --- a/apps/mksh/Makefile +++ b/apps/mksh/Makefile @@ -39,10 +39,10 @@ BUILD_LOG := $(MKSH_DIR)/build.log TARGET_OS := OpenHarmony LOCAL_CFLAGS := -flto -fdata-sections -ffunction-sections -Oz -fstack-protector-strong -D_FORTIFY_SOURCE=2 -LOCAL_CFLAGS += --target=arm-liteos $(LLVM_SYSROOT) +LOCAL_CFLAGS += --target=$(LLVM_TARGET) $(LLVM_SYSROOT) LOCAL_CFLAGS += -DMKSH_DISABLE_TTY_WARNING -DMKSH_SMALL=1 -DMKSH_ASSUME_UTF8=1 -DMKSH_SMALL_BUT_FAST=0 -DMKSH_S_NOVI=1 -DHAVE_CAN_FSTACKPROTECTORSTRONG=1 LOCAL_CFLAGS += -DMKSH_LESS_CMDLINE_EDITING -DMKSH_LESS_BUILDINS -DMKSH_NO_INITCOMS -DADAPT_FOR_LITEOS_A -LOCAL_LDFLAGS := -Wl,--gc-sections -flto -O2 --target=arm-liteos $(LLVM_SYSROOT) +LOCAL_LDFLAGS := -Wl,--gc-sections -flto -O2 --target=$(LLVM_TARGET) $(LLVM_SYSROOT) all:$(MKSH) diff --git a/apps/toybox/Makefile b/apps/toybox/Makefile index 0af3c951..d4345bae 100644 --- a/apps/toybox/Makefile +++ b/apps/toybox/Makefile @@ -46,8 +46,8 @@ else $(HIDE)$(CP) $(LITEOSTHIRDPARTY)/$(TOYBOX)/. $(BUILD_DIR) $(HIDE)$(CP) -p $(LITEOSTHIRDPARTY)/$(TOYBOX)/porting/liteos_a/. $(BUILD_DIR) endif - $(HIDE)CFLAGS="-D_FORTIFY_SOURCE=2 -fstack-protector-strong --target=arm-liteos $(LLVM_SYSROOT)" CC="$(CC)" OUTNAME=$(OUTNAME) \ - LDFLAGS="--target=arm-liteos $(LLVM_SYSROOT)" \ + $(HIDE)CFLAGS="-D_FORTIFY_SOURCE=2 -fstack-protector-strong --target=$(LLVM_TARGET) $(LLVM_SYSROOT)" CC="$(CC)" OUTNAME=$(OUTNAME) \ + LDFLAGS="--target=$(LLVM_TARGET) $(LLVM_SYSROOT)" \ make -C $(BUILD_DIR) toybox -j> $(BUILD_LOG) 2>&1 $(HIDE)$(CP) $(BUILD_DIR)/$(TOYBOX) . $(HIDE)$(STRIP) $(TOYBOX) diff --git a/kernel/extended/vdso/usr/Makefile b/kernel/extended/vdso/usr/Makefile index 33b04ebc..dde4d96d 100644 --- a/kernel/extended/vdso/usr/Makefile +++ b/kernel/extended/vdso/usr/Makefile @@ -40,7 +40,7 @@ VDSO_INCLUDE := -I $(LITEOSTOPDIR)/kernel/extended/vdso/include \ VDSO_CCFLAGS := -nostdlib -fPIC -fno-common -fno-strict-aliasing \ $(LITEOS_SSP) $(LITEOS_CORE_COPTS) $(WARNING_AS_ERROR) $(LITEOS_COPTS_OPTMIZE) ifeq ($(LOSCFG_COMPILER_CLANG_LLVM), y) -VDSO_CCFLAGS += $(LLVM_EXTRA_OPTS) --sysroot=$(SYSROOT_PATH) $(ARCH_CFLAGS) +VDSO_CCFLAGS += $(LLVM_EXTRA_OPTS) --sysroot=$(SYSROOT_PATH) endif VDSO_LDFLAGS := -shared -s -Bsymbolic -T los_vdso.ld