Commit 70ad4845 authored by Christoph Reiter's avatar Christoph Reiter 🐍

gresource-tool: fix build in case libelf is available on Windows. Fixes #1466

The gresource code uses libelf if available but that also depends on mmap but isn't
guarded with HAVE_MMAP. This can make the build fail under MSYS2 where a mingw version
of libelf exists but there is no mmap.

Instead of guarting the libelf code with HAVE_LIBELF add a new macro named USE_LIBELF
which is only defined if libelf and mmap support are available.

Also install the mingw libelf version for CI so we catch similar errors in the future.
parent 83a4cab1
...@@ -21,7 +21,8 @@ pacman --noconfirm -S --needed \ ...@@ -21,7 +21,8 @@ pacman --noconfirm -S --needed \
mingw-w64-$MSYS2_ARCH-python3 \ mingw-w64-$MSYS2_ARCH-python3 \
mingw-w64-$MSYS2_ARCH-python3-pip \ mingw-w64-$MSYS2_ARCH-python3-pip \
mingw-w64-$MSYS2_ARCH-toolchain \ mingw-w64-$MSYS2_ARCH-toolchain \
mingw-w64-$MSYS2_ARCH-zlib mingw-w64-$MSYS2_ARCH-zlib \
mingw-w64-$MSYS2_ARCH-libelf
curl -O -J -L "https://github.com/linux-test-project/lcov/releases/download/v1.13/lcov-1.13.tar.gz" curl -O -J -L "https://github.com/linux-test-project/lcov/releases/download/v1.13/lcov-1.13.tar.gz"
echo "44972c878482cc06a05fe78eaa3645cbfcbad6634615c3309858b207965d8a23 lcov-1.13.tar.gz" | sha256sum -c echo "44972c878482cc06a05fe78eaa3645cbfcbad6634615c3309858b207965d8a23 lcov-1.13.tar.gz" | sha256sum -c
......
...@@ -31,6 +31,9 @@ ...@@ -31,6 +31,9 @@
#ifdef HAVE_LIBELF #ifdef HAVE_LIBELF
#include <libelf.h> #include <libelf.h>
#include <gelf.h> #include <gelf.h>
#endif
#ifdef HAVE_MMAP
#include <sys/mman.h> #include <sys/mman.h>
#endif #endif
...@@ -42,6 +45,10 @@ ...@@ -42,6 +45,10 @@
#include "glib/glib-private.h" #include "glib/glib-private.h"
#endif #endif
#if defined(HAVE_LIBELF) && defined(HAVE_MMAP)
#define USE_LIBELF
#endif
/* GResource functions {{{1 */ /* GResource functions {{{1 */
static GResource * static GResource *
get_resource (const gchar *file) get_resource (const gchar *file)
...@@ -133,7 +140,7 @@ extract_resource (GResource *resource, ...@@ -133,7 +140,7 @@ extract_resource (GResource *resource,
/* Elf functions {{{1 */ /* Elf functions {{{1 */
#ifdef HAVE_LIBELF #ifdef USE_LIBELF
static Elf * static Elf *
get_elf (const gchar *file, get_elf (const gchar *file,
...@@ -353,7 +360,7 @@ print_section_name (GElf_Shdr *shdr, ...@@ -353,7 +360,7 @@ print_section_name (GElf_Shdr *shdr,
return TRUE; return TRUE;
} }
#endif /* HAVE_LIBELF */ #endif /* USE_LIBELF */
/* Toplevel commands {{{1 */ /* Toplevel commands {{{1 */
...@@ -365,7 +372,7 @@ cmd_sections (const gchar *file, ...@@ -365,7 +372,7 @@ cmd_sections (const gchar *file,
{ {
GResource *resource; GResource *resource;
#ifdef HAVE_LIBELF #ifdef USE_LIBELF
Elf *elf; Elf *elf;
gint fd; gint fd;
...@@ -388,7 +395,7 @@ cmd_sections (const gchar *file, ...@@ -388,7 +395,7 @@ cmd_sections (const gchar *file,
else else
{ {
g_printerr ("Don't know how to handle %s\n", file); g_printerr ("Don't know how to handle %s\n", file);
#ifndef HAVE_LIBELF #ifndef USE_LIBELF
g_printerr ("gresource is built without elf support\n"); g_printerr ("gresource is built without elf support\n");
#endif #endif
} }
...@@ -402,7 +409,7 @@ cmd_list (const gchar *file, ...@@ -402,7 +409,7 @@ cmd_list (const gchar *file,
{ {
GResource *resource; GResource *resource;
#ifdef HAVE_LIBELF #ifdef USE_LIBELF
Elf *elf; Elf *elf;
int fd; int fd;
...@@ -424,7 +431,7 @@ cmd_list (const gchar *file, ...@@ -424,7 +431,7 @@ cmd_list (const gchar *file,
else else
{ {
g_printerr ("Don't know how to handle %s\n", file); g_printerr ("Don't know how to handle %s\n", file);
#ifndef HAVE_LIBELF #ifndef USE_LIBELF
g_printerr ("gresource is built without elf support\n"); g_printerr ("gresource is built without elf support\n");
#endif #endif
} }
...@@ -438,7 +445,7 @@ cmd_extract (const gchar *file, ...@@ -438,7 +445,7 @@ cmd_extract (const gchar *file,
{ {
GResource *resource; GResource *resource;
#ifdef HAVE_LIBELF #ifdef USE_LIBELF
Elf *elf; Elf *elf;
int fd; int fd;
...@@ -461,7 +468,7 @@ cmd_extract (const gchar *file, ...@@ -461,7 +468,7 @@ cmd_extract (const gchar *file,
else else
{ {
g_printerr ("Don't know how to handle %s\n", file); g_printerr ("Don't know how to handle %s\n", file);
#ifndef HAVE_LIBELF #ifndef USE_LIBELF
g_printerr ("gresource is built without elf support\n"); g_printerr ("gresource is built without elf support\n");
#endif #endif
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment