Warning, /frameworks/syntax-highlighting/data/CMakeLists.txt is written in an unsupported language. File is not indexed.

0001 # create a directory for generated definitions
0002 execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/generated/syntax)
0003 
0004 macro(generate_syntax_definition generator targetFile srcFile)
0005     add_custom_target(
0006         ${targetFile} ALL
0007         DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/generated/syntax/${targetFile}
0008     )
0009     add_custom_command(
0010         OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/generated/syntax/${targetFile}
0011         COMMAND ${PERL_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/generators/${generator}
0012                 ${CMAKE_CURRENT_SOURCE_DIR}/syntax/${srcFile}
0013                 ${CMAKE_CURRENT_BINARY_DIR}/generated/syntax/${targetFile}
0014         DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/generators/${generator}
0015                 ${CMAKE_CURRENT_SOURCE_DIR}/syntax/${srcFile}
0016                 ${ARGN}
0017         VERBATIM
0018     )
0019     set(gen_defs ${gen_defs} ${CMAKE_CURRENT_BINARY_DIR}/generated/syntax/${targetFile})
0020 endmacro()
0021 
0022 macro(generate_syntax_definition_with_html syntax mergedSyntax)
0023     generate_syntax_definition(generate-html.pl ${mergedSyntax}-${syntax}.xml ${mergedSyntax}.xml ${CMAKE_CURRENT_SOURCE_DIR}/syntax/${syntax}.xml)
0024 endmacro()
0025 
0026 # generate PHP definitions
0027 generate_syntax_definition_with_html(php html)
0028 generate_syntax_definition_with_html(php css)
0029 generate_syntax_definition_with_html(php javascript)
0030 generate_syntax_definition_with_html(php javascript-react)
0031 generate_syntax_definition_with_html(php typescript)
0032 generate_syntax_definition_with_html(php mustache)
0033 
0034 # generate Twig definitions
0035 generate_syntax_definition_with_html(twig html)
0036 generate_syntax_definition_with_html(twig css)
0037 generate_syntax_definition_with_html(twig javascript)
0038 generate_syntax_definition_with_html(twig javascript-react)
0039 generate_syntax_definition_with_html(twig typescript)
0040 
0041 # generate DoxygenLua definition
0042 generate_syntax_definition(generate-doxygenlua.pl doxygenlua.xml doxygen.xml)
0043 
0044 # find all definitions
0045 file(GLOB src_defs "${CMAKE_CURRENT_SOURCE_DIR}/syntax/*.xml")
0046 set(defs ${src_defs} ${gen_defs})
0047 
0048 # object library to make cross-folder dependencies work
0049 add_library(SyntaxHighlightingData OBJECT)
0050 
0051 # theme data resource
0052 target_sources(SyntaxHighlightingData PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/themes/theme-data.qrc)
0053 
0054 # generate the resource file
0055 set(qrc_file ${CMAKE_CURRENT_BINARY_DIR}/syntax-data.qrc)
0056 set(qrc_body "")
0057 foreach(def ${defs})
0058     get_filename_component(def_name ${def} NAME)
0059     string(APPEND qrc_body "<file alias=\"${def_name}\">${def}</file>\n")
0060 endforeach()
0061 set(SYNTAX_DATA_QRC_FILES_STRING ${qrc_body})
0062 configure_file(syntax-data.qrc.in ${qrc_file} @ONLY)
0063 
0064 # generate the index file
0065 add_custom_target(katesyntax DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/index.katesyntax")
0066 add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/index.katesyntax"
0067     COMMAND katehighlightingindexer "${CMAKE_CURRENT_BINARY_DIR}/index.katesyntax" "${CMAKE_CURRENT_SOURCE_DIR}/schema/language.xsd" "${CMAKE_CURRENT_BINARY_DIR}/syntax-data.qrc"
0068     DEPENDS katehighlightingindexer ${defs} ${CMAKE_CURRENT_SOURCE_DIR}/schema/language.xsd ${CMAKE_CURRENT_BINARY_DIR}/syntax-data.qrc
0069 )
0070 
0071 # do we want syntax files bundled in the library?
0072 if (QRC_SYNTAX)
0073     # generate the qrc file manually, to make dependencies on generated files work...
0074     add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/qrc_syntax-data.cpp"
0075         COMMAND Qt6::rcc --name syntax_data -o "${CMAKE_CURRENT_BINARY_DIR}/qrc_syntax-data.cpp" "${CMAKE_CURRENT_BINARY_DIR}/syntax-data.qrc"
0076         DEPENDS ${defs} ${CMAKE_CURRENT_BINARY_DIR}/index.katesyntax
0077     )
0078     set_source_files_properties("${CMAKE_CURRENT_BINARY_DIR}/qrc_syntax-data.cpp" PROPERTIES SKIP_AUTOMOC ON)
0079 
0080     target_sources(SyntaxHighlightingData PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/qrc_syntax-data.cpp)
0081 else()
0082     add_dependencies(SyntaxHighlightingData katesyntax)
0083     # install the syntax files as normal files into the prefix
0084     install (FILES "${CMAKE_CURRENT_BINARY_DIR}/index.katesyntax" ${defs} DESTINATION ${KDE_INSTALL_DATADIR}/org.kde.syntax-highlighting/syntax-bundled)
0085 endif()
0086 
0087 # set PIC to allow use in static and shared libs
0088 # this needs some more recent CMake than generally required
0089 set_property(TARGET SyntaxHighlightingData PROPERTY POSITION_INDEPENDENT_CODE 1)
0090 if(NOT ${CMAKE_VERSION} VERSION_LESS "3.13.0")
0091     target_link_libraries(SyntaxHighlightingData PRIVATE Qt6::Core)
0092 endif()