View | Details | Raw Unified | Return to bug 204461 | Differences between
and this patch

Collapse All | Expand All

(-)Makefile (-5 / +29 lines)
Lines 3-9 Link Here
3
3
4
PORTNAME=	libxs
4
PORTNAME=	libxs
5
PORTVERSION=	1.2.0
5
PORTVERSION=	1.2.0
6
PORTREVISION=	4
6
PORTREVISION=	5
7
CATEGORIES=	devel
7
CATEGORIES=	devel
8
MASTER_SITES=	http://download.crossroads.io/
8
MASTER_SITES=	http://download.crossroads.io/
9
9
Lines 13-21 Link Here
13
LICENSE=	GPLv3
13
LICENSE=	GPLv3
14
14
15
GNU_CONFIGURE=	yes
15
GNU_CONFIGURE=	yes
16
USES=	pathfix pkgconfig libtool
16
USES=		compiler:features pathfix pkgconfig libtool
17
USE_LDCONFIG=	yes
17
USE_LDCONFIG=	yes
18
USE_GCC=	yes
19
18
20
OPTIONS_DEFINE=	DEBUG DOCS PLUGINS ZMQ
19
OPTIONS_DEFINE=	DEBUG DOCS PLUGINS ZMQ
21
EXTERNAL_DESC=	PGM extension from ports
20
EXTERNAL_DESC=	PGM extension from ports
Lines 26-33 Link Here
26
OPTIONS_RADIO_PGM=	INTERNAL EXTERNAL
25
OPTIONS_RADIO_PGM=	INTERNAL EXTERNAL
27
OPTIONS_DEFAULT=PLUGINS
26
OPTIONS_DEFAULT=PLUGINS
28
27
29
.include <bsd.port.options.mk>
28
.include <bsd.port.pre.mk>
30
29
30
.if ${COMPILER_TYPE} == clang
31
. if ${COMPILER_FEATURES:Mlibstdc++}
32
# FreeBSD 9 built with clang as the default compiler
33
.  if exists(/usr/bin/gcc)
34
# Use base gcc if it exists
35
CC=		gcc
36
CPP=		gcpp
37
CXX=		g++
38
.  else
39
# Punt and use ports gcc and hope for the best
40
USE_GCC=	yes
41
.  endif
42
. elif ${COMPILER_VERSION} < 36
43
# Allow declaration of map and multimap iterator with incomplete mapped type
44
# by applying upstream change r231119 to a copy of our local c++ headers.
45
EXTRA_PATCHES+=	${FILESDIR}/extra-patch-map
46
CPPFLAGS+=	-I${WRKSRC}/map-fix
47
48
post-extract:
49
	${MKDIR} ${WRKSRC}/map-fix
50
	${CP} /usr/include/c++/v1/__tree /usr/include/c++/v1/map \
51
		${WRKSRC}/map-fix/.
52
. endif
53
.endif
54
31
.if ${PORT_OPTIONS:MDEBUG}
55
.if ${PORT_OPTIONS:MDEBUG}
32
CONFIGURE_ARGS+=	--enable-debug
56
CONFIGURE_ARGS+=	--enable-debug
33
.endif
57
.endif
Lines 75-78 Link Here
75
		${WRKSRC}/configure
99
		${WRKSRC}/configure
76
.endif
100
.endif
77
101
78
.include <bsd.port.mk>
102
.include <bsd.port.post.mk>
(-)files/extra-patch-map (+165 lines)
Line 0 Link Here
1
--- map-fix/__tree.orig	2015-11-10 21:58:57.802092405 -0800
2
+++ map-fix/__tree	2015-11-10 21:59:00.724090284 -0800
3
@@ -622,8 +622,6 @@
4
 {
5
     typedef _NodePtr                                              __node_pointer;
6
     typedef typename pointer_traits<__node_pointer>::element_type __node;
7
-    typedef typename __node::base                                 __node_base;
8
-    typedef typename __node_base::pointer                         __node_base_pointer;
9
 
10
     __node_pointer __ptr_;
11
 
12
@@ -652,17 +650,21 @@
13
         {return pointer_traits<pointer>::pointer_to(__ptr_->__value_);}
14
 
15
     _LIBCPP_INLINE_VISIBILITY
16
-    __tree_iterator& operator++()
17
-        {__ptr_ = static_cast<__node_pointer>(__tree_next(static_cast<__node_base_pointer>(__ptr_)));
18
-         return *this;}
19
+    __tree_iterator& operator++() {
20
+      __ptr_ = static_cast<__node_pointer>(
21
+          __tree_next(static_cast<typename __node::base::pointer>(__ptr_)));
22
+      return *this;
23
+    }
24
     _LIBCPP_INLINE_VISIBILITY
25
     __tree_iterator operator++(int)
26
         {__tree_iterator __t(*this); ++(*this); return __t;}
27
 
28
     _LIBCPP_INLINE_VISIBILITY
29
-    __tree_iterator& operator--()
30
-        {__ptr_ = static_cast<__node_pointer>(__tree_prev(static_cast<__node_base_pointer>(__ptr_)));
31
-         return *this;}
32
+    __tree_iterator& operator--() {
33
+      __ptr_ = static_cast<__node_pointer>(
34
+          __tree_prev(static_cast<typename __node::base::pointer>(__ptr_)));
35
+      return *this;
36
+    }
37
     _LIBCPP_INLINE_VISIBILITY
38
     __tree_iterator operator--(int)
39
         {__tree_iterator __t(*this); --(*this); return __t;}
40
@@ -691,14 +693,6 @@
41
 {
42
     typedef _ConstNodePtr                                         __node_pointer;
43
     typedef typename pointer_traits<__node_pointer>::element_type __node;
44
-    typedef typename __node::base                                 __node_base;
45
-    typedef typename pointer_traits<__node_pointer>::template
46
-#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES
47
-            rebind<__node_base>
48
-#else
49
-            rebind<__node_base>::other
50
-#endif
51
-                                                                  __node_base_pointer;
52
 
53
     __node_pointer __ptr_;
54
 
55
@@ -743,17 +737,39 @@
56
         {return pointer_traits<pointer>::pointer_to(__ptr_->__value_);}
57
 
58
     _LIBCPP_INLINE_VISIBILITY
59
-    __tree_const_iterator& operator++()
60
-        {__ptr_ = static_cast<__node_pointer>(__tree_next(static_cast<__node_base_pointer>(__ptr_)));
61
-         return *this;}
62
+    __tree_const_iterator& operator++() {
63
+      typedef typename pointer_traits<__node_pointer>::template
64
+#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES
65
+          rebind<typename __node::base>
66
+#else
67
+          rebind<typename __node::base>::other
68
+#endif
69
+              __node_base_pointer;
70
+
71
+      __ptr_ = static_cast<__node_pointer>(
72
+          __tree_next(static_cast<__node_base_pointer>(__ptr_)));
73
+      return *this;
74
+    }
75
+
76
     _LIBCPP_INLINE_VISIBILITY
77
     __tree_const_iterator operator++(int)
78
         {__tree_const_iterator __t(*this); ++(*this); return __t;}
79
 
80
     _LIBCPP_INLINE_VISIBILITY
81
-    __tree_const_iterator& operator--()
82
-        {__ptr_ = static_cast<__node_pointer>(__tree_prev(static_cast<__node_base_pointer>(__ptr_)));
83
-         return *this;}
84
+    __tree_const_iterator& operator--() {
85
+      typedef typename pointer_traits<__node_pointer>::template
86
+#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES
87
+          rebind<typename __node::base>
88
+#else
89
+          rebind<typename __node::base>::other
90
+#endif
91
+              __node_base_pointer;
92
+
93
+      __ptr_ = static_cast<__node_pointer>(
94
+          __tree_prev(static_cast<__node_base_pointer>(__ptr_)));
95
+      return *this;
96
+    }
97
+
98
     _LIBCPP_INLINE_VISIBILITY
99
     __tree_const_iterator operator--(int)
100
         {__tree_const_iterator __t(*this); --(*this); return __t;}
101
--- map-fix/map.orig	2015-11-10 21:24:49.362267208 -0800
102
+++ map-fix/map	2015-11-10 21:25:09.501230487 -0800
103
@@ -644,14 +644,25 @@
104
 
105
 #endif
106
 
107
+template <class _Tp>
108
+struct __extract_key_value_types;
109
+
110
+template <class _Key, class _Tp>
111
+struct __extract_key_value_types<__value_type<_Key, _Tp> >
112
+{
113
+  typedef _Key const __key_type;
114
+  typedef _Tp        __mapped_type;
115
+};
116
+
117
 template <class _TreeIterator>
118
 class _LIBCPP_TYPE_VIS_ONLY __map_iterator
119
 {
120
     _TreeIterator __i_;
121
 
122
     typedef typename _TreeIterator::__pointer_traits             __pointer_traits;
123
-    typedef const typename _TreeIterator::value_type::value_type::first_type __key_type;
124
-    typedef typename _TreeIterator::value_type::value_type::second_type      __mapped_type;
125
+    typedef typename _TreeIterator::value_type __value_type;
126
+    typedef typename __extract_key_value_types<__value_type>::__key_type    __key_type;
127
+    typedef typename __extract_key_value_types<__value_type>::__mapped_type __mapped_type;
128
 public:
129
     typedef bidirectional_iterator_tag                           iterator_category;
130
     typedef pair<__key_type, __mapped_type>                      value_type;
131
@@ -715,8 +726,9 @@
132
     _TreeIterator __i_;
133
 
134
     typedef typename _TreeIterator::__pointer_traits             __pointer_traits;
135
-    typedef const typename _TreeIterator::value_type::value_type::first_type __key_type;
136
-    typedef typename _TreeIterator::value_type::value_type::second_type      __mapped_type;
137
+    typedef typename _TreeIterator::value_type __value_type;
138
+    typedef typename __extract_key_value_types<__value_type>::__key_type    __key_type;
139
+    typedef typename __extract_key_value_types<__value_type>::__mapped_type __mapped_type;
140
 public:
141
     typedef bidirectional_iterator_tag                           iterator_category;
142
     typedef pair<__key_type, __mapped_type>                      value_type;
143
@@ -736,10 +748,9 @@
144
     _LIBCPP_INLINE_VISIBILITY
145
     __map_const_iterator(_TreeIterator __i) _NOEXCEPT : __i_(__i) {}
146
     _LIBCPP_INLINE_VISIBILITY
147
-    __map_const_iterator(
148
-            __map_iterator<typename _TreeIterator::__non_const_iterator> __i)
149
-                _NOEXCEPT
150
-                : __i_(__i.__i_) {}
151
+    __map_const_iterator(__map_iterator<
152
+        typename _TreeIterator::__non_const_iterator> __i) _NOEXCEPT
153
+        : __i_(__i.__i_) {}
154
 
155
     _LIBCPP_INLINE_VISIBILITY
156
     reference operator*() const {return __i_->__cc;}
157
@@ -829,7 +840,7 @@
158
     typedef typename __alloc_traits::const_pointer         const_pointer;
159
     typedef typename __alloc_traits::size_type             size_type;
160
     typedef typename __alloc_traits::difference_type       difference_type;
161
-    typedef __map_iterator<typename __base::iterator>      iterator;
162
+    typedef __map_iterator<typename __base::iterator>             iterator;
163
     typedef __map_const_iterator<typename __base::const_iterator> const_iterator;
164
     typedef _VSTD::reverse_iterator<iterator>               reverse_iterator;
165
     typedef _VSTD::reverse_iterator<const_iterator>         const_reverse_iterator;

Return to bug 204461