0032308: Configuration - make Xlib dependency optional
[occt.git] / adm / cmake / rapidjson.cmake
1 # RapidJSON
2
3 if (NOT DEFINED INSTALL_RAPIDJSON)
4   set (INSTALL_RAPIDJSON OFF CACHE BOOL "${INSTALL_RAPIDJSON_DESCR}")
5 endif()
6
7 # RapidJSON directory
8 if (NOT DEFINED 3RDPARTY_RAPIDJSON_DIR)
9   set (3RDPARTY_RAPIDJSON_DIR "" CACHE PATH "The directory containing RapidJSON")
10 endif()
11
12 # search for RapidJSON in user defined directory
13 if (3RDPARTY_DIR AND EXISTS "${3RDPARTY_DIR}")
14   if (NOT 3RDPARTY_RAPIDJSON_DIR OR NOT EXISTS "${3RDPARTY_RAPIDJSON_DIR}")
15     FIND_PRODUCT_DIR("${3RDPARTY_DIR}" RapidJSON RAPIDJSON_DIR_NAME)
16     if (RAPIDJSON_DIR_NAME)
17       set (3RDPARTY_RAPIDJSON_DIR "${3RDPARTY_DIR}/${RAPIDJSON_DIR_NAME}" CACHE PATH "The directory containing RapidJSON" FORCE)
18     endif()
19   endif()
20 endif()
21
22 if (NOT DEFINED 3RDPARTY_RAPIDJSON_INCLUDE_DIR)
23   set (3RDPARTY_RAPIDJSON_INCLUDE_DIR  "" CACHE FILEPATH "The directory containing headers of the RAPIDJSON")
24 endif()
25
26 if (NOT 3RDPARTY_RAPIDJSON_INCLUDE_DIR OR NOT EXISTS "${3RDPARTY_RAPIDJSON_INCLUDE_DIR}")
27
28   set (HEADER_NAMES rapidjson/rapidjson.h)
29
30   set (3RDPARTY_RAPIDJSON_INCLUDE_DIR "3RDPARTY_RAPIDJSON_INCLUDE_DIR-NOTFOUND" CACHE PATH "the path to RapidJSON header file" FORCE)
31
32   if (3RDPARTY_RAPIDJSON_DIR AND EXISTS "${3RDPARTY_RAPIDJSON_DIR}")
33     find_path (3RDPARTY_RAPIDJSON_INCLUDE_DIR NAMES ${HEADER_NAMES}
34                                               PATHS ${3RDPARTY_RAPIDJSON_DIR}
35                                               PATH_SUFFIXES include rapidjson
36                                               CMAKE_FIND_ROOT_PATH_BOTH
37                                               NO_DEFAULT_PATH)
38   else()
39     find_path (3RDPARTY_RAPIDJSON_INCLUDE_DIR NAMES ${HEADER_NAMES}
40                                               PATH_SUFFIXES include rapidjson
41                                               CMAKE_FIND_ROOT_PATH_BOTH)
42   endif()
43
44   # use default (CMake) RapidJSON search
45   if (NOT 3RDPARTY_RAPIDJSON_INCLUDE_DIR OR NOT EXISTS "${3RDPARTY_RAPIDJSON_INCLUDE_DIR}")
46     if (3RDPARTY_RAPIDJSON_DIR AND EXISTS "${3RDPARTY_RAPIDJSON_DIR}")
47       set (CACHED_RAPIDJSON_DIR $ENV{RapidJSON_DIR})
48       set (ENV{RapidJSON_DIR} "${3RDPARTY_RAPIDJSON_DIR}")
49     endif()
50
51     find_package(RapidJSON QUIET)
52
53     # restore ENV{RapidJSON_DIR}
54     if (3RDPARTY_RAPIDJSON_DIR AND EXISTS "${3RDPARTY_RAPIDJSON_DIR}")
55       set (ENV{RapidJSON_DIR} ${CACHED_RAPIDJSON_DIR})
56     endif()
57
58     if (${RAPIDJSON_FOUND})
59       set (3RDPARTY_RAPIDJSON_INCLUDE_DIR "${RAPIDJSON_INCLUDE_DIR}" CACHE PATH "the path to RapidJSON header file" FORCE)
60       set (3RDPARTY_RAPIDJSON_DIR         "${RAPIDJSON_ROOT_DIR}"    CACHE PATH "The directory containing RapidJSON" FORCE)
61     endif()
62   endif()
63 endif()
64
65 if (3RDPARTY_RAPIDJSON_INCLUDE_DIR AND EXISTS "${3RDPARTY_RAPIDJSON_INCLUDE_DIR}")
66   list (APPEND 3RDPARTY_INCLUDE_DIRS "${3RDPARTY_RAPIDJSON_INCLUDE_DIR}")
67
68   # Install header files
69   if (INSTALL_RAPIDJSON)
70     file(GLOB RAPIDJSON_SUBDIRS "${3RDPARTY_RAPIDJSON_INCLUDE_DIR}/*")
71     foreach(SUBDIR ${RAPIDJSON_SUBDIRS})
72       if(IS_DIRECTORY "${SUBDIR}")
73         install (DIRECTORY "${SUBDIR}" DESTINATION "${INSTALL_DIR_INCLUDE}")
74       else()
75         install (FILES "${SUBDIR}" DESTINATION "${INSTALL_DIR_INCLUDE}")
76       endif()
77     endforeach()
78   endif()
79 else()
80   list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_RAPIDJSON_INCLUDE_DIR)
81
82   set (3RDPARTY_RAPIDJSON_INCLUDE_DIR "" CACHE PATH "the path to RapidJSON header file" FORCE)
83 endif()
84
85 # unset all redundant variables
86 OCCT_CHECK_AND_UNSET(RapidJSON_DIR)