From 24c44b35d5ae28444d01471c85f6b7125b937c4a Mon Sep 17 00:00:00 2001 From: raiden00pl Date: Fri, 14 Jul 2023 11:57:33 +0200 Subject: [PATCH] cmake: support arm specific libm --- libs/libm/CMakeLists.txt | 20 +++++++ libs/libm/libm/CMakeLists.txt | 5 ++ libs/libm/libm/arm/CMakeLists.txt | 21 +++++++ libs/libm/libm/arm/armv7-m/CMakeLists.txt | 33 ++++++++++ libs/libm/libm/arm/armv8-m/CMakeLists.txt | 73 +++++++++++++++++++++++ 5 files changed, 152 insertions(+) create mode 100644 libs/libm/CMakeLists.txt create mode 100644 libs/libm/libm/arm/CMakeLists.txt create mode 100644 libs/libm/libm/arm/armv7-m/CMakeLists.txt create mode 100644 libs/libm/libm/arm/armv8-m/CMakeLists.txt diff --git a/libs/libm/CMakeLists.txt b/libs/libm/CMakeLists.txt new file mode 100644 index 0000000000..2568ce3f65 --- /dev/null +++ b/libs/libm/CMakeLists.txt @@ -0,0 +1,20 @@ +# ############################################################################## +# libs/libm/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. +# +# ############################################################################## +nuttx_add_subdirectory() diff --git a/libs/libm/libm/CMakeLists.txt b/libs/libm/libm/CMakeLists.txt index 11d132b773..5b406cc8ee 100644 --- a/libs/libm/libm/CMakeLists.txt +++ b/libs/libm/libm/CMakeLists.txt @@ -18,6 +18,11 @@ # # ############################################################################## if(CONFIG_LIBM) + + if(CONFIG_ARCH_ARM) + nuttx_add_subdirectory(arm) + endif() + # Add the floating point math C files to the build set(SRCS diff --git a/libs/libm/libm/arm/CMakeLists.txt b/libs/libm/libm/arm/CMakeLists.txt new file mode 100644 index 0000000000..cf5ec49e22 --- /dev/null +++ b/libs/libm/libm/arm/CMakeLists.txt @@ -0,0 +1,21 @@ +# ############################################################################## +# libs/libm/libm/arm/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. +# +# ############################################################################## + +nuttx_add_subdirectory() diff --git a/libs/libm/libm/arm/armv7-m/CMakeLists.txt b/libs/libm/libm/arm/armv7-m/CMakeLists.txt new file mode 100644 index 0000000000..d1f5cf5b00 --- /dev/null +++ b/libs/libm/libm/arm/armv7-m/CMakeLists.txt @@ -0,0 +1,33 @@ +# ############################################################################## +# libs/libm/libm/arm/armv7-m/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. +# +# ############################################################################## + +if(CONFIG_ARMV7M_LIBM) + set(SRCS) + + if(CONFIG_LIBM_ARCH_FABSF) + list(APPEND SRCS arch_fabsf.c) + endif() + + if(CONFIG_LIBM_ARCH_SQRTF) + list(APPEND SRCS arch_sqrtf.c) + endif() + + target_sources(c PRIVATE ${SRCS}) +endif() diff --git a/libs/libm/libm/arm/armv8-m/CMakeLists.txt b/libs/libm/libm/arm/armv8-m/CMakeLists.txt new file mode 100644 index 0000000000..6eafa9c5b3 --- /dev/null +++ b/libs/libm/libm/arm/armv8-m/CMakeLists.txt @@ -0,0 +1,73 @@ +# ############################################################################## +# libs/libm/libm/arm/armv8-m/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. +# +# ############################################################################## + +if(CONFIG_ARMV8M_LIBM) + set(SRCS) + + if(CONFIG_LIBM_ARCH_CEIL) + list(APPEND SRCS arch_ceil.c) + endif() + + if(CONFIG_LIBM_ARCH_CEILF) + list(APPEND SRCS arch_ceilf.c) + endif() + + if(CONFIG_LIBM_ARCH_FLOOR) + list(APPEND SRCS arch_floor.c) + endif() + + if(CONFIG_LIBM_ARCH_FLOORF) + list(APPEND SRCS arch_floorf.c) + endif() + + if(CONFIG_LIBM_ARCH_NEARBYINT) + list(APPEND SRCS arch_nearbyint.c) + endif() + + if(CONFIG_LIBM_ARCH_NEARBYINTF) + list(APPEND SRCS arch_nearbyintf.c) + endif() + + if(CONFIG_LIBM_ARCH_RINTF) + list(APPEND SRCS arch_rintf.c) + endif() + + if(CONFIG_LIBM_ARCH_ROUNDF) + list(APPEND SRCS arch_roundf.c) + endif() + + if(CONFIG_LIBM_ARCH_TRUNCF) + list(APPEND SRCS arch_truncf.c) + endif() + + if(CONFIG_LIBM_ARCH_RINT) + list(APPEND SRCS arch_rint.c) + endif() + + if(CONFIG_LIBM_ARCH_ROUND) + list(APPEND SRCS arch_round.c) + endif() + + if(CONFIG_LIBM_ARCH_TRUNC) + list(APPEND SRCS arch_trunc.c) + endif() + + target_sources(c PRIVATE ${SRCS}) +endif()