aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/clapack
diff options
context:
space:
mode:
Diffstat (limited to 'vcpkg/ports/clapack')
-rw-r--r--vcpkg/ports/clapack/FindLAPACK.cmake57
-rw-r--r--vcpkg/ports/clapack/arith_linux64.h9
-rw-r--r--vcpkg/ports/clapack/arith_osx.h12
-rw-r--r--vcpkg/ports/clapack/arith_win32.h8
-rw-r--r--vcpkg/ports/clapack/arith_win64.h9
-rw-r--r--vcpkg/ports/clapack/fix-ConfigFile.patch7
-rw-r--r--vcpkg/ports/clapack/fix-install.patch45
-rw-r--r--vcpkg/ports/clapack/portfile.cmake65
-rw-r--r--vcpkg/ports/clapack/remove_internal_blas.patch77
-rw-r--r--vcpkg/ports/clapack/support-uwp.patch87
-rw-r--r--vcpkg/ports/clapack/vcpkg-cmake-wrapper.cmake11
-rw-r--r--vcpkg/ports/clapack/vcpkg.json19
12 files changed, 406 insertions, 0 deletions
diff --git a/vcpkg/ports/clapack/FindLAPACK.cmake b/vcpkg/ports/clapack/FindLAPACK.cmake
new file mode 100644
index 0000000..0831fcf
--- /dev/null
+++ b/vcpkg/ports/clapack/FindLAPACK.cmake
@@ -0,0 +1,57 @@
+#.rst:
+# clapack config for vcpkg
+# ------------
+#
+# Find clapack as a valid LAPACK implementation.
+#
+# The module defines the same outputs as FindLAPACK by cmake
+
+include(${CMAKE_ROOT}/Modules/SelectLibraryConfigurations.cmake)
+include(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake)
+
+set(CLAPACK_VERSION "3.2.1")
+set(LAPACK_VERSION "${CLAPACK_VERSION}")
+#set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
+find_package(Threads)
+
+find_package(clapack CONFIG REQUIRED) # This will be found !
+
+if(NOT TARGET lapack)
+ message(FATAL_ERROR "Target lapack was not created by find_package(clapack)!")
+endif()
+
+if(NOT TARGET LAPACK::LAPACK)
+ add_library(LAPACK::LAPACK INTERFACE IMPORTED)
+ target_link_libraries(LAPACK::LAPACK INTERFACE lapack)
+
+ set(lib_prop IMPORTED_LOCATION)
+ #if(@VCPKG_LIBRARY_LINKAGE@ STREQUAL "dynamic" AND WIN32)
+ # set(lib_prop IMPORTED_IMPLIB)
+ #endif()
+
+ get_property(LAPACK_LIBRARY_RELEASE TARGET lapack PROPERTY ${lib_prop}_RELEASE)
+ get_property(LAPACK_LIBRARY_DEBUG TARGET lapack PROPERTY ${lib_prop}_DEBUG)
+
+ get_property(LAPACK_INCLUDE_DIR TARGET lapack PROPERTY INTERFACE_INCLUDE_DIRECTORIES) # Doesn't make much sense but ok.
+ select_library_configurations(LAPACK)
+
+ get_property(LAPACK_LINKER_FLAGS_RELEASE TARGET lapack PROPERTY IMPORTED_LINK_INTERFACE_LIBRARIES_RELEASE)
+ get_property(LAPACK_LINKER_FLAGS_DEBUG TARGET lapack PROPERTY IMPORTED_LINK_INTERFACE_LIBRARIES_DEBUG)
+ if(TARGET f2c)
+ get_property(LAPACK_F2C_LIBRARY_RELEASE TARGET f2c PROPERTY ${lib_prop}_RELEASE)
+ get_property(LAPACK_F2C_LIBRARY_DEBUG TARGET f2c PROPERTY ${lib_prop}_DEBUG)
+ list(TRANSFORM LAPACK_LINKER_FLAGS_RELEASE REPLACE "^f2c$" "${LAPACK_F2C_LIBRARY_RELEASE}")
+ list(TRANSFORM LAPACK_LINKER_FLAGS_DEBUG REPLACE "^f2c$" "${LAPACK_F2C_LIBRARY_DEBUG}")
+ endif()
+ list(TRANSFORM LAPACK_LINKER_FLAGS_DEBUG PREPEND "$<$<CONFIG:DEBUG>:")
+ list(TRANSFORM LAPACK_LINKER_FLAGS_DEBUG APPEND ">")
+ list(TRANSFORM LAPACK_LINKER_FLAGS_RELEASE PREPEND "$<$<NOT:$<CONFIG:DEBUG>>:")
+ list(TRANSFORM LAPACK_LINKER_FLAGS_RELEASE APPEND ">")
+
+ set(LAPACK_LIBRARIES "${LAPACK_LIBRARIES};${LAPACK_LINKER_FLAGS_DEBUG};${LAPACK_LINKER_FLAGS_RELEASE}")
+ set(LAPACK95_LIBRARIES "${LAPACK_LIBRARIES}")
+ set(LAPACK95_FOUND "TRUE")
+ set(LAPACK_LINKER_FLAGS "${LAPACK_LIBRARIES}")
+endif()
+find_package_handle_standard_args(LAPACK DEFAULT_MSG LAPACK_LIBRARY LAPACK_INCLUDE_DIR )
+mark_as_advanced(LAPACK_INCLUDE_DIR LAPACK_LIBRARY) \ No newline at end of file
diff --git a/vcpkg/ports/clapack/arith_linux64.h b/vcpkg/ports/clapack/arith_linux64.h
new file mode 100644
index 0000000..1bc8dce
--- /dev/null
+++ b/vcpkg/ports/clapack/arith_linux64.h
@@ -0,0 +1,9 @@
+#define IEEE_8087
+#define Arith_Kind_ASL 1
+#define Long int
+#define Intcast (int)(long)
+#define Double_Align
+#define X64_bit_pointers
+#define NO_LONG_LONG
+#define QNaN0 0x0
+#define QNaN1 0xfff80000
diff --git a/vcpkg/ports/clapack/arith_osx.h b/vcpkg/ports/clapack/arith_osx.h
new file mode 100644
index 0000000..9365338
--- /dev/null
+++ b/vcpkg/ports/clapack/arith_osx.h
@@ -0,0 +1,12 @@
+/* Suitable for macOS on x86_64 and arm64 */
+/* Not suitable for 32-bit macOS */
+
+#define IEEE_8087
+#define Arith_Kind_ASL 1
+#define Long int
+#define Intcast (int)(long)
+#define Double_Align
+#define X64_bit_pointers
+#define NANCHECK
+#define QNaN0 0x0
+#define QNaN1 0x7ff80000
diff --git a/vcpkg/ports/clapack/arith_win32.h b/vcpkg/ports/clapack/arith_win32.h
new file mode 100644
index 0000000..68b45b9
--- /dev/null
+++ b/vcpkg/ports/clapack/arith_win32.h
@@ -0,0 +1,8 @@
+/* Windows 32-bit */
+
+#define IEEE_8087
+#define Arith_Kind_ASL 1
+#define Double_Align
+#define NANCHECK
+#define QNaN0 0x0
+#define QNaN1 0x7ff80000
diff --git a/vcpkg/ports/clapack/arith_win64.h b/vcpkg/ports/clapack/arith_win64.h
new file mode 100644
index 0000000..3596395
--- /dev/null
+++ b/vcpkg/ports/clapack/arith_win64.h
@@ -0,0 +1,9 @@
+/* Windows 64-bit */
+
+#define IEEE_8087
+#define Arith_Kind_ASL 1
+#define Double_Align
+#define X64_bit_pointers
+#define NANCHECK
+#define QNaN0 0x0
+#define QNaN1 0x7ff80000
diff --git a/vcpkg/ports/clapack/fix-ConfigFile.patch b/vcpkg/ports/clapack/fix-ConfigFile.patch
new file mode 100644
index 0000000..295c2bc
--- /dev/null
+++ b/vcpkg/ports/clapack/fix-ConfigFile.patch
@@ -0,0 +1,7 @@
+diff --git a/clapack-config.cmake.in b/clapack-config.cmake.in
+index cd19f1d..49af4f0 100644
+--- a/clapack-config.cmake.in
++++ b/clapack-config.cmake.in
+@@ -1 +1 @@
+-include("@CLAPACK_BINARY_DIR@/clapack-targets.cmake")
++include("${CMAKE_CURRENT_LIST_DIR}/clapack-targets.cmake")
diff --git a/vcpkg/ports/clapack/fix-install.patch b/vcpkg/ports/clapack/fix-install.patch
new file mode 100644
index 0000000..b475c6b
--- /dev/null
+++ b/vcpkg/ports/clapack/fix-install.patch
@@ -0,0 +1,45 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 414ac8e..db58b4e 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -19,7 +19,7 @@ include_directories(${CLAPACK_SOURCE_DIR}/INCLUDE)
+ add_subdirectory(F2CLIBS)
+ add_subdirectory(SRC)
+ set(CLAPACK_VERSION 3.2.1)
+-export(TARGETS f2c lapack FILE ${CMAKE_INSTALL_PREFIX}/share/clapack/clapack-targets.cmake)
++install(EXPORT clapack-targets FILE clapack-targets.cmake DESTINATION share/clapack)
+ configure_file(${CLAPACK_SOURCE_DIR}/clapack-config-version.cmake.in
+ ${CMAKE_INSTALL_PREFIX}/share/clapack/clapack-config-version.cmake @ONLY)
+ configure_file(${CLAPACK_SOURCE_DIR}/clapack-config.cmake.in
+diff --git a/F2CLIBS/libf2c/CMakeLists.txt b/F2CLIBS/libf2c/CMakeLists.txt
+index 6fa3598..c855e38 100644
+--- a/F2CLIBS/libf2c/CMakeLists.txt
++++ b/F2CLIBS/libf2c/CMakeLists.txt
+@@ -63,8 +63,9 @@ set_property(TARGET f2c PROPERTY PREFIX lib)
+ if(UNIX)
+ target_link_libraries(f2c m)
+ endif()
+-install(TARGETS f2c
++install(TARGETS f2c EXPORT clapack-targets
+ RUNTIME DESTINATION bin
+ LIBRARY DESTINATION lib
+- ARCHIVE DESTINATION lib)
++ ARCHIVE DESTINATION lib
++ INCLUDES DESTINATION include)
+
+diff --git a/SRC/CMakeLists.txt b/SRC/CMakeLists.txt
+index 07dc8c7..2355225 100644
+--- a/SRC/CMakeLists.txt
++++ b/SRC/CMakeLists.txt
+@@ -377,8 +377,9 @@ if(BUILD_COMPLEX16)
+ endif()
+ add_library(lapack ${ALLOBJ} ${ALLXOBJ})
+ target_link_libraries(lapack ${BLAS_LIBRARIES} f2c)
+-install(TARGETS lapack
++install(TARGETS lapack EXPORT clapack-targets
+ RUNTIME DESTINATION bin
+ LIBRARY DESTINATION lib
+- ARCHIVE DESTINATION lib)
++ ARCHIVE DESTINATION lib
++ INCLUDES DESTINATION include)
+
diff --git a/vcpkg/ports/clapack/portfile.cmake b/vcpkg/ports/clapack/portfile.cmake
new file mode 100644
index 0000000..ab670c6
--- /dev/null
+++ b/vcpkg/ports/clapack/portfile.cmake
@@ -0,0 +1,65 @@
+if(EXISTS "${CURRENT_INSTALLED_DIR}/share/lapack-reference/copyright")
+ message(FATAL_ERROR "Can't build ${PORT} if lapack-reference is installed. Please remove lapack-reference:${TARGET_TRIPLET}, and try to install ${PORT}:${TARGET_TRIPLET} again.")
+endif()
+
+vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
+
+vcpkg_download_distfile(ARCHIVE
+ URLS "https://www.netlib.org/clapack/clapack-3.2.1-CMAKE.tgz"
+ FILENAME "clapack-3.2.1.tgz"
+ SHA512 cf19c710291ddff3f6ead7d86bdfdeaebca21291d9df094bf0a8ef599546b007757fb2dbb19b56511bb53ef7456eac0c73973b9627bf4d02982c856124428b49
+)
+
+vcpkg_extract_source_archive(
+ SOURCE_PATH
+ ARCHIVE "${ARCHIVE}"
+ PATCHES
+ remove_internal_blas.patch
+ fix-ConfigFile.patch
+ fix-install.patch
+ support-uwp.patch
+)
+
+set(ARITH_PATH)
+if(DEFINED CLAPACK_ARITH_PATH)
+ set(ARITH_PATH "-DARITH_PATH=${CLAPACK_ARITH_PATH}")
+elseif(NOT TARGET_TRIPLET STREQUAL HOST_TRIPLET)
+ if(VCPKG_TARGET_IS_WINDOWS OR VCPKG_TARGET_IS_UWP)
+ if(VCPKG_TARGET_ARCHITECTURE MATCHES "^x64$|^arm64$")
+ set(ARITH_PATH "-DARITH_PATH=${CMAKE_CURRENT_LIST_DIR}/arith_win64.h")
+ else()
+ set(ARITH_PATH "-DARITH_PATH=${CMAKE_CURRENT_LIST_DIR}/arith_win32.h")
+ endif()
+ elseif(VCPKG_TARGET_IS_OSX OR VCPKG_TARGET_IS_IOS)
+ set(ARITH_PATH "-DARITH_PATH=${CMAKE_CURRENT_LIST_DIR}/arith_osx.h")
+ elseif(VCPKG_TARGET_IS_LINUX AND VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
+ set(ARITH_PATH "-DARITH_PATH=${CMAKE_CURRENT_LIST_DIR}/arith_linux64.h")
+ else()
+ message(WARNING
+"Unable to cross-compile clapack for ${VCPKG_TARGET_ARCHITECTURE}-${VCPKG_CMAKE_SYSTEM_NAME}.
+No arith.h is available and arithchk must be executed for the target.
+To fix this issue, define CLAPACK_ARITH_PATH in your triplet to the location of a pre-generated arith.h file.
+
+Continuing with trying to run arithchk anyway.")
+ endif()
+endif()
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ ${ARITH_PATH}
+)
+
+vcpkg_cmake_install()
+vcpkg_copy_pdbs()
+
+#TODO: fix the official exported targets, since they are broken (luckily it seems that no-one uses them for now)
+vcpkg_cmake_config_fixup(CONFIG_PATH share/clapack)
+
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
+
+# Install clapack wrappers.
+file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}/wrapper")
+file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/FindLAPACK.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
+
+file(INSTALL "${SOURCE_PATH}/COPYING" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright)
diff --git a/vcpkg/ports/clapack/remove_internal_blas.patch b/vcpkg/ports/clapack/remove_internal_blas.patch
new file mode 100644
index 0000000..3b8c59b
--- /dev/null
+++ b/vcpkg/ports/clapack/remove_internal_blas.patch
@@ -0,0 +1,77 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 320ccc6..414ac8e 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -1,7 +1,6 @@
+ cmake_minimum_required(VERSION 2.6)
+ project(CLAPACK C)
+-enable_testing()
+-include(CTest)
++find_package(BLAS REQUIRED)
+
+ if(WIN32 AND NOT CYGWIN)
+ set(SECOND_SRC ${CLAPACK_SOURCE_DIR}/INSTALL/winsecond.c)
+@@ -11,7 +10,6 @@ else()
+ set(SECOND_SRC ${CLAPACK_SOURCE_DIR}/INSTALL/second.c)
+ set(DSECOND_SRC ${CLAPACK_SOURCE_DIR}/INSTALL/dsecnd.c)
+ endif()
+-enable_testing()
+ option(USE_BLAS_WRAP "pre-pend f2c_ to each function in blas" OFF)
+ if(NOT USE_BLAS_WRAP)
+ # _zrotg_ seems to be missing in the wrap header
+@@ -19,16 +17,15 @@ if(NOT USE_BLAS_WRAP)
+ endif()
+ include_directories(${CLAPACK_SOURCE_DIR}/INCLUDE)
+ add_subdirectory(F2CLIBS)
+-add_subdirectory(BLAS)
+ add_subdirectory(SRC)
+-add_subdirectory(TESTING)
+ set(CLAPACK_VERSION 3.2.1)
+-set(CPACK_PACKAGE_VERSION_MAJOR 3)
+-set(CPACK_PACKAGE_VERSION_MINOR 2)
+-set(CPACK_PACKAGE_VERSION_PATCH 1)
+-include(CPack)
+-export(TARGETS f2c blas lapack FILE clapack-targets.cmake)
++export(TARGETS f2c lapack FILE ${CMAKE_INSTALL_PREFIX}/share/clapack/clapack-targets.cmake)
+ configure_file(${CLAPACK_SOURCE_DIR}/clapack-config-version.cmake.in
+- ${CLAPACK_BINARY_DIR}/clapack-config-version.cmake @ONLY)
++ ${CMAKE_INSTALL_PREFIX}/share/clapack/clapack-config-version.cmake @ONLY)
+ configure_file(${CLAPACK_SOURCE_DIR}/clapack-config.cmake.in
+- ${CLAPACK_BINARY_DIR}/clapack-config.cmake @ONLY)
++ ${CMAKE_INSTALL_PREFIX}/share/clapack/clapack-config.cmake @ONLY)
++install(FILES
++ ${CMAKE_CURRENT_LIST_DIR}/INCLUDE/clapack.h
++ ${CMAKE_CURRENT_LIST_DIR}/INCLUDE/f2c.h
++ DESTINATION include)
++
+diff --git a/F2CLIBS/libf2c/CMakeLists.txt b/F2CLIBS/libf2c/CMakeLists.txt
+index 43d7b3f..6fa3598 100644
+--- a/F2CLIBS/libf2c/CMakeLists.txt
++++ b/F2CLIBS/libf2c/CMakeLists.txt
+@@ -60,3 +60,11 @@ include_directories(${CLAPACK_SOURCE_DIR}/F2CLIBS/libf2c)
+ include_directories(${CLAPACK_BINARY_DIR}/F2CLIBS/libf2c)
+ add_library(f2c ${OFILES} ${CMAKE_CURRENT_BINARY_DIR}/arith.h)
+ set_property(TARGET f2c PROPERTY PREFIX lib)
++if(UNIX)
++ target_link_libraries(f2c m)
++endif()
++install(TARGETS f2c
++ RUNTIME DESTINATION bin
++ LIBRARY DESTINATION lib
++ ARCHIVE DESTINATION lib)
++
+diff --git a/SRC/CMakeLists.txt b/SRC/CMakeLists.txt
+index ac4cce3..07dc8c7 100644
+--- a/SRC/CMakeLists.txt
++++ b/SRC/CMakeLists.txt
+@@ -376,5 +376,9 @@ if(BUILD_COMPLEX16)
+ set(ALLOBJ ${ZLASRC} ${ALLAUX} ${DZLAUX})
+ endif()
+ add_library(lapack ${ALLOBJ} ${ALLXOBJ})
+-target_link_libraries(lapack blas)
++target_link_libraries(lapack ${BLAS_LIBRARIES} f2c)
++install(TARGETS lapack
++ RUNTIME DESTINATION bin
++ LIBRARY DESTINATION lib
++ ARCHIVE DESTINATION lib)
+
diff --git a/vcpkg/ports/clapack/support-uwp.patch b/vcpkg/ports/clapack/support-uwp.patch
new file mode 100644
index 0000000..6f229ad
--- /dev/null
+++ b/vcpkg/ports/clapack/support-uwp.patch
@@ -0,0 +1,87 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index db58b4e..0fb61a0 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -15,6 +15,9 @@ if(NOT USE_BLAS_WRAP)
+ # _zrotg_ seems to be missing in the wrap header
+ add_definitions(-DNO_BLAS_WRAP)
+ endif()
++if (MSVC)
++ add_definitions(-D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE)
++endif()
+ include_directories(${CLAPACK_SOURCE_DIR}/INCLUDE)
+ add_subdirectory(F2CLIBS)
+ add_subdirectory(SRC)
+diff --git a/F2CLIBS/libf2c/CMakeLists.txt b/F2CLIBS/libf2c/CMakeLists.txt
+index 094614a..e5b40ab 100644
+--- a/F2CLIBS/libf2c/CMakeLists.txt
++++ b/F2CLIBS/libf2c/CMakeLists.txt
+@@ -44,12 +44,19 @@ if(UNIX)
+ endif()
+ set_target_properties(arithchk PROPERTIES COMPILE_DEFINITIONS
+ "NO_FPINIT;NO_LONG_LONG")
++
++if (ARITH_PATH)
++configure_file(
++ "${ARITH_PATH}"
++ "${CMAKE_CURRENT_BINARY_DIR}/arith.h"
++ COPYONLY)
++else()
+ ADD_CUSTOM_COMMAND(
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/arith.h
+ COMMAND arithchk > ${CMAKE_CURRENT_BINARY_DIR}/arith.h
+ DEPENDS arithchk
+ )
+-
++endif()
+
+ set(OFILES ${MISC} ${POW} ${CX} ${DCX} ${REAL} ${DBL} ${INT}
+ ${HALF} ${CMP} ${EFL} ${CHAR} ${I77} ${TIME})
+diff --git a/F2CLIBS/libf2c/inquire.c b/F2CLIBS/libf2c/inquire.c
+index 5936a67..4846d41 100644
+--- a/F2CLIBS/libf2c/inquire.c
++++ b/F2CLIBS/libf2c/inquire.c
+@@ -32,7 +32,7 @@ integer f_inqu(inlist *a)
+ { byfile=1;
+ g_char(a->infile,a->infilen,buf);
+ #ifdef NON_UNIX_STDIO
+- x = access(buf,0) ? -1 : 0;
++ x = _access(buf,0) ? -1 : 0;
+ for(i=0,p=NULL;i<MXUNIT;i++)
+ if(f__units[i].ufd != NULL
+ && f__units[i].ufnm != NULL
+diff --git a/F2CLIBS/libf2c/open.c b/F2CLIBS/libf2c/open.c
+index a06428d..9d08cf7 100644
+--- a/F2CLIBS/libf2c/open.c
++++ b/F2CLIBS/libf2c/open.c
+@@ -48,7 +48,7 @@ f__bufadj(int n, int c)
+ #endif
+ {
+ unsigned int len;
+- char *nbuf, *s, *t, *te;
++ char *nbuf = NULL, *s = NULL, *t = NULL, *te = NULL;
+
+ if (f__buf == f__buf0)
+ f__buflen = 1024;
+diff --git a/F2CLIBS/libf2c/rsne.c b/F2CLIBS/libf2c/rsne.c
+index e8e9dae..4d65436 100644
+--- a/F2CLIBS/libf2c/rsne.c
++++ b/F2CLIBS/libf2c/rsne.c
+@@ -103,7 +103,7 @@ mk_hashtab(Namelist *nl)
+ Vardesc *v, **vd, **vde;
+ hashentry *he;
+
+- hashtab **x, **x0, *y;
++ hashtab **x = NULL, **x0 = NULL, *y = NULL;
+ for(x = &nl_cache; y = *x; x0 = x, x = &y->next)
+ if (nl == y->nl)
+ return y;
+@@ -308,7 +308,7 @@ x_rsne(cilist *a)
+ char buf[64];
+ hashtab *ht;
+ Vardesc *v;
+- dimen *dn, *dn0, *dn1;
++ dimen *dn = NULL, *dn0 = NULL, *dn1;
+ ftnlen *dims, *dims1;
+ ftnlen b, b0, b1, ex, no, nomax, size, span;
+ ftnint no1, no2, type;
diff --git a/vcpkg/ports/clapack/vcpkg-cmake-wrapper.cmake b/vcpkg/ports/clapack/vcpkg-cmake-wrapper.cmake
new file mode 100644
index 0000000..cb2e08f
--- /dev/null
+++ b/vcpkg/ports/clapack/vcpkg-cmake-wrapper.cmake
@@ -0,0 +1,11 @@
+message(STATUS "Using VCPKG FindLAPACK from package 'clapack'")
+set(LAPACK_PREV_MODULE_PATH ${CMAKE_MODULE_PATH})
+list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR})
+
+list(REMOVE_ITEM ARGS "NO_MODULE")
+list(REMOVE_ITEM ARGS "CONFIG")
+list(REMOVE_ITEM ARGS "MODULE")
+
+_find_package(${ARGS})
+
+set(CMAKE_MODULE_PATH ${LAPACK_PREV_MODULE_PATH})
diff --git a/vcpkg/ports/clapack/vcpkg.json b/vcpkg/ports/clapack/vcpkg.json
new file mode 100644
index 0000000..b17edb5
--- /dev/null
+++ b/vcpkg/ports/clapack/vcpkg.json
@@ -0,0 +1,19 @@
+{
+ "name": "clapack",
+ "version": "3.2.1",
+ "port-version": 24,
+ "description": "CLAPACK (f2c'ed version of LAPACK)",
+ "homepage": "https://netlib.org/lapack/",
+ "license": null,
+ "dependencies": [
+ "blas",
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-config",
+ "host": true
+ }
+ ]
+}