[med-svn] [ismrmrd] 01/01: New upstream version 1.3.3

Ghislain Vaillant ghisvail-guest at moszumanska.debian.org
Wed Nov 16 12:21:17 UTC 2016


This is an automated email from the git hooks/post-receive script.

ghisvail-guest pushed a commit to branch upstream
in repository ismrmrd.

commit 8a30687823f39bba838130070852e3b4458332b6
Author: Ghislain Antony Vaillant <ghisvail at gmail.com>
Date:   Thu Nov 10 17:08:30 2016 +0000

    New upstream version 1.3.3
---
 .travis.yml                                        |   1 +
 CMakeLists.txt                                     | 129 ++++++++++----
 README.md                                          |  23 +++
 cmake/FindFFTW3.cmake                              |  18 +-
 cmake/FindIsmrmrd.cmake                            |  25 ---
 cmake/ISMRMRDConfig.cmake.in                       |  29 ++++
 cmake/ismrmrd_cpack.cmake                          |   6 +-
 doc/CMakeLists.txt                                 |  21 +--
 examples/c/CMakeLists.txt                          |   6 +-
 examples/matlab/test_create_undersampled_dataset.m | 192 +++++++++++++++++++++
 include/ismrmrd/dataset.h                          |   3 +-
 include/ismrmrd/ismrmrd.h                          |   4 +
 libsrc/ismrmrd.c                                   |  35 ++--
 libsrc/xml.cpp                                     |   2 +-
 matlab/+ismrmrd/+xml/deserialize.m                 |   3 +-
 tests/CMakeLists.txt                               |   2 +-
 tests/test_flags.cpp                               |   6 +-
 utilities/CMakeLists.txt                           |  20 +--
 18 files changed, 410 insertions(+), 115 deletions(-)

diff --git a/.travis.yml b/.travis.yml
index c5219cc..c897037 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -12,6 +12,7 @@ install:
 before_script:
     - mkdir build
     - cd build
+    - cmake --version
     - cmake ..
 
 script: make && make check
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 456d4f4..665e106 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,4 +1,16 @@
 cmake_minimum_required(VERSION 2.8)
+foreach(p
+    CMP0025 # CMake 3.0 Compiler id for Apple Clang is now ``AppleClang``.
+    CMP0042 # CMake 3.0 ``MACOSX_RPATH`` is enabled by default.
+    CMP0046 # CMake 3.0 Error on non-existent dependency in add_dependencies.
+    CMP0054 # CMake 3.1 Only interpret ``if()`` arguments as variables or keywords when unquoted.
+    CMP0056 # CMake 3.2 Honor link flags in ``try_compile()`` source-file signature.
+    CMP0058 # CMake 3.3 Ninja requires custom command byproducts to be explicit.
+    )
+  if(POLICY ${p})
+    cmake_policy(SET ${p} NEW)
+  endif()
+endforeach()
 project(ISMRMRD)
 
 # set project specific cmake module path
@@ -13,15 +25,15 @@ list(APPEND CMAKE_MODULE_PATH ${ISMRMRD_CMAKE_DIR})
 
 # whether to install dependencies
 if (WIN32)
-    OPTION(ISMRMRD_INSTALL_DEPENDENCIES "Install ismrmrd dependencies in windows" Off)
-endif (WIN32)
+    option(ISMRMRD_INSTALL_DEPENDENCIES "Install ismrmrd dependencies in windows" Off)
+endif ()
 
 # set the build type to Release if not specified
-IF(NOT CMAKE_BUILD_TYPE)
-  SET(CMAKE_BUILD_TYPE Release CACHE STRING
+if(NOT CMAKE_BUILD_TYPE)
+  set(CMAKE_BUILD_TYPE Release CACHE STRING
       "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel."
       FORCE)
-ENDIF(NOT CMAKE_BUILD_TYPE)
+endif()
 
 # compiler flags
 if (WIN32)
@@ -35,10 +47,10 @@ if (WIN32)
     set(CMAKE_STATIC_LINKER_FLAGS_DEBUG "/debug /INCREMENTAL:NO")
     set(CMAKE_MODULE_LINKER_FLAGS_DEBUG "/debug /INCREMENTAL:NO")
     add_definitions(-D__func__=__FUNCTION__)
-else (WIN32)
+else ()
     set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99 -Wall")
     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
-endif (WIN32)
+endif ()
 
 #  ---   VERSIONING  (begin) ----
 #The ISMRMRD convention is to use version numbers with the format:
@@ -46,21 +58,25 @@ endif (WIN32)
 #
 #The major number increments when the binary compatibility of
 #the fixed memory layout struts (e.g. AcquisitionHeader) is broken.
-#The minor number changes when there are changes to the XML schema for 
+#The minor number changes when there are changes to the XML schema for
 #the flexible header. The micro number changes when there are small changes
 #in the utility libraries, that don't affect the data format itself.
+# For more information see http://semver.org/
 set(ISMRMRD_VERSION_MAJOR 1)
 set(ISMRMRD_VERSION_MINOR 3)
-set(ISMRMRD_VERSION_PATCH 2)
+set(ISMRMRD_VERSION_PATCH 3)
+set(ISMRMRD_VERSION_STRING ${ISMRMRD_VERSION_MAJOR}.${ISMRMRD_VERSION_MINOR}.${ISMRMRD_VERSION_PATCH})
+set(ISMRMRD_SOVERSION ${ISMRMRD_VERSION_MAJOR}.${ISMRMRD_VERSION_MINOR})
 
 set(ISMRMRD_XML_SCHEMA_SHA1 "9b899c6ad806bc2388c70461d6e5affe5cc6d750")
 
 #Remove line breaks and white space that does not change the meaning of the schema
-file(STRINGS ${CMAKE_SOURCE_DIR}/schema/ismrmrd.xsd SCHEMA_STRINGS) #Read all strings from file 
+file(STRINGS ${CMAKE_SOURCE_DIR}/schema/ismrmrd.xsd SCHEMA_STRINGS) #Read all strings from file
 string(REPLACE ";" "" SCHEMA_NO_BREAKS  ${SCHEMA_STRINGS}) #Concatenate the list of strings
 string(REGEX REPLACE ">[ \t]+<" "><" SCHEMA_NO_SPACE ${SCHEMA_NO_BREAKS}) #Remove spaces and tabs
 string(STRIP ${SCHEMA_NO_SPACE} SCHEMA_NO_SPACE) #Strip any leading/trailing whitespace
-file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/ismrmrd_no_white_space.xsd ${SCHEMA_NO_SPACE}) #Write to file
+set(ISMRMRD_SCHEMA_DIR ${CMAKE_CURRENT_BINARY_DIR})
+file(WRITE ${ISMRMRD_SCHEMA_DIR}/ismrmrd_no_white_space.xsd ${SCHEMA_NO_SPACE}) #Write to file
 
 #Now hash the cleaned up file
 file(SHA1 ${CMAKE_CURRENT_BINARY_DIR}/ismrmrd_no_white_space.xsd ISMRMRD_CURRENT_XML_SCHEMA_SHA1)
@@ -88,8 +104,6 @@ if (NOT (${ISMRMRD_XML_SCHEMA_SHA1} STREQUAL ${ISMRMRD_CURRENT_XML_SCHEMA_SHA1})
   message(FATAL_ERROR "     FATAL XML VERSION ERROR")
 endif()
 
-set(ISMRMRD_VERSION_STRING ${ISMRMRD_VERSION_MAJOR}.${ISMRMRD_VERSION_MINOR}.${ISMRMRD_VERSION_PATCH})
-set(ISMRMRD_SOVERSION ${ISMRMRD_VERSION_MAJOR}.${ISMRMRD_VERSION_MINOR})
 
 # Find HDF5 for dataset support
 find_package(HDF5 1.8 COMPONENTS C)
@@ -99,10 +113,10 @@ if (HDF5_FOUND)
     set (ISMRMRD_DATASET_SOURCES libsrc/dataset.c libsrc/dataset.cpp)
     set (ISMRMRD_DATASET_INCLUDE_DIR ${HDF5_C_INCLUDE_DIR})
     set (ISMRMRD_DATASET_LIBRARIES ${HDF5_LIBRARIES})
-else (HDF5_FOUND)
+else ()
     set (ISMRMRD_DATASET_SUPPORT false)
     message (WARNING "HDF5 not found. Dataset and file support unavailable!")
-endif (HDF5_FOUND)
+endif ()
 
 # Generate the version.h header file
 find_package(Git)
@@ -114,15 +128,16 @@ if (GIT_FOUND)
     if (${ISMRMRD_GIT_SHA1_LEN} LESS 40)
         message(WARNING "Could not determine SHA-1 hash: ${ISMRMRD_GIT_STDERR}")
         set(ISMRMRD_GIT_SHA1 "NA")
-    endif (${ISMRMRD_GIT_SHA1_LEN} LESS 40)
+    endif ()
 else()
   set(ISMRMRD_GIT_SHA1 "NA")
 endif()
 configure_file(include/version.in ${CMAKE_BINARY_DIR}/include/ismrmrd/version.h)
-install(FILES ${CMAKE_BINARY_DIR}/include/ismrmrd/version.h DESTINATION include/ismrmrd)
+install(FILES ${CMAKE_BINARY_DIR}/include/ismrmrd/version.h DESTINATION include/ismrmrd COMPONENT Devel)
 # note: for the utilities in this project that need ismrmrd/version.h
 # remember to add ${CMAKE_BINARY_DIR}/include to the include path
 
+
 #  ---   VERSIONING  (end) ----
 
 #  ---   Main Library  (begin) ----
@@ -130,16 +145,16 @@ install(FILES ${CMAKE_BINARY_DIR}/include/ismrmrd/version.h DESTINATION include/
 if (HDF5_FOUND AND WIN32 AND ISMRMRD_INSTALL_DEPENDENCIES)
     if(DEFINED ENV{HDF5_ROOT})
         set(HDF5_BIN_DIR $ENV{HDF5_ROOT}/bin)
-    else (DEFINED ENV{HDF5_ROOT})
+    else ()
         set(HDF5_BIN_DIR ${HDF5_C_INCLUDE_DIR}/../bin)
-    endif (DEFINED ENV{HDF5_ROOT})
+    endif ()
     message("Install hdf5 libraries from ${HDF5_BIN_DIR} ")
     install( DIRECTORY ${HDF5_BIN_DIR} DESTINATION bin/.. FILES_MATCHING PATTERN "*.dll" )
-endif (HDF5_FOUND AND WIN32 AND ISMRMRD_INSTALL_DEPENDENCIES)
+endif ()
 
 # include directories for main library
 set(ISMRMRD_TARGET_INCLUDE_DIRS
-  include
+  ${CMAKE_CURRENT_LIST_DIR}/include
   ${CMAKE_BINARY_DIR}/include
   ${ISMRMRD_DATASET_INCLUDE_DIR}
 )
@@ -161,16 +176,16 @@ if(USE_SYSTEM_PUGIXML)
     message("Found system pugixml: ${PugiXML_INCLUDE_DIR} ${PugiXML_LIBRARY}")
     list(APPEND ISMRMRD_TARGET_INCLUDE_DIRS ${PugiXML_INCLUDE_DIR})
     list(APPEND ISMRMRD_TARGET_LINK_LIBS ${PugiXML_LIBRARY})
-  else(PugiXML_FOUND)
+  else()
     message(FATAL_ERROR "Pugixml library not found on the system, try without "
     "setting USE_SYSTEM_PUGIXML to use the version provided in the source "
     "tree.")
-  endif(PugiXML_FOUND)
+  endif()
   list(APPEND ISMRMRD_TARGET_INCLUDE_DIRS ${PugiXML_INCLUDE_DIR})
   list(APPEND ISMRMRD_TARGET_LINK_LIBS ${PugiXML_LIBRARY})
-else(USE_SYSTEM_PUGIXML)
+else()
   list(APPEND ISMRMRD_TARGET_SOURCES libsrc/pugixml.cpp)
-endif(USE_SYSTEM_PUGIXML)
+endif()
 
 # main library
 include_directories(${ISMRMRD_TARGET_INCLUDE_DIRS})
@@ -180,18 +195,25 @@ set_target_properties(ismrmrd PROPERTIES
   SOVERSION ${ISMRMRD_SOVERSION}
 )
 target_link_libraries(ismrmrd ${ISMRMRD_TARGET_LINK_LIBS})
+list(APPEND ISMRMRD_LIBRARIES ismrmrd) # Add to list of libraries to be found
+list(APPEND ISMRMRD_LIBRARY_DIRS ${CMAKE_BINARY_DIR} ) # Add to list of directories to find libaries
 
 # install the main library
-install(TARGETS ismrmrd DESTINATION lib)
+install(TARGETS ismrmrd EXPORT ISMRMRDTargets
+   LIBRARY DESTINATION lib
+   ARCHIVE DESTINATION lib
+   RUNTIME DESTINATION bin
+   COMPONENT Devel
+)
 
 # install the headers
-install(DIRECTORY include/ismrmrd  DESTINATION include)
+install(DIRECTORY include/ismrmrd  DESTINATION include COMPONENT Devel)
 
 # install the schema file
-install(FILES schema/ismrmrd.xsd DESTINATION share/ismrmrd/schema)
+install(FILES schema/ismrmrd.xsd DESTINATION share/ismrmrd/schema COMPONENT Devel)
 
 # install the cmake modules
-install(FILES cmake/FindIsmrmrd.cmake cmake/FindFFTW3.cmake DESTINATION share/ismrmrd/cmake)
+install(FILES cmake/FindFFTW3.cmake DESTINATION share/ismrmrd/cmake COMPONENT Devel)
 
 #  ---   Main Library  (end) ----
 
@@ -201,15 +223,56 @@ add_subdirectory(doc)
 add_subdirectory(utilities)
 if (HDF5_FOUND)
     add_subdirectory(examples/c)
-endif (HDF5_FOUND)
+endif ()
 
 # TODO: make this work on Windows
 if (NOT WIN32)
     add_subdirectory(tests)
-endif (NOT WIN32)
+endif ()
 
 # install the matlab api
-install(DIRECTORY matlab DESTINATION share/ismrmrd)
+install(DIRECTORY matlab DESTINATION share/ismrmrd )
+
+#--- Create cmake package for downstream projects
+#
+##- include(CMakePackageConfigHelpers)
+##- write_basic_package_version_file(
+##-   "${CMAKE_CURRENT_BINARY_DIR}/ISMRMRDConfigVersion.cmake"
+##-   VERSION ${ISMRMRD_VERSION_STRING}
+##-   COMPATIBILITY AnyNewerVersion
+##- )
+
+##- export(EXPORT ISMRMRDTargets
+##-  FILE "${CMAKE_CURRENT_BINARY_DIR}/ISMRMRDTargets.cmake"
+##-  NAMESPACE ISMRMRD
+##-)
+
+set(CONFIG_ISMRMRD_SCHEMA_DIR   ${ISMRMRD_SCHEMA_DIR})
+set(CONFIG_ISMRMRD_TARGET_INCLUDE_DIRS ${ISMRMRD_TARGET_INCLUDE_DIRS})
+set(CONFIG_ISMRMRD_LIBRARY_DIRS ${ISMRMRD_LIBRARY_DIRS})
+configure_file(cmake/ISMRMRDConfig.cmake.in
+  "${CMAKE_CURRENT_BINARY_DIR}/ISMRMRDConfig.cmake"
+  @ONLY
+)
+
+set(CONFIG_ISMRMRD_SCHEMA_DIR   ${CMAKE_INSTALL_PREFIX}/share/ismrmrd/schema)
+set(CONFIG_ISMRMRD_TARGET_INCLUDE_DIRS ${CMAKE_INSTALL_PREFIX}/include)
+set(CONFIG_ISMRMRD_LIBRARY_DIRS ${CMAKE_INSTALL_PREFIX}/lib)
+configure_file(cmake/ISMRMRDConfig.cmake.in
+  "${CMAKE_CURRENT_BINARY_DIR}/InstallFiles/ISMRMRDConfig.cmake"
+  @ONLY
+)
+
+set(ConfigPackageLocation lib/cmake/ISMRMRD)
+install(
+  FILES
+    "${CMAKE_CURRENT_BINARY_DIR}/InstallFiles/ISMRMRDConfig.cmake"
+#--    "${CMAKE_CURRENT_BINARY_DIR}/ISMRMRDConfigVersion.cmake"
+  DESTINATION
+    ${ConfigPackageLocation}
+  COMPONENT
+    Devel
+)
 
 # Create package
 string(TOLOWER ${PROJECT_NAME} PROJECT_NAME_LOWER)
@@ -219,4 +282,4 @@ if(CPACK_GENERATOR)
   configure_file("${ISMRMRD_CMAKE_DIR}/cpack_options.cmake.in" ${ISMRMRD_CPACK_CFG_FILE} @ONLY)
   set(CPACK_PROJECT_CONFIG_FILE ${ISMRMRD_CPACK_CFG_FILE})
   include(CPack)
-endif(CPACK_GENERATOR)
+endif()
diff --git a/README.md b/README.md
index 2e1a516..cfa6fbc 100644
--- a/README.md
+++ b/README.md
@@ -33,3 +33,26 @@ Other Resources
 ---------------
 
 - [Python implementation](https://www.github.com/ismrmrd/ismrmrd-python)
+
+External Use of ISMRMRD in other source packages
+------------------------------------------------
+Build and install ISMRMRD by setting 
+
+```
+   cmake -DCMAKE_INSTALL_PREFIX=<your install directory>
+```
+
+To use ISMRMRD for your externally developed projects, add the following to your CMakeLists.txt file:
+
+```
+  find_package( ISMRMRD REQUIRED )
+  link_directories( ${ISMRMRD_LIBRARY_DIRS} )
+  include_directories( ${ISMRMRD_INCLUDE_DIRS} )
+  target_link_libraries( mytarget ${ISMRMRD_LIBRARIES} )
+```
+
+then when configuring your package use set the following cmake variables (command line variant shown):
+
+```
+  cmake -DISMRMRD_DIR:PATH=<path to build/install tree of ISMRMRD> <path to my source tree>
+```
diff --git a/cmake/FindFFTW3.cmake b/cmake/FindFFTW3.cmake
index b2b9f3f..ab54c0c 100644
--- a/cmake/FindFFTW3.cmake
+++ b/cmake/FindFFTW3.cmake
@@ -52,20 +52,20 @@ foreach(_comp ${_components})
     list(APPEND _libraries fftw3l)
   elseif(_comp STREQUAL "threads")
     set(_use_threads ON)
-  else(_comp STREQUAL "single")
+  else()
     message(FATAL_ERROR "FindFFTW3: unknown component `${_comp}' specified. "
       "Valid components are `single', `double', `long-double', and `threads'.")
-  endif(_comp STREQUAL "single")
-endforeach(_comp ${_components})
+  endif()
+endforeach()
 
 # If using threads, we need to link against threaded libraries as well.
 if(_use_threads)
   set(_thread_libs)
   foreach(_lib ${_libraries})
     list(APPEND _thread_libs ${_lib}_threads)
-  endforeach(_lib ${_libraries})
+  endforeach()
   set(_libraries ${_thread_libs} ${_libraries})
-endif(_use_threads)
+endif()
 
 # Keep a list of variable names that we need to pass on to
 # find_package_handle_standard_args().
@@ -83,11 +83,11 @@ if (WIN32)
       mark_as_advanced(${_LIB}_LIBRARY)
       list(APPEND FFTW3_LIBRARIES ${${_LIB}_LIBRARY})
       list(APPEND _check_list ${_LIB}_LIBRARY)
-    endforeach(_lib ${_libraries})
+    endforeach()
 
     message("FFTW3 WINDOWS libraries: " ${FFTW3_LIBRARIES})
 
-else (WIN32)
+else ()
     foreach(_lib ${_libraries})
 
       string(TOUPPER ${_lib} _LIB)
@@ -97,10 +97,10 @@ else (WIN32)
       mark_as_advanced(${_LIB}_LIBRARY)
       list(APPEND FFTW3_LIBRARIES ${${_LIB}_LIBRARY})
       list(APPEND _check_list ${_LIB}_LIBRARY)
-    endforeach(_lib ${_libraries})
+    endforeach()
 
     message("FFTW3 UNIX libraries: " ${FFTW3_LIBRARIES})
-endif (WIN32)
+endif ()
 
 # Search for the header file.
 find_path(FFTW3_INCLUDE_DIR fftw3.h 
diff --git a/cmake/FindIsmrmrd.cmake b/cmake/FindIsmrmrd.cmake
deleted file mode 100644
index d1f90a8..0000000
--- a/cmake/FindIsmrmrd.cmake
+++ /dev/null
@@ -1,25 +0,0 @@
-# - Find ISMRMRRD
-#   ISMRMRD_FOUND            - true if an ISMRMRD installation is found.
-#   ISMRMRD_INCLUDE_DIR      - where to find ismrmrd.h, etc.
-#   ISMRMRD_LIBRARIES        - libismrmrd.so and libismrmrd_xml.so
-#   ISMRMRD_SCHEMA_DIR       - where to find ismrmrd.xsd       
-
-FIND_PATH( ISMRMRD_INCLUDE_DIR ismrmrd/ismrmrd.h 
-HINTS $ENV{ISMRMRD_HOME} PATHS /usr/local /usr PATH_SUFFIXES include)
-
-FIND_PATH( ISMRMRD_SCHEMA_DIR ismrmrd.xsd 
-HINTS $ENV{ISMRMRD_HOME} PATHS /usr/local /usr PATH_SUFFIXES share/ismrmrd/schema)
-
-FIND_LIBRARY( ISMRMRD_LIBRARY NAMES ismrmrd
-HINTS $ENV{ISMRMRD_HOME} /usr/local /usr PATH_SUFFIXES lib)
-
-SET(ISMRMRD_LIBRARIES ${ISMRMRD_LIBRARY})
-
-INCLUDE( "FindPackageHandleStandardArgs" )
-FIND_PACKAGE_HANDLE_STANDARD_ARGS( "Ismrmrd" DEFAULT_MSG ISMRMRD_INCLUDE_DIR ISMRMRD_LIBRARIES ISMRMRD_SCHEMA_DIR)
-
-MARK_AS_ADVANCED( ISMRMRD_INCLUDE_DIR ISMRMRD_LIBRARIES ISMRMRD_SCHEMA_DIR)
-
-#if(ISMRMRD_FOUND)
-#  message("ISMRMRD found ${ISMRMRD_LIBRARIES}")
-#endif(ISMRMRD_FOUND)
diff --git a/cmake/ISMRMRDConfig.cmake.in b/cmake/ISMRMRDConfig.cmake.in
new file mode 100644
index 0000000..f23a00e
--- /dev/null
+++ b/cmake/ISMRMRDConfig.cmake.in
@@ -0,0 +1,29 @@
+#-----------------------------------------------------------------------------
+#
+# ISMRMRDConfig.cmake - ISMRMRD CMake configuration file for external projects.
+#
+# This file is configured by ISMRMRD and used by the UseISMRMRD.cmake module
+# to load ISMRMRD's settings for an external project.
+ at ISMRMRD_CONFIG_CODE@
+
+##- include(${CMAKE_CURRENT_LIST_DIR}/ISMRMRDConfigVersion.cmake)
+
+# The ISMRMRD version number
+set(ISMRMRD_VERSION_MAJOR "@ISMRMRD_VERSION_MAJOR@")
+set(ISMRMRD_VERSION_MINOR "@ISMRMRD_VERSION_MINOR@")
+set(ISMRMRD_VERSION_PATCH "@ISMRMRD_VERSION_PATCH@")
+
+#   ISMRMRD_SCHEMA_DIR   - where to find ismrmrd.xsd 
+set(ISMRMRD_SCHEMA_DIR   @CONFIG_ISMRMRD_SCHEMA_DIR@)
+#   ISMRMRD_INCLUDE_DIR  - where to find ismrmrd.h, etc.
+set(ISMRMRD_INCLUDE_DIRS @CONFIG_ISMRMRD_TARGET_INCLUDE_DIRS@)
+#   ISMRMRD_LIBRARY_DIRS - where to search for libraries
+set(ISMRMRD_LIBRARY_DIRS @CONFIG_ISMRMRD_LIBRARY_DIRS@)
+#   ISMRMRD_LIBRARIES    - i.e. ismrmrd
+set(ISMRMRD_LIBRARIES    @ISMRMRD_LIBRARIES@)
+
+## For backwards compatibility use existing variable name
+## Include directories can be lists, and should be plural
+## to conform with naming schemes in many other cmake packages
+set(ISMRMRD_INCLUDE_DIR  @CONFIG_ISMRMRD_TARGET_INCLUDE_DIRS@)
+set(ISMRMRD_LIB_DIR @CONFIG_ISMRMRD_LIBRARY_DIRS@)
diff --git a/cmake/ismrmrd_cpack.cmake b/cmake/ismrmrd_cpack.cmake
index 94ad624..96d6bf3 100644
--- a/cmake/ismrmrd_cpack.cmake
+++ b/cmake/ismrmrd_cpack.cmake
@@ -7,8 +7,8 @@ if(UNIX)
   find_program(DPKG_PROGRAM dpkg)
   if(EXISTS ${DPKG_PROGRAM})
     list(APPEND CPACK_GENERATOR "DEB")
-  endif(EXISTS ${DPKG_PROGRAM})
-endif(UNIX)
+  endif()
+endif()
 
 # Enable/Disable automatic search for dependencies:
 set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
@@ -30,7 +30,7 @@ message("CPACK_PACKAGING_INSTALL_PREFIX: " ${CPACK_PACKAGING_INSTALL_PREFIX})
 if(WIN32)
   # NSLS
   list(APPEND CPACK_GENERATOR "NSIS")    
-endif(WIN32)
+endif()
 
 list(APPEND CPACK_SOURCE_GENERATOR "TGZ")
 list(APPEND CPACK_SOURCE_GENERATOR "ZIP")
diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt
index f22cd4e..9771a0c 100644
--- a/doc/CMakeLists.txt
+++ b/doc/CMakeLists.txt
@@ -1,3 +1,4 @@
+add_custom_target(doc)
 find_package(Doxygen)
 if(DOXYGEN_FOUND)
     set(API_DOC_DIR ${CMAKE_CURRENT_BINARY_DIR}/html/api)
@@ -9,9 +10,10 @@ if(DOXYGEN_FOUND)
         COMMAND ${CMAKE_COMMAND} -E make_directory ${API_DOC_DIR}
         COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYFILE}
         COMMENT "Generating API documentation using Doxygen" VERBATIM)
-else(DOXYGEN_FOUND)
-    MESSAGE(STATUS "Doxygen not found. Not able to build API documentation")
-endif(DOXYGEN_FOUND)
+    add_dependencies(doc apidoc)
+else()
+    message(STATUS "Doxygen not found. Not able to build API documentation")
+endif()
 
 find_program(SPHINXBUILD sphinx-build)
 if(SPHINXBUILD)
@@ -22,17 +24,16 @@ if(SPHINXBUILD)
             COMMAND ${SPHINX_MAKEBAT} html
             COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/html/.nojekyll
             COMMENT "Generating HTML docs using Sphinx" VERBATIM)
-    else(WIN32)
+    else()
         set(SPHINX_MAKEFILE ${CMAKE_CURRENT_BINARY_DIR}/Makefile.sphinx)
         configure_file(Makefile.sphinx.in ${SPHINX_MAKEFILE} @ONLY)
         add_custom_target(htmldoc
             COMMAND make -f ${SPHINX_MAKEFILE} html
             COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/html/.nojekyll
             COMMENT "Generating HTML docs using Sphinx" VERBATIM)
-    endif(WIN32)
-else(SPHINXBUILD)
-    MESSAGE(STATUS "sphinx-build not found. Not able to build HTML project documentation")
-endif(SPHINXBUILD)
+    endif()
+    add_dependencies(doc htmldoc)
+else()
+    message(STATUS "sphinx-build not found. Not able to build HTML project documentation")
+endif()
 
-add_custom_target(doc)
-add_dependencies(doc apidoc htmldoc)
diff --git a/examples/c/CMakeLists.txt b/examples/c/CMakeLists.txt
index 8988f17..778ab5a 100644
--- a/examples/c/CMakeLists.txt
+++ b/examples/c/CMakeLists.txt
@@ -5,17 +5,17 @@ project(ISMRMRD-C-EXAMPLE)
 if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
     if(NOT DEFINED ENV{ISMRMRD_HOME})
         message(FATAL_ERROR "ISMRMRD_HOME environment variable must be defined")
-    endif(NOT DEFINED ENV{ISMRMRD_HOME})
+    endif()
 
     list(APPEND CMAKE_MODULE_PATH "$ENV{ISMRMRD_HOME}/share/ismrmrd/cmake")
 
     find_package(Ismrmrd REQUIRED)
 
 # otherwise, building it as part of ISMRMRD itself
-else(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
+else()
     set(ISMRMRD_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/include ${CMAKE_BINARY_DIR}/include")
     set(ISMRMRD_LIBRARIES ismrmrd)
-endif(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
+endif()
 
 include_directories(${ISMRMRD_INCLUDE_DIR})
 add_executable(ismrmrd_c_example main.c)
diff --git a/examples/matlab/test_create_undersampled_dataset.m b/examples/matlab/test_create_undersampled_dataset.m
new file mode 100644
index 0000000..e55a60f
--- /dev/null
+++ b/examples/matlab/test_create_undersampled_dataset.m
@@ -0,0 +1,192 @@
+%% Generating a simple ISMRMRD data set to simulate GRAPPA undersampling
+% Based on test_create_dataset
+%
+% This is an example of how to construct a datset from synthetic data
+% simulating an under sampled acquisition on a cartesian grid with a 
+% central fully sampled (ACS) region.
+% Data from 4 coils from a single slice object with 6 repetitions.
+%
+% Reconstruction using the gadgetron configuration file 
+% Generic_Cartesian_Grappa.xml may require changes to cope with the small 
+% number of coils:
+%  <property><name>upstream_coil_compression_thres</name><value>0.00001</value></property>
+%  <property><name>downstream_coil_compression_thres</name><value>0.0001</value></property>
+%  <property><name>use_constant_scalingFactor</name><value>false</value></property>
+
+% Output file Name
+def_filename = 'testusdatamri.h5';
+FilterSpec = '*.h5' ;
+DialogTitle = 'Output h5 filename' ;
+
+[FileName,PathName,FilterIndex] = uiputfile(FilterSpec,DialogTitle,def_filename);
+filename = fullfile(PathName,FileName) ;
+
+dset = ismrmrd.Dataset(filename);
+
+% Synthesize the object
+% nY here corresponds to fully sampled data (256), nYsamp is number of actually
+% sampled lines (128 + additional central ACS lines)
+nX = 256;
+nY = 256;
+rho = zeros(nX,nY);
+indxstart = floor(nX/4)+1;
+indxend   = floor(3*nX/4);
+indystart = floor(nY/4)+1;
+indyend   = floor(3*nY/4);
+% put an MR image in the centre
+load mri % loads D - an example 128 128 1 27 dataset
+rho(indxstart:indxend,indystart:indyend) = squeeze(double(D(:,:,1,12))) ;
+
+
+% Synthesize some coil sensitivities
+[X,Y] = ndgrid((0:nX-1)/nX/2.0 - 0.5, (0:nY-1)/nY/2.0 - 0.5);
+C = zeros(nX,nY,4);
+C(:,:,1) = exp(-((X-.5).^2 + (Y).^2)    + 1i*(X-.5));
+C(:,:,2) = exp(-((X+.5).^2 + (Y).^2)    - 1i*(X+.5));
+C(:,:,3) = exp(-((X).^2    + (Y-.5).^2) + 1i*(Y-.5));
+C(:,:,4) = exp(-((X).^2    + (Y+.5).^2) - 1i*(Y+.5));
+nCoils = size(C,3);
+if exist('eshow','file')
+    eshow(C)  % displays coil sensitivities
+end
+
+% set ACS lines for GRAPPA simulation (fully sampled central k-space
+% region)
+ACShw = 14 ; % GRAPPA ACS half width i.e. here 28 lines are ACS
+Ysamp_u = [1:2:nY] ; % undersampling by every alternate line
+Ysamp_ACS = [nY/2-ACShw+1 : nY/2+ACShw] ; % GRAPPA autocalibration lines
+Ysamp = union(Ysamp_u, Ysamp_ACS) ; % actually sampled lines
+nYsamp = length(Ysamp) ; % number of actually sampled
+
+% Ysamp indexes the actually sampled lines to the encoded k-space line number. 
+% For example, if there were just regular factor 2 undersampling 
+% (with no ACS lines), Ysamp would have length 128 and be [1 3 5 ... 255].
+% With ACS lines, the elements of Ysamp are separated by 2 near the k-space
+% edges, and by 1 in the central ACS region.
+
+
+% Synthesize the k-space data
+nReps = 6  % increased from 4 to 6 to avoid confusion with number of coils.
+noiselevel = 0.05;
+K = zeros(nX, nYsamp, nCoils, nReps);
+for rep = 1:nReps
+    for coil = 1:nCoils
+        noise = noiselevel * (randn(nX,nY)+1j*randn(nX,nY));
+        ksp = fftshift(fft2(fftshift( C(:,:,coil).*rho + noise))); 
+        K(:,:,coil,rep) = ksp(:,Ysamp);
+    end
+end
+
+% It is very slow to append one acquisition at a time, so we're going
+% to append a block of acquisitions at a time.
+% In this case, we'll do it one repetition at a time to show off this
+% feature.  Each block has nYsamp aquisitions
+acqblock = ismrmrd.Acquisition(nYsamp);
+
+% Set the header elements that don't change
+acqblock.head.version(:) = 1;
+acqblock.head.number_of_samples(:) = nX;
+acqblock.head.center_sample(:) = floor(nX/2);
+acqblock.head.active_channels(:) = nCoils;
+acqblock.head.read_dir  = repmat([1 0 0]',[1 nYsamp]);
+acqblock.head.phase_dir = repmat([0 1 0]',[1 nYsamp]);
+acqblock.head.slice_dir = repmat([0 0 1]',[1 nYsamp]);
+
+% Loop over the acquisitions, set the header, set the data and append
+for rep = 1:nReps
+    for acqno = 1:nYsamp
+        
+        % Set the header elements that change from acquisition to the next
+        % c-style counting
+        acqblock.head.scan_counter(acqno) = (rep-1)*nYsamp + acqno-1;
+        % Note next entry is k-space encoded line number (not acqno which
+        % is just the sequential acquisition number)
+        acqblock.head.idx.kspace_encode_step_1(acqno) = Ysamp(acqno)-1; 
+        acqblock.head.idx.repetition(acqno) = rep - 1;
+        
+        % Set the flags
+        acqblock.head.flagClearAll(acqno);
+        if acqno == 1
+            acqblock.head.flagSet('ACQ_FIRST_IN_ENCODE_STEP1', acqno);
+            acqblock.head.flagSet('ACQ_FIRST_IN_SLICE', acqno);
+            acqblock.head.flagSet('ACQ_FIRST_IN_REPETITION', acqno);
+        elseif acqno==size(K,2)
+            acqblock.head.flagSet('ACQ_LAST_IN_ENCODE_STEP1', acqno);
+            acqblock.head.flagSet('ACQ_LAST_IN_SLICE', acqno);
+            acqblock.head.flagSet('ACQ_LAST_IN_REPETITION', acqno);
+        end
+        
+        if ismember(Ysamp(acqno),Ysamp_ACS)
+            if ismember(Ysamp(acqno),Ysamp_u)
+                % both calibration and part of the undersampled pattern
+                acqblock.head.flagSet('ACQ_IS_PARALLEL_CALIBRATION_AND_IMAGING', acqno)
+            else
+                % in ACS block but not part of the regular undersampling
+                % pattern Ysamp_u
+                acqblock.head.flagSet('ACQ_IS_PARALLEL_CALIBRATION', acqno) ;
+            end
+        end
+        
+        % fill the data
+        acqblock.data{acqno} = squeeze(K(:,acqno,:,rep));
+    end
+
+    % Append the acquisition block
+    dset.appendAcquisition(acqblock);
+        
+end % rep loop
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%
+%% Fill the xml header %
+%%%%%%%%%%%%%%%%%%%%%%%%
+% We create a matlab struct and then serialize it to xml.
+% Look at the xml schema to see what the field names should be
+
+header = [];
+
+% Experimental Conditions (Required)
+header.experimentalConditions.H1resonanceFrequency_Hz = 128000000; % 3T
+
+% Acquisition System Information (Optional)
+header.acquisitionSystemInformation.systemVendor = 'ISMRMRD Labs';
+header.acquisitionSystemInformation.systemModel = 'Virtual Scanner';
+header.acquisitionSystemInformation.receiverChannels = nCoils;
+
+% The Encoding (Required)
+header.encoding.trajectory = 'cartesian';
+header.encoding.encodedSpace.fieldOfView_mm.x = 256;
+header.encoding.encodedSpace.fieldOfView_mm.y = 256;
+header.encoding.encodedSpace.fieldOfView_mm.z = 5;
+header.encoding.encodedSpace.matrixSize.x = size(K,1);
+header.encoding.encodedSpace.matrixSize.y = nY;
+header.encoding.encodedSpace.matrixSize.z = 1;
+% Recon Space
+% (in this case same as encoding space)
+header.encoding.reconSpace = header.encoding.encodedSpace;
+% Encoding Limits
+header.encoding.encodingLimits.kspace_encoding_step_0.minimum = 0;
+header.encoding.encodingLimits.kspace_encoding_step_0.maximum = size(K,1)-1;
+header.encoding.encodingLimits.kspace_encoding_step_0.center = floor(size(K,1)/2);
+header.encoding.encodingLimits.kspace_encoding_step_1.minimum = 0;
+header.encoding.encodingLimits.kspace_encoding_step_1.maximum = nY-1;
+header.encoding.encodingLimits.kspace_encoding_step_1.center = floor(nY/2);
+header.encoding.encodingLimits.repetition.minimum = 0;
+header.encoding.encodingLimits.repetition.maximum = nReps-1;
+header.encoding.encodingLimits.repetition.center = 0;
+
+header.encoding.parallelImaging.accelerationFactor.kspace_encoding_step_1 = 2 ;
+header.encoding.parallelImaging.accelerationFactor.kspace_encoding_step_2 = 1 ;
+header.encoding.parallelImaging.calibrationMode = 'embedded' ;
+
+% Commented code below appears not necessary - saw this parameter after converting
+% a scanner file using siemens_to_ismrmrd
+% header.userParameters.userParameterLong.name = 'EmbeddedRefLinesE1' ;
+% header.userParameters.userParameterLong.value = ACShw *2  ;
+
+%% Serialize and write to the data set
+xmlstring = ismrmrd.xml.serialize(header);
+dset.writexml(xmlstring);
+
+%% Write the dataset
+dset.close();
diff --git a/include/ismrmrd/dataset.h b/include/ismrmrd/dataset.h
index 899ae41..127a863 100644
--- a/include/ismrmrd/dataset.h
+++ b/include/ismrmrd/dataset.h
@@ -9,6 +9,7 @@
 #define ISMRMRD_DATASET_H
 
 #include "ismrmrd/ismrmrd.h"
+#include <hdf5.h>
 
 #ifdef __cplusplus
 #include <string>
@@ -28,7 +29,7 @@ extern "C" {
 typedef struct ISMRMRD_Dataset {
     char *filename;
     char *groupname;
-    int fileid;
+    hid_t fileid;
 } ISMRMRD_Dataset;
 
 /**
diff --git a/include/ismrmrd/ismrmrd.h b/include/ismrmrd/ismrmrd.h
index a4539b0..5c9d76e 100644
--- a/include/ismrmrd/ismrmrd.h
+++ b/include/ismrmrd/ismrmrd.h
@@ -162,6 +162,10 @@ enum ISMRMRD_AcquisitionFlags {
     ISMRMRD_ACQ_IS_RTFEEDBACK_DATA                  = 28,
     ISMRMRD_ACQ_IS_SURFACECOILCORRECTIONSCAN_DATA   = 29,
 
+    ISMRMRD_ACQ_COMPRESSION1                        = 53,
+    ISMRMRD_ACQ_COMPRESSION2                        = 54,
+    ISMRMRD_ACQ_COMPRESSION3                        = 55,
+    ISMRMRD_ACQ_COMPRESSION4                        = 56,
     ISMRMRD_ACQ_USER1                               = 57,
     ISMRMRD_ACQ_USER2                               = 58,
     ISMRMRD_ACQ_USER3                               = 59,
diff --git a/libsrc/ismrmrd.c b/libsrc/ismrmrd.c
index 3fba17c..081b33e 100644
--- a/libsrc/ismrmrd.c
+++ b/libsrc/ismrmrd.c
@@ -133,20 +133,22 @@ int ismrmrd_make_consistent_acquisition(ISMRMRD_Acquisition *acq) {
     
     traj_size = ismrmrd_size_of_acquisition_traj(acq);
     if (traj_size > 0) {
-        acq->traj = (float *)realloc(acq->traj, traj_size);
-        if (acq->traj == NULL) {
+        float *newPtr = (float *)realloc(acq->traj, traj_size);
+        if (newPtr == NULL) {
             return ISMRMRD_PUSH_ERR(ISMRMRD_MEMORYERROR,
                           "Failed to realloc acquisition trajectory array");
         }
+        acq->traj = newPtr;
     }
         
     data_size = ismrmrd_size_of_acquisition_data(acq);
     if (data_size > 0) {
-        acq->data = (complex_float_t *)realloc(acq->data, data_size);
-        if (acq->data == NULL) {
+        complex_float_t *newPtr = (complex_float_t *)realloc(acq->data, data_size);
+        if (newPtr == NULL) {
             return ISMRMRD_PUSH_ERR(ISMRMRD_MEMORYERROR,
                           "Failed to realloc acquisition data array");
         }
+        acq->data = newPtr;
     }
 
     return ISMRMRD_NOERROR;
@@ -269,20 +271,22 @@ int ismrmrd_make_consistent_image(ISMRMRD_Image *im) {
     attr_size = ismrmrd_size_of_image_attribute_string(im);
     if (attr_size > 0) {
         // Allocate space plus a null-terminating character
-        im->attribute_string = (char *)realloc(im->attribute_string, attr_size + sizeof(*im->attribute_string));
-        if (im->attribute_string == NULL) {
+        char *newPtr = (char *)realloc(im->attribute_string, attr_size+sizeof(*im->attribute_string));
+        if (newPtr == NULL) {
             return ISMRMRD_PUSH_ERR(ISMRMRD_MEMORYERROR, "Failed to realloc image attribute string");
         }
+        im->attribute_string = newPtr;
         // Set the null terminating character
         im->attribute_string[im->head.attribute_string_len] = '\0';
     }
         
     data_size = ismrmrd_size_of_image_data(im);
     if (data_size > 0) {
-        im->data = realloc(im->data, data_size);
-        if (im->data == NULL) {
+        void *newPtr = realloc(im->data, data_size);
+        if (newPtr == NULL) {
             return ISMRMRD_PUSH_ERR(ISMRMRD_MEMORYERROR, "Failed to realloc image data array");
         }
+        im->data = newPtr;
     }
     return ISMRMRD_NOERROR;
 }
@@ -405,10 +409,11 @@ int ismrmrd_make_consistent_ndarray(ISMRMRD_NDArray *arr) {
 
     data_size = ismrmrd_size_of_ndarray_data(arr);
     if (data_size > 0) {
-        arr->data = realloc(arr->data, data_size);
-        if (arr->data == NULL) {
+        void *newPtr = realloc(arr->data, data_size);
+        if (newPtr == NULL) {
             return ISMRMRD_PUSH_ERR(ISMRMRD_MEMORYERROR, "Failed to realloc NDArray data array");
         }
+        arr->data = newPtr;
     }
     return ISMRMRD_NOERROR;
 }
@@ -474,7 +479,7 @@ size_t ismrmrd_sizeof_data_type(int data_type)
 
 /* Misc. functions */
 bool ismrmrd_is_flag_set(const uint64_t flags, const uint64_t val) {
-    uint64_t bitmask = 1 << (val - 1);
+    uint64_t bitmask = (uint64_t)(1) << (val - 1);
     return (flags & bitmask) > 0;
 }
 
@@ -483,7 +488,7 @@ int ismrmrd_set_flag(uint64_t *flags, const uint64_t val) {
     if (flags==NULL) {
         return ISMRMRD_PUSH_ERR(ISMRMRD_RUNTIMEERROR, "Pointer should not be NULL.");
     }
-    bitmask = 1 << (val - 1);
+    bitmask = (uint64_t)(1) << (val - 1);
     *flags |= bitmask;
     return ISMRMRD_NOERROR;
 }
@@ -501,7 +506,7 @@ int ismrmrd_clear_flag(uint64_t *flags, const uint64_t val) {
     if (flags==NULL) {
         return ISMRMRD_PUSH_ERR(ISMRMRD_RUNTIMEERROR, "Pointer should not be NULL.");
     }
-    bitmask = 1 << (val - 1);
+    bitmask = (uint64_t)(1) << (val - 1);
     *flags &= ~bitmask;
     return ISMRMRD_NOERROR;
 }
@@ -520,7 +525,7 @@ bool ismrmrd_is_channel_on(const uint64_t channel_mask[ISMRMRD_CHANNEL_MASKS], c
     if (channel_mask==NULL) {
         return ISMRMRD_PUSH_ERR(ISMRMRD_RUNTIMEERROR, "Pointer to channel_mask should not be NULL.");
     }
-    bitmask = 1 << (chan % 64);
+    bitmask = (uint64_t)(1) << (chan % 64);
     offset = chan / 64;
     return (channel_mask[offset] & bitmask) > 0;
 }
@@ -531,7 +536,7 @@ int ismrmrd_set_channel_on(uint64_t channel_mask[ISMRMRD_CHANNEL_MASKS], const u
     if (channel_mask==NULL) {
         return ISMRMRD_PUSH_ERR(ISMRMRD_RUNTIMEERROR, "Pointer to channel_mask should not be NULL.");
     }
-    bitmask = 1 << (chan % 64);
+    bitmask = (uint64_t)(1) << (chan % 64);
     offset = chan / 64;
     channel_mask[offset] |= bitmask;
     return ISMRMRD_NOERROR;
diff --git a/libsrc/xml.cpp b/libsrc/xml.cpp
index fde4e2b..4131344 100644
--- a/libsrc/xml.cpp
+++ b/libsrc/xml.cpp
@@ -698,7 +698,7 @@ namespace ISMRMRD
           }
       }
 
-      append_optional_node(n2, "sequence_type", h.sequenceParameters->sequence_type);
+      append_optional_node(n1, "sequence_type", h.sequenceParameters->sequence_type);
 
       if (h.sequenceParameters->echo_spacing.is_present())
       {
diff --git a/matlab/+ismrmrd/+xml/deserialize.m b/matlab/+ismrmrd/+xml/deserialize.m
index 7aabf82..d16ac84 100644
--- a/matlab/+ismrmrd/+xml/deserialize.m
+++ b/matlab/+ismrmrd/+xml/deserialize.m
@@ -169,7 +169,6 @@ function status = isCompoundType(name)
         'reconSpace', ...
         'encodingLimits', ...
         'trajectoryDescription', ...
-        'echoTrainLength', ...
         'parallelImaging', ...
         'accelerationFactor', ...
         'matrixSize', ...
@@ -204,6 +203,7 @@ function status = isNumericalType(name)
       'flipAngle_deg', ...
       'sequence_type', ...
       'echo_spacing', ...
+      'echoTrainLength', ...
       'x', 'y', 'z', ...
       'minimum', 'maximum', 'center'};
   
@@ -233,6 +233,7 @@ function status = isStringType(name)
       'institutionName', ...
       'stationName', ...
       'trajectory', ...
+      'identifier', ...
       'coilName', ...
       'calibrationMode',...
       'interleavingDimension',...
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 5d8d2c0..f2fc9c1 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -3,7 +3,7 @@ find_package(Boost 1.43 COMPONENTS unit_test_framework)
 if (NOT Boost_UNIT_TEST_FRAMEWORK_FOUND)
     message("Boost Unit Test Framework not found. Not compiling tests")
     return()
-endif (NOT Boost_UNIT_TEST_FRAMEWORK_FOUND)
+endif ()
 
 include_directories(${CMAKE_SOURCE_DIR}/include ${CMAKE_BINARY_DIR}/include ${Boost_INCLUDE_DIR})
 
diff --git a/tests/test_flags.cpp b/tests/test_flags.cpp
index 7402f0a..6c7dc32 100644
--- a/tests/test_flags.cpp
+++ b/tests/test_flags.cpp
@@ -15,7 +15,7 @@ BOOST_AUTO_TEST_CASE(test_is_flag_set)
     }
 
     for (int f = 1; f <= 64; f++) {
-        flags |= (1 << (f - 1));
+        flags |= ((uint64_t)1 << (f - 1));
         BOOST_CHECK_EQUAL(ismrmrd_is_flag_set(flags, f), true);
     }
 }
@@ -28,7 +28,7 @@ BOOST_AUTO_TEST_CASE(test_set_flag)
 
     for (int f = 1; f <= 64; f++) {
         BOOST_CHECK_EQUAL(ismrmrd_set_flag(&flags, f), ISMRMRD_NOERROR);
-        BOOST_REQUIRE((flags & (1 << (f - 1))) != 0);
+        BOOST_REQUIRE((flags & ((uint64_t)1 << (f - 1))) != 0);
     }
 }
 
@@ -49,7 +49,7 @@ BOOST_AUTO_TEST_CASE(test_clear_flag)
     BOOST_CHECK_EQUAL(ismrmrd_clear_flag(NULL, ISMRMRD_IMAGE_USER8), ISMRMRD_RUNTIMEERROR);
     for (int f = 1; f <= 64; f++) {
         BOOST_CHECK_EQUAL(ismrmrd_clear_flag(&flags, f), ISMRMRD_NOERROR);
-        BOOST_REQUIRE((flags & (1 << (f - 1))) == 0);
+        BOOST_REQUIRE((flags & ((uint64_t)1 << (f - 1))) == 0);
     }
 }
 
diff --git a/utilities/CMakeLists.txt b/utilities/CMakeLists.txt
index 73dc095..011837c 100644
--- a/utilities/CMakeLists.txt
+++ b/utilities/CMakeLists.txt
@@ -14,7 +14,7 @@ if (NOT WIN32)
     ${CMAKE_SOURCE_DIR}/libsrc/pugixml.cpp )
   target_link_libraries(ismrmrd_test_xml ismrmrd)
   install(TARGETS ismrmrd_test_xml DESTINATION bin)
-endif(NOT WIN32)
+endif()
 
 if (HDF5_FOUND)
     add_executable(ismrmrd_read_timing_test read_timing_test.cpp)
@@ -29,7 +29,7 @@ if (HDF5_FOUND)
 
         if(WIN32)
             link_directories(${Boost_LIBRARY_DIRS})
-        endif(WIN32)
+        endif()
 
         include_directories(
             ${CMAKE_SOURCE_DIR/include}
@@ -44,12 +44,12 @@ if (HDF5_FOUND)
             target_link_libraries( ismrmrd_generate_cartesian_shepp_logan
                 ismrmrd
                 ${FFTW3_LIBRARIES})
-        else(WIN32)
+        else()
             target_link_libraries( ismrmrd_generate_cartesian_shepp_logan
                 ismrmrd
                 ${Boost_PROGRAM_OPTIONS_LIBRARY}
                 ${FFTW3_LIBRARIES})
-        endif(WIN32)
+        endif()
         install(TARGETS ismrmrd_generate_cartesian_shepp_logan DESTINATION bin)
 
         # Shepp-Logan phantom
@@ -59,17 +59,17 @@ if (HDF5_FOUND)
             target_link_libraries( ismrmrd_recon_cartesian_2d
                 ismrmrd
                 ${FFTW3_LIBRARIES})
-        else(WIN32)
+        else()
             target_link_libraries( ismrmrd_recon_cartesian_2d
                 ismrmrd
                 ${Boost_PROGRAM_OPTIONS_LIBRARY}
                 ${FFTW3_LIBRARIES})
-        endif(WIN32)
+        endif()
         install(TARGETS ismrmrd_recon_cartesian_2d DESTINATION bin)
 
-    else(FFTW3_FOUND AND Boost_FOUND)
+    else()
         message("FFTW3 or Boost NOT Found, cannot build utilities")
-    endif(FFTW3_FOUND AND Boost_FOUND)
-else (HDF5_FOUND)
+    endif()
+else ()
     message("HDF5 NOT Found, cannot build utilities")
-endif (HDF5_FOUND)
+endif ()

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-med/ismrmrd.git



More information about the debian-med-commit mailing list