From cf919652c73470871e02b6073da6e3b6d07ce910 Mon Sep 17 00:00:00 2001 From: Konstantin Podsvirov Date: Sat, 9 Oct 2021 14:39:16 +0300 Subject: [PATCH] cglm: Migrate from Autotools to CMake --- mingw-w64-cglm/PKGBUILD | 75 ++++++++++++++----- .../cglm-0.8.4-fix-win32-shared.patch | 26 +++++++ 2 files changed, 82 insertions(+), 19 deletions(-) create mode 100644 mingw-w64-cglm/cglm-0.8.4-fix-win32-shared.patch diff --git a/mingw-w64-cglm/PKGBUILD b/mingw-w64-cglm/PKGBUILD index c686696d5b..884eb7bb7b 100644 --- a/mingw-w64-cglm/PKGBUILD +++ b/mingw-w64-cglm/PKGBUILD @@ -4,46 +4,83 @@ _realname=cglm pkgbase=mingw-w64-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}") pkgver=0.8.4 -pkgrel=1 +pkgrel=2 pkgdesc="OpenGL Mathematics (glm) for C (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') url="https://github.com/recp/cglm" license=('MIT') -makedepends=("${MINGW_PACKAGE_PREFIX}-gcc" +makedepends=("${MINGW_PACKAGE_PREFIX}-cmake" + "${MINGW_PACKAGE_PREFIX}-ninja" "${MINGW_PACKAGE_PREFIX}-python-sphinx" "${MINGW_PACKAGE_PREFIX}-python-sphinx_rtd_theme") -options=(!strip staticlibs !buildflags) -source=("${_realname}-${pkgver}.tar.gz::https://github.com/recp/cglm/archive/v${pkgver}.tar.gz") -sha256sums=('42f84c42c8a3e62954da77ab5c5d3264033d5802009e175db7921332a476126e') +options=('!strip' 'staticlibs' '!buildflags') +source=("${_realname}-${pkgver}.tar.gz::https://github.com/recp/cglm/archive/v${pkgver}.tar.gz" + 'cglm-0.8.4-fix-win32-shared.patch') +sha256sums=('42f84c42c8a3e62954da77ab5c5d3264033d5802009e175db7921332a476126e' + '9d7c75109fb734059e26d1fe70d2dc4d71c2df6e63fa9411bdb8a4009b11aea4') prepare() { - cd "${srcdir}/${_realname}-${pkgver}" - ./autogen.sh + cd "${srcdir}/${_realname}-${pkgver}" + + patch -p1 -i "${srcdir}/cglm-0.8.4-fix-win32-shared.patch" } build() { - [[ -d "${srcdir}/build-${MINGW_CHOST}" ]] && rm -rf "${srcdir}/build-${MINGW_CHOST}" - mkdir -p "${srcdir}/build-${MINGW_CHOST}" && cd "${srcdir}/build-${MINGW_CHOST}" + [[ -d "${srcdir}/build-${MSYSTEM}-static" ]] && rm -rf "${srcdir}/build-${MSYSTEM}-static" + mkdir -p "${srcdir}/build-${MSYSTEM}-static" && cd "${srcdir}/build-${MSYSTEM}-static" + + MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \ + ${MINGW_PREFIX}/bin/cmake \ + -G"Ninja" \ + -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \ + -DCMAKE_BUILD_TYPE=Release \ + -DCGLM_SHARED=OFF \ + -DCGLM_STATIC=ON \ + -DCGLM_USE_TEST=ON \ + ../${_realname}-${pkgver} + cmake --build . + + [[ -d "${srcdir}/build-${MSYSTEM}-shared" ]] && rm -rf "${srcdir}/build-${MSYSTEM}-shared" + mkdir -p "${srcdir}/build-${MSYSTEM}-shared" && cd "${srcdir}/build-${MSYSTEM}-shared" + + MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \ + ${MINGW_PREFIX}/bin/cmake \ + -G"Ninja" \ + -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \ + -DCMAKE_BUILD_TYPE=Release \ + -DCGLM_SHARED=ON \ + -DCGLM_STATIC=OFF \ + -DCGLM_USE_TEST=ON \ + ../${_realname}-${pkgver} + cmake --build . - ../"${_realname}-${pkgver}"/configure \ - --prefix=${MINGW_PREFIX} \ - --build=${MINGW_CHOST} \ - --host=${MINGW_CHOST} - make cd "${srcdir}/${_realname}-${pkgver}/docs" + ${MINGW_PREFIX}/bin/sphinx-build source ${_realname} } -package() { - cd "${srcdir}/build-${MINGW_CHOST}" - make DESTDIR="${pkgdir}" install +check() { + cd "${srcdir}/build-${MSYSTEM}-static" - install -Dm644 "${srcdir}/${_realname}-${pkgver}"/LICENSE "${pkgdir}${MINGW_PREFIX}"/share/licenses/cglm/LICENSE - install -Dm644 cglm.pc "${pkgdir}${MINGW_PREFIX}"/lib/pkgconfig/cglm.pc + ctest . || true + + cd "${srcdir}/build-${MSYSTEM}-shared" + + ctest . || true +} + +package() { + cd "${srcdir}/build-${MSYSTEM}-static" + DESTDIR=${pkgdir} cmake --install . + + cd "${srcdir}/build-${MSYSTEM}-shared" + DESTDIR=${pkgdir} cmake --install . cd "${srcdir}/${_realname}-${pkgver}/docs" mkdir -p "${pkgdir}${MINGW_PREFIX}"/share/doc cp -r ${_realname} "${pkgdir}${MINGW_PREFIX}"/share/doc/ + + install -Dm644 "${srcdir}/${_realname}-${pkgver}"/LICENSE "${pkgdir}${MINGW_PREFIX}"/share/licenses/${_realname}/LICENSE } diff --git a/mingw-w64-cglm/cglm-0.8.4-fix-win32-shared.patch b/mingw-w64-cglm/cglm-0.8.4-fix-win32-shared.patch new file mode 100644 index 0000000000..578e42b606 --- /dev/null +++ b/mingw-w64-cglm/cglm-0.8.4-fix-win32-shared.patch @@ -0,0 +1,26 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 41a1a54..827e07c 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -97,6 +97,12 @@ set_target_properties(${PROJECT_NAME} PROPERTIES + VERSION ${PROJECT_VERSION} + SOVERSION ${PROJECT_VERSION_MAJOR}) + ++if(WIN32) ++ # Because SOVERSION has no effect to file naming on Windows ++ set_target_properties(${PROJECT_NAME} PROPERTIES ++ RUNTIME_OUTPUT_NAME ${PROJECT_NAME}-${PROJECT_VERSION_MAJOR}) ++endif() ++ + target_include_directories(${PROJECT_NAME} + PUBLIC + $ +@@ -122,7 +128,7 @@ install(TARGETS ${PROJECT_NAME} + EXPORT ${PROJECT_NAME} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} +- RUNTIME DESTINATION ${CMAKE_INSTALL_LIBDIR}) ++ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + + install(DIRECTORY include/${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + PATTERN ".*" EXCLUDE)