diff --git a/mingw-w64-lfortran/001-win-install.patch b/mingw-w64-lfortran/001-win-install.patch new file mode 100644 index 0000000000..6a890f5fb5 --- /dev/null +++ b/mingw-w64-lfortran/001-win-install.patch @@ -0,0 +1,31 @@ +diff --git "a/./src/libasr/runtime/lfortran_intrinsics.c" "b/./src/libasr/runtime/lfortran_intrinsics.c" +index ea6e588..c80bc8c 100644 +--- "a/./src/libasr/runtime/lfortran_intrinsics.c" ++++ "b/./src/libasr/runtime/lfortran_intrinsics.c" +@@ -1849,7 +1849,7 @@ LFORTRAN_API void _lfortran_cpu_time(double *t) { + + LFORTRAN_API void _lfortran_i32sys_clock( + int32_t *count, int32_t *rate, int32_t *max) { +-#if defined(_MSC_VER) ++#if defined(_WIN32) + *count = - INT_MAX; + *rate = 0; + *max = 0; +@@ -1869,7 +1869,7 @@ LFORTRAN_API void _lfortran_i32sys_clock( + + LFORTRAN_API void _lfortran_i64sys_clock( + uint64_t *count, int64_t *rate, int64_t *max) { +-#if defined(_MSC_VER) ++#if defined(_WIN32) + *count = - INT_MAX; + *rate = 0; + *max = 0; +@@ -1898,7 +1898,7 @@ LFORTRAN_API double _lfortran_time() + uli.LowPart = ft.dwLowDateTime; + uli.HighPart = ft.dwHighDateTime; + return (double)uli.QuadPart / 10000000.0 - 11644473600.0; +-#elif defined(__APPLE__) && !defined(__aarch64__) ++#elif defined(__APPLE__) && !defined(__aarch64__) || defined(_WIN32) + return 0.0; + #else + struct timespec ts; diff --git a/mingw-w64-lfortran/PKGBUILD b/mingw-w64-lfortran/PKGBUILD new file mode 100644 index 0000000000..351861a058 --- /dev/null +++ b/mingw-w64-lfortran/PKGBUILD @@ -0,0 +1,56 @@ +# Maintainer: ZUO Zhihua + +_realname=lfortran +pkgbase=mingw-w64-${_realname} +pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" +pkgver=0.30.0 +pkgrel=1 +arch=('any') +mingw_arch=('mingw64' 'ucrt64' 'clang64' 'clangarm64') +pkgdesc="Modern open-source (BSD licensed) interactive Fortran compiler built on top of LLVM (mingw-w64)" +url="https://github.com/lfortran/lfortran" +license=('spdx:BSD-3-Clause') +depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs") +makedepends=("${MINGW_PACKAGE_PREFIX}-cc" + "${MINGW_PACKAGE_PREFIX}-llvm-15" + "${MINGW_PACKAGE_PREFIX}-cmake" + "${MINGW_PACKAGE_PREFIX}-ninja") +source=("${url}/releases/download/v${pkgver}/${_realname}-${pkgver}.tar.gz" + 001-win-install.patch) +sha256sums=('aafdfbfe81d69ceb3650ae1cf9bcd8a1f1532d895bf88f3071fe9610859bcd6f' + 'a61475b45ba94b8b98dcd05f429735cd15c32e630ad4c970aec5d7fb9032ea60') + +prepare() { + cd "${srcdir}/${_realname}-${pkgver}" + patch -p1 -i ${srcdir}/001-win-install.patch +} + +build() { + mkdir -p "${srcdir}/build-${MSYSTEM}" && cd "${srcdir}/build-${MSYSTEM}" + + export LLVM_DIR="${MINGW_PREFIX}/opt/llvm-15/lib/cmake/llvm" + MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \ + "${MINGW_PREFIX}"/bin/cmake.exe \ + -GNinja \ + -DCMAKE_INSTALL_PREFIX="${MINGW_PREFIX}" \ + -DCMAKE_BUILD_TYPE=Release \ + -DWITH_LLVM=yes \ + -DWITH_STACKTRACE=no \ + ../${_realname}-${pkgver} + + "${MINGW_PREFIX}"/bin/cmake.exe --build . +} + +check() { + cd "${srcdir}/build-${MSYSTEM}" + + "${MINGW_PREFIX}"/bin/cmake.exe --build . --target test +} + +package() { + cd "${srcdir}/build-${MSYSTEM}" + + DESTDIR="${pkgdir}" "${MINGW_PREFIX}"/bin/cmake.exe --install . + + install -Dm644 "${srcdir}/${_realname}-${pkgver}/LICENSE" "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/LICENSE" +}