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

Reply via email to