Skip to content

improve testing support and the CI #21

improve testing support and the CI

improve testing support and the CI #21

Workflow file for this run

name: cmake-win64
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
on: [push, pull_request, workflow_dispatch]
defaults:
run:
shell: bash --noprofile --norc -xeo pipefail {0}
env:
ILOC: d:/a/local
# Note: retry on all errors to avoid transient SEC_E_ILLEGAL_MESSAGE issues…
CURL: curl --location --retry 5 --retry-all-errors --silent --show-error
jobs:
build:
name: cmake-win64
runs-on: windows-latest
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v3
with:
submodules: recursive
- name: Fetch tags
run: git fetch --prune --unshallow --tags
- name: Setup environment
run: |
mkdir ${{env.ILOC}}
git_info="$(git describe --tags HEAD)"
echo "version=${git_info}" >>$GITHUB_OUTPUT
echo d:/a/gnuplot/bin >>$GITHUB_PATH
echo ${{env.ILOC}}/bin >>$GITHUB_PATH
# Nuke Strawberry Perl's installation as it contains various
# MinGW headers, libraries and binaries that can get picked up
# by configure/CMake and don't necessarily behave correctly when
# not using a MinGW environment.
- name: Nuke Strawberry Perl
run: rm -rf C:/Strawberry
- name: Install nasm
uses: ilammy/setup-nasm@v1
- name: Install gnuplot
run: |
${{env.CURL}} https://sourceforge.net/projects/gnuplot/files/gnuplot/5.4.8/gp548-win64-mingw.zip/download -o gp548-win64-mingw.zip
unzip -d d:/a -qq gp548-win64-mingw.zip
gnuplot --version
- name: Build and Install zlib-ng
run: |
git clone --depth 1 https://github.com/zlib-ng/zlib-ng.git
cd zlib-ng
cmake -B build -DCMAKE_PREFIX_PATH=${{env.ILOC}} -DCMAKE_INSTALL_PREFIX=${{env.ILOC}} -DBUILD_SHARED_LIBS=OFF -DZLIB_COMPAT=ON -DZLIB_ENABLE_TESTS=OFF -DINSTALL_UTILS=OFF
cmake --build build --config Release --target install
- name: Build and Install libpng
run: |
${{env.CURL}} https://download.sourceforge.net/libpng/lpng1639.zip -o lpng1639.zip
unzip -qq lpng1639.zip
cd lpng1639
cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=${{env.ILOC}} -DCMAKE_INSTALL_PREFIX=${{env.ILOC}} -DPNG_TESTS=OFF -DPNG_SHARED=OFF
cmake --build build --config Release --target install
- name: Build and Install giflib
run: |
${{env.CURL}} https://sourceforge.net/projects/giflib/files/giflib-5.2.1.tar.gz/download -o giflib-5.2.1.tar.gz
tar xaf giflib-5.2.1.tar.gz
cd giflib-5.2.1
patch -p1 <<\EOF
diff --git c/CMakeLists.txt i/CMakeLists.txt
new file mode 100644
--- /dev/null
+++ i/CMakeLists.txt
@@ -0,0 +1,32 @@
+cmake_minimum_required(VERSION 3.5)
+
+project(giflib VERSION 5.2.1 LANGUAGES C)
+
+if(MSVC)
+ set(CMAKE_DEBUG_POSTFIX "d")
+endif()
+
+add_library(giflib
+ dgif_lib.c
+ egif_lib.c
+ gif_err.c
+ gif_font.c
+ gif_hash.c
+ gif_hash.h
+ gif_lib.h
+ gif_lib_private.h
+ gifalloc.c
+ openbsd-reallocarray.c
+ quantize.c
+)
+
+install(TARGETS giflib EXPORT giflib
+ RUNTIME DESTINATION bin
+ ARCHIVE DESTINATION lib
+ LIBRARY DESTINATION lib
+)
+
+install(FILES
+ ${CMAKE_CURRENT_SOURCE_DIR}/gif_lib.h
+ DESTINATION include
+)
diff --git c/gif_hash.h i/gif_hash.h
--- c/gif_hash.h
+++ i/gif_hash.h
@@ -9,7 +9,9 @@ SPDX-License-Identifier: MIT
#ifndef _GIF_HASH_H_
#define _GIF_HASH_H_
+#if !defined(_MSC_VER)
#include <unistd.h>
+#endif
#include <stdint.h>
#define HT_SIZE 8192 /* 12bits = 4096 or twice as big! */
EOF
cmake -Bbuild -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=${{env.ILOC}} -DCMAKE_INSTALL_PREFIX=${{env.ILOC}}
cmake --build build --config Release --target install
- name: Build and Install libjpeg
run: |
git clone --depth 1 https://github.com/libjpeg-turbo/libjpeg-turbo.git
cd libjpeg-turbo
cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=${{env.ILOC}} -DCMAKE_INSTALL_PREFIX=${{env.ILOC}} -DWITH_TURBOJPEG=OFF
cmake --build build --config Release --target install
- name: Build and Install openjpeg
run: |
git clone --depth 1 https://github.com/uclouvain/openjpeg.git
cd openjpeg
cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=${{env.ILOC}} -DCMAKE_INSTALL_PREFIX=${{env.ILOC}}
cmake --build build --config Release --target install
- name: Build and Install webp
run: |
git clone --depth 1 https://chromium.googlesource.com/webm/libwebp
cd libwebp
cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=${{env.ILOC}} -DCMAKE_INSTALL_PREFIX=${{env.ILOC}} -DWEBP_BUILD_WEBP_JS=OFF -DWEBP_BUILD_ANIM_UTILS=OFF -DWEBP_BUILD_CWEBP=OFF -DWEBP_BUILD_DWEBP=OFF -DWEBP_BUILD_GIF2WEBP=OFF -DWEBP_BUILD_IMG2WEBP=OFF -DWEBP_BUILD_VWEBP=OFF -DWEBP_BUILD_WEBPMUX=OFF -DWEBP_BUILD_EXTRAS=OFF -DWEBP_BUILD_WEBP_JS=OFF
cmake --build build --config Release --target install
- name: Build and Install jbigkit
run: |
git clone --depth 1 https://github.com/zdenop/jbigkit.git
cd jbigkit
cmake -B build -DCMAKE_PREFIX_PATH=${{env.ILOC}} -DCMAKE_INSTALL_PREFIX=${{env.ILOC}} -DBUILD_PROGRAMS=OFF -DBUILD_TOOLS=OFF -DCMAKE_WARN_DEPRECATED=OFF
cmake --build build --config Release --target install
- name: Build and Install zstd
run: |
git clone --depth 1 https://github.com/facebook/zstd.git
cd zstd/build/cmake
cmake -B build -DCMAKE_PREFIX_PATH=${{env.ILOC}} -DCMAKE_INSTALL_PREFIX=${{env.ILOC}}
cmake --build build --config Release --target install
# FIXME: skip lzma build (libtiff lzma build failure)
- name: Build and Install lzma
if: false
run: |
${{env.CURL}} https://sourceforge.net/projects/lzmautils/files/xz-5.4.3.tar.zst/download -o xz-5.4.3.tar.zst
tar xaf xz-5.4.3.tar.zst
cd xz-5.4.3
cmake -B build -DCMAKE_PREFIX_PATH=${{env.ILOC}} -DCMAKE_INSTALL_PREFIX=${{env.ILOC}} -DBUILD_TESTING=OFF
cmake --build build --config Release --target install
# FIXME: disable lzma support (build failure)
- name: Build and Install libtiff
run: |
git clone --depth 1 https://gitlab.com/libtiff/libtiff.git
cd libtiff
cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=${{env.ILOC}} -DCMAKE_INSTALL_PREFIX=${{env.ILOC}} -Dlzma=OFF -Dtiff-tools=OFF -Dtiff-tests=OFF -Dtiff-contrib=OFF -Dtiff-docs=OFF
cmake --build build --config Release --target install
- name: Configure
run: cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=${{env.ILOC}} -DCMAKE_INSTALL_PREFIX=${{env.ILOC}} -DSW_BUILD=OFF -DBUILD_PROG=ON -DBUILD_SHARED_LIBS=ON -DBUILD_TEST=ON
- name: Build
run: cmake --build build --config Release
# FIXME: skip `string_reg` test (libtiff lzma build failure)
- name: Test
run: ctest --test-dir build --build-config Release --output-on-failure --parallel 3 --exclude-regex '^string_reg$'
- name: Install
run: cmake --build build --config Release --target install
- name: Test install
run: fileinfo prog/test-rgb.png
- name: Remove not needed tools
run: rm -f ${{env.ILOC}}/bin/*.exe
- name: Upload Build Results
uses: actions/[email protected]
with:
name: leptonica-${{ steps.get_version.outputs.version }}-VS2019_win64
path: ${{env.ILOC}}
retention-days: 5