Salome HOME
New version of cmake tools completely re-written
[modules/kernel.git] / salome_adm / cmake_files / FindCPPUNIT.cmake
index 5add4eeb3c95cb779750a33a2573c300439df0f8..7e8263eac16dfc27e6ee49ace535295636a65606 100644 (file)
 #
 #  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
-FIND_LIBRARY(CPPUNIT_LIBS cppunit /usr/lib)
-IF(CPPUNIT_LIBS)
+# ------
+
+MESSAGE(STATUS "Check for cppunit ...")
+
+# ------
+
+IF(CPPUNIT_IS_MANDATORY STREQUAL 0)
+  SET(CPPUNIT_IS_MANDATORY 0)
+  SET(CPPUNIT_IS_OPTIONAL 1)
+ENDIF(CPPUNIT_IS_MANDATORY STREQUAL 0)
+IF(CPPUNIT_IS_OPTIONAL STREQUAL 0)
+  SET(CPPUNIT_IS_MANDATORY 1)
+  SET(CPPUNIT_IS_OPTIONAL 0)
+ENDIF(CPPUNIT_IS_OPTIONAL STREQUAL 0)
+IF(NOT CPPUNIT_IS_MANDATORY AND NOT CPPUNIT_IS_OPTIONAL)
+  SET(CPPUNIT_IS_MANDATORY 0)
+  SET(CPPUNIT_IS_OPTIONAL 1)
+ENDIF(NOT CPPUNIT_IS_MANDATORY AND NOT CPPUNIT_IS_OPTIONAL)
+
+# ------
+
+SET(CPPUNIT_STATUS 1)
+IF(WITHOUT_CPPUNIT OR WITH_CPPUNIT STREQUAL 0)
+  SET(CPPUNIT_STATUS 0)
+  MESSAGE(STATUS "cppunit disabled from command line.")
+ENDIF(WITHOUT_CPPUNIT OR WITH_CPPUNIT STREQUAL 0)
+
+# ------
+
+IF(CPPUNIT_STATUS)
+  IF(WITH_CPPUNIT)
+    SET(CPPUNIT_ROOT_USER ${WITH_CPPUNIT})
+  ELSE(WITH_CPPUNIT)
+    SET(CPPUNIT_ROOT_USER $ENV{CPPUNIT_ROOT})
+  ENDIF(WITH_CPPUNIT)
+ENDIF(CPPUNIT_STATUS)
+
+# -----
+
+IF(CPPUNIT_STATUS)
+  IF(CPPUNIT_ROOT_USER)
+    SET(CPPUNIT_FIND_PATHS_OPTION NO_DEFAULT_PATH)
+  ELSE(CPPUNIT_ROOT_USER)
+    SET(CPPUNIT_FIND_PATHS_OPTION)
+  ENDIF(CPPUNIT_ROOT_USER)
+ENDIF(CPPUNIT_STATUS)
+
+# -----
+
+IF(CPPUNIT_STATUS)
+  IF(CPPUNIT_ROOT_USER)
+    SET(CPPUNIT_INCLUDE_PATHS ${CPPUNIT_ROOT_USER} ${CPPUNIT_ROOT_USER}/include)
+  ELSE(CPPUNIT_ROOT_USER)
+    SET(CPPUNIT_INCLUDE_PATHS)
+  ENDIF(CPPUNIT_ROOT_USER)
+  SET(CPPUNIT_INCLUDE_TO_FIND cppunit/extensions/HelperMacros.h)
+  FIND_PATH(CPPUNIT_INCLUDE_DIR ${CPPUNIT_INCLUDE_TO_FIND} PATHS ${CPPUNIT_INCLUDE_PATHS} ${CPPUNIT_FIND_PATHS_OPTION})
+  IF(CPPUNIT_INCLUDE_DIR)
+    IF(CPPUNIT_ROOT_USER)
+      SET(CPPUNIT_INCLUDES -I${CPPUNIT_INCLUDE_DIR})
+    ENDIF(CPPUNIT_ROOT_USER)
+    MESSAGE(STATUS "${CPPUNIT_INCLUDE_TO_FIND} found in ${CPPUNIT_INCLUDE_DIR}")
+  ELSE(CPPUNIT_INCLUDE_DIR)
+    SET(CPPUNIT_STATUS 0)
+    IF(CPPUNIT_ROOT_USER)
+      MESSAGE(STATUS "${CPPUNIT_INCLUDE_TO_FIND} not found in ${CPPUNIT_INCLUDE_PATHS}, check your CPPUNIT installation.")
+    ELSE(CPPUNIT_ROOT_USER)
+      MESSAGE(STATUS "${CPPUNIT_INCLUDE_TO_FIND} not found on system, try to use WITH_CPPUNIT option or CPPUNIT_ROOT environment variable.")
+    ENDIF(CPPUNIT_ROOT_USER)
+  ENDIF(CPPUNIT_INCLUDE_DIR)
+ENDIF(CPPUNIT_STATUS)
+
+# ----
+
+IF(CPPUNIT_STATUS)
+  IF(CPPUNIT_ROOT_USER)
+    SET(CPPUNIT_LIB_PATHS ${CPPUNIT_ROOT_USER}/lib)
+  ELSE(CPPUNIT_ROOT_USER)
+    SET(CPPUNIT_LIB_PATHS)
+  ENDIF(CPPUNIT_ROOT_USER)
+ENDIF(CPPUNIT_STATUS)
+
+IF(CPPUNIT_STATUS)
+  IF(WINDOWS)
+    FIND_LIBRARY(CPPUNIT_LIB cppunitd_dll PATHS ${CPPUNIT_LIB_PATHS} ${CPPUNIT_FIND_PATHS_OPTION})
+  ELSE(WINDOWS)
+    FIND_LIBRARY(CPPUNIT_LIB cppunit PATHS ${CPPUNIT_LIB_PATHS} ${CPPUNIT_FIND_PATHS_OPTION})
+  ENDIF(WINDOWS)
+  SET(CPPUNIT_LIBS)
+  IF(CPPUNIT_LIB)
+    SET(CPPUNIT_LIBS ${CPPUNIT_LIBS} ${CPPUNIT_LIB})
+    MESSAGE(STATUS "cppunit lib found: ${CPPUNIT_LIB}")
+  ELSE(CPPUNIT_LIB)
+    SET(CPPUNIT_STATUS 0)
+    IF(CPPUNIT_ROOT_USER)
+      MESSAGE(STATUS "cppunit lib not found in ${CPPUNIT_LIB_PATHS}, check your CPPUNIT installation.")
+    ELSE(CPPUNIT_ROOT_USER)
+      MESSAGE(STATUS "cppunit lib not found on system, try to use WITH_CPPUNIT option or CPPUNIT_ROOT environment variable.")
+    ENDIF(CPPUNIT_ROOT_USER)
+  ENDIF(CPPUNIT_LIB)
+ENDIF(CPPUNIT_STATUS)
+
+# ----
+
+IF(CPPUNIT_STATUS)
   SET(CPPUNIT_IS_OK 1)
-ENDIF(CPPUNIT_LIBS)
+  IF(WINDOWS)
+    SET(CPPUNIT_INCLUDES ${CPPUNIT_INCLUDES} -DCPPUNIT_DLL)
+  ENDIF(WINDOWS)
+ELSE(CPPUNIT_STATUS)
+  IF(CPPUNIT_IS_MANDATORY)
+    MESSAGE(FATAL_ERROR "cppunit not found ... mandatory ... abort")
+  ELSE(CPPUNIT_IS_MANDATORY)
+    MESSAGE(STATUS "cppunit not found ... optional ... disabled")
+  ENDIF(CPPUNIT_IS_MANDATORY)
+ENDIF(CPPUNIT_STATUS)
+
+# ------