From 3cb4897fd9b79f132bf027e008b2423de2886847 Mon Sep 17 00:00:00 2001
From: midipix <writeonce@midipix.org>
Date: Fri, 15 Feb 2019 22:16:31 -0500
Subject: build system: ccenv: attemt to use otool for binary format detection.

---
 sofort/ccenv/ccenv.sh | 21 ++++++++++++++++++++-
 1 file changed, 20 insertions(+), 1 deletion(-)

(limited to 'sofort')

diff --git a/sofort/ccenv/ccenv.sh b/sofort/ccenv/ccenv.sh
index 04db31e..91f613c 100644
--- a/sofort/ccenv/ccenv.sh
+++ b/sofort/ccenv/ccenv.sh
@@ -87,7 +87,7 @@ ccenv_find_tool()
 ccenv_set_primary_tools()
 {
 	ccenv_core_tools="ar nm objdump ranlib size strip strings objcopy"
-	ccenv_hack_tools="addr2line cov elfedit readelf readobj"
+	ccenv_hack_tools="addr2line cov elfedit readelf readobj otool"
 	ccenv_peep_tools="perk mdso dlltool windmc windres"
 
 	for __tool in $ccenv_core_tools $ccenv_hack_tools $ccenv_peep_tools; do
@@ -528,6 +528,7 @@ ccenv_create_freestanding_executable()
 ccenv_set_cc_binfmt()
 {
 	ccenv_use_perk=
+	ccenv_use_otool=
 	ccenv_use_readelf=
 	ccenv_use_readobj=
 	ccenv_use_bfd_objdump=
@@ -573,6 +574,24 @@ ccenv_set_cc_binfmt()
 		&& ccenv_use_readelf=yes
 	fi
 
+	# MACHO-64 / otool
+	if [ -n "$ccenv_otool" ] && [ -z "$ccenv_cc_binfmt" ]; then
+		$ccenv_otool -hv $ccenv_image 2>/dev/null         \
+			| grep -i 'MH_MAGIC_64'                   \
+				> /dev/null                       \
+		&& ccenv_cc_binfmt='MACHO'                        \
+		&& ccenv_use_otool=yes
+	fi
+
+	# MACHO-32 / otool
+	if [ -n "$ccenv_otool" ] && [ -z "$ccenv_cc_binfmt" ]; then
+		$ccenv_otool -hv $ccenv_image 2>/dev/null         \
+			| grep -i 'MH_MAGIC'                      \
+				> /dev/null                       \
+		&& ccenv_cc_binfmt='MACHO'                        \
+		&& ccenv_use_otool=yes
+	fi
+
 	# MACHO-64 / readelf
 	if [ -n "$ccenv_readany" ] && [ -z "$ccenv_cc_binfmt" ]; then
 		$ccenv_readany -h $ccenv_image 2>/dev/null        \
-- 
cgit v1.2.3