diff --git a/mingw-w64-dbcsr/001-fix-build-on-mingw.patch b/mingw-w64-dbcsr/001-fix-build-on-mingw.patch new file mode 100644 index 0000000000..72511e3ae5 --- /dev/null +++ b/mingw-w64-dbcsr/001-fix-build-on-mingw.patch @@ -0,0 +1,111 @@ +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -264,6 +264,10 @@ + $<$:OpenCL::OpenCL>) + endif () + ++if(WIN32) ++ target_link_libraries(dbcsr PRIVATE ws2_32) ++endif() ++ + # ================================================================================================= + # DBCSR's C API + if (WITH_C_API) +@@ -302,6 +306,7 @@ + install( + TARGETS dbcsr + EXPORT DBCSRTargets ++ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" + LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" + ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}") + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/dbcsr_api.mod" +--- a/src/base/dbcsr_machine.F ++++ b/src/base/dbcsr_machine.F +@@ -15,7 +15,7 @@ + int_8 + USE dbcsr_machine_internal, ONLY: & + m_abort, m_chdir, m_flush_internal => m_flush, m_getarg, m_getcwd, m_getlog, m_getpid, & +- m_hostnm, m_iargc, m_memory, m_memory_details, m_memory_max, m_mov, m_procrun ++ m_hostnm, m_iargc, m_memory, m_memory_details, m_memory_max, m_mov + + !$ USE OMP_LIB, ONLY: omp_get_max_threads, omp_get_thread_num, omp_get_num_threads, OMP_GET_WTIME + +@@ -33,7 +33,7 @@ + PRIVATE + + PUBLIC :: m_walltime, m_datum, m_flush, m_flush_internal, & +- m_hostnm, m_getcwd, m_getlog, m_getpid, m_getarg, m_procrun, & ++ m_hostnm, m_getcwd, m_getlog, m_getpid, m_getarg, & + m_memory, m_iargc, m_abort, m_chdir, m_mov, m_memory_details, & + m_energy, m_memory_max, m_cpuinfo + +--- a/src/base/dbcsr_machine_posix.f90 ++++ b/src/base/dbcsr_machine_posix.f90 +@@ -17,9 +17,9 @@ + PRIVATE + + PUBLIC :: m_flush, m_memory, & +- m_hostnm, m_getcwd, m_getlog, m_getuid, m_getpid, m_getarg, & ++ m_hostnm, m_getcwd, m_getlog, m_getpid, m_getarg, & + m_iargc, m_abort, m_chdir, m_mov, & +- m_memory_details, m_procrun ++ m_memory_details + + INTEGER(KIND=int_8), PUBLIC, SAVE :: m_memory_max = 0 + +@@ -49,34 +49,6 @@ + FLUSH (lunit) + END SUBROUTINE m_flush + +- FUNCTION m_procrun(pid) RESULT(run_on) +- !! Returns if a process is running on the local machine +- !! 1 if yes and 0 if not +- INTEGER, INTENT(IN) :: pid +- INTEGER :: run_on +- INTEGER :: istat +- +- INTERFACE +- FUNCTION kill(pid, sig) BIND(C, name="kill") RESULT(errno) +- IMPORT +- INTEGER(KIND=C_INT), VALUE :: pid, sig +- INTEGER(KIND=C_INT) :: errno +- END FUNCTION +- END INTERFACE +- +- ! If sig is 0, then no signal is sent, but error checking is still +- ! performed; this can be used to check for the existence of a process +- ! ID or process group ID. +- +- istat = kill(pid=pid, sig=0) +- IF (istat == 0) THEN +- run_on = 1 ! no error, process exists +- ELSE +- run_on = 0 ! error, process probably does not exist +- END IF +- +- END FUNCTION m_procrun +- + SUBROUTINE m_memory(mem) + !! Returns the total amount of memory [bytes] in use, if known, zero otherwise + +@@ -326,20 +298,6 @@ + END SUBROUTINE m_getlog + + ! ***************************************************************************** +- SUBROUTINE m_getuid(uid) +- INTEGER, INTENT(OUT) :: uid +- +- INTERFACE +- FUNCTION getuid() BIND(C, name="getuid") RESULT(uid) +- IMPORT +- INTEGER(KIND=C_INT) :: uid +- END FUNCTION +- END INTERFACE +- +- uid = getuid() +- END SUBROUTINE m_getuid +- +-! ***************************************************************************** + SUBROUTINE m_getpid(pid) + INTEGER, INTENT(OUT) :: pid + diff --git a/mingw-w64-dbcsr/PKGBUILD b/mingw-w64-dbcsr/PKGBUILD new file mode 100644 index 0000000000..0de7431df6 --- /dev/null +++ b/mingw-w64-dbcsr/PKGBUILD @@ -0,0 +1,66 @@ +# Contributor: Mehdi Chinoune + +_realname=dbcsr +pkgbase=mingw-w64-${_realname} +pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}") +pkgver=2.6.0 +pkgrel=1 +pkgdesc="Distributed Block Compressed Sparse Row matrix library (mingw-w64)" +arch=('any') +mingw_arch=('ucrt64') +url='https://www.cp2k.org/dbcsr' +msys2_repository_url="https://github.com/cp2k/dbcsr" +license=('spdx:GPL-2.0-or-later') +depends=("${MINGW_PACKAGE_PREFIX}-omp" + $([[ ${MINGW_PACKAGE_PREFIX} == *-clang-* ]] || echo "${MINGW_PACKAGE_PREFIX}-gcc-libgfortran") + #$([[ ${CARCH} != x86_64 ]] || echo "${MINGW_PACKAGE_PREFIX}-libxsmm") + "${MINGW_PACKAGE_PREFIX}-openblas") +makedepends=("${MINGW_PACKAGE_PREFIX}-cc" + "${MINGW_PACKAGE_PREFIX}-fc" + "${MINGW_PACKAGE_PREFIX}-cmake" + "${MINGW_PACKAGE_PREFIX}-ninja" + "${MINGW_PACKAGE_PREFIX}-python") +source=("https://github.com/cp2k/dbcsr/releases/download/v${pkgver}/${_realname}-${pkgver}.tar.gz" + "001-fix-build-on-mingw.patch") +sha256sums=('c67b02ff9abc7c1f529af446a9f01f3ef9e5b0574f220259128da8d5ca7e9dc6' + '8d2775a36ddbce65fa45fcdb8c76a1bae3c83b99915d50475831b8cf8c87b346') + +prepare() { + cd "${srcdir}"/${_realname}-${pkgver} + + patch -Np1 -i "${srcdir}"/001-fix-build-on-mingw.patch +} + +build() { + declare -a _extra_config + if check_option "debug" "n"; then + _extra_config+=("-DCMAKE_BUILD_TYPE=Release") + else + _extra_config+=("-DCMAKE_BUILD_TYPE=Debug") + fi + + MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \ + "${MINGW_PREFIX}"/bin/cmake.exe \ + -GNinja \ + -DCMAKE_INSTALL_PREFIX="${MINGW_PREFIX}" \ + "${_extra_config[@]}" \ + -DBUILD_SHARED_LIBS=ON \ + -DUSE_OPENMP=ON \ + -DUSE_MPI=OFF \ + -DWITH_C_API=ON \ + -DBLA_VENDOR=OpenBLAS \ + -DBUILD_TESTING=OFF \ + -DWITH_EXAMPLES=OFF \ + -DPython_EXECUTABLE=${MINGW_PREFIX}/bin/python \ + -S "${_realname}-${pkgver}" \ + -B "build-${MSYSTEM}" + + "${MINGW_PREFIX}"/bin/cmake.exe --build "build-${MSYSTEM}" +} + +package() { + DESTDIR="${pkgdir}" "${MINGW_PREFIX}"/bin/cmake.exe --install "build-${MSYSTEM}" + + install -Dm644 "${srcdir}"/${_realname}-${pkgver}/LICENSE \ + "${pkgdir}"${MINGW_PREFIX}/share/licenses/${_realname}/LICENSE +}