aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/patches
diff options
context:
space:
mode:
authorLiliana Marie Prikler <liliana.prikler@gmail.com>2023-05-27 17:16:45 +0200
committerLiliana Marie Prikler <liliana.prikler@gmail.com>2023-05-27 17:16:45 +0200
commit52b4ce275fda390172fcce9797300ba0d5a89d59 (patch)
treebc65643e9756d6fcc3d8dd58f8b50d59ea3f0ee5 /gnu/packages/patches
parent00d8a4116427fb69f79e334bfbf91920a0d871d2 (diff)
parentb96b82bcd4bc24529941ff74a91432481f1a71b5 (diff)
downloadguix-52b4ce275fda390172fcce9797300ba0d5a89d59.tar
guix-52b4ce275fda390172fcce9797300ba0d5a89d59.tar.gz
Merge branch 'master' into gnome-team
Diffstat (limited to 'gnu/packages/patches')
-rw-r--r--gnu/packages/patches/isync-openssl3-fix.patch81
-rw-r--r--gnu/packages/patches/laby-use-tmpdir-from-runtime.patch39
-rw-r--r--gnu/packages/patches/mariadb-rocksdb-atomic-linking.patch54
-rw-r--r--gnu/packages/patches/mesa-opencl-all-targets.patch25
-rw-r--r--gnu/packages/patches/openmw-assume-nonconst-SIGSTKSZ.patch39
-rw-r--r--gnu/packages/patches/tofi-32bit-compat.patch87
-rw-r--r--gnu/packages/patches/xfce4-settings-defaults.patch17
-rw-r--r--gnu/packages/patches/xygrib-newer-proj.patch600
8 files changed, 909 insertions, 33 deletions
diff --git a/gnu/packages/patches/isync-openssl3-fix.patch b/gnu/packages/patches/isync-openssl3-fix.patch
new file mode 100644
index 0000000000..6a2363e972
--- /dev/null
+++ b/gnu/packages/patches/isync-openssl3-fix.patch
@@ -0,0 +1,81 @@
+Upstream status: Taken from master branch. Likely included in versions > 1.4.4
+
+Fixes issues with OpenSSL3. See related thread:
+https://sourceforge.net/p/isync/mailman/isync-devel/thread/Y2jnr8hESp1PUW+6@bulldog/
+
+From b6c36624f04cd388873785c0631df3f2f9ac4bf0 Mon Sep 17 00:00:00 2001
+From: Oswald Buddenhagen <ossi@users.sf.net>
+Date: Mon, 6 Jun 2022 11:55:37 +0200
+Subject: [PATCH] work around "unexpected EOF" error messages at end of SSL
+ connections
+
+gmail apparently doesn't send a close notification (SSL_shutdown())
+before closing the TCP socket.
+---
+ src/drv_imap.c | 7 +++++--
+ src/socket.c | 9 +++++++++
+ src/socket.h | 1 +
+ 3 files changed, 15 insertions(+), 2 deletions(-)
+
+diff --git a/src/drv_imap.c b/src/drv_imap.c
+index fb8d165..6286045 100644
+--- a/src/drv_imap.c
++++ b/src/drv_imap.c
+@@ -1620,6 +1620,7 @@ imap_socket_read( void *aux )
+ error( "IMAP error: unexpected BYE response: %s\n", cmd );
+ /* We just wait for the server to close the connection now. */
+ ctx->expectEOF = 1;
++ socket_expect_eof( &ctx->conn );
+ } else {
+ /* We still need to wait for the LOGOUT's tagged OK. */
+ }
+@@ -1882,10 +1883,12 @@ static void
+ imap_cleanup_p2( imap_store_t *ctx,
+ imap_cmd_t *cmd ATTR_UNUSED, int response )
+ {
+- if (response == RESP_NO)
++ if (response == RESP_NO) {
+ imap_cancel_store( &ctx->gen );
+- else if (response == RESP_OK)
++ } else if (response == RESP_OK) {
+ ctx->expectEOF = 1;
++ socket_expect_eof( &ctx->conn );
++ }
+ }
+
+ /******************* imap_open_store *******************/
+diff --git a/src/socket.c b/src/socket.c
+index ac3c847..892cece 100644
+--- a/src/socket.c
++++ b/src/socket.c
+@@ -810,6 +810,15 @@ socket_expect_activity( conn_t *conn, int expect )
+ conf_wakeup( &conn->fd_timeout, expect ? conn->conf->timeout : -1 );
+ }
+
++void
++socket_expect_eof( conn_t *sock )
++{
++#ifdef SSL_OP_IGNORE_UNEXPECTED_EOF // implies HAVE_LIBSSL
++ if (sock->ssl)
++ SSL_set_options( sock->ssl, SSL_OP_IGNORE_UNEXPECTED_EOF );
++#endif
++}
++
+ int
+ socket_read( conn_t *conn, char *buf, uint len )
+ {
+diff --git a/src/socket.h b/src/socket.h
+index 5b1edd0..af679aa 100644
+--- a/src/socket.h
++++ b/src/socket.h
+@@ -142,6 +142,7 @@ void socket_start_tls(conn_t *conn, void (*cb)( int ok, void *aux ) );
+ void socket_start_deflate( conn_t *conn );
+ void socket_close( conn_t *sock );
+ void socket_expect_activity( conn_t *sock, int expect );
++void socket_expect_eof( conn_t *sock );
+ int socket_read( conn_t *sock, char *buf, uint len ); /* never waits */
+ char *socket_read_line( conn_t *sock ); /* don't free return value; never waits */
+ typedef enum { KeepOwn = 0, GiveOwn } ownership_t;
+--
+2.39.2
+
diff --git a/gnu/packages/patches/laby-use-tmpdir-from-runtime.patch b/gnu/packages/patches/laby-use-tmpdir-from-runtime.patch
new file mode 100644
index 0000000000..ea6324a91b
--- /dev/null
+++ b/gnu/packages/patches/laby-use-tmpdir-from-runtime.patch
@@ -0,0 +1,39 @@
+Reported as <https://github.com/sgimenez/laby/pull/68>
+
+diff --git a/build b/build
+index 992a9e3..0df74d9 100755
+--- a/build
++++ b/build
+@@ -7,7 +7,6 @@ source build.conf || exit 1
+
+ export PREFIX=${PREFIX-/usr}
+ export DATADIR=${DATADIR-${PREFIX}/share}
+-export TMPDIR=${TMPDIR-/tmp}
+
+ export PROJECT_NAME=${PROJECT_NAME-unknown}
+ export PROJECT_VERSION=${PROJECT_VERSION-unknown}
+diff --git a/src/config.sh b/src/config.sh
+index 19d4160..9338aad 100644
+--- a/src/config.sh
++++ b/src/config.sh
+@@ -29,5 +29,4 @@ let build_ocaml = "${OCAML_VERSION}"
+ let build_lablgtk = "${BUILD_LABLGTK}"
+ let build_lablgtk_sourceview = "${BUILD_LABLGTKSV}"
+ let _ = Res.sys_data_dir := "${DATADIR}"
+-let _ = Res.sys_tmp_dir := "${TMPDIR}"
+ EOF
+diff --git a/src/laby.ml b/src/laby.ml
+index b77f2b2..e17acb9 100644
+--- a/src/laby.ml
++++ b/src/laby.ml
+@@ -48,6 +48,7 @@ let opts =
+
+ let _ =
+ Printexc.record_backtrace true;
++ Res.sys_tmp_dir := Filename.get_temp_dir_name ();
+ Run.init
+ ~name:Config.project_name
+ ~conf:(conf, ["conf"])
+--
+2.34.1
+
diff --git a/gnu/packages/patches/mariadb-rocksdb-atomic-linking.patch b/gnu/packages/patches/mariadb-rocksdb-atomic-linking.patch
new file mode 100644
index 0000000000..03e8acd907
--- /dev/null
+++ b/gnu/packages/patches/mariadb-rocksdb-atomic-linking.patch
@@ -0,0 +1,54 @@
+https://github.com/MariaDB/server/pull/2477
+https://github.com/MariaDB/server/commit/195c0e81493c41f1d20b91a5bcc6aaaf4979d781.patch
+
+From 195c0e81493c41f1d20b91a5bcc6aaaf4979d781 Mon Sep 17 00:00:00 2001
+From: Daniel Black <daniel@mariadb.org>
+Date: Fri, 3 Feb 2023 11:51:20 +1100
+Subject: [PATCH] MDEV-30554 RockDB libatomic linking on riscv64
+
+The existing storage/rocksdb/CMakeCache.txt defined
+ATOMIC_EXTRA_LIBS when atomics where required. This was
+determined by the toplevel configure.cmake test
+(HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC).
+
+As build_rocksdb.cmake is included after ATOMIC_EXTRA_LIBS
+was set, we just need to use it. As such no riscv64
+specific macro is needed in build_rocksdb.cmake.
+
+As highlighted by Gianfranco Costamagna (@LocutusOfBorg)
+in #2472 overwriting SYSTEM_LIBS was problematic.
+This is corrected in case in future SYSTEM_LIBS is changed
+elsewhere.
+
+Closes #2472.
+---
+ storage/rocksdb/build_rocksdb.cmake | 8 ++------
+ 1 file changed, 2 insertions(+), 6 deletions(-)
+
+diff --git a/storage/rocksdb/build_rocksdb.cmake b/storage/rocksdb/build_rocksdb.cmake
+index e23862ee65901..647e51e2f90d9 100644
+--- a/storage/rocksdb/build_rocksdb.cmake
++++ b/storage/rocksdb/build_rocksdb.cmake
+@@ -129,10 +129,6 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "ppc64")
+ ADD_DEFINITIONS(-DHAVE_POWER8 -DHAS_ALTIVEC)
+ endif(CMAKE_SYSTEM_PROCESSOR MATCHES "ppc64")
+
+-if(CMAKE_SYSTEM_PROCESSOR STREQUAL "riscv64")
+- set(SYSTEM_LIBS ${SYSTEM_LIBS} -latomic)
+-endif()
+-
+ option(WITH_FALLOCATE "build with fallocate" ON)
+
+ if(WITH_FALLOCATE AND UNIX)
+@@ -161,9 +157,9 @@ include_directories(SYSTEM ${ROCKSDB_SOURCE_DIR}/third-party/gtest-1.7.0/fused-s
+
+ find_package(Threads REQUIRED)
+ if(WIN32)
+- set(SYSTEM_LIBS ${SYSTEM_LIBS} Shlwapi.lib Rpcrt4.lib)
++ set(SYSTEM_LIBS ${SYSTEM_LIBS} ${ATOMIC_EXTRA_LIBS} Shlwapi.lib Rpcrt4.lib)
+ else()
+- set(SYSTEM_LIBS ${CMAKE_THREAD_LIBS_INIT} ${LIBRT} ${CMAKE_DL_LIBS})
++ set(SYSTEM_LIBS ${SYSTEM_LIBS} ${CMAKE_THREAD_LIBS_INIT} ${LIBRT} ${CMAKE_DL_LIBS} ${ATOMIC_EXTRA_LIBS})
+ endif()
+
+ set(ROCKSDB_LIBS rocksdblib})
diff --git a/gnu/packages/patches/mesa-opencl-all-targets.patch b/gnu/packages/patches/mesa-opencl-all-targets.patch
deleted file mode 100644
index 99d4abcea4..0000000000
--- a/gnu/packages/patches/mesa-opencl-all-targets.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-This patch restores LLVM targets needed for OpenCL, *reverting* this
-upstream commit:
-
- From 80817b6e344258ac9b955f824ebf9019a0fc1610 Mon Sep 17 00:00:00 2001
- From: Jesse Natalie <jenatali@microsoft.com>
- Date: Wed, 18 Nov 2020 18:30:30 -0800
- Subject: [PATCH] meson: Adjust Clover's required LLVM modules
-
-diff --git a/meson.build b/meson.build
-index 6d1607c35a3..f828eb80faa 100644
---- b/meson.build
-+++ a/meson.build
-@@ -1479,10 +1479,9 @@
- endif
- if with_gallium_opencl
- llvm_modules += [
-- 'linker', 'coverage', 'instrumentation', 'ipo', 'irreader',
-- 'lto', 'option', 'objcarcopts', 'profiledata'
-+ 'all-targets', 'linker', 'coverage', 'instrumentation', 'ipo', 'irreader',
-+ 'lto', 'option', 'objcarcopts', 'profiledata',
- ]
-- llvm_optional_modules += ['frontendopenmp']
- endif
- if with_microsoft_clc
- llvm_modules += ['target', 'linker', 'irreader', 'option', 'libdriver']
diff --git a/gnu/packages/patches/openmw-assume-nonconst-SIGSTKSZ.patch b/gnu/packages/patches/openmw-assume-nonconst-SIGSTKSZ.patch
new file mode 100644
index 0000000000..ed35563c2c
--- /dev/null
+++ b/gnu/packages/patches/openmw-assume-nonconst-SIGSTKSZ.patch
@@ -0,0 +1,39 @@
+From 98a7d90ee258ceef9c70b0b2955d0458ec46f048 Mon Sep 17 00:00:00 2001
+From: elsid <elsid.mail@gmail.com>
+Date: Fri, 24 Sep 2021 19:40:29 +0200
+Subject: [PATCH] Assume SIGSTKSZ is not a constant
+
+SIGSTKSZ is not defined as constant since glibc 2.34:
+https://sourceware.org/git/?p=glibc.git;a=commit;h=6c57d320484988e87e446e2e60ce42816bf51d53
+---
+ components/crashcatcher/crashcatcher.cpp | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/components/crashcatcher/crashcatcher.cpp b/components/crashcatcher/crashcatcher.cpp
+index 86571e1e3a..c828e1ca81 100644
+--- a/components/crashcatcher/crashcatcher.cpp
++++ b/components/crashcatcher/crashcatcher.cpp
+@@ -56,8 +56,6 @@ static const char exec_err[] = "!!! Failed to exec debug process\n";
+
+ static char argv0[PATH_MAX];
+
+-static char altstack[SIGSTKSZ];
+-
+
+ static struct {
+ int signum;
+@@ -475,9 +473,10 @@ int crashCatcherInstallHandlers(int argc, char **argv, int num_signals, int *sig
+
+ /* Set an alternate signal stack so SIGSEGVs caused by stack overflows
+ * still run */
++ static char* altstack = new char [SIGSTKSZ];
+ altss.ss_sp = altstack;
+ altss.ss_flags = 0;
+- altss.ss_size = sizeof(altstack);
++ altss.ss_size = SIGSTKSZ;
+ sigaltstack(&altss, nullptr);
+
+ memset(&sa, 0, sizeof(sa));
+--
+GitLab
+
diff --git a/gnu/packages/patches/tofi-32bit-compat.patch b/gnu/packages/patches/tofi-32bit-compat.patch
new file mode 100644
index 0000000000..5f9089e589
--- /dev/null
+++ b/gnu/packages/patches/tofi-32bit-compat.patch
@@ -0,0 +1,87 @@
+This patch is from upstream and shouldn't be needed in the next release.
+https://github.com/philj56/tofi/commit/667075f0920da3c2b353fbce54b6430c195ef031.patch
+
+From 667075f0920da3c2b353fbce54b6430c195ef031 Mon Sep 17 00:00:00 2001
+From: Phil Jones <philj56@gmail.com>
+Date: Sun, 30 Apr 2023 20:08:57 +0100
+Subject: [PATCH] Replace `strto[u]l` with `strto[u]ll`.
+
+On 32-bit systems, using `strtoul` was causing negative values for
+unsigned options to be treated as valid, as the value was being parsed
+as a 32-bit unsigned int, then cast to a 64-bit signed int, which
+remained positive.
+---
+ src/color.c | 8 ++++----
+ src/config.c | 6 +++---
+ 2 files changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/src/color.c b/src/color.c
+index 4b6b356..b1d5e90 100644
+--- a/src/color.c
++++ b/src/color.c
+@@ -22,7 +22,7 @@ struct color hex_to_color(const char *hex)
+ hex[2], hex[2],
+ '\0'};
+ char *endptr;
+- tmp = strtol(str, &endptr, 16);
++ tmp = strtoll(str, &endptr, 16);
+ if (errno || *endptr != '\0' || tmp < 0) {
+ return (struct color) { -1, -1, -1, -1 };
+ }
+@@ -37,14 +37,14 @@ struct color hex_to_color(const char *hex)
+ hex[3], hex[3],
+ '\0'};
+ char *endptr;
+- tmp = strtol(str, &endptr, 16);
++ tmp = strtoll(str, &endptr, 16);
+ if (errno || *endptr != '\0' || tmp < 0) {
+ return (struct color) { -1, -1, -1, -1 };
+ }
+ val = tmp;
+ } else if (len == 6) {
+ char *endptr;
+- tmp = strtol(hex, &endptr, 16);
++ tmp = strtoll(hex, &endptr, 16);
+ if (errno || *endptr != '\0' || tmp < 0) {
+ return (struct color) { -1, -1, -1, -1 };
+ }
+@@ -53,7 +53,7 @@ struct color hex_to_color(const char *hex)
+ val |= 0xFFu;
+ } else if (len == 8) {
+ char *endptr;
+- tmp = strtol(hex, &endptr, 16);
++ tmp = strtoll(hex, &endptr, 16);
+ if (errno || *endptr != '\0' || tmp < 0) {
+ return (struct color) { -1, -1, -1, -1 };
+ }
+diff --git a/src/config.c b/src/config.c
+index 2b85028..556199d 100644
+--- a/src/config.c
++++ b/src/config.c
+@@ -1027,7 +1027,7 @@ uint32_t parse_uint32(const char *filename, size_t lineno, const char *str, bool
+ {
+ errno = 0;
+ char *endptr;
+- int64_t ret = strtoul(str, &endptr, 0);
++ int64_t ret = strtoull(str, &endptr, 0);
+ if (endptr == str || *endptr != '\0') {
+ PARSE_ERROR(filename, lineno, "Failed to parse \"%s\" as unsigned int.\n", str);
+ if (err) {
+@@ -1046,7 +1046,7 @@ int32_t parse_int32(const char *filename, size_t lineno, const char *str, bool *
+ {
+ errno = 0;
+ char *endptr;
+- int64_t ret = strtol(str, &endptr, 0);
++ int64_t ret = strtoll(str, &endptr, 0);
+ if (endptr == str || *endptr != '\0') {
+ PARSE_ERROR(filename, lineno, "Failed to parse \"%s\" as int.\n", str);
+ if (err) {
+@@ -1065,7 +1065,7 @@ struct uint32_percent parse_uint32_percent(const char *filename, size_t lineno,
+ {
+ errno = 0;
+ char *endptr;
+- int64_t val = strtoul(str, &endptr, 0);
++ int64_t val = strtoull(str, &endptr, 0);
+ bool percent = false;
+ if (endptr == str || (*endptr != '\0' && *endptr != '%')) {
+ PARSE_ERROR(filename, lineno, "Failed to parse \"%s\" as unsigned int.\n", str);
diff --git a/gnu/packages/patches/xfce4-settings-defaults.patch b/gnu/packages/patches/xfce4-settings-defaults.patch
index fe91ae5f70..ce5865c481 100644
--- a/gnu/packages/patches/xfce4-settings-defaults.patch
+++ b/gnu/packages/patches/xfce4-settings-defaults.patch
@@ -1,17 +1,18 @@
-This patch make Xfce use "gnome" as the default icon theme and enable font antialias.
+This patch make Xfce use "elementary-xfce-dark" as the default icon theme, "Greybird" as
+the default GTK theme and enable font antialias.
-Taken from ArchLinux.
-diff -upr xfce4-settings-4.12.0.orig/xfsettingsd/xsettings.xml xfce4-settings-4.12.0/xfsettingsd/xsettings.xml
---- xfce4-settings-4.12.0.orig/xfsettingsd/xsettings.xml 2015-02-24 03:33:11.000000000 +0200
-+++ xfce4-settings-4.12.0/xfsettingsd/xsettings.xml 2015-03-01 09:52:24.376869688 +0200
+diff -upr xfce4-settings-4.18.2.orig/xfsettingsd/xsettings.xml xfce4-settings-4.18.2/xfsettingsd/xsettings.xml
+--- xfce4-settings-4.18.2.orig/xfsettingsd/xsettings.xml 2023-02-11 16:55:53.000000000 +0800
++++ xfce4-settings-4.18.2/xfsettingsd/xsettings.xml 2023-05-14 19:20:43.919701586 +0800
@@ -6,8 +6,8 @@
- <?xml version="1.0" encoding="UTF-8"?>
+
<channel name="xsettings" version="1.0">
<property name="Net" type="empty">
- <property name="ThemeName" type="empty"/>
+- <property name="ThemeName" type="empty"/>
- <property name="IconThemeName" type="empty"/>
-+ <property name="IconThemeName" type="string" value="gnome"/>
++ <property name="ThemeName" type="string" value="Greybird"/>
++ <property name="IconThemeName" type="string" value="elementary-xfce-dark"/>
<property name="DoubleClickTime" type="int" value="400"/>
<property name="DoubleClickDistance" type="int" value="5"/>
<property name="DndDragThreshold" type="int" value="8"/>
diff --git a/gnu/packages/patches/xygrib-newer-proj.patch b/gnu/packages/patches/xygrib-newer-proj.patch
new file mode 100644
index 0000000000..740410557a
--- /dev/null
+++ b/gnu/packages/patches/xygrib-newer-proj.patch
@@ -0,0 +1,600 @@
+These two patches are already applied upstream.
+https://patch-diff.githubusercontent.com/raw/opengribs/XyGrib/pull/289.patch
+
+removing cmake/FindPROJ4.cmake removed since it didn't apply cleanly.
+
+From 95aa7b47bfe83ee276806acd8ce08867fd7a28d9 Mon Sep 17 00:00:00 2001
+From: Fyleo <fyleo45@gmail.com>
+Date: Tue, 7 Sep 2021 18:10:39 +0200
+Subject: [PATCH 1/2] port to PROJ 8.0 API
+
+---
+ CMakeLists.txt | 14 +++----
+ cmake/FindPROJ4.cmake | 77 ----------------------------------
+ cmake/FindPROJ8.cmake | 76 +++++++++++++++++++++++++++++++++
+ src/CMakeLists.txt | 2 +-
+ src/map/Projection.h | 7 +---
+ src/map/Projection_libproj.cpp | 30 ++++++-------
+ 6 files changed, 101 insertions(+), 105 deletions(-)
+ delete mode 100644 cmake/FindPROJ4.cmake
+ create mode 100644 cmake/FindPROJ8.cmake
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index b066a044..77633a21 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -122,22 +122,22 @@ find_path(OPENJPEG_INCLUDE_DIR
+ include_directories(${OPENJPEG_INCLUDE_DIR})
+
+ if(NOT WIN32)
+- include(cmake/FindPROJ4.cmake)
+- if(NOT PROJ4_FOUND)
+- message(FATAL_ERROR "PROJ.4 library not found!")
++ include(cmake/FindPROJ8.cmake)
++ if(NOT PROJ8_FOUND)
++ message(FATAL_ERROR "PROJ.8 library not found!")
+ endif()
+- include_directories(${PROJ4_INCLUDE_DIRS})
++ include_directories(${PROJ8_INCLUDE_DIRS})
+ endif()
+ if(WIN32)
+- find_library(PROJ4_LIBRARIES
++ find_library(PROJ8_LIBRARIES
+ NAME "libproj.a"
+ PATHS
+ $ENV{EXTERNLIBS}/lib
+ /opt/lib
+ REQUIRED
+ )
+- find_path(PROJ4_INCLUDE_DIRS
+- NAMES "proj_api.h"
++ find_path(PROJ8_INCLUDE_DIRS
++ NAMES "proj.h"
+ PATHS
+ $ENV{EXTERNLIBS}/include
+ /opt/include
+diff --git a/cmake/FindPROJ8.cmake b/cmake/FindPROJ8.cmake
+new file mode 100644
+index 00000000..33470ac2
+--- /dev/null
++++ b/cmake/FindPROJ8.cmake
+@@ -0,0 +1,76 @@
++# - Find PROJ8
++# Find the PROJ8 includes and library
++#
++# PROJ8_INCLUDE_DIR - Where to find PROJ8 includes
++# PROJ8_LIBRARIES - List of libraries when using PROJ8
++# PROJ8_FOUND - True if PROJ8 was found
++
++IF(PROJ8_INCLUDE_DIR)
++ SET(PROJ8_FIND_QUIETLY TRUE)
++ENDIF(PROJ8_INCLUDE_DIR)
++
++FIND_PATH(PROJ8_INCLUDE_DIR "proj.h"
++ PATHS
++ $ENV{EXTERNLIBS}/include
++ $ENV{EXTERNLIBS}/PROJ8/include
++ ~/Library/Frameworks/include
++ /Library/Frameworks/include
++ /usr/local/include
++ /usr/include
++ /sw/include # Fink
++ /opt/local/include # DarwinPorts
++ /opt/csw/include # Blastwave
++ /opt/include
++ DOC "PROJ8 - Headers"
++)
++
++SET(PROJ8_NAMES PROJ8 proj proj_8_0)
++SET(PROJ8_DBG_NAMES PROJ8D projD proj_8_0_1)
++
++FIND_LIBRARY(PROJ8_LIBRARY NAMES ${PROJ8_NAMES}
++ PATHS
++ $ENV{EXTERNLIBS}
++ $ENV{EXTERNLIBS}/PROJ8
++ ~/Library/Frameworks
++ /Library/Frameworks
++ /usr/local
++ /usr
++ /sw
++ /opt/local
++ /opt/csw
++ /opt
++ PATH_SUFFIXES lib lib64
++ DOC "PROJ8 - Library"
++)
++
++INCLUDE(FindPackageHandleStandardArgs)
++
++IF(MSVC)
++ # VisualStudio needs a debug version
++ FIND_LIBRARY(PROJ8_LIBRARY_DEBUG NAMES ${PROJ8_DBG_NAMES}
++ PATHS
++ $ENV{EXTERNLIBS}/PROJ8/lib
++ DOC "PROJ8 - Library (Debug)"
++ )
++
++ IF(PROJ8_LIBRARY_DEBUG AND PROJ8_LIBRARY)
++ SET(PROJ8_LIBRARIES optimized ${PROJ8_LIBRARY} debug ${PROJ8_LIBRARY_DEBUG})
++ ENDIF(PROJ8_LIBRARY_DEBUG AND PROJ8_LIBRARY)
++
++ FIND_PACKAGE_HANDLE_STANDARD_ARGS(PROJ8 DEFAULT_MSG PROJ8_LIBRARY PROJ8_LIBRARY_DEBUG PROJ8_INCLUDE_DIR)
++
++ MARK_AS_ADVANCED(PROJ8_LIBRARY PROJ8_LIBRARY_DEBUG PROJ8_INCLUDE_DIR)
++
++ELSE(MSVC)
++ # rest of the world
++ SET(PROJ8_LIBRARIES ${PROJ8_LIBRARY})
++
++ FIND_PACKAGE_HANDLE_STANDARD_ARGS(PROJ8 DEFAULT_MSG PROJ8_LIBRARY PROJ8_INCLUDE_DIR)
++
++ MARK_AS_ADVANCED(PROJ8_LIBRARY PROJ8_INCLUDE_DIR)
++
++ENDIF(MSVC)
++
++IF(PROJ8_FOUND)
++ SET(PROJ8_INCLUDE_DIRS ${PROJ8_INCLUDE_DIR})
++ENDIF(PROJ8_FOUND)
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index 2e5dbde4..9c96d49f 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -118,7 +118,7 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR}/util)
+ include_directories(${CMAKE_CURRENT_SOURCE_DIR}/map ${MAP_GENERATED_HEADERS})
+ include_directories(${CMAKE_CURRENT_SOURCE_DIR}/GUI ${GUI_GENERATED_HEADERS})
+
+-target_link_libraries(${CMAKE_PROJECT_NAME} g2clib gui util map ${LIBNOVA_LIBRARY} ${OPENJPEG_LIBRARIES} ${Qt5Core_LIBRARIES} ${Qt5Gui_LIBRARIES} ${Qt5Widgets_LIBRARIES} ${Qt5Network_LIBRARIES} ${Qt5Xml_LIBRARIES} ${Qt5PrintSupport_LIBRARIES} ${BZIP2_LIBRARIES} ${ZLIB_LIBRARIES} ${PROJ4_LIBRARIES} ${PNG_LIBRARIES})
++target_link_libraries(${CMAKE_PROJECT_NAME} g2clib gui util map ${LIBNOVA_LIBRARY} ${OPENJPEG_LIBRARIES} ${Qt5Core_LIBRARIES} ${Qt5Gui_LIBRARIES} ${Qt5Widgets_LIBRARIES} ${Qt5Network_LIBRARIES} ${Qt5Xml_LIBRARIES} ${Qt5PrintSupport_LIBRARIES} ${BZIP2_LIBRARIES} ${ZLIB_LIBRARIES} ${PROJ8_LIBRARIES} ${PNG_LIBRARIES})
+
+ # Sanitizers, part 2/2
+ if ( CMAKE_VERSION VERSION_GREATER 3.4 )
+diff --git a/src/map/Projection.h b/src/map/Projection.h
+index b4ca7f5b..d482e0dd 100644
+--- a/src/map/Projection.h
++++ b/src/map/Projection.h
+@@ -21,10 +21,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ #include <QObject>
+ #include <cstdio>
+
+-#ifndef ACCEPT_USE_OF_DEPRECATED_PROJ_API_H
+-#define ACCEPT_USE_OF_DEPRECATED_PROJ_API_H
+-#endif
+-#include "proj_api.h"
++#include "proj.h"
+
+ class Projection : public QObject
+ {
+@@ -141,7 +138,7 @@ class Projection_libproj : public Projection
+ int getProjection() {return currentProj;}
+
+ private :
+- projPJ libProj;
++ PJ * libProj;
+ int currentProj;
+ };
+
+diff --git a/src/map/Projection_libproj.cpp b/src/map/Projection_libproj.cpp
+index 1dcbd540..0299714e 100644
+--- a/src/map/Projection_libproj.cpp
++++ b/src/map/Projection_libproj.cpp
+@@ -93,9 +93,9 @@ void Projection_libproj::setProjection(int code)
+ params[nbpar++] = "no_defs";
+ params[nbpar++] = "over"; // allow longitude > 180°
+ // XXX ouch pj_init
+- libProj = pj_init(nbpar, (char **)params);
++ libProj = proj_create_argv(PJ_DEFAULT_CTX, nbpar, (char **)params);
+ if (!libProj)
+- printf("proj error: %s\n", pj_strerrno(pj_errno));
++ printf("proj error: %s\n", proj_errno_string(proj_errno(libProj)));
+ assert(libProj);
+ currentProj = code;
+ // libProj->over = 1; // allow longitude > 180°
+@@ -106,23 +106,23 @@ void Projection_libproj::setProjection(int code)
+ Projection_libproj::~Projection_libproj()
+ {
+ if (libProj != nullptr) {
+- pj_free(libProj);
++ proj_destroy(libProj);
+ }
+ }
+
+ //-------------------------------------------------------------------------------
+ void Projection_libproj::map2screen(double x, double y, int *i, int *j) const
+ {
+- projUV data, res;
++ PJ_COORD data, res;
+ if (y <= -90.0)
+ y = -90.0+1e-5;
+ if (y >= 90.0)
+ y = 90.0-1e-5;
+- data.v = y * DEG_TO_RAD;
+- data.u = x * DEG_TO_RAD;
+- res = pj_fwd(data, libProj);
+- *i = (int) (W/2.0 + scale * (res.u/111319.0-CX) + 0.5);
+- *j = (int) (H/2.0 - scale * (res.v/111319.0-CY) + 0.5);
++ data.uv.v = y;
++ data.uv.u = x;
++ res = proj_trans(libProj, PJ_FWD, data);
++ *i = (int) (W/2.0 + scale * (res.uv.u/111319.0-CX) + 0.5);
++ *j = (int) (H/2.0 - scale * (res.uv.v/111319.0-CY) + 0.5);
+ //printf("PROJ map2screen (%f %f) -> (%3d %3d)\n", x,y, *i,*j);
+ }
+
+@@ -130,12 +130,12 @@ void Projection_libproj::map2screen(double x, double y, int *i, int *j) const
+ //-------------------------------------------------------------------------------
+ void Projection_libproj::screen2map(int i, int j, double *x, double *y) const
+ {
+- projUV data, res;
+- data.u = ((i-W/2.0)/scale+ CX)*111319.0 ;
+- data.v = ((H/2.0-j)/scale+ CY)*111319.0 ;
+- res = pj_inv(data, libProj);
+- *x = (double)(res.u*RAD_TO_DEG);
+- *y = (double)(res.v*RAD_TO_DEG);
++ PJ_COORD data, res;
++ data.uv.u = ((i-W/2.0)/scale+ CX)*111319.0 ;
++ data.uv.v = ((H/2.0-j)/scale+ CY)*111319.0 ;
++ res = proj_trans(libProj, PJ_INV, data);
++ *x = (double)(res.uv.u);
++ *y = (double)(res.uv.v);
+ //printf("PROJ screen2map (%3d %3d) -> (%f %f)\n", i,j, *x,*y);
+ }
+ //--------------------------------------------------------------
+
+From 720a2db307f5c93c0079f9811a3c35cfe8bb12f5 Mon Sep 17 00:00:00 2001
+From: didier <didier@users.sourceforge.net>
+Date: Mon, 24 Jan 2022 13:13:42 +0100
+Subject: [PATCH 2/2] Use new libproj API if available
+
+---
+ CMakeLists.txt | 12 ++---
+ cmake/FindPROJ.cmake | 96 ++++++++++++++++++++++++++++++++++
+ cmake/FindPROJ8.cmake | 76 ---------------------------
+ src/CMakeLists.txt | 2 +-
+ src/map/Projection.h | 9 ++++
+ src/map/Projection_libproj.cpp | 32 +++++++++++-
+ 6 files changed, 143 insertions(+), 84 deletions(-)
+ create mode 100644 cmake/FindPROJ.cmake
+ delete mode 100644 cmake/FindPROJ8.cmake
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 77633a21..358a87a2 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -122,21 +122,21 @@ find_path(OPENJPEG_INCLUDE_DIR
+ include_directories(${OPENJPEG_INCLUDE_DIR})
+
+ if(NOT WIN32)
+- include(cmake/FindPROJ8.cmake)
+- if(NOT PROJ8_FOUND)
+- message(FATAL_ERROR "PROJ.8 library not found!")
++ include(cmake/FindPROJ.cmake)
++ if(NOT PROJ_FOUND)
++ message(FATAL_ERROR "PROJ library not found!")
+ endif()
+- include_directories(${PROJ8_INCLUDE_DIRS})
++ include_directories(${PROJ_INCLUDE_DIRS})
+ endif()
+ if(WIN32)
+- find_library(PROJ8_LIBRARIES
++ find_library(PROJ_LIBRARIES
+ NAME "libproj.a"
+ PATHS
+ $ENV{EXTERNLIBS}/lib
+ /opt/lib
+ REQUIRED
+ )
+- find_path(PROJ8_INCLUDE_DIRS
++ find_path(PROJ_INCLUDE_DIRS
+ NAMES "proj.h"
+ PATHS
+ $ENV{EXTERNLIBS}/include
+diff --git a/cmake/FindPROJ.cmake b/cmake/FindPROJ.cmake
+new file mode 100644
+index 00000000..33b53000
+--- /dev/null
++++ b/cmake/FindPROJ.cmake
+@@ -0,0 +1,96 @@
++# - Find PROJ
++# Find the PROJ includes and library
++#
++# PROJ_INCLUDE_DIR - Where to find PROJ includes
++# PROJ_LIBRARIES - List of libraries when using PROJ
++# PROJ_FOUND - True if PROJ was found
++
++IF(PROJ_INCLUDE_DIR)
++ SET(PROJ_FIND_QUIETLY TRUE)
++ENDIF(PROJ_INCLUDE_DIR)
++
++FIND_PATH(PROJ_INCLUDE_DIR "proj.h"
++ PATHS
++ $ENV{EXTERNLIBS}/include
++ $ENV{EXTERNLIBS}/PROJ/include
++ ~/Library/Frameworks/include
++ /Library/Frameworks/include
++ /usr/local/include
++ /usr/include
++ /sw/include # Fink
++ /opt/local/include # DarwinPorts
++ /opt/csw/include # Blastwave
++ /opt/include
++ DOC "PROJ - Headers"
++)
++
++IF(PROJ_INCLUDE_DIR)
++ SET(PROJ_NAMES PROJ proj proj_8_0)
++ SET(PROJ_DBG_NAMES PROJD projD proj_8_0_1)
++ELSE(PROJ_INCLUDE_DIR)
++ FIND_PATH(PROJ_INCLUDE_DIR "proj_api.h"
++ PATHS
++ $ENV{EXTERNLIBS}/include
++ $ENV{EXTERNLIBS}/PROJ/include
++ ~/Library/Frameworks/include
++ /Library/Frameworks/include
++ /usr/local/include
++ /usr/include
++ /sw/include # Fink
++ /opt/local/include # DarwinPorts
++ /opt/csw/include # Blastwave
++ /opt/include
++ DOC "PROJ - Headers"
++ )
++ ADD_DEFINITIONS(-DACCEPT_USE_OF_DEPRECATED_PROJ_API_H=1)
++ SET(PROJ_NAMES PROJ proj proj_4_9)
++ SET(PROJ_DBG_NAMES PROJD projD proj_4_9_D)
++ENDIF(PROJ_INCLUDE_DIR)
++
++FIND_LIBRARY(PROJ_LIBRARY NAMES ${PROJ_NAMES}
++ PATHS
++ $ENV{EXTERNLIBS}
++ $ENV{EXTERNLIBS}/PROJ
++ ~/Library/Frameworks
++ /Library/Frameworks
++ /usr/local
++ /usr
++ /sw
++ /opt/local
++ /opt/csw
++ /opt
++ PATH_SUFFIXES lib lib64
++ DOC "PROJ - Library"
++)
++
++INCLUDE(FindPackageHandleStandardArgs)
++
++IF(MSVC)
++ # VisualStudio needs a debug version
++ FIND_LIBRARY(PROJ_LIBRARY_DEBUG NAMES ${PROJ_DBG_NAMES}
++ PATHS
++ $ENV{EXTERNLIBS}/PROJ/lib
++ DOC "PROJ - Library (Debug)"
++ )
++
++ IF(PROJ_LIBRARY_DEBUG AND PROJ_LIBRARY)
++ SET(PROJ_LIBRARIES optimized ${PROJ_LIBRARY} debug ${PROJ_LIBRARY_DEBUG})
++ ENDIF(PROJ_LIBRARY_DEBUG AND PROJ_LIBRARY)
++
++ FIND_PACKAGE_HANDLE_STANDARD_ARGS(PROJ DEFAULT_MSG PROJ_LIBRARY PROJ_LIBRARY_DEBUG PROJ_INCLUDE_DIR)
++
++ MARK_AS_ADVANCED(PROJ_LIBRARY PROJ_LIBRARY_DEBUG PROJ_INCLUDE_DIR)
++
++ELSE(MSVC)
++ # rest of the world
++ SET(PROJ_LIBRARIES ${PROJ_LIBRARY})
++
++ FIND_PACKAGE_HANDLE_STANDARD_ARGS(PROJ DEFAULT_MSG PROJ_LIBRARY PROJ_INCLUDE_DIR)
++
++ MARK_AS_ADVANCED(PROJ_LIBRARY PROJ_INCLUDE_DIR)
++
++ENDIF(MSVC)
++
++IF(PROJ_FOUND)
++ SET(PROJ_INCLUDE_DIRS ${PROJ_INCLUDE_DIR})
++ENDIF(PROJ_FOUND)
+diff --git a/cmake/FindPROJ8.cmake b/cmake/FindPROJ8.cmake
+deleted file mode 100644
+index 33470ac2..00000000
+--- a/cmake/FindPROJ8.cmake
++++ /dev/null
+@@ -1,76 +0,0 @@
+-# - Find PROJ8
+-# Find the PROJ8 includes and library
+-#
+-# PROJ8_INCLUDE_DIR - Where to find PROJ8 includes
+-# PROJ8_LIBRARIES - List of libraries when using PROJ8
+-# PROJ8_FOUND - True if PROJ8 was found
+-
+-IF(PROJ8_INCLUDE_DIR)
+- SET(PROJ8_FIND_QUIETLY TRUE)
+-ENDIF(PROJ8_INCLUDE_DIR)
+-
+-FIND_PATH(PROJ8_INCLUDE_DIR "proj.h"
+- PATHS
+- $ENV{EXTERNLIBS}/include
+- $ENV{EXTERNLIBS}/PROJ8/include
+- ~/Library/Frameworks/include
+- /Library/Frameworks/include
+- /usr/local/include
+- /usr/include
+- /sw/include # Fink
+- /opt/local/include # DarwinPorts
+- /opt/csw/include # Blastwave
+- /opt/include
+- DOC "PROJ8 - Headers"
+-)
+-
+-SET(PROJ8_NAMES PROJ8 proj proj_8_0)
+-SET(PROJ8_DBG_NAMES PROJ8D projD proj_8_0_1)
+-
+-FIND_LIBRARY(PROJ8_LIBRARY NAMES ${PROJ8_NAMES}
+- PATHS
+- $ENV{EXTERNLIBS}
+- $ENV{EXTERNLIBS}/PROJ8
+- ~/Library/Frameworks
+- /Library/Frameworks
+- /usr/local
+- /usr
+- /sw
+- /opt/local
+- /opt/csw
+- /opt
+- PATH_SUFFIXES lib lib64
+- DOC "PROJ8 - Library"
+-)
+-
+-INCLUDE(FindPackageHandleStandardArgs)
+-
+-IF(MSVC)
+- # VisualStudio needs a debug version
+- FIND_LIBRARY(PROJ8_LIBRARY_DEBUG NAMES ${PROJ8_DBG_NAMES}
+- PATHS
+- $ENV{EXTERNLIBS}/PROJ8/lib
+- DOC "PROJ8 - Library (Debug)"
+- )
+-
+- IF(PROJ8_LIBRARY_DEBUG AND PROJ8_LIBRARY)
+- SET(PROJ8_LIBRARIES optimized ${PROJ8_LIBRARY} debug ${PROJ8_LIBRARY_DEBUG})
+- ENDIF(PROJ8_LIBRARY_DEBUG AND PROJ8_LIBRARY)
+-
+- FIND_PACKAGE_HANDLE_STANDARD_ARGS(PROJ8 DEFAULT_MSG PROJ8_LIBRARY PROJ8_LIBRARY_DEBUG PROJ8_INCLUDE_DIR)
+-
+- MARK_AS_ADVANCED(PROJ8_LIBRARY PROJ8_LIBRARY_DEBUG PROJ8_INCLUDE_DIR)
+-
+-ELSE(MSVC)
+- # rest of the world
+- SET(PROJ8_LIBRARIES ${PROJ8_LIBRARY})
+-
+- FIND_PACKAGE_HANDLE_STANDARD_ARGS(PROJ8 DEFAULT_MSG PROJ8_LIBRARY PROJ8_INCLUDE_DIR)
+-
+- MARK_AS_ADVANCED(PROJ8_LIBRARY PROJ8_INCLUDE_DIR)
+-
+-ENDIF(MSVC)
+-
+-IF(PROJ8_FOUND)
+- SET(PROJ8_INCLUDE_DIRS ${PROJ8_INCLUDE_DIR})
+-ENDIF(PROJ8_FOUND)
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index 9c96d49f..d1c42f95 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -118,7 +118,7 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR}/util)
+ include_directories(${CMAKE_CURRENT_SOURCE_DIR}/map ${MAP_GENERATED_HEADERS})
+ include_directories(${CMAKE_CURRENT_SOURCE_DIR}/GUI ${GUI_GENERATED_HEADERS})
+
+-target_link_libraries(${CMAKE_PROJECT_NAME} g2clib gui util map ${LIBNOVA_LIBRARY} ${OPENJPEG_LIBRARIES} ${Qt5Core_LIBRARIES} ${Qt5Gui_LIBRARIES} ${Qt5Widgets_LIBRARIES} ${Qt5Network_LIBRARIES} ${Qt5Xml_LIBRARIES} ${Qt5PrintSupport_LIBRARIES} ${BZIP2_LIBRARIES} ${ZLIB_LIBRARIES} ${PROJ8_LIBRARIES} ${PNG_LIBRARIES})
++target_link_libraries(${CMAKE_PROJECT_NAME} g2clib gui util map ${LIBNOVA_LIBRARY} ${OPENJPEG_LIBRARIES} ${Qt5Core_LIBRARIES} ${Qt5Gui_LIBRARIES} ${Qt5Widgets_LIBRARIES} ${Qt5Network_LIBRARIES} ${Qt5Xml_LIBRARIES} ${Qt5PrintSupport_LIBRARIES} ${BZIP2_LIBRARIES} ${ZLIB_LIBRARIES} ${PROJ_LIBRARIES} ${PNG_LIBRARIES})
+
+ # Sanitizers, part 2/2
+ if ( CMAKE_VERSION VERSION_GREATER 3.4 )
+diff --git a/src/map/Projection.h b/src/map/Projection.h
+index d482e0dd..9ac13426 100644
+--- a/src/map/Projection.h
++++ b/src/map/Projection.h
+@@ -20,8 +20,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ #define PROJECTION_H
+ #include <QObject>
+ #include <cstdio>
++//#define ACCEPT_USE_OF_DEPRECATED_PROJ_API_H
+
++#ifdef ACCEPT_USE_OF_DEPRECATED_PROJ_API_H
++#include "proj_api.h"
++#else
+ #include "proj.h"
++#endif
+
+ class Projection : public QObject
+ {
+@@ -138,7 +143,11 @@ class Projection_libproj : public Projection
+ int getProjection() {return currentProj;}
+
+ private :
++#ifdef ACCEPT_USE_OF_DEPRECATED_PROJ_API_H
++ projPJ libProj;
++#else
+ PJ * libProj;
++#endif
+ int currentProj;
+ };
+
+diff --git a/src/map/Projection_libproj.cpp b/src/map/Projection_libproj.cpp
+index 0299714e..e2ea525c 100644
+--- a/src/map/Projection_libproj.cpp
++++ b/src/map/Projection_libproj.cpp
+@@ -92,10 +92,15 @@ void Projection_libproj::setProjection(int code)
+ params[nbpar++] = "ellps=WGS84";
+ params[nbpar++] = "no_defs";
+ params[nbpar++] = "over"; // allow longitude > 180°
+- // XXX ouch pj_init
++#ifdef ACCEPT_USE_OF_DEPRECATED_PROJ_API_H
++ libProj = pj_init(nbpar, (char **)params);
++ if (!libProj)
++ printf("proj error: %s\n", pj_strerrno(pj_errno));
++#else
+ libProj = proj_create_argv(PJ_DEFAULT_CTX, nbpar, (char **)params);
+ if (!libProj)
+ printf("proj error: %s\n", proj_errno_string(proj_errno(libProj)));
++#endif
+ assert(libProj);
+ currentProj = code;
+ // libProj->over = 1; // allow longitude > 180°
+@@ -106,23 +111,39 @@ void Projection_libproj::setProjection(int code)
+ Projection_libproj::~Projection_libproj()
+ {
+ if (libProj != nullptr) {
++#ifdef ACCEPT_USE_OF_DEPRECATED_PROJ_API_H
++ pj_free(libProj);
++#else
+ proj_destroy(libProj);
++#endif
+ }
+ }
+
+ //-------------------------------------------------------------------------------
+ void Projection_libproj::map2screen(double x, double y, int *i, int *j) const
+ {
++#ifdef ACCEPT_USE_OF_DEPRECATED_PROJ_API_H
++ projUV data, res;
++#else
+ PJ_COORD data, res;
++#endif
+ if (y <= -90.0)
+ y = -90.0+1e-5;
+ if (y >= 90.0)
+ y = 90.0-1e-5;
++#ifdef ACCEPT_USE_OF_DEPRECATED_PROJ_API_H
++ data.v = y * DEG_TO_RAD;
++ data.u = x * DEG_TO_RAD;
++ res = pj_fwd(data, libProj);
++ *i = (int) (W/2.0 + scale * (res.u/111319.0-CX) + 0.5);
++ *j = (int) (H/2.0 - scale * (res.v/111319.0-CY) + 0.5);
++#else
+ data.uv.v = y;
+ data.uv.u = x;
+ res = proj_trans(libProj, PJ_FWD, data);
+ *i = (int) (W/2.0 + scale * (res.uv.u/111319.0-CX) + 0.5);
+ *j = (int) (H/2.0 - scale * (res.uv.v/111319.0-CY) + 0.5);
++#endif
+ //printf("PROJ map2screen (%f %f) -> (%3d %3d)\n", x,y, *i,*j);
+ }
+
+@@ -130,12 +151,21 @@ void Projection_libproj::map2screen(double x, double y, int *i, int *j) const
+ //-------------------------------------------------------------------------------
+ void Projection_libproj::screen2map(int i, int j, double *x, double *y) const
+ {
++#ifdef ACCEPT_USE_OF_DEPRECATED_PROJ_API_H
++ projUV data, res;
++ data.u = ((i-W/2.0)/scale+ CX)*111319.0 ;
++ data.v = ((H/2.0-j)/scale+ CY)*111319.0 ;
++ res = pj_inv(data, libProj);
++ *x = (double)(res.u*RAD_TO_DEG);
++ *y = (double)(res.v*RAD_TO_DEG);
++#else
+ PJ_COORD data, res;
+ data.uv.u = ((i-W/2.0)/scale+ CX)*111319.0 ;
+ data.uv.v = ((H/2.0-j)/scale+ CY)*111319.0 ;
+ res = proj_trans(libProj, PJ_INV, data);
+ *x = (double)(res.uv.u);
+ *y = (double)(res.uv.v);
++#endif
+ //printf("PROJ screen2map (%3d %3d) -> (%f %f)\n", i,j, *x,*y);
+ }
+ //--------------------------------------------------------------