aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@mines-paris.org>2019-02-24 12:45:17 +0100
committerGitHub <noreply@github.com>2019-02-24 12:45:17 +0100
commit36a43f88aa2a136ddb1b901cff469e6e0d9e75d7 (patch)
treec2d5f3ebeab346fd01fd56a1608887cd9c833d9a
parent70158c3302f087e6ddd71cf8414e5436b44bc71b (diff)
parent22a786693f66c815220861f15fd041584d32a1f1 (diff)
downloadPROJ-36a43f88aa2a136ddb1b901cff469e6e0d9e75d7.tar.gz
PROJ-36a43f88aa2a136ddb1b901cff469e6e0d9e75d7.zip
Merge pull request #1291 from rouault/fix_GLIBCXX_ASSERTIONS
Fix -D_GLIBCXX_ASSERTIONS (refs #1290)
-rw-r--r--.travis.yml20
-rw-r--r--src/iso19111/coordinateoperation.cpp85
-rw-r--r--src/jniproj.cpp2
-rwxr-xr-xtravis/install.sh2
-rwxr-xr-xtravis/linux_gcc7/after_success.sh5
-rwxr-xr-xtravis/linux_gcc7/before_install.sh20
-rwxr-xr-xtravis/linux_gcc7/install.sh7
7 files changed, 98 insertions, 43 deletions
diff --git a/.travis.yml b/.travis.yml
index 137e9afb..bc7e685f 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -19,6 +19,24 @@ matrix:
env:
- BUILD_NAME=linux_gcc
- DETAILS="linux, gcc"
+
+ - os: linux
+ dist: trusty
+ sudo: required
+ services:
+ - docker
+ env:
+ - BUILD_NAME=linux_gcc7
+ - DETAILS="linux, gcc7"
+ - CC=gcc-7
+ - CXX=g++-7
+ - CXXFLAGS='-g -D_GLIBCXX_ASSERTIONS'
+ addons:
+ apt:
+ sources:
+ - ubuntu-toolchain-r-test
+ packages: ['g++-7','make','autoconf','automake']
+
- os: linux
dist: trusty
compiler: clang
@@ -29,11 +47,13 @@ matrix:
env:
- BUILD_NAME=linux_clang
- DETAILS="linux, clang"
+
- os: osx
language: cpp
env:
- BUILD_NAME=osx
- DETAILS="osx"
+
- os: linux
dist: trusty
compiler: gcc
diff --git a/src/iso19111/coordinateoperation.cpp b/src/iso19111/coordinateoperation.cpp
index 7b0adc6f..fbb67e6b 100644
--- a/src/iso19111/coordinateoperation.cpp
+++ b/src/iso19111/coordinateoperation.cpp
@@ -2156,52 +2156,55 @@ void ParameterValue::_exportToWKT(io::WKTFormatter *formatter) const {
const bool isWKT2 = formatter->version() == io::WKTFormatter::Version::WKT2;
const auto &l_type = type();
- const auto &l_value = value();
- if (formatter->abridgedTransformation() && l_type == Type::MEASURE) {
- const auto &unit = l_value.unit();
- const auto &unitType = unit.type();
- if (unitType == common::UnitOfMeasure::Type::LINEAR) {
- formatter->add(l_value.getSIValue());
- } else if (unitType == common::UnitOfMeasure::Type::ANGULAR) {
- formatter->add(
- l_value.convertToUnit(common::UnitOfMeasure::ARC_SECOND));
- } else if (unit == common::UnitOfMeasure::PARTS_PER_MILLION) {
- formatter->add(1.0 + l_value.value() * 1e-6);
- } else {
- formatter->add(l_value.value());
- }
- } else if (l_type == Type::MEASURE) {
- const auto &unit = l_value.unit();
- if (isWKT2) {
- formatter->add(l_value.value());
- } else {
- // In WKT1, as we don't output the natural unit, output to the
- // registered linear / angular unit.
+ if (l_type == Type::MEASURE) {
+ const auto &l_value = value();
+ if (formatter->abridgedTransformation()) {
+ const auto &unit = l_value.unit();
const auto &unitType = unit.type();
if (unitType == common::UnitOfMeasure::Type::LINEAR) {
- const auto &targetUnit = *(formatter->axisLinearUnit());
- if (targetUnit.conversionToSI() == 0.0) {
- throw io::FormattingException(
- "cannot convert value to target linear unit");
- }
- formatter->add(l_value.convertToUnit(targetUnit));
+ formatter->add(l_value.getSIValue());
} else if (unitType == common::UnitOfMeasure::Type::ANGULAR) {
- const auto &targetUnit = *(formatter->axisAngularUnit());
- if (targetUnit.conversionToSI() == 0.0) {
- throw io::FormattingException(
- "cannot convert value to target angular unit");
- }
- formatter->add(l_value.convertToUnit(targetUnit));
+ formatter->add(
+ l_value.convertToUnit(common::UnitOfMeasure::ARC_SECOND));
+ } else if (unit == common::UnitOfMeasure::PARTS_PER_MILLION) {
+ formatter->add(1.0 + l_value.value() * 1e-6);
} else {
- formatter->add(l_value.getSIValue());
+ formatter->add(l_value.value());
}
- }
- if (isWKT2 && unit != common::UnitOfMeasure::NONE) {
- if (!formatter->primeMeridianOrParameterUnitOmittedIfSameAsAxis() ||
- (unit != common::UnitOfMeasure::SCALE_UNITY &&
- unit != *(formatter->axisLinearUnit()) &&
- unit != *(formatter->axisAngularUnit()))) {
- unit._exportToWKT(formatter);
+ } else {
+ const auto &unit = l_value.unit();
+ if (isWKT2) {
+ formatter->add(l_value.value());
+ } else {
+ // In WKT1, as we don't output the natural unit, output to the
+ // registered linear / angular unit.
+ const auto &unitType = unit.type();
+ if (unitType == common::UnitOfMeasure::Type::LINEAR) {
+ const auto &targetUnit = *(formatter->axisLinearUnit());
+ if (targetUnit.conversionToSI() == 0.0) {
+ throw io::FormattingException(
+ "cannot convert value to target linear unit");
+ }
+ formatter->add(l_value.convertToUnit(targetUnit));
+ } else if (unitType == common::UnitOfMeasure::Type::ANGULAR) {
+ const auto &targetUnit = *(formatter->axisAngularUnit());
+ if (targetUnit.conversionToSI() == 0.0) {
+ throw io::FormattingException(
+ "cannot convert value to target angular unit");
+ }
+ formatter->add(l_value.convertToUnit(targetUnit));
+ } else {
+ formatter->add(l_value.getSIValue());
+ }
+ }
+ if (isWKT2 && unit != common::UnitOfMeasure::NONE) {
+ if (!formatter
+ ->primeMeridianOrParameterUnitOmittedIfSameAsAxis() ||
+ (unit != common::UnitOfMeasure::SCALE_UNITY &&
+ unit != *(formatter->axisLinearUnit()) &&
+ unit != *(formatter->axisAngularUnit()))) {
+ unit._exportToWKT(formatter);
+ }
}
}
} else if (l_type == Type::STRING || l_type == Type::FILENAME) {
diff --git a/src/jniproj.cpp b/src/jniproj.cpp
index 59b5b2a0..6f441529 100644
--- a/src/jniproj.cpp
+++ b/src/jniproj.cpp
@@ -279,7 +279,7 @@ JNIEXPORT jcharArray JNICALL Java_org_proj4_PJ_getAxisDirections
{
PJ *pj = getPJ(env, object);
if (pj) {
- int length = strlen(pj->axis);
+ int length = static_cast<int>(strlen(pj->axis));
jcharArray array = env->NewCharArray(length);
if (array) {
jchar* axis = env->GetCharArrayElements(array, nullptr);
diff --git a/travis/install.sh b/travis/install.sh
index 2013a610..f5fa7d08 100755
--- a/travis/install.sh
+++ b/travis/install.sh
@@ -23,7 +23,7 @@ cd $TAR_DIRECTORY
mkdir build_autoconf
cd build_autoconf
if [ -f /usr/lib/jvm/java-7-openjdk-amd64/include/jni.h ]; then
- CXXFLAGS="-I/usr/lib/jvm/java-7-openjdk-amd64/include -I/usr/lib/jvm/java-7-openjdk-amd64/include/linux" ../configure --prefix=/tmp/proj_autoconf_install_from_dist_all --with-jni
+ CXXFLAGS="-I/usr/lib/jvm/java-7-openjdk-amd64/include -I/usr/lib/jvm/java-7-openjdk-amd64/include/linux $CXXFLAGS" ../configure --prefix=/tmp/proj_autoconf_install_from_dist_all --with-jni
else
../configure --prefix=/tmp/proj_autoconf_install_from_dist_all
fi
diff --git a/travis/linux_gcc7/after_success.sh b/travis/linux_gcc7/after_success.sh
new file mode 100755
index 00000000..70c6f5cb
--- /dev/null
+++ b/travis/linux_gcc7/after_success.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+
+set -e
+
+#./travis/after_success.sh
diff --git a/travis/linux_gcc7/before_install.sh b/travis/linux_gcc7/before_install.sh
new file mode 100755
index 00000000..25c7483f
--- /dev/null
+++ b/travis/linux_gcc7/before_install.sh
@@ -0,0 +1,20 @@
+#!/bin/bash
+
+set -e
+
+./travis/before_install.sh
+
+sudo apt-get update -qq
+sudo apt-get install -y cppcheck
+sudo apt-get install -qq lcov
+sudo apt-get install -qq doxygen graphviz
+sudo apt-get install -qq sqlite3 libsqlite3-dev
+sudo apt-get install -qq openjdk-7-jdk
+
+#scripts/cppcheck.sh
+#scripts/doxygen.sh
+
+#pip install --user sphinxcontrib-bibtex
+#pip install --user cpp-coveralls
+
+#./travis/docker.sh
diff --git a/travis/linux_gcc7/install.sh b/travis/linux_gcc7/install.sh
new file mode 100755
index 00000000..b957b927
--- /dev/null
+++ b/travis/linux_gcc7/install.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+set -e
+
+export CCACHE_CPP2=yes
+
+CC="ccache $CC" CXX="ccache $CXX" CFLAGS="-std=c89 -Werror $CFLAGS" CXXFLAGS="-Werror $CXXFLAGS" ./travis/install.sh