ompi
ompi copied to clipboard
clang: error: cannot specify -o when generating multiple output files
build toolchain: android-ndk 21.3.6528147
build source: https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-4.1.1.tar.bz2
libtool: compile: armv7a-linux-androideabi26-clang -DHAVE_CONFIG_H -I. -I/var/folders/jw/7vmz4m1970932zln9tb1whxr0000gn/T/tmp.CqZn4eIR/opal/mca/pmix/pmix3x/pmix/src/util/keyval -I../../../src/include -I../../../include -iquote/var/folders/jw/7vmz4m1970932zln9tb1whxr0000gn/T/tmp.CqZn4eIR/1625720363/armeabi-v7a/opal/mca/pmix/pmix3x/pmix -iquote/var/folders/jw/7vmz4m1970932zln9tb1whxr0000g
n/T/tmp.CqZn4eIR/opal/mca/pmix/pmix3x/pmix -iquote/var/folders/jw/7vmz4m1970932zln9tb1whxr0000gn/T/tmp.CqZn4eIR/opal/mca/pmix/pmix3x/pmix/src -iquote/var/folders/jw/7vmz4m1970932zln9tb1whxr0000gn/T/tmp.CqZn4eIR/1625720363/armeabi-v7a/opal/mca/pmix/pmix3x/pmix/
include -I/var/folders/jw/7vmz4m1970932zln9tb1whxr0000gn/T/tmp.CqZn4eIR/opal/mca/pmix/pmix3x/pmix/include -I/var/folders/jw/7vmz4m1970932zln9tb1whxr0000gn/T/tmp.CqZn4eIR -I/var/folders/jw/7vmz4m1970932zln9tb1whxr0000gn/T/tmp.CqZn4eIR/1625720363/armeabi-v7a -I/var/folders/jw/7vmz4m1970932zln9tb1whxr0000gn/T/tmp.CqZn4eIR/opal/include -I/var/folders/jw/7vmz4m1970932zln9tb1whxr0000gn/T/tmp.CqZn4eIR/1625720363/armeabi-v7a/opal/include -I/var/folders/jw/7vmz4m1970932zln9tb1whxr0000gn/T/tmp.CqZn4eIR/1625720363/armeabi-v7a/opal/mca/hwloc/hwloc201/hwloc/include -I/var/folders/jw/7vmz4m1970932zln9tb1whxr0000gn/T/tmp.CqZn4eIR/opal/mca/hwloc/hwloc201/hwloc/include -I/Users/leleliu008/.ndk-pkg/install.d/libevent/armeabi-v7a/include -I/Users/leleliu008/.ndk-pkg/install.d/openssl/armeabi-v7a/include --sysroot /usr/local/opt/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Qunused-arguments -I/usr/local/opt/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/arm-linux-androideabi -DPOSIX_MADV_DONTNEED=MADV_DONTNEED -include /var/folders/jw/7vmz4m1970932zln9tb1whxr0000gn/T/tmp.CqZn4eIR/1625720363/include.h /var/folders/jw/7vmz4m1970932zln9tb1whxr0000gn/T/tmp.CqZn4eIR/stub-getdtablesize.c -DNDEBUG -O3 --sysroot /usr/local/opt/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Qunused-arguments -Os -fpic -fPIC -finline-functions -fno-strict-aliasing -MT keyval_lex.lo -MD -MP -MF .deps/keyval_lex.Tpo -c /var/folders/jw/7vmz4m1970932zln9tb1whxr0000gn/T/tmp.CqZn4eIR/opal/mca/pmix/pmix3x/pmix/src/util/keyval/keyval_lex.c -fPIC -DPIC -o .libs/keyval_lex.o
clang: error: cannot specify -o when generating multiple output files
make[5]: *** [keyval_lex.lo] Error 1
https://github.com/leleliu008/ndk-pkg-formula/runs/3015848340?check_suite_focus=true
@rhc54 the issue involves PMIx
From the logs, Open MPI configures the internal PMIx with
checking for subdir args... '--disable-man-pages' '--with-pmix-symbol-rename=OPAL_MCA_PMIX3X_' '--enable-embedded-mode' '--disable-pmix-timing' '--without-tests-examples' '--disable-pmix-binaries' '--disable-pmix-backward-compatibility' '--disable-visibility' '--enable-embedded-libevent' '--with-libevent-header=opal/mca/event/external/external.h' '--enable-embedded-hwloc' '--with-hwloc-header=opal/mca/hwloc/hwloc201/hwloc201.h' '--host=armv7a-linux-androideabi' '--prefix=/Users/runner/.ndk-pkg/install.d/openmpi/armeabi-v7a' '--disable-rpath' '--disable-debug' '--disable-nls' '--enable-largefile' '--enable-static' '--enable-shared' 'CC=armv7a-linux-androideabi26-clang' 'CFLAGS=--sysroot /Users/runner/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Qunused-arguments -Os -fpic' 'CXX=armv7a-linux-androideabi26-clang++' 'CXXFLAGS=--sysroot /Users/runner/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Qunused-arguments -Os -fpic' 'CPP=armv7a-linux-androideabi26-clang -E' 'CPPFLAGS=-I/Users/runner/.ndk-pkg/install.d/libevent/armeabi-v7a/include -I/Users/runner/.ndk-pkg/install.d/openssl/armeabi-v7a/include --sysroot /Users/runner/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Qunused-arguments -I/Users/runner/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/arm-linux-androideabi -DPOSIX_MADV_DONTNEED=MADV_DONTNEED -include /var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T/tmp.Z1XrgMuE/1625736590/include.h -include /var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T/tmp.Z1XrgMuE/stub-getdtablesize.c' 'LDFLAGS=-L/Users/runner/.ndk-pkg/install.d/libevent/armeabi-v7a/lib -L/Users/runner/.ndk-pkg/install.d/openssl/armeabi-v7a/lib --sysroot /Users/runner/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -L/Users/runner/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/26' 'AR=arm-linux-androideabi-ar' 'RANLIB=arm-linux-androideabi-ranlib' 'PKG_CONFIG=/usr/local/bin/pkg-config' 'PKG_CONFIG_PATH=/Users/runner/.ndk-pkg/install.d/openssl/armeabi-v7a/lib/pkgconfig:/Users/runner/.ndk-pkg/install.d/libevent/armeabi-v7a/lib/pkgconfig' 'PKG_CONFIG_LIBDIR=' 'CC_FOR_BUILD=/usr/bin/cc' '--disable-coverage' '--disable-mpi-fortran' '--disable-mpi-java' '--disable-oshmem-fortran' '--disable-builtin-atomics' '--enable-sysv-shmem=no' '--enable-sysv-sshmem=no' '--enable-binaries' '--with-libevent=/Users/runner/.ndk-pkg/install.d/libevent/armeabi-v7a' 'FC=' 'host_alias=armv7a-linux-androideabi' 'CFLAGS=-O3 -DNDEBUG --sysroot /Users/runner/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Qunused-arguments -Os -fpic ' 'CPPFLAGS=-I/var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T/tmp.Z1XrgMuE -I/var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T/tmp.Z1XrgMuE/1625736590/armeabi-v7a -I/var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T/tmp.Z1XrgMuE/opal/include -I/var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T/tmp.Z1XrgMuE/1625736590/armeabi-v7a/opal/include -I/var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T/tmp.Z1XrgMuE/1625736590/armeabi-v7a/opal/mca/hwloc/hwloc201/hwloc/include -I/var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T/tmp.Z1XrgMuE/opal/mca/hwloc/hwloc201/hwloc/include -I/Users/runner/.ndk-pkg/install.d/libevent/armeabi-v7a/include -I/Users/runner/.ndk-pkg/install.d/openssl/armeabi-v7a/include --sysroot /Users/runner/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Qunused-arguments -I/Users/runner/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/arm-linux-androideabi -DPOSIX_MADV_DONTNEED=MADV_DONTNEED -include /var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T/tmp.Z1XrgMuE/1625736590/include.h -include /var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T/tmp.Z1XrgMuE/stub-getdtablesize.c -I/Users/runner/.ndk-pkg/install.d/libevent/armeabi-v7a/include' '--disable-option-checking'
Note CPPFLAGS=-include /.../include.h -include /.../stub-getdtablesize.c
but ends up with
checking final CPPFLAGS... -iquote/var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T/tmp.Z1XrgMuE/1625736590/armeabi-v7a/opal/mca/pmix/pmix3x/pmix -iquote/var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T/tmp.Z1XrgMuE/opal/mca/pmix/pmix3x/pmix -iquote/var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T/tmp.Z1XrgMuE/opal/mca/pmix/pmix3x/pmix/src -iquote/var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T/tmp.Z1XrgMuE/1625736590/armeabi-v7a/opal/mca/pmix/pmix3x/pmix/include -I/var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T/tmp.Z1XrgMuE/opal/mca/pmix/pmix3x/pmix/include -I/var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T/tmp.Z1XrgMuE -I/var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T/tmp.Z1XrgMuE/1625736590/armeabi-v7a -I/var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T/tmp.Z1XrgMuE/opal/include -I/var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T/tmp.Z1XrgMuE/1625736590/armeabi-v7a/opal/include -I/var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T/tmp.Z1XrgMuE/1625736590/armeabi-v7a/opal/mca/hwloc/hwloc201/hwloc/include -I/var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T/tmp.Z1XrgMuE/opal/mca/hwloc/hwloc201/hwloc/include -I/Users/runner/.ndk-pkg/install.d/libevent/armeabi-v7a/include -I/Users/runner/.ndk-pkg/install.d/openssl/armeabi-v7a/include --sysroot /Users/runner/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Qunused-arguments -I/Users/runner/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/arm-linux-androideabi -DPOSIX_MADV_DONTNEED=MADV_DONTNEED -include /var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T/tmp.Z1XrgMuE/1625736590/include.h /var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T/tmp.Z1XrgMuE/stub-getdtablesize.c
note -include /.../include.h /.../stub-getdtablesize.c
the second -include has been removed, and I think this is what is ultimately causing the error message
clang: error: cannot specify -o when generating multiple output files
Someone is welcome to come up with a patch 😄
@ggouaillardet Thank you for your help. this problem has been resolved.
I have ever set
export CPPFLAGS="$CPPFLAGS -include $SOURCE_DIR/stub-getdtablesize.c"
I removed it and compiled successfully.
Android-NDK no int getdtablesize(void);
I directly modified the source code:
gsed -i '1i static int getdtablesize(void);' orte/mca/state/base/state_base_fns.c &&
cat >> orte/mca/state/base/state_base_fns.c <<EOF
#include <sys/cdefs.h>
#include <sys/resource.h>
#include <linux/kernel.h>
static int getdtablesize(void) {
struct rlimit r;
if (getrlimit(RLIMIT_NOFILE, &r) < 0) {
return sysconf(_SC_OPEN_MAX);
}
return r.rlim_cur;
}
EOF
@ggouaillardet Is it worth adding -include to https://github.com/open-mpi/ompi/blob/25e0db687fa14e1eac974822abcdce178d284f85/config/opal_functions.m4#L383-L402
Thanks @jsquyres, that will do the trick.
@rhc54 the root cause is in both Open MPI and PMIx, and I will backport the fix to PMIx once reviewed here.
@leleliu008 can you please teach me your full name in Roman alphabet so I can properly acknowledge your contribution?
Almost certainly in PRRTE as well, I should think
@rhc54 I will also issue the PR for PRRTE if needed.
@ggouaillardet I'm Chinese. My Chinese name is 刘富频. Chinese people usually don't have names in Roman alphabet, but we have Pinyin, which is similar to the Roman alphabet. My Pinyin name is LiuFuPin. Thank you.
Thanks @leleliu008 for the lengthy explanation. I updated the commit message of #9131 to credit you as LiuFuPin (I am not sure we can use kanji - nor other non roman alphabets - in the commit messages)
@ggouaillardet Many thanks for your efforts!
@ggouaillardet I believe this should be closed, yes?