nuttx-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From xiaoxi...@apache.org
Subject [incubator-nuttx] 02/02: sim: Suppress no symbol warnings for macOS
Date Tue, 05 May 2020 13:40:27 GMT
This is an automated email from the ASF dual-hosted git repository.

xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git

commit 19cc84ed4afe1df6c422b19339732b5f6b1d4942
Author: YAMAMOTO Takashi <yamamoto@midokura.com>
AuthorDate: Fri May 1 17:20:11 2020 +0900

    sim: Suppress no symbol warnings for macOS
---
 boards/sim/sim/sim/configs/cxxtest/Make.defs |  3 +-
 boards/sim/sim/sim/scripts/Make.defs         |  3 +-
 tools/macar-rcs.sh                           | 44 ++++++++++++++++++++++++++++
 3 files changed, 48 insertions(+), 2 deletions(-)

diff --git a/boards/sim/sim/sim/configs/cxxtest/Make.defs b/boards/sim/sim/sim/configs/cxxtest/Make.defs
index ec87630..165073a 100644
--- a/boards/sim/sim/sim/configs/cxxtest/Make.defs
+++ b/boards/sim/sim/sim/configs/cxxtest/Make.defs
@@ -62,10 +62,11 @@ CPP = $(CROSSDEV)cc -E
 LD = $(CROSSDEV)ld
 ifeq ($(CONFIG_HOST_MACOS),y)
 STRIP = $(CROSSDEV)strip
+AR = $(TOPDIR)/tools/macar-rcs.sh
 else
 STRIP = $(CROSSDEV)strip --strip-unneeded
-endif
 AR = $(CROSSDEV)ar rcs
+endif
 NM = $(CROSSDEV)nm
 OBJCOPY = $(CROSSDEV)objcopy
 OBJDUMP = $(CROSSDEV)objdump
diff --git a/boards/sim/sim/sim/scripts/Make.defs b/boards/sim/sim/sim/scripts/Make.defs
index 28e7112..ebf091b 100644
--- a/boards/sim/sim/sim/scripts/Make.defs
+++ b/boards/sim/sim/sim/scripts/Make.defs
@@ -64,10 +64,11 @@ CPP = $(CROSSDEV)cc -E -P -x c
 LD = $(CROSSDEV)ld
 ifeq ($(CONFIG_HOST_MACOS),y)
 STRIP = $(CROSSDEV)strip
+AR = $(TOPDIR)/tools/macar-rcs.sh
 else
 STRIP = $(CROSSDEV)strip --strip-unneeded
-endif
 AR = $(CROSSDEV)ar rcs
+endif
 NM = $(CROSSDEV)nm
 OBJCOPY = $(CROSSDEV)objcopy
 OBJDUMP = $(CROSSDEV)objdump
diff --git a/tools/macar-rcs.sh b/tools/macar-rcs.sh
new file mode 100755
index 0000000..8821f97
--- /dev/null
+++ b/tools/macar-rcs.sh
@@ -0,0 +1,44 @@
+#! /usr/bin/env bash
+
+# Licensed 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.
+
+# This is an "ar rcs" equivalent without "no symbols" warnings.
+
+# Background:
+#
+# NuttX assumes that it's ok to create
+#
+#  - An object without any symbols ("has no symbols")
+#  - A library without any symbols ("the table of contents is empty")
+#
+# While macOS's ranlib/libtool can handle those cases,
+# it produces warnings cited in the parentheses.
+# NuttX developers are not happy with those warnings.
+# NuttX developers are not happy with providing per-library dummy
+# objects either.
+#
+# The "has no symbols" warning can be supressed with
+# the -no_warning_for_no_symbols option if you are using
+# a recent enough version of ranlib/libtool.
+# (Unfortunately, ar doesn't have a way to pass the option to ranlib.)
+# However, there seems to be no way to suppress the
+# "the table of contents is empty" warning. (thus the grep below)
+#
+# Reference:
+#
+# https://opensource.apple.com/source/cctools/cctools-949.0.1/misc/
+
+set -e
+ar rcS "$@"
+# Note: the following line is using bash process substitution
+ranlib -no_warning_for_no_symbols "$1" 2> >(grep -F -v "the table of contents is empty")


Mime
View raw message