0030715: Configuration, CMake - error build with QTANGLE
[occt.git] / adm / cmake / occt_resources.cmake
CommitLineData
ee5befae 1# OCCT resource files generation
2
3macro (OCCT_GENERATE_CONTENT_ONLY CurrentResource)
4 set (RESOURCE_FILES)
5 set (isResDirectory FALSE)
6 if (IS_DIRECTORY "${CMAKE_SOURCE_DIR}/src/${CurrentResource}")
7 file (STRINGS "${CMAKE_SOURCE_DIR}/src/${CurrentResource}/FILES" RESOURCE_FILES)
8 set (CurrentResource_Directory "${CurrentResource}")
9 set (isResDirectory TRUE)
10 else()
11 get_filename_component (CurrentResource_Name "${CurrentResource}" NAME)
12 list (APPEND RESOURCE_FILES "res:::${CurrentResource_Name}")
13 get_filename_component (CurrentResource_Directory "${CurrentResource}" DIRECTORY)
14 endif()
15
16 # Add current toolkit into RESOURCE_TOOLKITS array to copy it to the BUILD directory
17 list (APPEND RESOURCE_TOOLKITS "${CurrentResource_Directory}")
18 list (REMOVE_DUPLICATES RESOURCE_TOOLKITS)
19
20 if (BUILD_RESOURCES)
21 foreach (RESOURCE_FILE ${RESOURCE_FILES})
22 string (REGEX MATCH "^[^:]+:::" IS_RESOURCE "${RESOURCE_FILE}")
23 if (IS_RESOURCE)
24 string (REGEX REPLACE "[^:]+:+" "" RESOURCE_FILE "${RESOURCE_FILE}")
25
26 get_filename_component (CurrentResource_FileName "${RESOURCE_FILE}" NAME)
27 string (REPLACE "." "_" CurrentResource_FileName "${CurrentResource_FileName}")
28 set (HEADER_FILE_NAME "${CurrentResource_Directory}_${CurrentResource_FileName}.pxx")
29
30 set (toProcessResFile TRUE)
31 if (isResDirectory)
32 list (FIND RESOURCE_FILES "${HEADER_FILE_NAME}" aResIndex)
33 if ("${aResIndex}" STREQUAL "-1")
34 set (toProcessResFile FALSE)
35 endif()
36 endif()
37
38 if (toProcessResFile)
39 message(STATUS "Info. Generating header file from resource file: ${CMAKE_SOURCE_DIR}/src/${CurrentResource_Directory}/${RESOURCE_FILE}")
40
41 # generate content for header file
b2134621 42 set (OCCT_HEADER_FILE_CONTENT "// This file has been automatically generated from resource file src/${CurrentResource_Directory}/${RESOURCE_FILE}\n\n")
ee5befae 43
44 # read resource file
45 file (STRINGS "${CMAKE_SOURCE_DIR}/src/${CurrentResource_Directory}/${RESOURCE_FILE}" RESOURCE_FILE_LINES_LIST)
46
b2134621 47 set (OCCT_HEADER_FILE_CONTENT "${OCCT_HEADER_FILE_CONTENT}static const char ${CurrentResource_Directory}_${CurrentResource_FileName}[] =")
ee5befae 48 foreach (line IN LISTS RESOURCE_FILE_LINES_LIST)
49 string (REPLACE "\"" "\\\"" line "${line}")
b2134621 50 set (OCCT_HEADER_FILE_CONTENT "${OCCT_HEADER_FILE_CONTENT}\n \"${line}\\n\"")
ee5befae 51 endforeach()
b2134621 52 set (OCCT_HEADER_FILE_CONTENT "${OCCT_HEADER_FILE_CONTENT};")
ee5befae 53
54 # Save generated content to header file
55 set (HEADER_FILE "${CMAKE_SOURCE_DIR}/src/${CurrentResource_Directory}/${HEADER_FILE_NAME}")
56 if (EXISTS "${HEADER_FILE}")
57 file (REMOVE "${HEADER_FILE}")
58 endif()
59 configure_file ("${CMAKE_SOURCE_DIR}/adm/templates/header.in" "${HEADER_FILE}" @ONLY NEWLINE_STYLE LF)
60 endif()
61 endif()
62 endforeach()
63 endif()
64endmacro()
65
66
67FILE_TO_LIST ("adm/RESOURCES" RESOURCES)
68foreach (CurrentResource ${RESOURCES})
69 get_filename_component (CurrentResource_FileName "${CurrentResource}" NAME)
70 if ("${CurrentResource_FileName}" STREQUAL TObj.msg OR
ad8b073e 71 "${CurrentResource_FileName}" STREQUAL BOPAlgo.msg OR
ee5befae 72 "${CurrentResource_FileName}" STREQUAL Units.dat OR
73 "${CurrentResource}" STREQUAL XSMessage OR
74 "${CurrentResource}" STREQUAL SHMessage OR
75 "${CurrentResource}" STREQUAL Shaders)
76 OCCT_GENERATE_CONTENT_ONLY ("${CurrentResource}")
77 endif()
78endforeach()