mirror of
https://gitlab.com/kicad/code/kicad.git
synced 2025-09-14 02:03:12 +02:00
Having thread pool as its own singleton in the library meant that each kiface had its own threadpool, leading to many multiples of the threads being started. Placing a singleton class in PGM_BASE ensures that all kifaces use the same thread pool. The singleton class can be extended to provide single instance guarantee for any element across kifaces
105 lines
3.0 KiB
CMake
105 lines
3.0 KiB
CMake
set( KIPYTHON_SRCS
|
|
kipython_settings.cpp
|
|
)
|
|
|
|
add_library( scripting STATIC
|
|
${KIPYTHON_SRCS}
|
|
)
|
|
|
|
target_link_libraries( scripting
|
|
${wxWidgets_LIBRARIES} # wxLogDebug, wxASSERT
|
|
${PYTHON_LIBRARIES}
|
|
Boost::headers
|
|
common
|
|
kicommon
|
|
)
|
|
|
|
target_include_directories( scripting PUBLIC
|
|
${PYTHON_INCLUDE_DIRS}
|
|
${PROJECT_BINARY_DIR}
|
|
${CMAKE_CURRENT_SOURCE_DIR}
|
|
)
|
|
|
|
target_include_directories( scripting PRIVATE
|
|
$<TARGET_PROPERTY:nlohmann_json,INTERFACE_INCLUDE_DIRECTORIES>
|
|
${PROJECT_SOURCE_DIR}/resources/bitmaps_png/include
|
|
${PROJECT_SOURCE_DIR}/include
|
|
${wxWidgets_LIBRARIES}
|
|
)
|
|
|
|
# Setup the KIFACE
|
|
add_library( scripting_kiface MODULE
|
|
kicad_scripting_main.cpp
|
|
kipython_frame.cpp
|
|
${KIPYTHON_SRCS}
|
|
)
|
|
|
|
set_source_files_properties( kicad_scripting_main.cpp PROPERTIES
|
|
# The KIFACE is in kicad_scripting_main.cpp, export it:
|
|
COMPILE_DEFINITIONS "BUILD_KIWAY_DLL;COMPILING_DLL"
|
|
)
|
|
|
|
target_include_directories( scripting_kiface PRIVATE
|
|
$<TARGET_PROPERTY:thread-pool,INTERFACE_INCLUDE_DIRECTORIES>
|
|
${PROJECT_SOURCE_DIR}/resources/bitmaps_png/include
|
|
${PROJECT_SOURCE_DIR}/include
|
|
${wxWidgets_LIBRARIES}
|
|
)
|
|
|
|
if( MSVC )
|
|
target_sources( scripting_kiface PRIVATE ${CMAKE_SOURCE_DIR}/resources/msw/kipython-dll.rc )
|
|
endif()
|
|
|
|
target_link_libraries( scripting_kiface
|
|
scripting
|
|
)
|
|
|
|
set_target_properties( scripting_kiface PROPERTIES
|
|
OUTPUT_NAME kipython
|
|
PREFIX ${KIFACE_PREFIX}
|
|
SUFFIX ${KIFACE_SUFFIX}
|
|
)
|
|
|
|
target_link_options( scripting_kiface PRIVATE
|
|
$<$<BOOL:${KICAD_MAKE_LINK_MAPS}>:-Wl,--cref,-Map=_scripting.kiface.map>
|
|
)
|
|
|
|
if( APPLE )
|
|
set_target_properties( scripting_kiface PROPERTIES
|
|
LIBRARY_OUTPUT_DIRECTORY ${OSX_BUNDLE_BUILD_KIFACE_DIR}
|
|
)
|
|
set_target_properties( scripting_kiface PROPERTIES INSTALL_RPATH
|
|
"@executable_path/../Frameworks;@executable_path/../Frameworks/Python.framework" )
|
|
set_target_properties( scripting_kiface PROPERTIES BUILD_WITH_INSTALL_RPATH 1 )
|
|
|
|
install( CODE "
|
|
set( KICAD_CMAKE_MODULE_PATH \"${KICAD_CMAKE_MODULE_PATH}\" )
|
|
set( OSX_BUNDLE_BUILD_KIFACE_DIR \"${OSX_BUNDLE_BUILD_KIFACE_DIR}\" )
|
|
set( OSX_BUNDLE_INSTALL_LIB_DIR \"${OSX_BUNDLE_INSTALL_LIB_DIR}\" )
|
|
|
|
include( ${KICAD_CMAKE_MODULE_PATH}/InstallSteps/InstallMacOS.cmake )
|
|
|
|
# Install any dependencies
|
|
install_runtime_deps( \"\"
|
|
\"${OSX_BUNDLE_BUILD_KIFACE_DIR}/_kipython.kiface\"
|
|
\"\"
|
|
)
|
|
" )
|
|
else()
|
|
install( TARGETS scripting_kiface
|
|
DESTINATION ${KICAD_KIFACE}
|
|
COMPONENT binary
|
|
)
|
|
endif()
|
|
|
|
if( KICAD_WIN32_INSTALL_PDBS )
|
|
# Get the PDBs to copy over for MSVC
|
|
install(FILES $<TARGET_PDB_FILE:scripting_kiface> DESTINATION ${KICAD_KIFACE})
|
|
endif()
|
|
|
|
# python shell installation
|
|
install( DIRECTORY ${PROJECT_SOURCE_DIR}/scripting/kicad_pyshell/
|
|
DESTINATION ${KICAD_DATA}/scripting/kicad_pyshell
|
|
FILE_PERMISSIONS OWNER_EXECUTE OWNER_READ OWNER_WRITE GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ
|
|
)
|