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