Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -2774,6 +2774,7 @@ source "libs/libc/Kconfig"
source "libs/libm/Kconfig"
source "libs/libxx/Kconfig"
source "libs/libdsp/Kconfig"
source "libs/libbuiltin/Kconfig"
Comment thread
anchao marked this conversation as resolved.
endmenu

menu "Open Asymmetric Multi Processing"
Expand Down
33 changes: 23 additions & 10 deletions arch/arm/src/cmake/clang.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,8 @@ if(TOOLCHAIN_CLANG_CONFIG)
execute_process(COMMAND clang --version
OUTPUT_VARIABLE clang_full_version_string)

string(REGEX REPLACE ".*clang version ([0-9]+\\.[0-9]+).*" "\\1" CLANGVER
${clang_full_version_string})
string(REGEX REPLACE ".*clang version ([0-9]+\\.[0-9]+\.[0-9]+).*" "\\1"
CLANGVER ${clang_full_version_string})

if(CLANGVER STREQUAL "14.0")
set(TOOLCHAIN_CLANG_CONFIG ${TOOLCHAIN_CLANG_CONFIG}_nosys)
Expand Down Expand Up @@ -237,11 +237,24 @@ set(PREPROCESS ${CMAKE_C_COMPILER} ${CMAKE_C_FLAG_ARGS} -E -P -x c)

set(NUTTX_FIND_TOOLCHAIN_LIB_DEFINED true)

function(nuttx_find_toolchain_lib)
execute_process(
COMMAND ${CMAKE_C_COMPILER} ${CMAKE_C_FLAG_ARGS} ${NUTTX_EXTRA_FLAGS}
--print-file-name
OUTPUT_STRIP_TRAILING_WHITESPACE
OUTPUT_VARIABLE extra_lib_path)
nuttx_add_extra_library(${extra_lib_path})
endfunction()
if(CONFIG_BUILTIN_TOOLCHAIN)
function(nuttx_find_toolchain_lib)
Comment thread
xiaoxiang781216 marked this conversation as resolved.
execute_process(
COMMAND ${CMAKE_C_COMPILER} ${CMAKE_C_FLAG_ARGS} ${NUTTX_EXTRA_FLAGS}
--print-file-name
OUTPUT_STRIP_TRAILING_WHITESPACE
OUTPUT_VARIABLE extra_lib_path)
nuttx_add_extra_library(${extra_lib_path})
endfunction()
else()
function(nuttx_find_toolchain_lib)
if(ARGN)
execute_process(
COMMAND ${CMAKE_C_COMPILER} ${CMAKE_C_FLAG_ARGS} ${NUTTX_EXTRA_FLAGS}
--print-file-name=${ARGN}
OUTPUT_STRIP_TRAILING_WHITESPACE
OUTPUT_VARIABLE extra_lib_path)
endif()
nuttx_add_extra_library(${extra_lib_path})
endfunction()
endif()
20 changes: 12 additions & 8 deletions arch/arm/src/common/Toolchain.defs
Original file line number Diff line number Diff line change
Expand Up @@ -206,7 +206,7 @@ ifeq ($(CONFIG_ARM_TOOLCHAIN_CLANG),y)

ifneq ($(TOOLCHAIN_CLANG_CONFIG),)
ifeq ($(CLANGVER),)
export CLANGVER := $(shell $(CC) --version | grep "clang version" | sed -E "s/.* ([0-9]+\.[0-9]+).*/\1/")
export CLANGVER := $(shell $(CC) --version | grep "clang version" | sed -E "s/.* ([0-9]+\.[0-9]+\.[0-9]+).*/\1/")
endif

ifeq ($(CLANGVER),14.0)
Expand Down Expand Up @@ -448,14 +448,18 @@ endif

# Add the builtin library

COMPILER_RT_LIB = $(shell $(CC) $(ARCHCPUFLAGS) --print-libgcc-file-name)
Comment thread
W-M-R marked this conversation as resolved.
ifeq ($(CONFIG_ARCH_TOOLCHAIN_CLANG),y)
ifeq ($(wildcard $(COMPILER_RT_LIB)),)
# if "--print-libgcc-file-name" unable to find the correct libgcc PATH
# then go ahead and try "--print-file-name"
COMPILER_RT_LIB := $(wildcard $(shell $(CC) $(ARCHCPUFLAGS) --print-file-name $(notdir $(COMPILER_RT_LIB))))
ifeq ($(CONFIG_BUILTIN_TOOLCHAIN),y)
COMPILER_RT_LIB = $(shell $(CC) $(ARCHCPUFLAGS) --print-libgcc-file-name)
ifeq ($(CONFIG_ARCH_TOOLCHAIN_CLANG),y)
ifeq ($(wildcard $(COMPILER_RT_LIB)),)
# if "--print-libgcc-file-name" unable to find the correct libgcc PATH
# then go ahead and try "--print-file-name"
COMPILER_RT_LIB := $(wildcard $(shell $(CC) $(ARCHCPUFLAGS) --print-file-name $(notdir $(COMPILER_RT_LIB))))
endif
endif
else ifeq ($(CONFIG_ARCH_TOOLCHAIN_GHS),y)
endif

ifeq ($(CONFIG_ARCH_TOOLCHAIN_GHS),y)
GHS_ROOT_PATH = $(shell which $(CC) | awk -F '/[^/]*$$' '{print $$1}')
COMPILER_RT_LIB := -l$(GHS_ROOT_PATH)/lib/thumb2/libarch
ifeq ($(CONFIG_ARCH_FPU),y)
Expand Down
3 changes: 3 additions & 0 deletions libs/libbuiltin/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
compiler-rt-*.src.tar.xz
*.o
.depend
30 changes: 30 additions & 0 deletions libs/libbuiltin/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# ##############################################################################
# libs/libbuiltin/CMakeLists.txt
#
# 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.
#
# ##############################################################################

# Include the uClibc++ Make.defs file if selected. If it is included, the
# uClibc++/Make.defs file will add its files to the source file list, add its
# DEPPATH info, and will add the appropriate paths to the VPATH variable
#
# Note that an error will occur if you select CONFIG_LIBXX_UCLIBCXX without
# installing the uClibc++ package. This is intentional to let you know about
# the configuration problem. Refer to the README.txt file in the NuttX uClibc++
# GIT repository for more information

nuttx_add_subdirectory()
36 changes: 36 additions & 0 deletions libs/libbuiltin/Kconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
#
# For a description of the syntax of this configuration file,
# see the file kconfig-language.txt in the NuttX tools repository.
#

comment "Toolchain Library Support"

choice
prompt "Builtin toolchain support"
default BUILTIN_TOOLCHAIN
---help---
Choose to compile libraries related to toolchain into the OS

config BUILTIN_COMPILER_RT
Comment thread
W-M-R marked this conversation as resolved.
bool "Builtin LLVM Compiler-rt"
---help---
Compile the LLVM Compiler-rt library into the OS.

config BUILTIN_TOOLCHAIN
bool "Link the toolchain library"
---help---
Use the toolchain library that comes with the compiler

endchoice

if BUILTIN_COMPILER_RT

config COMPILER_RT_VERSION
string "Select LLVM Compiler-rt version"
default "17.0.1"

config COMPILER_RT_HAS_BFLOAT16
bool "Enable support for bfloat16 in Compiler-rt"
default n

endif # BUILTIN_COMPILER_RT
83 changes: 83 additions & 0 deletions libs/libbuiltin/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
############################################################################
# libs/libbuiltin/Makefile
#
# 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.
#
###########################################################################

include $(TOPDIR)/Make.defs

ifeq ($(CONFIG_BUILTIN_COMPILER_RT),y)
include compiler-rt/Make.defs
endif

BIN ?= libbuiltin$(LIBEXT)
BINDIR ?= bin

KBIN = libkbuiltin$(LIBEXT)
KBINDIR = kbin

AOBJS = $(addprefix $(BINDIR)$(DELIM), $(ASRCS:.S=$(OBJEXT)))
COBJS = $(addprefix $(BINDIR)$(DELIM), $(CSRCS:.c=$(OBJEXT)))
CXXOBJS = $(addprefix $(BINDIR)$(DELIM), $(CXXSRCS:.cxx=$(OBJEXT)))
CPPOBJS = $(addprefix $(BINDIR)$(DELIM), $(CPPSRCS:.cpp=$(OBJEXT)))

SRCS = $(ASRCS) $(CSRCS) $(CXXSRCS) $(CPPSRCS)
OBJS = $(AOBJS) $(COBJS) $(CXXOBJS) $(CPPOBJS)

all: $(OBJS)
$(call ARCHIVE, $(BIN), $(OBJS))

.PHONY: depend clean distclean context $(LIBBUILTIN)

$(AOBJS): $(BINDIR)$(DELIM)%$(OBJEXT): %.S
$(call ASSEMBLE, $<, $@)

$(COBJS): $(BINDIR)$(DELIM)%$(OBJEXT): %.c
$(call COMPILE, $<, $@)

$(CXXOBJS): $(BINDIR)$(DELIM)%$(OBJEXT): %.cxx
$(call COMPILEXX, $<, $@)

$(CPPOBJS): $(BINDIR)$(DELIM)%$(OBJEXT): %.cpp
$(call COMPILEXX, $<, $@)

context::

.depend: $(LIBBUILTIN)
$(Q) touch $@

depend: .depend

$(BIN): depend
$(Q) $(MAKE) all EXTRAFLAGS="$(EXTRAFLAGS)"

# C library for the kernel phase of the two-pass kernel build

ifneq ($(BIN),$(KBIN))
$(KBIN): $(OBJS)
$(Q) $(MAKE) $(KBIN) BIN=$(KBIN) BINDIR=$(KBINDIR) EXTRAFLAGS="$(EXTRAFLAGS)"
endif

clean:
$(call DELFILE, $(BIN))
$(Q) $(MAKE) -C bin clean
$(Q) $(MAKE) -C kbin clean

distclean: clean
$(Q) $(MAKE) -C bin distclean
$(Q) $(MAKE) -C kbin distclean
$(call DELFILE, .depend)
35 changes: 35 additions & 0 deletions libs/libbuiltin/bin/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
############################################################################
# libs/libbuiltin/bin/Makefile
#
# 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.
#
###########################################################################

include $(TOPDIR)/Make.defs

all:
.PHONY: clean distclean

# Clean Targets:

clean:
$(call DELFILE, *.o)

# Deep clean -- removes all traces of the configuration

distclean: clean
$(call DELFILE, *.dep)
$(call DELFILE, .depend)
1 change: 1 addition & 0 deletions libs/libbuiltin/compiler-rt/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/compiler-rt
Loading