You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

272 lines
7.8 KiB

#!/bin/sh
# Enhanced test script for MacOS architecture detection
# This script helps verify that the refactoring works correctly
echo "=== Enhanced MacOS Architecture Test ==="
echo ""
# Check if we're on MacOS
if [ "$(uname)" != "Darwin" ]; then
echo "This script is designed for MacOS only."
echo "Current system: $(uname)"
exit 1
fi
echo "System: $(uname)"
echo "Architecture: $(uname -m)"
echo "Kernel version: $(uname -r)"
echo ""
# Test architecture detection
echo "=== Architecture Detection Test ==="
case "$(uname -m)" in
x86_64)
echo "✅ Detected Intel (x86_64) architecture"
echo " Target: x86_64-apple-macos$(sw_vers -productVersion 2>/dev/null | cut -d. -f1,2 || echo '10.8')"
;;
arm64)
echo "✅ Detected Apple Silicon (ARM64) architecture"
echo " Target: arm64-apple-macos$(sw_vers -productVersion 2>/dev/null | cut -d. -f1,2 || echo '10.8')"
;;
*)
echo "❌ Unknown architecture: $(uname -m)"
;;
esac
echo ""
# Test MacOS version detection
echo "=== MacOS Version Detection Test ==="
if command -v sw_vers >/dev/null 2>&1; then
local_version=$(sw_vers -productVersion 2>/dev/null)
major_version=$(echo "$local_version" | cut -d. -f1,2)
echo "✅ MacOS version detected: $local_version"
echo " Major version: $major_version"
echo " Build version: $(sw_vers -buildVersion 2>/dev/null || echo 'Unknown')"
else
echo "❌ Could not detect MacOS version (sw_vers not available)"
local_version="10.8"
major_version="10.8"
fi
echo ""
# Test environment variables
echo "=== Environment Variable Test ==="
if [ -n "$MACOS_TARGET" ]; then
echo "✅ MACOS_TARGET is set: $MACOS_TARGET"
else
echo "ℹ️ MACOS_TARGET is not set (will use auto-detection)"
fi
if [ -n "$MACOS_VERSION" ]; then
echo "✅ MACOS_VERSION is set: $MACOS_VERSION"
else
echo "ℹ️ MACOS_VERSION is not set (will use auto-detection)"
fi
echo ""
# Test build system
echo "=== Build System Test ==="
if [ -f "../Makefile" ]; then
echo "✅ Makefile found"
# Check if mac target exists
if grep -q "^mac:" ../Makefile; then
echo "✅ 'mac' target found in Makefile"
else
echo "❌ 'mac' target not found in Makefile"
fi
# Check if mac-universal target exists
if grep -q "^mac-universal:" ../Makefile; then
echo "✅ 'mac-universal' target found in Makefile"
else
echo "❌ 'mac-universal' target not found in Makefile"
fi
# Check if mac-auto target exists
if grep -q "^mac-auto:" ../Makefile; then
echo "✅ 'mac-auto' target found in Makefile"
else
echo "ℹ️ 'mac-auto' target not found in Makefile"
fi
# Check if mac-info target exists
if grep -q "^mac-info:" ../Makefile; then
echo "✅ 'mac-info' target found in Makefile"
else
echo "ℹ️ 'mac-info' target not found in Makefile"
fi
else
echo "❌ Makefile not found"
fi
echo ""
# Test component Makefiles
echo "=== Component Makefiles Test ==="
components="tpws ip2net mdig nfq"
for comp in $components; do
if [ -f "../$comp/Makefile" ]; then
echo "$comp Makefile found"
# Check for mac target
if grep -q "^mac:" "../$comp/Makefile"; then
echo " ✅ 'mac' target available"
else
echo " ❌ 'mac' target not available"
fi
# Check for mac-universal target
if grep -q "^mac-universal:" "../$comp/Makefile"; then
echo " ✅ 'mac-universal' target available"
else
echo " ❌ 'mac-universal' target not available"
fi
# Check for mac-info target
if grep -q "^mac-info:" "../$comp/Makefile"; then
echo " ✅ 'mac-info' target available"
else
echo " ❌ 'mac-info' target not available"
fi
else
echo "$comp Makefile not found"
fi
done
echo ""
# Test binary directories
echo "=== Binary Directory Test ==="
BINS="../binaries"
if [ -d "$BINS" ]; then
echo "✅ Binaries directory found: $BINS"
# Check for architecture-specific directories
for arch in mac64 mac64-arm64; do
if [ -d "$BINS/$arch" ]; then
echo "✅ Found $arch directory"
echo " Contents:"
ls -la "$BINS/$arch" | head -5 | sed 's/^/ /'
else
echo "ℹ️ $arch directory not found"
fi
done
else
echo "ℹ️ Binaries directory not found: $BINS"
fi
echo ""
# Test compilation readiness
echo "=== Compilation Readiness Test ==="
local_ready=true
if command -v make >/dev/null 2>&1; then
echo "✅ 'make' command available: $(which make)"
else
echo "❌ 'make' command not available"
local_ready=false
fi
if command -v cc >/dev/null 2>&1; then
echo "✅ 'cc' compiler available: $(which cc)"
elif command -v clang >/dev/null 2>&1; then
echo "✅ 'clang' compiler available: $(which clang)"
elif command -v gcc >/dev/null 2>&1; then
echo "✅ 'gcc' compiler available: $(which gcc)"
else
echo "❌ No C compiler found"
local_ready=false
fi
if command -v lipo >/dev/null 2>&1; then
echo "✅ 'lipo' tool available: $(which lipo)"
else
echo "❌ 'lipo' tool not available"
local_ready=false
fi
if command -v strip >/dev/null 2>&1; then
echo "✅ 'strip' tool available: $(which strip)"
else
echo "❌ 'strip' tool not available"
local_ready=false
fi
if [ "$local_ready" = "true" ]; then
echo "✅ System is ready for compilation"
else
echo "❌ System is not ready for compilation"
echo " Install Xcode Command Line Tools: xcode-select --install"
fi
echo ""
# Test architecture detection script
echo "=== Architecture Detection Script Test ==="
if [ -f "./macos_arch_detect.sh" ]; then
echo "✅ Architecture detection script found"
# Test basic functionality
if ./macos_arch_detect.sh detect >/dev/null 2>&1; then
echo "✅ Script runs successfully"
# Test info command
if ./macos_arch_detect.sh info >/dev/null 2>&1; then
echo "✅ 'info' command works"
else
echo "❌ 'info' command failed"
fi
# Test check command
if ./macos_arch_detect.sh check >/dev/null 2>&1; then
echo "✅ 'check' command works"
else
echo "❌ 'check' command failed"
fi
else
echo "❌ Script failed to run"
fi
else
echo "❌ Architecture detection script not found"
fi
echo ""
# Test MacOS specific features
echo "=== MacOS Specific Features Test ==="
# Check for PF (Packet Filter)
if command -v pfctl >/dev/null 2>&1; then
echo "✅ PF (Packet Filter) available: $(which pfctl)"
pfctl -v 2>/dev/null | head -1 | sed 's/^/ /'
else
echo "❌ PF (Packet Filter) not available"
fi
# Check for launchd
if command -v launchctl >/dev/null 2>&1; then
echo "✅ launchd available: $(which launchctl)"
else
echo "❌ launchd not available"
fi
# Check for system integrity protection
if csrutil status 2>/dev/null | grep -q "enabled"; then
echo "⚠️ System Integrity Protection (SIP) is enabled"
echo " This may affect some operations"
else
echo "✅ System Integrity Protection (SIP) is disabled or not available"
fi
echo ""
echo "=== Test Complete ==="
echo ""
echo "To test compilation, run:"
echo " make mac # Build for current architecture"
echo " make mac-universal # Build universal binary"
echo " make mac-auto # Auto-detect and build"
echo " make mac-info # Show build information"
echo " ./macos_arch_detect.sh # Use architecture detection script"
echo ""
echo "For more information:"
echo " ./macos_arch_detect.sh help"
echo " make mac-info"
echo " ./macos_arch_detect.sh info"