mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-11-09 19:06:15 +01:00
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.
This commit is contained in:
parent
83a4cab12c
commit
70ad484508
@ -21,7 +21,8 @@ pacman --noconfirm -S --needed \
|
||||
mingw-w64-$MSYS2_ARCH-python3 \
|
||||
mingw-w64-$MSYS2_ARCH-python3-pip \
|
||||
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"
|
||||
echo "44972c878482cc06a05fe78eaa3645cbfcbad6634615c3309858b207965d8a23 lcov-1.13.tar.gz" | sha256sum -c
|
||||
|
@ -31,6 +31,9 @@
|
||||
#ifdef HAVE_LIBELF
|
||||
#include <libelf.h>
|
||||
#include <gelf.h>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_MMAP
|
||||
#include <sys/mman.h>
|
||||
#endif
|
||||
|
||||
@ -42,6 +45,10 @@
|
||||
#include "glib/glib-private.h"
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_LIBELF) && defined(HAVE_MMAP)
|
||||
#define USE_LIBELF
|
||||
#endif
|
||||
|
||||
/* GResource functions {{{1 */
|
||||
static GResource *
|
||||
get_resource (const gchar *file)
|
||||
@ -133,7 +140,7 @@ extract_resource (GResource *resource,
|
||||
|
||||
/* Elf functions {{{1 */
|
||||
|
||||
#ifdef HAVE_LIBELF
|
||||
#ifdef USE_LIBELF
|
||||
|
||||
static Elf *
|
||||
get_elf (const gchar *file,
|
||||
@ -353,7 +360,7 @@ print_section_name (GElf_Shdr *shdr,
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
#endif /* HAVE_LIBELF */
|
||||
#endif /* USE_LIBELF */
|
||||
|
||||
/* Toplevel commands {{{1 */
|
||||
|
||||
@ -365,7 +372,7 @@ cmd_sections (const gchar *file,
|
||||
{
|
||||
GResource *resource;
|
||||
|
||||
#ifdef HAVE_LIBELF
|
||||
#ifdef USE_LIBELF
|
||||
|
||||
Elf *elf;
|
||||
gint fd;
|
||||
@ -388,7 +395,7 @@ cmd_sections (const gchar *file,
|
||||
else
|
||||
{
|
||||
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");
|
||||
#endif
|
||||
}
|
||||
@ -402,7 +409,7 @@ cmd_list (const gchar *file,
|
||||
{
|
||||
GResource *resource;
|
||||
|
||||
#ifdef HAVE_LIBELF
|
||||
#ifdef USE_LIBELF
|
||||
Elf *elf;
|
||||
int fd;
|
||||
|
||||
@ -424,7 +431,7 @@ cmd_list (const gchar *file,
|
||||
else
|
||||
{
|
||||
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");
|
||||
#endif
|
||||
}
|
||||
@ -438,7 +445,7 @@ cmd_extract (const gchar *file,
|
||||
{
|
||||
GResource *resource;
|
||||
|
||||
#ifdef HAVE_LIBELF
|
||||
#ifdef USE_LIBELF
|
||||
|
||||
Elf *elf;
|
||||
int fd;
|
||||
@ -461,7 +468,7 @@ cmd_extract (const gchar *file,
|
||||
else
|
||||
{
|
||||
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");
|
||||
#endif
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user