Dear all,

How are you? I hope all is well with you. I need help please. I’m struggling to compile MPICH v4.2.1 (from source code) with the GNU toolchain v13.2.0 @ macOS Sonoma v14.4.1. Please see my configuration and installation Perl script attached. I also attach a full log of the compilation errors. I recently installed GNU toolchain via MacPorts. When the script proceeds to compilation, it crashes with the following error messages:

Compiling MPICH...
In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX14.sdk/usr/include/sys/_types.h:32,
                 from /Library/Developer/CommandLineTools/SDKs/MacOSX14.sdk/usr/include/_types.h:27,
                 from /Library/Developer/CommandLineTools/SDKs/MacOSX14.sdk/usr/include/pthread.h:55,
                 from ../../../modules/yaksa/src/util/yaksu_atomics.c:6:
/Library/Developer/CommandLineTools/SDKs/MacOSX14.sdk/usr/include/sys/cdefs.h:554:30: error: missing ')' after "__has_attribute"
  554 | #if __has_cpp_attribute(clang::unsafe_buffer_usage)
      |                              ^
/Library/Developer/CommandLineTools/SDKs/MacOSX14.sdk/usr/include/sys/cdefs.h:554:31: error:  ':' without preceding '?'
  554 | #if __has_cpp_attribute(clang::unsafe_buffer_usage)

I suspect that Apple compilers’ header files are picked up erroneously. Is this normal for GNU toolchain to rely on Apple SDK’s header files? I’m new to Apple CPUs. Would you please educate me, what is the suggested way of installing software on Apple M? processors from source? Or should I just save the pain and install my code using Apple’s native toolchain? Thank you for your help and have a productive week ahead!

Best wishes,
Maxim

#!/usr/bin/env perl

## @brief   Configures, compiles and installs MPICH with GNU compiler toolchain.

## @author  Maksims Abalenkovs
## @email   maksims.abalenk...@stfc.ac.uk
## @date    Apr 22, 2023
## @version 0.5

use v5.38.2;
use autodie;
use strict;
use warnings;
use local::lib;
use Cwd qw(getcwd);
use File::Slurper qw(write_text);
use IPC::System::Simple qw(capturex);

my $rootdir   = &getcwd();
my $gnubin    = '/opt/local/bin';

my $prefix    = '/opt/mpich-4.2.1';
my $np        = 8;
my $build_dir = 'build';

printf "prefix:    %s\n", $prefix;
printf "np:        %s\n", $np;
printf "build_dir: %s\n", $build_dir;

print "Setting environment variables...\n";

$ENV{'FC'}  = $gnubin . '/gfortran';
$ENV{'F77'} = $ENV{'FC'};
$ENV{'CC'}  = $gnubin . '/gcc';
$ENV{'CXX'} = $gnubin . '/g++';

$ENV{'FFLAGS'} = '-fPIC -m64 -fallow-argument-mismatch -I /opt/local/include/unistring/cdefs.h';
$ENV{'CFLAGS'} = '-fPIC -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -m64 -I /opt/local/include/unistring/cdefs.h';

print "Environment variables were set to:\n";

printf "  FC:  %s\n",   $ENV{'FC'};
printf "  F77: %s\n",   $ENV{'F77'};
printf "  CC:  %s\n",   $ENV{'CC'};
printf "  CXX: %s\n\n", $ENV{'CXX'};

printf "  FFLAGS: %s\n", $ENV{'FFLAGS'};
printf "  CFLAGS: %s\n", $ENV{'CFLAGS'};

mkdir $build_dir;
chdir $build_dir;

print "Configuring MPICH...\n";
my @conf_options = (
    "--prefix=$prefix",
    '--enable-shared=no',
    '--enable-fast=O3,ndebug',
    '--disable-error-checking',
    '--enable-fortran=all',
    '--enable-cxx',
    '--enable-romio' );

my $log = capturex('../configure', @conf_options);
&write_text('c.txt', $log);

print "Compiling MPICH...\n";
$log = capturex('make', '-j', $np);
&write_text('m.txt', $log);

print "Installing MPICH into $prefix...\n";
$log = capturex('make', 'install');
&write_text('mi.log', $log);

print "Checking MPICH installation...\n";
$log = capturex('make', '-j', $np, 'installcheck');
&write_text('mc.txt', $log);

print "Testing MPICH installation...\n";
chdir $rootdir . '/test/mpi';

# Unset Fortran 90 compiler flags
$ENV{'F90'}      = '';
$ENV{'F90FLAGS'} = '';

# Set Fortran compiler flags
$ENV{'FCFLAGS'} = $ENV{'FFLAGS'};

$log = capturex('./configure', "--with-mpi=$prefix");
&write_text('ct.txt', $log);

$log = capturex('make', '-j', $np, 'testing');
&write_text('mt.txt', $log);

## @eof mpich-install-gnu.pl

Attachment: mpich-4.2.1-install.log
Description: Binary data


Maxim Abalenkov \\ maxim.abalen...@gmail.com
+44 7 486 486 505 \\ www.maxim.abalenkov.uk

Reply via email to