diff --git a/recipes/llvm-openmp/all/cmake/conan-llvm-openmp-vars.cmake.in b/recipes/llvm-openmp/all/cmake/conan-llvm-openmp-vars.cmake.in new file mode 100644 index 0000000000000..a563629ae8506 --- /dev/null +++ b/recipes/llvm-openmp/all/cmake/conan-llvm-openmp-vars.cmake.in @@ -0,0 +1,158 @@ +# Reproduces the output of https://github.com/Kitware/CMake/blob/v3.28.1/Modules/FindOpenMP.cmake + +# For Conan v1 compatibility +foreach(_suffix RELEASE DEBUG RELWITHDEBINFO MINSIZEREL) + if(DEFINED OpenMP_OpenMP_INCLUDE_DIRS_${_suffix}) + set(_v1_suffix _${_suffix}) + endif() +endforeach() + +set(OpenMP_C_FLAGS "@OpenMP_FLAGS@") +set(OpenMP_C_INCLUDE_DIR "${OpenMP_INCLUDE_DIR${_v1_suffix}}") +set(OpenMP_C_INCLUDE_DIRS "${OpenMP_INCLUDE_DIRS${_v1_suffix}}") +set(OpenMP_C_LIB_NAMES "@OpenMP_LIB_NAMES@") +set(OpenMP_C_LIBRARIES "${OpenMP_LIBRARIES${_v1_suffix}}") +set(OpenMP_C_DEFINITIONS "${OpenMP_DEFINITIONS${_v1_suffix}}") + +set(OpenMP_CXX_FLAGS "${OpenMP_C_FLAGS}") +set(OpenMP_CXX_INCLUDE_DIR "${OpenMP_C_INCLUDE_DIR}") +set(OpenMP_CXX_INCLUDE_DIRS "${OpenMP_C_INCLUDE_DIRS}") +set(OpenMP_CXX_LIB_NAMES "${OpenMP_C_LIB_NAMES}") +set(OpenMP_CXX_LIBRARIES "${OpenMP_C_LIBRARIES}") +set(OpenMP_CXX_DEFINITIONS "${OpenMP_C_DEFINITIONS}") + +set(OpenMP_omp_LIBRARY "${OpenMP_C_LIBRARIES}") + +# Determine OpenMP specification date and version supported by the compiler. +function(_openmp_get_compiler_spec_date) + set(BUILD_DIR "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/FindOpenMP") + set(SRC_FILE "${BUILD_DIR}/ompver.c") + if(NOT CMAKE_C_COMPILER_LOADED) + set(SRC_FILE "${BUILD_DIR}/ompver.cpp") + endif() + set(BIN_FILE "${BUILD_DIR}/ompver.bin") + file(WRITE "${SRC_FILE}" " + #include + const char ompver_str[] = { 'I', 'N', 'F', 'O', ':', 'O', 'p', 'e', 'n', 'M', + 'P', '-', 'd', 'a', 't', 'e', '[', + ('0' + ((_OPENMP/100000)%10)), + ('0' + ((_OPENMP/10000)%10)), + ('0' + ((_OPENMP/1000)%10)), + ('0' + ((_OPENMP/100)%10)), + ('0' + ((_OPENMP/10)%10)), + ('0' + ((_OPENMP/1)%10)), + ']', '\\0' }; + int main(void) + { + puts(ompver_str); + return 0; + } + ") + try_compile(OpenMP_SPECTEST ${BUILD_DIR} + SOURCES "${SRC_FILE}" + COMPILE_DEFINITIONS "${OpenMP_C_FLAGS}" + CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:STRING=${OpenMP_C_INCLUDE_DIR}" + COPY_FILE "${BIN_FILE}" + ) + if(NOT OpenMP_SPECTEST) + if(OpenMP_FIND_REQUIRED) + message(FATAL_ERROR "Failed to build OpenMP test executable for specification date detection") + elseif(NOT OpenMP_FIND_QUIETLY) + message(SEND_ERROR "Failed to build OpenMP test executable for specification date detection") + endif() + return() + endif() + file(STRINGS ${BIN_FILE} specstr LIMIT_COUNT 1 REGEX "INFO:OpenMP-date") + if(specstr MATCHES ".*INFO:OpenMP-date\\[0*([^]]*)\\].*") + set(OpenMP_SPEC_DATE ${CMAKE_MATCH_1} PARENT_SCOPE) + else() + if(OpenMP_FIND_REQUIRED) + message(FATAL_ERROR "Failed to detect OpenMP specification date") + elseif(NOT OpenMP_FIND_QUIETLY) + message(SEND_ERROR "Failed to detect OpenMP specification date") + endif() + return() + endif() +endfunction() + +function(_openmp_set_version_by_spec_date) + set(OpenMP_SPEC_DATE_MAP + "202111=5.2" + "202011=5.1" + # Preview versions + "201611=5.0" # OpenMP 5.0 preview 1 + # Combined versions, 2.5 onwards + "201811=5.0" + "201611=5.0" + "201511=4.5" + "201307=4.0" + "201107=3.1" + "200805=3.0" + "200505=2.5" + # C/C++ version 2.0 + "200203=2.0" + # Fortran version 2.0 + "200011=2.0" + # Fortran version 1.1 + "199911=1.1" + # C/C++ version 1.0 (there's no 1.1 for C/C++) + "199810=1.0" + # Fortran version 1.0 + "199710=1.0" + ) + if(OpenMP_SPEC_DATE_MAP MATCHES "${OpenMP_SPEC_DATE}=([0-9]+)\\.([0-9]+)") + set(major "${CMAKE_MATCH_1}") + set(minor "${CMAKE_MATCH_2}") + else() + if(OpenMP_FIND_REQUIRED) + message(FATAL_ERROR "Failed to detect OpenMP specification version") + elseif(NOT OpenMP_FIND_QUIETLY) + message(SEND_ERROR "Failed to detect OpenMP specification version") + endif() + return() + endif() + set(OpenMP_VERSION_MAJOR "${major}" PARENT_SCOPE) + set(OpenMP_VERSION_MINOR "${minor}" PARENT_SCOPE) + set(OpenMP_VERSION "${major}.${minor}" PARENT_SCOPE) +endfunction() + +# Compare the OpenMP API version supported by the compiler to +# the version supported by the LLVM OMP runtime and use the lower of the two. +# Note that this differs slightly from the CMake's FindOpenMP.cmake implementation, +# which checks only the version supported by the compiler. +_openmp_get_compiler_spec_date() +if(OpenMP_SPEC_DATE GREATER @OpenMP_SPEC_DATE@) + set(OpenMP_SPEC_DATE @OpenMP_SPEC_DATE@) + set(OpenMP_VERSION_MAJOR @OpenMP_VERSION_MAJOR@) + set(OpenMP_VERSION_MINOR @OpenMP_VERSION_MINOR@) + set(OpenMP_VERSION @OpenMP_VERSION@) +else() + _openmp_set_version_by_spec_date() +endif() + +foreach(_lang C CXX) + set(OpenMP_${_lang}_FOUND TRUE) + set(OpenMP_${_lang}_SPEC_DATE "${OpenMP_SPEC_DATE}") + set(OpenMP_${_lang}_VERSION_MAJOR "${OpenMP_VERSION_MAJOR}") + set(OpenMP_${_lang}_VERSION_MINOR "${OpenMP_VERSION_MINOR}") + set(OpenMP_${_lang}_VERSION "${OpenMP_VERSION}") +endforeach() + +# Check specification version against the requested min version, validate components +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(OpenMP + VERSION_VAR OpenMP_VERSION + REQUIRED_VARS + OpenMP_C_FLAGS + OpenMP_C_LIB_NAMES + OpenMP_C_SPEC_DATE + OpenMP_C_VERSION + OpenMP_CXX_FLAGS + OpenMP_CXX_LIB_NAMES + OpenMP_CXX_SPEC_DATE + OpenMP_CXX_VERSION + HANDLE_COMPONENTS +) +set(OPENMP_FOUND ${OpenMP_FOUND}) +set(OpenMP_C_FOUND ${OpenMP_FOUND}) +set(OpenMP_CXX_FOUND ${OpenMP_FOUND}) diff --git a/recipes/llvm-openmp/all/conandata.yml b/recipes/llvm-openmp/all/conandata.yml index cb5f1104f3fc9..8bd5a66437442 100644 --- a/recipes/llvm-openmp/all/conandata.yml +++ b/recipes/llvm-openmp/all/conandata.yml @@ -1,4 +1,11 @@ sources: + "18.1.8": + openmp: + url: "https://github.com/llvm/llvm-project/releases/download/llvmorg-18.1.8/openmp-18.1.8.src.tar.xz" + sha256: "60ed57245e73894e4a2a89b15889f367bd906abfe6d3f92e1718223d4b496150" + cmake: + url: "https://github.com/llvm/llvm-project/releases/download/llvmorg-18.1.8/cmake-18.1.8.src.tar.xz" + sha256: "59badef592dd34893cd319d42b323aaa990b452d05c7180ff20f23ab1b41e837" "17.0.6": openmp: url: "https://github.com/llvm/llvm-project/releases/download/llvmorg-17.0.6/openmp-17.0.6.src.tar.xz" @@ -39,56 +46,8 @@ sources: "11.1.0": url: "https://github.com/llvm/llvm-project/releases/download/llvmorg-11.1.0/openmp-11.1.0.src.tar.xz" sha256: "d187483b75b39acb3ff8ea1b7d98524d95322e3cb148842957e9b0fbb866052e" - "10.0.0": - url: "https://github.com/llvm/llvm-project/releases/download/llvmorg-10.0.0/openmp-10.0.0.src.tar.xz" - sha256: "3b9ff29a45d0509a1e9667a0feb43538ef402ea8cfc7df3758a01f20df08adfa" - "9.0.1": - url: "https://github.com/llvm/llvm-project/releases/download/llvmorg-9.0.1/openmp-9.0.1.src.tar.xz" - sha256: "5c94060f846f965698574d9ce22975c0e9f04c9b14088c3af5f03870af75cace" - "8.0.1": - url: "https://github.com/llvm/llvm-project/releases/download/llvmorg-8.0.1/openmp-8.0.1.src.tar.xz" - sha256: "3e85dd3cad41117b7c89a41de72f2e6aa756ea7b4ef63bb10dcddf8561a7722c" patches: - "17.0.4": - - patch_file: "patches/17/0001-disable-build-testing.patch" - patch_description: "Disable building of tools, gdb-plugin, tests and docs" - patch_type: "conan" - "16.0.6": - - patch_file: "patches/16/0001-disable-build-testing.patch" - patch_description: "Disable building of tools, gdb-plugin, tests and docs" - patch_type: "conan" - "15.0.7": - - patch_file: "patches/15/0001-disable-build-testing.patch" - patch_description: "Disable building of tools, gdb-plugin, tests and docs" - patch_type: "conan" - "14.0.6": - - patch_file: "patches/14/0001-disable-build-testing.patch" - patch_description: "Disable building of tools, gdb-plugin, tests and docs" - patch_type: "conan" - "13.0.1": - - patch_file: "patches/13/0001-disable-build-testing.patch" - patch_description: "Disable building of tools, gdb-plugin, tests and docs" - patch_type: "conan" - "12.0.1": - - patch_file: "patches/12/0001-disable-build-testing.patch" - patch_description: "Disable building of tools, gdb-plugin, tests and docs" - patch_type: "conan" "11.1.0": - - patch_file: "patches/11/0001-disable-build-testing.patch" - patch_description: "Disable building of tools, gdb-plugin, tests and docs" - patch_type: "conan" - patch_file: "patches/11/0002-fix-armv8-build.patch" patch_description: "Fix build issues on armv8 architecture" patch_type: "portability" - "10.0.0": - - patch_file: "patches/10/0001-disable-build-testing.patch" - patch_description: "Disable building of tools, gdb-plugin, tests and docs" - patch_type: "conan" - "9.0.1": - - patch_file: "patches/8/0001-disable-build-testing.patch" - patch_description: "Disable building of tools, gdb-plugin, tests and docs" - patch_type: "conan" - "8.0.1": - - patch_file: "patches/8/0001-disable-build-testing.patch" - patch_description: "Disable building of tools, gdb-plugin, tests and docs" - patch_type: "conan" diff --git a/recipes/llvm-openmp/all/conanfile.py b/recipes/llvm-openmp/all/conanfile.py index a885645ea3471..6ebb088d900ca 100644 --- a/recipes/llvm-openmp/all/conanfile.py +++ b/recipes/llvm-openmp/all/conanfile.py @@ -1,13 +1,14 @@ import os +import re import textwrap from conan import ConanFile -from conan.errors import ConanInvalidConfiguration +from conan.errors import ConanInvalidConfiguration, ConanException from conan.tools.apple import is_apple_os from conan.tools.build import check_min_cppstd from conan.tools.cmake import CMake, CMakeToolchain, cmake_layout from conan.tools.env import VirtualBuildEnv -from conan.tools.files import apply_conandata_patches, copy, export_conandata_patches, get, replace_in_file, save, move_folder_contents, rmdir +from conan.tools.files import apply_conandata_patches, copy, export_conandata_patches, get, replace_in_file, move_folder_contents, rmdir, load, save from conan.tools.microsoft import is_msvc from conan.tools.scm import Version @@ -16,12 +17,9 @@ class LLVMOpenMpConan(ConanFile): name = "llvm-openmp" - description = ("The OpenMP (Open Multi-Processing) specification " - "is a standard for a set of compiler directives, " - "library routines, and environment variables that " - "can be used to specify shared memory parallelism " - "in Fortran and C/C++ programs. This is the LLVM " - "implementation.") + description = ("The OpenMP (Open Multi-Processing) specification is a standard for a set of compiler directives, " + "library routines, and environment variables that can be used to specify shared memory parallelism " + "in Fortran and C/C++ programs. This is the LLVM implementation.") license = "Apache-2.0 WITH LLVM-exception" url = "https://github.com/conan-io/conan-center-index" homepage = "https://github.com/llvm/llvm-project/blob/main/openmp" @@ -60,45 +58,57 @@ def _version_major(self): def export_sources(self): export_conandata_patches(self) + copy(self, "*.cmake.in", self.recipe_folder, self.export_sources_folder) def config_options(self): if self.settings.os == "Windows": del self.options.fPIC + if is_apple_os(self) or self.settings.os == "Windows": + del self.options.build_libomptarget def configure(self): if self.options.shared: self.options.rm_safe("fPIC") - - def requirements(self): - if self.options.build_libomptarget and self._version_major >= 13: - self.requires(f"llvm-core/{self.version}") + if self.settings.os == "Windows": + del self.options.shared + self.package_type = "shared-library" def layout(self): cmake_layout(self, src_folder="src") + def requirements(self): + if self.options.get_safe("build_libomptarget") and self._version_major >= 13: + self.requires(f"llvm-core/{self.version}") + def validate(self): - if is_msvc(self): - raise ConanInvalidConfiguration("llvm-openmp is not compatible with MSVC") - if self.settings.compiler not in ["apple-clang", "clang", "gcc", "intel-cc"]: + if self.settings.os == "Windows": + if self._version_major < 17: + # fatal error LNK1181: cannot open input file 'build\runtime\src\omp.dll.lib' + raise ConanInvalidConfiguration(f"{self.ref} build is broken on MSVC for versions < 17") + + if not self._openmp_flags: raise ConanInvalidConfiguration( f"{self.settings.compiler} is not supported by this recipe. Contributions are welcome!" ) + if self._version_major >= 17: if self.settings.compiler.cppstd: check_min_cppstd(self, 17) minimum_version = self._compilers_minimum_version.get(str(self.settings.compiler), False) if minimum_version and Version(self.settings.compiler.version) < minimum_version: raise ConanInvalidConfiguration(f"{self.ref} requires C++17, which your compiler does not support.") + if is_apple_os(self) and self.settings.arch == "armv8": - if self._version_major <= 10: - raise ConanInvalidConfiguration("ARM v8 not supported") - if self._version_major != 11 and self.settings.build_type == "Debug": + if self._version_major >= 12 and self.settings.build_type == "Debug": # All versions except for v11 crash with a segfault for the simple test_package.cpp test + # Might be related to https://github.com/llvm/llvm-project/issues/49923 raise ConanInvalidConfiguration("Debug mode not supported for ARM v8") def build_requirements(self): if self._version_major >= 17: self.tool_requires("cmake/[>=3.20 <4]") + if is_msvc(self): + self.tool_requires("strawberryperl/5.32.1.1") def source(self): if self._version_major >= 15: @@ -122,20 +132,41 @@ def generate(self): env.generate() tc = CMakeToolchain(self) tc.variables["OPENMP_STANDALONE_BUILD"] = True - tc.variables["LIBOMP_ENABLE_SHARED"] = self.options.shared - tc.variables["OPENMP_ENABLE_LIBOMPTARGET"] = self.options.build_libomptarget - # Do not buidl OpenMP Tools Interface (OMPT) + tc.variables["LIBOMP_ENABLE_SHARED"] = self.options.get_safe("shared", True) + tc.variables["OPENMP_ENABLE_LIBOMPTARGET"] = self.options.get_safe("build_libomptarget", False) + # Do not build OpenMP Tools Interface (OMPT) tc.variables["LIBOMP_OMPT_SUPPORT"] = False + # Should not be needed and causes the library to be copied on Windows due to lack of symlink support + tc.variables["LIBOMP_INSTALL_ALIASES"] = False + # The library file incorrectly includes a "lib" prefix on Windows otherwise + if self.settings.os == "Windows": + tc.variables["LIBOMP_LIB_NAME"] = "omp" tc.generate() def _patch_sources(self): apply_conandata_patches(self) + if self._version_major < 17: + # Fix CMake version and policies not being propagated in linker tests + replace_in_file(self, os.path.join(self.source_folder, "runtime", "cmake", "LibompCheckLinkerFlag.cmake"), + "cmake_minimum_required(", + "cmake_minimum_required(VERSION 3.15) #") + # Ensure sufficient CMake policy version is used for tc.variables + replace_in_file(self, os.path.join(self.source_folder, "CMakeLists.txt"), + "cmake_minimum_required(", + "cmake_minimum_required(VERSION 3.15) #") + # Disable tests replace_in_file(self, os.path.join(self.source_folder, "runtime", "CMakeLists.txt"), "add_subdirectory(test)", "") + # v12 can be built without LLVM includes if self._version_major == 12: - # v12 can be built without LLVM includes replace_in_file(self, os.path.join(self.source_folder, "libomptarget", "CMakeLists.txt"), "if (NOT LIBOMPTARGET_LLVM_INCLUDE_DIRS)", "if (FALSE)") + # TODO: looks like a bug, should ask upstream + # The built import lib is named "libomp.dll.lib" otherwise, which also causes install() to fail + if self._version_major >= 14: + replace_in_file(self, os.path.join(self.source_folder, "runtime", "src", "CMakeLists.txt"), + "set(LIBOMP_GENERATED_IMP_LIB_FILENAME ${LIBOMP_LIB_FILE}${CMAKE_STATIC_LIBRARY_SUFFIX})", + "set(LIBOMP_GENERATED_IMP_LIB_FILENAME ${LIBOMP_LIB_NAME}${CMAKE_STATIC_LIBRARY_SUFFIX})") def build(self): self._patch_sources() @@ -143,17 +174,71 @@ def build(self): cmake.configure() cmake.build() + @property + def _module_file_rel_path(self): + return os.path.join("lib", "cmake", "openmp", "conan-llvm-openmp-vars.cmake") + + @property + def _conan1_targets_module_file_rel_path(self): + return os.path.join("lib", "cmake", "openmp", f"conan-official-{self.name}-targets.cmake") + + @property + def _openmp_flags(self): + # Based on https://github.com/Kitware/CMake/blob/v3.28.1/Modules/FindOpenMP.cmake#L104-L135 + if self.settings.compiler == "clang": + return ["-fopenmp=libomp"] + elif self.settings.compiler == "apple-clang": + return ["-Xclang", "-fopenmp"] + elif self.settings.compiler == "gcc": + return ["-fopenmp"] + elif self.settings.compiler == "intel-cc": + return ["-Qopenmp"] + elif self.settings.compiler == "sun-cc": + return ["-xopenmp"] + elif is_msvc(self): + return ["-openmp:llvm"] + return None + + @property + def _system_libs(self): + if self.settings.os in ["Linux", "FreeBSD"]: + return ["m", "dl", "pthread", "rt"] + if self.settings.os == "Windows": + return ["psapi"] + return [] + + @property + def _omp_runtime_version(self): + # llvm-openmp has hardcoded its OMP runtime version since v9 + # https://github.com/llvm/llvm-project/commit/e4b4f994d2f6a090694276b40d433dc1a58beb24 + cmake_content = load(self, os.path.join(self.source_folder, "runtime", "CMakeLists.txt")) + year_date = re.search(r"set\(LIBOMP_OMP_YEAR_MONTH (\d{6})\)", cmake_content).group(1) + if year_date != "201611": + raise ConanException(f"Unexpected LIBOMP_OMP_YEAR_MONTH value: {year_date}") + return "5.0", "201611" + + def _write_cmake_module(self): + omp_version, omp_spec_date = self._omp_runtime_version + cmake_module = load(self, os.path.join(self.export_sources_folder, "cmake", "conan-llvm-openmp-vars.cmake.in")) + cmake_module = cmake_module.replace("@OpenMP_FLAGS@", " ".join(self._openmp_flags)) + cmake_module = cmake_module.replace("@OpenMP_LIB_NAMES@", ";".join(["omp"] + self._system_libs)) + cmake_module = cmake_module.replace("@OpenMP_SPEC_DATE@", omp_spec_date) + cmake_module = cmake_module.replace("@OpenMP_VERSION_MAJOR@", str(Version(omp_version).major)) + cmake_module = cmake_module.replace("@OpenMP_VERSION_MINOR@", str(Version(omp_version).minor)) + cmake_module = cmake_module.replace("@OpenMP_VERSION@", omp_version) + save(self, os.path.join(self.package_folder, self._module_file_rel_path), cmake_module) + def package(self): - copy(self, "LICENSE.txt", - src=self.source_folder, - dst=os.path.join(self.package_folder, "licenses")) + copy(self, "LICENSE.txt", self.source_folder, os.path.join(self.package_folder, "licenses")) cmake = CMake(self) cmake.install() rmdir(self, os.path.join(self.package_folder, "lib", "cmake")) + self._write_cmake_module() + # TODO: to remove in conan v2 once cmake_find_package* generators removed self._create_cmake_module_alias_targets( - os.path.join(self.package_folder, self._module_file_rel_path), + os.path.join(self.package_folder, self._conan1_targets_module_file_rel_path), { "OpenMP::OpenMP_C": "OpenMP::OpenMP", "OpenMP::OpenMP_CXX": "OpenMP::OpenMP", @@ -171,29 +256,27 @@ def _create_cmake_module_alias_targets(self, module_file, targets): """) save(self, module_file, content) - @property - def _module_file_rel_path(self): - return os.path.join("lib", "cmake", f"conan-official-{self.name}-targets.cmake") - def package_info(self): + # Match FindOpenMP.cmake module provided by CMake + self.cpp_info.set_property("cmake_find_mode", "both") self.cpp_info.set_property("cmake_file_name", "OpenMP") - self.cpp_info.set_property("cmake_target_name", "OpenMP::OpenMP") - self.cpp_info.set_property("cmake_target_aliases", ["OpenMP::OpenMP_C", "OpenMP::OpenMP_CXX"]) - if self.settings.compiler in ("clang", "apple-clang"): - self.cpp_info.cxxflags = ["-Xpreprocessor", "-fopenmp"] - elif self.settings.compiler == "gcc": - self.cpp_info.cxxflags = ["-fopenmp"] - elif self.settings.compiler == "intel-cc": - self.cpp_info.cxxflags = ["/Qopenmp"] if self.settings.os == "Windows" else ["-Qopenmp"] - self.cpp_info.cflags = self.cpp_info.cxxflags - self.cpp_info.libs = ["omp"] - if self.settings.os in ["Linux", "FreeBSD"]: - self.cpp_info.system_libs = ["dl", "m", "pthread", "rt"] + omp = self.cpp_info.components["omp"] + omp.set_property("cmake_target_name", "OpenMP::OpenMP") + omp.set_property("cmake_target_aliases", ["OpenMP::OpenMP_C", "OpenMP::OpenMP_CXX"]) + omp.libs = ["omp"] + omp.system_libs = self._system_libs + omp.cflags = self._openmp_flags + omp.cxxflags = self._openmp_flags + + omp.builddirs.append(os.path.join(self.package_folder, "lib", "cmake", "openmp")) + self.cpp_info.set_property("cmake_build_modules", [self._module_file_rel_path]) # TODO: to remove in conan v2 once cmake_find_package* generators removed self.cpp_info.names["cmake_find_package"] = "OpenMP" self.cpp_info.names["cmake_find_package_multi"] = "OpenMP" - self.cpp_info.builddirs.append(os.path.join(self.package_folder, "lib", "cmake")) - self.cpp_info.build_modules["cmake_find_package"] = [self._module_file_rel_path] - self.cpp_info.build_modules["cmake_find_package_multi"] = [self._module_file_rel_path] + omp.names["cmake_find_package"] = "OpenMP" + omp.names["cmake_find_package_multi"] = "OpenMP" + omp.builddirs.append(os.path.join(self.package_folder, "lib", "cmake")) + omp.build_modules["cmake_find_package"] = [self._module_file_rel_path, self._conan1_targets_module_file_rel_path] + omp.build_modules["cmake_find_package_multi"] = [self._module_file_rel_path, self._conan1_targets_module_file_rel_path] diff --git a/recipes/llvm-openmp/all/patches/10/0001-disable-build-testing.patch b/recipes/llvm-openmp/all/patches/10/0001-disable-build-testing.patch deleted file mode 100644 index 65692e0ed9c15..0000000000000 --- a/recipes/llvm-openmp/all/patches/10/0001-disable-build-testing.patch +++ /dev/null @@ -1,35 +0,0 @@ ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -45,14 +39,6 @@ endif() - include(config-ix) - include(HandleOpenMPOptions) - --# Set up testing infrastructure. --include(OpenMPTesting) -- --set(OPENMP_TEST_FLAGS "" CACHE STRING -- "Extra compiler flags to send to the test compiler.") --set(OPENMP_TEST_OPENMP_FLAGS ${OPENMP_TEST_COMPILER_OPENMP_FLAGS} CACHE STRING -- "OpenMP compiler flag to use for testing OpenMP runtime libraries.") -- - - # Build host runtime library. - add_subdirectory(runtime) -@@ -79,17 +65,3 @@ if (OPENMP_ENABLE_LIBOMPTARGET) - add_subdirectory(libomptarget) - endif() - --set(ENABLE_OMPT_TOOLS ON) --# Currently tools are not tested well on Windows or MacOS X. --if (APPLE OR WIN32) -- set(ENABLE_OMPT_TOOLS OFF) --endif() -- --option(OPENMP_ENABLE_OMPT_TOOLS "Enable building ompt based tools for OpenMP." -- ${ENABLE_OMPT_TOOLS}) --if (OPENMP_ENABLE_OMPT_TOOLS) -- add_subdirectory(tools) --endif() -- --# Now that we have seen all testuites, create the check-openmp target. --construct_check_openmp_target() diff --git a/recipes/llvm-openmp/all/patches/11/0001-disable-build-testing.patch b/recipes/llvm-openmp/all/patches/11/0001-disable-build-testing.patch deleted file mode 100644 index dde4403117078..0000000000000 --- a/recipes/llvm-openmp/all/patches/11/0001-disable-build-testing.patch +++ /dev/null @@ -1,37 +0,0 @@ ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -45,15 +39,6 @@ endif() - include(config-ix) - include(HandleOpenMPOptions) - --# Set up testing infrastructure. --include(OpenMPTesting) -- --set(OPENMP_TEST_FLAGS "" CACHE STRING -- "Extra compiler flags to send to the test compiler.") --set(OPENMP_TEST_OPENMP_FLAGS ${OPENMP_TEST_COMPILER_OPENMP_FLAGS} CACHE STRING -- "OpenMP compiler flag to use for testing OpenMP runtime libraries.") -- -- - # Build host runtime library. - add_subdirectory(runtime) - -@@ -78,18 +63,3 @@ if (OPENMP_ENABLE_LIBOMPTARGET) - - add_subdirectory(libomptarget) - endif() -- --set(ENABLE_OMPT_TOOLS ON) --# Currently tools are not tested well on Windows or MacOS X. --if (APPLE OR WIN32) -- set(ENABLE_OMPT_TOOLS OFF) --endif() -- --option(OPENMP_ENABLE_OMPT_TOOLS "Enable building ompt based tools for OpenMP." -- ${ENABLE_OMPT_TOOLS}) --if (OPENMP_ENABLE_OMPT_TOOLS) -- add_subdirectory(tools) --endif() -- --# Now that we have seen all testsuites, create the check-openmp target. --construct_check_openmp_target() diff --git a/recipes/llvm-openmp/all/patches/12/0001-disable-build-testing.patch b/recipes/llvm-openmp/all/patches/12/0001-disable-build-testing.patch deleted file mode 100644 index f455aa8e37168..0000000000000 --- a/recipes/llvm-openmp/all/patches/12/0001-disable-build-testing.patch +++ /dev/null @@ -1,40 +0,0 @@ ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -47,14 +41,6 @@ endif() - include(config-ix) - include(HandleOpenMPOptions) - --# Set up testing infrastructure. --include(OpenMPTesting) -- --set(OPENMP_TEST_FLAGS "" CACHE STRING -- "Extra compiler flags to send to the test compiler.") --set(OPENMP_TEST_OPENMP_FLAGS ${OPENMP_TEST_COMPILER_OPENMP_FLAGS} CACHE STRING -- "OpenMP compiler flag to use for testing OpenMP runtime libraries.") -- - set(ENABLE_LIBOMPTARGET ON) - # Currently libomptarget cannot be compiled on Windows or MacOS X. - # Since the device plugins are only supported on Linux anyway, -@@ -97,22 +83,3 @@ if (OPENMP_ENABLE_LIBOMPTARGET) - - add_subdirectory(libomptarget) - endif() -- --set(ENABLE_OMPT_TOOLS ON) --# Currently tools are not tested well on Windows or MacOS X. --if (APPLE OR WIN32) -- set(ENABLE_OMPT_TOOLS OFF) --endif() -- --option(OPENMP_ENABLE_OMPT_TOOLS "Enable building ompt based tools for OpenMP." -- ${ENABLE_OMPT_TOOLS}) --if (OPENMP_ENABLE_OMPT_TOOLS) -- add_subdirectory(tools) --endif() -- -- --# Build documentation --add_subdirectory(docs) -- --# Now that we have seen all testsuites, create the check-openmp target. --construct_check_openmp_target() diff --git a/recipes/llvm-openmp/all/patches/13/0001-disable-build-testing.patch b/recipes/llvm-openmp/all/patches/13/0001-disable-build-testing.patch deleted file mode 100644 index d319a4099d212..0000000000000 --- a/recipes/llvm-openmp/all/patches/13/0001-disable-build-testing.patch +++ /dev/null @@ -1,40 +0,0 @@ ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -44,14 +39,6 @@ - # Check and set up common compiler flags. - include(config-ix) - include(HandleOpenMPOptions) -- --# Set up testing infrastructure. --include(OpenMPTesting) -- --set(OPENMP_TEST_FLAGS "" CACHE STRING -- "Extra compiler flags to send to the test compiler.") --set(OPENMP_TEST_OPENMP_FLAGS ${OPENMP_TEST_COMPILER_OPENMP_FLAGS} CACHE STRING -- "OpenMP compiler flag to use for testing OpenMP runtime libraries.") - - set(ENABLE_LIBOMPTARGET ON) - # Currently libomptarget cannot be compiled on Windows or MacOS X. -@@ -81,22 +68,3 @@ - - add_subdirectory(libomptarget) - endif() -- --set(ENABLE_OMPT_TOOLS ON) --# Currently tools are not tested well on Windows or MacOS X. --if (APPLE OR WIN32) -- set(ENABLE_OMPT_TOOLS OFF) --endif() -- --option(OPENMP_ENABLE_OMPT_TOOLS "Enable building ompt based tools for OpenMP." -- ${ENABLE_OMPT_TOOLS}) --if (OPENMP_ENABLE_OMPT_TOOLS) -- add_subdirectory(tools) --endif() -- -- --# Build documentation --add_subdirectory(docs) -- --# Now that we have seen all testsuites, create the check-openmp target. --construct_check_openmp_target() diff --git a/recipes/llvm-openmp/all/patches/14/0001-disable-build-testing.patch b/recipes/llvm-openmp/all/patches/14/0001-disable-build-testing.patch deleted file mode 100644 index 464d6918a7551..0000000000000 --- a/recipes/llvm-openmp/all/patches/14/0001-disable-build-testing.patch +++ /dev/null @@ -1,62 +0,0 @@ ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -50,25 +45,12 @@ - include(config-ix) - include(HandleOpenMPOptions) - --# Set up testing infrastructure. --include(OpenMPTesting) -- --set(OPENMP_TEST_FLAGS "" CACHE STRING -- "Extra compiler flags to send to the test compiler.") --set(OPENMP_TEST_OPENMP_FLAGS ${OPENMP_TEST_COMPILER_OPENMP_FLAGS} CACHE STRING -- "OpenMP compiler flag to use for testing OpenMP runtime libraries.") -- - set(ENABLE_LIBOMPTARGET ON) - # Currently libomptarget cannot be compiled on Windows or MacOS X. - # Since the device plugins are only supported on Linux anyway, - # there is no point in trying to compile libomptarget on other OSes. - if (APPLE OR WIN32 OR NOT OPENMP_HAVE_STD_CPP14_FLAG) - set(ENABLE_LIBOMPTARGET OFF) --endif() -- --set(ENABLE_LIBOMPTARGET_PROFILING OFF) --if (ENABLE_LIBOMPTARGET AND NOT LLVM_RUNTIMES_BUILD) -- set(ENABLE_LIBOMPTARGET_PROFILING ON) - endif() - - option(OPENMP_ENABLE_LIBOMPTARGET "Enable building libomptarget for offloading." -@@ -81,9 +63,6 @@ - # to enable time profiling support in the OpenMP runtime. - add_subdirectory(runtime) - --# Build libompd.so --add_subdirectory(libompd) -- - if (OPENMP_ENABLE_LIBOMPTARGET) - # Check that the library can actually be built. - if (APPLE OR WIN32) -@@ -94,23 +73,3 @@ - - add_subdirectory(libomptarget) - endif() -- --set(ENABLE_OMPT_TOOLS ON) --# Currently tools are not tested well on Windows or MacOS X. --if (APPLE OR WIN32) -- set(ENABLE_OMPT_TOOLS OFF) --endif() -- --option(OPENMP_ENABLE_OMPT_TOOLS "Enable building ompt based tools for OpenMP." -- ${ENABLE_OMPT_TOOLS}) --if (OPENMP_ENABLE_OMPT_TOOLS) -- add_subdirectory(tools) --endif() -- --option(OPENMP_MSVC_NAME_SCHEME "Build dll with MSVC naming scheme." OFF) -- --# Build documentation --add_subdirectory(docs) -- --# Now that we have seen all testsuites, create the check-openmp target. --construct_check_openmp_target() diff --git a/recipes/llvm-openmp/all/patches/15/0001-disable-build-testing.patch b/recipes/llvm-openmp/all/patches/15/0001-disable-build-testing.patch deleted file mode 100644 index 0a0b868b908cb..0000000000000 --- a/recipes/llvm-openmp/all/patches/15/0001-disable-build-testing.patch +++ /dev/null @@ -1,62 +0,0 @@ ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -55,25 +51,12 @@ - include(config-ix) - include(HandleOpenMPOptions) - --# Set up testing infrastructure. --include(OpenMPTesting) -- --set(OPENMP_TEST_FLAGS "" CACHE STRING -- "Extra compiler flags to send to the test compiler.") --set(OPENMP_TEST_OPENMP_FLAGS ${OPENMP_TEST_COMPILER_OPENMP_FLAGS} CACHE STRING -- "OpenMP compiler flag to use for testing OpenMP runtime libraries.") -- - set(ENABLE_LIBOMPTARGET ON) - # Currently libomptarget cannot be compiled on Windows or MacOS X. - # Since the device plugins are only supported on Linux anyway, - # there is no point in trying to compile libomptarget on other OSes. - if (APPLE OR WIN32 OR NOT OPENMP_HAVE_STD_CPP14_FLAG) - set(ENABLE_LIBOMPTARGET OFF) --endif() -- --set(ENABLE_LIBOMPTARGET_PROFILING OFF) --if (ENABLE_LIBOMPTARGET AND NOT LLVM_RUNTIMES_BUILD) -- set(ENABLE_LIBOMPTARGET_PROFILING ON) - endif() - - option(OPENMP_ENABLE_LIBOMPTARGET "Enable building libomptarget for offloading." -@@ -86,9 +69,6 @@ - # to enable time profiling support in the OpenMP runtime. - add_subdirectory(runtime) - --# Build libompd.so --add_subdirectory(libompd) -- - if (OPENMP_ENABLE_LIBOMPTARGET) - # Check that the library can actually be built. - if (APPLE OR WIN32) -@@ -99,23 +79,3 @@ - - add_subdirectory(libomptarget) - endif() -- --set(ENABLE_OMPT_TOOLS ON) --# Currently tools are not tested well on Windows or MacOS X. --if (APPLE OR WIN32) -- set(ENABLE_OMPT_TOOLS OFF) --endif() -- --option(OPENMP_ENABLE_OMPT_TOOLS "Enable building ompt based tools for OpenMP." -- ${ENABLE_OMPT_TOOLS}) --if (OPENMP_ENABLE_OMPT_TOOLS) -- add_subdirectory(tools) --endif() -- --option(OPENMP_MSVC_NAME_SCHEME "Build dll with MSVC naming scheme." OFF) -- --# Build documentation --add_subdirectory(docs) -- --# Now that we have seen all testsuites, create the check-openmp target. --construct_check_openmp_target() diff --git a/recipes/llvm-openmp/all/patches/16/0001-disable-build-testing.patch b/recipes/llvm-openmp/all/patches/16/0001-disable-build-testing.patch deleted file mode 100644 index 5c9f08ac35cca..0000000000000 --- a/recipes/llvm-openmp/all/patches/16/0001-disable-build-testing.patch +++ /dev/null @@ -1,44 +0,0 @@ ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -61,14 +57,6 @@ - # Check and set up common compiler flags. - include(config-ix) - include(HandleOpenMPOptions) -- --# Set up testing infrastructure. --include(OpenMPTesting) -- --set(OPENMP_TEST_FLAGS "" CACHE STRING -- "Extra compiler flags to send to the test compiler.") --set(OPENMP_TEST_OPENMP_FLAGS ${OPENMP_TEST_COMPILER_OPENMP_FLAGS} CACHE STRING -- "OpenMP compiler flag to use for testing OpenMP runtime libraries.") - - set(ENABLE_LIBOMPTARGET ON) - # Currently libomptarget cannot be compiled on Windows or MacOS X. -@@ -107,26 +95,3 @@ - - add_subdirectory(libomptarget) - endif() -- --set(ENABLE_OMPT_TOOLS ON) --# Currently tools are not tested well on Windows or MacOS X. --if (APPLE OR WIN32) -- set(ENABLE_OMPT_TOOLS OFF) --endif() -- --option(OPENMP_ENABLE_OMPT_TOOLS "Enable building ompt based tools for OpenMP." -- ${ENABLE_OMPT_TOOLS}) --if (OPENMP_ENABLE_OMPT_TOOLS) -- add_subdirectory(tools) --endif() -- --option(OPENMP_MSVC_NAME_SCHEME "Build dll with MSVC naming scheme." OFF) -- --# Build libompd.so --add_subdirectory(libompd) -- --# Build documentation --add_subdirectory(docs) -- --# Now that we have seen all testsuites, create the check-openmp target. --construct_check_openmp_target() diff --git a/recipes/llvm-openmp/all/patches/17/0001-disable-build-testing.patch b/recipes/llvm-openmp/all/patches/17/0001-disable-build-testing.patch deleted file mode 100644 index afda1c6a0da19..0000000000000 --- a/recipes/llvm-openmp/all/patches/17/0001-disable-build-testing.patch +++ /dev/null @@ -1,44 +0,0 @@ ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -64,14 +60,6 @@ - # Check and set up common compiler flags. - include(config-ix) - include(HandleOpenMPOptions) -- --# Set up testing infrastructure. --include(OpenMPTesting) -- --set(OPENMP_TEST_FLAGS "" CACHE STRING -- "Extra compiler flags to send to the test compiler.") --set(OPENMP_TEST_OPENMP_FLAGS ${OPENMP_TEST_COMPILER_OPENMP_FLAGS} CACHE STRING -- "OpenMP compiler flag to use for testing OpenMP runtime libraries.") - - set(ENABLE_LIBOMPTARGET ON) - # Currently libomptarget cannot be compiled on Windows or MacOS X. -@@ -110,26 +98,3 @@ - - add_subdirectory(libomptarget) - endif() -- --set(ENABLE_OMPT_TOOLS ON) --# Currently tools are not tested well on Windows or MacOS X. --if (APPLE OR WIN32) -- set(ENABLE_OMPT_TOOLS OFF) --endif() -- --option(OPENMP_ENABLE_OMPT_TOOLS "Enable building ompt based tools for OpenMP." -- ${ENABLE_OMPT_TOOLS}) --if (OPENMP_ENABLE_OMPT_TOOLS) -- add_subdirectory(tools) --endif() -- --option(OPENMP_MSVC_NAME_SCHEME "Build dll with MSVC naming scheme." OFF) -- --# Build libompd.so --add_subdirectory(libompd) -- --# Build documentation --add_subdirectory(docs) -- --# Now that we have seen all testsuites, create the check-openmp target. --construct_check_openmp_target() diff --git a/recipes/llvm-openmp/all/patches/8/0001-disable-build-testing.patch b/recipes/llvm-openmp/all/patches/8/0001-disable-build-testing.patch deleted file mode 100644 index 3215d61a23b9f..0000000000000 --- a/recipes/llvm-openmp/all/patches/8/0001-disable-build-testing.patch +++ /dev/null @@ -1,25 +0,0 @@ -diff --git a/openmp/CMakeLists.txt b/openmp/CMakeLists.txt -index 597eedcec0b..4395761dac4 100644 ---- CMakeLists.txt -+++ CMakeLists.txt -@@ -45,14 +39,6 @@ endif() - include(config-ix) - include(HandleOpenMPOptions) - --# Set up testing infrastructure. --include(OpenMPTesting) -- --set(OPENMP_TEST_FLAGS "" CACHE STRING -- "Extra compiler flags to send to the test compiler.") --set(OPENMP_TEST_OPENMP_FLAGS ${OPENMP_TEST_COMPILER_OPENMP_FLAGS} CACHE STRING -- "OpenMP compiler flag to use for testing OpenMP runtime libraries.") -- - - # Build host runtime library. - add_subdirectory(runtime) -@@ -79,5 +65,3 @@ if (OPENMP_ENABLE_LIBOMPTARGET) - add_subdirectory(libomptarget) - endif() - --# Now that we have seen all testuites, create the check-openmp target. --construct_check_openmp_target() diff --git a/recipes/llvm-openmp/all/test_package/CMakeLists.txt b/recipes/llvm-openmp/all/test_package/CMakeLists.txt index 491aa7ec1f5d3..916b3718719c2 100644 --- a/recipes/llvm-openmp/all/test_package/CMakeLists.txt +++ b/recipes/llvm-openmp/all/test_package/CMakeLists.txt @@ -1,8 +1,36 @@ cmake_minimum_required(VERSION 3.15) project(PackageTest CXX C) +# FIXME: fails with Conan v1 generators +# find_package(OpenMP CONFIG COMPONENTS Fortran QUIET) +# if(OpenMP_FOUND) +# message(FATAL_ERROR "OpenMP should have failed to find Fortran.") +# endif() + +# FIXME: Conan seems to override the OpenMP_FOUND variable to TRUE in MODULE mode +# find_package(OpenMP MODULE COMPONENTS Fortran QUIET) +# if(OpenMP_FOUND) +# message(FATAL_ERROR "OpenMP should have failed to find Fortran.") +# endif() + find_package(OpenMP CONFIG REQUIRED) +message("OpenMP_FOUND: ${OpenMP_CXX_FOUND}") +message("OpenMP_VERSION: ${OpenMP_VERSION}") +message("OpenMP_C_FOUND: ${OpenMP_CXX_FOUND}") +message("OpenMP_CXX_FOUND: ${OpenMP_CXX_FOUND}") +message("OpenMP_CXX_VERSION: ${OpenMP_CXX_VERSION}") +message("OpenMP_CXX_SPEC_DATE: ${OpenMP_CXX_SPEC_DATE}") +message("OpenMP_CXX_INCLUDE_DIRS: ${OpenMP_CXX_INCLUDE_DIRS}") +message("OpenMP_CXX_LIB_NAMES: ${OpenMP_CXX_LIB_NAMES}") +message("OpenMP_CXX_LIBRARIES: ${OpenMP_CXX_LIBRARIES}") +message("OpenMP_CXX_FLAGS: ${OpenMP_CXX_FLAGS}") +message("OpenMP_omp_LIBRARY: ${OpenMP_omp_LIBRARY}") + +if(NOT DEFINED OpenMP_CXX_SPEC_DATE) + message(FATAL_ERROR "FindOpenMP.cmake did not set all variables correctly.") +endif() + add_executable(test_package_cxx test_package.cpp) target_link_libraries(test_package_cxx OpenMP::OpenMP_CXX) diff --git a/recipes/llvm-openmp/all/test_package/conanfile.py b/recipes/llvm-openmp/all/test_package/conanfile.py index b9c17185d658e..6dfdd10386483 100644 --- a/recipes/llvm-openmp/all/test_package/conanfile.py +++ b/recipes/llvm-openmp/all/test_package/conanfile.py @@ -1,6 +1,7 @@ from conan import ConanFile from conan.tools.build import can_run from conan.tools.cmake import cmake_layout, CMake +from conan.tools.env import Environment import os @@ -15,6 +16,16 @@ def requirements(self): def layout(self): cmake_layout(self) + def generate(self): + env = Environment() + # Trigger printing of runtime version info on startup. + # Should state "LLVM OMP" as the runtime library ID if everything is configured correctly. + env.define("KMP_VERSION", "TRUE") + # Display general OpenMP parameters in a standardized format. + # https://www.openmp.org/spec-html/5.0/openmpse60.html + env.define("OMP_DISPLAY_ENV", "TRUE") + env.vars(self, scope="run").save_script("conan_openmp_version") + def build(self): cmake = CMake(self) cmake.configure() diff --git a/recipes/llvm-openmp/all/test_package/test_package.c b/recipes/llvm-openmp/all/test_package/test_package.c index 103d724f00fcd..68ce5b735cb44 100644 --- a/recipes/llvm-openmp/all/test_package/test_package.c +++ b/recipes/llvm-openmp/all/test_package/test_package.c @@ -21,5 +21,6 @@ int main() printf("There are probably missing compiler flags.\n"); return 1; } + printf("OpenMP API version supported by the compiler: %d\n", _OPENMP); return 0; } diff --git a/recipes/llvm-openmp/all/test_package/test_package.cpp b/recipes/llvm-openmp/all/test_package/test_package.cpp index b602ec5a096c9..f6af1cdfb670c 100644 --- a/recipes/llvm-openmp/all/test_package/test_package.cpp +++ b/recipes/llvm-openmp/all/test_package/test_package.cpp @@ -19,5 +19,6 @@ int main() std::cout << "There are probably missing compiler flags.\n"; return 1; } + std::cout << "OpenMP API version supported by the compiler: " << _OPENMP << "\n"; return 0; } diff --git a/recipes/llvm-openmp/all/test_v1_package/conanfile.py b/recipes/llvm-openmp/all/test_v1_package/conanfile.py index b6e98e149af12..489209c17fc0b 100644 --- a/recipes/llvm-openmp/all/test_v1_package/conanfile.py +++ b/recipes/llvm-openmp/all/test_v1_package/conanfile.py @@ -13,6 +13,7 @@ def build(self): def test(self): if not tools.cross_building(self): + os.environ["KMP_VERSION"] = "TRUE" for executable in ["test_package_cxx", "test_package_c"]: bin_path = os.path.join("bin", executable) self.run(bin_path, run_environment=True) diff --git a/recipes/llvm-openmp/config.yml b/recipes/llvm-openmp/config.yml index 2f6f02e2e7d3f..684578eae1830 100644 --- a/recipes/llvm-openmp/config.yml +++ b/recipes/llvm-openmp/config.yml @@ -1,4 +1,6 @@ versions: + "18.1.8": + folder: all "17.0.6": folder: all "17.0.4": @@ -15,9 +17,3 @@ versions: folder: all "11.1.0": folder: all - "10.0.0": - folder: all - "9.0.1": - folder: all - "8.0.1": - folder: all