diff options
author | Liliana Marie Prikler <liliana.prikler@gmail.com> | 2023-05-27 17:16:45 +0200 |
---|---|---|
committer | Liliana Marie Prikler <liliana.prikler@gmail.com> | 2023-05-27 17:16:45 +0200 |
commit | 52b4ce275fda390172fcce9797300ba0d5a89d59 (patch) | |
tree | bc65643e9756d6fcc3d8dd58f8b50d59ea3f0ee5 /gnu/packages/patches | |
parent | 00d8a4116427fb69f79e334bfbf91920a0d871d2 (diff) | |
parent | b96b82bcd4bc24529941ff74a91432481f1a71b5 (diff) | |
download | guix-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.patch | 81 | ||||
-rw-r--r-- | gnu/packages/patches/laby-use-tmpdir-from-runtime.patch | 39 | ||||
-rw-r--r-- | gnu/packages/patches/mariadb-rocksdb-atomic-linking.patch | 54 | ||||
-rw-r--r-- | gnu/packages/patches/mesa-opencl-all-targets.patch | 25 | ||||
-rw-r--r-- | gnu/packages/patches/openmw-assume-nonconst-SIGSTKSZ.patch | 39 | ||||
-rw-r--r-- | gnu/packages/patches/tofi-32bit-compat.patch | 87 | ||||
-rw-r--r-- | gnu/packages/patches/xfce4-settings-defaults.patch | 17 | ||||
-rw-r--r-- | gnu/packages/patches/xygrib-newer-proj.patch | 600 |
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); + } + //-------------------------------------------------------------- |