llvm / llvm-project

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

[OpenMP] CMake fails with default configuration: Some (but not all) targets in this export set were already defined #81178

Open carlosgalvezp opened 8 months ago

carlosgalvezp commented 8 months ago

Hi!

I'm trying to build openmp following the instructions. Simply running:

cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ ..

This gives:

CMake Error at /usr/lib/llvm-19/lib/cmake/llvm/LLVMExports.cmake:37 (message):
  Some (but not all) targets in this export set were already defined.

  Targets Defined: omp

  Targets not yet defined: ...

Call Stack (most recent call first):
  /usr/lib/llvm-19/cmake/LLVMConfig.cmake:376 (include)
  libomptarget/cmake/Modules/LibomptargetGetDependencies.cmake:27 (find_package)
  libomptarget/CMakeLists.txt:37 (include)

This is happening on trunk, having preinstalled the latest snapshot. Am I missing some package to be installed?

llvmbot commented 8 months ago

@llvm/issue-subscribers-openmp

Author: Carlos Galvez (carlosgalvezp)

Hi! I'm trying to build openmp following the instructions. Simply running: ``` cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ .. ``` This gives: ``` CMake Error at /usr/lib/llvm-19/lib/cmake/llvm/LLVMExports.cmake:37 (message): Some (but not all) targets in this export set were already defined. Targets Defined: omp Targets not yet defined: ... Call Stack (most recent call first): /usr/lib/llvm-19/cmake/LLVMConfig.cmake:376 (include) libomptarget/cmake/Modules/LibomptargetGetDependencies.cmake:27 (find_package) libomptarget/CMakeLists.txt:37 (include) ``` This is happening on trunk, having preinstalled the latest snapshot. Am I missing some package to be installed?
shiltian commented 7 months ago

I believe the issue stems from LLVM 19 being built with OpenMP, resulting in the export of omp to LLVMConfig.cmake. We need to ensure the target is exported correctly, similar to other projects.

jdoerfert commented 7 months ago

Can you share your entire cmake line and maybe the output?

carlosgalvezp commented 7 months ago

Still happening on latest trunk. I am following these instructions to build openmp out-of-tree. If I build it as part of the LLVM project then it works.

a0000069@vm001410:~/git/llvm-project/openmp/build(main)$ cmake ..
-- The C compiler identification is GNU 9.4.0
-- The CXX compiler identification is GNU 9.4.0
-- The ASM compiler identification is GNU
-- Found assembler: /usr/bin/cc
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - 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/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Performing Test OPENMP_HAVE_WALL_FLAG
-- Performing Test OPENMP_HAVE_WALL_FLAG - Success
-- Performing Test OPENMP_HAVE_WERROR_FLAG
-- Performing Test OPENMP_HAVE_WERROR_FLAG - Success
-- Performing Test OPENMP_HAVE_COLOR_DIAGNOSTICS
-- Performing Test OPENMP_HAVE_COLOR_DIAGNOSTICS - Failed
-- Performing Test OPENMP_HAVE_WCAST_QUAL_FLAG
-- Performing Test OPENMP_HAVE_WCAST_QUAL_FLAG - Success
-- Performing Test OPENMP_HAVE_WFORMAT_PEDANTIC_FLAG
-- Performing Test OPENMP_HAVE_WFORMAT_PEDANTIC_FLAG - Failed
-- Performing Test OPENMP_HAVE_WIMPLICIT_FALLTHROUGH_FLAG
-- Performing Test OPENMP_HAVE_WIMPLICIT_FALLTHROUGH_FLAG - Success
-- Performing Test OPENMP_HAVE_WSIGN_COMPARE_FLAG
-- Performing Test OPENMP_HAVE_WSIGN_COMPARE_FLAG - Success
-- Performing Test OPENMP_HAVE_WENUM_CONSTEXPR_CONVERSION_FLAG
-- Performing Test OPENMP_HAVE_WENUM_CONSTEXPR_CONVERSION_FLAG - Failed
-- Performing Test OPENMP_HAVE_WEXTRA_FLAG
-- Performing Test OPENMP_HAVE_WEXTRA_FLAG - Success
-- Performing Test OPENMP_HAVE_WPEDANTIC_FLAG
-- Performing Test OPENMP_HAVE_WPEDANTIC_FLAG - Success
-- Performing Test OPENMP_HAVE_WMAYBE_UNINITIALIZED_FLAG
-- Performing Test OPENMP_HAVE_WMAYBE_UNINITIALIZED_FLAG - Success
-- Performing Test OPENMP_HAVE_NO_SEMANTIC_INTERPOSITION
-- Performing Test OPENMP_HAVE_NO_SEMANTIC_INTERPOSITION - Success
-- Performing Test OPENMP_HAVE_FUNCTION_SECTIONS
-- Performing Test OPENMP_HAVE_FUNCTION_SECTIONS - Failed
-- Performing Test OPENMP_HAVE_DATA_SECTIONS
-- Performing Test OPENMP_HAVE_DATA_SECTIONS - Success
-- Found Python3: /usr/bin/python3.8 (found version "3.8.10") found components: Interpreter 
-- Cannot find llvm-lit.
-- Please put llvm-lit in your PATH, set OPENMP_LLVM_LIT_EXECUTABLE to its full path, or point OPENMP_LLVM_TOOLS_DIR to its directory.
CMake Warning at cmake/OpenMPTesting.cmake:24 (message):
  The check targets will not be available!
Call Stack (most recent call first):
  cmake/OpenMPTesting.cmake:53 (find_standalone_test_dependencies)
  CMakeLists.txt:87 (include)

-- Performing Test LIBOMP_HAVE_FNO_EXCEPTIONS_FLAG
-- Performing Test LIBOMP_HAVE_FNO_EXCEPTIONS_FLAG - Success
-- Performing Test LIBOMP_HAVE_FNO_RTTI_FLAG
-- Performing Test LIBOMP_HAVE_FNO_RTTI_FLAG - Success
-- Performing Test LIBOMP_HAVE_WCLASS_MEMACCESS_FLAG
-- Performing Test LIBOMP_HAVE_WCLASS_MEMACCESS_FLAG - Success
-- Performing Test LIBOMP_HAVE_WCOVERED_SWITCH_DEFAULT_FLAG
-- Performing Test LIBOMP_HAVE_WCOVERED_SWITCH_DEFAULT_FLAG - Failed
-- Performing Test LIBOMP_HAVE_WFRAME_ADDRESS_FLAG
-- Performing Test LIBOMP_HAVE_WFRAME_ADDRESS_FLAG - Success
-- Performing Test LIBOMP_HAVE_WSTRICT_ALIASING_FLAG
-- Performing Test LIBOMP_HAVE_WSTRICT_ALIASING_FLAG - Success
-- Performing Test LIBOMP_HAVE_WSTRINGOP_OVERFLOW_FLAG
-- Performing Test LIBOMP_HAVE_WSTRINGOP_OVERFLOW_FLAG - Success
-- Performing Test LIBOMP_HAVE_WSTRINGOP_TRUNCATION_FLAG
-- Performing Test LIBOMP_HAVE_WSTRINGOP_TRUNCATION_FLAG - Success
-- Performing Test LIBOMP_HAVE_WSWITCH_FLAG
-- Performing Test LIBOMP_HAVE_WSWITCH_FLAG - Success
-- Performing Test LIBOMP_HAVE_WUNINITIALIZED_FLAG
-- Performing Test LIBOMP_HAVE_WUNINITIALIZED_FLAG - Success
-- Performing Test LIBOMP_HAVE_WRETURN_TYPE_C_LINKAGE_FLAG
-- Performing Test LIBOMP_HAVE_WRETURN_TYPE_C_LINKAGE_FLAG - Failed
-- Performing Test LIBOMP_HAVE_WCAST_QUAL_FLAG
-- Performing Test LIBOMP_HAVE_WCAST_QUAL_FLAG - Success
-- Performing Test LIBOMP_HAVE_WINT_TO_VOID_POINTER_CAST_FLAG
-- Performing Test LIBOMP_HAVE_WINT_TO_VOID_POINTER_CAST_FLAG - Failed
-- Performing Test LIBOMP_HAVE_MSSE2_FLAG
-- Performing Test LIBOMP_HAVE_MSSE2_FLAG - Success
-- Performing Test LIBOMP_HAVE_FTLS_MODEL_FLAG
-- Performing Test LIBOMP_HAVE_FTLS_MODEL_FLAG - Success
-- Performing Test LIBOMP_HAVE_MMIC_FLAG
-- Performing Test LIBOMP_HAVE_MMIC_FLAG - Failed
-- Performing Test LIBOMP_HAVE_M32_FLAG
-- Performing Test LIBOMP_HAVE_M32_FLAG - Failed
-- Looking for shm_open
-- Looking for shm_open - not found
-- Looking for shm_open
-- Looking for shm_open - found
-- Looking for xmmintrin.h
-- Looking for xmmintrin.h - found
-- Performing Test LIBOMP_HAVE__MM_MALLOC
-- Performing Test LIBOMP_HAVE__MM_MALLOC - Success
-- Looking for aligned_alloc
-- Looking for aligned_alloc - found
-- Looking for posix_memalign
-- Looking for posix_memalign - found
-- Looking for _aligned_malloc
-- Looking for _aligned_malloc - not found
-- Performing Test LIBOMP_HAVE_X_FLAG
-- Performing Test LIBOMP_HAVE_X_FLAG - Success
-- Performing Test LIBOMP_HAVE_AS_NEEDED_FLAG
-- Performing Test LIBOMP_HAVE_AS_NEEDED_FLAG - Success
-- Performing Test LIBOMP_HAVE_VERSION_SCRIPT_FLAG
-- Performing Test LIBOMP_HAVE_VERSION_SCRIPT_FLAG - Success
-- Performing Test LIBOMP_HAVE_STATIC_LIBGCC_FLAG
-- Performing Test LIBOMP_HAVE_STATIC_LIBGCC_FLAG - Success
-- Performing Test LIBOMP_HAVE_Z_NOEXECSTACK_FLAG
-- Performing Test LIBOMP_HAVE_Z_NOEXECSTACK_FLAG - Success
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE  
-- Looking for immintrin.h
-- Looking for immintrin.h - found
-- Performing Test LIBOMP_HAVE_ATTRIBUTE_RTM
-- Performing Test LIBOMP_HAVE_ATTRIBUTE_RTM - Success
-- Performing Test LIBOMP_HAVE_ATTRIBUTE_WAITPKG
-- Performing Test LIBOMP_HAVE_ATTRIBUTE_WAITPKG - Success
-- Performing Test LIBOMP_HAVE_WAITPKG_INTRINSICS
-- Performing Test LIBOMP_HAVE_WAITPKG_INTRINSICS - Success
-- Performing Test LIBOMP_HAVE_RTM_INTRINSICS
-- Performing Test LIBOMP_HAVE_RTM_INTRINSICS - Success
-- Found Perl: /usr/bin/perl (found version "5.30.0") 
-- Performing Test LIBOMP_HAVE_VERSION_SYMBOLS
-- Performing Test LIBOMP_HAVE_VERSION_SYMBOLS - Success
-- Performing Test LIBOMP_HAVE___BUILTIN_FRAME_ADDRESS
-- Performing Test LIBOMP_HAVE___BUILTIN_FRAME_ADDRESS - Success
-- Performing Test LIBOMP_HAVE_WEAK_ATTRIBUTE
-- Performing Test LIBOMP_HAVE_WEAK_ATTRIBUTE - Success
-- Performing Test LIBOMP_HAVE_PSAPI
-- Performing Test LIBOMP_HAVE_PSAPI - Failed
-- LIBOMP: Operating System     -- Linux
-- LIBOMP: Target Architecture  -- x86_64
-- LIBOMP: Build Type           -- Release
-- LIBOMP: Library Kind         -- SHARED
-- LIBOMP: Library Type         -- normal
-- LIBOMP: Fortran Modules      -- FALSE
-- LIBOMP: Build                -- 20140926
-- LIBOMP: Use Stats-gathering  -- FALSE
-- LIBOMP: Use Debugger-support -- FALSE
-- LIBOMP: Use ITT notify       -- TRUE
-- LIBOMP: Use OMPT-support     -- TRUE
-- LIBOMP: Use OMPT-optional  -- TRUE
-- LIBOMP: Use OMPD-support     -- TRUE
-- LIBOMP: Use Adaptive locks   -- TRUE
-- LIBOMP: Use quad precision   -- TRUE
-- LIBOMP: Use Hwloc library    -- FALSE
-- LIBOMP: Use OMPX-taskgraph   -- FALSE
-- Looking for sqrt in m
-- Looking for sqrt in m - found
-- Looking for __atomic_load_1
-- Looking for __atomic_load_1 - not found
-- Looking for __atomic_load_1 in atomic
-- Looking for __atomic_load_1 in atomic - found
-- check-libomp does nothing.
-- check-ompt does nothing.
-- Performing Test HAVE_FFI_CALL
-- Performing Test HAVE_FFI_CALL - Success
-- Found FFI: /usr/lib/x86_64-linux-gnu/libffi.so  
-- Could NOT find LibEdit (missing: LibEdit_INCLUDE_DIRS LibEdit_LIBRARIES) 
-- Performing Test Terminfo_LINKABLE
-- Performing Test Terminfo_LINKABLE - Success
-- Found Terminfo: /usr/lib/x86_64-linux-gnu/libtinfo.so  
-- Found ZLIB: /usr/lib/x86_64-linux-gnu/libz.so (found version "1.2.11") 
-- Could NOT find zstd (missing: zstd_LIBRARY zstd_INCLUDE_DIR) 
-- Found LibXml2: /usr/lib/x86_64-linux-gnu/libxml2.so (found version "2.9.14") 
-- Could NOT find CURL (missing: CURL_LIBRARY CURL_INCLUDE_DIR) 
CMake Error at /usr/lib/llvm-19/lib/cmake/llvm/LLVMExports.cmake:37 (message):
  Some (but not all) targets in this export set were already defined.

  Targets Defined: omp

  Targets not yet defined:
  LLVMDemangle;LLVMSupport;LLVMTableGen;LLVMTableGenGlobalISel;LLVMTableGenCommon;llvm-tblgen;LLVMCore;LLVMFuzzerCLI;LLVMFuzzMutate;LLVMFileCheck;LLVMInterfaceStub;LLVMIRPrinter;LLVMIRReader;LLVMCodeGen;LLVMSelectionDAG;LLVMAsmPrinter;LLVMMIRParser;LLVMGlobalISel;LLVMCodeGenTypes;LLVMBinaryFormat;LLVMBitReader;LLVMBitWriter;LLVMBitstreamReader;LLVMDWARFLinker;LLVMDWARFLinkerClassic;LLVMDWARFLinkerParallel;LLVMExtensions;LLVMFrontendDriver;LLVMFrontendHLSL;LLVMFrontendOpenACC;LLVMFrontendOpenMP;LLVMFrontendOffloading;LLVMTransformUtils;LLVMInstrumentation;LLVMAggressiveInstCombine;LLVMInstCombine;LLVMScalarOpts;LLVMipo;LLVMVectorize;LLVMObjCARCOpts;LLVMCoroutines;LLVMCFGuard;LLVMHipStdPar;LLVMLinker;LLVMAnalysis;LLVMLTO;LLVMMC;LLVMMCParser;LLVMMCDisassembler;LLVMMCA;LLVMObjCopy;LLVMObject;LLVMObjectYAML;LLVMOption;LLVMRemarks;LLVMDebuginfod;LLVMDebugInfoDWARF;LLVMDebugInfoGSYM;LLVMDebugInfoLogicalView;LLVMDebugInfoMSF;LLVMDebugInfoCodeView;LLVMDebugInfoPDB;LLVMSymbolize;LLVMDebugInfoBTF;LLVMDWP;LLVMExecutionEngine;LLVMInterpreter;LLVMJITLink;LLVMMCJIT;LLVMOrcJIT;LLVMOrcDebugging;LLVMOrcShared;LLVMOrcTargetProcess;LLVMRuntimeDyld;LLVMPerfJITEvents;LLVMTarget;LLVMAArch64CodeGen;LLVMAArch64AsmParser;LLVMAArch64Disassembler;LLVMAArch64Desc;LLVMAArch64Info;LLVMAArch64Utils;LLVMAMDGPUCodeGen;LLVMAMDGPUAsmParser;LLVMAMDGPUDisassembler;LLVMAMDGPUTargetMCA;LLVMAMDGPUDesc;LLVMAMDGPUInfo;LLVMAMDGPUUtils;LLVMARMCodeGen;LLVMARMAsmParser;LLVMARMDisassembler;LLVMARMDesc;LLVMARMInfo;LLVMARMUtils;LLVMAVRCodeGen;LLVMAVRAsmParser;LLVMAVRDisassembler;LLVMAVRDesc;LLVMAVRInfo;LLVMBPFCodeGen;LLVMBPFAsmParser;LLVMBPFDisassembler;LLVMBPFDesc;LLVMBPFInfo;LLVMHexagonCodeGen;LLVMHexagonAsmParser;LLVMHexagonDisassembler;LLVMHexagonDesc;LLVMHexagonInfo;LLVMLanaiCodeGen;LLVMLanaiAsmParser;LLVMLanaiDisassembler;LLVMLanaiDesc;LLVMLanaiInfo;LLVMLoongArchCodeGen;LLVMLoongArchAsmParser;LLVMLoongArchDisassembler;LLVMLoongArchDesc;LLVMLoongArchInfo;LLVMMipsCodeGen;LLVMMipsAsmParser;LLVMMipsDisassembler;LLVMMipsDesc;LLVMMipsInfo;LLVMMSP430CodeGen;LLVMMSP430Desc;LLVMMSP430Info;LLVMMSP430AsmParser;LLVMMSP430Disassembler;LLVMNVPTXCodeGen;LLVMNVPTXDesc;LLVMNVPTXInfo;LLVMPowerPCCodeGen;LLVMPowerPCAsmParser;LLVMPowerPCDisassembler;LLVMPowerPCDesc;LLVMPowerPCInfo;LLVMRISCVCodeGen;LLVMRISCVAsmParser;LLVMRISCVDisassembler;LLVMRISCVDesc;LLVMRISCVTargetMCA;LLVMRISCVInfo;LLVMSparcCodeGen;LLVMSparcAsmParser;LLVMSparcDisassembler;LLVMSparcDesc;LLVMSparcInfo;LLVMSystemZCodeGen;LLVMSystemZAsmParser;LLVMSystemZDisassembler;LLVMSystemZDesc;LLVMSystemZInfo;LLVMVECodeGen;LLVMVEAsmParser;LLVMVEDisassembler;LLVMVEInfo;LLVMVEDesc;LLVMWebAssemblyCodeGen;LLVMWebAssemblyAsmParser;LLVMWebAssemblyDisassembler;LLVMWebAssemblyDesc;LLVMWebAssemblyInfo;LLVMWebAssemblyUtils;LLVMX86CodeGen;LLVMX86AsmParser;LLVMX86Disassembler;LLVMX86TargetMCA;LLVMX86Desc;LLVMX86Info;LLVMXCoreCodeGen;LLVMXCoreDisassembler;LLVMXCoreDesc;LLVMXCoreInfo;LLVMM68kCodeGen;LLVMM68kInfo;LLVMM68kDesc;LLVMM68kAsmParser;LLVMM68kDisassembler;LLVMXtensaCodeGen;LLVMXtensaAsmParser;LLVMXtensaDisassembler;LLVMXtensaDesc;LLVMXtensaInfo;LLVMAsmParser;LLVMLineEditor;LLVMProfileData;LLVMCoverage;LLVMPasses;LLVMTargetParser;LLVMTextAPI;LLVMTextAPIBinaryReader;LLVMDlltoolDriver;LLVMLibDriver;LLVMXRay;LLVMWindowsDriver;LLVMWindowsManifest;FileCheck;llvm-PerfectShuffle;count;not;UnicodeNameMappingGenerator;yaml-bench;split-file;omptarget.rtl.amdgpu;omptarget.rtl.cuda;omptarget.rtl.x86_64;llvm-omp-device-info;llvm-omp-kernel-replay;omptarget;LTO;LLVMgold;llvm-ar;llvm-config;llvm-lto;llvm-profdata;mlir-linalg-ods-yaml-gen;mlir-lsp-server;mlir-opt;mlir-pdll-lsp-server;mlir-query;mlir-reduce;mlir-translate;tblgen-lsp-server;mlir-cpu-runner;mlir-cat;mlir-minimal-opt;mlir-minimal-opt-canonicalize;LLVMBOLTCore;LLVMBOLTPasses;LLVMBOLTProfile;LLVMBOLTRewrite;LLVMBOLTRuntimeLibs;LLVMBOLTTargetAArch64;LLVMBOLTTargetX86;LLVMBOLTTargetRISCV;LLVMBOLTUtils;bugpoint;dsymutil;llc;lli-child-target;lli;llvm-as;llvm-bcanalyzer;llvm-c-test;llvm-cat;llvm-cfi-verify;LLVMCFIVerify;llvm-cov;llvm-cvtres;llvm-cxxdump;llvm-cxxfilt;llvm-cxxmap;llvm-debuginfo-analyzer;llvm-debuginfod;llvm-debuginfod-find;llvm-diff;LLVMDiff;llvm-dis;llvm-dwarfdump;llvm-dwarfutil;llvm-dwp;llvm-exegesis;LLVMExegesisX86;LLVMExegesisAArch64;LLVMExegesisPowerPC;LLVMExegesisMips;LLVMExegesis;llvm-extract;llvm-gsymutil;llvm-ifs;llvm-jitlink-executor;llvm-jitlink;llvm-libtool-darwin;llvm-link;llvm-lipo;llvm-lto2;llvm-mc;llvm-mca;llvm-ml;llvm-modextract;llvm-mt;llvm-nm;llvm-objcopy;llvm-objdump;llvm-opt-report;llvm-pdbutil;llvm-profgen;llvm-rc;llvm-readobj;llvm-readtapi;llvm-reduce;llvm-remarkutil;llvm-rtdyld;LLVM;llvm-sim;llvm-size;llvm-split;llvm-stress;llvm-strings;llvm-symbolizer;llvm-tli-checker;llvm-undname;llvm-xray;obj2yaml;LLVMOptDriver;opt;Remarks;sancov;sanstats;verify-uselistorder;yaml2obj;PollyISL;Polly;LLVMPolly

Call Stack (most recent call first):
  /usr/lib/llvm-19/cmake/LLVMConfig.cmake:376 (include)
  libomptarget/cmake/Modules/LibomptargetGetDependencies.cmake:27 (find_package)
  libomptarget/CMakeLists.txt:37 (include)

-- Configuring incomplete, errors occurred!
See also "/home/a0000069/git/llvm-project/openmp/build/CMakeFiles/CMakeOutput.log".
See also "/home/a0000069/git/llvm-project/openmp/build/CMakeFiles/CMakeError.log".
shiltian commented 7 months ago

I suppose you have a libomp.so in /usr/lib/llvm-19/lib/.

carlosgalvezp commented 7 months ago

No, I do not. Installing libomp5-19 brings me the library to that location but the problem persists.

shiltian commented 7 months ago

Can you check if there is any omp in /usr/lib/llvm-19/cmake/LLVMConfig.cmake? If yes, that means that LLVM is messed up somehow in a way that its build contains OpenMP but somehow the OpenMP library was removed.

carlosgalvezp commented 7 months ago

Here's the output from grep:

$ grep omp /usr/lib/llvm-19/cmake/LLVMConfig.cmake
# Compute the installation prefix from this LLVMConfig.cmake file location.
get_filename_component(LLVM_INSTALL_PREFIX "${CMAKE_CURRENT_LIST_FILE}" REALPATH)
get_filename_component(LLVM_INSTALL_PREFIX "${LLVM_INSTALL_PREFIX}" PATH)
get_filename_component(LLVM_INSTALL_PREFIX "${LLVM_INSTALL_PREFIX}" PATH)
get_filename_component(LLVM_INSTALL_PREFIX "${LLVM_INSTALL_PREFIX}" PATH)
get_filename_component(LLVM_INSTALL_PREFIX "${LLVM_INSTALL_PREFIX}" PATH)
set(LLVM_AVAILABLE_LIBS LLVMDemangle;LLVMSupport;LLVMTableGen;LLVMTableGenGlobalISel;LLVMTableGenCommon;LLVMCore;LLVMFuzzerCLI;LLVMFuzzMutate;LLVMFileCheck;LLVMInterfaceStub;LLVMIRPrinter;LLVMIRReader;LLVMCodeGen;LLVMSelectionDAG;LLVMAsmPrinter;LLVMMIRParser;LLVMGlobalISel;LLVMCodeGenTypes;LLVMBinaryFormat;LLVMBitReader;LLVMBitWriter;LLVMBitstreamReader;LLVMDWARFLinker;LLVMDWARFLinkerClassic;LLVMDWARFLinkerParallel;LLVMExtensions;LLVMFrontendDriver;LLVMFrontendHLSL;LLVMFrontendOpenACC;LLVMFrontendOpenMP;LLVMFrontendOffloading;LLVMTransformUtils;LLVMInstrumentation;LLVMAggressiveInstCombine;LLVMInstCombine;LLVMScalarOpts;LLVMipo;LLVMVectorize;LLVMObjCARCOpts;LLVMCoroutines;LLVMCFGuard;LLVMHipStdPar;LLVMLinker;LLVMAnalysis;LLVMLTO;LLVMMC;LLVMMCParser;LLVMMCDisassembler;LLVMMCA;LLVMObjCopy;LLVMObject;LLVMObjectYAML;LLVMOption;LLVMRemarks;LLVMDebuginfod;LLVMDebugInfoDWARF;LLVMDebugInfoGSYM;LLVMDebugInfoLogicalView;LLVMDebugInfoMSF;LLVMDebugInfoCodeView;LLVMDebugInfoPDB;LLVMSymbolize;LLVMDebugInfoBTF;LLVMDWP;LLVMExecutionEngine;LLVMInterpreter;LLVMJITLink;LLVMMCJIT;LLVMOrcJIT;LLVMOrcDebugging;LLVMOrcShared;LLVMOrcTargetProcess;LLVMRuntimeDyld;LLVMPerfJITEvents;LLVMTarget;LLVMAArch64CodeGen;LLVMAArch64AsmParser;LLVMAArch64Disassembler;LLVMAArch64Desc;LLVMAArch64Info;LLVMAArch64Utils;LLVMAMDGPUCodeGen;LLVMAMDGPUAsmParser;LLVMAMDGPUDisassembler;LLVMAMDGPUTargetMCA;LLVMAMDGPUDesc;LLVMAMDGPUInfo;LLVMAMDGPUUtils;LLVMARMCodeGen;LLVMARMAsmParser;LLVMARMDisassembler;LLVMARMDesc;LLVMARMInfo;LLVMARMUtils;LLVMAVRCodeGen;LLVMAVRAsmParser;LLVMAVRDisassembler;LLVMAVRDesc;LLVMAVRInfo;LLVMBPFCodeGen;LLVMBPFAsmParser;LLVMBPFDisassembler;LLVMBPFDesc;LLVMBPFInfo;LLVMHexagonCodeGen;LLVMHexagonAsmParser;LLVMHexagonDisassembler;LLVMHexagonDesc;LLVMHexagonInfo;LLVMLanaiCodeGen;LLVMLanaiAsmParser;LLVMLanaiDisassembler;LLVMLanaiDesc;LLVMLanaiInfo;LLVMLoongArchCodeGen;LLVMLoongArchAsmParser;LLVMLoongArchDisassembler;LLVMLoongArchDesc;LLVMLoongArchInfo;LLVMMipsCodeGen;LLVMMipsAsmParser;LLVMMipsDisassembler;LLVMMipsDesc;LLVMMipsInfo;LLVMMSP430CodeGen;LLVMMSP430Desc;LLVMMSP430Info;LLVMMSP430AsmParser;LLVMMSP430Disassembler;LLVMNVPTXCodeGen;LLVMNVPTXDesc;LLVMNVPTXInfo;LLVMPowerPCCodeGen;LLVMPowerPCAsmParser;LLVMPowerPCDisassembler;LLVMPowerPCDesc;LLVMPowerPCInfo;LLVMRISCVCodeGen;LLVMRISCVAsmParser;LLVMRISCVDisassembler;LLVMRISCVDesc;LLVMRISCVTargetMCA;LLVMRISCVInfo;LLVMSparcCodeGen;LLVMSparcAsmParser;LLVMSparcDisassembler;LLVMSparcDesc;LLVMSparcInfo;LLVMSystemZCodeGen;LLVMSystemZAsmParser;LLVMSystemZDisassembler;LLVMSystemZDesc;LLVMSystemZInfo;LLVMVECodeGen;LLVMVEAsmParser;LLVMVEDisassembler;LLVMVEInfo;LLVMVEDesc;LLVMWebAssemblyCodeGen;LLVMWebAssemblyAsmParser;LLVMWebAssemblyDisassembler;LLVMWebAssemblyDesc;LLVMWebAssemblyInfo;LLVMWebAssemblyUtils;LLVMX86CodeGen;LLVMX86AsmParser;LLVMX86Disassembler;LLVMX86TargetMCA;LLVMX86Desc;LLVMX86Info;LLVMXCoreCodeGen;LLVMXCoreDisassembler;LLVMXCoreDesc;LLVMXCoreInfo;LLVMM68kCodeGen;LLVMM68kInfo;LLVMM68kDesc;LLVMM68kAsmParser;LLVMM68kDisassembler;LLVMXtensaCodeGen;LLVMXtensaAsmParser;LLVMXtensaDisassembler;LLVMXtensaDesc;LLVMXtensaInfo;LLVMAsmParser;LLVMLineEditor;LLVMProfileData;LLVMCoverage;LLVMPasses;LLVMTargetParser;LLVMTextAPI;LLVMTextAPIBinaryReader;LLVMDlltoolDriver;LLVMLibDriver;LLVMXRay;LLVMWindowsDriver;LLVMWindowsManifest;omptarget.rtl.amdgpu;omptarget.rtl.cuda;omptarget.rtl.x86_64;omptarget;LTO;LLVMBOLTCore;LLVMBOLTPasses;LLVMBOLTProfile;LLVMBOLTRewrite;LLVMBOLTRuntimeLibs;LLVMBOLTTargetAArch64;LLVMBOLTTargetX86;LLVMBOLTTargetRISCV;LLVMBOLTUtils;LLVMCFIVerify;LLVMDiff;LLVMExegesisX86;LLVMExegesisAArch64;LLVMExegesisPowerPC;LLVMExegesisMips;LLVMExegesis;LLVM;LLVMOptDriver;Remarks;Polly)
set_property(GLOBAL PROPERTY LLVMBUILD_LIB_DEPS_omptarget.rtl.amdgpu )
set_property(GLOBAL PROPERTY LLVMBUILD_LIB_DEPS_omptarget.rtl.cuda )
set_property(GLOBAL PROPERTY LLVMBUILD_LIB_DEPS_omptarget.rtl.x86_64 )
set_property(GLOBAL PROPERTY LLVMBUILD_LIB_DEPS_omptarget )
if(NOT TARGET omp_gen)
  add_custom_target(omp_gen)
shiltian commented 7 months ago

Yeah, definitely messed up. Not sure how the LLVM was built by the package manager. Anyway, that is the cause of the issue because we import all targets from the LLVM. If that LLVM already has omp, it will collide with the new one.

A workaround would be, build an LLVM manually w/o OpenMP, and use that LLVM to build OpenMP. When building OpenMP, set LLVM_ROOT to the manual build.

I'm not sure how other projects handle this or they simply drop the support for standalone build.

carlosgalvezp commented 7 months ago

Not sure how the LLVM was built by the package manager.

I believe @sylvestre might be able to provide more info about this?

carlosgalvezp commented 7 months ago

Personally I'm fine with building OpenMP directly from the root of llvm-project via ENABLE_PROJECTS. Would that be an easier solution, i.e. replace the instructions to build OpenMP out-of-tree with in-tree?

shiltian commented 7 months ago

If you don't use target offloading, that would be totally fine.

Sh0g0-1758 commented 7 months ago

perhaps this can help :

mkdir build && cd build cmake ../llvm -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${PREFIX} -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DLLVM_CCACHE_BUILD=ON -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;compiler-rt;lld" -DLLVM_ENABLE_RUNTIMES="openmp;libunwind" -DLIBOMPTARGET_DEVICE_ARCHITECTURES=sm_89 -DLLVM_TARGETS_TO_BUILD="X86;AMDGPU;NVPTX" -DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_OPTIMIZED_TABLEGEN=ON -G Ninja ninja install

I have been struggling with the same problem but the above solved it. credits to jdoefert