0027121: Configuration, CMake - build process does not use patched header files
authorski <ski@opencascade.com>
Thu, 28 Jan 2016 11:48:07 +0000 (14:48 +0300)
committerbugmaster <bugmaster@opencascade.com>
Thu, 4 Feb 2016 10:41:37 +0000 (13:41 +0300)
Corrected collecting of all headers to <binary dir>/inc folder

Small correction of documentation about CMake configuration process

adm/cmake/occt_macros.cmake
dox/dev_guides/building/cmake/cmake.md

index ea495b5..9a011ed 100644 (file)
@@ -209,60 +209,72 @@ macro (COLLECT_AND_INSTALL_OCCT_HEADER_FILES ROOT_TARGET_OCCT_DIR OCCT_BUILD_TOO
   message (STATUS "Info: \(${CURRENT_TIME}\) Compare FILES with files in package directories...")
 
   foreach (OCCT_PACKAGE ${OCCT_USED_PACKAGES})
-    if (EXISTS "${CMAKE_SOURCE_DIR}/src/${OCCT_PACKAGE}/FILES")
+    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)
+    else()
+      message (WARNING "FILES has not been found in ${CMAKE_SOURCE_DIR}/src/${OCCT_PACKAGE}")
+      continue()
+    endif()
 
-      list (LENGTH OCCT_ALL_FILE_NAMES ALL_FILES_NB)
-      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}/*.*")
-      foreach (OCCT_FILE_IN_DIR ${OCCT_ALL_FILES_IN_DIR})
-        get_filename_component (OCCT_FILE_IN_DIR_NAME ${OCCT_FILE_IN_DIR} NAME)
-
-        set (OCCT_FILE_IN_DIR_STATUS OFF)
+    list (LENGTH OCCT_ALL_FILE_NAMES ALL_FILES_NB)
+    math (EXPR ALL_FILES_NB "${ALL_FILES_NB} - 1" )
 
-        if (${ALL_FILES_NB} LESS 0)
-          break()
-        endif()
+    # 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_PATCH_DIR "${BUILD_PATCH}/src/${OCCT_PACKAGE}/*.*")
 
-        foreach (FILE_INDEX RANGE ${ALL_FILES_NB})
-          list (GET OCCT_ALL_FILE_NAMES ${FILE_INDEX} OCCT_FILE_NAME)
+    # 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 (APPEND OCCT_ALL_FILES_IN_DIR "${OCCT_FILE_IN_PATCH_DIR}")
+    endforeach()
 
-          if ("${OCCT_FILE_IN_DIR_NAME}" STREQUAL "${OCCT_FILE_NAME}")
-            set (OCCT_FILE_IN_DIR_STATUS ON)
+    foreach (OCCT_FILE_IN_DIR ${OCCT_ALL_FILES_IN_DIR})
+      get_filename_component (OCCT_FILE_IN_DIR_NAME ${OCCT_FILE_IN_DIR} NAME)
 
-            string (REGEX MATCH ".+\\.[hlg]xx|.+\\.h$" IS_HEADER_FOUND "${OCCT_FILE_NAME}")
-            if (IS_HEADER_FOUND)
-              list (APPEND OCCT_HEADER_FILES_COMPLETE ${OCCT_FILE_IN_DIR})
+      set (OCCT_FILE_IN_DIR_STATUS OFF)
 
-              # collect header files with name that does not contain its package one
-              string (FIND "${OCCT_FILE_NAME}" "${OCCT_PACKAGE}_" FOUND_INDEX)
-              if (NOT ${FOUND_INDEX} EQUAL 0)
-                list (APPEND OCCT_HEADER_FILE_WITH_PROPER_NAMES "${OCCT_FILE_NAME}")
-              endif()            
-            endif()
+      if (${ALL_FILES_NB} LESS 0)
+        break()
+      endif()
 
-            # remove found element from list
-            list (REMOVE_AT OCCT_ALL_FILE_NAMES ${FILE_INDEX})
-            math (EXPR ALL_FILES_NB "${ALL_FILES_NB} - 1" ) # decrement number
+      foreach (FILE_INDEX RANGE ${ALL_FILES_NB})
+        list (GET OCCT_ALL_FILE_NAMES ${FILE_INDEX} OCCT_FILE_NAME)
 
-            break()
-          endif()
-        endforeach()
+        if ("${OCCT_FILE_IN_DIR_NAME}" STREQUAL "${OCCT_FILE_NAME}")
+          set (OCCT_FILE_IN_DIR_STATUS ON)
 
-        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")
-          
           string (REGEX MATCH ".+\\.[hlg]xx|.+\\.h$" IS_HEADER_FOUND "${OCCT_FILE_NAME}")
           if (IS_HEADER_FOUND)
-            list (APPEND OCCT_HEADER_FILE_NAMES_NOT_IN_FILES ${OCCT_FILE_NAME})
+            list (APPEND OCCT_HEADER_FILES_COMPLETE ${OCCT_FILE_IN_DIR})
+
+            # collect header files with name that does not contain its package one
+            string (FIND "${OCCT_FILE_NAME}" "${OCCT_PACKAGE}_" FOUND_INDEX)
+            if (NOT ${FOUND_INDEX} EQUAL 0)
+              list (APPEND OCCT_HEADER_FILE_WITH_PROPER_NAMES "${OCCT_FILE_NAME}")
+            endif()
           endif()
+
+          # remove found element from list
+          list (REMOVE_AT OCCT_ALL_FILE_NAMES ${FILE_INDEX})
+          math (EXPR ALL_FILES_NB "${ALL_FILES_NB} - 1" ) # decrement number
+
+          break()
         endif()
       endforeach()
-    else()
-      message (WARNING "FILES has not been found in ${CMAKE_SOURCE_DIR}/src/${OCCT_PACKAGE}")
-    endif()
+
+      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")
+
+        string (REGEX MATCH ".+\\.[hlg]xx|.+\\.h$" IS_HEADER_FOUND "${OCCT_FILE_NAME}")
+        if (IS_HEADER_FOUND)
+          list (APPEND OCCT_HEADER_FILE_NAMES_NOT_IN_FILES ${OCCT_FILE_NAME})
+        endif()
+      endif()
+    endforeach()
   endforeach()
   
   # create new file including found header
index 421fd17..fccda7c 100644 (file)
@@ -109,8 +109,7 @@ The following table enumerates the full list of environment variables used at co
 | BUILD_MODULE_OcctMfcSamples | Boolean flag | Indicates whether MFC samples should be built together with OCCT. This option is only relevant to Windows platforms |
 | BUILD_DOC_OcctOverview | Boolean flag | Indicates whether OCCT overview documentation project should be created together with OCCT. It is not built together with OCCT. Checking this options leads to automatic search of Doxygen binaries. Building of it will be call Doxygen command to generate the documentation in HTML format |
 | BUILD_PATCH | Path | Points to the directory recognized as a "patch" for OCCT. If specified, the files from this directory take precedence over the corresponding native OCCT sources. This way you are able to introduce patches to Open CASCADE Technology not affecting the original source distribution |
-| BUILD_WITH_DEBUG | Boolean flag | Points to the directory recognized as a 'patch' for OCCT. If specified, the files from this directory take precedence over the corresponding native
-OCCT sources. This way you are able to introduce patches to Open CASCADE Technology not affecting the original source distribution |
+| BUILD_WITH_DEBUG | Boolean flag | Enables extended messages of many OCCT algorithms, usually printed to cout. These include messages on internal errors and special cases encountered, timing etc |
 | CMAKE_CONFIGURATION_TYPES | String | Semicolon-separated CMake configurations |
 | INSTALL_DIR | Path | Points to the installation directory |
 | INSTALL_FREETYPE | Boolean flag | Indicates whether Freetype binaries should be installed into the installation directory |