Skip to content

Commit 07bef83

Browse files
committed
Merge branch 'release-0.6.2' into release
2 parents 0101c68 + 724f63b commit 07bef83

File tree

277 files changed

+41131
-24489
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

277 files changed

+41131
-24489
lines changed

3rd-party/gdal/CMakeLists.txt

Lines changed: 209 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,209 @@
1+
#
2+
# Copyright 2016 Kai Pastor
3+
#
4+
# This file is part of OpenOrienteering.
5+
#
6+
# OpenOrienteering is free software: you can redistribute it and/or modify
7+
# it under the terms of the GNU General Public License as published by
8+
# the Free Software Foundation, either version 3 of the License, or
9+
# (at your option) any later version.
10+
#
11+
# OpenOrienteering is distributed in the hope that it will be useful,
12+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
13+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14+
# GNU General Public License for more details.
15+
#
16+
# You should have received a copy of the GNU General Public License
17+
# along with OpenOrienteering. If not, see <http://www.gnu.org/licenses/>.
18+
19+
20+
project(GDAL)
21+
22+
cmake_minimum_required(VERSION 2.8.3)
23+
24+
include(ExternalProject)
25+
26+
# Configuration options
27+
28+
set(GDAL_VERSION_DEFAULT 2.0.1+dfsg)
29+
set(GDAL_VERSION ${GDAL_VERSION_DEFAULT} CACHE STRING
30+
"Version number of the GDAL library, recommended value: ${GDAL_VERSION_DEFAULT}")
31+
mark_as_advanced(GDAL_VERSION)
32+
33+
message(STATUS "Configuring GDAL library ${GDAL_VERSION}")
34+
35+
string(REGEX MATCH "^[0-9]\\.[0-9]+\\.[0-9]+" GDAL_MAJOR_MINOR_REVISION ${GDAL_VERSION})
36+
if (NOT "${GDAL_VERSION}" MATCHES "^${GDAL_MAJOR_MINOR_REVISION}")
37+
message(WARNING
38+
"The GDAL library version is different from the current recommended version "
39+
"(${GDAL_VERSION} vs. ${GDAL_VERSION_DEFAULT}).")
40+
endif()
41+
42+
set(GDAL_MD5SUMS
43+
2.0.1+dfsg:18e207a12f920e2a40405891eb6168ec:https://github.com/OpenOrienteering/sources/releases/download/3rd-party/gdal_2.0.1.dfsg.orig.tar.gz
44+
)
45+
string(REPLACE "+" "[+]" GDAL_VERSION_REGEX "${GDAL_VERSION}")
46+
foreach(line ${GDAL_MD5SUMS})
47+
if(${line} MATCHES "^${GDAL_VERSION_REGEX}:")
48+
string(REPLACE "${GDAL_VERSION}:" "" GDAL_MD5 ${line})
49+
break()
50+
endif()
51+
endforeach()
52+
if(NOT GDAL_MD5)
53+
message(FATAL_ERROR
54+
"Unknown MD5 sum for GDAL library ${GDAL_VERSION}. "
55+
"Edit ${GDALECT_SOURCE_DIR}/CMakeLists.txt, "
56+
"or specify the correct GDAL_MD5 value at the command line.")
57+
endif()
58+
if(GDAL_MD5 MATCHES ":")
59+
message(WARNING "Not using an official release of GDAL.")
60+
string(REGEX REPLACE "^[0-9a-fA-F]*:" "" GDAL_URL "${GDAL_MD5}")
61+
string(REGEX REPLACE ":.*" "" GDAL_MD5 "${GDAL_MD5}")
62+
elseif(GDAL_VERSION MATCHES "-openorienteering-")
63+
set(GDAL_URL "https://github.com/OpenOrienteering/sources/releases/download/3rd-party/gdal-${GDAL_VERSION}.tar.gz")
64+
else()
65+
set(GDAL_URL "http://download.osgeo.org/gdal/${GDAL_VERSION}/gdal-${GDAL_VERSION}.tar.gz")
66+
endif()
67+
68+
set(GDAL_LICENSE_FILE "${PROJECT_SOURCE_DIR}/LICENSE.TXT")
69+
if(EXISTS "${GDAL_LICENSE_FILE}.${GDAL_VERSION}")
70+
set(GDAL_LICENSE_FILE "${GDAL_LICENSE_FILE}.${GDAL_VERSION}")
71+
endif()
72+
73+
74+
# External project definition
75+
76+
set(GDAL_EXTRA_FLAGS "-Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-private-field -Wno-deprecated-register")
77+
string(REGEX REPLACE "-Wpedantic|-Wall" "" GDAL_CFLAGS "${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_RELEASE} ${GDAL_EXTRA_FLAGS}")
78+
string(REGEX REPLACE "-Wpedantic|-Wall" "" GDAL_CXXFLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELEASE} ${GDAL_EXTRA_FLAGS}")
79+
if(CMAKE_CROSSCOMPILING AND NOT GNU_SYSTEM_NAME AND MINGW)
80+
set(_env_lang $ENV{LC_ALL})
81+
set(ENV{LC_ALL} C)
82+
execute_process(
83+
COMMAND ${CMAKE_C_COMPILER} -v
84+
ERROR_VARIABLE GNU_SYSTEM_NAME
85+
)
86+
set(ENV{LC_ALL} ${_env_lang})
87+
string(REGEX REPLACE ".*Target: ?([^\n]*).*" \\1 GNU_SYSTEM_NAME ${GNU_SYSTEM_NAME})
88+
endif()
89+
if(CMAKE_CROSSCOMPILING AND GNU_SYSTEM_NAME)
90+
execute_process(
91+
COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/patches/config.guess"
92+
OUTPUT_VARIABLE build
93+
OUTPUT_STRIP_TRAILING_WHITESPACE
94+
)
95+
set(GDAL_CONFIG_EXTRA "--host=${GNU_SYSTEM_NAME}" "--build=${build}" --without-expat)
96+
get_directory_property(_include_dirs INCLUDE_DIRECTORIES)
97+
if(_include_dirs)
98+
unset(_cpp_flags)
99+
foreach(_dir ${_include_dirs})
100+
set(_cpp_flags "${_cpp_flags} -I${_dir}")
101+
endforeach()
102+
list(APPEND GDAL_CONFIG_EXTRA "CPPFLAGS=${_cpp_flags}")
103+
endif()
104+
if(GNU_SYSTEM_NAME STREQUAL "arm-linux-androideabi")
105+
set(STANDALONE_TOOLCHAIN arm-linux-androideabi-4.9)
106+
set(CMAKE_C_COMPILER <BINARY_DIR>/toolchain/${STANDALONE_TOOLCHAIN}/bin/arm-linux-androideabi-gcc)
107+
set(CMAKE_CXX_COMPILER <BINARY_DIR>/toolchain/${STANDALONE_TOOLCHAIN}/bin/arm-linux-androideabi-g++)
108+
elseif(GNU_SYSTEM_NAME STREQUAL "i686-linux-android")
109+
set(STANDALONE_TOOLCHAIN arm-linux-androideabi-gcc-4.9)
110+
set(CMAKE_C_COMPILER <BINARY_DIR>/toolchain/${STANDALONE_TOOLCHAIN}/bin/i686-linux-android-gcc)
111+
set(CMAKE_CXX_COMPILER <BINARY_DIR>/toolchain/${STANDALONE_TOOLCHAIN}/bin/i686-linux-android-g++)
112+
elseif(ANDROID)
113+
message(WARNING "Unsupported Android architecture '${GNU_SYSTEM_NAME}'")
114+
endif()
115+
elseif(APPLE)
116+
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=libc++")
117+
# Didn't manage to pass the deployment target to all libtool link steps
118+
#string(REGEX REPLACE "(^| )(--?[^W])" "\\1-Wl,\\2" CMAKE_EXE_LINKER_FLAGS ${CMAKE_EXE_LINKER_FLAGS})
119+
set(GDAL_CONFIG_EXTRA --without-libtool)
120+
else()
121+
unset(GDAL_CONFIG_EXTRA)
122+
endif()
123+
124+
include(ExternalProject)
125+
ExternalProject_Add(
126+
GDAL
127+
DOWNLOAD_DIR ${PROJECT_SOURCE_DIR}/download
128+
URL ${GDAL_URL}
129+
URL_MD5 ${GDAL_MD5}
130+
# Check that the license hasn't changed.
131+
UPDATE_COMMAND
132+
${CMAKE_COMMAND} -E compare_files <SOURCE_DIR>/LICENSE.TXT "${GDAL_LICENSE_FILE}"
133+
PATCH_COMMAND
134+
cp ${PROJECT_SOURCE_DIR}/patches/config.sub ${PROJECT_SOURCE_DIR}/patches/config.guess <SOURCE_DIR>/
135+
COMMAND
136+
find ${PROJECT_SOURCE_DIR}/patches -name gdal-${GDAL_MAJOR_MINOR_REVISION}*.patch -exec patch -p0 -N -i {} +
137+
CONFIGURE_COMMAND
138+
"<SOURCE_DIR>/configure"
139+
"--prefix=<INSTALL_DIR>"
140+
--disable-static
141+
--enable-shared
142+
--with-ogr
143+
--with-hide-internal-symbols
144+
--with-rename-internal-libtiff-symbols
145+
--without-jpeg12 # possible violation of ODR in GDAL < 2.1
146+
--with-threads=no
147+
--without-pcraster
148+
--without-grib
149+
--without-perl
150+
--without-php
151+
--without-python
152+
--without-java
153+
${GDAL_CONFIG_EXTRA}
154+
"CC=${CMAKE_C_COMPILER}"
155+
"CFLAGS=${GDAL_CFLAGS}"
156+
"CXX=${CMAKE_CXX_COMPILER}"
157+
"CXXFLAGS=${GDAL_CXXFLAGS}"
158+
"LDFLAGS=${CMAKE_EXE_LINKER_FLAGS}"
159+
BUILD_COMMAND
160+
"\$(MAKE)"
161+
INSTALL_COMMAND
162+
"\$(MAKE)" -j1 install
163+
BUILD_IN_SOURCE 1
164+
)
165+
166+
if(ANDROID AND STANDALONE_TOOLCHAIN)
167+
ExternalProject_Add_Step(GDAL toolchain
168+
COMMENT "Creating standalone toolchain"
169+
DEPENDEES update
170+
DEPENDERS configure
171+
COMMAND
172+
bash $(ANDROID_NDK_ROOT)/build/tools/make-standalone-toolchain.sh
173+
--install-dir=<BINARY_DIR>/toolchain/${STANDALONE_TOOLCHAIN}
174+
--platform=$(ANDROID_NDK_PLATFORM)
175+
--toolchain=${STANDALONE_TOOLCHAIN}
176+
)
177+
endif()
178+
179+
180+
# Exported configuration
181+
182+
# The following will not succeed during the initial configuration
183+
# but on repeated configuration after an successful build.
184+
185+
ExternalProject_Get_Property(GDAL BINARY_DIR)
186+
ExternalProject_Get_Property(GDAL INSTALL_DIR)
187+
188+
find_path(GDAL_INCLUDE_DIR NAMES gdal.h PATHS
189+
"${INSTALL_DIR}/include"
190+
NO_DEFAULT_PATH
191+
NO_CMAKE_FIND_ROOT_PATH
192+
)
193+
mark_as_advanced(GDAL_INCLUDE_DIR)
194+
195+
find_library(GDAL_LIBRARY NAMES gdal PATHS
196+
"${INSTALL_DIR}/lib"
197+
NO_DEFAULT_PATH
198+
NO_CMAKE_FIND_ROOT_PATH
199+
)
200+
mark_as_advanced(GDAL_LIBRARY)
201+
202+
if(GDAL_INCLUDE_DIR AND GDAL_LIBRARY)
203+
set(GDAL_BINARY_DIR "${INSTALL_DIR}/bin" PARENT_SCOPE)
204+
mark_as_advanced(GDAL_BINARY_DIR)
205+
set(GDAL_FOUND TRUE PARENT_SCOPE)
206+
endif()
207+
208+
# Don't let Xcode re-root the install
209+
set_target_properties(GDAL PROPERTIES XCODE_ATTRIBUTE_INSTALL_ROOT "")

0 commit comments

Comments
 (0)