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