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()