aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/openblas
diff options
context:
space:
mode:
Diffstat (limited to 'vcpkg/ports/openblas')
-rw-r--r--vcpkg/ports/openblas/cmake-project-include.cmake66
-rw-r--r--vcpkg/ports/openblas/disable-testing.diff20
-rw-r--r--vcpkg/ports/openblas/getarch.diff73
-rw-r--r--vcpkg/ports/openblas/openblas_common.h60
-rw-r--r--vcpkg/ports/openblas/portfile.cmake75
-rw-r--r--vcpkg/ports/openblas/system-check-msvc.diff21
-rw-r--r--vcpkg/ports/openblas/vcpkg.json50
-rw-r--r--vcpkg/ports/openblas/win32-uwp.diff67
8 files changed, 432 insertions, 0 deletions
diff --git a/vcpkg/ports/openblas/cmake-project-include.cmake b/vcpkg/ports/openblas/cmake-project-include.cmake
new file mode 100644
index 0000000..574073b
--- /dev/null
+++ b/vcpkg/ports/openblas/cmake-project-include.cmake
@@ -0,0 +1,66 @@
+# TARGET: The target architecture
+#
+# Originally, OpenBLAS tries to optimize for the host CPU unless
+# - being given an explixit TARGET, and
+# - CMAKE_CROSSCOMPILING, and
+# - not building for uwp (aka WINDOWSSTORE)
+# For this optimization, it runs 'getarch' and 'getarch_2nd' which it builds
+# from source. The getarch executables are not built when not optimizing.
+#
+# Consequences:
+# - The port must ensure that TARGET is set when cross compiling for a different CPU or OS.
+# - The port must install getarch executables when possible.
+#
+# DYNAMIC_ARCH enables support "for multiple targets with runtime detection".
+# (But not for MSVC, https://github.com/OpenMathLib/OpenBLAS/wiki/How-to-use-OpenBLAS-in-Microsoft-Visual-Studio#cmake-and-visual-studio.)
+# The OpenBLAS README.md suggests that this shall be used with TARGET being
+# set "to the oldest model you expect to encounter". This affects "all the
+# common code in the library".
+
+set(need_target 0)
+if(NOT "${TARGET}" STREQUAL "")
+ message(STATUS "TARGET: ${TARGET} (user-defined)")
+elseif(DYNAMIC_ARCH)
+ message(STATUS "DYNAMIC_ARCH: ${DYNAMIC_ARCH}")
+ set(need_target 1) # for C
+elseif(CMAKE_CROSSCOMPILING AND NOT GETARCH_BINARY_DIR)
+ set(need_target 1) # for C and for optimized kernel
+else()
+ message(STATUS "TARGET: <native> (OpenBLAS getarch/getarch_2nd)")
+endif()
+
+if(need_target)
+ set(target_default "GENERIC")
+ if(MSVC)
+ # "does not support the dialect of assembly used in the cpu-specific optimized files"
+ # https://github.com/OpenMathLib/OpenBLAS/wiki/How-to-use-OpenBLAS-in-Microsoft-Visual-Studio#cmake-and-visual-studio
+ elseif(VCPKG_TARGET_ARCHITECTURE MATCHES "^x64|^x86")
+ set(target_default "ATOM")
+ elseif(VCPKG_TARGET_ARCHITECTURE MATCHES "^arm64")
+ set(target_default "ARMV8")
+ elseif(VCPKG_TARGET_ARCHITECTURE MATCHES "^arm")
+ set(target_default "ARMV7")
+ endif()
+ set(TARGET "${target_default}" CACHE STRING "")
+ message(STATUS "TARGET: ${TARGET}")
+endif()
+
+# NUM_THREADS: The number of threads expected to be used.
+#
+# This setting affects both the configuration with USE_THREAD enabled
+# (multithreaded OpenBLAS) and disabled (multithreaded access to OpenBLAS).
+# This shouldn't be set too low for generic packages. But it comes with a
+# memory footprint.
+
+if(DEFINED NUM_THREADS)
+ message(STATUS "NUM_THREADS: ${NUM_THREADS} (user-defined)")
+elseif(EMSCRIPTEN)
+ message(STATUS "NUM_THREADS: <default> (for EMSCRIPTEN)")
+elseif(need_target)
+ set(num_threads_default 24)
+ if(ANDROID OR IOS)
+ set(num_threads_default 8)
+ endif()
+ set(NUM_THREADS "${num_threads_default}" CACHE STRING "")
+ message(STATUS "NUM_THREADS: ${NUM_THREADS}")
+endif()
diff --git a/vcpkg/ports/openblas/disable-testing.diff b/vcpkg/ports/openblas/disable-testing.diff
new file mode 100644
index 0000000..2214be9
--- /dev/null
+++ b/vcpkg/ports/openblas/disable-testing.diff
@@ -0,0 +1,20 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 2006604..c9fedb9 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -323,6 +323,7 @@ if (USE_THREAD)
+ endif()
+ endif()
+
++if(BUILD_TESTING)
+ #if (MSVC OR NOT NOFORTRAN)
+ if (NOT NO_CBLAS)
+ if (NOT ONLY_CBLAS)
+@@ -348,6 +349,7 @@ endif()
+ if (CPP_THREAD_SAFETY_TEST OR CPP_THREAD_SAFETY_GEMV)
+ add_subdirectory(cpp_thread_test)
+ endif()
++endif()
+
+ if (NOT FIXED_LIBNAME)
+ set_target_properties(${OpenBLAS_LIBS} PROPERTIES
diff --git a/vcpkg/ports/openblas/getarch.diff b/vcpkg/ports/openblas/getarch.diff
new file mode 100644
index 0000000..a2c7150
--- /dev/null
+++ b/vcpkg/ports/openblas/getarch.diff
@@ -0,0 +1,73 @@
+diff --git a/cmake/prebuild.cmake b/cmake/prebuild.cmake
+index 609fbe2..daeb25c 100644
+--- a/cmake/prebuild.cmake
++++ b/cmake/prebuild.cmake
+@@ -95,7 +95,7 @@ else ()
+ endif ()
+
+ # Cannot run getarch on target if we are cross-compiling
+-if (DEFINED CORE AND CMAKE_CROSSCOMPILING AND NOT (${HOST_OS} STREQUAL "WINDOWSSTORE"))
++if(CMAKE_CROSSCOMPILING AND NOT DEFINED GETARCH_BINARY_DIR)
+ # Write to config as getarch would
+ if (DEFINED TARGET_CORE)
+ set(TCORE ${TARGET_CORE})
+@@ -1373,7 +1373,11 @@ endif ()
+ file(MAKE_DIRECTORY ${TARGET_CONF_DIR})
+ file(RENAME ${TARGET_CONF_TEMP} "${TARGET_CONF_DIR}/${TARGET_CONF}")
+
+-else(NOT CMAKE_CROSSCOMPILING)
++else()
++ if(NOT CMAKE_CROSSCOMPILING)
++ set(GETARCH_BINARY_DIR "${PROJECT_BINARY_DIR}")
++ endif()
++
+ # compile getarch
+ set(GETARCH_SRC
+ ${PROJECT_SOURCE_DIR}/getarch.c
+@@ -1420,6 +1424,7 @@ else(NOT CMAKE_CROSSCOMPILING)
+ if (NOT ${GETARCH_RESULT})
+ MESSAGE(FATAL_ERROR "Compiling getarch failed ${GETARCH_LOG}")
+ endif ()
++ install(PROGRAMS "${PROJECT_BINARY_DIR}/${GETARCH_BIN}" DESTINATION bin)
+ endif ()
+ unset (HAVE_AVX2)
+ unset (HAVE_AVX)
+@@ -1439,8 +1444,8 @@ else(NOT CMAKE_CROSSCOMPILING)
+ message(STATUS "Running getarch")
+
+ # use the cmake binary w/ the -E param to run a shell command in a cross-platform way
+-execute_process(COMMAND "${PROJECT_BINARY_DIR}/${GETARCH_BIN}" 0 OUTPUT_VARIABLE GETARCH_MAKE_OUT)
+-execute_process(COMMAND "${PROJECT_BINARY_DIR}/${GETARCH_BIN}" 1 OUTPUT_VARIABLE GETARCH_CONF_OUT)
++execute_process(COMMAND "${GETARCH_BINARY_DIR}/${GETARCH_BIN}" 0 OUTPUT_VARIABLE GETARCH_MAKE_OUT)
++execute_process(COMMAND "${GETARCH_BINARY_DIR}/${GETARCH_BIN}" 1 OUTPUT_VARIABLE GETARCH_CONF_OUT)
+
+ message(STATUS "GETARCH results:\n${GETARCH_MAKE_OUT}")
+
+@@ -1463,11 +1468,12 @@ execute_process(COMMAND "${PROJECT_BINARY_DIR}/${GETARCH_BIN}" 1 OUTPUT_VARIABLE
+ if (NOT ${GETARCH2_RESULT})
+ MESSAGE(FATAL_ERROR "Compiling getarch_2nd failed ${GETARCH2_LOG}")
+ endif ()
++ install(PROGRAMS "${PROJECT_BINARY_DIR}/${GETARCH2_BIN}" DESTINATION bin)
+ endif ()
+
+ # use the cmake binary w/ the -E param to run a shell command in a cross-platform way
+-execute_process(COMMAND "${PROJECT_BINARY_DIR}/${GETARCH2_BIN}" 0 OUTPUT_VARIABLE GETARCH2_MAKE_OUT)
+-execute_process(COMMAND "${PROJECT_BINARY_DIR}/${GETARCH2_BIN}" 1 OUTPUT_VARIABLE GETARCH2_CONF_OUT)
++execute_process(COMMAND "${GETARCH_BINARY_DIR}/${GETARCH2_BIN}" 0 OUTPUT_VARIABLE GETARCH2_MAKE_OUT)
++execute_process(COMMAND "${GETARCH_BINARY_DIR}/${GETARCH2_BIN}" 1 OUTPUT_VARIABLE GETARCH2_CONF_OUT)
+
+ # append config data from getarch_2nd to the TARGET file and read in CMake vars
+ file(APPEND "${TARGET_CONF_TEMP}" ${GETARCH2_CONF_OUT})
+diff --git a/cmake/system.cmake b/cmake/system.cmake
+index eae7436..b2a6da7 100644
+--- a/cmake/system.cmake
++++ b/cmake/system.cmake
+@@ -13,7 +13,7 @@ if(CMAKE_CROSSCOMPILING AND NOT DEFINED TARGET)
+ set(TARGET "ARMV8")
+ elseif(ARM)
+ set(TARGET "ARMV7") # TODO: Ask compiler which arch this is
+- else()
++ elseif(NOT DEFINED GETARCH_BINARY_DIR)
+ message(FATAL_ERROR "When cross compiling, a TARGET is required.")
+ endif()
+ endif()
diff --git a/vcpkg/ports/openblas/openblas_common.h b/vcpkg/ports/openblas/openblas_common.h
new file mode 100644
index 0000000..9b798e5
--- /dev/null
+++ b/vcpkg/ports/openblas/openblas_common.h
@@ -0,0 +1,60 @@
+#pragma once
+#include "openblas/openblas_config.h"
+
+#if defined(OPENBLAS_OS_WINNT) || defined(OPENBLAS_OS_CYGWIN_NT) || defined(OPENBLAS_OS_INTERIX)
+#define OPENBLAS_WINDOWS_ABI
+#define OPENBLAS_OS_WINDOWS
+
+#ifdef DOUBLE
+#define DOUBLE_DEFINED DOUBLE
+#undef DOUBLE
+#endif
+#endif
+
+#ifdef NEEDBUNDERSCORE
+#define BLASFUNC(FUNC) FUNC##_
+
+#else
+#define BLASFUNC(FUNC) FUNC
+#endif
+
+
+#ifdef OPENBLAS_QUAD_PRECISION
+typedef struct {
+ unsigned long x[2];
+} xdouble;
+#elif defined OPENBLAS_EXPRECISION
+#define xdouble long double
+#else
+#define xdouble double
+#endif
+
+#if defined(OS_WINNT) && defined(__64BIT__)
+typedef long long BLASLONG;
+typedef unsigned long long BLASULONG;
+#else
+typedef long BLASLONG;
+typedef unsigned long BLASULONG;
+#endif
+
+#ifdef OPENBLAS_USE64BITINT
+typedef BLASLONG blasint;
+#else
+typedef int blasint;
+#endif
+
+#if defined(XDOUBLE) || defined(DOUBLE)
+#define FLOATRET FLOAT
+#else
+#ifdef NEED_F2CCONV
+#define FLOATRET double
+#else
+#define FLOATRET float
+#endif
+#endif
+
+
+/* Inclusion of a standard header file is needed for definition of __STDC_*
+ predefined macros with some compilers (e.g. GCC 4.7 on Linux). This occurs
+ as a side effect of including either <features.h> or <stdc-predef.h>. */
+#include <stdio.h>
diff --git a/vcpkg/ports/openblas/portfile.cmake b/vcpkg/ports/openblas/portfile.cmake
new file mode 100644
index 0000000..07c9ad4
--- /dev/null
+++ b/vcpkg/ports/openblas/portfile.cmake
@@ -0,0 +1,75 @@
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO OpenMathLib/OpenBLAS
+ REF "v${VERSION}"
+ SHA512 046316b4297460bffca09c890ecad17ea39d8b3db92ff445d03b547dd551663d37e40f38bce8ae11e2994374ff01e622b408da27aa8e40f4140185ee8f001a60
+ HEAD_REF develop
+ PATCHES
+ disable-testing.diff
+ getarch.diff
+ system-check-msvc.diff
+ win32-uwp.diff
+)
+
+vcpkg_check_features(OUT_FEATURE_OPTIONS OPTIONS
+ FEATURES
+ threads USE_THREAD
+ simplethread USE_SIMPLE_THREADED_LEVEL3
+ dynamic-arch DYNAMIC_ARCH
+)
+
+# If not explicitly configured for a cross build, OpenBLAS wants to run
+# getarch executables in order to optimize for the target.
+# Adapting this to vcpkg triplets:
+# - install-getarch.diff introduces and uses GETARCH_BINARY_DIR,
+# - architecture and system name are required to match for GETARCH_BINARY_DIR, but
+# - uwp (aka WindowsStore) may run windows getarch.
+string(REPLACE "WindowsStore_" "_" SYSTEM_KEY "${VCPKG_CMAKE_SYSTEM_NAME}_${VCPKG_TARGET_ARCHITECTURE}")
+set(GETARCH_BINARY_DIR "${CURRENT_HOST_INSTALLED_DIR}/manual-tools/${PORT}/${SYSTEM_KEY}")
+if(EXISTS "${GETARCH_BINARY_DIR}")
+ message(STATUS "OpenBLAS cross build, but may use ${PORT}:${HOST_TRIPLET} getarch")
+ list(APPEND OPTIONS "-DGETARCH_BINARY_DIR=${GETARCH_BINARY_DIR}")
+elseif(VCPKG_CROSSCOMPILING)
+ message(STATUS "OpenBLAS cross build, may not be able to use getarch")
+else()
+ message(STATUS "OpenBLAS native build")
+endif()
+
+if(VCPKG_TARGET_IS_EMSCRIPTEN)
+ # Only the riscv64 kernel with riscv64_generic target is supported.
+ # Cf. https://github.com/OpenMathLib/OpenBLAS/issues/3640#issuecomment-1144029630 et al.
+ list(APPEND OPTIONS
+ -DEMSCRIPTEN_SYSTEM_PROCESSOR=riscv64
+ -DTARGET=RISCV64_GENERIC
+ )
+endif()
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ ${OPTIONS}
+ "-DCMAKE_PROJECT_INCLUDE=${CURRENT_PORT_DIR}/cmake-project-include.cmake"
+ -DBUILD_TESTING=OFF
+ -DBUILD_WITHOUT_LAPACK=ON
+ -DNOFORTRAN=ON
+ MAYBE_UNUSED_VARIABLES
+ GETARCH_BINARY_DIR
+)
+
+vcpkg_cmake_install()
+vcpkg_copy_pdbs()
+vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/OpenBLAS)
+vcpkg_fixup_pkgconfig()
+
+# Required from native builds, optional from cross builds.
+if(NOT VCPKG_CROSSCOMPILING OR EXISTS "${CURRENT_PACKAGES_DIR}/bin/getarch${VCPKG_TARGET_EXECUTABLE_SUFFIX}")
+ vcpkg_copy_tools(
+ TOOL_NAMES getarch getarch_2nd
+ DESTINATION "${CURRENT_PACKAGES_DIR}/manual-tools/${PORT}/${SYSTEM_KEY}"
+ AUTO_CLEAN
+ )
+endif()
+
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include" "${CURRENT_PACKAGES_DIR}/debug/share")
+
+vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE")
diff --git a/vcpkg/ports/openblas/system-check-msvc.diff b/vcpkg/ports/openblas/system-check-msvc.diff
new file mode 100644
index 0000000..f1c395e
--- /dev/null
+++ b/vcpkg/ports/openblas/system-check-msvc.diff
@@ -0,0 +1,21 @@
+diff --git a/cmake/system_check.cmake b/cmake/system_check.cmake
+index e94497a..d884727 100644
+--- a/cmake/system_check.cmake
++++ b/cmake/system_check.cmake
+@@ -36,6 +36,16 @@ if(CMAKE_CL_64 OR MINGW64)
+ else()
+ set(X86_64 1)
+ endif()
++elseif(MSVC)
++ if(CMAKE_SYSTEM_PROCESSOR STREQUAL "AMD64")
++ set(X86_64 1)
++ elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "ARM")
++ set(ARM 1)
++ elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "ARM64")
++ set(ARM64 1)
++ else()
++ set(X86 1)
++ endif()
+ elseif(MINGW OR (MSVC AND NOT CMAKE_CROSSCOMPILING))
+ set(X86 1)
+ elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "ppc.*|power.*|Power.*" OR (CMAKE_SYSTEM_NAME MATCHES "Darwin" AND CMAKE_OSX_ARCHITECTURES MATCHES "ppc.*"))
diff --git a/vcpkg/ports/openblas/vcpkg.json b/vcpkg/ports/openblas/vcpkg.json
new file mode 100644
index 0000000..9a22b2e
--- /dev/null
+++ b/vcpkg/ports/openblas/vcpkg.json
@@ -0,0 +1,50 @@
+{
+ "name": "openblas",
+ "version": "0.3.29",
+ "description": "OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version.",
+ "homepage": "https://github.com/OpenMathLib/OpenBLAS",
+ "license": "BSD-3-Clause",
+ "dependencies": [
+ {
+ "name": "openblas",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-config",
+ "host": true
+ }
+ ],
+ "features": {
+ "dynamic-arch": {
+ "description": "Support for multiple targets in a single library",
+ "supports": "!windows | mingw"
+ },
+ "simplethread": {
+ "description": [
+ "Use simple thread safety for level3 functions",
+ "Alternative to serialization of concurrent access to parallelized level3 functions."
+ ],
+ "dependencies": [
+ {
+ "name": "openblas",
+ "features": [
+ "threads"
+ ]
+ }
+ ]
+ },
+ "threads": {
+ "description": "Enable multi-threading",
+ "dependencies": [
+ {
+ "name": "pthreads",
+ "platform": "!windows"
+ }
+ ]
+ }
+ }
+}
diff --git a/vcpkg/ports/openblas/win32-uwp.diff b/vcpkg/ports/openblas/win32-uwp.diff
new file mode 100644
index 0000000..fdf9c63
--- /dev/null
+++ b/vcpkg/ports/openblas/win32-uwp.diff
@@ -0,0 +1,67 @@
+diff --git a/cmake/os.cmake b/cmake/os.cmake
+index 2effbe0..538ede2 100644
+--- a/cmake/os.cmake
++++ b/cmake/os.cmake
+@@ -18,7 +18,7 @@ if (${CMAKE_SYSTEM_NAME} STREQUAL "AIX")
+ endif ()
+
+ # TODO: this is probably meant for mingw, not other windows compilers
+-if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
++if (WIN32)
+
+ set(NEED_PIC 0)
+ set(NO_EXPRECISION 1)
+@@ -69,7 +69,7 @@ if (CYGWIN)
+ set(NO_EXPRECISION 1)
+ endif ()
+
+-if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows" AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Interix" AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Android")
++if (NOT WIN32 AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Interix" AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Android")
+ if (USE_THREAD)
+ set(EXTRALIB "${EXTRALIB} -lpthread")
+ endif ()
+diff --git a/cmake/system.cmake b/cmake/system.cmake
+index 683c318..eae7436 100644
+--- a/cmake/system.cmake
++++ b/cmake/system.cmake
+@@ -507,7 +507,7 @@ if (USE_SIMPLE_THREADED_LEVEL3)
+ set(CCOMMON_OPT "${CCOMMON_OPT} -DUSE_SIMPLE_THREADED_LEVEL3")
+ endif ()
+
+-if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
++if (NOT WIN32)
+ if (DEFINED MAX_STACK_ALLOC)
+ if (NOT ${MAX_STACK_ALLOC} EQUAL 0)
+ set(CCOMMON_OPT "${CCOMMON_OPT} -DMAX_STACK_ALLOC=${MAX_STACK_ALLOC}")
+@@ -516,7 +516,7 @@ else ()
+ set(CCOMMON_OPT "${CCOMMON_OPT} -DMAX_STACK_ALLOC=2048")
+ endif ()
+ endif ()
+-if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
++if (NOT WIN32)
+ if (DEFINED BLAS3_MEM_ALLOC_THRESHOLD)
+ if (NOT ${BLAS3_MEM_ALLOC_THRESHOLD} EQUAL 32)
+ set(CCOMMON_OPT "${CCOMMON_OPT} -DBLAS3_MEM_ALLOC_THRESHOLD=${BLAS3_MEM_ALLOC_THRESHOLD}")
+@@ -633,7 +633,7 @@ endif()
+ set(LAPACK_FPFLAGS "${LAPACK_FPFLAGS} ${FPFLAGS}")
+
+ #Disable -fopenmp for LAPACK Fortran codes on Windows.
+-if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
++if (WIN32)
+ set(FILTER_FLAGS "-fopenmp;-mp;-openmp;-xopenmp=parallel")
+ foreach (FILTER_FLAG ${FILTER_FLAGS})
+ string(REPLACE ${FILTER_FLAG} "" LAPACK_FFLAGS ${LAPACK_FFLAGS})
+@@ -665,11 +665,11 @@ if (INTERFACE64)
+ set(LAPACK_CFLAGS "${LAPACK_CFLAGS} -DLAPACK_ILP64")
+ endif ()
+
+-if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
++if (WIN32)
+ set(LAPACK_CFLAGS "${LAPACK_CFLAGS} -DOPENBLAS_OS_WINDOWS")
+ endif ()
+
+-if (${CMAKE_C_COMPILER} STREQUAL "LSB" OR ${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
++if (${CMAKE_C_COMPILER} STREQUAL "LSB" OR WIN32)
+ set(LAPACK_CFLAGS "${LAPACK_CFLAGS} -DLAPACK_COMPLEX_STRUCTURE")
+ endif ()
+ if (${CMAKE_C_COMPILER_ID} MATCHES "IntelLLVM" AND ${CMAKE_SYSTEM_NAME} STREQUAL "Windows")