This is an automated email from the ASF dual-hosted git repository.
pkarashchenko pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git
The following commit(s) were added to refs/heads/master by this push:
new 7f27129896 tools: Move Rust relative settings to Rust.defs
7f27129896 is described below
commit 7f27129896b943d718aff21c30c4a1ed9d573f66
Author: Huang Qi <[email protected]>
AuthorDate: Fri Mar 31 15:22:54 2023 +0800
tools: Move Rust relative settings to Rust.defs
Signed-off-by: Huang Qi <[email protected]>
---
arch/arm/src/common/Toolchain.defs | 4 +++
arch/risc-v/src/common/Toolchain.defs | 4 +++
boards/sim/sim/sim/scripts/Make.defs | 37 ++++++++++++++++++------
tools/Rust.defs | 54 +++++++++++++++++++++++++++++++++++
4 files changed, 90 insertions(+), 9 deletions(-)
diff --git a/arch/arm/src/common/Toolchain.defs
b/arch/arm/src/common/Toolchain.defs
index 3360e39572..d4dd89aab7 100644
--- a/arch/arm/src/common/Toolchain.defs
+++ b/arch/arm/src/common/Toolchain.defs
@@ -341,3 +341,7 @@ endif
# Zig toolchain
include $(TOPDIR)/tools/Zig.defs
+
+# Rust toolchain
+
+include $(TOPDIR)/tools/Rust.defs
diff --git a/arch/risc-v/src/common/Toolchain.defs
b/arch/risc-v/src/common/Toolchain.defs
index 520f3058f0..6c8fd79bae 100644
--- a/arch/risc-v/src/common/Toolchain.defs
+++ b/arch/risc-v/src/common/Toolchain.defs
@@ -262,3 +262,7 @@ endif
# Zig toolchain
include $(TOPDIR)/tools/Zig.defs
+
+# Rust toolchain
+
+include $(TOPDIR)/tools/Rust.defs
diff --git a/boards/sim/sim/sim/scripts/Make.defs
b/boards/sim/sim/sim/scripts/Make.defs
index 8c12d60947..fb491c0a32 100644
--- a/boards/sim/sim/sim/scripts/Make.defs
+++ b/boards/sim/sim/sim/scripts/Make.defs
@@ -42,7 +42,6 @@ ARCHDEFINES += -U__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__
ifeq ($(CONFIG_DEBUG_SYMBOLS),y)
ARCHOPTIMIZATION += -g
- ARCHOPTIMIZATIONRUST += -g
endif
ifeq ($(CONFIG_DEBUG_CUSTOMOPT),y)
@@ -53,8 +52,6 @@ endif
ifneq ($(CONFIG_DEBUG_NOOPT),y)
ARCHOPTIMIZATION += -fno-strict-aliasing
-else
- ARCHOPTIMIZATIONRUST += -C opt-level=0
endif
ifeq ($(CONFIG_FRAME_POINTER),y)
@@ -124,14 +121,34 @@ endif
ifeq ($(CONFIG_SIM_M32),y)
ARCHCFLAGS += -m32
ARCHCXXFLAGS += -m32
+endif
+
+# LLVM style architecture flags
+
+ifeq ($(CONFIG_HOST_X86_64),y)
+ ifeq ($(CONFIG_SIM_M32),y)
+ LLVM_ARCHTYPE := x86
+ LLVM_CPUTYPE := i686
+ else
+ LLVM_ARCHTYPE := x86_64
+ LLVM_CPUTYPE := skylake
+ endif
+else ifeq ($(CONFIG_HOST_X86_32),y)
LLVM_ARCHTYPE := x86
LLVM_CPUTYPE := i686
-else
- LLVM_ARCHTYPE := x86_64
- LLVM_CPUTYPE := native
+else ifeq ($(CONFIG_HOST_ARM64),y)
+ LLVM_ARCHTYPE := aarch64
+ LLVM_CPUTYPE := cortex-a53
+else ifeq ($(CONFIG_HOST_ARM),y)
+ LLVM_ARCHTYPE := arm
+ LLVM_CPUTYPE := cortex-a9
endif
-LLVM_ABITYPE := gnu
+ifeq ($(CONFIG_HOST_LINUX),y)
+ LLVM_ABITYPE := gnu
+else ifeq ($(CONFIG_HOST_MACOS),y)
+ LLVM_ABITYPE := darwin
+endif
ARCHPICFLAGS = -fpic
@@ -149,17 +166,19 @@ endif
NM = $(CROSSDEV)nm
OBJCOPY = $(CROSSDEV)objcopy
OBJDUMP = $(CROSSDEV)objdump
-RUSTC = rustc --edition 2021
# Zig toolchain
include $(TOPDIR)/tools/Zig.defs
+# Rust toolchain
+
+include $(TOPDIR)/tools/Rust.defs
+
CFLAGS := $(ARCHOPTIMIZATION) $(ARCHCFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES)
$(EXTRAFLAGS) -pipe
CXXFLAGS := $(ARCHOPTIMIZATION) $(ARCHCXXFLAGS) $(ARCHXXINCLUDES)
$(ARCHDEFINES) $(EXTRAFLAGS) -pipe
CPPFLAGS := $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
AFLAGS := $(CFLAGS) -D__ASSEMBLY__
-RUSTFLAGS := $(ARCHOPTIMIZATIONRUST)
ifeq ($(CONFIG_LIBCXX),y)
ifeq ($(CONFIG_HOST_MACOS),y)
diff --git a/tools/Rust.defs b/tools/Rust.defs
new file mode 100644
index 0000000000..88f3fb78f6
--- /dev/null
+++ b/tools/Rust.defs
@@ -0,0 +1,54 @@
+############################################################################
+# tools/Rust.defs
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership. The
+# ASF licenses this file to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance with the
+# License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+#
+############################################################################
+
+RUSTC := rustc --edition 2021
+
+RUSTFLAGS :=
+
+ifeq ($(CONFIG_DEBUG_SYMBOLS),y)
+ RUSTFLAGS += -g
+endif
+
+ifeq ($(CONFIG_DEBUG_NOOPT),y)
+ RUSTFLAGS += -C opt-level=0
+endif
+
+# Special handling for the SIM
+
+ifeq ($(CONFIG_ARCH_SIM),y)
+ ifeq ($(CONFIG_HOST_LINUX),y)
+ ifeq ($(LLVM_ARCHTYPE),x86)
+ # Only for x86 based host or x64 but m32 build
+ RUSTFLAGS += --target i686-unknown-linux-$(LLVM_ABITYPE)
+ else
+ # For other archs, such as aarch64, arm etc
+ RUSTFLAGS += --target $(LLVM_ARCHTYPE)-unknown-linux-$(LLVM_ABITYPE)
+ endif
+ else ifeq ($(CONFIG_HOST_MACOS),y)
+ RUSTFLAGS += --target $(LLVM_ARCHTYPE)-apple-$(LLVM_ABITYPE)
+ endif
+else ifeq ($(CONFIG_ARCH_RISCV),y)
+ # Traget triple is riscv[32|64][isa]-unknown-none-elf
+ RUSTFLAGS += --target
$(LLVM_ARCHTYPE)i$(ARCHRVISAM)$(ARCHRVISAA)$(ARCHRVISAF)$(ARCHRVISAD)$(ARCHRVISAC)-unknown-none-elf
+else
+ # For arm, but there are some other archs not support yet,
+ # such as xtensa, x86 bare metal, etc.
+ RUSTFLAGS += --target $(LLVM_ARCHTYPE)-none-$(LLVM_ABITYPE)
+endif