Salome HOME
New version of cmake tools completely re-written
[modules/kernel.git] / salome_adm / cmake_files / FindLIBXML2.cmake
index cd0b454698c703245c2bb6294d9bd47f6c38b031..7d87abcc468d5826a87001cebe4e7daac6f6b1ff 100644 (file)
 #
 #  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
-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)
+
+# ------