1 # OCCT resource files generation
3 macro (OCCT_GENERATE_CONTENT_ONLY CurrentResource)
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)
11 get_filename_component (CurrentResource_Name "${CurrentResource}" NAME)
12 list (APPEND RESOURCE_FILES "res:::${CurrentResource_Name}")
13 get_filename_component (CurrentResource_Directory "${CurrentResource}" DIRECTORY)
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)
21 foreach (RESOURCE_FILE ${RESOURCE_FILES})
22 string (REGEX MATCH "^[^:]+:::" IS_RESOURCE "${RESOURCE_FILE}")
24 string (REGEX REPLACE "[^:]+:+" "" RESOURCE_FILE "${RESOURCE_FILE}")
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")
30 set (toProcessResFile TRUE)
32 list (FIND RESOURCE_FILES "${HEADER_FILE_NAME}" aResIndex)
33 if ("${aResIndex}" STREQUAL "-1")
34 set (toProcessResFile FALSE)
39 message(STATUS "Info. Generating header file from resource file: ${CMAKE_SOURCE_DIR}/src/${CurrentResource_Directory}/${RESOURCE_FILE}")
41 # generate content for header file
42 set (OCCT_HEADER_FILE_CONTENT "// This file has been automatically generated from resource file src/${CurrentResource_Directory}/${RESOURCE_FILE}\n\n")
45 file (STRINGS "${CMAKE_SOURCE_DIR}/src/${CurrentResource_Directory}/${RESOURCE_FILE}" RESOURCE_FILE_LINES_LIST)
47 set (OCCT_HEADER_FILE_CONTENT "${OCCT_HEADER_FILE_CONTENT}static const char ${CurrentResource_Directory}_${CurrentResource_FileName}[] =")
48 foreach (line IN LISTS RESOURCE_FILE_LINES_LIST)
49 string (REPLACE "\"" "\\\"" line "${line}")
50 set (OCCT_HEADER_FILE_CONTENT "${OCCT_HEADER_FILE_CONTENT}\n \"${line}\\n\"")
52 set (OCCT_HEADER_FILE_CONTENT "${OCCT_HEADER_FILE_CONTENT};")
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}")
59 configure_file ("${CMAKE_SOURCE_DIR}/adm/templates/header.in" "${HEADER_FILE}" @ONLY NEWLINE_STYLE LF)
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}")