hasufell-repository/packages/games-strategy/freeorion/files/70c19e312ae86919bd77b39d45fa35dc4b66d458.patch
Julian Ospald 3b09863a55 games-strategy/freeorion: initial import
Change-Id: Ic50ae0f57dfadcb306eec0753d47a6e7ced0fe63
Reviewed-on: https://galileo.mailstation.de/gerrit/7065
Reviewed-by: Jenkins <wk@mailstation.de>
Reviewed-by: Julian Ospald <hasufell@posteo.de>
2016-09-09 20:10:30 +02:00

50 lines
2.0 KiB
Diff

From 70c19e312ae86919bd77b39d45fa35dc4b66d458 Mon Sep 17 00:00:00 2001
From: Marcel Metz <mmetz@adrian-broher.net>
Date: Sun, 21 Aug 2016 20:23:48 +0200
Subject: [PATCH] Use old boost::optional implementation for boost 1.61
Fixes #777
- boost::spirit v 1.61 relies on the fact that the `Variant` template
type of `boost::spirit::qi::detail::find_substitute` typedefs a
`types` subtype.
- For the failing instantiation of `find_substition` a
`boost::optional` is used as `Variant` template type.
- `boost::optional` removed its `types` subtype implementation with
commit [boost::optional b5b8414c0], which means that this type is
missing on every boost version 1.61 and onwards (until fixed of course).
- Using the BOOST_OPTIONAL_CONFIG_USE_OLD_IMPLEMENTATION_OF_OPTIONAL
reenables the old implementation of boost::optional, which provides a
`types` subtype.
This commits enables said define for boost 1.61 only, because I consider
this an upstream bug. The upstream bug is tracked as [boost #12349].
[boost::optional b5b8414c0]: https://github.com/boostorg/optional/commit/b5b8414c069a2c5f16cc1f9813d069c8b36e2c35
[boost #12349]: https://svn.boost.org/trac/boost/ticket/12349
---
CMakeLists.txt | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3e70e72..65f1537 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -143,6 +143,16 @@ find_package(Boost ${MINIMUM_BOOST_VERSION} COMPONENTS chrono date_time filesyst
find_package(ZLIB REQUIRED)
find_package(Freetype REQUIRED)
+if(${Boost_VERSION} EQUAL "106100")
+ # with boost 1.61 some boost::optional internals were changed. However
+ # boost::spirit relies on some API the old implementation provided. This
+ # define enables the usage of the old boost::optional implementation.
+ # boost upstream tracks this bug as #12349
+ add_definitions(
+ -DBOOST_OPTIONAL_CONFIG_USE_OLD_IMPLEMENTATION_OF_OPTIONAL
+ )
+endif()
+
include_directories(
${Boost_INCLUDE_DIRS}
${ZLIB_INCLUDE_DIR}