Fix MingW build
[alexxy/gromacs.git] / cmake / gmxTestLibXml2.cmake
index 4546bfcd7cd03524d01d286ec2d242f642abdda1..48e1c21d661875fc1190684154ac2482d04287a4 100644 (file)
@@ -42,6 +42,7 @@
 #  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)
@@ -50,7 +51,24 @@ function(GMX_TEST_LIBXML2 VARIABLE)
             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()