llvm / llvm-project

The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.
http://llvm.org
Other
28.03k stars 11.58k forks source link

15.0.0: cmake is failing because cannot find GNUInstallPackageDir, ExtendPath and FindPrefixFromConfig #57573

Closed kloczek closed 2 years ago

kloczek commented 2 years ago

I'm using https://github.com/llvm/llvm-project/releases/download/llvmorg-15.0.0/llvm-15.0.0.src.tar.xz tar ball as input cource. camake is failing with

```console + /usr/bin/cmake -B x86_64-redhat-linux-gnu -D BUILD_SHARED_LIBS=ON -D CMAKE_AR=/usr/bin/gcc-ar -D CMAKE_BUILD_TYPE=RelWithDebInfo -D CMAKE_C_FLAGS_RELEASE=-DNDEBUG -D CMAKE_CXX_FLAGS_RELEASE=-DNDEBUG -D CMAKE_Fortran_FLAGS_RELEASE=-DNDEBUG -D CMAKE_INSTALL_PREFIX=/usr -D CMAKE_NM=/usr/bin/gcc-nm -D CMAKE_RANLIB=/usr/bin/gcc-ranlib -D CMAKE_VERBOSE_MAKEFILE=ON -D INCLUDE_INSTALL_DIR=/usr/include -D LIB_INSTALL_DIR=/usr/lib64 -D LIB_SUFFIX=64 -D SHARE_INSTALL_PREFIX=/usr/share -D SYSCONF_INSTALL_DIR=/etc -S . -D BUILD_SHARED_LIBS=OFF -D CMAKE_INSTALL_PREFIX=/usr -D CMAKE_SKIP_RPATH=ON -D LLVM_BUILD_DOCS=ON -D LLVM_BUILD_EXAMPLES=OFF -D LLVM_BUILD_EXTERNAL_COMPILER_RT=ON -D LLVM_BUILD_LLVM_DYLIB=ON -D LLVM_BUILD_RUNTIME=ON -D LLVM_BUILD_TESTS=ON -D LLVM_BUILD_TOOLS=ON -D LLVM_DYLIB_EXPORT_ALL=ON -D LLVM_ENABLE_DOXYGEN=OFF -D LLVM_ENABLE_FFI=ON -D LLVM_ENABLE_LIBCXX=OFF -D LLVM_ENABLE_LIBXML2=ON -D LLVM_ENABLE_RTTI=ON -D LLVM_ENABLE_SPHINX=ON -D LLVM_ENABLE_TERMINFO=ON -D LLVM_ENABLE_ZLIB=ON -D LLVM_EXPERIMENTAL_TARGETS_TO_BUILD=AVR -D LLVM_EXTERNAL_LIT=/usr/bin/lit -D LLVM_INCLUDE_BENCHMARKS=OFF -D LLVM_INCLUDE_DOCS=ON -D LLVM_INCLUDE_EXAMPLES=ON -D LLVM_INCLUDE_TESTS=ON -D LLVM_INCLUDE_TOOLS=ON -D LLVM_INCLUDE_UTILS=ON -D LLVM_INSTALL_SPHINX_HTML_DIR=/usr/share/doc/llvm/html -D LLVM_INSTALL_TOOLCHAIN_ONLY=OFF -D LLVM_INSTALL_UTILS=ON -D LLVM_LINK_LLVM_DYLIB=ON -D LLVM_PARALLEL_LINK_JOBS=4 -D LLVM_TARGETS_TO_BUILD=all -D LLVM_TOOLS_INSTALL_DIR=bin -D LLVM_USE_PERF=ON -D LLVM_UTILS_INSTALL_DIR=/usr/bin -D LLVM_VERSION_SUFFIX= -D SPHINX_EXECUTABLE=/usr/bin/sphinx-build -D SPHINX_OUTPUT_HTML=ON -D SPHINX_OUTPUT_MAN=ON -D SPHINX_WARNINGS_AS_ERRORS=OFF -D LLVM_LIBDIR_SUFFIX=64 -D LLVM_BINUTILS_INCDIR=/usr/include -- The C compiler identification is GNU 12.2.1 -- The CXX compiler identification is GNU 12.2.1 -- The ASM compiler identification is GNU -- Found assembler: /usr/bin/gcc -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: /usr/bin/gcc - skipped -- Detecting C compile features -- Detecting C compile features - done -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /usr/bin/g++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done CMake Error at CMakeLists.txt:327 (include): include could not find requested file: GNUInstallPackageDir -- Looking for dlfcn.h -- Looking for dlfcn.h - found -- Looking for errno.h -- Looking for errno.h - found -- Looking for fcntl.h -- Looking for fcntl.h - found -- Looking for link.h -- Looking for link.h - found -- Looking for malloc/malloc.h -- Looking for malloc/malloc.h - not found -- Looking for pthread.h -- Looking for pthread.h - found -- Looking for signal.h -- Looking for signal.h - found -- Looking for sys/ioctl.h -- Looking for sys/ioctl.h - found -- Looking for sys/mman.h -- Looking for sys/mman.h - found -- Looking for sys/param.h -- Looking for sys/param.h - found -- Looking for sys/resource.h -- Looking for sys/resource.h - found -- Looking for sys/stat.h -- Looking for sys/stat.h - found -- Looking for sys/time.h -- Looking for sys/time.h - found -- Looking for sys/types.h -- Looking for sys/types.h - found -- Looking for sysexits.h -- Looking for sysexits.h - found -- Looking for termios.h -- Looking for termios.h - found -- Looking for unistd.h -- Looking for unistd.h - found -- Looking for valgrind/valgrind.h -- Looking for valgrind/valgrind.h - found -- Looking for fenv.h -- Looking for fenv.h - found -- Looking for FE_ALL_EXCEPT -- Looking for FE_ALL_EXCEPT - found -- Looking for FE_INEXACT -- Looking for FE_INEXACT - found -- Looking for mach/mach.h -- Looking for mach/mach.h - not found -- Looking for CrashReporterClient.h -- Looking for CrashReporterClient.h - not found -- Looking for linux/magic.h -- Looking for linux/magic.h - found -- Looking for pthread_create in pthread -- Looking for pthread_create in pthread - found -- Looking for pthread_rwlock_init in pthread -- Looking for pthread_rwlock_init in pthread - found -- Looking for pthread_mutex_lock in pthread -- Looking for pthread_mutex_lock in pthread - found -- Looking for dlopen in dl -- Looking for dlopen in dl - found -- Looking for clock_gettime in rt -- Looking for clock_gettime in rt - found -- Looking for pfm_initialize in pfm -- Looking for pfm_initialize in pfm - not found -- Performing Test CMAKE_HAVE_LIBC_PTHREAD -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success -- Found Threads: TRUE -- Found ZLIB: /usr/lib64/libz.so (found version "1.2.11") -- Looking for compress2 -- Looking for compress2 - found -- Found LibXml2: /usr/lib64/libxml2.so (found version "2.10.2") -- Looking for xmlReadMemory -- Looking for xmlReadMemory - found CMake Warning at cmake/config-ix.cmake:223 (find_package): By not providing "FindLibEdit.cmake" in CMAKE_MODULE_PATH this project has asked CMake to find a package configuration file provided by "LibEdit", but CMake did not find one. Could not find a package configuration file provided by "LibEdit" with any of the following names: LibEditConfig.cmake libedit-config.cmake Add the installation prefix of "LibEdit" to CMAKE_PREFIX_PATH or set "LibEdit_DIR" to a directory containing one of the above files. If "LibEdit" provides a separate development package or SDK, be sure it has been installed. Call Stack (most recent call first): CMakeLists.txt:774 (include) -- Performing Test Terminfo_LINKABLE -- Performing Test Terminfo_LINKABLE - Success -- Found Terminfo: /usr/lib64/libtinfo.so -- Looking for xar_open in xar -- Looking for xar_open in xar - not found -- Looking for arc4random -- Looking for arc4random - found -- Looking for backtrace -- Looking for backtrace - found -- backtrace facility detected in default set of libraries -- Found Backtrace: /usr/include -- Performing Test C_SUPPORTS_WERROR_UNGUARDED_AVAILABILITY_NEW -- Performing Test C_SUPPORTS_WERROR_UNGUARDED_AVAILABILITY_NEW - Failed -- Looking for __register_frame -- Looking for __register_frame - found -- Looking for __deregister_frame -- Looking for __deregister_frame - found -- Looking for __unw_add_dynamic_fde -- Looking for __unw_add_dynamic_fde - not found -- Looking for _Unwind_Backtrace -- Looking for _Unwind_Backtrace - found -- Looking for getpagesize -- Looking for getpagesize - found -- Looking for sysconf -- Looking for sysconf - found -- Looking for getrusage -- Looking for getrusage - found -- Looking for setrlimit -- Looking for setrlimit - found -- Looking for isatty -- Looking for isatty - found -- Looking for futimens -- Looking for futimens - found -- Looking for futimes -- Looking for futimes - found -- Looking for sigaltstack -- Looking for sigaltstack - found -- Looking for lseek64 -- Looking for lseek64 - found -- Looking for mallctl -- Looking for mallctl - not found -- Looking for mallinfo -- Looking for mallinfo - found -- Looking for mallinfo2 -- Looking for mallinfo2 - found -- Looking for malloc_zone_statistics -- Looking for malloc_zone_statistics - not found -- Looking for getrlimit -- Looking for getrlimit - found -- Looking for posix_spawn -- Looking for posix_spawn - found -- Looking for pread -- Looking for pread - found -- Looking for sbrk -- Looking for sbrk - found -- Looking for strerror -- Looking for strerror - found -- Looking for strerror_r -- Looking for strerror_r - found -- Looking for strerror_s -- Looking for strerror_s - not found -- Looking for setenv -- Looking for setenv - found -- Looking for dlopen -- Looking for dlopen - found -- Looking for dladdr -- Looking for dladdr - not found -- Performing Test HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC -- Performing Test HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC - Failed -- Performing Test HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC -- Performing Test HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC - Success -- Looking for __GLIBC__ -- Looking for __GLIBC__ - found -- Looking for pthread_getname_np -- Looking for pthread_getname_np - found -- Looking for pthread_setname_np -- Looking for pthread_setname_np - found -- Performing Test HAVE_FFI_CALL -- Performing Test HAVE_FFI_CALL - Success -- Found FFI: /usr/lib64/libffi.so -- Looking for proc_pid_rusage -- Looking for proc_pid_rusage - not found -- Performing Test HAVE_STD_IS_TRIVIALLY_COPYABLE -- Performing Test HAVE_STD_IS_TRIVIALLY_COPYABLE - Success -- Performing Test HAVE_CXX_ATOMICS_WITHOUT_LIB -- Performing Test HAVE_CXX_ATOMICS_WITHOUT_LIB - Success -- Performing Test HAVE_CXX_ATOMICS64_WITHOUT_LIB -- Performing Test HAVE_CXX_ATOMICS64_WITHOUT_LIB - Success -- Performing Test LLVM_HAS_ATOMICS -- Performing Test LLVM_HAS_ATOMICS - Success -- Performing Test SUPPORTS_VARIADIC_MACROS_FLAG -- Performing Test SUPPORTS_VARIADIC_MACROS_FLAG - Success -- Performing Test SUPPORTS_GNU_ZERO_VARIADIC_MACRO_ARGUMENTS_FLAG -- Performing Test SUPPORTS_GNU_ZERO_VARIADIC_MACRO_ARGUMENTS_FLAG - Failed -- Performing Test HAS_MAYBE_UNINITIALIZED -- Performing Test HAS_MAYBE_UNINITIALIZED - Success -- Native target architecture is X86 -- Threads enabled. -- Doxygen disabled. -- Go bindings enabled. -- Found OCaml: /usr/bin/ocamlfind -- OCaml bindings disabled, need ctypes >=0.4. -- Could NOT find Python module pygments -- Could NOT find Python module pygments.lexers.c_cpp -- Could NOT find Python module yaml -- LLVM host triple: x86_64-unknown-linux-gnu -- LLVM default target triple: x86_64-unknown-linux-gnu CMake Warning at cmake/modules/HandleLLVMOptions.cmake:58 (message): Job pooling is only available with Ninja generators. Call Stack (most recent call first): CMakeLists.txt:815 (include) -- Performing Test C_SUPPORTS_FPIC -- Performing Test C_SUPPORTS_FPIC - Success -- Performing Test CXX_SUPPORTS_FPIC -- Performing Test CXX_SUPPORTS_FPIC - Success -- Building with -fPIC -- Performing Test C_SUPPORTS_FNO_SEMANTIC_INTERPOSITION -- Performing Test C_SUPPORTS_FNO_SEMANTIC_INTERPOSITION - Success -- Performing Test CXX_SUPPORTS_FNO_SEMANTIC_INTERPOSITION -- Performing Test CXX_SUPPORTS_FNO_SEMANTIC_INTERPOSITION - Success -- Performing Test SUPPORTS_FVISIBILITY_INLINES_HIDDEN_FLAG -- Performing Test SUPPORTS_FVISIBILITY_INLINES_HIDDEN_FLAG - Success -- Performing Test C_SUPPORTS_WERROR_DATE_TIME -- Performing Test C_SUPPORTS_WERROR_DATE_TIME - Success -- Performing Test CXX_SUPPORTS_WERROR_DATE_TIME -- Performing Test CXX_SUPPORTS_WERROR_DATE_TIME - Success -- Performing Test CXX_SUPPORTS_WERROR_UNGUARDED_AVAILABILITY_NEW -- Performing Test CXX_SUPPORTS_WERROR_UNGUARDED_AVAILABILITY_NEW - Failed -- Performing Test CXX_SUPPORTS_MISSING_FIELD_INITIALIZERS_FLAG -- Performing Test CXX_SUPPORTS_MISSING_FIELD_INITIALIZERS_FLAG - Success -- Performing Test C_SUPPORTS_CXX98_COMPAT_EXTRA_SEMI_FLAG -- Performing Test C_SUPPORTS_CXX98_COMPAT_EXTRA_SEMI_FLAG - Failed -- Performing Test CXX_SUPPORTS_CXX98_COMPAT_EXTRA_SEMI_FLAG -- Performing Test CXX_SUPPORTS_CXX98_COMPAT_EXTRA_SEMI_FLAG - Failed -- Performing Test C_SUPPORTS_IMPLICIT_FALLTHROUGH_FLAG -- Performing Test C_SUPPORTS_IMPLICIT_FALLTHROUGH_FLAG - Success -- Performing Test CXX_SUPPORTS_IMPLICIT_FALLTHROUGH_FLAG -- Performing Test CXX_SUPPORTS_IMPLICIT_FALLTHROUGH_FLAG - Success -- Performing Test C_SUPPORTS_COVERED_SWITCH_DEFAULT_FLAG -- Performing Test C_SUPPORTS_COVERED_SWITCH_DEFAULT_FLAG - Failed -- Performing Test CXX_SUPPORTS_COVERED_SWITCH_DEFAULT_FLAG -- Performing Test CXX_SUPPORTS_COVERED_SWITCH_DEFAULT_FLAG - Failed -- Performing Test CXX_SUPPORTS_CLASS_MEMACCESS_FLAG -- Performing Test CXX_SUPPORTS_CLASS_MEMACCESS_FLAG - Success -- Performing Test CXX_SUPPORTS_REDUNDANT_MOVE_FLAG -- Performing Test CXX_SUPPORTS_REDUNDANT_MOVE_FLAG - Success -- Performing Test CXX_SUPPORTS_PESSIMIZING_MOVE_FLAG -- Performing Test CXX_SUPPORTS_PESSIMIZING_MOVE_FLAG - Success -- Performing Test CXX_SUPPORTS_NOEXCEPT_TYPE_FLAG -- Performing Test CXX_SUPPORTS_NOEXCEPT_TYPE_FLAG - Success -- Performing Test CXX_WONT_WARN_ON_FINAL_NONVIRTUALDTOR -- Performing Test CXX_WONT_WARN_ON_FINAL_NONVIRTUALDTOR - Failed -- Performing Test CXX_SUPPORTS_SUGGEST_OVERRIDE_FLAG -- Performing Test CXX_SUPPORTS_SUGGEST_OVERRIDE_FLAG - Success -- Performing Test CXX_WSUGGEST_OVERRIDE_ALLOWS_ONLY_FINAL -- Performing Test CXX_WSUGGEST_OVERRIDE_ALLOWS_ONLY_FINAL - Success -- Performing Test C_WCOMMENT_ALLOWS_LINE_WRAP -- Performing Test C_WCOMMENT_ALLOWS_LINE_WRAP - Failed -- Performing Test C_SUPPORTS_STRING_CONVERSION_FLAG -- Performing Test C_SUPPORTS_STRING_CONVERSION_FLAG - Failed -- Performing Test CXX_SUPPORTS_STRING_CONVERSION_FLAG -- Performing Test CXX_SUPPORTS_STRING_CONVERSION_FLAG - Failed -- Performing Test C_SUPPORTS_MISLEADING_INDENTATION_FLAG -- Performing Test C_SUPPORTS_MISLEADING_INDENTATION_FLAG - Success -- Performing Test CXX_SUPPORTS_MISLEADING_INDENTATION_FLAG -- Performing Test CXX_SUPPORTS_MISLEADING_INDENTATION_FLAG - Success -- Performing Test C_SUPPORTS_FNO_FUNCTION_SECTIONS -- Performing Test C_SUPPORTS_FNO_FUNCTION_SECTIONS - Success -- Performing Test C_SUPPORTS_FFUNCTION_SECTIONS -- Performing Test C_SUPPORTS_FFUNCTION_SECTIONS - Success -- Performing Test CXX_SUPPORTS_FFUNCTION_SECTIONS -- Performing Test CXX_SUPPORTS_FFUNCTION_SECTIONS - Success -- Performing Test C_SUPPORTS_FDATA_SECTIONS -- Performing Test C_SUPPORTS_FDATA_SECTIONS - Success -- Performing Test CXX_SUPPORTS_FDATA_SECTIONS -- Performing Test CXX_SUPPORTS_FDATA_SECTIONS - Success -- Looking for os_signpost_interval_begin -- Looking for os_signpost_interval_begin - not found -- Found Python3: /usr/bin/python3.8 (found suitable version "3.8.13", minimum required is "3.6") found components: Interpreter -- Linker detection: GNU ld -- Performing Test HAS_WERROR_GLOBAL_CTORS -- Performing Test HAS_WERROR_GLOBAL_CTORS - Failed -- Looking for __x86_64__ -- Looking for __x86_64__ - found -- Found Git: /usr/bin/git (found version "2.37.3") -- Targeting AArch64 -- Targeting AMDGPU -- Targeting ARM -- Targeting AVR -- Targeting BPF -- Targeting Hexagon -- Targeting Lanai -- Targeting Mips -- Targeting MSP430 -- Targeting NVPTX -- Targeting PowerPC -- Targeting RISCV -- Targeting Sparc -- Targeting SystemZ -- Targeting VE -- Targeting WebAssembly -- Targeting X86 -- Targeting XCore -- Registering Bye as a pass plugin (static build: OFF) -- Sphinx enabled. -- Found Sphinx: /usr/bin/sphinx-build CMake Error at cmake/modules/CMakeLists.txt:1 (include): include could not find requested file: ExtendPath CMake Error at cmake/modules/CMakeLists.txt:3 (include): include could not find requested file: FindPrefixFromConfig CMake Error at cmake/modules/CMakeLists.txt:116 (find_prefix_from_config): Unknown CMake command "find_prefix_from_config". -- Configuring incomplete, errors occurred! See also "/home/tkloczko/rpmbuild/BUILD/llvm-15.0.0.src/x86_64-redhat-linux-gnu/CMakeFiles/CMakeOutput.log". See also "/home/tkloczko/rpmbuild/BUILD/llvm-15.0.0.src/x86_64-redhat-linux-gnu/CMakeFiles/CMakeError.log". ```
kloczek commented 2 years ago

It is as well warning about missing LibEdit cmake module however I don;t see that libedit from https://www.thrysoee.dk/editline/ provides that cmake module so question is which one libedit in this case needs to be used?

nikic commented 2 years ago

Building LLVM also requires the cmake-* tarball since LLVM 15.

kloczek commented 2 years ago

Still something is wrong here in a way how those cmake moduels are used.

For example in llvm tree it is https://github.com/llvm/llvm-project/blob/4ce3848038908e7b91a831d2bcfd48202ea67169/llvm/CMakeLists.txt#L276-L283 After unpack cmake-15.0.0.src.tar.xz in llvm tree oit is necessary to mv cmake-*.src/Modules/*cmake cmake/.

IMO instead fiddling CMAKE_MODULE_PATH better woud be just add CMakeLists.txt to cmake-15.0.0.src.tar.xz which would install versioned cmake module which would be installed in $(libdir}/cmake/llvm.This would allow requite in any llvm project that module like it is KDE base cmake modules https://invent.kde.org/frameworks/extra-cmake-modules/

kloczek commented 2 years ago

Please let me knot if you want for that separated ticket as RFE.