Warning, /sdk/codevis/lvtplg/CMakeLists.txt is written in an unsupported language. File is not indexed.

0001 find_package(Python COMPONENTS Interpreter Development REQUIRED)
0002 
0003 AddTargetLibrary(
0004   LIBRARY_NAME
0005     lvtplg
0006   SOURCES
0007     ct_lvtplg_pluginmanager.cpp
0008     ct_lvtplg_sharedlibrarydispatcher.cpp
0009     ct_lvtplg_pythonmodule.cpp
0010     ct_lvtplg_pythonlibrarydispatcher.cpp
0011   QT_HEADERS
0012     ct_lvtplg_abstractlibrarydispatcher.h
0013     ct_lvtplg_pluginmanager.h
0014     ct_lvtplg_sharedlibrarydispatcher.h
0015     ct_lvtplg_pythonlibrarydispatcher.h
0016   LIBRARIES
0017     ${SYSTEM_EXTRA_LIBRARIES}
0018     Codethink::lvtshr
0019     KF${KF_MAJOR_VERSION}::NewStuffCore
0020     Qt${QT_MAJOR_VERSION}::Core
0021     Python::Python
0022 )
0023 target_compile_definitions(lvtplg PRIVATE AS_EMBEDDED=1)
0024 
0025 target_include_directories(lvtplg
0026     PUBLIC
0027     $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>/../thirdparty/
0028     $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}>/plugin-headers/
0029 )
0030 
0031 add_library(pyLksPlugin
0032     MODULE
0033         ct_lvtplg_pythonmodule.cpp
0034 )
0035 target_compile_definitions(pyLksPlugin PRIVATE AS_MODULE=1)
0036 target_include_directories(pyLksPlugin
0037     PUBLIC
0038     $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>/../thirdparty/
0039     $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}>/plugin-headers/
0040 )
0041 target_link_libraries(pyLksPlugin
0042     PRIVATE
0043         Python::Python
0044 )
0045 
0046 if (WIN32)
0047     set(PYMODULE_EXT ".pyd")
0048 else()
0049     set(PYMODULE_EXT ".so")
0050 endif()
0051 set_target_properties(pyLksPlugin
0052     PROPERTIES
0053     PREFIX ""
0054     SUFFIX ${PYMODULE_EXT}
0055 )
0056 
0057 find_program(CLANG_FORMAT NAMES
0058   clang-format
0059   clang-format-10
0060   clang-format-11
0061   clang-format-12
0062   clang-format-13
0063   clang-format-14
0064   clang-format-15
0065   clang-format-16
0066   clang-format-17)
0067 
0068 set(PLUGIN_HEADERS_DIR ${CMAKE_BINARY_DIR}/plugin-headers)
0069 add_custom_command(
0070     OUTPUT
0071         "${PLUGIN_HEADERS_DIR}/ct_lvtplg_basicpluginhooks.h"
0072         "${PLUGIN_HEADERS_DIR}/ct_lvtplg_basicpluginhandlers.h"
0073         "${PLUGIN_HEADERS_DIR}/ct_lvtplg_plugindatatypes.h"
0074     COMMAND ${CMAKE_COMMAND} -E make_directory ${PLUGIN_HEADERS_DIR}/
0075     COMMAND ${Python_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/generate_plugin_hooks.py ${PLUGIN_HEADERS_DIR}/
0076     COMMAND ${CLANG_FORMAT} -i ${PLUGIN_HEADERS_DIR}/ct_lvtplg_basicpluginhooks.h
0077     COMMAND ${Python_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/generate_plugin_handlers.py ${PLUGIN_HEADERS_DIR}/
0078     COMMAND ${CLANG_FORMAT} -i ${PLUGIN_HEADERS_DIR}/ct_lvtplg_basicpluginhandlers.h
0079     COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/ct_lvtplg_plugindatatypes.h ${PLUGIN_HEADERS_DIR}/
0080     DEPENDS
0081         "${CMAKE_CURRENT_SOURCE_DIR}/generate_plugin_hooks.py"
0082         "${CMAKE_CURRENT_SOURCE_DIR}/generate_plugin_handlers.py"
0083         "${CMAKE_CURRENT_SOURCE_DIR}/ct_lvtplg_plugindatatypes.h"
0084         "${CMAKE_CURRENT_SOURCE_DIR}/hooks.py"
0085         "${CMAKE_CURRENT_SOURCE_DIR}/handlers.py"
0086     COMMENT "[lvtplg] Populating plugin-headers folder..."
0087     VERBATIM
0088 )
0089 add_custom_target(
0090     generate_lvtclp_plugin_headers ALL
0091     DEPENDS
0092         "${PLUGIN_HEADERS_DIR}/ct_lvtplg_basicpluginhooks.h"
0093         "${PLUGIN_HEADERS_DIR}/ct_lvtplg_basicpluginhandlers.h"
0094         "${PLUGIN_HEADERS_DIR}/ct_lvtplg_plugindatatypes.h"
0095 )
0096 
0097 add_custom_command(
0098     OUTPUT
0099         "${CMAKE_CURRENT_BINARY_DIR}/ct_lvtplg_hookbindings.inc.cpp"
0100         "${CMAKE_CURRENT_BINARY_DIR}/ct_lvtplg_handlerbindings.inc.cpp"
0101     COMMAND ${Python_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/generate_python_hook_bindings.py ${CMAKE_BINARY_DIR}/lvtplg/
0102     COMMAND ${Python_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/generate_python_handler_bindings.py ${CMAKE_BINARY_DIR}/lvtplg/
0103     DEPENDS
0104         "${CMAKE_CURRENT_SOURCE_DIR}/generate_python_hook_bindings.py"
0105         "${CMAKE_CURRENT_SOURCE_DIR}/generate_python_handler_bindings.py"
0106         "${CMAKE_CURRENT_SOURCE_DIR}/hooks.py"
0107         "${CMAKE_CURRENT_SOURCE_DIR}/handlers.py"
0108     COMMENT "[lvtplg] Generating python bindings..."
0109     VERBATIM
0110 )
0111 add_custom_target(
0112     generate_lvtclp_py_bindings ALL
0113     DEPENDS
0114         "${CMAKE_CURRENT_BINARY_DIR}/ct_lvtplg_hookbindings.inc.cpp"
0115         "${CMAKE_CURRENT_BINARY_DIR}/ct_lvtplg_handlerbindings.inc.cpp"
0116 )
0117 add_library(CodevisPluginHeaders INTERFACE)
0118 target_include_directories(CodevisPluginHeaders
0119     INTERFACE
0120     $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}>/plugin-headers/
0121 )
0122 
0123 add_dependencies(lvtplg generate_lvtclp_py_bindings generate_lvtclp_plugin_headers)
0124 add_dependencies(pyLksPlugin generate_lvtclp_py_bindings generate_lvtclp_plugin_headers)
0125 add_dependencies(CodevisPluginHeaders generate_lvtclp_plugin_headers)
0126 
0127 if (COMPILE_TESTS)
0128     add_subdirectory(testplugins)
0129 
0130     function(add_lvtplg_test TESTNAME)
0131         add_executable(test_${TESTNAME} ${TESTNAME}.t.cpp)
0132         target_link_libraries(test_${TESTNAME} lvtplg lvttst lvttst_tmpdir)
0133         add_test(NAME test_${TESTNAME} COMMAND test_${TESTNAME})
0134         add_dependencies(test_${TESTNAME} basicplugin basicpythonplugin)
0135     endfunction()
0136 
0137     add_lvtplg_test(ct_lvtplg_pythonlibrarydispatcher)
0138     add_lvtplg_test(ct_lvtplg_pluginmanager)
0139 endif()