/* Generated automatically by H5make_libsettings -- do not edit */



/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 * Copyright by The HDF Group.                                               *
 * Copyright by the Board of Trustees of the University of Illinois.         *
 * All rights reserved.                                                      *
 *                                                                           *
 * This file is part of HDF5.  The full HDF5 copyright notice, including     *
 * terms governing use, modification, and redistribution, is contained in    *
 * the COPYING file, which can be found at the root of the source code       *
 * distribution tree, or in https://support.hdfgroup.org/ftp/HDF5/releases.  *
 * If you do not have access to either file, you may request a copy from     *
 * help@hdfgroup.org.                                                        *
 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 * Created:		Jan 29, 2019
 *			root <root@qemux86-64>
 *
 * Purpose:		This machine-generated source code contains
 *			information about the library build configuration
 *
 * Modifications:
 *
 *	DO NOT MAKE MODIFICATIONS TO THIS FILE!
 *	It was generated by code in `H5make_libsettings.c'.
 *
 *-------------------------------------------------------------------------
 */

char H5libhdf5_settings[]=
	"      SUMMARY OF THE HDF5 CONFIGURATION\n"
	"      =================================\n"
	"\n"
	"General Information:\n"
	"-------------------\n"
	"                   HDF5 Version: 1.8.19\n"
	"                  Configured on: 2019-01-29\n"
	"                  Configured by: Ninja\n"
	"                 Configure mode: CMAKE 3.12.2\n"
	"                    Host system: Linux-4.4.0-31-generic\n"
	"              Uname information: Linux\n"
	"                       Byte sex: little-endian\n"
	"                      Libraries: \n"
	"             Installation point: /usr\n"
	"\n"
	"Compiling Options:\n"
	"------------------\n"
	"               Compilation Mode: \n"
	"                      H5_CFLAGS: \n"
	"                      AM_CFLAGS: \n"
	"                       CPPFLAGS: \n"
	"                    H5_CPPFLAGS: \n"
	"                    AM_CPPFLAGS: \n"
	"               Shared C Library: YES\n"
	"               Static C Library: YES\n"
	"  Statically Linked Executables: OFF\n"
	"                        LDFLAGS: -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed\n"
	"                     AM_LDFLAGS: \n"
	"                Extra libraries: m;dl\n"
	"              Debugged Packages: \n"
	"                    API Tracing: OFF\n"
	"\n"
	"Languages:\n"
	"----------\n"
	"                        Fortran: OFF\n"
	"               Fortran Compiler: \n"
	"          Fortran 2003 Compiler: \n"
	"                  Fortran Flags: \n"
	"               H5 Fortran Flags: \n"
	"               AM Fortran Flags: \n"
	"         Shared Fortran Library: YES\n"
	"         Static Fortran Library: YES\n"
	"\n"
	"                   H5 C++ Flags: \n"
	"                   AM C++ Flags: \n"
	"             Shared C++ Library: YES\n"
	"             Static C++ Library: YES\n"
	"\n"
	"Features:\n"
	"---------\n"
	"                  Parallel HDF5: OFF\n"
	"             High Level library: ON\n"
	"                   Threadsafety: OFF\n"
	"            Default API Mapping: v18\n"
	" With Deprecated Public Symbols: ON\n"
	"         I/O filters (external): \n"
	"                            MPE: \n"
	"                     Direct VFD: \n"
	"                        dmalloc: \n"
	"Clear file buffers before write: ON\n"
	"           Using memory checker: OFF\n"
	"         Function Stack Tracing: OFF\n"
	"      Strict File Format Checks: OFF\n"
	"   Optimization Instrumentation: \n"
;

