XyGrib: revbump for proj, fix build
The current release does not support the new API of PROJ (>=8.0.0); included patch aims to solve the issue. Conditional make_build_args prevents crossbuilding with failing ninja ("unknown target LINK=${XBPS_CROSS_TRIPLET}-c++"). I suspect that this approach is a relique of the past and therefore is removed from the template. No other issues did arise due to this change.
This commit is contained in:
parent
e8abe0a01b
commit
a0c45e5492
|
@ -0,0 +1,301 @@
|
|||
reference: https://github.com/opengribs/XyGrib/pull/289
|
||||
|
||||
diff a/CMakeLists.txt b/CMakeLists.txt
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -124,11 +124,11 @@
|
||||
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/FindPROJ.cmake)
|
||||
+ if(NOT PROJ_FOUND)
|
||||
+ message(FATAL_ERROR "PROJ library not found!")
|
||||
endif()
|
||||
- include_directories(${PROJ4_INCLUDE_DIRS})
|
||||
+ include_directories(${PROJ_INCLUDE_DIRS})
|
||||
endif()
|
||||
if(WIN32)
|
||||
find_library(PROJ4_LIBRARIES
|
||||
diff a/src/CMakeLists.txt b/src/CMakeLists.txt
|
||||
--- a/src/CMakeLists.txt
|
||||
+++ b/src/CMakeLists.txt
|
||||
@@ -122,7 +122,7 @@
|
||||
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} ${PROJ_LIBRARIES} ${PNG_LIBRARIES})
|
||||
|
||||
# Sanitizers, part 2/2
|
||||
if ( CMAKE_VERSION VERSION_GREATER 3.4 )
|
||||
diff a/src/map/Projection.h b/src/map/Projection.h
|
||||
--- a/src/map/Projection.h
|
||||
+++ b/src/map/Projection.h
|
||||
@@ -21,10 +21,7 @@
|
||||
#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 @@
|
||||
int getProjection() {return currentProj;}
|
||||
|
||||
private :
|
||||
- projPJ libProj;
|
||||
+ PJ * libProj;
|
||||
int currentProj;
|
||||
};
|
||||
|
||||
diff a/src/map/Projection_libproj.cpp b/src/map/Projection_libproj.cpp
|
||||
--- a/src/map/Projection_libproj.cpp
|
||||
+++ b/src/map/Projection_libproj.cpp
|
||||
@@ -92,10 +92,9 @@
|
||||
params[nbpar++] = "ellps=WGS84";
|
||||
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 +105,23 @@
|
||||
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 +129,12 @@
|
||||
//-------------------------------------------------------------------------------
|
||||
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);
|
||||
}
|
||||
//--------------------------------------------------------------
|
||||
--- a/cmake/FindPROJ4.cmake
|
||||
+++ /dev/null
|
||||
@@ -1,76 +0,0 @@
|
||||
-# - Find PROJ4
|
||||
-# Find the PROJ4 includes and library
|
||||
-#
|
||||
-# PROJ4_INCLUDE_DIR - Where to find PROJ4 includes
|
||||
-# PROJ4_LIBRARIES - List of libraries when using PROJ4
|
||||
-# PROJ4_FOUND - True if PROJ4 was found
|
||||
-
|
||||
-IF(PROJ4_INCLUDE_DIR)
|
||||
- SET(PROJ4_FIND_QUIETLY TRUE)
|
||||
-ENDIF(PROJ4_INCLUDE_DIR)
|
||||
-
|
||||
-FIND_PATH(PROJ4_INCLUDE_DIR "proj_api.h"
|
||||
- PATHS
|
||||
- $ENV{EXTERNLIBS}/include
|
||||
- $ENV{EXTERNLIBS}/proj4/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 "PROJ4 - Headers"
|
||||
-)
|
||||
-
|
||||
-SET(PROJ4_NAMES Proj4 proj proj_4_9)
|
||||
-SET(PROJ4_DBG_NAMES Proj4D projD proj_4_9_D)
|
||||
-
|
||||
-FIND_LIBRARY(PROJ4_LIBRARY NAMES ${PROJ4_NAMES}
|
||||
- PATHS
|
||||
- $ENV{EXTERNLIBS}
|
||||
- $ENV{EXTERNLIBS}/proj4
|
||||
- ~/Library/Frameworks
|
||||
- /Library/Frameworks
|
||||
- /usr/local
|
||||
- /usr
|
||||
- /sw
|
||||
- /opt/local
|
||||
- /opt/csw
|
||||
- /opt
|
||||
- PATH_SUFFIXES lib lib64
|
||||
- DOC "PROJ4 - Library"
|
||||
-)
|
||||
-
|
||||
-INCLUDE(FindPackageHandleStandardArgs)
|
||||
-
|
||||
-IF(MSVC)
|
||||
- # VisualStudio needs a debug version
|
||||
- FIND_LIBRARY(PROJ4_LIBRARY_DEBUG NAMES ${PROJ4_DBG_NAMES}
|
||||
- PATHS
|
||||
- $ENV{EXTERNLIBS}/proj4/lib
|
||||
- DOC "PROJ4 - Library (Debug)"
|
||||
- )
|
||||
-
|
||||
- IF(PROJ4_LIBRARY_DEBUG AND PROJ4_LIBRARY)
|
||||
- SET(PROJ4_LIBRARIES optimized ${PROJ4_LIBRARY} debug ${PROJ4_LIBRARY_DEBUG})
|
||||
- ENDIF(PROJ4_LIBRARY_DEBUG AND PROJ4_LIBRARY)
|
||||
-
|
||||
- FIND_PACKAGE_HANDLE_STANDARD_ARGS(PROJ4 DEFAULT_MSG PROJ4_LIBRARY PROJ4_LIBRARY_DEBUG PROJ4_INCLUDE_DIR)
|
||||
-
|
||||
- MARK_AS_ADVANCED(PROJ4_LIBRARY PROJ4_LIBRARY_DEBUG PROJ4_INCLUDE_DIR)
|
||||
-
|
||||
-ELSE(MSVC)
|
||||
- # rest of the world
|
||||
- SET(PROJ4_LIBRARIES ${PROJ4_LIBRARY})
|
||||
-
|
||||
- FIND_PACKAGE_HANDLE_STANDARD_ARGS(PROJ4 DEFAULT_MSG PROJ4_LIBRARY PROJ4_INCLUDE_DIR)
|
||||
-
|
||||
- MARK_AS_ADVANCED(PROJ4_LIBRARY PROJ4_INCLUDE_DIR)
|
||||
-
|
||||
-ENDIF(MSVC)
|
||||
-
|
||||
-IF(PROJ4_FOUND)
|
||||
- SET(PROJ4_INCLUDE_DIRS ${PROJ4_INCLUDE_DIR})
|
||||
-ENDIF(PROJ4_FOUND)
|
||||
--- /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)
|
|
@ -1,7 +1,7 @@
|
|||
# Template file for 'XyGrib'
|
||||
pkgname=XyGrib
|
||||
version=1.2.6.1
|
||||
revision=3
|
||||
revision=4
|
||||
build_style=cmake
|
||||
hostmakedepends="qt5-devel pkg-config"
|
||||
makedepends="jasper-devel libnova-devel nettle-devel proj-devel qt5-devel
|
||||
|
@ -13,10 +13,6 @@ homepage="https://opengribs.org/"
|
|||
distfiles="https://github.com/opengribs/XyGrib/archive/v${version}.tar.gz"
|
||||
checksum=2dc6099293ae6f7a4bfbfc0cab590cf7ad48241d608e6d7a76e35961b9fc2157
|
||||
|
||||
if [ "$CROSS_BUILD" ]; then
|
||||
make_build_args="LINK=${XBPS_CROSS_TRIPLET}-c++"
|
||||
fi
|
||||
|
||||
post_patch() {
|
||||
vsed -i -e '\!/usr/include/openjpeg-2.3!i /usr/include/openjpeg-2.4' \
|
||||
CMakeLists.txt
|
||||
|
|
Loading…
Reference in New Issue