1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
find_package(PythonInstDir)
find_package(SWIG REQUIRED)
include(UseSWIG)
message(STATUS "Building for python${PYTHON_VERSION_MAJOR}")
find_package(PythonInstDir)
include_directories(${CMAKE_SOURCE_DIR})
include_directories(${PYTHON_INCLUDE_PATH})
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
# using 64bit architecture
set(CMAKE_SWIG_FLAGS "-DSWIGWORDSIZE64")
endif()
# The libdnf API is under development now. This enables it for internal usage.
set(CMAKE_SWIG_FLAGS ${CMAKE_SWIG_FLAGS} "-DLIBDNF_UNSTABLE_API")
function(libdnf_swig_module name)
set(source ../swig/${name}.i)
set_source_files_properties(${source} PROPERTIES CPLUSPLUS ON)
swig_add_module(${name} python ${source})
foreach(lib ${ARGN})
swig_link_libraries(${name} ${lib})
endforeach()
install(TARGETS _${name} LIBRARY DESTINATION ${PYTHON_INSTALL_DIR}/libdnf)
install(FILES ${CMAKE_BINARY_DIR}/bindings/python/${name}.py DESTINATION ${PYTHON_INSTALL_DIR}/libdnf)
endfunction()
libdnf_swig_module(error libdnf ${PYTHON_LIBRARY})
libdnf_swig_module(common_types libdnf ${PYTHON_LIBRARY})
libdnf_swig_module(conf libdnf ${PYTHON_LIBRARY})
libdnf_swig_module(module libdnf ${PYTHON_LIBRARY})
libdnf_swig_module(repo libdnf ${PYTHON_LIBRARY})
libdnf_swig_module(smartcols libdnf ${PYTHON_LIBRARY})
libdnf_swig_module(transaction libdnf ${PYTHON_LIBRARY})
libdnf_swig_module(utils libdnf ${PYTHON_LIBRARY} ${SQLite3_LIBRARIES})
configure_file(__init__.py ${CMAKE_CURRENT_BINARY_DIR}/__init__.py COPYONLY)
install(FILES __init__.py DESTINATION ${PYTHON_INSTALL_DIR}/libdnf)
set(DISTINFO_PATH "${CMAKE_CURRENT_BINARY_DIR}/libdnf-${LIBDNF_VERSION}.dist-info")
set(METADATA_FILE "${DISTINFO_PATH}/METADATA")
file(MAKE_DIRECTORY ${DISTINFO_PATH})
file(WRITE ${METADATA_FILE} "Metadata-Version: 2.1\n")
file(APPEND ${METADATA_FILE} "Name: libdnf\n")
file(APPEND ${METADATA_FILE} "Version: ${LIBDNF_VERSION}\n")
install(DIRECTORY ${DISTINFO_PATH} DESTINATION ${PYTHON_INSTALL_DIR})
|