]> SALOME platform Git repositories - modules/yacs.git/blob - adm/cmake/FindCppUnit.cmake
Salome HOME
823efa0ff1c32b7a9d210e02ad0d1dc2f16362e6
[modules/yacs.git] / adm / cmake / FindCppUnit.cmake
1 # - Find CppUnit
2 # Sets the following variables:
3 #   CPPUNIT_INCLUDE_DIRS - path to the CppUnit include directory
4 #   CPPUNIT_LIBRARIES    - path to the CppUnit libraries to be linked against
5 #   CPPUNIT_DEFINITIONS  - specific CppUnit definitions to be added
6 #
7 #  The header cppunit/extensions/HelperMacros.h is looked for.
8 #  The following libraries are searched  
9 #        cppunit_dll, or cppunitd_dll (Windows) 
10 #        cppunit (Linux)
11 #
12
13 #########################################################################
14 # Copyright (C) 2014-2015  CEA/DEN, EDF R&D
15 #
16 # This library is free software; you can redistribute it and/or
17 # modify it under the terms of the GNU Lesser General Public
18 # License as published by the Free Software Foundation; either
19 # version 2.1 of the License, or (at your option) any later version.
20 #
21 # This library is distributed in the hope that it will be useful,
22 # but WITHOUT ANY WARRANTY; without even the implied warranty of
23 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
24 # Lesser General Public License for more details.
25 #
26 # You should have received a copy of the GNU Lesser General Public
27 # License along with this library; if not, write to the Free Software
28 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
29 #
30 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
31 #
32
33 IF(NOT CppUnit_FIND_QUIETLY)
34     MESSAGE(STATUS "Looking for CppUnit ...")
35 ENDIF()
36
37 # Headers
38 SET(CPPUNIT_ROOT_DIR $ENV{CPPUNIT_ROOT_DIR} CACHE PATH "Path to the CPPUNIT.")
39 IF(CPPUNIT_ROOT_DIR)
40   LIST(APPEND CMAKE_INCLUDE_PATH "${CPPUNIT_ROOT_DIR}/include")
41   LIST(APPEND CMAKE_PROGRAM_PATH "${CPPUNIT_ROOT_DIR}/bin")
42 ENDIF(CPPUNIT_ROOT_DIR)
43
44 SET(CPPUNIT_INCLUDE_TO_FIND cppunit/extensions/HelperMacros.h)
45 FIND_PATH(CPPUNIT_INCLUDE_DIRS ${CPPUNIT_INCLUDE_TO_FIND})
46
47 # Libraries
48 IF(WIN32)
49   IF(CMAKE_BUILD_TYPE STREQUAL Debug)
50     FIND_LIBRARY(CPPUNIT_LIBRARIES cppunitd_dll)
51   ELSE(CMAKE_BUILD_TYPE STREQUAL Debug)
52     FIND_LIBRARY(CPPUNIT_LIBRARIES cppunit_dll)
53   ENDIF(CMAKE_BUILD_TYPE STREQUAL Debug)
54 ELSE(WIN32)
55   FIND_PROGRAM(CPPUNIT_CONFIG_BIN cppunit-config)
56   IF(NOT CPPUNIT_CONFIG_BIN)
57     MESSAGE(FATAL_ERROR "Error in CPPUNIT detection ! cppunit-config executable not found !")
58   ENDIF(NOT CPPUNIT_CONFIG_BIN)
59   EXECUTE_PROCESS(COMMAND ${CPPUNIT_CONFIG_BIN} --libs OUTPUT_VARIABLE CPPUNIT_LDFLAGS)
60   STRING(STRIP ${CPPUNIT_LDFLAGS} CPPUNIT_LDFLAGS)
61   STRING(REPLACE " " ";" LDFLAGS_LIST ${CPPUNIT_LDFLAGS})
62   FOREACH(LDFLAG ${LDFLAGS_LIST})
63     STRING(REGEX MATCH "^-L.*" LIBDIR "${LDFLAG}")
64     STRING(REGEX MATCH "^-l.*" LIB "${LDFLAG}")
65     IF(LIBDIR)
66       STRING(REGEX REPLACE "^-L" "" LIBDIR ${LIBDIR})
67       LIST(APPEND CMAKE_LIBRARY_PATH ${LIBDIR})
68     ELSEIF(LIB)
69       STRING(REGEX REPLACE "^-l" "" LIB ${LIB})
70       LIST(APPEND LIBS ${LIB})
71     ELSE()
72       MESSAGE(FATAL_ERROR "Unrecognized token \"${LDFLAG}\" in the output of cppunit-config --libs")
73     ENDIF()
74   ENDFOREACH(LDFLAG ${LDFLAGS_LIST})
75   FOREACH(LIB ${LIBS})
76     FIND_LIBRARY(CPPUNIT_SUBLIB_${LIB} ${LIB})
77     IF(NOT CPPUNIT_SUBLIB_${LIB})
78       MESSAGE(FATAL_ERROR "Error in CPPUNIT detection! Fail to locate the needed library ${LIB}!")
79     ENDIF(NOT CPPUNIT_SUBLIB_${LIB})
80     LIST(APPEND CPPUNIT_LIBRARIES ${CPPUNIT_SUBLIB_${LIB}})
81   ENDFOREACH(LIB ${LIBS})
82 #  MESSAGE("**** ${CPPUNIT_LIBRARIES}")
83 ENDIF(WIN32)
84
85 # Global variables
86 SET(CPPUNIT_DEFINITIONS)
87 IF(WIN32)
88   SET(CPPUNIT_DEFINITIONS -DCPPUNIT_DLL)
89 ENDIF(WIN32)
90
91 INCLUDE(FindPackageHandleStandardArgs)
92 FIND_PACKAGE_HANDLE_STANDARD_ARGS(CppUnit REQUIRED_VARS CPPUNIT_INCLUDE_DIRS CPPUNIT_LIBRARIES)
93
94