Skip to content
Commits on Source (15)
......@@ -11,6 +11,6 @@ A BibTeX entry for LaTeX users is
title = {{PROJ} coordinate transformation software library},
author = {{PROJ contributors}},
organization = {Open Source Geospatial Foundation},
year = {2019},
year = {2020},
url = {https://proj.org/},
}
......@@ -28,6 +28,15 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
message(STATUS "Requiring C++${CMAKE_CXX_STANDARD} - done")
# Set C99 version
# Make CMAKE_C_STANDARD available as cache option overridable by user
set(CMAKE_C_STANDARD 99
CACHE STRING "C standard version to use (default is 99)")
message(STATUS "Requiring C${CMAKE_C_STANDARD}")
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_C_EXTENSIONS OFF)
message(STATUS "Requiring C${CMAKE_C_STANDARD} - done")
# Set global -fvisibility=hidden
set(CMAKE_C_VISIBILITY_PRESET hidden)
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
......@@ -52,7 +61,6 @@ elseif("${CMAKE_C_COMPILER_ID}" MATCHES "Clang")
set(PROJ_C_WARN_FLAGS ${PROJ_common_WARN_FLAGS}
-Wmissing-prototypes
-Wfloat-conversion
-Wc99-extensions
-Wc11-extensions
)
set(PROJ_CXX_WARN_FLAGS ${PROJ_common_WARN_FLAGS}
......@@ -95,9 +103,9 @@ colormsg(_HIBLUE_ "Configuring PROJ:")
#PROJ version information
################################################################################
include(ProjVersion)
proj_version(MAJOR 6 MINOR 2 PATCH 1)
set(PROJ_API_VERSION "17")
set(PROJ_BUILD_VERSION "17.1.2")
proj_version(MAJOR 6 MINOR 3 PATCH 0)
set(PROJ_API_VERSION "18")
set(PROJ_BUILD_VERSION "18.0.3")
################################################################################
# Build features and variants
......@@ -119,6 +127,12 @@ if(NOT SQLITE3_FOUND)
message(SEND_ERROR "sqlite3 dependency not found!")
endif()
# Would build and run with older versons, but with horrible performance
# See https://github.com/OSGeo/PROJ/issues/1718
IF("${SQLITE3_VERSION}" VERSION_LESS "3.11")
message(SEND_ERROR "sqlite3 >= 3.11 required!")
ENDIF()
################################################################################
# threading configuration
################################################################################
......@@ -134,23 +148,6 @@ else()
set(CMAKE_REQUIRED_LIBRARIES m)
set(CMAKE_REQUIRED_FLAGS "${CMAKE_C_FLAGS} -Werror -Wall")
endif()
# Check whether the C99 math function: hypot, atanh, etc. are available.
check_c_source_compiles("
#include <math.h>
int main() {
int q;
return (int)(
hypot(3.0, 4.0) + atanh(0.8) + cbrt(8.0) +
remquo(100.0, 90.0, &q) +
remainder(100.0, 90.0) + copysign(1.0, -0.0) +
log1p(0.1) + asinh(0.1)) + isnan(0.0);
}
" C99_MATH)
if(C99_MATH)
add_definitions(-DHAVE_C99_MATH=1)
else()
add_definitions(-DHAVE_C99_MATH=0)
endif()
if(Threads_FOUND AND CMAKE_USE_PTHREADS_INIT)
set(CMAKE_REQUIRED_LIBRARIES
......
......@@ -59,7 +59,7 @@ the `configure' script does not know about. You can give `configure'
initial values for variables by setting them in the environment. Using
a Bourne-compatible shell, you can do that on the command line like
this:
CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
CC=c99 CFLAGS=-O2 LIBS=-lposix ./configure
Or on systems that have the `env' program, you can do it like this:
env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
......
6.3.0 Release Notes
-------------------
Updates
-------
o Database: tune accuracy of Canadian NTv1 file w.r.t NTv2 (#1812)
o Modify verbosity level of some debug/trace messages (#1811)
o projinfo: no longer call createBoundCRSToWGS84IfPossible() for WKT1:GDAL
(#1810)
o proj_trans: add retry logic to select other transformation if the best one
fails. (#1809)
o BoundCRS::identify(): improvements to discard CRS that aren't relevant
(#1802)
o Database: update to IGNF v3.1.0 (#1785)
o Build: Only export symbols if building DLL (#1773)
o Database: update ESRI entries with ArcGIS Desktop version 10.8.0 database
(#1762)
o createOperations(): chain operations whose middle CRSs are not identical but
have the same datum (#1734)
o import/export PROJJSON: support a interpolation_crs key to geoid_model
(#1732)
o Database: update to EPSG v9.8.4 (#1725)
o Add support for GEOIDMODEL (#1710)
o Better filtering based on extent and performance improvements (#1709)
Bug fixes
---------
o Horizontal grid shift: fix issue on iterative inverse computation when
switching between (sub)grids (#1797)
o createOperations(): make filtering out of 'uninteresting' operations less
aggressive (#1788)
o Make EPSG:102100 resolve to ESRI:102100 (#1786)
o ob_tran: restore traditional handling of +to_meter with pj_transform() and
proj utility (#1783)
o CRS identification: use case insensitive comparison for authority name
(#1780)
o normalizeForVisualization() and other methods applying on a ProjectedCRS: do
not mess the derivingConversion object of the original object (#1746)
o createOperations(): fix transformation computation from/to a CRS with
+geoidgrids and +vunits != m (#1731)
o Fix proj_assign_context()/pj_set_ctx() with pipelines and alternative coord
operations (#1726)
o Database: add an auxiliary concatenated_operation_step table to allow
arbitrary number of steps (#1696)
o Fix errors running gie-based tests in Debug mode on Windows (#1688)
THANKS TO
---------
Pedro Venancio
Owen Rudge
Nyall Dawson
Mateusz Łoskot
Markus Neteler
Juergen E. Fischer
Joaquim Luis
Jeff McKenna
Jakob Egger
Guillaume Lostis
GitHub user @yonarw
Asa Packer
Joe Mann
Stephan Hügel
Simon Schneegans
R. Schmunk
Alan D. Snow
Chris Crook
Howard Butler
Fabrice Fontaine
Kai Pastor
Martin Desruisseaux
Dalia Prizginiene
Mike Taves
Charles Karney
Kristian Evers
Even Rouault
6.2.1 Release Notes
-------------------
......
......@@ -17,18 +17,21 @@ See the NEWS file for changes between versions.
The following command line utilities are included in the PROJ package:
- proj, for cartographic projection of geodetic coordinates
- cs2cs, for transformation from one CRS to another CRS.
- geod, for geodesic (great circle) computations.
- cct, for generic Coordinate Conversions and Transformations.
- gie, the Geospatial Integrity Investigation Environment.
- projinfo, for geodetic object and coordinate operation queries
- `proj`: for cartographic projection of geodetic coordinates
- `cs2cs`: for transformation from one CRS to another CRS.
- `geod`: for geodesic (great circle) computations.
- `cct`: for generic Coordinate Conversions and Transformations.
- `gie`: the Geospatial Integrity Investigation Environment.
- `projinfo`: for geodetic object and coordinate operation queries
> More information on the utilities can be found on the [PROJ website](https://proj.org/apps).
## Installation
### Build dependencies
PROJ requires C and C++11 compilers.
It also requires SQLite3 (headers, library and executable).
It also requires SQLite3 (headers, library and executable). The minimum
version of SQLite3 required is 3.11
### Building with CMake
......@@ -99,14 +102,14 @@ which will generate a configure script that can be used as described above.
### Distribution files and format
Sources are distributed in one or more files. The principle elements
of the system are in a compress tar file named `proj-x.y.z.tar.gz` where
"x" will indicate major release number, "y" indicates minor release
number and "z" indicates the patch number of the release.
of the system are stored in a compressed tar file named `proj-x.y.z.tar.gz` where
"x" will indicate the major release number, "y" indicates the minor release
number, and "z" indicates the patch number of the release.
In addition to the PROJ software package, distributions of datum
conversion grid files and PROJ parameter files are also available.
The grid package is distributed under the name `proj-datumgrid-x.y.zip`,
where "x" is the major release version and "y" the minor release
where "x" is the major release version and "y" is the minor release
version numbers. Similarly regional packages are distributed. The
regional packages contain resources that are not essential to the
functionality of PROJ but still of value to users in the region
......@@ -114,7 +117,7 @@ specific to the package. All grids that were in proj-datumgrids-1.6
remain in proj-datumgrids-1.7; the regional datumgrid files contain
grids for datums not previously supported (prior to PROJ 5.0.0).
The resource packages can be downloaded from the PROJ.4 website.
The resource packages can be downloaded from the [PROJ website](https://proj.org/download.html).
More info on the contents of the various resource packages can be
found at the
......
# PROJ
[![Travis Status](https://travis-ci.com/OSGeo/PROJ.svg?branch=master)](https://travis-ci.com/OSGeo/PROJ)
[![AppVeyor Status](https://ci.appveyor.com/api/projects/status/por8r52bjt8ocga9?svg=true)](https://ci.appveyor.com/project/OSGeo/PROJ)
[![AppVeyor Status](https://ci.appveyor.com/api/projects/status/github/OSGeo/PROJ?branch=master&svg=true)](https://ci.appveyor.com/project/OSGeo/PROJ?branch=master)
[![Coveralls Status](https://coveralls.io/repos/github/OSGeo/PROJ/badge.svg?branch=master)](https://coveralls.io/github/OSGeo/PROJ?branch=master)
[![Gitter](https://badges.gitter.im/OSGeo/proj.4.svg)](https://gitter.im/OSGeo/proj.4)
[![Mailing List](https://img.shields.io/badge/PROJ-mailing%20list-4eb899.svg)](http://lists.osgeo.org/mailman/listinfo/proj)
......@@ -23,18 +23,21 @@ See the NEWS file for changes between versions.
The following command line utilities are included in the PROJ package:
- proj, for cartographic projection of geodetic coordinates
- cs2cs, for transformation from one CRS to another CRS.
- geod, for geodesic (great circle) computations.
- cct, for generic Coordinate Conversions and Transformations.
- gie, the Geospatial Integrity Investigation Environment.
- projinfo, for geodetic object and coordinate operation queries
- `proj`: for cartographic projection of geodetic coordinates
- `cs2cs`: for transformation from one CRS to another CRS.
- `geod`: for geodesic (great circle) computations.
- `cct`: for generic Coordinate Conversions and Transformations.
- `gie`: the Geospatial Integrity Investigation Environment.
- `projinfo`: for geodetic object and coordinate operation queries
> More information on the utilities can be found on the [PROJ website](https://proj.org/apps).
## Installation
### Build dependencies
PROJ requires C and C++11 compilers.
It also requires SQLite3 (headers, library and executable).
It also requires SQLite3 (headers, library and executable). The minimum
version of SQLite3 required is 3.11
### Building with CMake
......@@ -105,14 +108,14 @@ which will generate a configure script that can be used as described above.
### Distribution files and format
Sources are distributed in one or more files. The principle elements
of the system are in a compress tar file named `proj-x.y.z.tar.gz` where
"x" will indicate major release number, "y" indicates minor release
number and "z" indicates the patch number of the release.
of the system are stored in a compressed tar file named `proj-x.y.z.tar.gz` where
"x" will indicate the major release number, "y" indicates the minor release
number, and "z" indicates the patch number of the release.
In addition to the PROJ software package, distributions of datum
conversion grid files and PROJ parameter files are also available.
The grid package is distributed under the name `proj-datumgrid-x.y.zip`,
where "x" is the major release version and "y" the minor release
where "x" is the major release version and "y" is the minor release
version numbers. Similarly regional packages are distributed. The
regional packages contain resources that are not essential to the
functionality of PROJ but still of value to users in the region
......@@ -120,7 +123,7 @@ specific to the package. All grids that were in proj-datumgrids-1.6
remain in proj-datumgrids-1.7; the regional datumgrid files contain
grids for datums not previously supported (prior to PROJ 5.0.0).
The resource packages can be downloaded from the PROJ.4 website.
The resource packages can be downloaded from the [PROJ website](https://proj.org/download.html).
More info on the contents of the various resource packages can be
found at the
......
......@@ -5,11 +5,24 @@
file(RELATIVE_PATH PROJECT_ROOT_DIR
${CMAKE_INSTALL_PREFIX}/${CMAKECONFIGDIR} ${CMAKE_INSTALL_PREFIX})
if(CMAKE_CROSSCOMPILING)
set(CMAKE_CROSSCOMPILING_STR "ON")
else()
set(CMAKE_CROSSCOMPILING_STR "OFF")
endif()
# Variables needed by ${PROJECT_NAME_LOWER}-config-version.cmake
if (MSVC)
# For checking the compatibility of MSVC_TOOLSET_VERSION; see
# https://docs.microsoft.com/en-us/cpp/porting/overview-of-potential-upgrade-issues-visual-cpp
# Assume major version number is obtained by dropping the last decimal
# digit.
math (EXPR MSVC_TOOLSET_MAJOR "${MSVC_TOOLSET_VERSION}/10")
else ()
set (MSVC_TOOLSET_VERSION 0)
set (MSVC_TOOLSET_MAJOR 0)
endif ()
if (CMAKE_CROSSCOMPILING)
# Ensure that all "true" (resp. "false") settings are represented by
# the same string.
set (CMAKE_CROSSCOMPILING_STR "ON")
else ()
set (CMAKE_CROSSCOMPILING_STR "OFF")
endif ()
string(TOLOWER "${PROJECT_NAME}" PROJECT_NAME_LOWER)
configure_file(project-config.cmake.in project-config.cmake @ONLY)
......
......@@ -10,6 +10,7 @@
# and following variables are set:
# SQLITE3_INCLUDE_DIR
# SQLITE3_LIBRARY
# SQLITE3_VERSION
# find_path and find_library normally search standard locations
......@@ -53,9 +54,21 @@ if(SQLITE3_INCLUDE_DIR AND SQLITE3_LIBRARY)
set(SQLITE3_FOUND TRUE)
endif()
# Extract version information from the header file
if(SQLITE3_INCLUDE_DIR)
file(STRINGS ${SQLITE3_INCLUDE_DIR}/sqlite3.h _ver_line
REGEX "^#define SQLITE_VERSION *\"[0-9]+\\.[0-9]+\\.[0-9]+\""
LIMIT_COUNT 1)
string(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+"
SQLITE3_VERSION "${_ver_line}")
unset(_ver_line)
endif()
if(SQLITE3_FOUND)
if(NOT SQLITE3_FIND_QUIETLY)
message(STATUS "Found Sqlite3: ${SQLITE3_LIBRARY}")
message(STATUS "Sqlite3 version: ${SQLITE3_VERSION}")
endif()
else()
......
......@@ -26,6 +26,8 @@ function(proj_add_test_script_sh SH_NAME BIN_USE)
COMMAND ${PROJECT_SOURCE_DIR}/test/cli/${SH_NAME}
${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${${BIN_USE}}
)
set_tests_properties( ${testname}
PROPERTIES ENVIRONMENT "PROJ_LIB=${PROJECT_BINARY_DIR}/data")
endif()
endif()
......@@ -34,12 +36,15 @@ endfunction()
function(proj_add_gie_test TESTNAME TESTCASE)
set(GIE_BIN "gie")
set(GIE_BIN $<TARGET_FILE_NAME:gie>)
set(TESTFILE ${CMAKE_SOURCE_DIR}/test/${TESTCASE})
add_test(NAME ${TESTNAME}
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/test
COMMAND ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${GIE_BIN}
${TESTFILE}
)
set_tests_properties( ${TESTNAME}
PROPERTIES ENVIRONMENT "PROJ_LIB=${PROJECT_BINARY_DIR}/data")
endfunction()
......@@ -89,7 +89,8 @@ endfunction()
#
# Generates output name for given target depending on platform and version.
# For instance, on Windows, libraries get ABI version suffix proj_X_Y.{dll|lib}.
# For instance, on Windows, dynamic link libraries get ABI version suffix
# proj_X_Y.dll.
#
function(proj_target_output_name TARGET_NAME OUTPUT_NAME)
......
......@@ -5,7 +5,18 @@ set (PACKAGE_VERSION_MAJOR "@PROJ_VERSION_MAJOR@")
set (PACKAGE_VERSION_MINOR "@PROJ_VERSION_MINOR@")
set (PACKAGE_VERSION_PATCH "@PROJ_VERSION_PATCH@")
# These variable definitions parallel those in @PROJECT_NAME@'s
# cmake/CMakeLists.txt.
if (MSVC)
# For checking the compatibility of MSVC_TOOLSET_VERSION; see
# https://docs.microsoft.com/en-us/cpp/porting/overview-of-potential-upgrade-issues-visual-cpp
# Assume major version number is obtained by dropping the last decimal
# digit.
math (EXPR MSVC_TOOLSET_MAJOR "${MSVC_TOOLSET_VERSION}/10")
endif ()
if (CMAKE_CROSSCOMPILING)
# Ensure that all "true" (resp. "false") settings are represented by
# the same string.
set (CMAKE_CROSSCOMPILING_STR "ON")
else ()
set (CMAKE_CROSSCOMPILING_STR "OFF")
......@@ -24,9 +35,13 @@ elseif (NOT (APPLE OR (NOT DEFINED CMAKE_SIZEOF_VOID_P) OR
# since a multi-architecture library is built for that platform).
set (REASON "sizeof(*void) = @CMAKE_SIZEOF_VOID_P@")
set (PACKAGE_VERSION_UNSUITABLE TRUE)
elseif (MSVC AND NOT MSVC_VERSION STREQUAL "@MSVC_VERSION@")
elseif (MSVC AND NOT (
# toolset version must be at least as great as @PROJECT_NAME@'s
MSVC_TOOLSET_VERSION GREATER_EQUAL @MSVC_TOOLSET_VERSION@
# and major versions must match
AND MSVC_TOOLSET_MAJOR EQUAL @MSVC_TOOLSET_MAJOR@ ))
# Reject if there's a mismatch in MSVC compiler versions
set (REASON "_MSC_VER = @MSVC_VERSION@")
set (REASON "MSVC_TOOLSET_VERSION = @MSVC_TOOLSET_VERSION@")
set (PACKAGE_VERSION_UNSUITABLE TRUE)
elseif (NOT CMAKE_CROSSCOMPILING_STR STREQUAL "@CMAKE_CROSSCOMPILING_STR@")
# Reject if there's a mismatch in ${CMAKE_CROSSCOMPILING}
......@@ -52,5 +67,3 @@ endif ()
if (PACKAGE_VERSION_UNSUITABLE)
set (PACKAGE_VERSION "${PACKAGE_VERSION} (${REASON})")
endif ()
unset(CMAKE_CROSSCOMPILING_STR)
\ No newline at end of file
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for PROJ 6.2.1.
# Generated by GNU Autoconf 2.69 for PROJ 6.3.0.
#
# Report bugs to <https://github.com/OSGeo/PROJ/issues>.
#
......@@ -590,8 +590,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='PROJ'
PACKAGE_TARNAME='proj'
PACKAGE_VERSION='6.2.1'
PACKAGE_STRING='PROJ 6.2.1'
PACKAGE_VERSION='6.3.0'
PACKAGE_STRING='PROJ 6.3.0'
PACKAGE_BUGREPORT='https://github.com/OSGeo/PROJ/issues'
PACKAGE_URL='https://proj.org'
 
......@@ -1348,7 +1348,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures PROJ 6.2.1 to adapt to many kinds of systems.
\`configure' configures PROJ 6.3.0 to adapt to many kinds of systems.
 
Usage: $0 [OPTION]... [VAR=VALUE]...
 
......@@ -1418,7 +1418,7 @@ fi
 
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of PROJ 6.2.1:";;
short | recursive ) echo "Configuration of PROJ 6.3.0:";;
esac
cat <<\_ACEOF
 
......@@ -1546,7 +1546,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
PROJ configure 6.2.1
PROJ configure 6.3.0
generated by GNU Autoconf 2.69
 
Copyright (C) 2012 Free Software Foundation, Inc.
......@@ -2082,7 +2082,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
 
It was created by PROJ $as_me 6.2.1, which was
It was created by PROJ $as_me 6.3.0, which was
generated by GNU Autoconf 2.69. Invocation command line was
 
$ $0 $@
......@@ -2953,7 +2953,7 @@ fi
 
# Define the identity of the package.
PACKAGE='proj'
VERSION='6.2.1'
VERSION='6.3.0'
 
 
cat >>confdefs.h <<_ACEOF
......@@ -4088,6 +4088,183 @@ else
fi
 
 
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5
$as_echo_n "checking for $CC option to accept ISO C99... " >&6; }
if ${ac_cv_prog_cc_c99+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_cv_prog_cc_c99=no
ac_save_CC=$CC
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdarg.h>
#include <stdbool.h>
#include <stdlib.h>
#include <wchar.h>
#include <stdio.h>
// Check varargs macros. These examples are taken from C99 6.10.3.5.
#define debug(...) fprintf (stderr, __VA_ARGS__)
#define showlist(...) puts (#__VA_ARGS__)
#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__))
static void
test_varargs_macros (void)
{
int x = 1234;
int y = 5678;
debug ("Flag");
debug ("X = %d\n", x);
showlist (The first, second, and third items.);
report (x>y, "x is %d but y is %d", x, y);
}
// Check long long types.
#define BIG64 18446744073709551615ull
#define BIG32 4294967295ul
#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0)
#if !BIG_OK
your preprocessor is broken;
#endif
#if BIG_OK
#else
your preprocessor is broken;
#endif
static long long int bignum = -9223372036854775807LL;
static unsigned long long int ubignum = BIG64;
struct incomplete_array
{
int datasize;
double data[];
};
struct named_init {
int number;
const wchar_t *name;
double average;
};
typedef const char *ccp;
static inline int
test_restrict (ccp restrict text)
{
// See if C++-style comments work.
// Iterate through items via the restricted pointer.
// Also check for declarations in for loops.
for (unsigned int i = 0; *(text+i) != '\0'; ++i)
continue;
return 0;
}
// Check varargs and va_copy.
static void
test_varargs (const char *format, ...)
{
va_list args;
va_start (args, format);
va_list args_copy;
va_copy (args_copy, args);
const char *str;
int number;
float fnumber;
while (*format)
{
switch (*format++)
{
case 's': // string
str = va_arg (args_copy, const char *);
break;
case 'd': // int
number = va_arg (args_copy, int);
break;
case 'f': // float
fnumber = va_arg (args_copy, double);
break;
default:
break;
}
}
va_end (args_copy);
va_end (args);
}
int
main ()
{
// Check bool.
_Bool success = false;
// Check restrict.
if (test_restrict ("String literal") == 0)
success = true;
char *restrict newvar = "Another string";
// Check varargs.
test_varargs ("s, d' f .", "string", 65, 34.234);
test_varargs_macros ();
// Check flexible array members.
struct incomplete_array *ia =
malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10));
ia->datasize = 10;
for (int i = 0; i < ia->datasize; ++i)
ia->data[i] = i * 1.234;
// Check named initializers.
struct named_init ni = {
.number = 34,
.name = L"Test wide string",
.average = 543.34343,
};
ni.number = 58;
int dynamic_array[ni.number];
dynamic_array[ni.number - 1] = 543;
// work around unused variable warnings
return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x'
|| dynamic_array[ni.number - 1] != 543);
;
return 0;
}
_ACEOF
for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc99
do
CC="$ac_save_CC $ac_arg"
if ac_fn_c_try_compile "$LINENO"; then :
ac_cv_prog_cc_c99=$ac_arg
fi
rm -f core conftest.err conftest.$ac_objext
test "x$ac_cv_prog_cc_c99" != "xno" && break
done
rm -f conftest.$ac_ext
CC=$ac_save_CC
fi
# AC_CACHE_VAL
case "x$ac_cv_prog_cc_c99" in
x)
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
$as_echo "none needed" >&6; } ;;
xno)
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
$as_echo "unsupported" >&6; } ;;
*)
CC="$CC $ac_cv_prog_cc_c99"
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5
$as_echo "$ac_cv_prog_cc_c99" >&6; } ;;
esac
if test "x$ac_cv_prog_cc_c99" != xno; then :
fi
ac_ext=cpp
ac_cpp='$CXXCPP $CPPFLAGS'
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
......@@ -17515,34 +17692,6 @@ else
fi
 
 
SAVED_CFLAGS=$CFLAGS
CFLAGS="$CFLAGS $ERROR_ON_UNKNOWN_OPTIONS -std=gnu89"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if -std=gnu89 can be enabled" >&5
$as_echo_n "checking if -std=gnu89 can be enabled... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#if defined(__clang__) || !defined(__GNUC__)
#error "not gcc"
#endif
int
main ()
{
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
C_WFLAGS="$C_WFLAGS -std=gnu89"
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
CFLAGS=$SAVED_CFLAGS
 
ac_ext=cpp
ac_cpp='$CXXCPP $CPPFLAGS'
......@@ -18386,36 +18535,6 @@ else
:
fi
 
save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -Wall -Werror"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C99 math functions" >&5
$as_echo_n "checking for C99 math functions... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <math.h>
int
main ()
{
int q;
return (int)(hypot(3.0, 4.0) + atanh(0.8) + cbrt(8.0) +
remquo(100.0, 90.0, &q) +
remainder(100.0, 90.0) + copysign(1.0, -0.0) +
log1p(0.1) + asinh(0.1)) +
isnan(0.0);
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; };C99_MATH="-DHAVE_C99_MATH=1"
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; };C99_MATH="-DHAVE_C99_MATH=0"
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
CFLAGS="$save_CFLAGS $C99_MATH"
 
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing sqrt" >&5
$as_echo_n "checking for library containing sqrt... " >&6; }
......@@ -18699,6 +18818,8 @@ THREAD_LIB=$THREAD_LIB
if test "x$SQLITE3_CFLAGS$SQLITE3_LIBS" = "x" ; then
 
 
if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
......@@ -18823,12 +18944,12 @@ if test -n "$PKG_CONFIG"; then
pkg_cv_SQLITE3_CFLAGS="$SQLITE3_CFLAGS"
else
if test -n "$PKG_CONFIG" && \
{ { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sqlite3 >= 3.7\""; } >&5
($PKG_CONFIG --exists --print-errors "sqlite3 >= 3.7") 2>&5
{ { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sqlite3 >= 3.11\""; } >&5
($PKG_CONFIG --exists --print-errors "sqlite3 >= 3.11") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_SQLITE3_CFLAGS=`$PKG_CONFIG --cflags "sqlite3 >= 3.7" 2>/dev/null`
pkg_cv_SQLITE3_CFLAGS=`$PKG_CONFIG --cflags "sqlite3 >= 3.11" 2>/dev/null`
else
pkg_failed=yes
fi
......@@ -18841,12 +18962,12 @@ if test -n "$PKG_CONFIG"; then
pkg_cv_SQLITE3_LIBS="$SQLITE3_LIBS"
else
if test -n "$PKG_CONFIG" && \
{ { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sqlite3 >= 3.7\""; } >&5
($PKG_CONFIG --exists --print-errors "sqlite3 >= 3.7") 2>&5
{ { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sqlite3 >= 3.11\""; } >&5
($PKG_CONFIG --exists --print-errors "sqlite3 >= 3.11") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_SQLITE3_LIBS=`$PKG_CONFIG --libs "sqlite3 >= 3.7" 2>/dev/null`
pkg_cv_SQLITE3_LIBS=`$PKG_CONFIG --libs "sqlite3 >= 3.11" 2>/dev/null`
else
pkg_failed=yes
fi
......@@ -18865,14 +18986,14 @@ else
_pkg_short_errors_supported=no
fi
if test $_pkg_short_errors_supported = yes; then
SQLITE3_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "sqlite3 >= 3.7"`
SQLITE3_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "sqlite3 >= 3.11"`
else
SQLITE3_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "sqlite3 >= 3.7"`
SQLITE3_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "sqlite3 >= 3.11"`
fi
# Put the nasty error message in config.log where it belongs
echo "$SQLITE3_PKG_ERRORS" >&5
 
as_fn_error $? "Package requirements (sqlite3 >= 3.7) were not met:
as_fn_error $? "Package requirements (sqlite3 >= 3.11) were not met:
 
$SQLITE3_PKG_ERRORS
 
......@@ -19618,7 +19739,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by PROJ $as_me 6.2.1, which was
This file was extended by PROJ $as_me 6.3.0, which was
generated by GNU Autoconf 2.69. Invocation command line was
 
CONFIG_FILES = $CONFIG_FILES
......@@ -19685,7 +19806,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
PROJ config.status 6.2.1
PROJ config.status 6.3.0
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
 
......
dnl Process this file with autoconf to produce a configure script.
AC_PREREQ(2.59)
AC_INIT([PROJ], [6.2.1],
AC_INIT([PROJ], [6.3.0],
[https://github.com/OSGeo/PROJ/issues], proj, [https://proj.org])
AC_CONFIG_MACRO_DIR([m4])
AC_LANG(C)
......@@ -12,6 +12,7 @@ AM_CONFIG_HEADER(src/proj_config.h)
dnl Checks for programs.
AC_PROG_CC
AC_PROG_CC_C99
AC_PROG_CXX
AX_CXX_COMPILE_STDCXX_11([noext],[mandatory])
AC_PROG_INSTALL
......@@ -82,20 +83,6 @@ AX_CHECK_COMPILE_FLAG([-Wfloat-conversion], [C_WFLAGS="$C_WFLAGS -Wfloat-convers
dnl clang >= 3.2
AX_CHECK_COMPILE_FLAG([-Wdocumentation -Wno-documentation-deprecated-sync], [C_WFLAGS="$C_WFLAGS -Wdocumentation -Wno-documentation-deprecated-sync" CXX_WFLAGS="$CXX_WFLAGS -Wdocumentation -Wno-documentation-deprecated-sync"],,[$ERROR_ON_UNKNOWN_OPTIONS])
dnl gnu89 is a reasonable target to get MSVC compatibility.
dnl but only apply it with gcc, since clang will throw a lot of warnings
SAVED_CFLAGS=$CFLAGS
CFLAGS="$CFLAGS $ERROR_ON_UNKNOWN_OPTIONS -std=gnu89"
AC_MSG_CHECKING([if -std=gnu89 can be enabled])
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
[[#if defined(__clang__) || !defined(__GNUC__)
#error "not gcc"
#endif]])],
[C_WFLAGS="$C_WFLAGS -std=gnu89"]
[AC_MSG_RESULT([yes])],
[AC_MSG_RESULT([no])])
CFLAGS=$SAVED_CFLAGS
dnl C++ specific stuff
AC_LANG_PUSH([C++])
......@@ -197,21 +184,6 @@ dnl like (a + b) + c and from simplifying 0.0 + x to x (which is wrong if
dnl x = -0.0).
AX_CHECK_COMPILE_FLAG([-fp-model precise],
[CFLAGS="$CFLAGS -fp-model precise"],,[-Werror])
dnl Check for C99 math functions
save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -Wall -Werror"
AC_MSG_CHECKING([for C99 math functions])
AC_LINK_IFELSE([AC_LANG_PROGRAM(
[#include <math.h>],
[int q;
return (int)(hypot(3.0, 4.0) + atanh(0.8) + cbrt(8.0) +
remquo(100.0, 90.0, &q) +
remainder(100.0, 90.0) + copysign(1.0, -0.0) +
log1p(0.1) + asinh(0.1)) +
isnan(0.0);])],
[AC_MSG_RESULT([yes]);C99_MATH="-DHAVE_C99_MATH=1"],
[AC_MSG_RESULT([no]);C99_MATH="-DHAVE_C99_MATH=0"])
CFLAGS="$save_CFLAGS $C99_MATH"
AC_SEARCH_LIBS([sqrt], [m])
......@@ -308,7 +280,11 @@ dnl Check for sqlite3 library and binary
dnl ---------------------------------------------------------------------------
if test "x$SQLITE3_CFLAGS$SQLITE3_LIBS" = "x" ; then
PKG_CHECK_MODULES([SQLITE3], [sqlite3 >= 3.7])
dnl Would build and run with older versons, but with horrible performance
dnl See https://github.com/OSGeo/PROJ/issues/1718
PKG_CHECK_MODULES([SQLITE3], [sqlite3 >= 3.11])
fi
AC_SUBST(SQLITE3_CFLAGS,$SQLITE3_CFLAGS)
AC_SUBST(SQLITE3_LIBS,$SQLITE3_LIBS)
......
......@@ -32,24 +32,24 @@
# Z. Altamimi et al, 2017, ITRF2014 plate motion model,
# doi: 10.1093/gji/ggx136
<ANTA> +proj=helmert +drx=0.000248 +dry=0.000324 +drz=0.000675 +convention=position_vector
<ANTA> +proj=helmert +drx=-0.000248 +dry=-0.000324 +drz=0.000675 +convention=position_vector
<ARAB> +proj=helmert +drx=0.001154 +dry=0.000136 +drz=0.001444 +convention=position_vector
<ARAB> +proj=helmert +drx=0.001154 +dry=-0.000136 +drz=0.001444 +convention=position_vector
<AUST> +proj=helmert +drx=0.001510 +dry=0.001182 +drz=0.001215 +convention=position_vector
<EURA> +proj=helmert +drx=0.000085 +dry=0.000531 +drz=0.000770 +convention=position_vector
<EURA> +proj=helmert +drx=-0.000085 +dry=-0.000531 +drz=0.000770 +convention=position_vector
<INDI> +proj=helmert +drx=0.001154 +dry=0.000005 +drz=0.001454 +convention=position_vector
<INDI> +proj=helmert +drx=0.001154 +dry=-0.000005 +drz=0.001454 +convention=position_vector
<NAZC> +proj=helmert +drx=0.000333 +dry=0.001544 +drz=0.001623 +convention=position_vector
<NAZC> +proj=helmert +drx=-0.000333 +dry=-0.001544 +drz=0.001623 +convention=position_vector
<NOAM> +proj=helmert +drx=0.000024 +dry=-0.000694 +drz=-0.000063 +convention=position_vector
<NUBI> +proj=helmert +drx=0.000099 +dry=0.000614 +drz=0.000733 +convention=position_vector
<NUBI> +proj=helmert +drx=0.000099 +dry=-0.000614 +drz=0.000733 +convention=position_vector
<PCFC> +proj=helmert +drx=0.000409 +dry=0.001047 +drz=-0.002169 +convention=position_vector
<PCFC> +proj=helmert +drx=-0.000409 +dry=0.001047 +drz=-0.002169 +convention=position_vector
<SOAM> +proj=helmert +drx=0.000270 +dry=0.000301 +drz=0.000140 +convention=position_vector
<SOAM> +proj=helmert +drx=-0.000270 +dry=-0.000301 +drz=-0.000140 +convention=position_vector
<SOMA> +proj=helmert +drx=0.000121 +dry=0.000794 +drz=0.000884 +convention=position_vector
<SOMA> +proj=helmert +drx=-0.000121 +dry=-0.000794 +drz=0.000884 +convention=position_vector
......@@ -27,6 +27,7 @@ SQL_ORDERED_LIST = sql/begin.sql \
sql/grid_transformation_custom.sql \
sql/other_transformation.sql \
sql/concatenated_operation.sql \
sql/concatenated_operation_step.sql \
sql/alias_name.sql \
sql/supersession.sql \
sql/deprecation.sql \
......
......@@ -318,6 +318,7 @@ SQL_ORDERED_LIST = sql/begin.sql \
sql/grid_transformation_custom.sql \
sql/other_transformation.sql \
sql/concatenated_operation.sql \
sql/concatenated_operation_step.sql \
sql/alias_name.sql \
sql/supersession.sql \
sql/deprecation.sql \
......
{
"$id": "https://proj.org/schemas/v0.1/projjson.schema.json",
"$id": "https://proj.org/schemas/v0.2/projjson.schema.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "Schema for PROJJSON",
"$comment": "This file exists both in data/ and in schemas/vXXX/. Keep both in sync. And if changing the value of $id, change PROJJSON_CURRENT_VERSION accordingly in io.cpp",
......@@ -932,6 +932,16 @@
},
"datum_ensemble": { "$ref": "#/definitions/datum_ensemble" },
"coordinate_system": { "$ref": "#/definitions/coordinate_system" },
"geoid_model": {
"type": "object",
"properties": {
"name": { "type": "string" },
"interpolation_crs": { "$ref": "#/definitions/crs" },
"id": { "$ref": "#/definitions/id" }
},
"required" : [ "name" ],
"additionalProperties": false
},
"$schema" : {},
"scope": {},
"area": {},
......
......@@ -475,6 +475,7 @@ INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1251','KOSOVAREF01','EP
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1251','KOSOVAREF01 (2012)','EPSG');
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1252','SIRGAS-Chile 2013','EPSG');
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1253','SIRGAS-Chile 2016','EPSG');
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1256','CGVD2013 (CGG2013a)','EPSG');
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1042','Red Geodesica Nacional 1992','EPSG');
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1046','Morro do Papagaio','EPSG');
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1046','Island of Principe datum','EPSG');
......@@ -559,7 +560,7 @@ INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1125','ASVD02','EPSG');
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1121','Tutuila62','EPSG');
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1124','VIVD09','EPSG');
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1123','PRVD02','EPSG');
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1127','CGVD2013','EPSG');
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1127','CGVD2013 (CGG2013)','EPSG');
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1128','JGD2011','EPSG');
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1131','JGD2011 (vertical)','EPSG');
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1130','JGD2000 (vertical)','EPSG');
......
This diff is collapsed.
......@@ -255,9 +255,9 @@ INSERT INTO "axis" VALUES('EPSG','111','Gravity-related height','H','up','EPSG',
INSERT INTO "axis" VALUES('EPSG','112','Gravity-related height','H','up','EPSG','6497',1,'EPSG','9003');
INSERT INTO "axis" VALUES('EPSG','113','Depth','D','down','EPSG','6498',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','114','Gravity-related height','H','up','EPSG','6499',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','115','Geocentric X','X','Geocentre > equator/0°E','EPSG','6500',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','116','Geocentric Y','Y','Geocentre > equator/90°E','EPSG','6500',2,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','117','Geocentric Z','Z','Geocentre > north pole','EPSG','6500',3,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','115','Geocentric X','X','geocentricX','EPSG','6500',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','116','Geocentric Y','Y','geocentricY','EPSG','6500',2,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','117','Geocentric Z','Z','geocentricZ','EPSG','6500',3,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','119','Southing','X','south','EPSG','6501',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','118','Westing','Y','west','EPSG','6501',2,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','120','Westing','Y','west','EPSG','6502',1,'EPSG','9031');
......