stabilize build system: depends, installer, boost/bdb fixes, cross targets groundwork

This commit is contained in:
2026-02-24 18:38:47 +00:00
parent da8c28aaeb
commit 65cb2619a7
13106 changed files with 2484322 additions and 1804 deletions
@@ -0,0 +1,56 @@
// (C) Copyright Edward Diener 2015
// Use, modification and distribution are subject to the Boost Software License,
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt).
#if !defined(BOOST_VMD_IS_VMD_SEQ_HPP)
#define BOOST_VMD_IS_VMD_SEQ_HPP
#include <boost/vmd/detail/setup.hpp>
#if BOOST_PP_VARIADICS
#include <boost/preprocessor/control/iif.hpp>
#include <boost/vmd/identity.hpp>
#include <boost/vmd/is_empty.hpp>
#include <boost/vmd/is_seq.hpp>
/*
The succeeding comments in this file are in doxygen format.
*/
/** \file
*/
/** \def BOOST_VMD_IS_VMD_SEQ(sequence)
\brief Determines if a sequence is a VMD seq.
The macro checks that the sequence is a VMD seq.
A VMD seq, which may be a Boost PP seq or emptiness, is a superset of a Boost PP seq.
It returns 1 if it is a VMD seq, else if returns 0.
sequence = a possible Boost PP seq
returns = 1 if it a VMD seq, else returns 0.
*/
#define BOOST_VMD_IS_VMD_SEQ(sequence) \
BOOST_VMD_IDENTITY_RESULT \
( \
BOOST_PP_IIF \
( \
BOOST_VMD_IS_EMPTY(sequence), \
BOOST_VMD_IDENTITY(1), \
BOOST_VMD_IS_SEQ \
) \
(sequence) \
) \
/**/
#endif /* BOOST_PP_VARIADICS */
#endif /* BOOST_VMD_IS_VMD_SEQ_HPP */
@@ -0,0 +1,51 @@
// (C) Copyright Edward Diener 2015
// Use, modification and distribution are subject to the Boost Software License,
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt).
#if !defined(BOOST_VMD_SEQ_POP_BACK_HPP)
#define BOOST_VMD_SEQ_POP_BACK_HPP
#include <boost/vmd/detail/setup.hpp>
#if BOOST_PP_VARIADICS
#include <boost/preprocessor/comparison/equal.hpp>
#include <boost/preprocessor/control/iif.hpp>
#include <boost/preprocessor/seq/pop_back.hpp>
#include <boost/preprocessor/seq/size.hpp>
#include <boost/vmd/empty.hpp>
/*
The succeeding comments in this file are in doxygen format.
*/
/** \file
*/
/** \def BOOST_VMD_SEQ_POP_BACK(seq)
\brief pops an element from the end of a seq.
seq = seq to pop an element from.
If the seq is an empty seq the result is undefined.
If the seq is a single element the result is an empty seq.
Otherwise the result is a seq after removing the last element.
*/
#define BOOST_VMD_SEQ_POP_BACK(seq) \
BOOST_PP_IIF \
( \
BOOST_PP_EQUAL(BOOST_PP_SEQ_SIZE(seq),1), \
BOOST_VMD_EMPTY, \
BOOST_PP_SEQ_POP_BACK \
) \
(seq) \
/**/
#endif /* BOOST_PP_VARIADICS */
#endif /* BOOST_VMD_SEQ_POP_BACK_HPP */
@@ -0,0 +1,51 @@
// (C) Copyright Edward Diener 2015
// Use, modification and distribution are subject to the Boost Software License,
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt).
#if !defined(BOOST_VMD_SEQ_POP_FRONT_HPP)
#define BOOST_VMD_SEQ_POP_FRONT_HPP
#include <boost/vmd/detail/setup.hpp>
#if BOOST_PP_VARIADICS
#include <boost/preprocessor/comparison/equal.hpp>
#include <boost/preprocessor/control/iif.hpp>
#include <boost/preprocessor/seq/pop_front.hpp>
#include <boost/preprocessor/seq/size.hpp>
#include <boost/vmd/empty.hpp>
/*
The succeeding comments in this file are in doxygen format.
*/
/** \file
*/
/** \def BOOST_VMD_SEQ_POP_FRONT(seq)
\brief pops an element from the front of a seq.
seq = seq to pop an element from.
If the seq is an empty seq the result is undefined.
If the seq is a single element the result is an empty seq.
Otherwise the result is a seq after removing the first element.
*/
#define BOOST_VMD_SEQ_POP_FRONT(seq) \
BOOST_PP_IIF \
( \
BOOST_PP_EQUAL(BOOST_PP_SEQ_SIZE(seq),1), \
BOOST_VMD_EMPTY, \
BOOST_PP_SEQ_POP_FRONT \
) \
(seq) \
/**/
#endif /* BOOST_PP_VARIADICS */
#endif /* BOOST_VMD_SEQ_POP_FRONT_HPP */
@@ -0,0 +1,53 @@
// (C) Copyright Edward Diener 2015
// Use, modification and distribution are subject to the Boost Software License,
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt).
#if !defined(BOOST_VMD_SEQ_PUSH_BACK_HPP)
#define BOOST_VMD_SEQ_PUSH_BACK_HPP
#include <boost/vmd/detail/setup.hpp>
#if BOOST_PP_VARIADICS
#include <boost/preprocessor/control/iif.hpp>
#include <boost/preprocessor/seq/push_back.hpp>
#include <boost/vmd/identity.hpp>
#include <boost/vmd/is_empty.hpp>
/*
The succeeding comments in this file are in doxygen format.
*/
/** \file
*/
/** \def BOOST_VMD_SEQ_PUSH_BACK(seq,elem)
\brief appends an element to the end of a seq.
seq = seq to to append an element to.
elem = element to append.
If the seq is an empty seq the result is a seq with the single element.
Otherwise the result is a seq after adding the element to the end.
*/
#define BOOST_VMD_SEQ_PUSH_BACK(seq,elem) \
BOOST_VMD_IDENTITY_RESULT \
( \
BOOST_PP_IIF \
( \
BOOST_VMD_IS_EMPTY(seq), \
BOOST_VMD_IDENTITY((elem)), \
BOOST_PP_SEQ_PUSH_BACK \
) \
(seq,elem) \
) \
/**/
#endif /* BOOST_PP_VARIADICS */
#endif /* BOOST_VMD_SEQ_PUSH_BACK_HPP */
@@ -0,0 +1,53 @@
// (C) Copyright Edward Diener 2015
// Use, modification and distribution are subject to the Boost Software License,
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt).
#if !defined(BOOST_VMD_SEQ_PUSH_FRONT_HPP)
#define BOOST_VMD_SEQ_PUSH_FRONT_HPP
#include <boost/vmd/detail/setup.hpp>
#if BOOST_PP_VARIADICS
#include <boost/preprocessor/control/iif.hpp>
#include <boost/preprocessor/seq/push_front.hpp>
#include <boost/vmd/identity.hpp>
#include <boost/vmd/is_empty.hpp>
/*
The succeeding comments in this file are in doxygen format.
*/
/** \file
*/
/** \def BOOST_VMD_SEQ_PUSH_FRONT(seq,elem)
\brief inserts an element at the beginning of a seq.
seq = seq to insert an element at.
elem = element to insert.
If the seq is an empty seq the result is a seq with the single element.
Otherwise the result is a seq after inserting the element at the beginning.
*/
#define BOOST_VMD_SEQ_PUSH_FRONT(seq,elem) \
BOOST_VMD_IDENTITY_RESULT \
( \
BOOST_PP_IIF \
( \
BOOST_VMD_IS_EMPTY(seq), \
BOOST_VMD_IDENTITY((elem)), \
BOOST_PP_SEQ_PUSH_FRONT \
) \
(seq,elem) \
) \
/**/
#endif /* BOOST_PP_VARIADICS */
#endif /* BOOST_VMD_SEQ_PUSH_FRONT_HPP */
@@ -0,0 +1,57 @@
// (C) Copyright Edward Diener 2015
// Use, modification and distribution are subject to the Boost Software License,
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt).
#if !defined(BOOST_VMD_SEQ_REMOVE_HPP)
#define BOOST_VMD_SEQ_REMOVE_HPP
#include <boost/vmd/detail/setup.hpp>
#if BOOST_PP_VARIADICS
#include <boost/preprocessor/comparison/equal.hpp>
#include <boost/preprocessor/control/iif.hpp>
#include <boost/preprocessor/logical/bitand.hpp>
#include <boost/preprocessor/seq/remove.hpp>
#include <boost/preprocessor/seq/size.hpp>
#include <boost/vmd/empty.hpp>
/*
The succeeding comments in this file are in doxygen format.
*/
/** \file
*/
/** \def BOOST_VMD_SEQ_REMOVE(seq,index)
\brief removes an element from a seq.
seq = seq from which an element is to be removed.
index = The zero-based position in seq of the element to be removed.
If index is greater or equal to the seq size the result is undefined.
If the seq is a single element and the index is 0 the result is an empty seq.
Otherwise the result is a seq after removing the index element.
*/
#define BOOST_VMD_SEQ_REMOVE(seq,index) \
BOOST_PP_IIF \
( \
BOOST_PP_BITAND \
( \
BOOST_PP_EQUAL(index,0), \
BOOST_PP_EQUAL(BOOST_PP_SEQ_SIZE(seq),1) \
), \
BOOST_VMD_EMPTY, \
BOOST_PP_SEQ_REMOVE \
) \
(seq,index) \
/**/
#endif /* BOOST_PP_VARIADICS */
#endif /* BOOST_VMD_SEQ_REMOVE_HPP */
@@ -0,0 +1,52 @@
// (C) Copyright Edward Diener 2015
// Use, modification and distribution are subject to the Boost Software License,
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt).
#if !defined(BOOST_VMD_SEQ_SIZE_HPP)
#define BOOST_VMD_SEQ_SIZE_HPP
#include <boost/vmd/detail/setup.hpp>
#if BOOST_PP_VARIADICS
#include <boost/preprocessor/control/iif.hpp>
#include <boost/preprocessor/seq/size.hpp>
#include <boost/vmd/identity.hpp>
#include <boost/vmd/is_empty.hpp>
/*
The succeeding comments in this file are in doxygen format.
*/
/** \file
*/
/** \def BOOST_VMD_SEQ_SIZE(seq)
\brief expands to the size of the seq passed to it.
seq = seq whose size is to be extracted.
If the seq is an empty seq its size is 0.
Otherwise the result is the number of elements in the seq.
*/
#define BOOST_VMD_SEQ_SIZE(seq) \
BOOST_VMD_IDENTITY_RESULT \
( \
BOOST_PP_IIF \
( \
BOOST_VMD_IS_EMPTY(seq), \
BOOST_VMD_IDENTITY(0), \
BOOST_PP_SEQ_SIZE \
) \
(seq) \
) \
/**/
#endif /* BOOST_PP_VARIADICS */
#endif /* BOOST_VMD_SEQ_SIZE_HPP */
@@ -0,0 +1,52 @@
// (C) Copyright Edward Diener 2015
// Use, modification and distribution are subject to the Boost Software License,
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt).
#if !defined(BOOST_VMD_SEQ_TO_ARRAY_HPP)
#define BOOST_VMD_SEQ_TO_ARRAY_HPP
#include <boost/vmd/detail/setup.hpp>
#if BOOST_PP_VARIADICS
#include <boost/preprocessor/control/iif.hpp>
#include <boost/preprocessor/seq/to_array.hpp>
#include <boost/vmd/identity.hpp>
#include <boost/vmd/is_empty.hpp>
/*
The succeeding comments in this file are in doxygen format.
*/
/** \file
*/
/** \def BOOST_VMD_SEQ_TO_ARRAY(seq)
\brief converts a seq to an array.
seq = seq to be converted.
If the seq is an empty seq it is converted to an array with 0 elements.
Otherwise the seq is converted to an array with the same number of elements as the seq.
*/
#define BOOST_VMD_SEQ_TO_ARRAY(seq) \
BOOST_VMD_IDENTITY_RESULT \
( \
BOOST_PP_IIF \
( \
BOOST_VMD_IS_EMPTY(seq), \
BOOST_VMD_IDENTITY((0,())), \
BOOST_PP_SEQ_TO_ARRAY \
) \
(seq) \
) \
/**/
#endif /* BOOST_PP_VARIADICS */
#endif /* BOOST_VMD_SEQ_TO_ARRAY_HPP */
@@ -0,0 +1,65 @@
// (C) Copyright Edward Diener 2015
// Use, modification and distribution are subject to the Boost Software License,
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt).
#if !defined(BOOST_VMD_SEQ_TO_LIST_HPP)
#define BOOST_VMD_SEQ_TO_LIST_HPP
#include <boost/vmd/detail/setup.hpp>
#if BOOST_PP_VARIADICS
#include <boost/preprocessor/control/iif.hpp>
#include <boost/preprocessor/seq/to_list.hpp>
// #include <boost/vmd/identity.hpp>
#include <boost/vmd/is_empty.hpp>
/*
The succeeding comments in this file are in doxygen format.
*/
/** \file
*/
/** \def BOOST_VMD_SEQ_TO_LIST(seq)
\brief converts a seq to a list.
seq = seq to be converted.
If the seq is an empty seq it is converted to an empty list (BOOST_PP_NIL).
Otherwise the seq is converted to a list with the same number of elements as the seq.
*/
#if BOOST_VMD_MSVC
#define BOOST_VMD_SEQ_TO_LIST(seq) \
BOOST_PP_IIF \
( \
BOOST_VMD_IS_EMPTY(seq), \
BOOST_VMD_SEQ_TO_LIST_PE, \
BOOST_VMD_SEQ_TO_LIST_NPE \
) \
(seq) \
/**/
#define BOOST_VMD_SEQ_TO_LIST_PE(seq) BOOST_PP_NIL
/**/
#define BOOST_VMD_SEQ_TO_LIST_NPE(seq) BOOST_PP_SEQ_TO_LIST(seq)
/**/
#else
#define BOOST_VMD_SEQ_TO_LIST(seq) \
BOOST_PP_IIF \
( \
BOOST_VMD_IS_EMPTY(seq), \
BOOST_VMD_IDENTITY(BOOST_PP_NIL), \
BOOST_PP_SEQ_TO_LIST \
) \
(seq) \
/**/
#endif
#endif /* BOOST_PP_VARIADICS */
#endif /* BOOST_VMD_SEQ_TO_LIST_HPP */
@@ -0,0 +1,49 @@
// (C) Copyright Edward Diener 2015
// Use, modification and distribution are subject to the Boost Software License,
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt).
#if !defined(BOOST_VMD_SEQ_TO_TUPLE_HPP)
#define BOOST_VMD_SEQ_TO_TUPLE_HPP
#include <boost/vmd/detail/setup.hpp>
#if BOOST_PP_VARIADICS
#include <boost/preprocessor/control/iif.hpp>
#include <boost/preprocessor/seq/to_tuple.hpp>
#include <boost/vmd/empty.hpp>
#include <boost/vmd/is_empty.hpp>
/*
The succeeding comments in this file are in doxygen format.
*/
/** \file
*/
/** \def BOOST_VMD_SEQ_TO_TUPLE(seq)
\brief converts a seq to a tuple.
seq = seq to be converted.
If the seq is an empty seq it is converted to an empty tuple.
Otherwise the seq is converted to a tuple with the same number of elements as the seq.
*/
#define BOOST_VMD_SEQ_TO_TUPLE(seq) \
BOOST_PP_IIF \
( \
BOOST_VMD_IS_EMPTY(seq), \
BOOST_VMD_EMPTY, \
BOOST_PP_SEQ_TO_TUPLE \
) \
(seq) \
/**/
#endif /* BOOST_PP_VARIADICS */
#endif /* BOOST_VMD_SEQ_TO_TUPLE_HPP */