ee5befae |
1 | # OCCT resource files generation |
2 | |
3 | macro (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() |
64 | endmacro() |
65 | |
66 | |
67 | FILE_TO_LIST ("adm/RESOURCES" RESOURCES) |
68 | foreach (CurrentResource ${RESOURCES}) |
69 | get_filename_component (CurrentResource_FileName "${CurrentResource}" NAME) |
70 | if ("${CurrentResource_FileName}" STREQUAL TObj.msg OR |
71 | "${CurrentResource_FileName}" STREQUAL Units.dat OR |
72 | "${CurrentResource}" STREQUAL XSMessage OR |
73 | "${CurrentResource}" STREQUAL SHMessage OR |
74 | "${CurrentResource}" STREQUAL Shaders) |
75 | OCCT_GENERATE_CONTENT_ONLY ("${CurrentResource}") |
76 | endif() |
77 | endforeach() |