Warning, /pim/akonadi/cmake/modules/AkonadiMacros.cmake is written in an unsupported language. File is not indexed.

0001 # SPDX-License-Identifier: BSD-3-Clause
0002 
0003 # Internal server macros
0004 function(akonadi_run_xsltproc)
0005     if (NOT XSLTPROC_EXECUTABLE)
0006         message(FATAL_ERROR "xsltproc executable not found but needed by AKONADI_RUN_XSLTPROC()")
0007     endif()
0008 
0009     set(options )
0010     set(oneValueArgs XSL XML CLASSNAME BASENAME)
0011     set(multiValueArgs DEPENDS)
0012     cmake_parse_arguments(XSLT "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
0013     if (NOT XSLT_XSL)
0014         message(FATAL_ERROR "Required argument XSL missing in AKONADI_RUN_XSLTPROC() call")
0015     endif()
0016     if (NOT XSLT_XML)
0017         message(FATAL_ERROR "Required argument XML missing in AKONADI_RUN_XSLTPROC() call")
0018     endif()
0019     if (NOT XSLT_BASENAME)
0020         message(FATAL_ERROR "Required argument BASENAME missing in AKONADI_RUN_XSLTPROC() call")
0021     endif()
0022 
0023     # Workaround xsltproc struggling with spaces in filepaths on Windows
0024     file(RELATIVE_PATH xsl_relpath ${CMAKE_CURRENT_BINARY_DIR} ${XSLT_XSL})
0025     file(RELATIVE_PATH xml_relpath ${CMAKE_CURRENT_BINARY_DIR} ${XSLT_XML})
0026 
0027     set(extra_params )
0028     if (XSLT_CLASSNAME)
0029         set(extra_params --stringparam className ${XSLT_CLASSNAME})
0030     endif()
0031 
0032     add_custom_command(
0033         OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${XSLT_BASENAME}.h
0034             ${CMAKE_CURRENT_BINARY_DIR}/${XSLT_BASENAME}.cpp
0035         COMMAND ${XSLTPROC_EXECUTABLE}
0036             --output ${XSLT_BASENAME}.h
0037             --stringparam code header
0038             --stringparam fileName ${XSLT_BASENAME}
0039             ${extra_params}
0040             ${xsl_relpath}
0041             ${xml_relpath}
0042         COMMAND ${XSLTPROC_EXECUTABLE}
0043             --output ${XSLT_BASENAME}.cpp
0044             --stringparam code source
0045             --stringparam fileName ${XSLT_BASENAME}
0046             ${extra_params}
0047             ${xsl_relpath}
0048             ${xml_relpath}
0049         DEPENDS ${XSLT_XSL}
0050             ${XSLT_XML}
0051             ${XSLT_DEPENDS}
0052     )
0053 
0054     set_property(SOURCE
0055         ${CMAKE_CURRENT_BINARY_DIR}/${XSLT_BASENAME}.cpp
0056         ${CMAKE_CURRENT_BINARY_DIR}/${XSLT_BASENAME}.h
0057         PROPERTY SKIP_AUTOMOC TRUE
0058     )
0059 endfunction()
0060 
0061 macro(akonadi_generate_schema _schemaXml _className _fileBaseName)
0062     if (NOT XSLTPROC_EXECUTABLE)
0063         message(FATAL_ERROR "xsltproc executable not found but needed by AKONADI_GENERATE_SCHEMA()")
0064     endif()
0065 
0066     akonadi_run_xsltproc(
0067         XSL ${Akonadi_SOURCE_DIR}/src/server/storage/schema.xsl
0068         XML ${_schemaXml}
0069         CLASSNAME ${_className}
0070         BASENAME ${_fileBaseName}
0071     )
0072 endmacro()
0073 
0074 function(akonadi_add_xmllint_test)
0075     if (NOT XMLLINT_EXECUTABLE)
0076         message(FATAL_ERROR "xmllint executable not found but needed by AKONADI_ADD_XMLLINT_SCHEMA()")
0077     endif()
0078 
0079     set(options )
0080     set(oneValueArgs XML XSD)
0081     set(multiValueArgs )
0082     cmake_parse_arguments(TEST "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
0083 
0084     file(RELATIVE_PATH xsd_relpath ${CMAKE_CURRENT_BINARY_DIR} ${TEST_XSD})
0085     file(RELATIVE_PATH xml_relpath ${CMAKE_CURRENT_BINARY_DIR} ${TEST_XML})
0086     add_test(${TEST_UNPARSED_ARGUMENTS} ${XMLLINT_EXECUTABLE} --noout --schema ${xsd_relpath} ${xml_relpath})
0087 endfunction()
0088