summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorمهدي شينون (Mehdi Chinoune) <79349457+MehdiChinoune@users.noreply.github.com>2022-04-15 09:34:24 +0100
committerGitHub <noreply@github.com>2022-04-15 15:34:24 +0700
commit7efcf4f935d0466b6ada44bed62d729cd2cddbc4 (patch)
tree5d132d314594015b825095a4a1e7537de6dfafed
parent03495a4f95e325f8c7c1b5119c90032b7a52f3ae (diff)
downloadlibgd-7efcf4f935d0466b6ada44bed62d729cd2cddbc4.tar.gz
Some fixes for MINGW (#828)
* Enable webpng on MINGW * Detect GD version using cmake language * Use _aligned_malloc instead of posix_memalign on Windows * Include missing "errno.h" * Fix finding WEBP on MINGW * Fix finding XPM on MINGW * Use PkgConfig to find packages on MINGW * CI: Enable more options for MINGW
-rw-r--r--.github/workflows/ci_windows_mingw.yml40
-rw-r--r--CMakeLists.txt8
-rw-r--r--cmake/modules/FindFontConfig.cmake4
-rw-r--r--cmake/modules/FindHEIF.cmake4
-rw-r--r--cmake/modules/FindWEBP.cmake9
-rw-r--r--cmake/modules/FindXPM.cmake7
-rw-r--r--src/CMakeLists.txt9
-rw-r--r--src/gd_topal.c4
-rw-r--r--tests/gdtest/gdtest.c1
9 files changed, 43 insertions, 43 deletions
diff --git a/.github/workflows/ci_windows_mingw.yml b/.github/workflows/ci_windows_mingw.yml
index dccb723..9fcedfa 100644
--- a/.github/workflows/ci_windows_mingw.yml
+++ b/.github/workflows/ci_windows_mingw.yml
@@ -21,16 +21,14 @@ jobs:
fail-fast: false
matrix:
include:
- - { icon: '⬛', sys: mingw32, env: i686 }
- - { icon: '🟦', sys: mingw64, env: x86_64 }
- - { icon: '🟨', sys: ucrt64, env: ucrt-x86_64 } # Experimental!
-# - { icon: '🟧', sys: clang64, env: clang-x86_64 } # Experimental!
+ - { icon: '⬛', sys: MINGW32 }
+ - { icon: '🟦', sys: MINGW64 }
+ - { icon: '🟨', sys: UCRT64 } # Experimental!
+ - { icon: '🟧', sys: CLANG64 } # Experimental!
name: 🚧${{ matrix.icon }}-${{ matrix.sys }}
defaults:
run:
shell: msys2 {0}
- env:
- MINGW_ARCH: ${{ matrix.sys }}
steps:
- name: '⚙️ git config'
@@ -51,24 +49,26 @@ jobs:
git
base-devel
tree
- mingw-w64-${{ matrix.env }}-toolchain
- mingw-w64-${{ matrix.env }}-libpng
- mingw-w64-${{ matrix.env }}-libjpeg-turbo
- mingw-w64-${{ matrix.env }}-freetype
- mingw-w64-${{ matrix.env }}-libtiff
- mingw-w64-${{ matrix.env }}-libwebp
- mingw-w64-${{ matrix.env }}-libheif
- mingw-w64-${{ matrix.env }}-libraqm
- mingw-w64-${{ matrix.env }}-libimagequant
- mingw-w64-${{ matrix.env }}-libavif
- mingw-w64-${{ matrix.env }}-cmake
+ pacboy: >
+ toolchain:p
+ libpng:p
+ libjpeg-turbo:p
+ freetype:p
+ libtiff:p
+ libwebp:p
+ libheif:p
+ libraqm:p
+ libavif:p
+ xpm-nox:p
+ cmake:p
+ ninja:p
- name: '🚧 Cmake Configure'
run: |
- MSYSTEM=MINGW64 cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug -DENABLE_PNG=1 -DENABLE_FREETYPE=1 -DENABLE_XPM=0 -DENABLE_JPEG=1 -DENABLE_WEBP=0 -DENABLE_TIFF=1 -DENABLE_XPM=0 -DENABLE_GD_FORMATS=1 -DENABLE_HEIF=1 -DENABLE_RAQM=1 -DBUILD_TEST=1 -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -B.
+ cmake -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DENABLE_PNG=1 -DENABLE_FREETYPE=1 -DENABLE_XPM=1 -DENABLE_JPEG=1 -DENABLE_WEBP=1 -DENABLE_TIFF=1 -DENABLE_GD_FORMATS=1 -DENABLE_HEIF=1 -DENABLE_RAQM=1 -DENABLE_ICONV=1 -DENABLE_CPP=1 -DBUILD_TEST=1 -B.
- name: Build
- run: cmake --build . --config ${{env.BUILD_TYPE}} --parallel 4
+ run: cmake --build .
- name: Run tests
working-directory: ${{github.workspace}}
@@ -76,4 +76,4 @@ jobs:
mkdir tmp
export TMP=${{github.workspace}}\\tmp
export CTEST_OUTPUT_ON_FAILURE=1
- ctest -C ${{env.BUILD_TYPE}}
+ ctest
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 979d1cc..0f48851 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -86,10 +86,10 @@ if (USE_EXT_GD)
else (USE_EXT_GD)
MACRO(GV VER VAR)
- execute_process(
- COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/config/getver.sh ${VER}
- OUTPUT_VARIABLE ${VAR}
- )
+ file (STRINGS "src/gd.h" _VERSION_LINE REGEX "define[ ]+GD_${VER}_VERSION")
+ if ( _VERSION_LINE )
+ string ( REGEX REPLACE ".*define[ ]+GD_${VER}_VERSION[ ]+\"?([^ \"]*)\"?[ ]+.*" "\\1" ${VAR} "${_VERSION_LINE}" )
+ endif ()
ENDMACRO(GV)
GV(MAJOR GDLIB_MAJOR)
diff --git a/cmake/modules/FindFontConfig.cmake b/cmake/modules/FindFontConfig.cmake
index afe967e..14c251c 100644
--- a/cmake/modules/FindFontConfig.cmake
+++ b/cmake/modules/FindFontConfig.cmake
@@ -37,11 +37,11 @@ endif ( FONTCONFIG_INCLUDE_DIR AND FONTCONFIG_LIBRARY )
# use pkg-config to get the directories and then use these values
# in the FIND_PATH() and FIND_LIBRARY() calls
-if( NOT WIN32 )
+if( NOT MSVC )
find_package(PkgConfig)
pkg_check_modules(FONTCONFIG_PKG QUIET fontconfig)
-endif( NOT WIN32 )
+endif( NOT MSVC )
FIND_PATH(FONTCONFIG_INCLUDE_DIR NAMES fontconfig/fontconfig.h
PATHS
diff --git a/cmake/modules/FindHEIF.cmake b/cmake/modules/FindHEIF.cmake
index 1751a84..da544de 100644
--- a/cmake/modules/FindHEIF.cmake
+++ b/cmake/modules/FindHEIF.cmake
@@ -41,10 +41,10 @@ SET(HEIF_FOUND "NO")
# use pkg-config to get the directories and then use these values
# in the FIND_PATH() and FIND_LIBRARY() calls
-if( NOT WIN32 )
+if( NOT MSVC )
find_package(PkgConfig)
pkg_check_modules(HEIF_PKG libheif>=1.7.0 QUIET)
-endif( NOT WIN32 )
+endif( NOT MSVC )
FIND_PATH(HEIF_INCLUDE_DIR NAMES libheif/heif.h
PATHS
diff --git a/cmake/modules/FindWEBP.cmake b/cmake/modules/FindWEBP.cmake
index cc93552..11076ed 100644
--- a/cmake/modules/FindWEBP.cmake
+++ b/cmake/modules/FindWEBP.cmake
@@ -37,11 +37,10 @@
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-include(FindZLIB)
-
-find_path(WEBP_INCLUDE_DIR decode.h
-/usr/local/include/webp
-/usr/include/webp
+find_path(WEBP_INCLUDE_DIR
+ NAMES decode.h
+ PATHS /usr/local/include /usr/include
+ PATH_SUFFIXES webp
)
set(WEBP_NAMES ${WEBP_NAMES} webp)
diff --git a/cmake/modules/FindXPM.cmake b/cmake/modules/FindXPM.cmake
index 2cb0c22..8207103 100644
--- a/cmake/modules/FindXPM.cmake
+++ b/cmake/modules/FindXPM.cmake
@@ -40,9 +40,10 @@
SET(XPM_FOUND "NO")
-FIND_PATH(XPM_XPM_INCLUDE_DIR xpm.h
-/usr/local/include/X11
-/usr/include/X11
+FIND_PATH(XPM_XPM_INCLUDE_DIR
+ NAMES xpm.h
+ PATHS /usr/local/include /usr/include
+ PATH_SUFFIXES X11
)
SET(XPM_NAMES ${XPM_NAMES} Xpm libXpm)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 3839bc7..1069c4f 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -132,9 +132,9 @@ set(GD_PROGRAMS gdcmpgif)
if (PNG_FOUND)
set(GD_PROGRAMS ${GD_PROGRAMS} gdtopng pngtogd)
- if (NOT WIN32)
+ if (NOT MSVC)
set(GD_PROGRAMS ${GD_PROGRAMS} webpng)
- endif (NOT WIN32)
+ endif (NOT MSVC)
if (ZLIB_FOUND)
set(GD_PROGRAMS ${GD_PROGRAMS} gdparttopng gd2topng pngtogd2)
endif()
@@ -152,11 +152,6 @@ endif()
foreach(program ${GD_PROGRAMS})
add_executable(${program} ${program}.c)
- if (WIN32)
- list(REMOVE_ITEM program webpng.c annotate.c)
- list(REMOVE_ITEM GD_PROGRAMS webpng)
- list(REMOVE_ITEM GD_PROGRAMS annotate)
- endif (WIN32)
if (BUILD_SHARED_LIBS)
target_link_libraries(${program} ${GD_LIB})
diff --git a/src/gd_topal.c b/src/gd_topal.c
index 0fff552..eb0b063 100644
--- a/src/gd_topal.c
+++ b/src/gd_topal.c
@@ -1527,8 +1527,12 @@ static void free_truecolor_image_data(gdImagePtr oim)
/* liq requires 16 byte aligned heap memory */
static void *malloc16(size_t size)
{
+#ifndef _WIN32
void *p;
return posix_memalign(&p, 16, size) == 0 ? p : NULL;
+#else
+ return _aligned_malloc(16, size);
+#endif
}
#endif
diff --git a/tests/gdtest/gdtest.c b/tests/gdtest/gdtest.c
index 72b3758..f373469 100644
--- a/tests/gdtest/gdtest.c
+++ b/tests/gdtest/gdtest.c
@@ -9,6 +9,7 @@
#include <math.h>
#include <limits.h>
#include <time.h>
+#include <errno.h>
#ifdef HAVE_DIRENT_H
#include <dirent.h>