endif()
endif()
-if(GMX_USE_TNG)
- find_package(ZLIB QUIET)
- include(gmxTestZLib)
- gmx_test_zlib(HAVE_ZLIB)
- set(TNG_BUILD_WITH_ZLIB ${HAVE_ZLIB} CACHE BOOL "Build TNG with zlib compression")
- set(TNG_BUILD_FORTRAN OFF CACHE BOOL "Build Fortran compatible TNG library and examples for testing")
- set(TNG_BUILD_EXAMPLES OFF CACHE BOOL "Build examples showing usage of the TNG API")
- set(TNG_BUILD_COMPRESSION_TESTS OFF CACHE BOOL "Build tests of the TNG compression library")
- set(TNG_BUILD_DOCUMENTATION OFF CACHE BOOL "Use Doxygen to create the HTML based TNG API documentation")
- set(TNG_BUILD_TEST OFF CACHE BOOL "Build TNG testing binary.")
- add_subdirectory(${CMAKE_SOURCE_DIR}/src/external/tng_io)
- set(GMX_TNG_LIBRARIES tng_io)
-endif()
-mark_as_advanced(TNG_BUILD_FORTRAN)
-mark_as_advanced(TNG_BUILD_EXAMPLES)
-mark_as_advanced(TNG_BUILD_COMPRESSION_TESTS)
-mark_as_advanced(TNG_BUILD_DOCUMENTATION)
-mark_as_advanced(TNG_BUILD_TEST)
-mark_as_advanced(TNG_EXAMPLE_FILES_DIR)
-
if (GMX_BUILD_FOR_COVERAGE)
# Code heavy with asserts makes conditional coverage close to useless metric,
# as by design most of the false branches are impossible to trigger in
--- /dev/null
+set(TNG_ROOT_SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR})
+file(RELATIVE_PATH TNG_ROOT_BINARY_DIR ${CMAKE_SOURCE_DIR} ${TNG_ROOT_SOURCE_DIR})
+set(TNG_ROOT_BINARY_DIR ${CMAKE_BINARY_DIR}/${TNG_ROOT_BINARY_DIR})
+
+function (TNG_GENERATE_VERSION_H)
+ set(TNG_MAJOR_VERSION "1")
+ set(TNG_MINOR_VERSION "6")
+ set(TNG_VERSION_PATCH_LEVEL "0")
+ set(TNG_IO_VERSION "${TNG_MAJOR_VERSION}.${TNG_MINOR_VERSION}.${TNG_VERSION_PATCH_LEVEL}")
+ set(TNG_API_VERSION "6")
+ configure_file(${TNG_ROOT_SOURCE_DIR}/include/tng/version.h.in
+ ${TNG_ROOT_BINARY_DIR}/include/tng/version.h)
+
+ set(TNG_MAJOR_VERSION ${TNG_MAJOR_VERSION} PARENT_SCOPE)
+ set(TNG_IO_VERSION ${TNG_IO_VERSION} PARENT_SCOPE)
+endfunction()
+
+tng_generate_version_h()
+
+include(TestBigEndian)
+test_big_endian(TNG_INTEGER_BIG_ENDIAN)
+include(CheckIncludeFile)
+check_include_file(inttypes.h TNG_HAVE_INTTYPES_H)
+
+macro(TNG_GET_SOURCE_LIST TNG_SOURCELIST TNG_COMPILEDEFS)
+ include_directories(${TNG_ROOT_SOURCE_DIR}/include)
+ include_directories(${TNG_ROOT_BINARY_DIR}/include)
+ set(_tng_compression_sources bwlzh.c bwt.c coder.c dict.c fixpoint.c huffman.c huffmem.c lz77.c merge_sort.c mtf.c rle.c tng_compress.c vals16.c warnmalloc.c widemuldiv.c xtc2.c xtc3.c)
+ set(_tng_io_sources tng_io.c md5.c)
+ set(${TNG_SOURCELIST})
+ set(${TNG_COMPILEDEFS})
+ foreach(_file ${_tng_compression_sources})
+ list(APPEND ${TNG_SOURCELIST} ${TNG_ROOT_SOURCE_DIR}/src/compression/${_file})
+ endforeach()
+ foreach(_file ${_tng_io_sources})
+ list(APPEND ${TNG_SOURCELIST} ${TNG_ROOT_SOURCE_DIR}/src/lib/${_file})
+ endforeach()
+ if(TNG_BUILD_FORTRAN)
+ list(APPEND ${TNG_SOURCELIST} ${TNG_ROOT_SOURCE_DIR}/src/lib/tng_io_fortran.c)
+ endif()
+ if (TNG_HAVE_INTTYPES_H)
+ list(APPEND ${TNG_COMPILEDEFS} USE_STD_INTTYPES_H)
+ endif()
+endmacro()
+
+macro(TNG_SET_SOURCE_PROPERTIES)
+ set(_tng_with_zlib OFF)
+ set(_curr_var)
+ foreach (_arg ${ARGN})
+ if (_arg STREQUAL "WITH_ZLIB")
+ set(_curr_var with_zlib)
+ elseif (_curr_var)
+ set(_tng_${_curr_var} ${_arg})
+ set(_curr_var "")
+ else()
+ message(FATAL_ERROR "Invalid argument ${_arg} to TNG_SET_SOURCE_PROPERTIES")
+ endif()
+ endforeach()
+ if (_tng_with_zlib)
+ set_property(SOURCE ${TNG_ROOT_SOURCE_DIR}/src/lib/tng_io.c
+ APPEND PROPERTY COMPILE_DEFINITIONS USE_ZLIB)
+ endif()
+ if (TNG_HAVE_INTTYPES_H)
+ set_property(SOURCE ${TNG_ROOT_SOURCE_DIR}/src/lib/tng_io.c
+ APPEND PROPERTY COMPILE_DEFINITIONS USE_STD_INTTYPES_H)
+ endif()
+ if (TNG_INTEGER_BIG_ENDIAN)
+ set_property(SOURCE ${TNG_ROOT_SOURCE_DIR}/src/lib/md5.c
+ APPEND PROPERTY COMPILE_DEFINITIONS TNG_INTEGER_BIG_ENDIAN)
+ endif()
+endmacro()
cmake_minimum_required(VERSION 2.8.8)
project(TNG_IO)
-set(PROJECT_VERSION "1.5")
-set(API_VERSION "5")
-configure_file(${CMAKE_CURRENT_SOURCE_DIR}/include/version.h.in
- ${CMAKE_BINARY_DIR}/include/version.h )
-include_directories(${CMAKE_BINARY_DIR}/include)
if("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wall")
include(CheckIncludeFile)
check_include_file(inttypes.h HAVE_INTTYPES_H)
-add_subdirectory(src)
+include(BuildTNG.cmake)
+tng_get_source_list(TNG_SOURCES TNG_COMPILE_DEFS)
+
+tng_set_source_properties(WITH_ZLIB ${ZLIB_FOUND})
+
+if (ZLIB_FOUND)
+ list(APPEND EXTRA_LIBRARIES ${ZLIB_LIBRARIES})
+endif()
+
+if (UNIX)
+ list(APPEND EXTRA_LIBRARIES m)
+endif()
+
+add_library(tng_io ${TNG_SOURCES})
+
+target_link_libraries(tng_io ${EXTRA_LIBRARIES})
-install(FILES include/tng_io.h include/tng_io_fwd.h DESTINATION include/)
+set_target_properties(tng_io PROPERTIES VERSION ${TNG_IO_VERSION} SOVERSION ${TNG_MAJOR_VERSION})
+
+# Create the tng_ioConfig.cmake and tng_ioConfigVersion.cmake files for the install tree
+set(CONF_INCLUDE_DIRS "${CMAKE_INSTALL_PREFIX}/include")
+configure_file( src/lib/tng_io-config.cmake.in
+ "${CMAKE_CURRENT_BINARY_DIR}/cmake/tng_io-config.cmake" @ONLY)
+configure_file( src/lib/tng_io-configVersion.cmake.in
+ "${CMAKE_CURRENT_BINARY_DIR}/cmake/tng_io-configVersion.cmake" @ONLY)
+
+# Use GNUInstallDirst to set paths on multiarch systems
+include(GNUInstallDirs)
+
+# Install the tng_ioConfig.cmake and tng_ioConfigVersion.cmake
+install(FILES
+ "${CMAKE_CURRENT_BINARY_DIR}/cmake/tng_io-config.cmake"
+ "${CMAKE_CURRENT_BINARY_DIR}/cmake/tng_io-configVersion.cmake"
+ DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/tng_io")
+
+install(TARGETS tng_io
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
+
+install(FILES include/tng/tng_io.h include/tng/tng_io_fwd.h ${CMAKE_CURRENT_BINARY_DIR}/include/tng/version.h
+ DESTINATION include/tng)
#-- Add an Option to toggle the generation of the API documentation
option(TNG_BUILD_DOCUMENTATION "Use Doxygen to create the HTML based API documentation" OFF)
DESTINATION share/tng/doc)
endif()
+add_subdirectory(src)
+
# Note that relative paths are relative to the directory from which doxygen is
# run.
-EXCLUDE = @PROJECT_SOURCE_DIR@/src/lib/md5.c @PROJECT_SOURCE_DIR@/include/md5.h @PROJECT_SOURCE_DIR@/include/tng_io.hpp @PROJECT_SOURCE_DIR@/src/lib/tng_io.c
+EXCLUDE = @PROJECT_SOURCE_DIR@/src/lib/md5.c @PROJECT_SOURCE_DIR@/include/tng/md5.h @PROJECT_SOURCE_DIR@/include/tng/tng_io.hpp @PROJECT_SOURCE_DIR@/src/lib/tng_io.c
# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
# directories that are symbolic links (a Unix file system feature) are excluded
* Each block can contain MD5 hashes to verify data integrity and the file
* can be signed by the user to ensure that the origin is correct.
*
- * This is version 1.4 of the TNG API. The intention is that this version of
- * the API and ABI should be stable, but it is still possible that future
- * changes might make that impossible, in which case that will be clarified.
+ * The intention is that the API and ABI should be stable, but it is
+ * still possible that future changes might make that impossible, in which
+ * case that will be clarified.
*
* The API and all examples are released without any warranties. Use them at
* your own risk.
*
* Revisions
*
+ * v. 1.6 - Fourth stable release of the API.
+ *
+ * - Removed OpenMP option when building.
+ * - Functionality for migrating data blocks.
+ * - Improved handling of molecules.
+ * - Improved installation of TNG documentation.
+ * - Enhancements to CMake usage.
+ * - Required CMake version raised to 2.8.8.
+ * - Bugs fixed.
+ *
* v. 1.5 - Third stable release of the API.
*
* - Fortran wrapper split into separate file
* \code
* #include <stdlib.h>
* #include <stdio.h>
- * #include "tng_io.h"
+ * #include "tng/tng_io.h"
*
* int main(int argc, char **argv)
* {
* @{
*/
+/**
+ * @brief Get the major version of the TNG library.
+ * @param tng_data is a trajectory data container, it does not have
+ * to be initialized beforehand.
+ * @param version is pointing to a value set to the major version of
+ * the library.
+ * @return TNG_SUCCESS (0) if successful.
+ */
+tng_function_status DECLSPECDLLEXPORT tng_version_major
+ (const tng_trajectory_t tng_data,
+ int *version);
+
+/**
+ * @brief Get the minor version of the TNG library.
+ * @param tng_data is a trajectory data container, it does not have
+ * to be initialized beforehand.
+ * @param version is pointing to a value set to the minor version of
+ * the library.
+ * @return TNG_SUCCESS (0) if successful.
+ */
+tng_function_status DECLSPECDLLEXPORT tng_version_minor
+ (const tng_trajectory_t tng_data,
+ int *version);
+
+/**
+ * @brief Get the patch level of the TNG library.
+ * @param tng_data is a trajectory data container, it does not have
+ * to be initialized beforehand.
+ * @param patch_level is the string to fill with the full version,
+ * memory must be allocated before.
+ * @return TNG_SUCCESS (0) if successful.
+ */
+tng_function_status DECLSPECDLLEXPORT tng_version_patchlevel
+ (const tng_trajectory_t tng_data,
+ int *patch_level);
+
+/**
+ * @brief Get the full version string of the TNG library.
+ * @param tng_data is a trajectory data container, it does not have
+ * to be initialized beforehand.
+ * @param version is pointing to a value set to the major version of
+ * the library.
+ * @param max_len maximum char length of the string, i.e. how much memory has
+ * been reserved for version. This includes \0 terminating character.
+ * @pre \code version != 0 \endcode The pointer to the name string
+ * must not be a NULL pointer.
+ * @return TNG_SUCCESS (0) if successful.
+ */
+tng_function_status DECLSPECDLLEXPORT tng_version
+ (const tng_trajectory_t tng_data,
+ char *version,
+ const int max_len);
+
/**
* @brief Setup a trajectory data container.
* @param tng_data_p a pointer to memory to initialise as a trajectory.
(tng_trajectory_t tng_data,
const int64_t block_id,
int64_t *codec_id,
- float *factor);
+ double *factor);
/** @brief High-level function for determining the next frame with data and what
* data blocks have data for that frame. The search can be limited to certain
--- /dev/null
+#ifndef VERSION_CONFIG_H
+#define VERSION_CONFIG_H
+
+/* define the API version (integer) */
+#define TNG_API_VERSION @TNG_API_VERSION@
+
+/* define the major and minor versions
+ of the library */
+#define TNG_VERSION_MAJOR @TNG_MAJOR_VERSION@
+#define TNG_VERSION_MINOR @TNG_MINOR_VERSION@
+/* define the patchlevel of the library */
+#define TNG_VERSION_PATCHLEVEL @TNG_VERSION_PATCH_LEVEL@
+/* define the full version of the library (string) */
+#define TNG_VERSION "@TNG_IO_VERSION@"
+
+#endif
+++ /dev/null
-#ifndef VERSION_CONFIG_H
-#define VERSION_CONFIG_H
-
-/* define the API version */
-#define TNG_API_VERSION @API_VERSION@
-
-#endif
-add_subdirectory(compression)
-add_subdirectory(lib)
add_subdirectory(tests)
+++ /dev/null
-set(source_files bwlzh.c bwt.c coder.c dict.c fixpoint.c huffman.c huffmem.c lz77.c merge_sort.c mtf.c rle.c tng_compress.c vals16.c warnmalloc.c widemuldiv.c xtc2.c xtc3.c)
-
-add_library(tng_compress ${source_files})
-
-# Append the required library dependencies
-if(UNIX)
- target_link_libraries(tng_compress m)
-endif()
-
-# Use GNUInstallDirst to set paths on multiarch systems
-include(GNUInstallDirs)
-
-install(TARGETS tng_compress
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
+++ /dev/null
-set(source_files tng_io.c md5.c)
-if(TNG_BUILD_FORTRAN)
- list(APPEND source_files tng_io_fortran.c)
-endif()
-
-add_library(tng_io ${source_files})
-
-# Now add source-file compilation properties to the source-file
-# targets
-
-if(HAVE_INTTYPES_H)
- set_property(SOURCE tng_io.c APPEND PROPERTY COMPILE_DEFINITIONS USE_STD_INTTYPES_H)
-endif()
-if(TNG_BUILD_WITH_ZLIB)
- set_property(SOURCE tng_io.c APPEND PROPERTY COMPILE_DEFINITIONS USE_ZLIB)
-endif()
-
-# This test is for md5. The TNG library itself determines the actual byte order -
-# not just if it is small or big endian.
-include(TestBigEndian)
-test_big_endian(TNG_INTEGER_BIG_ENDIAN)
-if(TNG_INTEGER_BIG_ENDIAN)
- set_property(SOURCE md5.c APPEND PROPERTY COMPILE_DEFINITIONS TNG_INTEGER_BIG_ENDIAN)
-endif()
-
-# Append the required library dependencies
-target_link_libraries(tng_io tng_compress)
-if(TNG_BUILD_WITH_ZLIB)
- target_link_libraries(tng_io ${ZLIB_LIBRARIES})
-endif()
-
-# Use GNUInstallDirst to set paths on multiarch systems
-include(GNUInstallDirs)
-
-install(TARGETS tng_io
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
1999-05-03 lpd Original version.
*/
-#include "../../include/md5.h"
+#include "tng/md5.h"
#include <string.h>
#undef BYTE_ORDER /* 1 = big-endian, -1 = little-endian, 0 = unknown */
--- /dev/null
+# - Config file for the TNG_IO package
+# It defines the following variables
+# TNG_IO_INCLUDE_DIRS - include directories for TNG_IO
+# TNG_IO_LIBRARIES - libraries to link against
+# TNG_IO_DEFINITIONS - definitions used when compiling
+
+# Compute paths
+get_filename_component(TNG_IO_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
+set(TNG_IO_INCLUDE_DIRS "@CONF_INCLUDE_DIRS@")
+set(TNG_IO_DEFINITIONS "@TNG_COMPILE_DEFS@")
+
+set(TNG_IO_LIBRARIES tng_io)
+
--- /dev/null
+set(PACKAGE_VERSION "@TNG_IO_VERSION@")
+
+# Check whether the requested PACKAGE_FIND_VERSION is compatible
+if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}")
+ set(PACKAGE_VERSION_COMPATIBLE FALSE)
+else()
+ set(PACKAGE_VERSION_COMPATIBLE TRUE)
+ if ("${PACKAGE_VERSION}" VERSION_EQUAL "${PACKAGE_FIND_VERSION}")
+ set(PACKAGE_VERSION_EXACT TRUE)
+ endif()
+endif()
+
#include <zlib.h>
#endif
-#include "../../include/tng_io.h"
-#include "../../include/md5.h"
-#include "../../include/compression/tng_compress.h"
-#include "../include/version.h"
+#include "tng/tng_io.h"
+#include "tng/md5.h"
+#include "compression/tng_compress.h"
+#include "tng/version.h"
struct tng_bond {
return(TNG_SUCCESS);
}
+tng_function_status DECLSPECDLLEXPORT tng_version_major
+ (const tng_trajectory_t tng_data,
+ int *version)
+{
+ (void)tng_data;
+
+ *version = TNG_VERSION_MAJOR;
+
+ return(TNG_SUCCESS);
+}
+
+tng_function_status DECLSPECDLLEXPORT tng_version_minor
+ (const tng_trajectory_t tng_data,
+ int *version)
+{
+ (void)tng_data;
+
+ *version = TNG_VERSION_MINOR;
+
+ return(TNG_SUCCESS);
+}
+
+tng_function_status DECLSPECDLLEXPORT tng_version_patchlevel
+ (const tng_trajectory_t tng_data,
+ int *patch_level)
+{
+ (void)tng_data;
+
+ *patch_level = TNG_VERSION_PATCHLEVEL;
+
+ return(TNG_SUCCESS);
+}
+
+tng_function_status DECLSPECDLLEXPORT tng_version
+ (const tng_trajectory_t tng_data,
+ char *version,
+ const int max_len)
+{
+ (void)tng_data;
+ TNG_ASSERT(version, "TNG library: version must not be a NULL pointer");
+
+ TNG_SNPRINTF(version, max_len, "%s", TNG_VERSION);
+
+ return(TNG_SUCCESS);
+}
+
tng_function_status DECLSPECDLLEXPORT tng_molecule_add
(tng_trajectory_t tng_data,
const char *name,
(tng_trajectory_t tng_data,
const int64_t block_id,
int64_t *codec_id,
- float *factor)
+ double *factor)
{
tng_trajectory_frame_set_t frame_set;
tng_particle_data_t p_data = 0;
if(block_type == TNG_PARTICLE_BLOCK_DATA)
{
*codec_id = p_data->codec_id;
- *factor = (float)p_data->compression_multiplier;
+ *factor = p_data->compression_multiplier;
}
else if(block_type == TNG_NON_PARTICLE_BLOCK_DATA)
{
*codec_id = np_data->codec_id;
- *factor = (float)np_data->compression_multiplier;
+ *factor = np_data->compression_multiplier;
}
return(TNG_SUCCESS);
}
file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/test_tng_compress_files)
-include_directories(${CMAKE_BINARY_DIR}/include/)
-
set(number 0)
set(numtests 78)
math( EXPR number "${number} + 1" )
add_executable(test_tng_compress_gen${number} testsuite.c)
-target_link_libraries(test_tng_compress_gen${number} tng_compress)
+target_link_libraries(test_tng_compress_gen${number} tng_io)
if(UNIX)
target_link_libraries(test_tng_compress_gen${number} m)
endif()
set_property(TARGET test_tng_compress_gen${number} PROPERTY RUNTIME_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/compression_tests)
add_executable(test_tng_compress_read${number} testsuite.c)
-target_link_libraries(test_tng_compress_read${number} tng_compress)
+target_link_libraries(test_tng_compress_read${number} tng_io)
if(UNIX)
target_link_libraries(test_tng_compress_read${number} m)
endif()
#include <stdlib.h>
#include <string.h>
#include <math.h>
-#include "../../../include/compression/tng_compress.h"
+#include "compression/tng_compress.h"
#include TESTPARAM
#ifdef TEST_FLOAT
#ifdef TNG_BUILD_OPENMP_EXAMPLES
-# include <stdlib.h>
-# include <stdio.h>
-# include <time.h>
-# include <math.h>
-# include <omp.h>
-#include "../../include/tng_io.h"
+#include <stdlib.h>
+#include <stdio.h>
+#include <time.h>
+#include <math.h>
+#include <omp.h>
+#include "tng/tng_io.h"
int main ();
void compute ( int np, int nd, double pos[], double vel[],
#ifdef TNG_BUILD_OPENMP_EXAMPLES
-# include <stdlib.h>
-# include <stdio.h>
-# include <time.h>
-# include <math.h>
-# include <omp.h>
-#include "../../include/tng_io.h"
+#include <stdlib.h>
+#include <stdio.h>
+#include <time.h>
+#include <math.h>
+#include <omp.h>
+#include "tng/tng_io.h"
int main ();
void compute ( int np, int nd, float pos[], float vel[],
#include <stdlib.h>
#include <stdio.h>
-#include "../../include/tng_io.h"
+#include "tng/tng_io.h"
int main(int argc, char **argv)
{
#include <stdlib.h>
#include <stdio.h>
-#include "../../include/tng_io.h"
+#include "tng/tng_io.h"
int main(int argc, char **argv)
{
#include <stdlib.h>
#include <string.h>
-#include "../../include/tng_io.h"
+#include "tng/tng_io.h"
+#include "tng/version.h"
static tng_function_status tng_test_setup_molecules(tng_trajectory_t traj)
{
tng_trajectory_t traj;
tng_function_status stat;
char time_str[TNG_MAX_DATE_STR_LEN];
+ char version_str[TNG_MAX_STR_LEN];
+
+ tng_version(traj, version_str, TNG_MAX_STR_LEN);
+ if(strncmp(TNG_VERSION, version_str, TNG_MAX_STR_LEN) == 0)
+ {
+ printf("Test version control: \t\t\t\tSucceeded.\n");
+ }
+ else
+ {
+ printf("Test version control: \t\t\t\tFailed.\n");
+ }
if(tng_trajectory_init(&traj) != TNG_SUCCESS)
{
#include <stdlib.h>
#include <stdio.h>
-#include "../../include/tng_io.h"
+#include "tng/tng_io.h"
/* N.B. this code is for testing parallel reading of trajectory frame sets. The
endif()
endfunction ()
+if(GMX_USE_TNG)
+ option(GMX_EXTERNAL_TNG "Use external TNG instead of compiling the version shipped with GROMACS."
+ OFF)
+ # Detect TNG if GMX_EXTERNAL_TNG is explicitly ON
+ if(GMX_EXTERNAL_TNG)
+ find_package(TNG_IO 1.6.0)
+ if(NOT TNG_IO_FOUND)
+ message(FATAL_ERROR
+ "TNG >= 1.6.0 not found. "
+ "You can set GMX_EXTERNAL_TNG=OFF to compile TNG.")
+ endif()
+ include_directories(${TNG_IO_INCLUDE_DIRS})
+ endif()
+ if(NOT GMX_EXTERNAL_TNG)
+ # TNG wants zlib if it is available
+ find_package(ZLIB QUIET)
+ include(gmxTestZLib)
+ gmx_test_zlib(HAVE_ZLIB)
+
+ include(${CMAKE_SOURCE_DIR}/src/external/tng_io/BuildTNG.cmake)
+ tng_get_source_list(TNG_SOURCES TNG_IO_DEFINITIONS)
+ list(APPEND LIBGROMACS_SOURCES ${TNG_SOURCES})
+ tng_set_source_properties(WITH_ZLIB ${HAVE_ZLIB})
+
+ if (HAVE_ZLIB)
+ list(APPEND GMX_EXTRA_LIBRARIES ${ZLIB_LIBRARIES})
+ endif()
+ endif()
+else()
+ # We still need to get tng/tng_io_fwd.h from somewhere!
+ include_directories(${CMAKE_SOURCE_DIR}/src/external/tng_io/include)
+endif()
+
add_subdirectory(gmxlib)
add_subdirectory(mdlib)
add_subdirectory(gmxpreprocess)
${EXTRAE_LIBRARIES}
${GMX_GPU_LIBRARIES}
${GMX_EXTRA_LIBRARIES}
- ${GMX_TNG_LIBRARIES}
+ ${TNG_IO_LIBRARIES}
${FFT_LIBRARIES} ${LINEAR_ALGEBRA_LIBRARIES}
${XML_LIBRARIES}
${THREAD_LIB} ${GMX_SHARED_LINKER_FLAGS})
)
gmx_install_headers(fileio ${FILEIO_PUBLIC_HEADERS})
-# These files include tng_io.h from the TNG library. That header needs to know
-# whether inttypes.h exists or not.
-include(CheckIncludeFiles)
-check_include_file(inttypes.h HAVE_INTTYPES_H)
-if(HAVE_INTTYPES_H)
- set_property(SOURCE tngio.cpp APPEND PROPERTY COMPILE_DEFINITIONS USE_STD_INTTYPES_H)
- set_property(SOURCE tngio_for_tools.cpp APPEND PROPERTY COMPILE_DEFINITIONS USE_STD_INTTYPES_H)
+if (GMX_USE_TNG AND TNG_IO_DEFINITIONS)
+ set_property(SOURCE tngio.cpp
+ APPEND PROPERTY COMPILE_DEFINITIONS ${TNG_IO_DEFINITIONS})
+ set_property(SOURCE tngio_for_tools.cpp
+ APPEND PROPERTY COMPILE_DEFINITIONS ${TNG_IO_DEFINITIONS})
endif()
if (BUILD_TESTING)
if (!ret)
{
- md5_init(&state);
- md5_append(&state, buf, read_len);
- md5_finish(&state, digest);
+ gmx_md5_init(&state);
+ gmx_md5_append(&state, buf, read_len);
+ gmx_md5_finish(&state, digest);
ret = read_len;
}
sfree(buf);
* To help us fund GROMACS development, we humbly ask that you cite
* the research papers on the package. Check out http://www.gromacs.org.
*/
+/* This software has been altered by GROMACS for its use, including
+ * the use of GMX_INTEGER_BIG_ENDIAN, and the renaming of the
+ * functions md5_init, md5_append and md5_finish to have a gmx_ prefix
+ * (to avoid name clashes). */
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
}
void
-md5_init(md5_state_t *pms)
+gmx_md5_init(md5_state_t *pms)
{
pms->count[0] = pms->count[1] = 0;
pms->abcd[0] = 0x67452301;
}
void
-md5_append(md5_state_t *pms, const md5_byte_t *data, int nbytes)
+gmx_md5_append(md5_state_t *pms, const md5_byte_t *data, int nbytes)
{
const md5_byte_t *p = data;
int left = nbytes;
}
void
-md5_finish(md5_state_t *pms, md5_byte_t digest[16])
+gmx_md5_finish(md5_state_t *pms, md5_byte_t digest[16])
{
static const md5_byte_t pad[64] = {
0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
data[i] = (md5_byte_t)(pms->count[i >> 2] >> ((i & 3) << 3));
}
/* Pad to 56 bytes mod 64. */
- md5_append(pms, pad, ((55 - (pms->count[0] >> 3)) & 63) + 1);
+ gmx_md5_append(pms, pad, ((55 - (pms->count[0] >> 3)) & 63) + 1);
/* Append the length. */
- md5_append(pms, data, 8);
+ gmx_md5_append(pms, data, 8);
for (i = 0; i < 16; ++i)
{
digest[i] = (md5_byte_t)(pms->abcd[i >> 2] >> ((i & 3) << 3));
* To help us fund GROMACS development, we humbly ask that you cite
* the research papers on the package. Check out http://www.gromacs.org.
*/
+/* This software has been altered by GROMACS for its use, including
+ * the renaming of the functions md5_init, md5_append and md5_finish
+ * to have a gmx_ prefix, and the #include guard md5_INCLUDED to have
+ * a GMX_ prefix (both to avoid name clashes). */
/*
Copyright (C) 1999, 2000, 2002 Aladdin Enterprises. All rights reserved.
1999-05-03 lpd Original version.
*/
-#ifndef md5_INCLUDED
-# define md5_INCLUDED
+#ifndef GMX_md5_INCLUDED
+# define GMX_md5_INCLUDED
/*
* This package supports both compile-time and run-time determination of CPU
#endif
/* Initialize the algorithm. */
-void md5_init(md5_state_t *pms);
+void gmx_md5_init(md5_state_t *pms);
/* Append a string to the message. */
-void md5_append(md5_state_t *pms, const md5_byte_t *data, int nbytes);
+void gmx_md5_append(md5_state_t *pms, const md5_byte_t *data, int nbytes);
/* Finish the message and return the digest. */
-void md5_finish(md5_state_t *pms, md5_byte_t digest[16]);
+void gmx_md5_finish(md5_state_t *pms, md5_byte_t digest[16]);
#ifdef __cplusplus
} /* end extern "C" */
#endif
-#endif /* md5_INCLUDED */
+#endif
#endif
#ifdef GMX_USE_TNG
-#include "../../external/tng_io/include/tng_io.h"
+#include "tng/tng_io.h"
#endif
#include "gromacs/legacyheaders/copyrite.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2013, by the GROMACS development team, led by
+ * Copyright (c) 2013,2014, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#define GMX_FILEIO_TNGIO_H
#include "gromacs/legacyheaders/typedefs.h"
-#include "../../external/tng_io/include/tng_io_fwd.h"
+#include "tng/tng_io_fwd.h"
#ifdef __cplusplus
extern "C" {
#include "trx.h"
#ifdef GMX_USE_TNG
-#include "../../external/tng_io/include/tng_io.h"
+#include "tng/tng_io.h"
#endif
#include "gromacs/legacyheaders/types/atoms.h"
GMX_UNUSED_VALUE(input);
GMX_UNUSED_VALUE(output);
GMX_UNUSED_VALUE(nAtoms);
+ GMX_UNUSED_VALUE(mtop);
+ GMX_UNUSED_VALUE(index);
+ GMX_UNUSED_VALUE(indexGroupName);
#endif
}
#else
GMX_UNUSED_VALUE(output);
GMX_UNUSED_VALUE(frame);
+ GMX_UNUSED_VALUE(natoms);
#endif
}
void *values = NULL;
double frameTime = -1.0;
int size, blockDependency;
- float prec;
+ double prec;
const int defaultNumIds = 5;
static gmx_int64_t fallbackRequestedIds[defaultNumIds] =
{
GMX_UNUSED_VALUE(input);
GMX_UNUSED_VALUE(fr);
GMX_UNUSED_VALUE(requestedIds);
+ GMX_UNUSED_VALUE(numRequestedIds);
return FALSE;
#endif
}
gmx_int64_t codecId;
int blockDependency;
void *data = 0;
- float localPrec;
+ double localPrec;
stat = tng_data_block_name_get(input, blockId, name, maxLen);
if (stat != TNG_SUCCESS)
#define GMX_FILEIO_TNGIO_FOR_TOOLS_H
#include "gromacs/legacyheaders/typedefs.h"
-#include "../../external/tng_io/include/tng_io_fwd.h"
+#include "tng/tng_io_fwd.h"
#ifdef __cplusplus
extern "C" {
--enable=style -DLINUX
-I src/gromacs/legacyheaders -I src
-I src/external/thread_mpi/include
+ -I src/external/tng_io/include
-I ${CMAKE_BINARY_DIR}/src -I ${CMAKE_BINARY_DIR}/src/gromacs/utility
--quiet
${_outputopt})