gentoo-ebuilds/sci-geosciences/gmt/files/gmt-6.4.0-mergesort.patch
Mario Haustein 3ca573c730
sci-geosciences/gmt: fix implicit function declaration
[sam: Revbump for modern C fix.]

Closes: https://bugs.gentoo.org/945480
Signed-off-by: Mario Haustein <mario.haustein@hrz.tu-chemnitz.de>
Closes: https://github.com/gentoo/gentoo/pull/39531
Signed-off-by: Sam James <sam@gentoo.org>
2024-12-01 08:36:33 +00:00

57 lines
1.8 KiB
Diff

From a898ed6598541a70976a44ece58f5f358a80e1bc Mon Sep 17 00:00:00 2001
From: Paul Wessel <pwessel@hawaii.edu>
Date: Mon, 24 Apr 2023 14:41:35 +0200
Subject: [PATCH] Ensure mergesort is declared if needed
Upstream: https://github.com/GenericMappingTools/gmt/pull/7411
Bug: https://bugs.gentoo.org/945480
See #7410 for background. Here I implement it a bit differently. The mergesort function is used both in a module (gmtspatial) as well as by some gmt_*.c libraries, hence if it is not part of the standard libraries we declare it in gmt_prototypes.h so it is set for both modules and libs.
--- a/src/gmt_init.c
+++ b/src/gmt_init.c
@@ -167,6 +167,10 @@
# include <mex.h>
#endif
+#ifndef HAVE_MERGESORT
+#include "mergesort.c"
+#endif
+
/* These are used in gmtinit_init_custom_annot and gmtinit_decode_tinfo only */
#define GMT_ITEM_ANNOT 0
#define GMT_ITEM_INTVAL 1
--- a/src/gmt_prototypes.h
+++ b/src/gmt_prototypes.h
@@ -39,6 +39,15 @@ EXTERN_MSC void gmt_grd_dump (struct GMT_GRID_HEADER *header, gmt_grdfloat *grid
EXTERN_MSC char * gmt_strdup (struct GMT_CTRL *GMT, const char *s);
#endif
+#ifdef __APPLE__
+/* macOX has it built in, so ensure we define this flag */
+#define HAVE_MERGESORT
+#endif
+
+#ifndef HAVE_MERGESORT
+EXTERN_MSC int mergesort (void *base, size_t nmemb, size_t size, int (*cmp)(const void *, const void *));
+#endif
+
/* gmt_nc.c: */
EXTERN_MSC bool gmt_nc_is_cube (struct GMTAPI_CTRL *API, char *file);
--- a/src/gmtspatial.c
+++ b/src/gmtspatial.c
@@ -165,15 +165,6 @@ struct GMTSPATIAL_PAIR {
uint64_t pos;
};
-#ifdef __APPLE__
-/* macOX has it built in, so ensure we define this flag */
-#define HAVE_MERGESORT
-#endif
-
-#ifndef HAVE_MERGESORT
-#include "mergesort.c"
-#endif
-
static void *New_Ctrl (struct GMT_CTRL *GMT) { /* Allocate and initialize a new control structure */
struct GMTSPATIAL_CTRL *C;