diff --git a/Makefile b/Makefile index b0dad73c298df8d754b668af575d8380a1c5e8bd..27704f95972d1d9fc8e665fcdabe62ed4606caa2 100644 --- a/Makefile +++ b/Makefile @@ -110,9 +110,7 @@ java-core-def: install install: maple dex2mpl_install irbuild mplfe clang2mpl $(shell mkdir -p $(INSTALL_DIR)/ops/linker/; \ rsync -a -L $(MRT_ROOT)/maplert/linker/maplelld.so.lds $(INSTALL_DIR)/ops/linker/; \ - rsync -a -L $(MAPLE_ROOT)/build/java2d8 $(INSTALL_DIR)/bin; \ - rsync -a -L $(MAPLE_BIN_DIR)/java2jar $(INSTALL_DIR)/bin/; \ - rsync -a -L $(MAPLE_BIN_DIR)/jbc2mpl $(INSTALL_DIR)/bin/;) + rsync -a -L $(MAPLE_ROOT)/build/java2d8 $(INSTALL_DIR)/bin) .PHONY: all all: install libcore diff --git a/build/core/dex2mpl.mk b/build/core/dex2mpl.mk index d9ac32ac8d87bce7518736f2c8e953a17a6544b6..a1d8836552e282fe63a42dd5be97ef4fde94df06 100644 --- a/build/core/dex2mpl.mk +++ b/build/core/dex2mpl.mk @@ -14,3 +14,4 @@ # $(APP_MPL): %.mpl : %.dex $(DEX2MPL_BIN) $(DEX2MPL_BIN) $(DEX2MPL_FLAGS) -j100 $< + diff --git a/build/core/java2jar.mk b/build/core/dex2mpl_test.mk similarity index 74% rename from build/core/java2jar.mk rename to build/core/dex2mpl_test.mk index ddadd813170bd133c04333854a51479ba6006776..c12f88ab8a8e3c9a1eb9507869d3e1e4a320b63d 100644 --- a/build/core/java2jar.mk +++ b/build/core/dex2mpl_test.mk @@ -1,5 +1,5 @@ # -# Copyright (c) [2020] Huawei Technologies Co.,Ltd.All rights reserved. +# Copyright (c) [2021] Huawei Technologies Co.,Ltd.All rights reserved. # # OpenArkCompiler is licensed under Mulan PSL v2. # You can use this software according to the terms and conditions of the Mulan PSL v2. @@ -12,5 +12,5 @@ # FIT FOR A PARTICULAR PURPOSE. # See the Mulan PSL v2 for more details. # -$(APP_JAR): %.jar : %.java $(LIB_CORE_JAR) - $(JAVA2JAR) $(APP_JAR) $(LIB_CORE_JAR) "$(wildcard *.java)" +$(APP_MPL): %.mpl : %.dex $(DEX2MPL_BIN) + $(DEX2MPL_BIN) $(DEX2MPL_APP_FLAGS) -j100 $< diff --git a/build/core/java2dex.mk b/build/core/java2dex.mk new file mode 100644 index 0000000000000000000000000000000000000000..20dbe3122425e58a963a168f1e291e4706e23696 --- /dev/null +++ b/build/core/java2dex.mk @@ -0,0 +1,2 @@ +$(APP_DEX): %.dex : %.java $(wildcard $(JAR_LIBS_PATH)/*.java) + @bash $(JAVA2DEX) -o $(APP_DEX) $(JAVA2DEX_FLAGS) -i $(APP_JAVA):${EXTRA_JAVA_FILE} $< diff --git a/build/core/link.mk b/build/core/link.mk new file mode 100644 index 0000000000000000000000000000000000000000..785af47bc93f0bcfd850de57c2b1bd888ac09b68 --- /dev/null +++ b/build/core/link.mk @@ -0,0 +1,2 @@ +${APP_SO}: %.so : %.VtableImpl.s $(CLANG_BIN) + ${TOOL_BIN_PATH}/clang++ -g3 -O2 -x assembler-with-cpp -march=armv8-a -target aarch64-linux-gnu -c $(APP_S) && ${TOOL_BIN_PATH}/clang++ $(APP_O) -L${OUT_ROOT}/${MAPLE_BUILD_TYPE}/ops/host-x86_64-O2 -g3 -O2 -march=armv8-a -target aarch64-linux-gnu -fPIC -shared -o $(APP_SO) ${OUT_ROOT}/${MAPLE_BUILD_TYPE}/ops/mrt_module_init.o -fuse-ld=lld -rdynamic -lcore-all -lcommon-bridge -Wl,-z,notext -Wl,-T${OUT_ROOT}/${MAPLE_BUILD_TYPE}/ops/linker/maplelld.so.lds diff --git a/build/core/maple_test.mk b/build/core/maple_test.mk index 8e155dfbd461c7e70a982cb785ef316efe32dec5..0834a141e8bf05eb67ae1f3667d03405c66cd47a 100644 --- a/build/core/maple_test.mk +++ b/build/core/maple_test.mk @@ -14,10 +14,13 @@ # include $(MAPLE_BUILD_CORE)/maple_variables.mk -test: $(APP_S) -include $(MAPLE_BUILD_CORE)/mplcomb.mk +test: APP_RUN +include $(MAPLE_BUILD_CORE)/qemu_run.mk +include $(MAPLE_BUILD_CORE)/link.mk +include $(MAPLE_BUILD_CORE)/mplcomb_dex.mk include $(MAPLE_BUILD_CORE)/genmplt.mk -include $(MAPLE_BUILD_CORE)/java2jar.mk +include $(MAPLE_BUILD_CORE)/dex2mpl_test.mk +include $(MAPLE_BUILD_CORE)/java2dex.mk .PHONY: clean clean: @@ -30,3 +33,7 @@ clean: @rm -f *.primordials.txt @rm -rf comb.log @rm -rf *.muid + @rm -rf *.dex + @rm -rf *.def + @rm -rf *.so + @rm -rf *.o diff --git a/build/core/maple_variables.mk b/build/core/maple_variables.mk index 36e09cbcbb6fc8170acf035b8583a66c12b84a41..bac88a3283cdd717b39f5dac7358d15e984f7094 100644 --- a/build/core/maple_variables.mk +++ b/build/core/maple_variables.mk @@ -28,6 +28,7 @@ GCC_LINARO_PATH := $(MAPLE_ROOT)/tools/gcc-linaro-7.5.0 NDK_PATH := $(MAPLE_ROOT)/tools/android-ndk-r21 TARGETS := $(APP) +APP_JAVA := $(foreach APP, $(TARGETS), $(APP).java) APP_DEX := $(foreach APP, $(TARGETS), $(APP).dex) APP_CLASS := $(foreach APP, $(TARGETS), $(APP).class) APP_JAR := $(foreach APP, $(TARGETS), $(APP).jar) @@ -36,6 +37,7 @@ APP_MPLT:=$(foreach APP, $(TARGETS), $(APP).mplt) APP_S := $(foreach APP, $(TARGETS), $(APP).VtableImpl.s) APP_DEF := $(foreach APP, $(TARGETS), $(APP).VtableImpl.macros.def) APP_O := $(foreach APP, $(TARGETS), $(APP).VtableImpl.o) +APP_SO := $(foreach APP, $(TARGETS), $(APP).so) APP_QEMU_SO := $(foreach APP, $(TARGETS), $(APP).VtableImpl.qemu.so) APP_VTABLEIMPL_MPL := $(foreach APP, $(TARGETS), $(APP).VtableImpl.mpl) @@ -46,6 +48,7 @@ MAPLE_BIN := $(MAPLE_OUT)/bin/maple MPLCG_BIN := $(MAPLE_OUT)/bin/mplcg JAVA2D8 := $(MAPLE_OUT)/bin/java2d8 DEX2MPL_BIN := $(MAPLE_OUT)/bin/dex2mpl +JAVA2DEX := ${MAPLE_ROOT}/build/java2dex D8 := $(MAPLE_ROOT)/build/d8 ADD_OBJS := $(MAPLE_ROOT)/src/mrt/maplert/src/mrt_module_init.c__ @@ -101,4 +104,6 @@ else ifeq ($(OPT),O0) MPLCG_FLAGS := --quiet --no-pie --verbose-asm --gen-c-macro-def --maplelinker --duplicate_asm_list=$(DUPLICATE_DIR)/duplicateFunc.s MPLCG_SO_FLAGS := --fpic endif +DEX2MPL_APP_FLAGS := -mplt=${OUT_ROOT}/${MAPLE_BUILD_TYPE}/libjava-core/libcore-all.mplt -litprofile=${MAPLE_ROOT}/src/mrt/codetricks/profile.pv/meta.list MPLCOMBO_FLAGS := --run=me:mpl2mpl:mplcg --option="$(MPLME_FLAGS):$(MPL2MPL_FLAGS):$(MPLCG_FLAGS) $(MPLCG_SO_FLAGS)" +JAVA2DEX_FLAGS := -p ${OUT_ROOT}/${MAPLE_BUILD_TYPE}/ops/third_party/JAVA_LIBRARIES/core-oj_intermediates/classes.jar:${OUT_ROOT}/${MAPLE_BUILD_TYPE}/ops/third_party/JAVA_LIBRARIES/core-libart_intermediates/classes.jar diff --git a/build/core/qemu_run.mk b/build/core/qemu_run.mk new file mode 100644 index 0000000000000000000000000000000000000000..3572fea91d5ac8eeb3f6f27773b42f2fb49c0271 --- /dev/null +++ b/build/core/qemu_run.mk @@ -0,0 +1,2 @@ +APP_RUN: $(APP_SO) + ${TOOL_BIN_PATH}/qemu-aarch64 -L /usr/aarch64-linux-gnu -E LD_LIBRARY_PATH=${OUT_ROOT}/${MAPLE_BUILD_TYPE}/ops/third_party:${OUT_ROOT}/${MAPLE_BUILD_TYPE}/ops/host-x86_64-O2:./ ${OUT_ROOT}/${MAPLE_BUILD_TYPE}/ops/mplsh -Xbootclasspath:libcore-all.so -cp $(APP_SO) $(APP) diff --git a/src/mapleall/bin/java2jar b/src/mapleall/bin/java2jar deleted file mode 100755 index c8d50f6f0e8a207ff57b0eb23442f6015c6dc97d..0000000000000000000000000000000000000000 --- a/src/mapleall/bin/java2jar +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash -# -# Copyright (c) [2020] Huawei Technologies Co.,Ltd.All rights reserved. -# -# OpenArkCompiler is licensed under Mulan PSL v2. -# You can use this software according to the terms and conditions of the Mulan PSL v2. -# You may obtain a copy of Mulan PSL v2 at: -# -# http://license.coscl.org.cn/MulanPSL2 -# -# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR -# FIT FOR A PARTICULAR PURPOSE. -# See the Mulan PSL v2 for more details. -# -OUTPUT=$1 -CORE_ALL_JAR=$2 -shift 2 -javac -g -d . -bootclasspath ${CORE_ALL_JAR} $@ -jar -cvf ${OUTPUT} *.class diff --git a/src/mapleall/bin/jbc2mpl b/src/mapleall/bin/jbc2mpl deleted file mode 100755 index e406b95d935eec7eebb254178b6386192cf16729..0000000000000000000000000000000000000000 Binary files a/src/mapleall/bin/jbc2mpl and /dev/null differ