-SET(LIBXML2_ROOT $ENV{LIBXML2_ROOT})
-IF(LIBXML2_ROOT)
- FIND_PATH(LIBXML2_INCLUDE_DIR libxml/parser.h ${LIBXML2_ROOT}/include)
- FIND_LIBRARY(LIBXML2_LIBS libxml2 ${LIBXML2_ROOT}/lib)
-ELSE(LIBXML2_ROOT)
- FIND_PATH(LIBXML2_INCLUDE_DIR libxml/parser.h /usr/include/libxml2)
- FIND_LIBRARY(LIBXML2_LIBS xml2 /usr/lib)
-ENDIF(LIBXML2_ROOT)
-
-SET(LIBXML2_INCLUDES -I${LIBXML2_INCLUDE_DIR})
-
-SET(ICONV_ROOT $ENV{ICONV_ROOT})
-IF(ICONV_ROOT)
- FIND_PATH(ICONV_INCLUDE_DIR iconv.h ${ICONV_ROOT}/include)
- FIND_LIBRARY(ICONV_LIBS iconv ${ICONV_ROOT}/lib)
- SET(LIBXML2_INCLUDES ${LIBXML2_INCLUDES} -I${ICONV_INCLUDE_DIR})
- SET(LIBXML2_LIBS ${LIBXML2_LIBS} ${ICONV_LIBS})
-ENDIF(ICONV_ROOT)
-
-SET(LIBXML_INCLUDES ${LIBXML2_INCLUDES})
-SET(LIBXML_CPPFLAGS ${LIBXML2_INCLUDES})
-SET(LIBXML_LIBS ${LIBXML2_LIBS})
+# ------
+
+MESSAGE(STATUS "Check for libxml2 ...")
+
+# ------
+
+IF(LIBXML2_IS_MANDATORY STREQUAL 0)
+ SET(LIBXML2_IS_MANDATORY 0)
+ SET(LIBXML2_IS_OPTIONAL 1)
+ENDIF(LIBXML2_IS_MANDATORY STREQUAL 0)
+IF(LIBXML2_IS_OPTIONAL STREQUAL 0)
+ SET(LIBXML2_IS_MANDATORY 1)
+ SET(LIBXML2_IS_OPTIONAL 0)
+ENDIF(LIBXML2_IS_OPTIONAL STREQUAL 0)
+IF(NOT LIBXML2_IS_MANDATORY AND NOT LIBXML2_IS_OPTIONAL)
+ SET(LIBXML2_IS_MANDATORY 1)
+ SET(LIBXML2_IS_OPTIONAL 0)
+ENDIF(NOT LIBXML2_IS_MANDATORY AND NOT LIBXML2_IS_OPTIONAL)
+
+# ------
+
+SET(LIBXML2_STATUS 1)
+IF(WITHOUT_LIBXML2 OR WITH_LIBXML2 STREQUAL 0)
+ SET(LIBXML2_STATUS 0)
+ MESSAGE(STATUS "libxml2 disabled from command line.")
+ENDIF(WITHOUT_LIBXML2 OR WITH_LIBXML2 STREQUAL 0)
+
+# ------
+
+IF(LIBXML2_STATUS)
+ IF(WITH_LIBXML2)
+ SET(LIBXML2_ROOT_USER ${WITH_LIBXML2})
+ ELSE(WITH_LIBXML2)
+ SET(LIBXML2_ROOT_USER $ENV{LIBXML2_ROOT})
+ ENDIF(WITH_LIBXML2)
+ENDIF(LIBXML2_STATUS)
+
+# -----
+
+IF(LIBXML2_STATUS)
+ IF(LIBXML2_ROOT_USER)
+ SET(LIBXML2_FIND_PATHS_OPTION NO_DEFAULT_PATH)
+ ELSE(LIBXML2_ROOT_USER)
+ SET(LIBXML2_FIND_PATHS_OPTION)
+ ENDIF(LIBXML2_ROOT_USER)
+ENDIF(LIBXML2_STATUS)
+
+# -----
+
+IF(LIBXML2_STATUS)
+ IF(LIBXML2_ROOT_USER)
+ SET(LIBXML2_INCLUDE_PATHS ${LIBXML2_ROOT_USER}/include)
+ ELSE(LIBXML2_ROOT_USER)
+ SET(LIBXML2_INCLUDE_PATHS /usr/include/libxml2)
+ ENDIF(LIBXML2_ROOT_USER)
+ SET(LIBXML2_INCLUDE_TO_FIND libxml/parser.h)
+ FIND_PATH(LIBXML2_INCLUDE_DIR ${LIBXML2_INCLUDE_TO_FIND} PATHS ${LIBXML2_INCLUDE_PATHS} ${LIBXML2_FIND_PATHS_OPTION})
+ IF(LIBXML2_INCLUDE_DIR)
+ SET(LIBXML2_INCLUDES -I${LIBXML2_INCLUDE_DIR})
+ MESSAGE(STATUS "${LIBXML2_INCLUDE_TO_FIND} found in ${LIBXML2_INCLUDE_DIR}")
+ ELSE(LIBXML2_INCLUDE_DIR)
+ SET(LIBXML2_STATUS 0)
+ IF(LIBXML2_ROOT_USER)
+ MESSAGE(STATUS "${LIBXML2_INCLUDE_TO_FIND} not found in ${LIBXML2_INCLUDE_PATHS}, check your LIBXML2 installation.")
+ ELSE(LIBXML2_ROOT_USER)
+ MESSAGE(STATUS "${LIBXML2_INCLUDE_TO_FIND} not found on system, try to use WITH_LIBXML2 option or LIBXML2_ROOT environment variable.")
+ ENDIF(LIBXML2_ROOT_USER)
+ ENDIF(LIBXML2_INCLUDE_DIR)
+ENDIF(LIBXML2_STATUS)
+
+# ----
+
+IF(LIBXML2_STATUS)
+ IF(LIBXML2_ROOT_USER)
+ SET(LIBXML2_LIB_PATHS ${LIBXML2_ROOT_USER}/lib)
+ ELSE(LIBXML2_ROOT_USER)
+ SET(LIBXML2_LIB_PATHS)
+ ENDIF(LIBXML2_ROOT_USER)
+ENDIF(LIBXML2_STATUS)
+
+IF(LIBXML2_STATUS)
+ IF(WINDOWS)
+ FIND_LIBRARY(LIBXML2_LIB libxml2 PATHS ${LIBXML2_LIB_PATHS} ${LIBXML2_FIND_PATHS_OPTION})
+ ELSE(WINDOWS)
+ FIND_LIBRARY(LIBXML2_LIB xml2 PATHS ${LIBXML2_LIB_PATHS} ${LIBXML2_FIND_PATHS_OPTION})
+ ENDIF(WINDOWS)
+ SET(LIBXML2_LIBS)
+ IF(LIBXML2_LIB)
+ SET(LIBXML2_LIBS ${LIBXML2_LIBS} ${LIBXML2_LIB})
+ MESSAGE(STATUS "libxml2 lib found: ${LIBXML2_LIB}")
+ ELSE(LIBXML2_LIB)
+ SET(LIBXML2_STATUS 0)
+ IF(LIBXML2_ROOT_USER)
+ MESSAGE(STATUS "libxml2 lib not found in ${LIBXML2_LIB_PATHS}, check your LIBXML2 installation.")
+ ELSE(LIBXML2_ROOT_USER)
+ MESSAGE(STATUS "libxml2 lib not found on system, try to use WITH_LIBXML2 option or LIBXML2_ROOT environment variable.")
+ ENDIF(LIBXML2_ROOT_USER)
+ ENDIF(LIBXML2_LIB)
+ENDIF(LIBXML2_STATUS)
+
+# ----
+
+IF(WINDOWS)
+ SET(ICONV_ROOT $ENV{ICONV_ROOT})
+ IF(ICONV_ROOT)
+ FIND_PATH(ICONV_INCLUDE_DIR iconv.h ${ICONV_ROOT}/include)
+ FIND_LIBRARY(ICONV_LIBS iconv ${ICONV_ROOT}/lib)
+ SET(LIBXML2_INCLUDES ${LIBXML2_INCLUDES} -I${ICONV_INCLUDE_DIR})
+ SET(LIBXML2_LIBS ${LIBXML2_LIBS} ${ICONV_LIBS})
+ ENDIF(ICONV_ROOT)
+ENDIF(WINDOWS)
+
+# ------
+IF(LIBXML2_STATUS)
+ SET(LIBXML_INCLUDES ${LIBXML2_INCLUDES})
+ SET(LIBXML_CPPFLAGS ${LIBXML2_INCLUDES})
+ SET(LIBXML_LIBS ${LIBXML2_LIBS})
+ELSE(LIBXML2_STATUS)
+ IF(LIBXML2_IS_MANDATORY)
+ MESSAGE(FATAL_ERROR "libxml2 not found ... mandatory ... abort")
+ ELSE(LIBXML2_IS_MANDATORY)
+ MESSAGE(STATUS "libxml2 not found ... optional ... disabled")
+ ENDIF(LIBXML2_IS_MANDATORY)
+ENDIF(LIBXML2_STATUS)
+
+# ------