// -*- mode: c++ -*-
/***************************************************************************
 *  include/stxxl/bits/config.h.in
 *
 *  Template file processed by cmake to set all define switches for this build
 *  according to the cmake build options.
 *
 *  Part of the STXXL. See http://stxxl.sourceforge.net
 *
 *  Copyright (C) 2012-2013 Timo Bingmann <tb@panthema.net>
 *
 *  Distributed under 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)
 **************************************************************************/

#ifndef STXXL_CONFIG_HEADER
#define STXXL_CONFIG_HEADER

// the STXXL library version variables
#define STXXL_VERSION_MAJOR ${STXXL_VERSION_MAJOR}
#define STXXL_VERSION_MINOR ${STXXL_VERSION_MINOR}
#define STXXL_VERSION_PATCH ${STXXL_VERSION_PATCH}
#define STXXL_VERSION_STRING "${STXXL_VERSION_STRING}"
#define STXXL_VERSION_PHASE "${STXXL_VERSION_PHASE}"

// if this is a git repository, add the refspec and commit sha
#cmakedefine STXXL_VERSION_GIT_REFSPEC "${STXXL_VERSION_GIT_REFSPEC}"
#cmakedefine STXXL_VERSION_GIT_SHA1 "${STXXL_VERSION_GIT_SHA1}"

#cmakedefine STXXL_DIRECT_IO_OFF ${STXXL_DIRECT_IO_OFF}
// default: 0/1 (platform dependent)
// cmake:   detection of platform and flag
// effect:  disables use of O_DIRECT flag on unsupported platforms

#cmakedefine STXXL_HAVE_MMAP_FILE ${STXXL_HAVE_MMAP_FILE}
// default: 0/1 (platform dependent)
// used in: io/mmap_file.h/cpp
// effect:  enables/disables memory mapped file implementation

#cmakedefine STXXL_HAVE_LINUXAIO_FILE ${STXXL_HAVE_LINUXAIO_FILE}
// default: 0/1 (platform dependent)
// used in: io/linuxaio_file.h/cpp
// effect:  enables/disables Linux AIO file implementation

#cmakedefine STXXL_POSIX_THREADS ${STXXL_POSIX_THREADS}
// default: off
// cmake:   detection of pthreads by cmake
// effect:  uses POSIX thread and mutexes on linux

#cmakedefine STXXL_STD_THREADS ${STXXL_STD_THREADS}
// default: off
// cmake:   detection of <thread> and <mutex>
// effect:  uses std thread and mutex on windows or (forced on linux)

#cmakedefine STXXL_WINDOWS ${STXXL_WINDOWS}
// default: off
// cmake:   detection of ms windows platform (32- or 64-bit)
// effect:  enables windows-specific api calls (mingw or msvc)

#cmakedefine STXXL_MSVC ${STXXL_MSVC}
// default: off
// cmake:   detection of ms visual c++ via CMake (contains version number)
// effect:  enables msvc-specific headers and macros

#cmakedefine STXXL_HAVE_CXX11_RANGE_FOR_LOOP ${STXXL_HAVE_CXX11_RANGE_FOR_LOOP}
// default: off
// run-time: detection C++11 support for "for (auto i : obj) { }"
// effect:  enables some C++11 construct (currently only allowed in examples)

#cmakedefine STXXL_HAVE_SYNC_ADD_AND_FETCH ${STXXL_HAVE_SYNC_ADD_AND_FETCH}
// default: off
// cmake:   detection of __sync_add_and_fetch() intrinsic
// effect:  enables use of atomics in counting_ptr

#cmakedefine STXXL_PARALLEL_MODE_EXPLICIT ${STXXL_PARALLEL_MODE_EXPLICIT}
// default: off
// cmake:   -DUSE_GNU_PARALLEL=ON
// effect:  explicitly enables use of __gnu_parallel algorithms

#cmakedefine STXXL_BOOST_CONFIG ${STXXL_BOOST_CONFIG}
#cmakedefine STXXL_BOOST_FILESYSTEM ${STXXL_BOOST_FILESYSTEM}
#cmakedefine STXXL_BOOST_RANDOM ${STXXL_BOOST_RANDOM}
#cmakedefine STXXL_BOOST_THREADS ${STXXL_BOOST_THREADS}
#cmakedefine STXXL_BOOST_TIMESTAMP ${STXXL_BOOST_TIMESTAMP}
// default: off
// cmake:   -DUSE_BOOST=ON
// effect:  enables use of boost libraries in different parts of STXXL.

#if STXXL_BOOST_CONFIG
  #include <boost/config.hpp>
#endif

#cmakedefine STXXL_STD_RANDOM ${STXXL_STD_RANDOM}
// default: off
// cmake:   detection of <random>
// effect:  uses std random generator on windows or (forced on linux)

#cmakedefine STXXL_HAVE_MALLINFO_PROTO ${STXXL_HAVE_MALLINFO_PROTO}
// default: off
// cmake:   detection of mallinfo() function in <malloc.h>
// effect:  used by stxxl_tool/mallinfo for malloc stats

#cmakedefine STXXL_HAVE_MLOCK_PROTO ${STXXL_HAVE_MLOCK_PROTO}
// default: off
// cmake:   detection of mlock() function in <sys/mman.h>
// effect:  used by stxxl_tool/mlock for locking physical pages

#cmakedefine STXXL_WITH_VALGRIND ${STXXL_WITH_VALGRIND}
// default: off
// cmake:   option USE_VALGRIND=ON
// effect:  run all tests with valgrind and pre-initialize some memory buffers

#endif // !STXXL_CONFIG_HEADER
