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 # generate PHP definitions 0023 macro(generate_php_syntax_definition targetFile srcFile) 0024 generate_syntax_definition(generate-php.pl ${targetFile} ${srcFile} ${CMAKE_CURRENT_SOURCE_DIR}/syntax/php.xml) 0025 endmacro() 0026 0027 generate_php_syntax_definition(javascript-php.xml javascript.xml) 0028 generate_php_syntax_definition(css-php.xml css.xml) 0029 generate_php_syntax_definition(html-php.xml html.xml) 0030 generate_php_syntax_definition(javascript-react-php.xml javascript-react.xml) 0031 generate_php_syntax_definition(typescript-php.xml typescript.xml) 0032 generate_php_syntax_definition(mustache-php.xml mustache.xml) 0033 0034 # generate DoxygenLua definition 0035 generate_syntax_definition(generate-doxygenlua.pl doxygenlua.xml doxygen.xml) 0036 0037 # find all definitions 0038 file(GLOB src_defs "${CMAKE_CURRENT_SOURCE_DIR}/syntax/*.xml") 0039 set(defs ${src_defs} ${gen_defs}) 0040 0041 # object library to make cross-folder dependencies work 0042 add_library(SyntaxHighlightingData OBJECT) 0043 0044 # theme data resource 0045 target_sources(SyntaxHighlightingData PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/themes/theme-data.qrc) 0046 0047 # generate the resource file 0048 set(qrc_file ${CMAKE_CURRENT_BINARY_DIR}/syntax-data.qrc) 0049 set(qrc_body "") 0050 foreach(def ${defs}) 0051 get_filename_component(def_name ${def} NAME) 0052 string(APPEND qrc_body "<file alias=\"${def_name}\">${def}</file>\n") 0053 endforeach() 0054 set(SYNTAX_DATA_QRC_FILES_STRING ${qrc_body}) 0055 configure_file(syntax-data.qrc.in ${qrc_file} @ONLY) 0056 0057 # generate the index file 0058 add_custom_target(katesyntax DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/index.katesyntax") 0059 add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/index.katesyntax" 0060 COMMAND katehighlightingindexer "${CMAKE_CURRENT_BINARY_DIR}/index.katesyntax" "${CMAKE_CURRENT_SOURCE_DIR}/schema/language.xsd" "${CMAKE_CURRENT_BINARY_DIR}/syntax-data.qrc" 0061 DEPENDS katehighlightingindexer ${defs} ${CMAKE_CURRENT_SOURCE_DIR}/schema/language.xsd ${CMAKE_CURRENT_BINARY_DIR}/syntax-data.qrc 0062 ) 0063 0064 # do we want syntax files bundled in the library? 0065 if (QRC_SYNTAX) 0066 # generate the qrc file manually, to make dependencies on generated files work... 0067 add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/qrc_syntax-data.cpp" 0068 COMMAND Qt${QT_MAJOR_VERSION}::rcc --name syntax_data -o "${CMAKE_CURRENT_BINARY_DIR}/qrc_syntax-data.cpp" "${CMAKE_CURRENT_BINARY_DIR}/syntax-data.qrc" 0069 DEPENDS ${defs} ${CMAKE_CURRENT_BINARY_DIR}/index.katesyntax 0070 ) 0071 set_source_files_properties("${CMAKE_CURRENT_BINARY_DIR}/qrc_syntax-data.cpp" PROPERTIES SKIP_AUTOMOC ON) 0072 0073 target_sources(SyntaxHighlightingData PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/qrc_syntax-data.cpp) 0074 else() 0075 add_dependencies(SyntaxHighlightingData katesyntax) 0076 # install the syntax files as normal files into the prefix 0077 install (FILES "${CMAKE_CURRENT_BINARY_DIR}/index.katesyntax" ${defs} DESTINATION ${KDE_INSTALL_DATADIR}/org.kde.syntax-highlighting/syntax-bundled) 0078 endif() 0079 0080 # set PIC to allow use in static and shared libs 0081 # this needs some more recent CMake than generally required 0082 set_property(TARGET SyntaxHighlightingData PROPERTY POSITION_INDEPENDENT_CODE 1) 0083 if(NOT ${CMAKE_VERSION} VERSION_LESS "3.13.0") 0084 target_link_libraries(SyntaxHighlightingData PRIVATE Qt${QT_MAJOR_VERSION}::Core) 0085 endif()