Skip to content

Commit 0c424a3

Browse files
committed
RISC-V cross compilation
1 parent 097c6a5 commit 0c424a3

File tree

2 files changed

+20
-4
lines changed

2 files changed

+20
-4
lines changed

mmtk/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ lto = true
1717
[package.metadata.openjdk]
1818
# Our CI matches the following line and extract mmtk/openjdk. If this line is updated, please check ci yaml files and make sure it works.
1919
openjdk_repo = "https://github.com/caizixian/jdk-mmtk.git"
20-
openjdk_version = "d4ae3c7ebda257f018b3b538b7ecd1ced7a91bc1"
20+
openjdk_version = "0c5806b797026a902718eb83588b6adf181e3d80"
2121

2222
[dependencies]
2323
libc = "0.2"

openjdk/CompileThirdPartyHeap.gmk

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,15 +55,31 @@ else
5555
CARGO_PROFILE = debug
5656
endif
5757

58+
CARGO_EXECUTABLE = cargo
59+
CARGO_TARGET = .
60+
CARGO_TARGET_FLAG =
61+
62+
ifeq ($(COMPILE_TYPE), cross)
63+
ifneq ($(CREATING_BUILDJDK), true)
64+
CARGO_EXECUTABLE = cross
65+
CARGO_TARGET = riscv64gc-unknown-linux-gnu
66+
CARGO_TARGET_FLAG = --target $(CARGO_TARGET)
67+
endif
68+
endif
69+
5870
$(LIB_MMTK): FORCE
5971
if [[ "$(OPENJDK_VERSION)" != "$(OPENJDK_LOCAL_VERSION)" ]]; then \
6072
echo -e $(YELLOW)WARNING: Local OpenJDK version does not match version specified in mmtk/Cargo.toml$(NC); \
6173
echo -e $(YELLOW)Local OpenJDK version $(OPENJDK_LOCAL_VERSION)$(NC); \
6274
echo -e $(YELLOW)mmtk/Cargo.toml OpenJDK version $(OPENJDK_VERSION)$(NC); \
6375
fi
64-
echo "cd $(MMTK_RUST_ROOT) && cargo build $(CARGO_PROFILE_FLAG) $(GC_FEATURES)"
65-
cd $(MMTK_RUST_ROOT) && cargo build $(CARGO_PROFILE_FLAG) $(GC_FEATURES)
66-
mkdir -p $(JVM_LIB_OUTPUTDIR) && cp $(MMTK_RUST_ROOT)/target/$(CARGO_PROFILE)/libmmtk_openjdk.so $(LIB_MMTK)
76+
if [[ "$(OPENJDK_TARGET_CPU)" != "riscv64" ]] && [[ $(CARGO_EXECUTABLE) == "cross" ]]; then \
77+
echo -e "Only cross compiling to riscv64 is supported"; \
78+
exit 1; \
79+
fi
80+
echo "cd $(MMTK_RUST_ROOT) && $(CARGO_EXECUTABLE) build $(CARGO_TARGET_FLAG) $(CARGO_PROFILE_FLAG) $(GC_FEATURES)"
81+
cd $(MMTK_RUST_ROOT) && $(CARGO_EXECUTABLE) build $(CARGO_TARGET_FLAG) $(CARGO_PROFILE_FLAG) $(GC_FEATURES)
82+
mkdir -p $(JVM_LIB_OUTPUTDIR) && cp $(MMTK_RUST_ROOT)/target/$(CARGO_TARGET)/$(CARGO_PROFILE)/libmmtk_openjdk.so $(LIB_MMTK)
6783

6884
JVM_LIBS += -L$(JVM_LIB_OUTPUTDIR) -lmmtk_openjdk
6985
JVM_LDFLAGS += '-Wl,-rpath,$$ORIGIN'

0 commit comments

Comments
 (0)