|
| 1 | +############################################################################ |
| 2 | +# apps/interpreters/wamr/Toolchain.defs |
| 3 | +# |
| 4 | +# Licensed to the Apache Software Foundation (ASF) under one or more |
| 5 | +# contributor license agreements. See the NOTICE file distributed with |
| 6 | +# this work for additional information regarding copyright ownership. The |
| 7 | +# ASF licenses this file to you under the Apache License, Version 2.0 (the |
| 8 | +# "License"); you may not use this file except in compliance with the |
| 9 | +# License. You may obtain a copy of the License at |
| 10 | +# |
| 11 | +# http://www.apache.org/licenses/LICENSE-2.0 |
| 12 | +# |
| 13 | +# Unless required by applicable law or agreed to in writing, software |
| 14 | +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| 15 | +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| 16 | +# License for the specific language governing permissions and limitations |
| 17 | +# under the License. |
| 18 | +# |
| 19 | +############################################################################ |
| 20 | + |
| 21 | +# Wasm32 toolchain setting |
| 22 | +# Target: wasm32-unknown-wasi |
| 23 | + |
| 24 | +WCC ?= $(WASI_SDK_PATH)/bin/clang |
| 25 | +WAR ?= $(WASI_SDK_PATH)/bin/llvm-ar rcs |
| 26 | +WRC ?= wamrc |
| 27 | +WSYSROOT ?= $(TOPDIR) |
| 28 | + |
| 29 | +CFLAGS_STRIP = -fsanitize=kernel-address -fsanitize=address -fsanitize=undefined |
| 30 | +CFLAGS_STRIP += $(ARCHCPUFLAGS) $(ARCHCFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(ARCHOPTIMIZATION) $(EXTRAFLAGS) |
| 31 | + |
| 32 | +WCFLAGS += $(filter-out $(CFLAGS_STRIP),$(CFLAGS)) |
| 33 | +WCFLAGS += --sysroot=$(WSYSROOT) -nostdlib -D__NuttX__ |
| 34 | + |
| 35 | +WLDFLAGS = -z stack-size=$(STACKSIZE) -Wl,--initial-memory=$(INITIAL_MEMORY) |
| 36 | +WLDFLAGS += -Wl,--export=main -Wl,--export=__main_argc_argv |
| 37 | +WLDFLAGS += -Wl,--export=__heap_base -Wl,--export=__data_end |
| 38 | +WLDFLAGS += -Wl,--no-entry -Wl,--strip-all -Wl,--allow-undefined |
| 39 | + |
| 40 | +ifeq ($(CONFIG_ARCH_ARM),y) |
| 41 | + ifeq ($(CONFIG_ARM_THUMB),y) |
| 42 | + WTARGET = thumb |
| 43 | + else |
| 44 | + WTARGET = arm |
| 45 | + endif |
| 46 | + |
| 47 | + ifeq ($(CONFIG_ARCH_CORTEXM85),y) |
| 48 | + WTARGET := $(WTARGET)v8.1m.main |
| 49 | + WCPU = --cpu=cortex-m85 |
| 50 | + else ifeq ($(CONFIG_ARCH_CORTEXM55),y) |
| 51 | + WTARGET := $(WTARGET)v8.1m.main |
| 52 | + WCPU = --cpu=cortex-m55 |
| 53 | + else ifeq ($(CONFIG_ARCH_CORTEXM35P),y) |
| 54 | + WTARGET := $(WTARGET)v8m.main |
| 55 | + WCPU = --cpu=cortex-m35p |
| 56 | + else ifeq ($(CONFIG_ARCH_CORTEXM33),y) |
| 57 | + WTARGET := $(WTARGET)v8m.main |
| 58 | + WCPU = --cpu=cortex-m33 |
| 59 | + else ifeq ($(CONFIG_ARCH_CORTEXM23),y) |
| 60 | + WTARGET := $(WTARGET)v8m.main |
| 61 | + WCPU = --cpu=cortex-m23 |
| 62 | + else ifeq ($(CONFIG_ARCH_CORTEXM7),y) |
| 63 | + WTARGET := $(WTARGET)v7em |
| 64 | + WCPU = --cpu=cortex-m7 |
| 65 | + else ifeq ($(CONFIG_ARCH_CORTEXM4),y) |
| 66 | + WTARGET := $(WTARGET)v7em |
| 67 | + WCPU = --cpu=cortex-m4 |
| 68 | + else ifeq ($(CONFIG_ARCH_CORTEXM3),y) |
| 69 | + WTARGET := $(WTARGET)v7em |
| 70 | + WCPU = --cpu=cortex-m3 |
| 71 | + else ifeq ($(CONFIG_ARCH_CORTEXM0),y) |
| 72 | + WTARGET := $(WTARGET)v6m |
| 73 | + WCPU = --cpu=cortex-m0 |
| 74 | + endif |
| 75 | + |
| 76 | + ifeq ($(CONFIG_ARCH_CORTEXA5),y) |
| 77 | + WTARGET := $(WTARGET)armv7 |
| 78 | + WCPU = --cpu=cortex-a5 |
| 79 | + else ifeq ($(CONFIG_ARCH_CORTEXA7),y) |
| 80 | + WTARGET := $(WTARGET)armv7 |
| 81 | + WCPU = --cpu=cortex-a7 |
| 82 | + else ifeq ($(CONFIG_ARCH_CORTEXA8),y) |
| 83 | + WTARGET := $(WTARGET)armv8a |
| 84 | + WCPU = --cpu=cortex-a8 |
| 85 | + else ifeq ($(CONFIG_ARCH_CORTEXA9),y) |
| 86 | + WTARGET := $(WTARGET)armv7 |
| 87 | + WCPU = --cpu=cortex-a9 |
| 88 | + endif |
| 89 | + |
| 90 | + ifeq ($(CONFIG_ARCH_CORTEXR4),y) |
| 91 | + WTARGET := $(WTARGET)armv7 |
| 92 | + WCPU = --cpu=cortex-r4 |
| 93 | + else ifeq ($(CONFIG_ARCH_CORTEXR5),y) |
| 94 | + WTARGET := $(WTARGET)armv7 |
| 95 | + WCPU = --cpu=cortex-r5 |
| 96 | + else ifeq ($(CONFIG_ARCH_CORTEXR7),y) |
| 97 | + WTARGET := $(WTARGET)armv7 |
| 98 | + WCPU = --cpu=cortex-r7 |
| 99 | + endif |
| 100 | + |
| 101 | +else ifeq ($(CONFIG_ARCH_RISCV),y) |
| 102 | + ifeq ($(CONFIG_ARCH_RV64),y) |
| 103 | + WTARGET = riscv64 |
| 104 | + else |
| 105 | + WTARGET = riscv32 |
| 106 | + endif |
| 107 | +else ifeq ($(CONFIG_ARCH_XTENSA),y) |
| 108 | + WTARGET = xtensa |
| 109 | +else ifeq ($(CONFIG_ARCH_X86_64),y) |
| 110 | + WTARGET = x86_64 |
| 111 | +else ifeq ($(CONFIG_ARCH_X86),y) |
| 112 | + WTARGET = i386 |
| 113 | +else ifeq ($(CONFIG_ARCH_MIPS),y) |
| 114 | + WTARGET = mips |
| 115 | +else ifeq ($(CONFIG_ARCH_SIM),y) |
| 116 | + RCFLAGS += --disable-simd |
| 117 | + ifeq ($(CONFIG_SIM_M32),y) |
| 118 | + WTARGET = i386 |
| 119 | + else |
| 120 | + WTARGET = x86_64 |
| 121 | + endif |
| 122 | +endif |
| 123 | + |
| 124 | +RCFLAGS += --target=$(WTARGET) $(WCPU) |
| 125 | + |
| 126 | +define LINK_WAMR |
| 127 | + $(if $(wildcard $(APPDIR)$(DELIM)wasm$(DELIM)*.wo), \ |
| 128 | + $(foreach bin,$(wildcard $(APPDIR)$(DELIM)wasm$(DELIM)*.wo), \ |
| 129 | + $(eval INITIAL_MEMORY=$(shell echo $(notdir $(bin)) | cut -d'#' -f2)) \ |
| 130 | + $(eval STACKSIZE=$(shell echo $(notdir $(bin)) | cut -d'#' -f3)) \ |
| 131 | + $(eval PROGNAME=$(shell echo $(notdir $(bin)) | cut -d'#' -f1)) \ |
| 132 | + $(eval WAMRMODE=$(shell echo $(notdir $(bin)) | cut -d'#' -f5)) \ |
| 133 | + $(shell $(WCC) $(bin) $(WBIN) $(WCFLAGS) $(WLDFLAGS) -o $(APPDIR)$(DELIM)wasm$(DELIM)$(PROGNAME).wasm) \ |
| 134 | + $(if $(CONFIG_INTERPRETERS_WAMR_AOT), \ |
| 135 | + $(if $(filter AOT,$(WAMRMODE)), \ |
| 136 | + $(info Wamrc Generate AoT: $(APPDIR)$(DELIM)wasm$(DELIM)$(PROGNAME).aot) \ |
| 137 | + $(shell $(WRC) $(RCFLAGS) -o $(APPDIR)$(DELIM)wasm$(DELIM)$(PROGNAME).aot \ |
| 138 | + $(APPDIR)$(DELIM)wasm$(DELIM)$(PROGNAME).wasm > /dev/null), \ |
| 139 | + $(if $(filter XIP,$(WAMRMODE)), \ |
| 140 | + $(info Wamrc Generate XiP: $(APPDIR)$(DELIM)wasm$(DELIM)$(PROGNAME).xip) \ |
| 141 | + $(shell $(WRC) $(RCFLAGS) --enable-indirect-mode --disable-llvm-intrinsics \ |
| 142 | + -o $(APPDIR)$(DELIM)wasm$(DELIM)$(PROGNAME).xip \ |
| 143 | + $(APPDIR)$(DELIM)wasm$(DELIM)$(PROGNAME).wasm > /dev/null) \ |
| 144 | + ) \ |
| 145 | + ) \ |
| 146 | + ) \ |
| 147 | + ) \ |
| 148 | + ) |
| 149 | +endef |
0 commit comments