# VARIABLE will be set to true if libxml2 support is present
include(CheckLibraryExists)
+include(CheckIncludeFiles)
include(gmxOptionUtilities)
function(GMX_TEST_LIBXML2 VARIABLE)
if(LIBXML2_FOUND)
unset(LIBXML2_LINKS_OK CACHE)
endif()
check_library_exists("${LIBXML2_LIBRARIES}" "xmlTextWriterEndAttribute" "" LIBXML2_LINKS_OK)
- set(${VARIABLE} ${LIBXML2_LINKS_OK} PARENT_SCOPE)
+ if(LIBXML2_LINKS_OK)
+ #check that xml headers can be included
+ set(CMAKE_REQUIRED_INCLUDES "${LIBXML2_INCLUDE_DIR}")
+ check_include_files("libxml/parser.h" LIBXML2_INCL_OK)
+ if(NOT LIBXML2_INCL_OK)
+ #xml headers depend on iconv.h. Test whether adding its path fixes the problem
+ find_path(ICONV_INCLUDE_DIR iconv.h)
+ if(ICONV_INCLUDE_DIR)
+ set(CMAKE_REQUIRED_INCLUDES "${LIBXML2_INCLUDE_DIR};${ICONV_INCLUDE_DIR}")
+ unset(LIBXML2_INCL_OK CACHE)
+ check_include_files("libxml/parser.h" LIBXML2_INCL_OK)
+ set(LIBXML2_INCLUDE_DIR "${LIBXML2_INCLUDE_DIR};${ICONV_INCLUDE_DIR}" CACHE PATH "Libxml2 include path" FORCE)
+ endif()
+ endif()
+ set(${VARIABLE} ${LIBXML2_INCL_OK} PARENT_SCOPE)
+ else()
+ set(${VARIABLE} OFF PARENT_SCOPE)
+ endif()
else()
set(${VARIABLE} OFF PARENT_SCOPE)
endif()