]> OCCT Git - occt-copy.git/commitdiff
CMake: configure build OCCT conditionally as part of another solution
authorapl <anton.poletaev@opencascade.com>
Wed, 12 Apr 2017 13:59:08 +0000 (16:59 +0300)
committerapl <anton.poletaev@opencascade.com>
Thu, 11 May 2017 13:12:30 +0000 (16:12 +0300)
CMakeLists.txt
adm/cmake/3rdparty_macro.cmake
adm/cmake/freetype.cmake
adm/cmake/occt_macros.cmake
adm/cmake/occt_toolkit.cmake
adm/cmake/tbb.cmake
adm/cmake/tcl.cmake
adm/cmake/tk.cmake
adm/cmake/vardescr.cmake

index 6c2510ee1b6a22bfcd0131b94fb938c6dd058531..41f70e8a1a29d759dee6403b2afafb6df6d60b8c 100644 (file)
@@ -1,15 +1,49 @@
 cmake_minimum_required (VERSION 2.8.12 FATAL_ERROR)
 
+include(CMakeParseArguments)
+
 set (CMAKE_SUPPRESS_REGENERATION TRUE)
 
-set (CMAKE_CONFIGURATION_TYPES Release Debug RelWithDebInfo CACHE INTERNAL "" FORCE)
+if (NOT ${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR})
+  set (EXTERNAL_BUILD ON CACHE INTERNAL "" FORCE)
+else()
+  set (EXTERNAL_BUILD OFF CACHE INTERNAL "" FORCE)
+endif()
+
+if (NOT EXTERNAL_BUILD)
+  set (OCCT_ROOT_DIR ${CMAKE_SOURCE_DIR})
+else()
+  set (OCCT_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR})
+endif()
+
+if (NOT EXTERNAL_BUILD)
+  set (CMAKE_CONFIGURATION_TYPES Release Debug RelWithDebInfo CACHE INTERNAL "" FORCE)
+endif()
+
+# macro: set variable
+macro (OCCT_set_cache_variable variable value type description)
+
+  unset (${variable} CACHE)
+
+  cmake_parse_arguments(arg "FORCE" "" "" ${ARGN})
+
+  if (NOT EXTERNAL_BUILD)
+    if (arg_FORCE)
+      set (${variable} "${value}" CACHE "${type}" "${description}" ${arg_force})
+    else()
+      set (${variable} "${value}" CACHE "${type}" "${description}")
+    endif()
+  else()
+    set (${variable} "${value}" CACHE INTERNAL "")
+  endif()
+endmacro()
 
 # macro: include patched file if it exists
 macro (OCCT_INCLUDE_CMAKE_FILE BEING_INCLUDED_FILE)
   if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/${BEING_INCLUDED_FILE}.cmake")
     include (${BUILD_PATCH}/${BEING_INCLUDED_FILE}.cmake)
   else()
-    include (${CMAKE_SOURCE_DIR}/${BEING_INCLUDED_FILE}.cmake)
+    include (${OCCT_ROOT_DIR}/${BEING_INCLUDED_FILE}.cmake)
   endif()
 endmacro()
 
@@ -18,7 +52,8 @@ OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/vardescr")
 
 # set type of OCCT libraries
 if (NOT BUILD_LIBRARY_TYPE)
-  set (BUILD_LIBRARY_TYPE "Shared" CACHE STRING "${BUILD_LIBRARY_TYPE_DESCR}" FORCE)
+  OCCT_set_cache_variable (BUILD_LIBRARY_TYPE "Shared" STRING "${BUILD_LIBRARY_TYPE_DESCR}" FORCE)
+
   SET_PROPERTY(CACHE BUILD_LIBRARY_TYPE PROPERTY STRINGS Shared Static)
 endif()
 
@@ -26,7 +61,7 @@ if ("${BUILD_LIBRARY_TYPE}" STREQUAL "Shared")
   set (BUILD_SHARED_LIBS ON)
 
   if (NOT DEFINED BUILD_SHARED_LIBRARY_NAME_POSTFIX)
-    set (BUILD_SHARED_LIBRARY_NAME_POSTFIX "" CACHE STRING "${BUILD_SHARED_LIBRARY_NAME_POSTFIX_DESCR}" FORCE)
+    OCCT_set_cache_variable (BUILD_SHARED_LIBRARY_NAME_POSTFIX "" STRING "${BUILD_SHARED_LIBRARY_NAME_POSTFIX_DESCR}" FORCE)
   endif()
 else()
   unset (BUILD_SHARED_LIBS)
@@ -50,10 +85,14 @@ set_property (GLOBAL PROPERTY OCC_VERSION_MAJOR ${OCC_VERSION_MAJOR})
 set_property (GLOBAL PROPERTY OCC_VERSION_MINOR ${OCC_VERSION_MINOR})
 set_property (GLOBAL PROPERTY OCC_VERSION_MAINTENANCE ${OCC_VERSION_MAINTENANCE})
 
-set (INSTALL_TEST_CASES OFF CACHE BOOL "${INSTALL_TEST_CASES_DESCR}")
+if (NOT EXTERNAL_BUILD)
+  OCCT_set_cache_variable (INSTALL_TEST_CASES OFF BOOL "${INSTALL_TEST_CASES_DESCR}")
+else()
+  OCCT_set_cache_variable (INSTALL_TEST_CASES OFF INTERNAL FORCE)
+endif()
 
 # Regeneration of OCCT resource files
-set (BUILD_RESOURCES OFF CACHE BOOL "${BUILD_RESOURCES_DESCR}")
+OCCT_set_cache_variable (BUILD_RESOURCES OFF BOOL "${BUILD_RESOURCES_DESCR}")
 
 # single-configuration generator
 set (SINGLE_GENERATOR OFF)
@@ -64,13 +103,13 @@ endif()
 # a single-configuration generator like the Makefile generator defines CMAKE_BUILD_TYPE variable
 # check this variable and set if it's required
 if (DEFINED CMAKE_BUILD_TYPE AND NOT CMAKE_BUILD_TYPE) # single-configuration generator.
-  set (CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build, options are: None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel." FORCE)
+  OCCT_set_cache_variable (CMAKE_BUILD_TYPE "Release" STRING "Choose the type of build, options are: None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel." FORCE)
 endif()
 
 # enable extended messages of many OCCT algorithms
 if (((SINGLE_GENERATOR AND "${CMAKE_BUILD_TYPE}" STREQUAL "Debug") OR NOT SINGLE_GENERATOR) AND (NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore"))
   if (NOT BUILD_WITH_DEBUG)
-    set (BUILD_WITH_DEBUG OFF CACHE BOOL "${BUILD_WITH_DEBUG_DESCR}")
+    OCCT_set_cache_variable (BUILD_WITH_DEBUG OFF BOOL "${BUILD_WITH_DEBUG_DESCR}")
   endif()
 else()
   OCCT_CHECK_AND_UNSET (BUILD_WITH_DEBUG)
@@ -81,7 +120,7 @@ if (BUILD_WITH_DEBUG)
 endif()
 
 # copy samples to install directory
-set (INSTALL_SAMPLES OFF CACHE BOOL "${INSTALL_SAMPLES_DESCR}")
+OCCT_set_cache_variable (INSTALL_SAMPLES OFF BOOL "${INSTALL_SAMPLES_DESCR}")
 
 # install dir of the project
 if (NOT DEFINED INSTALL_DIR)
@@ -89,27 +128,27 @@ if (NOT DEFINED INSTALL_DIR)
   if (WIN32 AND NOT DEFINED CMAKE_INSTALL_PREFIX)
     set (CMAKE_INSTALL_PREFIX "C:/opencascade-${OCC_VERSION_STRING_EXT}")
   endif()
-  set (INSTALL_DIR "${CMAKE_INSTALL_PREFIX}" CACHE PATH "${INSTALL_DIR_DESCR}")
+  OCCT_set_cache_variable (INSTALL_DIR "${CMAKE_INSTALL_PREFIX}" PATH "${INSTALL_DIR_DESCR}")
 else()
   file (TO_CMAKE_PATH "${INSTALL_DIR}" INSTALL_DIR)
-  set (INSTALL_DIR "${INSTALL_DIR}" CACHE PATH "${INSTALL_DIR_DESCR}" FORCE)
+  OCCT_set_cache_variable (INSTALL_DIR "${INSTALL_DIR}" PATH "${INSTALL_DIR_DESCR}" FORCE)
 endif()
 
 # choose a variant of the layout of the install paths
 if (NOT INSTALL_DIR_LAYOUT)
   if (WIN32)
-    set (INSTALL_DIR_LAYOUT "Windows" CACHE STRING "${INSTALL_DIR_LAYOUT_DESCR}" FORCE)
+    OCCT_set_cache_variable (INSTALL_DIR_LAYOUT "Windows" STRING "${INSTALL_DIR_LAYOUT_DESCR}" FORCE)
   else()
-    set (INSTALL_DIR_LAYOUT "Unix" CACHE STRING "${INSTALL_DIR_LAYOUT_DESCR}" FORCE)
+    OCCT_set_cache_variable (INSTALL_DIR_LAYOUT "Unix" STRING "${INSTALL_DIR_LAYOUT_DESCR}" FORCE)
   endif()
   SET_PROPERTY(CACHE INSTALL_DIR_LAYOUT PROPERTY STRINGS Windows Unix)
 endif()
 
 # check INSTALL_DIR_LAYOUT changes and update INSTALL_DIR_* paths if necessary
 if (NOT DEFINED INSTALL_DIR_LAYOUT_PREV)
-  set (INSTALL_DIR_LAYOUT_PREV "${INSTALL_DIR_LAYOUT}" CACHE INTERNAL "" FORCE)
+  OCCT_set_cache_variable (INSTALL_DIR_LAYOUT_PREV "${INSTALL_DIR_LAYOUT}" INTERNAL "" FORCE)
 elseif (NOT "${INSTALL_DIR_LAYOUT_PREV}" STREQUAL "${INSTALL_DIR_LAYOUT}")
-  set (INSTALL_DIR_LAYOUT_PREV "${INSTALL_DIR_LAYOUT}" CACHE INTERNAL "" FORCE)
+  OCCT_set_cache_variable (INSTALL_DIR_LAYOUT_PREV "${INSTALL_DIR_LAYOUT}" INTERNAL "" FORCE)
   # The structure of install folder should be reset due to changed layout
   OCCT_CHECK_AND_UNSET_INSTALL_DIR_SUBDIRS ()
 
@@ -118,49 +157,49 @@ elseif (NOT "${INSTALL_DIR_LAYOUT_PREV}" STREQUAL "${INSTALL_DIR_LAYOUT}")
     OCCT_CHECK_AND_UNSET (INSTALL_DIR_WITH_VERSION)
   else()
     if (NOT DEFINED INSTALL_DIR_WITH_VERSION)
-      set (INSTALL_DIR_WITH_VERSION OFF CACHE BOOL "${INSTALL_DIR_WITH_VERSION_DESCR}")
+      OCCT_set_cache_variable (INSTALL_DIR_WITH_VERSION OFF BOOL "${INSTALL_DIR_WITH_VERSION_DESCR}")
     endif()
   endif()
 endif()
 
 # check CMAKE_INSTALL_PREFIX changes and update INSTALL_DIR if necessary
 if (NOT DEFINED CMAKE_INSTALL_PREFIX_PREV)
-  set (CMAKE_INSTALL_PREFIX_PREV "${CMAKE_INSTALL_PREFIX}" CACHE INTERNAL "" FORCE)
+  OCCT_set_cache_variable (CMAKE_INSTALL_PREFIX_PREV "${CMAKE_INSTALL_PREFIX}" INTERNAL "" FORCE)
 elseif (NOT "${CMAKE_INSTALL_PREFIX_PREV}" STREQUAL "${CMAKE_INSTALL_PREFIX}")
   # CMAKE_INSTALL_PREFIX has been changed at previous step
-  set (CMAKE_INSTALL_PREFIX_PREV "${CMAKE_INSTALL_PREFIX}" CACHE INTERNAL "" FORCE)
+  OCCT_set_cache_variable (CMAKE_INSTALL_PREFIX_PREV "${CMAKE_INSTALL_PREFIX}" INTERNAL "" FORCE)
   
   # INSTALL_DIR is required to be updated
-  set (INSTALL_DIR "${CMAKE_INSTALL_PREFIX}" CACHE PATH "${INSTALL_DIR_DESCR}" FORCE)
+  OCCT_set_cache_variable (INSTALL_DIR "${CMAKE_INSTALL_PREFIX}" PATH "${INSTALL_DIR_DESCR}" FORCE)
 endif()
 
 # check INSTALL_DIR changes and update CMAKE_INSTALL_PREFIX if necessary
 if (NOT DEFINED INSTALL_DIR_PREV)
-  set (INSTALL_DIR_PREV "${INSTALL_DIR}" CACHE INTERNAL "" FORCE)
+  OCCT_set_cache_variable (INSTALL_DIR_PREV "${INSTALL_DIR}" INTERNAL "" FORCE)
 elseif (NOT "${INSTALL_DIR_PREV}" STREQUAL "${INSTALL_DIR}")
   # INSTALL_DIR has been changed at previous step
-  set (INSTALL_DIR_PREV "${INSTALL_DIR}" CACHE INTERNAL "" FORCE)
+  OCCT_set_cache_variable (INSTALL_DIR_PREV "${INSTALL_DIR}" INTERNAL "" FORCE)
 
   # sync CMAKE_INSTALL_PREFIX with INSTALL_DIR 
-  set (CMAKE_INSTALL_PREFIX "${INSTALL_DIR}" CACHE INTERNAL "" FORCE)
+  OCCT_set_cache_variable (CMAKE_INSTALL_PREFIX "${INSTALL_DIR}" INTERNAL "" FORCE)
 
   # set CMAKE_INSTALL_PREFIX_PREV to avoid the reset of structure of the install folder 
-  set (CMAKE_INSTALL_PREFIX_PREV "${INSTALL_DIR}" CACHE INTERNAL "" FORCE)
+  OCCT_set_cache_variable (CMAKE_INSTALL_PREFIX_PREV "${INSTALL_DIR}" INTERNAL "" FORCE)
 endif()
 
 if ("${INSTALL_DIR_LAYOUT}" STREQUAL "Unix")
   if (NOT DEFINED INSTALL_DIR_WITH_VERSION_PREV)
-    set (INSTALL_DIR_WITH_VERSION_PREV "${INSTALL_DIR_WITH_VERSION}" CACHE INTERNAL "" FORCE)
+    OCCT_set_cache_variable (INSTALL_DIR_WITH_VERSION_PREV "${INSTALL_DIR_WITH_VERSION}" INTERNAL "" FORCE)
   elseif (NOT "${INSTALL_DIR_WITH_VERSION_PREV}" STREQUAL "${INSTALL_DIR_WITH_VERSION}")
     # INSTALL_DIR_WITH_VERSION has been changed at previous step
-    set (INSTALL_DIR_WITH_VERSION_PREV "${INSTALL_DIR_WITH_VERSION}" CACHE INTERNAL "" FORCE)
+    OCCT_set_cache_variable (INSTALL_DIR_WITH_VERSION_PREV "${INSTALL_DIR_WITH_VERSION}" INTERNAL "" FORCE)
 
     OCCT_CHECK_AND_UNSET_INSTALL_DIR_SUBDIRS ()
   endif()
 endif()
 
 # hide CMAKE_INSTALL_PREFIX from a user
-set (CMAKE_INSTALL_PREFIX "${INSTALL_DIR}" CACHE INTERNAL "" FORCE)
+OCCT_set_cache_variable (CMAKE_INSTALL_PREFIX "${INSTALL_DIR}" INTERNAL "" FORCE)
 
 set (BIN_LETTER "")
 if ("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
@@ -177,27 +216,27 @@ OCCT_MAKE_COMPILER_SHORT_NAME()
 # Leave library structure for win: <prefix>/win64/vc10/bin(d)
 if (NOT DEFINED INSTALL_DIR_BIN)
   if ("${INSTALL_DIR_LAYOUT}" STREQUAL "Unix")
-    set (INSTALL_DIR_BIN "bin" CACHE PATH "${INSTALL_DIR_BIN_DESCR}")
+    OCCT_set_cache_variable (INSTALL_DIR_BIN "bin" PATH "${INSTALL_DIR_BIN_DESCR}")
   else()
-    set (INSTALL_DIR_BIN "${OS_WITH_BIT}/${COMPILER}/bin" CACHE PATH "${INSTALL_DIR_BIN_DESCR}")
+    OCCT_set_cache_variable (INSTALL_DIR_BIN "${OS_WITH_BIT}/${COMPILER}/bin" PATH "${INSTALL_DIR_BIN_DESCR}")
   endif()
 endif()
 
 # define folder contaning all shell/batch scripts
 if (NOT DEFINED INSTALL_DIR_SCRIPT)
   if ("${INSTALL_DIR_LAYOUT}" STREQUAL "Unix")
-    set (INSTALL_DIR_SCRIPT "${INSTALL_DIR_BIN}" CACHE PATH "${INSTALL_DIR_SCRIPT_DESCR}")
+    OCCT_set_cache_variable (INSTALL_DIR_SCRIPT "${INSTALL_DIR_BIN}" PATH "${INSTALL_DIR_SCRIPT_DESCR}")
   else()
-    set (INSTALL_DIR_SCRIPT "." CACHE PATH "${INSTALL_DIR_SCRIPT_DESCR}")
+    OCCT_set_cache_variable (INSTALL_DIR_SCRIPT "." PATH "${INSTALL_DIR_SCRIPT_DESCR}")
   endif()
 endif()
 
 # place the libraries to <prefix>/lib folder for unix and leave old structure for windows
 if (NOT DEFINED INSTALL_DIR_LIB)
   if ("${INSTALL_DIR_LAYOUT}" STREQUAL "Unix")
-    set (INSTALL_DIR_LIB "lib" CACHE PATH "${INSTALL_DIR_LIB_DESCR}")
+    OCCT_set_cache_variable (INSTALL_DIR_LIB "lib" PATH "${INSTALL_DIR_LIB_DESCR}")
   else()
-    set (INSTALL_DIR_LIB "${OS_WITH_BIT}/${COMPILER}/lib" CACHE PATH "${INSTALL_DIR_LIB_DESCR}")
+    OCCT_set_cache_variable (INSTALL_DIR_LIB "${OS_WITH_BIT}/${COMPILER}/lib" PATH "${INSTALL_DIR_LIB_DESCR}")
   endif()
 endif()
 
@@ -205,12 +244,12 @@ endif()
 #               <prefix>/include/opencascade-7.0.0 for unix
 if (NOT DEFINED INSTALL_DIR_INCLUDE)
   if ("${INSTALL_DIR_LAYOUT}" STREQUAL "Unix")
-    set (INSTALL_DIR_INCLUDE "include/opencascade" CACHE PATH "${INSTALL_DIR_INCLUDE_DESCR}")
+    OCCT_set_cache_variable (INSTALL_DIR_INCLUDE "include/opencascade" PATH "${INSTALL_DIR_INCLUDE_DESCR}")
     if (INSTALL_DIR_WITH_VERSION)
-      set (INSTALL_DIR_INCLUDE "include/opencascade-${OCC_VERSION_STRING_EXT}" CACHE PATH "${INSTALL_DIR_INCLUDE_DESCR}" FORCE)
+      OCCT_set_cache_variable (INSTALL_DIR_INCLUDE "include/opencascade-${OCC_VERSION_STRING_EXT}" PATH "${INSTALL_DIR_INCLUDE_DESCR}" FORCE)
     endif()
   else()
-    set (INSTALL_DIR_INCLUDE "inc" CACHE PATH "${INSTALL_DIR_INCLUDE_DESCR}")
+    OCCT_set_cache_variable (INSTALL_DIR_INCLUDE "inc" PATH "${INSTALL_DIR_INCLUDE_DESCR}")
   endif()
 endif()
 
@@ -218,60 +257,60 @@ endif()
 #                 <prefix>/share/opencascade-7.0.0/resources for unix
 if (NOT DEFINED INSTALL_DIR_RESOURCE)
   if ("${INSTALL_DIR_LAYOUT}" STREQUAL "Unix")
-    set (INSTALL_DIR_RESOURCE "share/opencascade/resources" CACHE PATH "${INSTALL_DIR_RESOURCE_DESCR}")
+    OCCT_set_cache_variable (INSTALL_DIR_RESOURCE "share/opencascade/resources" PATH "${INSTALL_DIR_RESOURCE_DESCR}")
     if (INSTALL_DIR_WITH_VERSION)
-      set (INSTALL_DIR_RESOURCE "share/opencascade-${OCC_VERSION_STRING_EXT}/resources" CACHE PATH "${INSTALL_DIR_RESOURCE_DESCR}" FORCE)
+      OCCT_set_cache_variable (INSTALL_DIR_RESOURCE "share/opencascade-${OCC_VERSION_STRING_EXT}/resources" PATH "${INSTALL_DIR_RESOURCE_DESCR}" FORCE)
     endif()
   else()
-    set (INSTALL_DIR_RESOURCE "src" CACHE PATH "${INSTALL_DIR_RESOURCE_DESCR}")
+    OCCT_set_cache_variable (INSTALL_DIR_RESOURCE "src" PATH "${INSTALL_DIR_RESOURCE_DESCR}")
   endif()
 endif()
 
 # OCCT data
 if (NOT DEFINED INSTALL_DIR_DATA)
   if ("${INSTALL_DIR_LAYOUT}" STREQUAL "Unix")
-    set (INSTALL_DIR_DATA "share/opencascade/data" CACHE PATH "${INSTALL_DIR_DATA_DESCR}")
+    OCCT_set_cache_variable (INSTALL_DIR_DATA "share/opencascade/data" PATH "${INSTALL_DIR_DATA_DESCR}")
     if (INSTALL_DIR_WITH_VERSION)
-      set (INSTALL_DIR_DATA "share/opencascade-${OCC_VERSION_STRING_EXT}/data" CACHE PATH "${INSTALL_DIR_DATA_DESCR}" FORCE)
+      OCCT_set_cache_variable (INSTALL_DIR_DATA "share/opencascade-${OCC_VERSION_STRING_EXT}/data" PATH "${INSTALL_DIR_DATA_DESCR}" FORCE)
     endif()
   else()
-    set (INSTALL_DIR_DATA "data" CACHE PATH "${INSTALL_DIR_DATA_DESCR}")
+    OCCT_set_cache_variable (INSTALL_DIR_DATA "data" PATH "${INSTALL_DIR_DATA_DESCR}")
   endif()
 endif()
 
 # OCCT samples
 if (NOT DEFINED INSTALL_DIR_SAMPLES)
   if ("${INSTALL_DIR_LAYOUT}" STREQUAL "Unix")
-    set (INSTALL_DIR_SAMPLES "share/opencascade/samples" CACHE PATH "${INSTALL_DIR_SAMPLES_DESCR}")
+    OCCT_set_cache_variable (INSTALL_DIR_SAMPLES "share/opencascade/samples" PATH "${INSTALL_DIR_SAMPLES_DESCR}")
     if (INSTALL_DIR_WITH_VERSION)
-      set (INSTALL_DIR_SAMPLES "share/opencascade-${OCC_VERSION_STRING_EXT}/samples" CACHE PATH "${INSTALL_DIR_SAMPLES_DESCR}" FORCE)
+      OCCT_set_cache_variable (INSTALL_DIR_SAMPLES "share/opencascade-${OCC_VERSION_STRING_EXT}/samples" PATH "${INSTALL_DIR_SAMPLES_DESCR}" FORCE)
     endif()
   else()
-    set (INSTALL_DIR_SAMPLES "samples" CACHE PATH "${INSTALL_DIR_SAMPLES_DESCR}")
+    OCCT_set_cache_variable (INSTALL_DIR_SAMPLES "samples" PATH "${INSTALL_DIR_SAMPLES_DESCR}")
   endif()
 endif()
 
 # OCCT tests
 if (NOT DEFINED INSTALL_DIR_TESTS)
   if ("${INSTALL_DIR_LAYOUT}" STREQUAL "Unix")
-    set (INSTALL_DIR_TESTS "share/opencascade/tests" CACHE PATH "${INSTALL_DIR_TESTS_DESCR}")
+    OCCT_set_cache_variable (INSTALL_DIR_TESTS "share/opencascade/tests" PATH "${INSTALL_DIR_TESTS_DESCR}")
     if (INSTALL_DIR_WITH_VERSION)
-      set (INSTALL_DIR_TESTS "share/opencascade-${OCC_VERSION_STRING_EXT}/tests" CACHE PATH "${INSTALL_DIR_TESTS_DESCR}" FORCE)
+      OCCT_set_cache_variable (INSTALL_DIR_TESTS "share/opencascade-${OCC_VERSION_STRING_EXT}/tests" PATH "${INSTALL_DIR_TESTS_DESCR}" FORCE)
     endif()
   else()
-    set (INSTALL_DIR_TESTS "tests" CACHE PATH "${INSTALL_DIR_TESTS_DESCR}")
+    OCCT_set_cache_variable (INSTALL_DIR_TESTS "tests" PATH "${INSTALL_DIR_TESTS_DESCR}")
   endif()
 endif()
 
 # OCCT doc
 if (NOT DEFINED INSTALL_DIR_DOC)
   if ("${INSTALL_DIR_LAYOUT}" STREQUAL "Unix")
-    set (INSTALL_DIR_DOC "share/doc/opencascade" CACHE PATH "${INSTALL_DIR_DOC_DESCR}")
+    OCCT_set_cache_variable (INSTALL_DIR_DOC "share/doc/opencascade" PATH "${INSTALL_DIR_DOC_DESCR}")
     if (INSTALL_DIR_WITH_VERSION)
-      set (INSTALL_DIR_DOC "share/doc/opencascade-${OCC_VERSION_STRING_EXT}" CACHE PATH "${INSTALL_DIR_DOC_DESCR}" FORCE)
+      OCCT_set_cache_variable (INSTALL_DIR_DOC "share/doc/opencascade-${OCC_VERSION_STRING_EXT}" PATH "${INSTALL_DIR_DOC_DESCR}" FORCE)
     endif()
   else()
-    set (INSTALL_DIR_DOC "doc" CACHE PATH "${INSTALL_DIR_DOC_DESCR}")
+    OCCT_set_cache_variable (INSTALL_DIR_DOC "doc" PATH "${INSTALL_DIR_DOC_DESCR}")
   endif()
 endif()
 
@@ -279,25 +318,28 @@ endif()
 if (NOT DEFINED INSTALL_DIR_CMAKE)
   if ("${INSTALL_DIR_LAYOUT}" STREQUAL "Unix")
     if (INSTALL_DIR_WITH_VERSION)
-      set (INSTALL_DIR_CMAKE "lib/cmake/opencascade-${OCC_VERSION_STRING_EXT}" CACHE PATH "${INSTALL_DIR_CMAKE_DESCR}")
+      OCCT_set_cache_variable (INSTALL_DIR_CMAKE "lib/cmake/opencascade-${OCC_VERSION_STRING_EXT}" PATH "${INSTALL_DIR_CMAKE_DESCR}")
     else()
-      set (INSTALL_DIR_CMAKE "lib/cmake/opencascade" CACHE PATH "${INSTALL_DIR_CMAKE_DESCR}")
+      OCCT_set_cache_variable (INSTALL_DIR_CMAKE "lib/cmake/opencascade" PATH "${INSTALL_DIR_CMAKE_DESCR}")
     endif()
   else()
-    set (INSTALL_DIR_CMAKE "cmake" CACHE PATH "${INSTALL_DIR_CMAKE_DESCR}")
+    OCCT_set_cache_variable (INSTALL_DIR_CMAKE "cmake" PATH "${INSTALL_DIR_CMAKE_DESCR}")
   endif()
 endif()
 
+
 # include occt macros
 OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/occt_resources")
 
-# install LICENSE_LGPL_21.txt and OCCT_LGPL_EXCEPTION.txt files
-if ("${INSTALL_DIR_LAYOUT}" STREQUAL "Unix")
-  OCCT_INSTALL_FILE_OR_DIR ("LICENSE_LGPL_21.txt" "${INSTALL_DIR_DOC}")
-  OCCT_INSTALL_FILE_OR_DIR ("OCCT_LGPL_EXCEPTION.txt" "${INSTALL_DIR_DOC}")
-else()
-  OCCT_INSTALL_FILE_OR_DIR ("LICENSE_LGPL_21.txt" ".")
-  OCCT_INSTALL_FILE_OR_DIR ("OCCT_LGPL_EXCEPTION.txt" ".")
+if (NOT EXTERNAL_BUILD)
+  # install LICENSE_LGPL_21.txt and OCCT_LGPL_EXCEPTION.txt files
+  if ("${INSTALL_DIR_LAYOUT}" STREQUAL "Unix")
+    OCCT_INSTALL_FILE_OR_DIR ("LICENSE_LGPL_21.txt" "${INSTALL_DIR_DOC}")
+    OCCT_INSTALL_FILE_OR_DIR ("OCCT_LGPL_EXCEPTION.txt" "${INSTALL_DIR_DOC}")
+  else()
+    OCCT_INSTALL_FILE_OR_DIR ("LICENSE_LGPL_21.txt" ".")
+    OCCT_INSTALL_FILE_OR_DIR ("OCCT_LGPL_EXCEPTION.txt" ".")
+  endif()
 endif()
 
 if(APPLE)
@@ -305,14 +347,14 @@ if(APPLE)
 endif()
 
 # a directory recognized as a 'patch' for OCCT
-set (BUILD_PATCH "" CACHE PATH "${BUILD_PATCH_DESCR}")
+OCCT_set_cache_variable (BUILD_PATCH "" PATH "${BUILD_PATCH_DESCR}")
 
 # the list of being built toolkits
-set (BUILD_ADDITIONAL_TOOLKITS "" CACHE STRING "${BUILD_ADDITIONAL_TOOLKITS_DESCR}")
+OCCT_set_cache_variable (BUILD_ADDITIONAL_TOOLKITS "" STRING "${BUILD_ADDITIONAL_TOOLKITS_DESCR}")
 separate_arguments (BUILD_ADDITIONAL_TOOLKITS)
 
 if (MSVC)
-  set (BUILD_MODULE_MfcSamples OFF CACHE BOOL "${BUILD_MODULE_MfcSamples_DESCR}")
+  OCCT_set_cache_variable (BUILD_MODULE_MfcSamples OFF BOOL "${BUILD_MODULE_MfcSamples_DESCR}")
 endif()
 
 # uwp sample
@@ -326,11 +368,11 @@ endif()
 
 # whether use optional 3rdparty or not
 if (APPLE)
-  set (USE_GLX OFF CACHE BOOL "${USE_GLX_DESCR}")
+  OCCT_set_cache_variable (USE_GLX OFF BOOL "${USE_GLX_DESCR}")
 endif()
 
 if (WIN32)
-  set (USE_D3D OFF CACHE BOOL "${USE_D3D_DESCR}")
+  OCCT_set_cache_variable (USE_D3D OFF BOOL "${USE_D3D_DESCR}")
 endif()
 
 # include the patched or original list of modules
@@ -344,15 +386,15 @@ endforeach()
 
 if (ANDROID AND BUILD_MODULE_Draw)
   message (STATUS "Info. Draw module is turned off due to it is not supported on Android")
-  set (BUILD_MODULE_Draw OFF CACHE BOOL "${BUILD_MODULE_Draw_DESCR}" FORCE)
+  OCCT_set_cache_variable (BUILD_MODULE_Draw OFF BOOL "${BUILD_MODULE_Draw_DESCR}" FORCE)
 endif()
 if ("${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore" AND BUILD_MODULE_Draw)
   message (STATUS "Info. Draw module is turned off due to it is not supported on UWP")
-  set (BUILD_MODULE_Draw OFF CACHE BOOL "${BUILD_MODULE_Draw_DESCR}" FORCE)
+  OCCT_set_cache_variable (BUILD_MODULE_Draw OFF BOOL "${BUILD_MODULE_Draw_DESCR}" FORCE)
 endif()
 
 # Overview
-if (NOT DEFINED BUILD_DOC_Overview)
+if (NOT EXTERNAL_BUILD AND NOT DEFINED BUILD_DOC_Overview)
   set (DO_ONLY_CHECK_FOR_DOXYGEN ON)
   OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/doxygen")
   set (DO_ONLY_CHECK_FOR_DOXYGEN OFF)
@@ -361,7 +403,7 @@ if (NOT DEFINED BUILD_DOC_Overview)
     message (STATUS "Info. Overview building is turned on")
   endif()
 
-  set (BUILD_DOC_Overview ${CAN_DOXYGEN_BE_USED} CACHE BOOL "${BUILD_DOC_Overview_DESCR}")
+  OCCT_set_cache_variable (BUILD_DOC_Overview ${CAN_DOXYGEN_BE_USED} BOOL "${BUILD_DOC_Overview_DESCR}")
 endif()
 
 if (NOT USE_D3D)
@@ -407,7 +449,7 @@ endif()
 
 if (NOT CAN_USE_VTK EQUAL -1)
   if (NOT DEFINED USE_VTK)
-    set (USE_VTK OFF CACHE BOOL "${USE_VTK_DESCR}")
+    OCCT_set_cache_variable (USE_VTK OFF BOOL "${USE_VTK_DESCR}")
   endif()
 else()
   OCCT_CHECK_AND_UNSET (USE_VTK)
@@ -418,17 +460,17 @@ list (FIND BUILD_TOOLKITS TKMath   CAN_REBUILD_PDC_FOR_TKMATH)
 list (FIND BUILD_TOOLKITS StepFile CAN_REBUILD_PDC_FOR_STEPFILE)
 
 if (NOT ${CAN_REBUILD_PDC_FOR_TKMATH} EQUAL -1 OR NOT ${CAN_REBUILD_PDC_FOR_STEPFILE} EQUAL -1)
-  set (BUILD_YACCLEX OFF CACHE BOOL "${BUILD_YACCLEX_DESCR}")
+  OCCT_set_cache_variable (BUILD_YACCLEX OFF BOOL "${BUILD_YACCLEX_DESCR}")
 else()
   OCCT_CHECK_AND_UNSET (BUILD_YACCLEX)
 endif()
 
 if (NOT DEFINED 3RDPARTY_DIR)
-  set (3RDPARTY_DIR "" CACHE PATH ${3RDPARTY_DIR_DESCR})
+  OCCT_set_cache_variable (3RDPARTY_DIR "" PATH ${3RDPARTY_DIR_DESCR})
   get_filename_component (3RDPARTY_DIR "${3RDPARTY_DIR}" ABSOLUTE)
 else()
   file (TO_CMAKE_PATH "${3RDPARTY_DIR}" 3RDPARTY_DIR)
-  set (3RDPARTY_DIR "${3RDPARTY_DIR}" CACHE PATH "${3RDPARTY_DIR_DESCR}" FORCE)
+  OCCT_set_cache_variable (3RDPARTY_DIR "${3RDPARTY_DIR}" PATH "${3RDPARTY_DIR_DESCR}" FORCE)
 endif()
 
 # search for CSF_TclLibs variable in EXTERNLIB of each being used toolkit
@@ -495,7 +537,7 @@ endif()
 OCCT_IS_PRODUCT_REQUIRED (CSF_FreeImagePlus CAN_USE_FREEIMAGE)
 
 if (CAN_USE_FREEIMAGE)
-  set (USE_FREEIMAGE OFF CACHE BOOL "${USE_FREEIMAGE_DESCR}")
+  OCCT_set_cache_variable (USE_FREEIMAGE OFF BOOL "${USE_FREEIMAGE_DESCR}")
 
   if (USE_FREEIMAGE)
     add_definitions (-DHAVE_FREEIMAGE)
@@ -544,7 +586,7 @@ endif()
 OCCT_IS_PRODUCT_REQUIRED (CSF_GL2PS CAN_USE_GL2PS)
 
 if (NOT DEFINED ANDROID AND CAN_USE_GL2PS)
-  set (USE_GL2PS OFF CACHE BOOL "${USE_GL2PS_DESCR}")
+  OCCT_set_cache_variable (USE_GL2PS OFF BOOL "${USE_GL2PS_DESCR}")
 
   if (USE_GL2PS)
     add_definitions (-DHAVE_GL2PS)
@@ -565,7 +607,7 @@ endif()
 OCCT_IS_PRODUCT_REQUIRED (CSF_TBB CAN_USE_TBB)
 
 if (NOT DEFINED ANDROID AND CAN_USE_TBB)
-  set (USE_TBB OFF CACHE BOOL "${USE_TBB_DESCR}")
+  OCCT_set_cache_variable (USE_TBB OFF BOOL "${USE_TBB_DESCR}")
 
   if (USE_TBB)
     add_definitions (-DHAVE_TBB)
@@ -586,11 +628,11 @@ endif()
 # Doxygen
 if (BUILD_DOC_Overview)
   if (NOT DEFINED INSTALL_DOC_Overview)
-    set (INSTALL_DOC_Overview OFF CACHE BOOL "${INSTALL_DOC_Overview_DESCR}")
+    OCCT_set_cache_variable (INSTALL_DOC_Overview OFF BOOL "${INSTALL_DOC_Overview_DESCR}")
   endif()
 
-  if (INSTALL_DOC_Overview)
-    install (DIRECTORY "${CMAKE_BINARY_DIR}/doc/overview" DESTINATION  "${INSTALL_DIR_DOC}")
+  if (NOT EXTERNAL_BUILD AND INSTALL_DOC_Overview)
+    install (DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/doc/overview" DESTINATION  "${INSTALL_DIR_DOC}")
 
     # create overview.html only for windows
     if (WIN32 AND "${INSTALL_DIR_LAYOUT}" STREQUAL "Windows")
@@ -635,7 +677,7 @@ if (3RDPARTY_INCLUDE_DIRS)
 endif()
 
 # include <cmake binary folder>/inc
-include_directories (${CMAKE_BINARY_DIR}/inc)
+include_directories (${CMAKE_CURRENT_BINARY_DIR}/inc)
 
 if (3RDPARTY_LIBRARY_DIRS AND BUILD_SHARED_LIBS)
   list (REMOVE_DUPLICATES 3RDPARTY_LIBRARY_DIRS)
@@ -646,43 +688,43 @@ endif()
 
 # build directories
 if (SINGLE_GENERATOR)
-  set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/lib${BIN_LETTER}")
-  set (CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bin${BIN_LETTER}")
-  set (CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/lib${BIN_LETTER}")
+  set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/lib${BIN_LETTER}")
+  set (CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bin${BIN_LETTER}")
+  set (CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/lib${BIN_LETTER}")
   if (WIN32)
-    set (CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bin${BIN_LETTER}")
+    set (CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bin${BIN_LETTER}")
   endif()
 endif()
 
-set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/lib")
-set (CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bin")
-set (CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/lib")
+set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE "${CMAKE_CURRENT_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/lib")
+set (CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_CURRENT_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bin")
+set (CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE "${CMAKE_CURRENT_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/lib")
 
-set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/libi")
-set (CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bini")
-set (CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/libi")
+set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_CURRENT_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/libi")
+set (CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_CURRENT_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bini")
+set (CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_CURRENT_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/libi")
 
-set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/libd")
-set (CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bind")
-set (CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/libd")
+set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG "${CMAKE_CURRENT_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/libd")
+set (CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_CURRENT_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bind")
+set (CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG "${CMAKE_CURRENT_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/libd")
 
 if (WIN32) 
-  set (CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE        "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bin")
-  set (CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bini")
-  set (CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG          "${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bind")
+  set (CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE        "${CMAKE_CURRENT_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bin")
+  set (CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_CURRENT_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bini")
+  set (CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG          "${CMAKE_CURRENT_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bind")
 endif()
 
 string(TIMESTAMP CURRENT_TIME "%H:%M:%S")
-message (STATUS "\nInfo: \(${CURRENT_TIME}\) Start collecting all OCCT header files into ${CMAKE_BINARY_DIR}/inc ...")
+message (STATUS "\nInfo: \(${CURRENT_TIME}\) Start collecting all OCCT header files into ${CMAKE_CURRENT_BINARY_DIR}/inc ...")
 
 # collect all the headers to <binary dir>/inc folder
-COLLECT_AND_INSTALL_OCCT_HEADER_FILES ("${CMAKE_BINARY_DIR}" "${BUILD_TOOLKITS}")
+COLLECT_AND_INSTALL_OCCT_HEADER_FILES ("${CMAKE_CURRENT_BINARY_DIR}" "${BUILD_TOOLKITS}")
 
 string(TIMESTAMP CURRENT_TIME "%H:%M:%S")
 message (STATUS "Info: \(${CURRENT_TIME}\) End the collecting")
 
 list (FIND BUILD_TOOLKITS DRAWEXE DRAWEXE_INDEX)
-if (${DRAWEXE_INDEX} GREATER -1)
+if (NOT EXTERNAL_BUILD AND ${DRAWEXE_INDEX} GREATER -1)
   OCCT_INSTALL_FILE_OR_DIR ("data/" "${INSTALL_DIR_DATA}")
   OCCT_INSTALL_FILE_OR_DIR ("samples/tcl" "${INSTALL_DIR_SAMPLES}")
 endif()
@@ -700,7 +742,7 @@ if(NOT IS_ABSOLUTE "${INSTALL_DIR_ABSOLUTE}")
   get_filename_component(INSTALL_DIR_ABSOLUTE "${CMAKE_BINARY_DIR}/${INSTALL_DIR}" ABSOLUTE)
 endif()
 
-if (INSTALL_SAMPLES)
+if (NOT EXTERNAL_BUILD AND INSTALL_SAMPLES)
   OCCT_CONFIGURE ("adm/templates/env.samples.${SCRIPT_EXT}.in" "env.samples.${SCRIPT_EXT}")
   if (WIN32)
     OCCT_INSTALL_FILE_OR_DIR ("samples/CSharp" "${INSTALL_DIR_SAMPLES}")
@@ -709,26 +751,26 @@ if (INSTALL_SAMPLES)
     if ("${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore")
       OCCT_INSTALL_FILE_OR_DIR ("samples/xaml" "${INSTALL_DIR_SAMPLES}")
     endif()
-
-    install (FILES "${CMAKE_BINARY_DIR}/env.samples.${SCRIPT_EXT}" DESTINATION "${INSTALL_DIR_SAMPLES}/CSharp" RENAME "env.${SCRIPT_EXT}")
-    install (FILES "${CMAKE_BINARY_DIR}/env.samples.${SCRIPT_EXT}" DESTINATION "${INSTALL_DIR_SAMPLES}/mfc/standard" RENAME "env.${SCRIPT_EXT}")
   endif()
 
+  install (FILES "${CMAKE_CURRENT_BINARY_DIR}/env.samples.${SCRIPT_EXT}" DESTINATION "${INSTALL_DIR_SAMPLES}/CSharp" RENAME "env.${SCRIPT_EXT}")
+  install (FILES "${CMAKE_CURRENT_BINARY_DIR}/env.samples.${SCRIPT_EXT}" DESTINATION "${INSTALL_DIR_SAMPLES}/mfc/standard" RENAME "env.${SCRIPT_EXT}")
   OCCT_INSTALL_FILE_OR_DIR ("samples/java" "${INSTALL_DIR_SAMPLES}")
   OCCT_INSTALL_FILE_OR_DIR ("samples/ocafsamples" "${INSTALL_DIR_SAMPLES}")
   OCCT_INSTALL_FILE_OR_DIR ("samples/qt" "${INSTALL_DIR_SAMPLES}")
 
-  install (FILES "${CMAKE_BINARY_DIR}/env.samples.${SCRIPT_EXT}" DESTINATION "${INSTALL_DIR_SAMPLES}/qt/FuncDemo" RENAME "env.${SCRIPT_EXT}")
-  install (FILES "${CMAKE_BINARY_DIR}/env.samples.${SCRIPT_EXT}" DESTINATION "${INSTALL_DIR_SAMPLES}/qt/IESample" RENAME "env.${SCRIPT_EXT}")
-  install (FILES "${CMAKE_BINARY_DIR}/env.samples.${SCRIPT_EXT}" DESTINATION "${INSTALL_DIR_SAMPLES}/qt/Tutorial" RENAME "env.${SCRIPT_EXT}")
+  install (FILES "${CMAKE_CURRENT_BINARY_DIR}/env.samples.${SCRIPT_EXT}" DESTINATION "${INSTALL_DIR_SAMPLES}/qt/FuncDemo" RENAME "env.${SCRIPT_EXT}")
+  install (FILES "${CMAKE_CURRENT_BINARY_DIR}/env.samples.${SCRIPT_EXT}" DESTINATION "${INSTALL_DIR_SAMPLES}/qt/IESample" RENAME "env.${SCRIPT_EXT}")
+  install (FILES "${CMAKE_CURRENT_BINARY_DIR}/env.samples.${SCRIPT_EXT}" DESTINATION "${INSTALL_DIR_SAMPLES}/qt/Tutorial" RENAME "env.${SCRIPT_EXT}")
 endif()
 
-if (INSTALL_TEST_CASES)
+if (NOT EXTERNAL_BUILD AND INSTALL_TEST_CASES)
   OCCT_INSTALL_FILE_OR_DIR ("tests/" "${INSTALL_DIR_TESTS}")
 endif()
 
 list (FIND BUILD_TOOLKITS DRAWEXE DRAWEXE_INDEX)
-if (${DRAWEXE_INDEX} GREATER -1)
+
+if (NOT EXTERNAL_BUILD AND ${DRAWEXE_INDEX} GREATER -1)
   # copy data and samples/tcl folders to install script folder
   OCCT_INSTALL_FILE_OR_DIR ("data/" "${INSTALL_DIR_DATA}")
   OCCT_INSTALL_FILE_OR_DIR ("samples/tcl" "${INSTALL_DIR_SAMPLES}")
@@ -738,7 +780,7 @@ if (${DRAWEXE_INDEX} GREATER -1)
     install (FILES "${BUILD_PATCH}/adm/templates/draw.${SCRIPT_EXT}" DESTINATION  "${INSTALL_DIR_SCRIPT}"
             PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_WRITE GROUP_EXECUTE WORLD_READ WORLD_WRITE WORLD_EXECUTE)
   else()
-    install (FILES "${CMAKE_SOURCE_DIR}/adm/templates/draw.${SCRIPT_EXT}" DESTINATION  "${INSTALL_DIR_SCRIPT}"
+    install (FILES "${CMAKE_CURRENT_SOURCE_DIR}/adm/templates/draw.${SCRIPT_EXT}" DESTINATION  "${INSTALL_DIR_SCRIPT}"
             PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_WRITE GROUP_EXECUTE WORLD_READ WORLD_WRITE WORLD_EXECUTE)
   endif()
 
@@ -754,51 +796,55 @@ else()
   set (ADDITIONAL_CUSTOM_CONTENT "\nif [ -e \"\${aScriptPath}/${SUB_CUSTOM_NAME}\" ]; then\n  source \"\${aScriptPath}/${SUB_CUSTOM_NAME}\" \"\$1\" \"\$2\" \nfi")
 endif()
 
+if (NOT EXTERNAL_BUILD)
  # change custom.bat/sh
-if (EXISTS "${INSTALL_DIR}/${INSTALL_DIR_SCRIPT}/custom.${SCRIPT_EXT}")
-  file (READ "${INSTALL_DIR}/${INSTALL_DIR_SCRIPT}/custom.${SCRIPT_EXT}" CUSTOM_CONTENT)
+  if (EXISTS "${INSTALL_DIR}/${INSTALL_DIR_SCRIPT}/custom.${SCRIPT_EXT}")
+    file (READ "${INSTALL_DIR}/${INSTALL_DIR_SCRIPT}/custom.${SCRIPT_EXT}" CUSTOM_CONTENT)
 
-  set (CUSTOM_CONTENT "${CUSTOM_CONTENT} ${ADDITIONAL_CUSTOM_CONTENT}")
+    set (CUSTOM_CONTENT "${CUSTOM_CONTENT} ${ADDITIONAL_CUSTOM_CONTENT}")
 
-  file (WRITE "${INSTALL_DIR}/${INSTALL_DIR_SCRIPT}/custom.${SCRIPT_EXT}" "${CUSTOM_CONTENT}")
-else()
-  OCCT_CONFIGURE_AND_INSTALL ("adm/templates/custom.${SCRIPT_EXT}.main" "custom.${SCRIPT_EXT}" "custom.${SCRIPT_EXT}" "${INSTALL_DIR_SCRIPT}")
+    file (WRITE "${INSTALL_DIR}/${INSTALL_DIR_SCRIPT}/custom.${SCRIPT_EXT}" "${CUSTOM_CONTENT}")
+  else()
+    OCCT_CONFIGURE_AND_INSTALL ("adm/templates/custom.${SCRIPT_EXT}.main" "custom.${SCRIPT_EXT}" "custom.${SCRIPT_EXT}" "${INSTALL_DIR_SCRIPT}")
+  endif()
 endif()
 
 # write current custom.bat/sh (for install directory)
 set (SUB_CUSTOM_BUILD_NAME "custom_${COMPILER}_${COMPILER_BITNESS}.install.${SCRIPT_EXT}")
 OCCT_CONFIGURE_AND_INSTALL ("adm/templates/custom.install.${SCRIPT_EXT}.in" "${SUB_CUSTOM_BUILD_NAME}" "${SUB_CUSTOM_NAME}" "${INSTALL_DIR_SCRIPT}")
 
-# write current custom.bat/sh (for build directory)
-OCCT_CONFIGURE ("adm/templates/custom.build.${SCRIPT_EXT}.in" "${SUB_CUSTOM_NAME}")
+if (NOT EXTERNAL_BUILD AND BUILD_MODULE_MfcSamples)
+  OCCT_INSTALL_FILE_OR_DIR ("adm/templates/sample.bat" "${INSTALL_DIR}/${INSTALL_DIR_SCRIPT}")
+  OCCT_COPY_FILE_OR_DIR    ("adm/templates/sample.bat" "${CMAKE_CURRENT_BINARY_DIR}")
+endif()
 
-if (BUILD_MODULE_MfcSamples)
+if (NOT EXTERNAL_BUILD AND BUILD_MODULE_MfcSamples)
   OCCT_INSTALL_FILE_OR_DIR ("adm/templates/sample.bat" "${INSTALL_DIR_SCRIPT}")
-  OCCT_COPY_FILE_OR_DIR    ("adm/templates/sample.bat" "${CMAKE_BINARY_DIR}")
+  OCCT_COPY_FILE_OR_DIR    ("adm/templates/sample.bat" "${CMAKE_CURRENT_BINARY_DIR}")
 endif()
 
-# env script for draw in building environment
-OCCT_CONFIGURE ("adm/templates/env.${SCRIPT_EXT}.in" "env.${SCRIPT_EXT}")
 
 # install env script
-install (FILES "${CMAKE_BINARY_DIR}/env.${SCRIPT_EXT}" DESTINATION "${INSTALL_DIR_SCRIPT}")
+if (NOT EXTERNAL_BUILD)
+  install (FILES "${CMAKE_CURRENT_BINARY_DIR}/env.${SCRIPT_EXT}" DESTINATION "${INSTALL_DIR_SCRIPT}")
 
-# copy DrawAppliInit from OCCT source to build directory
-if (NOT EXISTS "${CMAKE_BINARY_DIR}/DrawAppliInit")
-  OCCT_COPY_FILE_OR_DIR (DrawAppliInit "${CMAKE_BINARY_DIR}")
-endif()
-
-# RESOURCES
-FILE_TO_LIST ("adm/RESOURCES" RESOURCES)
-foreach(RESOURCE ${RESOURCES})
-  get_filename_component(RESOURCE_FOLDER ${RESOURCE} DIRECTORY)
-  if(NOT "${RESOURCE_FOLDER}" STREQUAL "")
-    get_filename_component(RESOURCE_FOLDER ${RESOURCE_FOLDER} NAME)
-    OCCT_INSTALL_FILE_OR_DIR ("src/${RESOURCE}" "${INSTALL_DIR_RESOURCE}/${RESOURCE_FOLDER}")
-  else()
-    OCCT_INSTALL_FILE_OR_DIR ("src/${RESOURCE}" "${INSTALL_DIR_RESOURCE}")
+  # copy DrawAppliInit from OCCT source to build directory
+  if (NOT EXISTS "${CMAKE_BINARY_DIR}/DrawAppliInit")
+    OCCT_COPY_FILE_OR_DIR (DrawAppliInit "${CMAKE_BINARY_DIR}")
   endif()
-endforeach()
+
+  # RESOURCES
+  FILE_TO_LIST ("adm/RESOURCES" RESOURCES)
+  foreach(RESOURCE ${RESOURCES})
+    get_filename_component(RESOURCE_FOLDER ${RESOURCE} DIRECTORY)
+    if(NOT "${RESOURCE_FOLDER}" STREQUAL "")
+      get_filename_component(RESOURCE_FOLDER ${RESOURCE_FOLDER} NAME)
+      OCCT_INSTALL_FILE_OR_DIR ("src/${RESOURCE}" "${INSTALL_DIR_RESOURCE}/${RESOURCE_FOLDER}")
+    else()
+      OCCT_INSTALL_FILE_OR_DIR ("src/${RESOURCE}" "${INSTALL_DIR_RESOURCE}")
+    endif()
+  endforeach()
+endif()
 
 # patch installed DrawDefault file if BUILD_SHARED_LIBRARY_NAME_POSTFIX is changed
 if (NOT "${BUILD_SHARED_LIBRARY_NAME_POSTFIX}" STREQUAL "")
@@ -834,13 +880,13 @@ if (MSVC AND 3RDPARTY_DLL_DIRS)
       set (X_COMPILER_BITNESS "Win32")
     endif()
 
-    OCCT_CONFIGURE ("adm/templates/DRAWEXE.vcxproj.user.in" "${CMAKE_BINARY_DIR}/src/DRAWEXE/DRAWEXE.vcxproj.user")
+    OCCT_CONFIGURE ("adm/templates/DRAWEXE.vcxproj.user.in" "${CMAKE_CURRENT_BINARY_DIR}/src/DRAWEXE/DRAWEXE.vcxproj.user")
   endif()
 endif()
 
 # samples do not support patch usage
 if (BUILD_MODULE_MfcSamples)
-  set (OCCT_ROOT ${CMAKE_SOURCE_DIR})
+  set (OCCT_ROOT ${CURRENT_SOURCE_DIR})
 
   set (MFC_STANDARD_SAMPLES_DIR ${OCCT_ROOT}/samples/mfc/standard)
   set (COMMON_WINMAIN_FILE      ${MFC_STANDARD_SAMPLES_DIR}/Common/Winmain.cpp)
@@ -902,11 +948,14 @@ foreach (OCCT_CONFIGURATION ${CMAKE_CONFIGURATION_TYPES})
   endforeach()
   set (SET_OpenCASCADE_CMAKE_C_FLAGS "${CMAKE_C_FLAGS_${OCCT_CONFIGURATION_UPPER}}")
   set (SET_OpenCASCADE_CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS_${OCCT_CONFIGURATION_UPPER}}")
-  configure_file("${CMAKE_SOURCE_DIR}/adm/templates/OpenCASCADECompileDefinitionsAndFlags.cmake.in" "OpenCASCADECompileDefinitionsAndFlags-${OCCT_CONFIGURATION_LOWER}.cmake" @ONLY)
+  configure_file("${CMAKE_CURRENT_SOURCE_DIR}/adm/templates/OpenCASCADECompileDefinitionsAndFlags.cmake.in" "OpenCASCADECompileDefinitionsAndFlags-${OCCT_CONFIGURATION_LOWER}.cmake" @ONLY)
 endforeach()
+
 # install OpenCASCADE config file with compile definitions and C/C++ flags ONLY for current configuration
-install (CODE "string (TOLOWER \"\${CMAKE_INSTALL_CONFIG_NAME}\" CMAKE_INSTALL_CONFIG_NAME_LOWER)")
-install (CODE "configure_file(\"${CMAKE_BINARY_DIR}/OpenCASCADECompileDefinitionsAndFlags-\${CMAKE_INSTALL_CONFIG_NAME_LOWER}.cmake\" \"${INSTALL_DIR}/${INSTALL_DIR_CMAKE}/OpenCASCADECompileDefinitionsAndFlags-\${CMAKE_INSTALL_CONFIG_NAME_LOWER}.cmake\" COPYONLY)")
+if (NOT EXTERNAL_BUILD)
+  install (CODE "string (TOLOWER \"\${CMAKE_INSTALL_CONFIG_NAME}\" CMAKE_INSTALL_CONFIG_NAME_LOWER)")
+  install (CODE "configure_file(\"${CMAKE_BINARY_DIR}/OpenCASCADECompileDefinitionsAndFlags-\${CMAKE_INSTALL_CONFIG_NAME_LOWER}.cmake\" \"${INSTALL_DIR}/${INSTALL_DIR_CMAKE}/OpenCASCADECompileDefinitionsAndFlags-\${CMAKE_INSTALL_CONFIG_NAME_LOWER}.cmake\" COPYONLY)")
+endif()
 
 foreach (OCCT_MODULE ${OCCT_MODULES})
   if (BUILD_MODULE_${OCCT_MODULE})
@@ -922,11 +971,15 @@ endforeach()
 set (OCCT_MODULES_ENABLED ${OCCT_MODULES_ENABLED_SORTED})
 
 # Add all targets to the build-tree export set
-export (TARGETS ${OCCT_LIBRARIES} FILE "${CMAKE_BINARY_DIR}/OpenCASCADETargets.cmake")
+if (NOT EXTERNAL_BUILD)
+  export (TARGETS ${OCCT_LIBRARIES} FILE "${CMAKE_CURRENT_BINARY_DIR}/OpenCASCADETargets.cmake")
+endif()
 
 # Export the package for use from the build-tree
 # (this registers the build-tree with a global CMake-registry)
-export(PACKAGE OpenCASCADE)
+if (NOT EXTERNAL_BUILD)
+  export(PACKAGE OpenCASCADE)
+endif()
 
 if (CMAKE_BUILD_TYPE)
   set (SET_OpenCASCADE_BUILD_TYPE "set (OpenCASCADE_BUILD_TYPE        \"${CMAKE_BUILD_TYPE}\")")
@@ -950,23 +1003,25 @@ if (NOT SINGLE_GENERATOR)
 endif()
 
 # Configure and install cmake config file
-configure_file("${CMAKE_SOURCE_DIR}/adm/templates/OpenCASCADEConfig.cmake.in" "OpenCASCADEConfig.cmake" @ONLY)
-install(FILES "${CMAKE_BINARY_DIR}/OpenCASCADEConfig.cmake" DESTINATION  "${INSTALL_DIR_CMAKE}")
-
-# Configure cmake version file
-include(CMakePackageConfigHelpers)
-write_basic_package_version_file( ${CMAKE_BINARY_DIR}/OpenCASCADEConfigVersion.cmake
-                                  VERSION ${OCC_VERSION_MAJOR}.${OCC_VERSION_MINOR}.${OCC_VERSION_MAINTENANCE}
-                                  COMPATIBILITY ExactVersion )
-
-# Install cmake version file
-install (FILES "${CMAKE_BINARY_DIR}/OpenCASCADEConfigVersion.cmake" DESTINATION "${INSTALL_DIR_CMAKE}")
-
-# Install the export set for use with the install-tree for each configuration
-foreach (OCCT_MODULE ${OCCT_MODULES_ENABLED})
-  install(EXPORT OpenCASCADE${OCCT_MODULE}Targets DESTINATION "${INSTALL_DIR_CMAKE}")
-endforeach()
+if (NOT EXTERNAL_BUILD)
+  configure_file("${CMAKE_CURRENT_SOURCE_DIR}/adm/templates/OpenCASCADEConfig.cmake.in" "OpenCASCADEConfig.cmake" @ONLY)
+  install(FILES "${CMAKE_CURRENT_BINARY_DIR}/OpenCASCADEConfig.cmake" DESTINATION  "${INSTALL_DIR_CMAKE}")
+
+  # Configure cmake version file
+  include(CMakePackageConfigHelpers)
+  write_basic_package_version_file( ${CMAKE_CURRENT_BINARY_DIR}/OpenCASCADEConfigVersion.cmake
+                                    VERSION ${OCC_VERSION_MAJOR}.${OCC_VERSION_MINOR}.${OCC_VERSION_MAINTENANCE}
+                                    COMPATIBILITY ExactVersion )
+
+  # Install cmake version file
+  install (FILES "${CMAKE_CURRENT_BINARY_DIR}/OpenCASCADEConfigVersion.cmake" DESTINATION "${INSTALL_DIR_CMAKE}")
+
+  # Install the export set for use with the install-tree for each configuration
+  foreach (OCCT_MODULE ${OCCT_MODULES_ENABLED})
+    install(EXPORT OpenCASCADE${OCCT_MODULE}Targets DESTINATION "${INSTALL_DIR_CMAKE}")
+  endforeach()
 
-# Update generated OpenCASCADETargets-*.cmake files 
-# to have correct paths to libraries depending on the configuration
-OCCT_UPDATE_TARGET_FILE ()
+  # Update generated OpenCASCADETargets-*.cmake files 
+  # to have correct paths to libraries depending on the configuration
+  OCCT_UPDATE_TARGET_FILE ()
+endif()
\ No newline at end of file
index a9a8c230e27301f15de9e8c83f2f23d0cee2d4cc..a57f5a24f4c56c30ae5d9a5ce5d2ea1b829e8197 100644 (file)
@@ -9,11 +9,11 @@ set(3RDPARTY_MACRO_ALREADY_INCLUDED 1)
 macro (THIRDPARTY_PRODUCT PRODUCT_NAME HEADER_NAME LIBRARY_NAME LIBRARY_NAME_DEBUG)
 
   if (NOT DEFINED INSTALL_${PRODUCT_NAME} AND BUILD_SHARED_LIBS)
-    set (INSTALL_${PRODUCT_NAME} OFF CACHE BOOL "${INSTALL_${PRODUCT_NAME}_DESCR}")
+    OCCT_set_cache_variable (INSTALL_${PRODUCT_NAME} OFF BOOL "${INSTALL_${PRODUCT_NAME}_DESCR}")
   endif()
 
   if (NOT DEFINED 3RDPARTY_${PRODUCT_NAME}_DIR)
-    set (3RDPARTY_${PRODUCT_NAME}_DIR "" CACHE PATH "The directory containing ${PRODUCT_NAME}")
+    OCCT_set_cache_variable (3RDPARTY_${PRODUCT_NAME}_DIR "" PATH "The directory containing ${PRODUCT_NAME}")
   endif()
 
   # include occt macros. compiler_bitness, os_wiht_bit, compiler
@@ -26,7 +26,7 @@ macro (THIRDPARTY_PRODUCT PRODUCT_NAME HEADER_NAME LIBRARY_NAME LIBRARY_NAME_DEB
     if (NOT 3RDPARTY_${PRODUCT_NAME}_DIR OR NOT EXISTS "${3RDPARTY_${PRODUCT_NAME}_DIR}")
       FIND_PRODUCT_DIR ("${3RDPARTY_DIR}" ${PRODUCT_NAME} ${PRODUCT_NAME}_DIR_NAME)
       if (${PRODUCT_NAME}_DIR_NAME)
-        set (3RDPARTY_${PRODUCT_NAME}_DIR "${3RDPARTY_DIR}/${${PRODUCT_NAME}_DIR_NAME}" CACHE PATH "The directory containing ${PRODUCT_NAME}" FORCE)
+        OCCT_set_cache_variable (3RDPARTY_${PRODUCT_NAME}_DIR "${3RDPARTY_DIR}/${${PRODUCT_NAME}_DIR_NAME}" PATH "The directory containing ${PRODUCT_NAME}" FORCE)
       endif()
     endif()
   else()
@@ -34,27 +34,27 @@ macro (THIRDPARTY_PRODUCT PRODUCT_NAME HEADER_NAME LIBRARY_NAME LIBRARY_NAME_DEB
   endif()
 
   if (NOT DEFINED 3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR)
-    set (3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR           "" CACHE PATH "the path of ${HEADER_NAME}")
+    OCCT_set_cache_variable (3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR           "" PATH "the path of ${HEADER_NAME}")
   endif()
 
   if (BUILD_SHARED_LIBS)
     if (NOT DEFINED 3RDPARTY_${PRODUCT_NAME}_LIBRARY OR NOT 3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR OR NOT EXISTS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR}")
-      set (3RDPARTY_${PRODUCT_NAME}_LIBRARY               "" CACHE FILEPATH "${PRODUCT_NAME} library" FORCE)
+      OCCT_set_cache_variable (3RDPARTY_${PRODUCT_NAME}_LIBRARY               "" FILEPATH "${PRODUCT_NAME} library" FORCE)
     endif()
 
     if (NOT DEFINED 3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR)
-      set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR           "" CACHE PATH "The directory containing ${PRODUCT_NAME} library")
+      OCCT_set_cache_variable (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR           "" PATH "The directory containing ${PRODUCT_NAME} library")
     endif()
 
     if (WIN32)
       if (NOT DEFINED 3RDPARTY_${PRODUCT_NAME}_DLL OR NOT 3RDPARTY_${PRODUCT_NAME}_DLL_DIR OR NOT EXISTS "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR}")
-        set (3RDPARTY_${PRODUCT_NAME}_DLL                 "" CACHE FILEPATH "${PRODUCT_NAME} shared library" FORCE)
+        OCCT_set_cache_variable (3RDPARTY_${PRODUCT_NAME}_DLL                 "" FILEPATH "${PRODUCT_NAME} shared library" FORCE)
       endif()
     endif()
 
     if (WIN32)
       if (NOT DEFINED 3RDPARTY_${PRODUCT_NAME}_DLL_DIR)
-        set (3RDPARTY_${PRODUCT_NAME}_DLL_DIR             "" CACHE PATH "The directory containing ${PRODUCT_NAME} shared library")
+        OCCT_set_cache_variable (3RDPARTY_${PRODUCT_NAME}_DLL_DIR             "" PATH "The directory containing ${PRODUCT_NAME} shared library")
       endif()
     endif()
   endif()
@@ -67,7 +67,7 @@ macro (THIRDPARTY_PRODUCT PRODUCT_NAME HEADER_NAME LIBRARY_NAME LIBRARY_NAME_DEB
 
       if (3RDPARTY_${PRODUCT_NAME}_LIBRARY AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY}")
         get_filename_component (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR "${3RDPARTY_${PRODUCT_NAME}_LIBRARY}" PATH)
-        set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR}" CACHE PATH "The directory containing ${PRODUCT_NAME} library" FORCE)
+        OCCT_set_cache_variable (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR}" PATH "The directory containing ${PRODUCT_NAME} library" FORCE)
       else()
         CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_${PRODUCT_NAME}_DIR 3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR PATH "The directory containing ${PRODUCT_NAME} library")
       endif()
@@ -77,7 +77,7 @@ macro (THIRDPARTY_PRODUCT PRODUCT_NAME HEADER_NAME LIBRARY_NAME LIBRARY_NAME_DEB
 
         if (3RDPARTY_${PRODUCT_NAME}_DLL AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_DLL}")
           get_filename_component (3RDPARTY_${PRODUCT_NAME}_DLL_DIR "${3RDPARTY_${PRODUCT_NAME}_DLL}" PATH)
-          set (3RDPARTY_${PRODUCT_NAME}_DLL_DIR "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR}" CACHE PATH "The directory containing ${PRODUCT_NAME} shared library" FORCE)
+          OCCT_set_cache_variable (3RDPARTY_${PRODUCT_NAME}_DLL_DIR "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR}" PATH "The directory containing ${PRODUCT_NAME} shared library" FORCE)
         else()
           CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_${PRODUCT_NAME}_DIR 3RDPARTY_${PRODUCT_NAME}_DLL_DIR PATH "The directory containing ${PRODUCT_NAME} shared library")
         endif()
@@ -89,7 +89,7 @@ macro (THIRDPARTY_PRODUCT PRODUCT_NAME HEADER_NAME LIBRARY_NAME LIBRARY_NAME_DEB
   if (NOT 3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR OR NOT EXISTS "${3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR}")
 
     # set 3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR as notfound, otherwise find_library can't assign a new value to 3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR
-    set (3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR "3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR-NOTFOUND" CACHE FILEPATH "the path to ${HEADER_NAME}" FORCE)
+    OCCT_set_cache_variable (3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR "3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR-NOTFOUND" FILEPATH "the path to ${HEADER_NAME}" FORCE)
 
     if (3RDPARTY_${PRODUCT_NAME}_DIR AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_DIR}")
       find_path (3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR NAMES ${HEADER_NAME}
@@ -109,7 +109,7 @@ macro (THIRDPARTY_PRODUCT PRODUCT_NAME HEADER_NAME LIBRARY_NAME LIBRARY_NAME_DEB
   else()
     list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR)
 
-    set (3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR "" CACHE FILEPATH "The path to ${HEADER_NAME}" FORCE)
+    OCCT_set_cache_variable (3RDPARTY_${PRODUCT_NAME}_INCLUDE_DIR "" FILEPATH "The path to ${HEADER_NAME}" FORCE)
   endif()
 
   if (BUILD_SHARED_LIBS)
@@ -123,7 +123,7 @@ macro (THIRDPARTY_PRODUCT PRODUCT_NAME HEADER_NAME LIBRARY_NAME LIBRARY_NAME_DEB
       endif()
 
       # set 3RDPARTY_${PRODUCT_NAME}_LIBRARY as notfound, otherwise find_library can't assign a new value to 3RDPARTY_${PRODUCT_NAME}_LIBRARY
-      set (3RDPARTY_${PRODUCT_NAME}_LIBRARY "3RDPARTY_${PRODUCT_NAME}_LIBRARY-NOTFOUND" CACHE FILEPATH "The path to ${PRODUCT_NAME} library" FORCE)
+      OCCT_set_cache_variable (3RDPARTY_${PRODUCT_NAME}_LIBRARY "3RDPARTY_${PRODUCT_NAME}_LIBRARY-NOTFOUND" FILEPATH "The path to ${PRODUCT_NAME} library" FORCE)
 
       if (3RDPARTY_${PRODUCT_NAME}_DIR AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_DIR}")
         find_library (3RDPARTY_${PRODUCT_NAME}_LIBRARY NAMES ${LIBRARY_NAME}
@@ -139,9 +139,9 @@ macro (THIRDPARTY_PRODUCT PRODUCT_NAME HEADER_NAME LIBRARY_NAME LIBRARY_NAME_DEB
 
       if (3RDPARTY_${PRODUCT_NAME}_LIBRARY AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY}")
         get_filename_component (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR "${3RDPARTY_${PRODUCT_NAME}_LIBRARY}" PATH)
-        set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR}" CACHE PATH "The directory containing ${PRODUCT_NAME} library" FORCE)
+        OCCT_set_cache_variable (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR}" PATH "The directory containing ${PRODUCT_NAME} library" FORCE)
       else()
-        set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR "" CACHE PATH "The directory containing ${PRODUCT_NAME} library" FORCE)
+        OCCT_set_cache_variable (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR "" PATH "The directory containing ${PRODUCT_NAME} library" FORCE)
       endif()
     endif()
 
@@ -150,7 +150,7 @@ macro (THIRDPARTY_PRODUCT PRODUCT_NAME HEADER_NAME LIBRARY_NAME LIBRARY_NAME_DEB
     else()
       list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR)
 
-      set (3RDPARTY_${PRODUCT_NAME}_LIBRARY "" CACHE FILEPATH "The path to ${PRODUCT_NAME} library" FORCE)
+      OCCT_set_cache_variable (3RDPARTY_${PRODUCT_NAME}_LIBRARY "" FILEPATH "The path to ${PRODUCT_NAME} library" FORCE)
     endif()
 
     # shared library
@@ -160,7 +160,7 @@ macro (THIRDPARTY_PRODUCT PRODUCT_NAME HEADER_NAME LIBRARY_NAME LIBRARY_NAME_DEB
         set (CMAKE_FIND_LIBRARY_SUFFIXES .dll)
 
         # set 3RDPARTY_${PRODUCT_NAME}_DLL as notfound, otherwise find_library can't assign a new value to 3RDPARTY_${PRODUCT_NAME}_DLL
-        set (3RDPARTY_${PRODUCT_NAME}_DLL "3RDPARTY_${PRODUCT_NAME}_DLL-NOTFOUND" CACHE FILEPATH "The path to ${PRODUCT_NAME} shared library" FORCE)
+        OCCT_set_cache_variable (3RDPARTY_${PRODUCT_NAME}_DLL "3RDPARTY_${PRODUCT_NAME}_DLL-NOTFOUND" FILEPATH "The path to ${PRODUCT_NAME} shared library" FORCE)
 
         if (3RDPARTY_${PRODUCT_NAME}_DIR AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_DIR}")
           find_library (3RDPARTY_${PRODUCT_NAME}_DLL  NAMES ${LIBRARY_NAME}
@@ -173,11 +173,11 @@ macro (THIRDPARTY_PRODUCT PRODUCT_NAME HEADER_NAME LIBRARY_NAME LIBRARY_NAME_DEB
 
         if (3RDPARTY_${PRODUCT_NAME}_DLL AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_DLL}")
           get_filename_component (3RDPARTY_${PRODUCT_NAME}_DLL_DIR "${3RDPARTY_${PRODUCT_NAME}_DLL}" PATH)
-          set (3RDPARTY_${PRODUCT_NAME}_DLL_DIR "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR}" CACHE PATH "The directory containing ${PRODUCT_NAME} library" FORCE)
+          OCCT_set_cache_variable (3RDPARTY_${PRODUCT_NAME}_DLL_DIR "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR}" PATH "The directory containing ${PRODUCT_NAME} library" FORCE)
         else()
-          set (3RDPARTY_${PRODUCT_NAME}_DLL_DIR "" CACHE PATH "The directory containing ${PRODUCT_NAME} shared library" FORCE)
+          OCCT_set_cache_variable (3RDPARTY_${PRODUCT_NAME}_DLL_DIR "" PATH "The directory containing ${PRODUCT_NAME} shared library" FORCE)
 
-          set (3RDPARTY_${PRODUCT_NAME}_DLL "" CACHE FILEPATH "${PRODUCT_NAME} shared library" FORCE)
+          OCCT_set_cache_variable (3RDPARTY_${PRODUCT_NAME}_DLL "" FILEPATH "${PRODUCT_NAME} shared library" FORCE)
         endif()
       endif()
 
@@ -190,7 +190,7 @@ macro (THIRDPARTY_PRODUCT PRODUCT_NAME HEADER_NAME LIBRARY_NAME LIBRARY_NAME_DEB
 
     set (USED_3RDPARTY_${PRODUCT_NAME}_DIR "")
 
-    if (INSTALL_${PRODUCT_NAME})
+    if (NOT EXTERNAL_BUILD AND INSTALL_${PRODUCT_NAME})
       OCCT_MAKE_OS_WITH_BITNESS()
       OCCT_MAKE_COMPILER_SHORT_NAME()
 
@@ -274,7 +274,7 @@ macro (COMPLIANCE_PRODUCT_CONSISTENCY LIBNAME)
       string (REGEX MATCH "${3RDPARTY_${LIBNAME}_DIR}" DOES_PATH_CONTAIN "${3RDPARTY_${LIBNAME}_INCLUDE_DIR}")
     endif()
     if (NOT DOES_PATH_CONTAIN)
-      set (3RDPARTY_${LIBNAME}_INCLUDE_DIR "" CACHE FILEPATH "The directory containing headers of ${LIBNAME}" FORCE)
+      OCCT_set_cache_variable (3RDPARTY_${LIBNAME}_INCLUDE_DIR "" FILEPATH "The directory containing headers of ${LIBNAME}" FORCE)
     endif()
 
     if (BUILD_SHARED_LIBS)
@@ -284,7 +284,7 @@ macro (COMPLIANCE_PRODUCT_CONSISTENCY LIBNAME)
         string (REGEX MATCH "${3RDPARTY_${LIBNAME}_DIR}" DOES_PATH_CONTAIN "${3RDPARTY_${LIBNAME}_LIBRARY_DIR}")
       endif()
       if (NOT DOES_PATH_CONTAIN)
-        set (3RDPARTY_${LIBNAME}_LIBRARY_DIR "" CACHE FILEPATH "The directory containing ${LIBNAME} library" FORCE)
+        OCCT_set_cache_variable (3RDPARTY_${LIBNAME}_LIBRARY_DIR "" FILEPATH "The directory containing ${LIBNAME} library" FORCE)
       endif()
 
       # shared library dir
@@ -294,7 +294,7 @@ macro (COMPLIANCE_PRODUCT_CONSISTENCY LIBNAME)
           string (REGEX MATCH "${3RDPARTY_${LIBNAME}_DIR}" DOES_PATH_CONTAIN "${3RDPARTY_${LIBNAME}_DLL_DIR}")
         endif()
         if (NOT DOES_PATH_CONTAIN)
-          set (3RDPARTY_${LIBNAME}_DLL_DIR "" CACHE FILEPATH "The directory containing ${LIBNAME} shared library" FORCE)
+          OCCT_set_cache_variable (3RDPARTY_${LIBNAME}_DLL_DIR "" FILEPATH "The directory containing ${LIBNAME} shared library" FORCE)
         endif()
       endif()
     endif()
@@ -309,7 +309,7 @@ macro (COMPLIANCE_PRODUCT_CONSISTENCY LIBNAME)
       endif()
     endif()
     if (NOT DOES_PATH_CONTAIN)
-      set (3RDPARTY_${LIBNAME}_LIBRARY "" CACHE FILEPATH "${LIBNAME} library" FORCE)
+      OCCT_set_cache_variable (3RDPARTY_${LIBNAME}_LIBRARY "" FILEPATH "${LIBNAME} library" FORCE)
     endif()
 
     # check shared library
@@ -321,8 +321,12 @@ macro (COMPLIANCE_PRODUCT_CONSISTENCY LIBNAME)
         endif()
       endif()
       if (NOT DOES_PATH_CONTAIN)
-        set (3RDPARTY_${LIBNAME}_DLL "" CACHE FILEPATH "${LIBNAME} shared library" FORCE)
+        OCCT_set_cache_variable (3RDPARTY_${LIBNAME}_DLL "" FILEPATH "${LIBNAME} shared library" FORCE)
       endif()
     endif()
   endif()
 endmacro()
+
+if (3RDPARTY_${PRODUCT_NAME}_DLL)
+  OCCT_set_cache_variable (3RDPARTY_${PRODUCT_NAME}_DLL ${3RDPARTY_${PRODUCT_NAME}_DLL} PATH "" FORCE)
+endif()
\ No newline at end of file
index b348573ef1dfe8e68ff25f0479a9b1717462a09e..ce23fcdc8ed5b2cd3fc5ba7c4ff1abfb84b601d9 100644 (file)
@@ -1,11 +1,11 @@
 # freetype
 
 if (NOT DEFINED INSTALL_FREETYPE AND BUILD_SHARED_LIBS)
-  set (INSTALL_FREETYPE OFF CACHE BOOL "${INSTALL_FREETYPE_DESCR}")
+  OCCT_set_cache_variable (INSTALL_FREETYPE OFF BOOL "${INSTALL_FREETYPE_DESCR}")
 endif()
 
 if (NOT DEFINED 3RDPARTY_FREETYPE_DIR)
-  set (3RDPARTY_FREETYPE_DIR "" CACHE PATH "The directory containing freetype")
+  OCCT_set_cache_variable (3RDPARTY_FREETYPE_DIR "" PATH "The directory containing freetype")
 endif()
 
 # include occt macros. compiler_bitness, os_wiht_bit, compiler
@@ -21,40 +21,40 @@ if (3RDPARTY_DIR AND EXISTS "${3RDPARTY_DIR}")
   if (NOT 3RDPARTY_FREETYPE_DIR OR NOT EXISTS "${3RDPARTY_FREETYPE_DIR}")
     FIND_PRODUCT_DIR ("${3RDPARTY_DIR}" FREETYPE FREETYPE_DIR_NAME)
     if (FREETYPE_DIR_NAME)
-      set (3RDPARTY_FREETYPE_DIR "${3RDPARTY_DIR}/${FREETYPE_DIR_NAME}" CACHE PATH "The directory containing freetype" FORCE)
+      OCCT_set_cache_variable (3RDPARTY_FREETYPE_DIR "${3RDPARTY_DIR}/${FREETYPE_DIR_NAME}" PATH "The directory containing freetype" FORCE)
     endif()
   endif()
 else()
-  #set (3RDPARTY_FREETYPE_DIR "" CACHE PATH "The directory containing freetype" FORCE)
+  #OCCT_set_cache_variable (3RDPARTY_FREETYPE_DIR "" PATH "The directory containing freetype" FORCE)
 endif()
 
 # define required freetype variables
 if (NOT DEFINED 3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build)
-  set (3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build  "" CACHE FILEPATH "the path of ft2build.h")
+  OCCT_set_cache_variable (3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build  "" FILEPATH "the path of ft2build.h")
 endif()
 
 if (NOT DEFINED 3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2)
-  set (3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 "" CACHE FILEPATH "the path of freetype2")
+  OCCT_set_cache_variable (3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 "" FILEPATH "the path of freetype2")
 endif()
 
 if (BUILD_SHARED_LIBS)
   if (NOT DEFINED 3RDPARTY_FREETYPE_LIBRARY OR NOT 3RDPARTY_FREETYPE_LIBRARY_DIR OR NOT EXISTS "${3RDPARTY_FREETYPE_LIBRARY_DIR}")
-    set (3RDPARTY_FREETYPE_LIBRARY               "" CACHE FILEPATH "freetype library" FORCE)
+    OCCT_set_cache_variable (3RDPARTY_FREETYPE_LIBRARY               "" FILEPATH "freetype library" FORCE)
   endif()
 
   if (NOT DEFINED 3RDPARTY_FREETYPE_LIBRARY_DIR)
-    set (3RDPARTY_FREETYPE_LIBRARY_DIR           "" CACHE PATH "The directory containing freetype library")
+    OCCT_set_cache_variable (3RDPARTY_FREETYPE_LIBRARY_DIR           "" PATH "The directory containing freetype library")
   endif()
 
   if (WIN32)
     if (NOT DEFINED 3RDPARTY_FREETYPE_DLL OR NOT 3RDPARTY_FREETYPE_DLL_DIR OR NOT EXISTS "${3RDPARTY_FREETYPE_DLL_DIR}")
-      set (3RDPARTY_FREETYPE_DLL                 "" CACHE FILEPATH "freetype shared library" FORCE)
+      OCCT_set_cache_variable (3RDPARTY_FREETYPE_DLL                 "" FILEPATH "freetype shared library" FORCE)
     endif()
   endif()
 
   if (WIN32)
     if (NOT DEFINED 3RDPARTY_FREETYPE_DLL_DIR)
-      set (3RDPARTY_FREETYPE_DLL_DIR               "" CACHE PATH "The directory containing freetype shared library")
+      OCCT_set_cache_variable (3RDPARTY_FREETYPE_DLL_DIR               "" PATH "The directory containing freetype shared library")
     endif()
   endif()
 endif()
@@ -68,7 +68,7 @@ if (3RDPARTY_FREETYPE_DIR AND EXISTS "${3RDPARTY_FREETYPE_DIR}")
 
     if (3RDPARTY_FREETYPE_LIBRARY AND EXISTS "${3RDPARTY_FREETYPE_LIBRARY}")
       get_filename_component (3RDPARTY_FREETYPE_LIBRARY_DIR "${3RDPARTY_FREETYPE_LIBRARY}" PATH)
-      set (3RDPARTY_FREETYPE_LIBRARY_DIR "${3RDPARTY_FREETYPE_LIBRARY_DIR}" CACHE PATH "The directory containing freetype library" FORCE)
+      OCCT_set_cache_variable (3RDPARTY_FREETYPE_LIBRARY_DIR "${3RDPARTY_FREETYPE_LIBRARY_DIR}" PATH "The directory containing freetype library" FORCE)
     else()
       CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FREETYPE_DIR 3RDPARTY_FREETYPE_LIBRARY_DIR PATH "The directory containing freetype library")
     endif()
@@ -78,7 +78,7 @@ if (3RDPARTY_FREETYPE_DIR AND EXISTS "${3RDPARTY_FREETYPE_DIR}")
 
       if (3RDPARTY_FREETYPE_DLL AND EXISTS "${3RDPARTY_FREETYPE_DLL}")
         get_filename_component (3RDPARTY_FREETYPE_DLL_DIR "${3RDPARTY_FREETYPE_DLL}" PATH)
-        set (3RDPARTY_FREETYPE_DLL_DIR "${3RDPARTY_FREETYPE_DLL_DIR}" CACHE PATH "The directory containing freetype shared library" FORCE)
+        OCCT_set_cache_variable (3RDPARTY_FREETYPE_DLL_DIR "${3RDPARTY_FREETYPE_DLL_DIR}" PATH "The directory containing freetype shared library" FORCE)
       else()
         CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_FREETYPE_DIR 3RDPARTY_FREETYPE_DLL_DIR PATH "The directory containing freetype shared library")
       endif()
@@ -129,28 +129,28 @@ if (IS_BUILTIN_SEARCH_REQUIRED)
   # assign the found paths to corresponding 3RDPARTY_FREETYPE_ variables
   if (NOT 3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build OR NOT EXISTS "${3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build}")
     if (FREETYPE_INCLUDE_DIR_ft2build AND EXISTS "${FREETYPE_INCLUDE_DIR_ft2build}")
-      set (3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build  "${FREETYPE_INCLUDE_DIR_ft2build}" CACHE FILEPATH "the path to ft2build.h" FORCE)
+      OCCT_set_cache_variable (3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build  "${FREETYPE_INCLUDE_DIR_ft2build}" FILEPATH "the path to ft2build.h" FORCE)
     endif()
   endif()
 
   if (NOT 3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 OR NOT EXISTS "${3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2}")
     if (FREETYPE_INCLUDE_DIR_freetype2 AND EXISTS "${FREETYPE_INCLUDE_DIR_freetype2}")
-      set (3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2  "${FREETYPE_INCLUDE_DIR_freetype2}" CACHE FILEPATH "the path to ftheader.h" FORCE)
+      OCCT_set_cache_variable (3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2  "${FREETYPE_INCLUDE_DIR_freetype2}" FILEPATH "the path to ftheader.h" FORCE)
     endif()
   endif()
 
   if (BUILD_SHARED_LIBS)
     if (NOT 3RDPARTY_FREETYPE_LIBRARY OR NOT EXISTS "${3RDPARTY_FREETYPE_LIBRARY}")
       if (FREETYPE_LIBRARY AND EXISTS "${FREETYPE_LIBRARY}")
-        set (3RDPARTY_FREETYPE_LIBRARY  "${FREETYPE_LIBRARY}" CACHE FILEPATH "The path to freetype library" FORCE)
+        OCCT_set_cache_variable (3RDPARTY_FREETYPE_LIBRARY  "${FREETYPE_LIBRARY}" FILEPATH "The path to freetype library" FORCE)
       endif()
     endif()
 
     if (3RDPARTY_FREETYPE_LIBRARY AND EXISTS "${3RDPARTY_FREETYPE_LIBRARY}")
       get_filename_component (3RDPARTY_FREETYPE_LIBRARY_DIR "${3RDPARTY_FREETYPE_LIBRARY}" PATH)
-      set (3RDPARTY_FREETYPE_LIBRARY_DIR "${3RDPARTY_FREETYPE_LIBRARY_DIR}" CACHE PATH "The directory containing freetype library" FORCE)
+      OCCT_set_cache_variable (3RDPARTY_FREETYPE_LIBRARY_DIR "${3RDPARTY_FREETYPE_LIBRARY_DIR}" PATH "The directory containing freetype library" FORCE)
     else()
-      set (3RDPARTY_FREETYPE_LIBRARY_DIR "" CACHE PATH "The directory containing freetype library" FORCE)
+      OCCT_set_cache_variable (3RDPARTY_FREETYPE_LIBRARY_DIR "" PATH "The directory containing freetype library" FORCE)
     endif()
   endif()
 endif()
@@ -162,7 +162,7 @@ if (NOT 3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build OR NOT EXISTS "${3RDPARTY_FREETYP
   set (FT2BUILD_NAMES ft2build.h config/ft2build.h freetype/config/ft2build.h)
 
   # set 3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build as notfound, otherwise find_library can't assign a new value to 3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build
-  set (3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build "3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build-NOTFOUND" CACHE FILEPATH "the path to ft2build.h" FORCE)
+  OCCT_set_cache_variable (3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build "3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build-NOTFOUND" FILEPATH "the path to ft2build.h" FORCE)
 
   # cmake (version < 3.0) doesn't find ft2build.h of freetype (version is >= 2.5.1)
   # do search taking into account freetype structure of 2.5.1 version
@@ -185,7 +185,7 @@ if (3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build AND EXISTS "${3RDPARTY_FREETYPE_INCLU
 else()
   list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build)
 
-  set (3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build "" CACHE FILEPATH "the path to ft2build.h" FORCE)
+  OCCT_set_cache_variable (3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build "" FILEPATH "the path to ft2build.h" FORCE)
 endif()
 
 # ftheader.h
@@ -193,7 +193,7 @@ if (NOT 3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 OR NOT EXISTS "${3RDPARTY_FREETY
   set (FTHEADER_NAMES ftheader.h config/ftheader.h freetype/config/ftheader.h)
 
   # set 3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 as notfound, otherwise find_library can't assign a new value to 3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2
-  set (3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 "3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2-NOTFOUND" CACHE FILEPATH "the path to ftheader.h" FORCE)
+  OCCT_set_cache_variable (3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 "3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2-NOTFOUND" FILEPATH "the path to ftheader.h" FORCE)
 
   if (3RDPARTY_FREETYPE_DIR AND EXISTS "${3RDPARTY_FREETYPE_DIR}")
     find_path (3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 NAMES ${FTHEADER_NAMES}
@@ -214,7 +214,7 @@ if (3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 AND EXISTS "${3RDPARTY_FREETYPE_INCL
 else()
   list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2)
 
-  set (3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 "" CACHE FILEPATH "the path to ftheader.h" FORCE)
+  OCCT_set_cache_variable (3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2 "" FILEPATH "the path to ftheader.h" FORCE)
 endif()
 
 # freetype library
@@ -228,7 +228,7 @@ if (BUILD_SHARED_LIBS)
     endif()
 
     # set 3RDPARTY_FREETYPE_LIBRARY as notfound, otherwise find_library can't assign a new value to 3RDPARTY_FREETYPE_LIBRARY
-    set (3RDPARTY_FREETYPE_LIBRARY "3RDPARTY_FREETYPE_LIBRARY-NOTFOUND" CACHE FILEPATH "The path to freetype library" FORCE)
+    OCCT_set_cache_variable (3RDPARTY_FREETYPE_LIBRARY "3RDPARTY_FREETYPE_LIBRARY-NOTFOUND" FILEPATH "The path to freetype library" FORCE)
 
     if (3RDPARTY_FREETYPE_DIR AND EXISTS "${3RDPARTY_FREETYPE_DIR}")
       find_library (3RDPARTY_FREETYPE_LIBRARY freetype
@@ -255,7 +255,7 @@ if (BUILD_SHARED_LIBS)
   else()
     list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_FREETYPE_LIBRARY_DIR)
 
-    set (3RDPARTY_FREETYPE_LIBRARY "" CACHE FILEPATH "The path to freetype library" FORCE)
+    OCCT_set_cache_variable (3RDPARTY_FREETYPE_LIBRARY "" FILEPATH "The path to freetype library" FORCE)
   endif()
 
   # freetype shared library
@@ -279,11 +279,11 @@ if (BUILD_SHARED_LIBS)
 
       if (3RDPARTY_FREETYPE_DLL AND EXISTS "${3RDPARTY_FREETYPE_DLL}")
         get_filename_component (3RDPARTY_FREETYPE_DLL_DIR "${3RDPARTY_FREETYPE_DLL}" PATH)
-        set (3RDPARTY_FREETYPE_DLL_DIR "${3RDPARTY_FREETYPE_DLL_DIR}" CACHE PATH "The directory containing freetype library" FORCE)
+        OCCT_set_cache_variable (3RDPARTY_FREETYPE_DLL_DIR "${3RDPARTY_FREETYPE_DLL_DIR}" PATH "The directory containing freetype library" FORCE)
       else()
-        set (3RDPARTY_FREETYPE_DLL_DIR "" CACHE PATH "The directory containing freetype shared library" FORCE)
+        OCCT_set_cache_variable (3RDPARTY_FREETYPE_DLL_DIR "" PATH "The directory containing freetype shared library" FORCE)
 
-        set (3RDPARTY_FREETYPE_DLL "" CACHE FILEPATH "freetype shared library" FORCE)
+        OCCT_set_cache_variable (3RDPARTY_FREETYPE_DLL "" FILEPATH "freetype shared library" FORCE)
       endif()
     endif()
 
@@ -295,7 +295,7 @@ if (BUILD_SHARED_LIBS)
   endif()
 
   # install instructions
-  if (INSTALL_FREETYPE)
+  if (NOT EXTERNAL_BUILD AND INSTALL_FREETYPE)
     OCCT_MAKE_OS_WITH_BITNESS()
 
     if (WIN32)
@@ -361,3 +361,7 @@ else()
   OCCT_CHECK_AND_UNSET(3RDPARTY_FREETYPE_LIBRARY_DIR)
   OCCT_CHECK_AND_UNSET(INSTALL_FREETYPE)
 endif()
+
+if (3RDPARTY_FREETYPE_DLL)
+  OCCT_set_cache_variable (3RDPARTY_FREETYPE_DLL "${3RDPARTY_FREETYPE_DLL}" PATH "" FORCE)
+endif()
index 1381625eb1e822413cb212996c4c6625dc1ea42b..c97bff192263f4d69ec2f547198c8c43e61fa3ff 100644 (file)
@@ -107,7 +107,7 @@ function (OCCT_ORIGIN_AND_PATCHED_FILES RELATIVE_PATH SEARCH_TEMPLATE RESULT)
     file (GLOB FOUND_FILES "${BUILD_PATCH}/${RELATIVE_PATH}/${SEARCH_TEMPLATE}")
   endif()
 
-  file (GLOB ORIGIN_FILES "${CMAKE_SOURCE_DIR}/${RELATIVE_PATH}/${SEARCH_TEMPLATE}")
+  file (GLOB ORIGIN_FILES "${OCCT_ROOT_DIR}/${RELATIVE_PATH}/${SEARCH_TEMPLATE}")
   foreach (ORIGIN_FILE ${ORIGIN_FILES})
     # check for existence of patched version of current file
     if (NOT BUILD_PATCH OR NOT EXISTS "${BUILD_PATCH}/${RELATIVE_PATH}")
@@ -160,53 +160,57 @@ function (FIND_PRODUCT_DIR ROOT_DIR PRODUCT_NAME RESULT)
 endfunction()
 
 macro (OCCT_INSTALL_FILE_OR_DIR BEING_INSTALLED_OBJECT DESTINATION_PATH)
-  if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/${BEING_INSTALLED_OBJECT}")
-    if (IS_DIRECTORY "${BUILD_PATCH}/${BEING_INSTALLED_OBJECT}")
-      # first of all, install original files
-      install (DIRECTORY "${CMAKE_SOURCE_DIR}/${BEING_INSTALLED_OBJECT}" DESTINATION  "${DESTINATION_PATH}")
-
-      # secondly, rewrite original files with patched ones
-      install (DIRECTORY "${BUILD_PATCH}/${BEING_INSTALLED_OBJECT}" DESTINATION  "${DESTINATION_PATH}")
-    else()
-      install (FILES     "${BUILD_PATCH}/${BEING_INSTALLED_OBJECT}" DESTINATION  "${DESTINATION_PATH}")
-    endif()
-  else()
-    if (IS_DIRECTORY "${CMAKE_SOURCE_DIR}/${BEING_INSTALLED_OBJECT}")
-      install (DIRECTORY "${CMAKE_SOURCE_DIR}/${BEING_INSTALLED_OBJECT}" DESTINATION  "${DESTINATION_PATH}")
+  if (NOT EXTERNAL_BUILD)
+    if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/${BEING_INSTALLED_OBJECT}")
+      if (IS_DIRECTORY "${BUILD_PATCH}/${BEING_INSTALLED_OBJECT}")
+        # first of all, install original files
+        install (DIRECTORY "${OCCT_ROOT_DIR}/${BEING_INSTALLED_OBJECT}" DESTINATION  "${DESTINATION_PATH}")
+
+        # secondly, rewrite original files with patched ones
+        install (DIRECTORY "${BUILD_PATCH}/${BEING_INSTALLED_OBJECT}" DESTINATION  "${DESTINATION_PATH}")
+      else()
+        install (FILES     "${BUILD_PATCH}/${BEING_INSTALLED_OBJECT}" DESTINATION  "${DESTINATION_PATH}")
+      endif()
     else()
-      install (FILES     "${CMAKE_SOURCE_DIR}/${BEING_INSTALLED_OBJECT}" DESTINATION  "${DESTINATION_PATH}")
+      if (IS_DIRECTORY "${OCCT_ROOT_DIR}/${BEING_INSTALLED_OBJECT}")
+        install (DIRECTORY "${OCCT_ROOT_DIR}/${BEING_INSTALLED_OBJECT}" DESTINATION  "${DESTINATION_PATH}")
+      else()
+        install (FILES     "${OCCT_ROOT_DIR}/${BEING_INSTALLED_OBJECT}" DESTINATION  "${DESTINATION_PATH}")
+      endif()
     endif()
   endif()
 endmacro()
 
 macro (OCCT_CONFIGURE_AND_INSTALL BEING_CONGIRUGED_FILE BUILD_NAME INSTALL_NAME DESTINATION_PATH)
-  if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/${BEING_CONGIRUGED_FILE}")
-    configure_file("${BUILD_PATCH}/${BEING_CONGIRUGED_FILE}" "${BUILD_NAME}" @ONLY)
-  else()
-    configure_file("${CMAKE_SOURCE_DIR}/${BEING_CONGIRUGED_FILE}" "${BUILD_NAME}" @ONLY)
-  endif()
+  if (NOT EXTERNAL_BUILD)
+    if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/${BEING_CONGIRUGED_FILE}")
+      configure_file("${BUILD_PATCH}/${BEING_CONGIRUGED_FILE}" "${BUILD_NAME}" @ONLY)
+    else()
+      configure_file("${OCCT_ROOT_DIR}/${BEING_CONGIRUGED_FILE}" "${BUILD_NAME}" @ONLY)
+    endif()
 
-  install(FILES "${OCCT_BINARY_DIR}/${BUILD_NAME}" DESTINATION  "${DESTINATION_PATH}" RENAME ${INSTALL_NAME})
+    install(FILES "${OCCT_BINARY_DIR}/${BUILD_NAME}" DESTINATION  "${DESTINATION_PATH}" RENAME ${INSTALL_NAME})
+  endif()
 endmacro()
 
 macro (COLLECT_AND_INSTALL_OCCT_HEADER_FILES ROOT_TARGET_OCCT_DIR OCCT_BUILD_TOOLKITS)
   set (OCCT_USED_PACKAGES)
 
   # consider patched header.in template
-  set (TEMPLATE_HEADER_PATH "${CMAKE_SOURCE_DIR}/adm/templates/header.in")
+  set (TEMPLATE_HEADER_PATH "${OCCT_ROOT_DIR}/adm/templates/header.in")
   if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/adm/templates/header.in")
     set (TEMPLATE_HEADER_PATH "${BUILD_PATCH}/adm/templates/header.in")
   endif()
 
-  set (ROOT_OCCT_DIR ${CMAKE_SOURCE_DIR})
+  set (ROOT_OCCT_DIR ${OCCT_ROOT_DIR})
 
   foreach (OCCT_USED_TOOLKIT ${OCCT_BUILD_TOOLKITS})
     # append all required package folders
     set (OCCT_TOOLKIT_PACKAGES)
     if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/src/${OCCT_USED_TOOLKIT}/PACKAGES")
       file (STRINGS "${BUILD_PATCH}/src/${OCCT_USED_TOOLKIT}/PACKAGES" OCCT_TOOLKIT_PACKAGES)
-    elseif (EXISTS "${CMAKE_SOURCE_DIR}/src/${OCCT_USED_TOOLKIT}/PACKAGES")
-      file (STRINGS "${CMAKE_SOURCE_DIR}/src/${OCCT_USED_TOOLKIT}/PACKAGES" OCCT_TOOLKIT_PACKAGES)
+    elseif (EXISTS "${OCCT_ROOT_DIR}/src/${OCCT_USED_TOOLKIT}/PACKAGES")
+      file (STRINGS "${OCCT_ROOT_DIR}/src/${OCCT_USED_TOOLKIT}/PACKAGES" OCCT_TOOLKIT_PACKAGES)
     endif()
 
     list (APPEND OCCT_USED_PACKAGES ${OCCT_TOOLKIT_PACKAGES})
@@ -224,10 +228,10 @@ macro (COLLECT_AND_INSTALL_OCCT_HEADER_FILES ROOT_TARGET_OCCT_DIR OCCT_BUILD_TOO
   foreach (OCCT_PACKAGE ${OCCT_USED_PACKAGES})
     if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/src/${OCCT_PACKAGE}/FILES")
       file (STRINGS "${BUILD_PATCH}/src/${OCCT_PACKAGE}/FILES" OCCT_ALL_FILE_NAMES)
-    elseif (EXISTS "${CMAKE_SOURCE_DIR}/src/${OCCT_PACKAGE}/FILES")
-      file (STRINGS "${CMAKE_SOURCE_DIR}/src/${OCCT_PACKAGE}/FILES" OCCT_ALL_FILE_NAMES)
+    elseif (EXISTS "${OCCT_ROOT_DIR}/src/${OCCT_PACKAGE}/FILES")
+      file (STRINGS "${OCCT_ROOT_DIR}/src/${OCCT_PACKAGE}/FILES" OCCT_ALL_FILE_NAMES)
     else()
-      message (WARNING "FILES has not been found in ${CMAKE_SOURCE_DIR}/src/${OCCT_PACKAGE}")
+      message (WARNING "FILES has not been found in ${OCCT_ROOT_DIR}/src/${OCCT_PACKAGE}")
       continue()
     endif()
 
@@ -235,13 +239,13 @@ macro (COLLECT_AND_INSTALL_OCCT_HEADER_FILES ROOT_TARGET_OCCT_DIR OCCT_BUILD_TOO
     math (EXPR ALL_FILES_NB "${ALL_FILES_NB} - 1" )
 
     # emit warnings if there is unprocessed headers
-    file (GLOB OCCT_ALL_FILES_IN_DIR "${CMAKE_SOURCE_DIR}/src/${OCCT_PACKAGE}/*.*")
+    file (GLOB OCCT_ALL_FILES_IN_DIR "${OCCT_ROOT_DIR}/src/${OCCT_PACKAGE}/*.*")
     file (GLOB OCCT_ALL_FILES_IN_PATCH_DIR "${BUILD_PATCH}/src/${OCCT_PACKAGE}/*.*")
 
     # use patched header files
     foreach (OCCT_FILE_IN_PATCH_DIR ${OCCT_ALL_FILES_IN_PATCH_DIR})
       get_filename_component (OCCT_FILE_IN_PATCH_DIR_NAME ${OCCT_FILE_IN_PATCH_DIR} NAME)
-      list (REMOVE_ITEM OCCT_ALL_FILES_IN_DIR "${CMAKE_SOURCE_DIR}/src/${OCCT_PACKAGE}/${OCCT_FILE_IN_PATCH_DIR_NAME}")
+      list (REMOVE_ITEM OCCT_ALL_FILES_IN_DIR "${OCCT_ROOT_DIR}/src/${OCCT_PACKAGE}/${OCCT_FILE_IN_PATCH_DIR_NAME}")
       list (APPEND OCCT_ALL_FILES_IN_DIR "${OCCT_FILE_IN_PATCH_DIR}")
     endforeach()
 
@@ -282,7 +286,7 @@ macro (COLLECT_AND_INSTALL_OCCT_HEADER_FILES ROOT_TARGET_OCCT_DIR OCCT_BUILD_TOO
       endforeach()
 
       if (NOT OCCT_FILE_IN_DIR_STATUS)
-        message (STATUS "Warning. File ${OCCT_FILE_IN_DIR} is not listed in ${CMAKE_SOURCE_DIR}/src/${OCCT_PACKAGE}/FILES")
+        message (STATUS "Warning. File ${OCCT_FILE_IN_DIR} is not listed in ${OCCT_ROOT_DIR}/src/${OCCT_PACKAGE}/FILES")
 
         string (REGEX MATCH ".+\\.[hlg]xx|.+\\.h$" IS_HEADER_FOUND "${OCCT_FILE_NAME}")
         if (IS_HEADER_FOUND)
@@ -302,7 +306,9 @@ macro (COLLECT_AND_INSTALL_OCCT_HEADER_FILES ROOT_TARGET_OCCT_DIR OCCT_BUILD_TOO
     configure_file ("${TEMPLATE_HEADER_PATH}" "${ROOT_TARGET_OCCT_DIR}/inc/${HEADER_FILE_NAME}" @ONLY)
   endforeach()
   
-  install (FILES ${OCCT_HEADER_FILES_COMPLETE} DESTINATION "${INSTALL_DIR_INCLUDE}")
+  if (NOT EXTERNAL_BUILD)
+    install (FILES ${OCCT_HEADER_FILES_COMPLETE} DESTINATION "${INSTALL_DIR_INCLUDE}")
+  endif()
   
   string(TIMESTAMP CURRENT_TIME "%H:%M:%S")
   message (STATUS "Info: \(${CURRENT_TIME}\) Checking headers in inc folder...")
@@ -311,10 +317,10 @@ macro (COLLECT_AND_INSTALL_OCCT_HEADER_FILES ROOT_TARGET_OCCT_DIR OCCT_BUILD_TOO
   foreach (OCCT_HEADER_FILE_OLD ${OCCT_HEADER_FILES_OLD})
     get_filename_component (HEADER_FILE_NAME ${OCCT_HEADER_FILE_OLD} NAME)
     string (REGEX MATCH "^[a-zA-Z0-9]+" PACKAGE_NAME "${HEADER_FILE_NAME}")
-    
+
     list (FIND OCCT_USED_PACKAGES ${PACKAGE_NAME} IS_HEADER_FOUND)
     if (NOT ${IS_HEADER_FOUND} EQUAL -1)
-      if (NOT EXISTS "${CMAKE_SOURCE_DIR}/src/${PACKAGE_NAME}/${HEADER_FILE_NAME}")
+      if (NOT EXISTS "${OCCT_ROOT_DIR}/src/${PACKAGE_NAME}/${HEADER_FILE_NAME}")
         message (STATUS "Warning. ${OCCT_HEADER_FILE_OLD} is not presented in the sources and will be removed from ${ROOT_TARGET_OCCT_DIR}/inc")
         file (REMOVE "${OCCT_HEADER_FILE_OLD}")
       else()
@@ -340,8 +346,8 @@ endmacro()
 
 macro (OCCT_COPY_FILE_OR_DIR BEING_COPIED_OBJECT DESTINATION_PATH)
   # first of all, copy original files
-  if (EXISTS "${CMAKE_SOURCE_DIR}/${BEING_COPIED_OBJECT}")
-    file (COPY "${CMAKE_SOURCE_DIR}/${BEING_COPIED_OBJECT}" DESTINATION  "${DESTINATION_PATH}")
+  if (EXISTS "${OCCT_ROOT_DIR}/${BEING_COPIED_OBJECT}")
+    file (COPY "${OCCT_ROOT_DIR}/${BEING_COPIED_OBJECT}" DESTINATION  "${DESTINATION_PATH}")
   endif()
 
   if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/${BEING_COPIED_OBJECT}")
@@ -354,15 +360,15 @@ macro (OCCT_CONFIGURE BEING_CONGIRUGED_FILE FINAL_NAME)
   if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/${BEING_CONGIRUGED_FILE}")
     configure_file("${BUILD_PATCH}/${BEING_CONGIRUGED_FILE}" "${FINAL_NAME}" @ONLY)
   else()
-    configure_file("${CMAKE_SOURCE_DIR}/${BEING_CONGIRUGED_FILE}" "${FINAL_NAME}" @ONLY)
+    configure_file("${OCCT_ROOT_DIR}/${BEING_CONGIRUGED_FILE}" "${FINAL_NAME}" @ONLY)
   endif()
 endmacro()
 
 macro (OCCT_ADD_SUBDIRECTORY BEING_ADDED_DIRECTORY)
   if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/${BEING_ADDED_DIRECTORY}/CMakeLists.txt")
     add_subdirectory(${BUILD_PATCH}/${BEING_ADDED_DIRECTORY})
-  elseif (EXISTS "${CMAKE_SOURCE_DIR}/${BEING_ADDED_DIRECTORY}/CMakeLists.txt")
-    add_subdirectory (${CMAKE_SOURCE_DIR}/${BEING_ADDED_DIRECTORY})
+  elseif (EXISTS "${OCCT_ROOT_DIR}/${BEING_ADDED_DIRECTORY}/CMakeLists.txt")
+    add_subdirectory (${OCCT_ROOT_DIR}/${BEING_ADDED_DIRECTORY})
   else()
     message (STATUS "${BEING_ADDED_DIRECTORY} directory is not included")
   endif()
@@ -377,8 +383,8 @@ function (OCCT_IS_PRODUCT_REQUIRED CSF_VAR_NAME USE_PRODUCT)
     foreach (USED_TOOLKIT ${BUILD_TOOLKITS})
       if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/src/${USED_TOOLKIT}/EXTERNLIB")
         file (READ "${BUILD_PATCH}/src/${USED_TOOLKIT}/EXTERNLIB" FILE_CONTENT)
-      elseif (EXISTS "${CMAKE_SOURCE_DIR}/src/${USED_TOOLKIT}/EXTERNLIB")
-        file (READ "${CMAKE_SOURCE_DIR}/src/${USED_TOOLKIT}/EXTERNLIB" FILE_CONTENT)
+      elseif (EXISTS "${OCCT_ROOT_DIR}/src/${USED_TOOLKIT}/EXTERNLIB")
+        file (READ "${OCCT_ROOT_DIR}/src/${USED_TOOLKIT}/EXTERNLIB" FILE_CONTENT)
       endif()
 
       string (REGEX MATCH "${CSF_VAR_NAME}" DOES_FILE_CONTAIN "${FILE_CONTENT}")
@@ -395,8 +401,8 @@ function (FILE_TO_LIST FILE_NAME FILE_CONTENT)
   set (LOCAL_FILE_CONTENT)
   if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/${FILE_NAME}")
     file (STRINGS "${BUILD_PATCH}/${FILE_NAME}" LOCAL_FILE_CONTENT)
-  elseif (EXISTS "${CMAKE_SOURCE_DIR}/${FILE_NAME}")
-    file (STRINGS "${CMAKE_SOURCE_DIR}/${FILE_NAME}" LOCAL_FILE_CONTENT)
+  elseif (EXISTS "${OCCT_ROOT_DIR}/${FILE_NAME}")
+    file (STRINGS "${OCCT_ROOT_DIR}/${FILE_NAME}" LOCAL_FILE_CONTENT)
   endif()
 
   set (${FILE_CONTENT} ${LOCAL_FILE_CONTENT} PARENT_SCOPE)
@@ -494,7 +500,7 @@ function (OCC_VERSION OCC_VERSION_MAJOR OCC_VERSION_MINOR OCC_VERSION_MAINTENANC
   set (OCC_VERSION_DEVELOPMENT   dev)
   set (OCC_VERSION_COMPLETE      "7.0.0")
  
-  set (STANDARD_VERSION_FILE "${CMAKE_SOURCE_DIR}/src/Standard/Standard_Version.hxx")
+  set (STANDARD_VERSION_FILE "${OCCT_ROOT_DIR}/src/Standard/Standard_Version.hxx")
   if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/src/Standard/Standard_Version.hxx")
     set (STANDARD_VERSION_FILE "${BUILD_PATCH}/src/Standard/Standard_Version.hxx")
   endif()
@@ -550,24 +556,26 @@ endmacro()
 # prior to version 3.3 not supporting per-configuration install paths
 # for install target files (see https://cmake.org/Bug/view.php?id=14317)
 macro (OCCT_UPDATE_TARGET_FILE)
-  if (NOT SINGLE_GENERATOR)
-    OCCT_INSERT_CODE_FOR_TARGET ()
-  endif()
+  if (NOT EXTERNAL_BUILD)
+    if (NOT SINGLE_GENERATOR)
+      OCCT_INSERT_CODE_FOR_TARGET ()
+    endif()
 
-  install (CODE
-  "cmake_policy(PUSH)
-  cmake_policy(SET CMP0007 NEW)
-  string (TOLOWER \"\${CMAKE_INSTALL_CONFIG_NAME}\" CMAKE_INSTALL_CONFIG_NAME_LOWERCASE)
-  file (GLOB ALL_OCCT_TARGET_FILES \"${INSTALL_DIR}/${INSTALL_DIR_CMAKE}/OpenCASCADE*Targets-\${CMAKE_INSTALL_CONFIG_NAME_LOWERCASE}.cmake\")
-  foreach(TARGET_FILENAME \${ALL_OCCT_TARGET_FILES})
-    file (STRINGS \"\${TARGET_FILENAME}\" TARGET_FILE_CONTENT)
-    file (REMOVE \"\${TARGET_FILENAME}\")
-    foreach (line IN LISTS TARGET_FILE_CONTENT)
-      string (REGEX REPLACE \"[\\\\]?[\\\$]{OCCT_INSTALL_BIN_LETTER}\" \"\${OCCT_INSTALL_BIN_LETTER}\" line \"\${line}\")
-      file (APPEND \"\${TARGET_FILENAME}\" \"\${line}\\n\")
+    install (CODE
+    "cmake_policy(PUSH)
+    cmake_policy(SET CMP0007 NEW)
+    string (TOLOWER \"\${CMAKE_INSTALL_CONFIG_NAME}\" CMAKE_INSTALL_CONFIG_NAME_LOWERCASE)
+    file (GLOB ALL_OCCT_TARGET_FILES \"${INSTALL_DIR}/${INSTALL_DIR_CMAKE}/OpenCASCADE*Targets-\${CMAKE_INSTALL_CONFIG_NAME_LOWERCASE}.cmake\")
+    foreach(TARGET_FILENAME \${ALL_OCCT_TARGET_FILES})
+      file (STRINGS \"\${TARGET_FILENAME}\" TARGET_FILE_CONTENT)
+      file (REMOVE \"\${TARGET_FILENAME}\")
+      foreach (line IN LISTS TARGET_FILE_CONTENT)
+        string (REGEX REPLACE \"[\\\\]?[\\\$]{OCCT_INSTALL_BIN_LETTER}\" \"\${OCCT_INSTALL_BIN_LETTER}\" line \"\${line}\")
+        file (APPEND \"\${TARGET_FILENAME}\" \"\${line}\\n\")
+      endforeach()
     endforeach()
-  endforeach()
-  cmake_policy(POP)")
+    cmake_policy(POP)")
+  endif()
 endmacro()
 
 macro (OCCT_INSERT_CODE_FOR_TARGET)
index 14acf42e868311c513473134b3a2c632d0e5833d..cd5db4c6a634c3f9ce72535915c059a973e40ee2 100644 (file)
@@ -58,8 +58,8 @@ foreach (OCCT_PACKAGE ${USED_PACKAGES})
           if (EXISTS "${CURRENT_FLEX_FILE}" AND EXISTS "${CURRENT_BISON_FILE}" AND ${ARE_FILES_EQUAL})
             set (BISON_OUTPUT_FILE ${CURRENT_BISON_FILE_NAME}.tab.c)
             set (FLEX_OUTPUT_FILE lex.${CURRENT_FLEX_FILE_NAME}.c)
-            BISON_TARGET (Parser_${CURRENT_BISON_FILE_NAME} ${CURRENT_BISON_FILE} ${CMAKE_SOURCE_DIR}/src/${OCCT_PACKAGE}/${BISON_OUTPUT_FILE} COMPILE_FLAGS "-p ${CURRENT_BISON_FILE_NAME}")
-            FLEX_TARGET  (Scanner_${CURRENT_FLEX_FILE_NAME} ${CURRENT_FLEX_FILE} ${CMAKE_SOURCE_DIR}/src/${OCCT_PACKAGE}/${FLEX_OUTPUT_FILE} COMPILE_FLAGS "-P${CURRENT_FLEX_FILE_NAME}")
+            BISON_TARGET (Parser_${CURRENT_BISON_FILE_NAME} ${CURRENT_BISON_FILE} ${OCCT_ROOT_DIR}/src/${OCCT_PACKAGE}/${BISON_OUTPUT_FILE} COMPILE_FLAGS "-p ${CURRENT_BISON_FILE_NAME}")
+            FLEX_TARGET  (Scanner_${CURRENT_FLEX_FILE_NAME} ${CURRENT_FLEX_FILE} ${OCCT_ROOT_DIR}/src/${OCCT_PACKAGE}/${FLEX_OUTPUT_FILE} COMPILE_FLAGS "-P${CURRENT_FLEX_FILE_NAME}")
             ADD_FLEX_BISON_DEPENDENCY (Scanner_${CURRENT_FLEX_FILE_NAME} Parser_${CURRENT_BISON_FILE_NAME})
            
             list (APPEND SOURCE_FILES ${BISON_OUTPUT_FILE} ${FLEX_OUTPUT_FILE})
@@ -79,13 +79,13 @@ foreach (OCCT_PACKAGE ${USED_PACKAGES})
         file (STRINGS "${BUILD_PATCH}/src/${OCCT_PACKAGE}/FILES" SOURCE_FILES_M REGEX ".+[.]mm")
       endif()
     else()
-      file (STRINGS "${CMAKE_SOURCE_DIR}/src/${OCCT_PACKAGE}/FILES"     HEADER_FILES_M   REGEX ".+[.]h")
-      file (STRINGS "${CMAKE_SOURCE_DIR}/src/${OCCT_PACKAGE}/FILES"     HEADER_FILES_LXX REGEX ".+[.]lxx")
-      file (STRINGS "${CMAKE_SOURCE_DIR}/src/${OCCT_PACKAGE}/FILES"     HEADER_FILES_GXX REGEX ".+[.]gxx")
+      file (STRINGS "${OCCT_ROOT_DIR}/src/${OCCT_PACKAGE}/FILES"     HEADER_FILES_M   REGEX ".+[.]h")
+      file (STRINGS "${OCCT_ROOT_DIR}/src/${OCCT_PACKAGE}/FILES"     HEADER_FILES_LXX REGEX ".+[.]lxx")
+      file (STRINGS "${OCCT_ROOT_DIR}/src/${OCCT_PACKAGE}/FILES"     HEADER_FILES_GXX REGEX ".+[.]gxx")
 
-      file (STRINGS "${CMAKE_SOURCE_DIR}/src/${OCCT_PACKAGE}/FILES"     SOURCE_FILES_C REGEX ".+[.]c")
+      file (STRINGS "${OCCT_ROOT_DIR}/src/${OCCT_PACKAGE}/FILES"     SOURCE_FILES_C REGEX ".+[.]c")
       if(APPLE)
-        file (STRINGS "${CMAKE_SOURCE_DIR}/src/${OCCT_PACKAGE}/FILES"   SOURCE_FILES_M REGEX ".+[.]mm")
+        file (STRINGS "${OCCT_ROOT_DIR}/src/${OCCT_PACKAGE}/FILES"   SOURCE_FILES_M REGEX ".+[.]mm")
       endif()
     endif()
     
@@ -101,8 +101,8 @@ foreach (OCCT_PACKAGE ${USED_PACKAGES})
         list (APPEND USED_INCFILES "${BUILD_PATCH}/src/${OCCT_PACKAGE}/${HEADER_FILE}")
         SOURCE_GROUP ("Header Files\\${OCCT_PACKAGE}" FILES "${BUILD_PATCH}/src/${OCCT_PACKAGE}/${HEADER_FILE}")
       else()
-        list (APPEND USED_INCFILES "${CMAKE_SOURCE_DIR}/src/${OCCT_PACKAGE}/${HEADER_FILE}")
-        SOURCE_GROUP ("Header Files\\${OCCT_PACKAGE}" FILES "${CMAKE_SOURCE_DIR}/src/${OCCT_PACKAGE}/${HEADER_FILE}")
+        list (APPEND USED_INCFILES "${OCCT_ROOT_DIR}/src/${OCCT_PACKAGE}/${HEADER_FILE}")
+        SOURCE_GROUP ("Header Files\\${OCCT_PACKAGE}" FILES "${OCCT_ROOT_DIR}/src/${OCCT_PACKAGE}/${HEADER_FILE}")
       endif()
     endforeach()
 
@@ -112,8 +112,8 @@ foreach (OCCT_PACKAGE ${USED_PACKAGES})
         list (APPEND USED_SRCFILES "${BUILD_PATCH}/src/${OCCT_PACKAGE}/${SOURCE_FILE}")
         SOURCE_GROUP ("Source Files\\${OCCT_PACKAGE}" FILES "${BUILD_PATCH}/src/${OCCT_PACKAGE}/${SOURCE_FILE}")
       else()
-        list (APPEND USED_SRCFILES "${CMAKE_SOURCE_DIR}/src/${OCCT_PACKAGE}/${SOURCE_FILE}")
-        SOURCE_GROUP ("Source Files\\${OCCT_PACKAGE}" FILES "${CMAKE_SOURCE_DIR}/src/${OCCT_PACKAGE}/${SOURCE_FILE}")
+        list (APPEND USED_SRCFILES "${OCCT_ROOT_DIR}/src/${OCCT_PACKAGE}/${SOURCE_FILE}")
+        SOURCE_GROUP ("Source Files\\${OCCT_PACKAGE}" FILES "${OCCT_ROOT_DIR}/src/${OCCT_PACKAGE}/${SOURCE_FILE}")
       endif()
     endforeach()
   endif()
@@ -127,7 +127,7 @@ if (MSVC)
   if (APPLY_OCCT_PATCH_DIR AND EXISTS "${APPLY_OCCT_PATCH_DIR}/adm/templates/occt_toolkit.rc.in")
     configure_file("${APPLY_OCCT_PATCH_DIR}/adm/templates/occt_toolkit.rc.in" "${USED_RCFILE}" @ONLY)
   else()
-    configure_file("${CMAKE_SOURCE_DIR}/adm/templates/occt_toolkit.rc.in" "${USED_RCFILE}" @ONLY)
+    configure_file("${OCCT_ROOT_DIR}/adm/templates/occt_toolkit.rc.in" "${USED_RCFILE}" @ONLY)
   endif()
 endif()
 
@@ -146,12 +146,13 @@ endif()
 if ("${PROJECT_NAME}" STREQUAL "DRAWEXE")
   add_executable (${PROJECT_NAME} ${USED_SRCFILES} ${USED_INCFILES} ${USED_RCFILE})
 
-  install (TARGETS ${PROJECT_NAME}
-           DESTINATION "${INSTALL_DIR_BIN}\${OCCT_INSTALL_BIN_LETTER}")
+  if (NOT EXTERNAL_BUILD)
+    install (TARGETS ${PROJECT_NAME} DESTINATION "${INSTALL_DIR_BIN}\${OCCT_INSTALL_BIN_LETTER}")
+  endif()
 else()
   add_library (${PROJECT_NAME} ${USED_SRCFILES} ${USED_INCFILES} ${USED_RCFILE})
 
-  if (MSVC)
+  if (NOT EXTERNAL_BUILD AND MSVC)
     install (FILES  ${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bind/${PROJECT_NAME}.pdb
              CONFIGURATIONS Debug
              DESTINATION "${INSTALL_DIR_BIN}\${OCCT_INSTALL_BIN_LETTER}")
@@ -178,7 +179,11 @@ else()
 endif()
 
 if (CURRENT_MODULE)
-  set_target_properties (${PROJECT_NAME} PROPERTIES FOLDER "Modules/${CURRENT_MODULE}")
+  if (NOT EXTERNAL_BUILD)
+    set_target_properties (${PROJECT_NAME} PROPERTIES FOLDER "Modules/${CURRENT_MODULE}")
+  else()
+    set_target_properties (${PROJECT_NAME} PROPERTIES FOLDER "ExternalProjectTargets/OCCT/Modules/${CURRENT_MODULE}")
+  endif()
   set_target_properties (${PROJECT_NAME} PROPERTIES MODULE "${CURRENT_MODULE}")
   if (APPLE)
     if (NOT "${INSTALL_NAME_DIR}" STREQUAL "")
index 61873967a3e2d7165594c30665eeaa1d067e03c5..54b75a9624c3e11ba3541628661d53354cead240 100644 (file)
@@ -1,12 +1,12 @@
 # tbb
 
 if (NOT DEFINED INSTALL_TBB AND BUILD_SHARED_LIBS)
-  set (INSTALL_TBB OFF CACHE BOOL "${INSTALL_TBB_DESCR}")
+  OCCT_set_cache_variable (INSTALL_TBB OFF BOOL "${INSTALL_TBB_DESCR}")
 endif()
 
 # tbb directory
 if (NOT DEFINED 3RDPARTY_TBB_DIR)
-  set (3RDPARTY_TBB_DIR "" CACHE PATH "The directory containing tbb")
+  OCCT_set_cache_variable (3RDPARTY_TBB_DIR "" PATH "The directory containing tbb")
 endif()
 
 if (MSVC AND BUILD_SHARED_LIBS)
@@ -24,15 +24,15 @@ if (3RDPARTY_DIR AND EXISTS "${3RDPARTY_DIR}")
   if (NOT 3RDPARTY_TBB_DIR OR NOT EXISTS "${3RDPARTY_TBB_DIR}")
     FIND_PRODUCT_DIR ("${3RDPARTY_DIR}" TBB TBB_DIR_NAME)
     if (TBB_DIR_NAME)
-      set (3RDPARTY_TBB_DIR "${3RDPARTY_DIR}/${TBB_DIR_NAME}" CACHE PATH "The directory containing tbb" FORCE)
+      OCCT_set_cache_variable (3RDPARTY_TBB_DIR "${3RDPARTY_DIR}/${TBB_DIR_NAME}" PATH "The directory containing tbb" FORCE)
     endif()
   endif()
 else()
-  #set (3RDPARTY_TBB_DIR "" CACHE PATH "The directory containing TBB" FORCE)
+  #set (3RDPARTY_TBB_DIR "" PATH "The directory containing TBB" FORCE)
 endif()
 
 if (NOT DEFINED 3RDPARTY_TBB_INCLUDE_DIR)
-  set (3RDPARTY_TBB_INCLUDE_DIR "" CACHE PATH "The directory containing headers of the TBB")
+  OCCT_set_cache_variable (3RDPARTY_TBB_INCLUDE_DIR "" PATH "The directory containing headers of the TBB")
 endif()
 
 if (3RDPARTY_TBB_DIR AND EXISTS "${3RDPARTY_TBB_DIR}")
@@ -46,7 +46,7 @@ if (NOT 3RDPARTY_TBB_INCLUDE_DIR OR NOT EXISTS "${3RDPARTY_TBB_INCLUDE_DIR}")
   set (HEADER_NAMES tbb.h tbb/tbb.h)
 
   # set 3RDPARTY_TBB_INCLUDE_DIR as notfound, otherwise find_library can't assign a new value to 3RDPARTY_TBB_INCLUDE_DIR
-  set (3RDPARTY_TBB_INCLUDE_DIR "3RDPARTY_TBB_INCLUDE_DIR-NOTFOUND" CACHE PATH "the path to tbb.h" FORCE)
+  OCCT_set_cache_variable (3RDPARTY_TBB_INCLUDE_DIR "3RDPARTY_TBB_INCLUDE_DIR-NOTFOUND" PATH "the path to tbb.h" FORCE)
 
   if (3RDPARTY_TBB_DIR AND EXISTS "${3RDPARTY_TBB_DIR}")
     find_path (3RDPARTY_TBB_INCLUDE_DIR NAMES ${HEADER_NAMES}
@@ -66,7 +66,7 @@ if (3RDPARTY_TBB_INCLUDE_DIR AND EXISTS "${3RDPARTY_TBB_INCLUDE_DIR}")
 else()
   list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_TBB_INCLUDE_DIR)
 
-  set (3RDPARTY_TBB_INCLUDE_DIR "" CACHE PATH "the path to tbb.h" FORCE)
+  OCCT_set_cache_variable (3RDPARTY_TBB_INCLUDE_DIR "" PATH "the path to tbb.h" FORCE)
 endif()
 
 # common steps for tbb and tbbmalloc
@@ -76,21 +76,21 @@ macro (TBB_PRODUCT_SEARCH PRODUCT_NAME)
 
   # define required tbb/tbbmalloc variables
   if (NOT DEFINED 3RDPARTY_${PRODUCT_NAME}_LIBRARY OR NOT 3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR OR NOT EXISTS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR}")
-    set (3RDPARTY_${PRODUCT_NAME}_LIBRARY "" CACHE FILEPATH "${PRODUCT_NAME} library" FORCE)
+    OCCT_set_cache_variable (3RDPARTY_${PRODUCT_NAME}_LIBRARY "" FILEPATH "${PRODUCT_NAME} library" FORCE)
   endif()
 
   if (NOT DEFINED 3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR)
-    set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR "" CACHE PATH "The directory containing ${PRODUCT_NAME} library")
+    OCCT_set_cache_variable (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR "" PATH "The directory containing ${PRODUCT_NAME} library")
   endif()
 
   if (WIN32)
     if (NOT DEFINED 3RDPARTY_${PRODUCT_NAME}_DLL OR NOT 3RDPARTY_${PRODUCT_NAME}_DLL_DIR OR NOT EXISTS "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR}")
-      set (3RDPARTY_${PRODUCT_NAME}_DLL "" CACHE FILEPATH "${PRODUCT_NAME} shared library" FORCE)
+      OCCT_set_cache_variable (3RDPARTY_${PRODUCT_NAME}_DLL "" FILEPATH "${PRODUCT_NAME} shared library" FORCE)
     endif()
   endif()
 
   if (WIN32 AND NOT DEFINED 3RDPARTY_${PRODUCT_NAME}_DLL_DIR)
-    set (3RDPARTY_${PRODUCT_NAME}_DLL_DIR "" CACHE PATH "The directory containing ${PRODUCT_NAME} shared library")
+    OCCT_set_cache_variable (3RDPARTY_${PRODUCT_NAME}_DLL_DIR "" PATH "The directory containing ${PRODUCT_NAME} shared library")
   endif()
 
   # check 3RDPARTY_${PRODUCT_NAME}_ paths for consistency with specified 3RDPARTY_TBB_DIR
@@ -99,7 +99,7 @@ macro (TBB_PRODUCT_SEARCH PRODUCT_NAME)
 
     if (3RDPARTY_${PRODUCT_NAME}_LIBRARY AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY}")
       get_filename_component (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR "${3RDPARTY_${PRODUCT_NAME}_LIBRARY}" PATH)
-      set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR}" CACHE PATH "The directory containing ${PRODUCT_NAME} library" FORCE)
+      OCCT_set_cache_variable (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR}" PATH "The directory containing ${PRODUCT_NAME} library" FORCE)
     else()
       CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_TBB_DIR 3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR PATH "The directory containing ${PRODUCT_NAME} library")
     endif()
@@ -109,7 +109,7 @@ macro (TBB_PRODUCT_SEARCH PRODUCT_NAME)
 
       if (3RDPARTY_${PRODUCT_NAME}_DLL AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_DLL}")
         get_filename_component (3RDPARTY_${PRODUCT_NAME}_DLL_DIR "${3RDPARTY_${PRODUCT_NAME}_DLL}" PATH)
-        set (3RDPARTY_${PRODUCT_NAME}_DLL_DIR "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR}" CACHE PATH "The directory containing ${PRODUCT_NAME} shared library" FORCE)
+        OCCT_set_cache_variable (3RDPARTY_${PRODUCT_NAME}_DLL_DIR "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR}" PATH "The directory containing ${PRODUCT_NAME} shared library" FORCE)
       else()
 
       CHECK_PATH_FOR_CONSISTENCY (3RDPARTY_TBB_DIR 3RDPARTY_${PRODUCT_NAME}_DLL_DIR PATH "The directory containing ${PRODUCT_NAME} shared library")
@@ -133,7 +133,7 @@ macro (TBB_PRODUCT_SEARCH PRODUCT_NAME)
     set (PRODUCT_PATH_SUFFIXES lib ${lower_PRODUCT_NAME})
 
     # set 3RDPARTY_${PRODUCT_NAME}_LIBRARY as notfound, otherwise find_library can't assign a new value to 3RDPARTY_${PRODUCT_NAME}_LIBRARY
-    set (3RDPARTY_${PRODUCT_NAME}_LIBRARY "3RDPARTY_${PRODUCT_NAME}_LIBRARY-NOTFOUND" CACHE FILEPATH "The path to ${PRODUCT_NAME} library" FORCE)
+    OCCT_set_cache_variable (3RDPARTY_${PRODUCT_NAME}_LIBRARY "3RDPARTY_${PRODUCT_NAME}_LIBRARY-NOTFOUND" FILEPATH "The path to ${PRODUCT_NAME} library" FORCE)
 
     if (3RDPARTY_TBB_DIR AND EXISTS "${3RDPARTY_TBB_DIR}")
       if (NOT EXISTS "${3RDPARTY_TBB_DIR}/lib/${${PRODUCT_NAME}_ARCH_NAME}/${COMPILER}")
@@ -164,9 +164,9 @@ macro (TBB_PRODUCT_SEARCH PRODUCT_NAME)
 
     if (3RDPARTY_${PRODUCT_NAME}_LIBRARY AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_LIBRARY}")
       get_filename_component (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR "${3RDPARTY_${PRODUCT_NAME}_LIBRARY}" PATH)
-      set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR}" CACHE PATH "The directory containing ${PRODUCT_NAME} library" FORCE)
+      OCCT_set_cache_variable (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR "${3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR}" PATH "The directory containing ${PRODUCT_NAME} library" FORCE)
     else()
-      set (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR "" CACHE PATH "The directory containing ${PRODUCT_NAME} library" FORCE)
+      OCCT_set_cache_variable (3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR "" PATH "The directory containing ${PRODUCT_NAME} library" FORCE)
     endif()
   endif()
 
@@ -175,7 +175,7 @@ macro (TBB_PRODUCT_SEARCH PRODUCT_NAME)
   else()
     list (APPEND 3RDPARTY_NOT_INCLUDED 3RDPARTY_${PRODUCT_NAME}_LIBRARY_DIR)
 
-    set (3RDPARTY_${PRODUCT_NAME}_LIBRARY "" CACHE FILEPATH "The path to ${PRODUCT_NAME} library" FORCE)
+    OCCT_set_cache_variable (3RDPARTY_${PRODUCT_NAME}_LIBRARY "" FILEPATH "The path to ${PRODUCT_NAME} library" FORCE)
   endif()
 
   # tbb/tbbmalloc shared library
@@ -185,7 +185,7 @@ macro (TBB_PRODUCT_SEARCH PRODUCT_NAME)
       set (PRODUCT_PATH_SUFFIXES bin)
 
       # set 3RDPARTY_${PRODUCT_NAME}_DLL as notfound, otherwise find_library can't assign a new value to 3RDPARTY_${PRODUCT_NAME}_DLL
-      set (3RDPARTY_${PRODUCT_NAME}_DLL "3RDPARTY_${PRODUCT_NAME}_DLL-NOTFOUND" CACHE FILEPATH "${PRODUCT_NAME} shared library" FORCE)
+      OCCT_set_cache_variable (3RDPARTY_${PRODUCT_NAME}_DLL "3RDPARTY_${PRODUCT_NAME}_DLL-NOTFOUND" FILEPATH "${PRODUCT_NAME} shared library" FORCE)
 
       if (3RDPARTY_TBB_DIR AND EXISTS "${3RDPARTY_TBB_DIR}")
         if (NOT EXISTS "${3RDPARTY_TBB_DIR}/bin/${${PRODUCT_NAME}_ARCH_NAME}/${COMPILER}")
@@ -214,11 +214,11 @@ macro (TBB_PRODUCT_SEARCH PRODUCT_NAME)
 
         if (3RDPARTY_${PRODUCT_NAME}_DLL AND EXISTS "${3RDPARTY_${PRODUCT_NAME}_DLL}")
           get_filename_component (3RDPARTY_${PRODUCT_NAME}_DLL_DIR "${3RDPARTY_${PRODUCT_NAME}_DLL}" PATH)
-          set (3RDPARTY_${PRODUCT_NAME}_DLL_DIR "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR}" CACHE PATH "The directory containing ${PRODUCT_NAME} library" FORCE)
+          OCCT_set_cache_variable (3RDPARTY_${PRODUCT_NAME}_DLL_DIR "${3RDPARTY_${PRODUCT_NAME}_DLL_DIR}" PATH "The directory containing ${PRODUCT_NAME} library" FORCE)
         else()
-          set (3RDPARTY_${PRODUCT_NAME}_DLL_DIR "" CACHE PATH "The directory containing ${PRODUCT_NAME} shared library" FORCE)
+          OCCT_set_cache_variable (3RDPARTY_${PRODUCT_NAME}_DLL_DIR "" PATH "The directory containing ${PRODUCT_NAME} shared library" FORCE)
 
-          set (3RDPARTY_${PRODUCT_NAME}_DLL "" CACHE FILEPATH "${PRODUCT_NAME} shared library" FORCE)
+          OCCT_set_cache_variable (3RDPARTY_${PRODUCT_NAME}_DLL "" FILEPATH "${PRODUCT_NAME} shared library" FORCE)
         endif()
       endif()
     endif()
@@ -289,4 +289,7 @@ if (BUILD_SHARED_LIBS)
       set (USED_3RDPARTY_TBB_DIR ${3RDPARTY_TBB_LIBRARY_DIR})
     endif()
   endif()
+endif()
+if (3RDPARTY_${PRODUCT_NAME}_DLL)
+  OCCT_set_cache_variable (3RDPARTY_${PRODUCT_NAME}_DLL "${3RDPARTY_${PRODUCT_NAME}_DLL}" PATH "" FORCE)
 endif()
\ No newline at end of file
index 2ce3eef34f5ed65d4984e221996edb58c1c71c69..fa67ba3a37a01cb49fc89e753c8486bc24578026 100644 (file)
@@ -1,40 +1,40 @@
 # tcl
 
 if (NOT DEFINED INSTALL_TCL AND BUILD_SHARED_LIBS)
-  set (INSTALL_TCL OFF CACHE BOOL "${INSTALL_TCL_DESCR}")
+  OCCT_set_cache_variable (INSTALL_TCL OFF BOOL "${INSTALL_TCL_DESCR}")
 endif()
 
 # tcl directory
 if (NOT DEFINED 3RDPARTY_TCL_DIR)
-  set (3RDPARTY_TCL_DIR "" CACHE PATH "The directory containing tcl")
+  OCCT_set_cache_variable (3RDPARTY_TCL_DIR "" PATH "The directory containing tcl")
 endif()
 
 # tcl include directory
 if (NOT DEFINED 3RDPARTY_TCL_INCLUDE_DIR)
-  set (3RDPARTY_TCL_INCLUDE_DIR "" CACHE FILEPATH "The directory containing headers of tcl")
+  OCCT_set_cache_variable (3RDPARTY_TCL_INCLUDE_DIR "" FILEPATH "The directory containing headers of tcl")
 endif()
 
 if (BUILD_SHARED_LIBS)
   # tcl library file (with absolute path)
   if (NOT DEFINED 3RDPARTY_TCL_LIBRARY OR NOT 3RDPARTY_TCL_LIBRARY_DIR)
-    set (3RDPARTY_TCL_LIBRARY "" CACHE FILEPATH "tcl library"  FORCE)
+    OCCT_set_cache_variable (3RDPARTY_TCL_LIBRARY "" FILEPATH "tcl library"  FORCE)
   endif()
 
   # tcl library directory
   if (NOT DEFINED 3RDPARTY_TCL_LIBRARY_DIR)
-    set (3RDPARTY_TCL_LIBRARY_DIR "" CACHE FILEPATH "The directory containing tcl library")
+    OCCT_set_cache_variable (3RDPARTY_TCL_LIBRARY_DIR "" FILEPATH "The directory containing tcl library")
   endif()
 
   # tcl shared library (with absolute path)
   if (WIN32)
     if (NOT DEFINED 3RDPARTY_TCL_DLL OR NOT 3RDPARTY_TCL_DLL_DIR)
-      set (3RDPARTY_TCL_DLL "" CACHE FILEPATH "tcl shared library" FORCE)
+      OCCT_set_cache_variable (3RDPARTY_TCL_DLL "" FILEPATH "tcl shared library" FORCE)
     endif()
   endif()
 
   # tcl shared library directory
   if (WIN32 AND NOT DEFINED 3RDPARTY_TCL_DLL_DIR)
-    set (3RDPARTY_TCL_DLL_DIR "" CACHE FILEPATH "The directory containing tcl shared library")
+    OCCT_set_cache_variable (3RDPARTY_TCL_DLL_DIR "" FILEPATH "The directory containing tcl shared library")
   endif()
 endif()
 
@@ -42,7 +42,7 @@ endif()
 if (NOT 3RDPARTY_TCL_DIR AND 3RDPARTY_DIR)
   FIND_PRODUCT_DIR("${3RDPARTY_DIR}" tcl TCL_DIR_NAME)
   if (TCL_DIR_NAME)
-    set (3RDPARTY_TCL_DIR "${3RDPARTY_DIR}/${TCL_DIR_NAME}" CACHE PATH "The directory containing tcl" FORCE)
+    OCCT_set_cache_variable (3RDPARTY_TCL_DIR "${3RDPARTY_DIR}/${TCL_DIR_NAME}" PATH "The directory containing tcl" FORCE)
   endif()
 endif()
 
@@ -60,7 +60,7 @@ find_package(TCL QUIET)
 # tcl include dir
 if (NOT 3RDPARTY_TCL_INCLUDE_DIR)
   if (TCL_INCLUDE_PATH AND EXISTS "${TCL_INCLUDE_PATH}")
-    set (3RDPARTY_TCL_INCLUDE_DIR "${TCL_INCLUDE_PATH}" CACHE FILEPATH "The directory containing headers of TCL" FORCE)
+    OCCT_set_cache_variable (3RDPARTY_TCL_INCLUDE_DIR "${TCL_INCLUDE_PATH}" FILEPATH "The directory containing headers of TCL" FORCE)
   endif()
 endif()
 
@@ -68,11 +68,11 @@ if (BUILD_SHARED_LIBS)
   # tcl dir and library
   if (NOT 3RDPARTY_TCL_LIBRARY)
     if (TCL_LIBRARY AND EXISTS "${TCL_LIBRARY}")
-      set (3RDPARTY_TCL_LIBRARY "${TCL_LIBRARY}" CACHE FILEPATH "TCL library" FORCE)
+      OCCT_set_cache_variable (3RDPARTY_TCL_LIBRARY "${TCL_LIBRARY}" FILEPATH "TCL library" FORCE)
 
       if (NOT 3RDPARTY_TCL_LIBRARY_DIR)
         get_filename_component (3RDPARTY_TCL_LIBRARY_DIR "${3RDPARTY_TCL_LIBRARY}" PATH)
-        set (3RDPARTY_TCL_LIBRARY_DIR "${3RDPARTY_TCL_LIBRARY_DIR}" CACHE FILEPATH "The directory containing TCL library" FORCE)
+        OCCT_set_cache_variable (3RDPARTY_TCL_LIBRARY_DIR "${3RDPARTY_TCL_LIBRARY_DIR}" FILEPATH "The directory containing TCL library" FORCE)
       endif()
     endif()
   endif()
@@ -117,12 +117,12 @@ if (BUILD_SHARED_LIBS)
 
 
     if (NOT 3RDPARTY_TCL_LIBRARY OR NOT EXISTS "${3RDPARTY_TCL_LIBRARY}")
-      set (3RDPARTY_TCL_LIBRARY "" CACHE FILEPATH "TCL library" FORCE)
+      OCCT_set_cache_variable (3RDPARTY_TCL_LIBRARY "" FILEPATH "TCL library" FORCE)
     endif()
 
     if (NOT 3RDPARTY_TCL_LIBRARY_DIR AND 3RDPARTY_TCL_LIBRARY)
       get_filename_component (3RDPARTY_TCL_LIBRARY_DIR "${3RDPARTY_TCL_LIBRARY}" PATH)
-      set (3RDPARTY_TCL_LIBRARY_DIR "${3RDPARTY_TCL_LIBRARY_DIR}" CACHE FILEPATH "The directory containing TCL library" FORCE)
+      OCCT_set_cache_variable (3RDPARTY_TCL_LIBRARY_DIR "${3RDPARTY_TCL_LIBRARY_DIR}" FILEPATH "The directory containing TCL library" FORCE)
     endif()
   endif()
 
@@ -159,13 +159,13 @@ if (BUILD_SHARED_LIBS)
         set (DLL_FOLDER_FOR_SEARCH "${3RDPARTY_TCL_LIBRARY_DIR_PARENT}/bin")
       endif()
 
-      set (3RDPARTY_TCL_DLL "3RDPARTY_TCL_DLL-NOTFOUND" CACHE FILEPATH "TCL shared library" FORCE)
+      OCCT_set_cache_variable (3RDPARTY_TCL_DLL "3RDPARTY_TCL_DLL-NOTFOUND" FILEPATH "TCL shared library" FORCE)
       find_library (3RDPARTY_TCL_DLL NAMES tcl${3RDPARTY_TCL_LIBRARY_VERSION}
                                             PATHS "${DLL_FOLDER_FOR_SEARCH}"
                                             NO_DEFAULT_PATH)
 
       if (NOT 3RDPARTY_TCL_DLL OR NOT EXISTS "${3RDPARTY_TCL_DLL}")
-        set (3RDPARTY_TCL_DLL "" CACHE FILEPATH "TCL shared library" FORCE)
+        OCCT_set_cache_variable (3RDPARTY_TCL_DLL "" FILEPATH "TCL shared library" FORCE)
       endif()
     endif()
     if (NOT 3RDPARTY_TCL_DLL_DIR AND 3RDPARTY_TCL_DLL)
@@ -292,3 +292,11 @@ if (NOT BUILD_SHARED_LIBS)
   OCCT_CHECK_AND_UNSET (3RDPARTY_TCL_DLL_DIR)
   OCCT_CHECK_AND_UNSET (INSTALL_TCL)
 endif()
+
+if (3RDPARTY_TCL_DLL)
+  OCCT_set_cache_variable (3RDPARTY_TCL_DLL ${3RDPARTY_TCL_DLL} PATH "" FORCE)
+endif()
+if (3RDPARTY_TCL_LIBRARY)
+  OCCT_set_cache_variable (3RDPARTY_TCL_LIBRARY ${3RDPARTY_TCL_LIBRARY} PATH "" FORCE)
+endif()
+
index 892e5667bba04df23281a14651f8c9099e2bb053..4efb567f093d0deb34fd24fec9d60b1ac7cd0cab 100644 (file)
@@ -1,44 +1,44 @@
 # tk
 
 if (NOT DEFINED INSTALL_TK AND BUILD_SHARED_LIBS)
-  set (INSTALL_TK OFF CACHE BOOL "${INSTALL_TK_DESCR}")
+  OCCT_set_cache_variable (INSTALL_TK OFF BOOL "${INSTALL_TK_DESCR}")
 endif()
 
 # tk directory
 if (NOT DEFINED 3RDPARTY_TK_DIR)
-  set (3RDPARTY_TK_DIR "" CACHE PATH "The directory containing tk")
+  OCCT_set_cache_variable (3RDPARTY_TK_DIR "" PATH "The directory containing tk")
 endif ()
 
 if (NOT 3RDPARTY_TK_DIR AND 3RDPARTY_TCLTK_DIR)
-  set (3RDPARTY_TK_DIR "${3RDPARTY_TCLTK_DIR}" CACHE PATH "The directory containing tk" FORCE)
+  OCCT_set_cache_variable (3RDPARTY_TK_DIR "${3RDPARTY_TCLTK_DIR}" PATH "The directory containing tk" FORCE)
 endif()
 
 # tk include directory
 if (NOT DEFINED 3RDPARTY_TK_INCLUDE_DIR)
-  set (3RDPARTY_TK_INCLUDE_DIR "" CACHE FILEPATH "The directory containing headers of tk")
+  OCCT_set_cache_variable (3RDPARTY_TK_INCLUDE_DIR "" FILEPATH "The directory containing headers of tk")
 endif()
 
 if (BUILD_SHARED_LIBS)
   # tk library file (with absolute path)
   if (NOT DEFINED 3RDPARTY_TK_LIBRARY OR NOT 3RDPARTY_TK_LIBRARY_DIR)
-    set (3RDPARTY_TK_LIBRARY "" CACHE FILEPATH "tk library" FORCE)
+    OCCT_set_cache_variable (3RDPARTY_TK_LIBRARY "" FILEPATH "tk library" FORCE)
   endif()
 
   # tk library directory
   if (NOT DEFINED 3RDPARTY_TK_LIBRARY_DIR)
-    set (3RDPARTY_TK_LIBRARY_DIR "" CACHE FILEPATH "The directory containing tk library")
+    OCCT_set_cache_variable (3RDPARTY_TK_LIBRARY_DIR "" FILEPATH "The directory containing tk library")
   endif()
 
   # tk shared library (with absolute path)
   if (WIN32)
     if (NOT DEFINED 3RDPARTY_TK_DLL OR NOT 3RDPARTY_TK_DLL_DIR)
-      set (3RDPARTY_TK_DLL "" CACHE FILEPATH "tk shared library" FORCE)
+      OCCT_set_cache_variable (3RDPARTY_TK_DLL "" FILEPATH "tk shared library" FORCE)
     endif()
   endif()
 
   # tk shared library directory
   if (WIN32 AND NOT DEFINED 3RDPARTY_TK_DLL_DIR)
-    set (3RDPARTY_TK_DLL_DIR "" CACHE FILEPATH "The directory containing tk shared library")
+    OCCT_set_cache_variable (3RDPARTY_TK_DLL_DIR "" FILEPATH "The directory containing tk shared library")
   endif()
 endif()
 
@@ -46,7 +46,7 @@ endif()
 if (NOT 3RDPARTY_TK_DIR AND 3RDPARTY_DIR)
   FIND_PRODUCT_DIR("${3RDPARTY_DIR}" tk TK_DIR_NAME)
   if (TK_DIR_NAME)
-    set (3RDPARTY_TK_DIR "${3RDPARTY_DIR}/${TK_DIR_NAME}" CACHE PATH "The directory containing tk" FORCE)
+    OCCT_set_cache_variable (3RDPARTY_TK_DIR "${3RDPARTY_DIR}/${TK_DIR_NAME}" PATH "The directory containing tk" FORCE)
   endif()
 endif()
 
@@ -64,7 +64,7 @@ find_package(TCL QUIET)
 # tk include dir
 if (NOT 3RDPARTY_TK_INCLUDE_DIR)
   if (TK_INCLUDE_PATH AND EXISTS "${TK_INCLUDE_PATH}")
-    set (3RDPARTY_TK_INCLUDE_DIR "${TK_INCLUDE_PATH}" CACHE FILEPATH "The directory containing headers of TK" FORCE)
+    OCCT_set_cache_variable (3RDPARTY_TK_INCLUDE_DIR "${TK_INCLUDE_PATH}" FILEPATH "The directory containing headers of TK" FORCE)
   endif()
 endif()
 
@@ -72,11 +72,11 @@ if (BUILD_SHARED_LIBS)
   # tk dir and library
   if (NOT 3RDPARTY_TK_LIBRARY)
     if (TK_LIBRARY AND EXISTS "${TK_LIBRARY}")
-      set (3RDPARTY_TK_LIBRARY "${TK_LIBRARY}" CACHE FILEPATH "TK library" FORCE)
+      OCCT_set_cache_variable (3RDPARTY_TK_LIBRARY "${TK_LIBRARY}" FILEPATH "TK library" FORCE)
 
       if (NOT 3RDPARTY_TK_LIBRARY_DIR)
         get_filename_component (3RDPARTY_TK_LIBRARY_DIR "${3RDPARTY_TK_LIBRARY}" PATH)
-        set (3RDPARTY_TK_LIBRARY_DIR "${3RDPARTY_TK_LIBRARY_DIR}" CACHE FILEPATH "The directory containing TK library" FORCE)
+        OCCT_set_cache_variable (3RDPARTY_TK_LIBRARY_DIR "${3RDPARTY_TK_LIBRARY_DIR}" FILEPATH "The directory containing TK library" FORCE)
       endif()
     endif()
   endif()
@@ -96,7 +96,7 @@ if (BUILD_SHARED_LIBS)
           set (DLL_FOLDER_FOR_SEARCH "${3RDPARTY_TK_LIBRARY_DIR_PARENT}/bin")
         endif()
 
-        set (3RDPARTY_TK_DLL "3RDPARTY_TK_DLL-NOTFOUND" CACHE FILEPATH "TK shared library" FORCE)
+        OCCT_set_cache_variable (3RDPARTY_TK_DLL "3RDPARTY_TK_DLL-NOTFOUND" FILEPATH "TK shared library" FORCE)
         find_library (3RDPARTY_TK_DLL NAMES tk86 tk85
                                               PATHS "${DLL_FOLDER_FOR_SEARCH}"
                                               NO_DEFAULT_PATH)
@@ -109,7 +109,7 @@ COMPLIANCE_PRODUCT_CONSISTENCY(TK)
 if (BUILD_SHARED_LIBS)
   # tk dir and library
   if (NOT 3RDPARTY_TK_LIBRARY)
-    set (3RDPARTY_TK_LIBRARY "3RDPARTY_TK_LIBRARY-NOTFOUND" CACHE FILEPATH "TK library" FORCE)
+    OCCT_set_cache_variable (3RDPARTY_TK_LIBRARY "3RDPARTY_TK_LIBRARY-NOTFOUND" FILEPATH "TK library" FORCE)
     find_library (3RDPARTY_TK_LIBRARY NAMES tk8.6 tk86 tk8.5 tk85
                                               PATHS "${3RDPARTY_TK_LIBRARY_DIR}"
                                               NO_DEFAULT_PATH)
@@ -121,12 +121,12 @@ if (BUILD_SHARED_LIBS)
 
 
     if (NOT 3RDPARTY_TK_LIBRARY OR NOT EXISTS "${3RDPARTY_TK_LIBRARY}")
-      set (3RDPARTY_TK_LIBRARY "" CACHE FILEPATH "TK library" FORCE)
+      OCCT_set_cache_variable (3RDPARTY_TK_LIBRARY "" FILEPATH "TK library" FORCE)
     endif()
 
     if (NOT 3RDPARTY_TK_LIBRARY_DIR AND 3RDPARTY_TK_LIBRARY)
       get_filename_component (3RDPARTY_TK_LIBRARY_DIR "${3RDPARTY_TK_LIBRARY}" PATH)
-      set (3RDPARTY_TK_LIBRARY_DIR "${3RDPARTY_TK_LIBRARY_DIR}" CACHE FILEPATH "The directory containing TK library" FORCE)
+      OCCT_set_cache_variable (3RDPARTY_TK_LIBRARY_DIR "${3RDPARTY_TK_LIBRARY_DIR}" FILEPATH "The directory containing TK library" FORCE)
     endif()
   endif()
 
@@ -163,13 +163,13 @@ if (BUILD_SHARED_LIBS)
         set (DLL_FOLDER_FOR_SEARCH "${3RDPARTY_TK_LIBRARY_DIR_PARENT}/bin")
       endif()
 
-      set (3RDPARTY_TK_DLL "3RDPARTY_TK_DLL-NOTFOUND" CACHE FILEPATH "TK shared library" FORCE)
+      OCCT_set_cache_variable (3RDPARTY_TK_DLL "3RDPARTY_TK_DLL-NOTFOUND" FILEPATH "TK shared library" FORCE)
       find_library (3RDPARTY_TK_DLL NAMES tk${3RDPARTY_TK_LIBRARY_VERSION}
                                             PATHS "${DLL_FOLDER_FOR_SEARCH}"
                                             NO_DEFAULT_PATH)
 
       if (NOT 3RDPARTY_TK_DLL OR NOT EXISTS "${3RDPARTY_TK_DLL}")
-        set (3RDPARTY_TK_DLL "" CACHE FILEPATH "TK shared library" FORCE)
+        OCCT_set_cache_variable (3RDPARTY_TK_DLL "" FILEPATH "TK shared library" FORCE)
       endif()
     endif()
     if (NOT 3RDPARTY_TK_DLL_DIR AND 3RDPARTY_TK_DLL)
@@ -284,3 +284,10 @@ if (NOT BUILD_SHARED_LIBS)
   OCCT_CHECK_AND_UNSET (3RDPARTY_TK_DLL_DIR)
   OCCT_CHECK_AND_UNSET (INSTALL_TK)
 endif()
+
+if (3RDPARTY_TK_DLL)
+  OCCT_set_cache_variable (3RDPARTY_TK_DLL "${3RDPARTY_TK_DLL}" PATH "" FORCE)
+endif()
+if (3RDPARTY_TK_LIBRARY)
+  OCCT_set_cache_variable (3RDPARTY_TK_LIBRARY "${3RDPARTY_TK_LIBRARY}" PATH "" FORCE)
+endif()
index bf578f87e566d0ca04e9d027c3283ce472265720..437e3e034452ab5a1c242a71b90e5a47f2a32d57 100644 (file)
@@ -160,5 +160,5 @@ set (USE_D3D_DESCR "Indicates whether optional Direct3D wrapper in OCCT visualiz
 
 macro (BUILD_MODULE MODULE_NAME)
   set (ENABLE_MODULE TRUE)
-  set (BUILD_MODULE_${MODULE_NAME} ${ENABLE_MODULE} CACHE BOOL "${BUILD_MODULE_${MODULE_NAME}_DESCR}")
+  OCCT_set_cache_variable (BUILD_MODULE_${MODULE_NAME} ${ENABLE_MODULE} BOOL "${BUILD_MODULE_${MODULE_NAME}_DESCR}")
 endmacro()