Skip to content

Building llvm 9 fails on macOS 10.15 #17

Open
@mrArkwright

Description

Building llvm 9 with brew install --build-from-source llvm-hs/llvm/llvm-9 fails on macOS 10.15 on my machine.

The macports community already found a fix for this: https://trac.macports.org/ticket/61477. The ticket concerns macOS 11.0 but as far as I understand this also applies to 10.15 if MacOSX11.0.sdk is present (macports/macports-ports@eabdb0e). The error I'm getting is the exact same as in that ticket:

:info:build [ 27%] Building C object lib/Support/CMakeFiles/LLVMSupport.dir/regexec.c.o
:info:build cd /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_llvm-9.0/clang-9.0/work/build/lib/Support && /usr/bin/clang -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_llvm-9.0/clang-9.0/work/build/lib/Support -I/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_llvm-9.0/clang-9.0/work/llvm-9.0.1.src/lib/Support -I/opt/local/include/libxml2 -I/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_llvm-9.0/clang-9.0/work/build/include -I/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_llvm-9.0/clang-9.0/work/llvm-9.0.1.src/include -pipe -Os -isysroot/Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk -fPIC -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wmissing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wcovered-switch-default -Wdelete-non-virtual-dtor -Wstring-conversion -DNDEBUG -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk -mmacosx-version-min=11.0 -o CMakeFiles/LLVMSupport.dir/regexec.c.o -c /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_llvm-9.0/clang-9.0/work/llvm-9.0.1.src/lib/Support/regexec.c
:info:build /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_llvm-9.0/clang-9.0/work/llvm-9.0.1.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc:169:31: error: invalid application of 'sizeof' to an incomplete type 'struct stat64'
:info:build   unsigned struct_stat64_sz = sizeof(struct stat64);
:info:build                               ^     ~~~~~~~~~~~~~~~
:info:build /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_llvm-9.0/clang-9.0/work/llvm-9.0.1.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc:169:45: note: forward declaration of '__sanitizer::stat64'
:info:build   unsigned struct_stat64_sz = sizeof(struct stat64);
:info:build                                             ^
:info:build /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_llvm-9.0/clang-9.0/work/llvm-9.0.1.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc:195:33: error: invalid application of 'sizeof' to an incomplete type 'struct statfs64'
:info:build   unsigned struct_statfs64_sz = sizeof(struct statfs64);
:info:build                                 ^     ~~~~~~~~~~~~~~~~~
:info:build /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_llvm-9.0/clang-9.0/work/llvm-9.0.1.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc:195:47: note: forward declaration of '__sanitizer::statfs64'
:info:build   unsigned struct_statfs64_sz = sizeof(struct statfs64);
:info:build                                               ^
:info:build 2 errors generated.
:info:build make[2]: *** [projects/compiler-rt/lib/sanitizer_common/CMakeFiles/RTSanitizerCommonNoHooks.osx.dir/sanitizer_platform_limits_posix.cc.o] Error 1

Setting -DDARWIN_osx_ARCHS="x86_64;x86_64h" seems to resolve the issue. However when -DLLVM_BUILD_EXTERNAL_COMPILER_RT is used that setting doesn't seem to be taken into account. Finally to make the build work without -DLLVM_BUILD_EXTERNAL_COMPILER_RT again I also had to specify -DCMAKE_OSX_ARCHITECTURES="x86_64".

Is removing -DLLVM_BUILD_EXTERNAL_COMPILER_RT a problem? To be honest I'm not sure why it was turned on and what the implications of turning it off are. For my compiler project with llvm-hs the build works fine.

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions