mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-16 18:25:11 -06:00
CMake improvements for SWIG handling and Python bindings.
* Add ability to either create SWIG C files or use generated ones depending on BUILDING_FROM_VCS. * Add complete support for compiling Python bindings using WITH_PYTHON=YES. * Add CMakeLists.txt files to a couple more directories.
This commit is contained in:
parent
ea3862499b
commit
78ef933e44
@ -56,6 +56,7 @@ OPTION (WITH_AQBANKING "Build this project with aqbanking (online banking) suppo
|
||||
OPTION (WITH_GNUCASH "Build all of GnuCash, not just cutecash" ON)
|
||||
OPTION (WITH_CUTECASH "Also build cutecash" OFF)
|
||||
OPTION (WITH_OFX "compile with ofx support (needs LibOFX)" ON)
|
||||
OPTION (WITH_PYTHON "enable python plugin and bindings" OFF)
|
||||
OPTION (ENABLE_BINRELOC "compile with binary relocation support" ON)
|
||||
OPTION (ENABLE_DEBUG "compile with debugging flags set" OFF)
|
||||
OPTION (ENABLE_REGISTER2 "compile with register2 enabled" OFF)
|
||||
@ -100,6 +101,19 @@ IF (SHELL_FROM_ENV) # Replacing this with IF ($ENV{SHELL}) doesn't work.
|
||||
SET(SHELL ${SHELL_FROM_ENV})
|
||||
ENDIF()
|
||||
|
||||
# Determine whether we are building from a VCS or from a tarball
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND ${SHELL} ${CMAKE_SOURCE_DIR}/util/gnc-vcs-info -t ${CMAKE_SOURCE_DIR}
|
||||
RESULT_VARIABLE GNC_VCS_INFO_RESULT
|
||||
OUTPUT_VARIABLE GNC_VCS_INFO_OUTPUT
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
|
||||
SET(BUILDING_FROM_VCS "NO")
|
||||
IF (GNC_VCS_INFO_RESULT EQUAL 0)
|
||||
SET(BUILDING_FROM_VCS "YES")
|
||||
ENDIF()
|
||||
|
||||
IF (WIN32)
|
||||
# Help Windows find the various dependencies. We assume here that the standard advice for building
|
||||
# GnuCash has been followed and that these dependencies live underneath something like C:/GCDEV, which
|
||||
@ -215,8 +229,10 @@ ENDIF (WIN32)
|
||||
# ############################################################
|
||||
|
||||
# SWIG
|
||||
FIND_PACKAGE (SWIG REQUIRED)
|
||||
INCLUDE (${SWIG_USE_FILE})
|
||||
IF(BUILDING_FROM_VCS)
|
||||
FIND_PACKAGE (SWIG REQUIRED)
|
||||
INCLUDE (${SWIG_USE_FILE})
|
||||
ENDIF()
|
||||
|
||||
# Find Guile and determine which version we are using.
|
||||
# First look for guile-2.0. If not found, try to locate guile-1.8
|
||||
@ -325,6 +341,24 @@ ENDIF (WITH_SQL)
|
||||
|
||||
# ############################################################
|
||||
|
||||
IF (WITH_PYTHON)
|
||||
FIND_PACKAGE(PythonInterp)
|
||||
IF (NOT PYTHONINTERP_FOUND)
|
||||
MESSAGE(SEND_ERROR "Python support enabled, but Python interpreter not found.")
|
||||
ENDIF()
|
||||
|
||||
IF (PYTHON_VERSION_STRING VERSION_LESS "2.4.0")
|
||||
MESSAGE(SEND_ERROR "Found python version ${PYTHON_VERSION_STRING}, but it's too old. Need python >= 2.4.0")
|
||||
ENDIF()
|
||||
|
||||
FIND_PACKAGE(PythonLibs)
|
||||
IF (NOT PYTHONLIBS_FOUND)
|
||||
MESSAGE(SEND_ERROR "Python support enabled, but Python libraries not found.")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
|
||||
|
||||
FIND_PACKAGE(Perl)
|
||||
|
||||
if (NOT PERL_FOUND)
|
||||
@ -416,6 +450,7 @@ ENDIF()
|
||||
ADD_SUBDIRECTORY (accounts)
|
||||
ADD_SUBDIRECTORY (checks)
|
||||
ADD_SUBDIRECTORY (doc)
|
||||
ADD_SUBDIRECTORY (packaging)
|
||||
ADD_SUBDIRECTORY (po)
|
||||
ADD_SUBDIRECTORY (src)
|
||||
|
||||
|
2
packaging/CMakeLists.txt
Normal file
2
packaging/CMakeLists.txt
Normal file
@ -0,0 +1,2 @@
|
||||
|
||||
GNC_CONFIGURE(gnucash.spec.in gnucash.spec)
|
@ -171,13 +171,18 @@ IF (WITH_GNUCASH)
|
||||
ADD_SUBDIRECTORY (bin)
|
||||
ADD_SUBDIRECTORY (business/business-ledger)
|
||||
ADD_SUBDIRECTORY (business/business-gnome)
|
||||
ADD_SUBDIRECTORY (doc/design)
|
||||
ADD_SUBDIRECTORY (gnome)
|
||||
ADD_SUBDIRECTORY (gnome-utils)
|
||||
ADD_SUBDIRECTORY (gnome-search)
|
||||
ADD_SUBDIRECTORY (html)
|
||||
ADD_SUBDIRECTORY (optional/python-bindings)
|
||||
ADD_SUBDIRECTORY (plugins/bi_import)
|
||||
ADD_SUBDIRECTORY (plugins/customer_import)
|
||||
ADD_SUBDIRECTORY (pixmaps)
|
||||
IF (WITH_PYTHON)
|
||||
ADD_SUBDIRECTORY (python)
|
||||
ENDIF()
|
||||
ADD_SUBDIRECTORY (quotes)
|
||||
ADD_SUBDIRECTORY (register/ledger-core)
|
||||
ADD_SUBDIRECTORY (register/register-core)
|
||||
|
@ -36,9 +36,16 @@ SET (app_utils_HEADERS
|
||||
|
||||
)
|
||||
|
||||
# Command to generate the swig-app-utils.c wrapper file
|
||||
SET (SWIG_APP_UTILS_C ${CMAKE_CURRENT_BINARY_DIR}/swig-app-utils.c)
|
||||
GNC_ADD_SWIG_COMMAND (${SWIG_APP_UTILS_C} ${CMAKE_CURRENT_SOURCE_DIR}/app-utils.i)
|
||||
IF (BUILDING_FROM_VCS)
|
||||
# Command to generate the swig-app-utils.c wrapper file
|
||||
SET (SWIG_APP_UTILS_GUILE_C ${CMAKE_CURRENT_BINARY_DIR}/swig-app-utils-guile.c)
|
||||
GNC_ADD_SWIG_COMMAND (${SWIG_APP_UTILS_GUILE_C} ${CMAKE_CURRENT_SOURCE_DIR}/app-utils.i)
|
||||
SET (SWIG_APP_UTILS_PYTHON_C ${CMAKE_CURRENT_BINARY_DIR}/swig-app-utils-python.c)
|
||||
GNC_ADD_SWIG_PYTHON_COMMAND (swig-app-utils-python ${SWIG_APP_UTILS_PYTHON_C} ${CMAKE_CURRENT_SOURCE_DIR}/app-utils.i)
|
||||
ELSE()
|
||||
SET (SWIG_APP_UTILS_GUILE_C swig-app-utils-guile.c)
|
||||
SET (SWIG_APP_UTILS_PYTHON_C swig-app-utils-python.c)
|
||||
ENDIF()
|
||||
|
||||
SET (app_utils_SOURCES
|
||||
calculation/expression_parser.c
|
||||
@ -66,47 +73,57 @@ SET (app_utils_SOURCES
|
||||
gncmod-app-utils.c
|
||||
guile-util.c
|
||||
option-util.c
|
||||
${SWIG_APP_UTILS_C}
|
||||
${SWIG_APP_UTILS_GUILE_C}
|
||||
)
|
||||
|
||||
IF (WIN32)
|
||||
SET (app_utils_SOURCES ${app_utils_SOURCES} gnc-help-utils.c)
|
||||
ENDIF (WIN32)
|
||||
|
||||
SET_SOURCE_FILES_PROPERTIES (${app_utils_SOURCES} PROPERTIES OBJECT_DEPENDS ${CONFIG_H})
|
||||
|
||||
ADD_LIBRARY (gncmod-app-utils
|
||||
${app_utils_SOURCES}
|
||||
${app_utils_HEADERS}
|
||||
${app_utils_noinst_HEADERS}
|
||||
)
|
||||
SET(app_utils_ALL_SOURCES ${app_utils_SOURCES} ${app_utils_HEADERS} ${app_utils_noinst_HEADERS})
|
||||
SET(app_utils_ALL_LIBRARIES gncmod-engine gnc-module ${GTK2_LDFLAGS} ${LIBXML2_LDFLAGS} ${LIBXSLT_LDFLAGS})
|
||||
SET(app_utils_ALL_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/calculation ${LIBXML2_INCLUDE_DIRS}
|
||||
${LIBXSLT_INCLUDE_DIRS} ${GTK2_INCLUDE_DIRS})
|
||||
|
||||
TARGET_LINK_LIBRARIES(gncmod-app-utils gncmod-engine gnc-module
|
||||
${GTK2_LDFLAGS} ${LIBXML2_LDFLAGS} ${LIBXSLT_LDFLAGS}
|
||||
)
|
||||
IF (WIN32)
|
||||
LIST(APPEND app_utils_ALL_SOURCES gnc-help-utils.c)
|
||||
LIST(APPEND app_utils_ALL_LIBRARIES ${HTMLHELP_LIBRARY})
|
||||
LIST(APPEND app_utils_ALL_INCLUDES ${HTMLHELP_INCLUDE_PATH})
|
||||
ENDIF()
|
||||
|
||||
IF (WIN32)
|
||||
TARGET_LINK_LIBRARIES(gncmod-app-utils ${HTMLHELP_LIBRARY})
|
||||
ENDIF(WIN32)
|
||||
ADD_LIBRARY (gncmod-app-utils ${app_utils_ALL_SOURCES})
|
||||
TARGET_LINK_LIBRARIES(gncmod-app-utils ${app_utils_ALL_LIBRARIES})
|
||||
|
||||
TARGET_INCLUDE_DIRECTORIES (gncmod-app-utils
|
||||
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/calculation
|
||||
${LIBXML2_INCLUDE_DIRS}
|
||||
${LIBXSLT_INCLUDE_DIRS}
|
||||
${HTMLHELP_INCLUDE_PATH}
|
||||
${GTK2_INCLUDE_DIRS}
|
||||
PRIVATE ${app_utils_ALL_INCLUDES}
|
||||
)
|
||||
|
||||
TARGET_COMPILE_DEFINITIONS (gncmod-app-utils PRIVATE -DG_LOG_DOMAIN=\"gnc.app-utils\")
|
||||
|
||||
|
||||
INSTALL(TARGETS gncmod-app-utils
|
||||
LIBRARY DESTINATION lib/gnucash
|
||||
ARCHIVE DESTINATION lib/gnucash
|
||||
RUNTIME DESTINATION bin
|
||||
LIBRARY DESTINATION lib/gnucash
|
||||
ARCHIVE DESTINATION lib/gnucash
|
||||
RUNTIME DESTINATION bin
|
||||
)
|
||||
|
||||
IF (WITH_PYTHON)
|
||||
ADD_LIBRARY (gncmod-app-utils-python ${app_utils_ALL_SOURCES} ${SWIG_APP_UTILS_PYTHON_C})
|
||||
|
||||
TARGET_LINK_LIBRARIES(gncmod-app-utils-python ${app_utils_ALL_LIBRARIES} ${PYTHON_LIBRARIES})
|
||||
|
||||
TARGET_INCLUDE_DIRECTORIES (gncmod-app-utils-python
|
||||
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
PRIVATE ${app_utils_ALL_INCLUDES} ${PYTHON_INCLUDE_DIRS}
|
||||
)
|
||||
TARGET_COMPILE_DEFINITIONS (gncmod-app-utils-python PRIVATE -DG_LOG_DOMAIN=\"gnc.app-utils\")
|
||||
|
||||
INSTALL(TARGETS gncmod-app-utils-python
|
||||
LIBRARY DESTINATION lib/gnucash
|
||||
ARCHIVE DESTINATION lib/gnucash
|
||||
RUNTIME DESTINATION bin
|
||||
)
|
||||
ENDIF()
|
||||
|
||||
|
||||
|
||||
INSTALL(FILES ${app_utils_HEADERS} DESTINATION include/gnucash)
|
||||
|
||||
FILE(READ ${CMAKE_SOURCE_DIR}/src/import-export/ofx/migratable-prefs-ofx.xml MIGRATABLE_PREFS_OFX)
|
||||
|
@ -9,7 +9,21 @@ MACRO (GNC_ADD_SWIG_COMMAND _target _input)
|
||||
ADD_CUSTOM_COMMAND (
|
||||
OUTPUT ${_target}
|
||||
DEPENDS ${_input} ${CMAKE_SOURCE_DIR}/src/base-typemaps.i ${ARGN}
|
||||
COMMAND ${SWIG_EXECUTABLE} -guile ${SWIG_ARGS} -Linkage module -I${CMAKE_SOURCE_DIR}/src/libqof/qof -I${CMAKE_SOURCE_DIR}/src -o ${_target} ${_input}
|
||||
COMMAND ${SWIG_EXECUTABLE} -guile ${SWIG_ARGS} -Linkage module -I${CMAKE_SOURCE_DIR}/src/libqof/qof -I${CMAKE_SOURCE_DIR}/src -o ${_target} ${_input}
|
||||
)
|
||||
|
||||
ENDMACRO (GNC_ADD_SWIG_COMMAND)
|
||||
|
||||
|
||||
MACRO (GNC_ADD_SWIG_PYTHON_COMMAND _target _output _input)
|
||||
|
||||
ADD_CUSTOM_COMMAND(OUTPUT ${_output}
|
||||
|
||||
COMMAND ${SWIG_EXECUTABLE} -python -Wall -Werror ${SWIG_ARGS}
|
||||
-I${CMAKE_SOURCE_DIR}/src/libqof/qof -I${CMAKE_SOURCE_DIR}/src
|
||||
-I${CMAKE_SOURCE_DIR}/src/engine -I${CMAKE_SOURCE_DIR}/src/app-utils
|
||||
-o ${_output} ${_input}
|
||||
DEPENDS ${_input} ${CMAKE_SOURCE_DIR}/src/base-typemaps.i ${ARGN}
|
||||
)
|
||||
ADD_CUSTOM_TARGET(${_target} ALL DEPENDS ${_output} ${CMAKE_SOURCE_DIR}/src/base-typemaps.i ${_input} ${ARGN})
|
||||
ENDMACRO()
|
||||
|
@ -1,9 +1,16 @@
|
||||
# CMakeLists.txt for src/core-utils
|
||||
|
||||
ADD_SUBDIRECTORY(test)
|
||||
# Command to generate the swig-engine.c wrapper file
|
||||
SET (SWIG_CORE_UTILS_C ${CMAKE_CURRENT_BINARY_DIR}/swig-core-utils.c)
|
||||
GNC_ADD_SWIG_COMMAND (${SWIG_CORE_UTILS_C} ${CMAKE_CURRENT_SOURCE_DIR}/core-utils.i)
|
||||
|
||||
IF (BUILDING_FROM_VCS)
|
||||
SET (SWIG_CORE_UTILS_GUILE_C ${CMAKE_CURRENT_BINARY_DIR}/swig-core-utils-guile.c)
|
||||
GNC_ADD_SWIG_COMMAND (${SWIG_CORE_UTILS_GUILE_C} ${CMAKE_CURRENT_SOURCE_DIR}/core-utils.i)
|
||||
SET (SWIG_CORE_UTILS_PYTHON_C ${CMAKE_CURRENT_BINARY_DIR}/swig-core-utils-python.c)
|
||||
GNC_ADD_SWIG_PYTHON_COMMAND (swig-core-utils-python ${SWIG_CORE_UTILS_PYTHON_C} ${CMAKE_CURRENT_SOURCE_DIR}/core-utils.i)
|
||||
ELSE()
|
||||
SET(SWIG_CORE_UTILS_GUILE_C swig-core-utils-guile.c)
|
||||
SET(SWIG_CORE_UTILS_PYTHON_C swig-core-utils-python.c)
|
||||
ENDIF()
|
||||
|
||||
SET (core_utils_SOURCES
|
||||
binreloc.c
|
||||
@ -19,7 +26,6 @@ SET (core_utils_SOURCES
|
||||
gnc-locale-utils.c
|
||||
gnc-path.c
|
||||
gnc-uri-utils.c
|
||||
${SWIG_CORE_UTILS_C}
|
||||
)
|
||||
|
||||
# Add dependency on config.h
|
||||
@ -102,33 +108,59 @@ SET(core_utils_noinst_HEADERS
|
||||
gnc-uri-utils.h
|
||||
)
|
||||
|
||||
ADD_LIBRARY (gnc-core-utils
|
||||
${core_utils_SOURCES}
|
||||
${core_utils_noinst_HEADERS}
|
||||
)
|
||||
SET(core_utils_ALL_SOURCES ${core_utils_SOURCES} ${core_utils_noinst_HEADERS})
|
||||
SET(core_utils_ALL_LIBRARIES gnc-qof ${GUILE_LDFLAGS} ${GLIB2_LDFLAGS} ${GOBJECT_LDFLAGS} ${GTK_MAC_LDFLAGS})
|
||||
SET(core_utils_ALL_INCLUDES ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
${GUILE_INCLUDE_DIRS} ${GTK_MAC_INCLUDE_DIRS})
|
||||
|
||||
IF (MAC_INTEGRATION)
|
||||
LIST(APPEND core_utils_ALL_LIBRARIES ${OSX_EXTRA_LIBRARIES})
|
||||
ENDIF()
|
||||
|
||||
ADD_LIBRARY (gnc-core-utils ${core_utils_ALL_SOURCES} ${SWIG_CORE_UTILS_GUILE_C})
|
||||
ADD_DEPENDENCIES(gnc-core-utils gnc-vcs-info)
|
||||
|
||||
TARGET_LINK_LIBRARIES(gnc-core-utils gnc-qof ${GUILE_LDFLAGS} ${GLIB2_LDFLAGS} ${GOBJECT_LDFLAGS} ${GTK_MAC_LDFLAGS})
|
||||
TARGET_LINK_LIBRARIES(gnc-core-utils ${core_utils_ALL_LIBRARIES})
|
||||
|
||||
TARGET_COMPILE_DEFINITIONS(gnc-core-utils
|
||||
PRIVATE -DG_LOG_DOMAIN=\"gnc.core-utils\" ${GTK_MAC_CFLAGS_OTHER})
|
||||
|
||||
TARGET_INCLUDE_DIRECTORIES(gnc-core-utils PUBLIC
|
||||
${CMAKE_CURRENT_BINARY_DIR} # for headers generated in core-utils build directory
|
||||
${CMAKE_CURRENT_SOURCE_DIR}
|
||||
${GUILE_INCLUDE_DIRS}
|
||||
${GTK_MAC_INCLUDE_DIRS}
|
||||
)
|
||||
TARGET_INCLUDE_DIRECTORIES(gnc-core-utils PUBLIC ${core_utils_ALL_INCLUDES})
|
||||
|
||||
IF (MAC_INTEGRATION)
|
||||
TARGET_COMPILE_OPTIONS(gnc-core-utils PRIVATE ${OSX_EXTRA_COMPILE_FLAGS})
|
||||
TARGET_LINK_LIBRARIES(gnc-core-utils ${OSX_EXTRA_LIBRARIES})
|
||||
ENDIF(MAC_INTEGRATION)
|
||||
|
||||
INSTALL(TARGETS gnc-core-utils
|
||||
LIBRARY DESTINATION lib
|
||||
ARCHIVE DESTINATION lib
|
||||
RUNTIME DESTINATION bin)
|
||||
RUNTIME DESTINATION bin
|
||||
)
|
||||
|
||||
IF (WITH_PYTHON)
|
||||
ADD_LIBRARY (gnc-core-utils-python ${core_utils_ALL_SOURCES} ${SWIG_CORE_UTILS_PYTHON_C})
|
||||
ADD_DEPENDENCIES(gnc-core-utils-python gnc-vcs-info)
|
||||
|
||||
TARGET_LINK_LIBRARIES(gnc-core-utils-python ${core_utils_ALL_LIBRARIES} ${PYTHON_LIBRARIES})
|
||||
|
||||
TARGET_COMPILE_DEFINITIONS(gnc-core-utils-python
|
||||
PRIVATE -DG_LOG_DOMAIN=\"gnc.core-utils\" ${GTK_MAC_CFLAGS_OTHER}
|
||||
)
|
||||
|
||||
TARGET_INCLUDE_DIRECTORIES(gnc-core-utils-python PUBLIC ${core_utils_ALL_INCLUDES} ${PYTHON_INCLUDE_DIRS})
|
||||
|
||||
IF (MAC_INTEGRATION)
|
||||
TARGET_COMPILE_OPTIONS(gnc-core-utils-python PRIVATE ${OSX_EXTRA_COMPILE_FLAGS})
|
||||
ENDIF(MAC_INTEGRATION)
|
||||
|
||||
INSTALL(TARGETS gnc-core-utils-python
|
||||
LIBRARY DESTINATION lib
|
||||
ARCHIVE DESTINATION lib
|
||||
RUNTIME DESTINATION bin
|
||||
)
|
||||
|
||||
ENDIF()
|
||||
|
||||
# No headers to install
|
||||
|
||||
# Scheme
|
||||
|
38
src/doc/design/CMakeLists.txt
Normal file
38
src/doc/design/CMakeLists.txt
Normal file
@ -0,0 +1,38 @@
|
||||
|
||||
SET(gnucash_design_TEXINFOS
|
||||
component-manager.texi
|
||||
concept-index.texi
|
||||
engine.texi
|
||||
fdl.texi
|
||||
function-index.texi
|
||||
intro.texi
|
||||
register.texi
|
||||
reports.texi
|
||||
top-level.texi
|
||||
type-index.texi
|
||||
user-preferences.texi
|
||||
)
|
||||
|
||||
|
||||
EXECUTE_PROCESS(COMMAND date +%e OUTPUT_VARIABLE CURRENT_DATE OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
EXECUTE_PROCESS(COMMAND date +%B OUTPUT_VARIABLE CURRENT_MONTH OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
EXECUTE_PROCESS(COMMAND date +%Y OUTPUT_VARIABLE CURRENT_YEAR OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
SET(UPDATED "${CURRENT_DATE} ${CURRENT_MONTH} ${CURRENT_YEAR}")
|
||||
SET(UPDATED_MONTH "${CURRENT_MONTH} ${CURRENT_YEAR}")
|
||||
|
||||
SET(VERSION_TEXI_IN
|
||||
"@set UPDATED ${UPDATED}
|
||||
@set UPDATED-MONTH ${UPDATED_MONTH}
|
||||
@set EDITION ${VERSION}
|
||||
@set VERSION ${VERSION}
|
||||
")
|
||||
|
||||
FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/version.texi ${VERSION_TEXI_IN})
|
||||
|
||||
FILE(TO_NATIVE_PATH "${CMAKE_CURRENT_BINARY_DIR}" TEXI_BINARY_DIR)
|
||||
FILE(TO_NATIVE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/gnucash-design.texi" TEXI_SOURCE_FILE)
|
||||
|
||||
ADD_CUSTOM_TARGET(gnucash-design.texi ALL
|
||||
COMMAND makeinfo -I ${TEXI_BINARY_DIR} ${TEXI_SOURCE_FILE}
|
||||
DEPENDS ${gnucash_design_TEXINFOS}
|
||||
)
|
@ -73,9 +73,13 @@ SET (engine_HEADERS
|
||||
gncVendorP.h
|
||||
)
|
||||
|
||||
# Command to generate the swig-engine.c wrapper file
|
||||
SET (SWIG_ENGINE_C ${CMAKE_CURRENT_BINARY_DIR}/swig-engine.c)
|
||||
GNC_ADD_SWIG_COMMAND (${SWIG_ENGINE_C} ${CMAKE_CURRENT_SOURCE_DIR}/engine.i ${engine_HEADERS})
|
||||
IF (BUILDING_FROM_VCS)
|
||||
# Command to generate the swig-engine.c wrapper file
|
||||
SET (SWIG_ENGINE_C ${CMAKE_CURRENT_BINARY_DIR}/swig-engine.c)
|
||||
GNC_ADD_SWIG_COMMAND (${SWIG_ENGINE_C} ${CMAKE_CURRENT_SOURCE_DIR}/engine.i ${engine_HEADERS})
|
||||
ELSE()
|
||||
SET (SWIG_ENGINE_C swig-engine.c)
|
||||
ENDIF()
|
||||
|
||||
# Command to generate the iso-4217-currencies.c file
|
||||
SET (ISO_4217_C ${CMAKE_CURRENT_BINARY_DIR}/iso-4217-currencies.c)
|
||||
|
@ -1,9 +1,13 @@
|
||||
# CMakeLists.txt for src/gnc-module
|
||||
ADD_SUBDIRECTORY(test)
|
||||
|
||||
# Command to generate the swig-engine.c wrapper file
|
||||
SET (SWIG_GNC_MODULE_C ${CMAKE_CURRENT_BINARY_DIR}/swig-gnc-module.c)
|
||||
GNC_ADD_SWIG_COMMAND (${SWIG_GNC_MODULE_C} ${CMAKE_CURRENT_SOURCE_DIR}/gnc-module.i)
|
||||
IF (BUILDING_FROM_VCS)
|
||||
# Command to generate the swig-engine.c wrapper file
|
||||
SET (SWIG_GNC_MODULE_C ${CMAKE_CURRENT_BINARY_DIR}/swig-gnc-module.c)
|
||||
GNC_ADD_SWIG_COMMAND (${SWIG_GNC_MODULE_C} ${CMAKE_CURRENT_SOURCE_DIR}/gnc-module.i)
|
||||
ELSE()
|
||||
SET (SWIG_GNC_MODULE_C swig-gnc-module.c)
|
||||
ENDIF()
|
||||
|
||||
SET (gnc_module_SOURCES
|
||||
gnc-module.c
|
||||
|
@ -1,6 +1,10 @@
|
||||
|
||||
SET (SWIG_BAR_C ${CMAKE_CURRENT_BINARY_DIR}/swig-bar.c)
|
||||
GNC_ADD_SWIG_COMMAND (${SWIG_BAR_C} ${CMAKE_CURRENT_SOURCE_DIR}/bar.i bar.h)
|
||||
IF (BUILDING_FROM_VCS)
|
||||
SET (SWIG_BAR_C ${CMAKE_CURRENT_BINARY_DIR}/swig-bar.c)
|
||||
GNC_ADD_SWIG_COMMAND (${SWIG_BAR_C} ${CMAKE_CURRENT_SOURCE_DIR}/bar.i bar.h)
|
||||
ELSE()
|
||||
SET (SWIG_BAR_C swig-bar.c)
|
||||
ENDIF()
|
||||
|
||||
ADD_LIBRARY(bar EXCLUDE_FROM_ALL bar.c bar.h)
|
||||
ADD_LIBRARY(gncmodbar EXCLUDE_FROM_ALL gnc-mod-bar.c)
|
||||
|
@ -1,6 +1,10 @@
|
||||
|
||||
SET (SWIG_BAZ_C ${CMAKE_CURRENT_BINARY_DIR}/swig-baz.c)
|
||||
GNC_ADD_SWIG_COMMAND (${SWIG_BAZ_C} ${CMAKE_CURRENT_SOURCE_DIR}/baz.i baz.h)
|
||||
IF (BUILDING_FROM_VCS)
|
||||
SET (SWIG_BAZ_C ${CMAKE_CURRENT_BINARY_DIR}/swig-baz.c)
|
||||
GNC_ADD_SWIG_COMMAND (${SWIG_BAZ_C} ${CMAKE_CURRENT_SOURCE_DIR}/baz.i baz.h)
|
||||
ELSE()
|
||||
SET (SWIG_BAZ_C swig-baz.c)
|
||||
ENDIF()
|
||||
|
||||
ADD_LIBRARY(baz EXCLUDE_FROM_ALL baz.c baz.h)
|
||||
TARGET_INCLUDE_DIRECTORIES(baz PRIVATE
|
||||
|
@ -1,6 +1,10 @@
|
||||
|
||||
SET (SWIG_FOO_C ${CMAKE_CURRENT_BINARY_DIR}/swig-foo.c)
|
||||
GNC_ADD_SWIG_COMMAND (${SWIG_FOO_C} ${CMAKE_CURRENT_SOURCE_DIR}/foo.i foo.h)
|
||||
IF (BUILDING_FROM_VCS)
|
||||
SET (SWIG_FOO_C ${CMAKE_CURRENT_BINARY_DIR}/swig-foo.c)
|
||||
GNC_ADD_SWIG_COMMAND (${SWIG_FOO_C} ${CMAKE_CURRENT_SOURCE_DIR}/foo.i foo.h)
|
||||
ELSE()
|
||||
SET (SWIG_FOO_C swig-foo.c)
|
||||
ENDIF()
|
||||
|
||||
ADD_LIBRARY(foo EXCLUDE_FROM_ALL foo.c foo.h)
|
||||
ADD_LIBRARY(gncmodfoo EXCLUDE_FROM_ALL gnc-mod-foo.c)
|
||||
|
@ -5,8 +5,12 @@ ADD_SUBDIRECTORY(gtkbuilder)
|
||||
ADD_SUBDIRECTORY(ui)
|
||||
ADD_SUBDIRECTORY(test)
|
||||
|
||||
SET (SWIG_GNOME_UTILS_C ${CMAKE_CURRENT_BINARY_DIR}/swig-gnome-utils.c)
|
||||
GNC_ADD_SWIG_COMMAND (${SWIG_GNOME_UTILS_C} ${CMAKE_CURRENT_SOURCE_DIR}/gnome-utils.i)
|
||||
IF (BUILDING_FROM_VCS)
|
||||
SET (SWIG_GNOME_UTILS_C ${CMAKE_CURRENT_BINARY_DIR}/swig-gnome-utils.c)
|
||||
GNC_ADD_SWIG_COMMAND (${SWIG_GNOME_UTILS_C} ${CMAKE_CURRENT_SOURCE_DIR}/gnome-utils.i)
|
||||
ELSE()
|
||||
SET (SWIG_GNOME_UTILS_C swig-gnome-utils.c)
|
||||
ENDIF()
|
||||
|
||||
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/gschemas/org.gnucash.warnings.gschema.xml.in.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/gschemas/org.gnucash.warnings.gschema.xml.in)
|
||||
|
@ -39,8 +39,12 @@ SET (gnc_gnome_noinst_HEADERS
|
||||
window-autoclear.h
|
||||
)
|
||||
|
||||
SET (SWIG_GNOME_C ${CMAKE_CURRENT_BINARY_DIR}/swig-gnome.c)
|
||||
GNC_ADD_SWIG_COMMAND (${SWIG_GNOME_C} ${CMAKE_CURRENT_SOURCE_DIR}/gnome.i ${gnc_gnome_HEADERS})
|
||||
IF (BUILDING_FROM_VCS)
|
||||
SET (SWIG_GNOME_C ${CMAKE_CURRENT_BINARY_DIR}/swig-gnome.c)
|
||||
GNC_ADD_SWIG_COMMAND (${SWIG_GNOME_C} ${CMAKE_CURRENT_SOURCE_DIR}/gnome.i ${gnc_gnome_HEADERS})
|
||||
ELSE()
|
||||
SET (SWIG_GNOME_C swig-gnome.c)
|
||||
ENDIF()
|
||||
|
||||
SET (gnc_gnome_SOURCES
|
||||
${SWIG_GNOME_C}
|
||||
|
@ -9,8 +9,12 @@ SET (html_HEADERS
|
||||
gnc-html-webkit-p.h
|
||||
)
|
||||
|
||||
SET (SWIG_GNC_HTML_C ${CMAKE_CURRENT_BINARY_DIR}/swig-gnc-html.c)
|
||||
GNC_ADD_SWIG_COMMAND (${SWIG_GNC_HTML_C} ${CMAKE_CURRENT_SOURCE_DIR}/gnc-html.i ${gncmod_html_HEADERS})
|
||||
IF (BUILDING_FROM_VCS)
|
||||
SET (SWIG_GNC_HTML_C ${CMAKE_CURRENT_BINARY_DIR}/swig-gnc-html.c)
|
||||
GNC_ADD_SWIG_COMMAND (${SWIG_GNC_HTML_C} ${CMAKE_CURRENT_SOURCE_DIR}/gnc-html.i ${gncmod_html_HEADERS})
|
||||
ELSE()
|
||||
SET (SWIG_GNC_HTML_C swig-gnc-html.c)
|
||||
ENDIF()
|
||||
|
||||
SET (html_SOURCES
|
||||
gncmod-html.c
|
||||
|
103
src/optional/python-bindings/CMakeLists.txt
Normal file
103
src/optional/python-bindings/CMakeLists.txt
Normal file
@ -0,0 +1,103 @@
|
||||
|
||||
|
||||
IF (BUILDING_FROM_VCS)
|
||||
SET(SWIG_FILES ${CMAKE_CURRENT_SOURCE_DIR}/gnucash_core.i ${CMAKE_CURRENT_SOURCE_DIR}/timespec.i)
|
||||
SET(GNUCASH_CORE_C_INCLUDES
|
||||
${CMAKE_BINARY_DIR}/src/config.h
|
||||
${CMAKE_SOURCE_DIR}/src/libqof/qof/qofsession.h
|
||||
${CMAKE_SOURCE_DIR}/src/libqof/qof/qofbook.h
|
||||
${CMAKE_SOURCE_DIR}/src/libqof/qof/qofbackend.h
|
||||
${CMAKE_SOURCE_DIR}/src/libqof/qof/qoflog.h
|
||||
${CMAKE_SOURCE_DIR}/src/libqof/qof/qofutil.h
|
||||
${CMAKE_SOURCE_DIR}/src/libqof/qof/qofid.h
|
||||
${CMAKE_SOURCE_DIR}/src/libqof/qof/guid.h
|
||||
${CMAKE_SOURCE_DIR}/src/gnc-module/gnc-module.h
|
||||
${CMAKE_SOURCE_DIR}/src/engine/gnc-engine.h
|
||||
${CMAKE_SOURCE_DIR}/src/engine/Transaction.h
|
||||
${CMAKE_SOURCE_DIR}/src/engine/Split.h
|
||||
${CMAKE_SOURCE_DIR}/src/engine/Account.h
|
||||
${CMAKE_SOURCE_DIR}/src/engine/gnc-commodity.h
|
||||
${CMAKE_SOURCE_DIR}/src/engine/gnc-lot.h
|
||||
${CMAKE_SOURCE_DIR}/src/libqof/qof/gnc-numeric.h
|
||||
${CMAKE_SOURCE_DIR}/src/engine/gncCustomer.h
|
||||
${CMAKE_SOURCE_DIR}/src/engine/gncEmployee.h
|
||||
${CMAKE_SOURCE_DIR}/src/engine/gncVendor.h
|
||||
${CMAKE_SOURCE_DIR}/src/engine/gncAddress.h
|
||||
${CMAKE_SOURCE_DIR}/src/engine/gncBillTerm.h
|
||||
${CMAKE_SOURCE_DIR}/src/engine/gncOwner.h
|
||||
${CMAKE_SOURCE_DIR}/src/engine/gncInvoice.h
|
||||
${CMAKE_SOURCE_DIR}/src/engine/gncJob.h
|
||||
${CMAKE_SOURCE_DIR}/src/engine/gncEntry.h
|
||||
${CMAKE_SOURCE_DIR}/src/engine/gncTaxTable.h
|
||||
${CMAKE_SOURCE_DIR}/src/engine/gncIDSearch.h
|
||||
${CMAKE_SOURCE_DIR}/src/engine/gnc-pricedb.h
|
||||
${CMAKE_SOURCE_DIR}/src/app-utils/gnc-prefs-utils.h
|
||||
)
|
||||
|
||||
SET (SWIG_GNUCASH_CORE_C ${CMAKE_CURRENT_BINARY_DIR}/gnucash_core.c)
|
||||
|
||||
GNC_ADD_SWIG_PYTHON_COMMAND (swig-gnucash-core ${SWIG_GNUCASH_CORE_C}
|
||||
${SWIG_FILES}
|
||||
${CMAKE_SOURCE_DIR}/src/base-typemaps.i
|
||||
${CMAKE_SOURCE_DIR}/src/engine/engine-common.i
|
||||
${GNUCASH_CORE_C_INCLUDES}
|
||||
)
|
||||
ELSE()
|
||||
SET (SWIG_GNUCASH_CORE_C gnucash_core.c)
|
||||
ENDIF()
|
||||
|
||||
IF(WITH_PYTHON)
|
||||
|
||||
SET(gnucash_core_c_INCLUDE_DIRS
|
||||
${CMAKE_SOURCE_DIR}/src/libqof/qof
|
||||
${CMAKE_SOURCE_DIR}/src
|
||||
${CMAKE_SOURCE_DIR}/src/engine
|
||||
${CMAKE_SOURCE_DIR}/src/gnome-utils
|
||||
${CMAKE_SOURCE_DIR}/src/app-utils
|
||||
${CMAKE_SOURCE_DIR}/src/gnc-module
|
||||
${CMAKE_SOURCE_DIR}/src/gnome
|
||||
${CMAKE_SOURCE_DIR}/src/core-utils
|
||||
${CMAKE_SOURCE_DIR}/src/gnc-module
|
||||
${GLIB_INCLUDE_DIRS}
|
||||
${PYTHON_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
ADD_LIBRARY(gnucash_core_c MODULE ${SWIG_GNUCASH_CORE_C})
|
||||
TARGET_INCLUDE_DIRECTORIES(gnucash_core_c PRIVATE ${gnucash_core_c_INCLUDE_DIRS})
|
||||
|
||||
TARGET_LINK_LIBRARIES(gnucash_core_c gnc-qof gnc-module gncmod-engine gncmod-app-utils ${GLIB_LIBS} ${PYTHON_LIBRARIES})
|
||||
SET_TARGET_PROPERTIES(gnucash_core_c PROPERTIES PREFIX "_")
|
||||
TARGET_COMPILE_OPTIONS(gnucash_core_c PRIVATE -Wno-implicit -Wno-missing-prototypes -Wno-declaration-after-statement -Wno-missing-declarations)
|
||||
|
||||
ADD_EXECUTABLE(sqlite3test EXCLUDE_FROM_ALL sqlite3test.c ${SWIG_GNUCASH_CORE_C})
|
||||
TARGET_LINK_LIBRARIES(sqlite3test gnc-qof gnc-module gncmod-engine gncmod-app-utils ${GLIB_LIBS} ${PYTHON_LIBRARIES})
|
||||
TARGET_INCLUDE_DIRECTORIES(sqlite3test PRIVATE ${gnucash_core_c_INCLUDE_DIRS})
|
||||
TARGET_COMPILE_OPTIONS(sqlite3test PRIVATE -Wno-implicit -Wno-missing-prototypes -Wno-declaration-after-statement -Wno-missing-declarations)
|
||||
|
||||
ADD_TEST(NAME sqlite3test COMMAND sqlite3test)
|
||||
ADD_DEPENDENCIES(check sqlite3test)
|
||||
|
||||
|
||||
# Determine where to install the python libraries.
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND ${PYTHON_EXECUTABLE} -c "import sysconfig; print sysconfig.get_path('platlib', vars = { 'platbase' : '${CMAKE_INSTALL_PREFIX}' } )"
|
||||
RESULT_VARIABLE PYTHON_SYSCONFIG_RESULT
|
||||
OUTPUT_VARIABLE PYTHON_SYSCONFIG_OUTPUT
|
||||
ERROR_VARIABLE PYTHON_SYSCONFIG_ERROR
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
ERROR_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
IF (PYTHON_SYSCONFIG_RESULT)
|
||||
MESSAGE(SEND_ERROR "Could not determine Python site-package directory:\n${PYTHON_SYSCONFIG_ERROR}")
|
||||
ENDIF()
|
||||
|
||||
INSTALL(TARGETS gnucash_core_c
|
||||
LIBRARY DESTINATION ${PYTHON_SYSCONFIG_OUTPUT}/gnucash
|
||||
ARCHIVE DESTINATION ${PYTHON_SYSCONFIG_OUTPUT}/gnucash
|
||||
)
|
||||
INSTALL(FILES __init__.py function_class.py gnucash_business.py gnucash_core.py
|
||||
${CMAKE_CURRENT_BINARY_DIR}/gnucash_core_c.py
|
||||
DESTINATION ${PYTHON_SYSCONFIG_OUTPUT}/gnucash
|
||||
)
|
||||
|
||||
ENDIF()
|
@ -62,6 +62,7 @@
|
||||
#include "Split.h"
|
||||
#include "Account.h"
|
||||
#include "gnc-commodity.h"
|
||||
#include "gnc-environment.h"
|
||||
#include "gnc-lot.h"
|
||||
#include "gnc-numeric.h"
|
||||
#include "gncCustomer.h"
|
||||
|
17
src/python/CMakeLists.txt
Normal file
17
src/python/CMakeLists.txt
Normal file
@ -0,0 +1,17 @@
|
||||
# handle pycons directory
|
||||
|
||||
SET(gncmod_python_SOURCES gncmod-python.c)
|
||||
|
||||
ADD_LIBRARY(gncmod-python ${gncmod_python_SOURCES})
|
||||
TARGET_LINK_LIBRARIES(gncmod-python gnc-module gnc-core-utils-python gncmod-app-utils-python
|
||||
${PYTHON_LIBRARIES} ${GLIB_LIBS}) # ${PYTHON_EXTRA_LIBS}
|
||||
TARGET_INCLUDE_DIRECTORIES(gncmod-python
|
||||
PRIVATE ${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/core_utils ${CMAKE_SOURCE_DIR}/gnc-module ${PYTHON_INCLUDE_DIR})
|
||||
TARGET_COMPILE_OPTIONS(gncmod-python PRIVATE -DG_LOG_DOMAIN=\"gnc.python\")
|
||||
INSTALL(TARGETS gncmod-python
|
||||
LIBRARY DESTINATION lib/gnucash
|
||||
ARCHIVE DESTINATION lib/gnucash
|
||||
RUNTIME DESTINATION bin
|
||||
)
|
||||
|
||||
INSTALL(FILES init.py DESTINATION share/python)
|
@ -8,8 +8,12 @@ SET (report_gnome_HEADERS
|
||||
window-report.h
|
||||
)
|
||||
|
||||
SET (SWIG_REPORT_GNOME_C ${CMAKE_CURRENT_BINARY_DIR}/swig-report-gnome.c)
|
||||
GNC_ADD_SWIG_COMMAND (${SWIG_REPORT_GNOME_C} ${CMAKE_CURRENT_SOURCE_DIR}/report-gnome.i ${report_gnome_HEADERS})
|
||||
IF (BUILDING_FROM_VCS)
|
||||
SET (SWIG_REPORT_GNOME_C ${CMAKE_CURRENT_BINARY_DIR}/swig-report-gnome.c)
|
||||
GNC_ADD_SWIG_COMMAND (${SWIG_REPORT_GNOME_C} ${CMAKE_CURRENT_SOURCE_DIR}/report-gnome.i ${report_gnome_HEADERS})
|
||||
ELSE()
|
||||
SET (SWIG_REPORT_GNOME_C swig-report-gnome.c)
|
||||
ENDIF()
|
||||
|
||||
SET (report_gnome_SOURCES
|
||||
${SWIG_REPORT_GNOME_C}
|
||||
|
@ -4,8 +4,13 @@ SET (report_system_HEADERS
|
||||
gnc-report.h
|
||||
)
|
||||
|
||||
SET (SWIG_REPORT_SYSTEM_C ${CMAKE_CURRENT_BINARY_DIR}/swig-report-system.c)
|
||||
GNC_ADD_SWIG_COMMAND (${SWIG_REPORT_SYSTEM_C} ${CMAKE_CURRENT_SOURCE_DIR}/report-system.i ${report_system_HEADERS})
|
||||
IF (BUILDING_FROM_VCS)
|
||||
SET (SWIG_REPORT_SYSTEM_C ${CMAKE_CURRENT_BINARY_DIR}/swig-report-system.c)
|
||||
GNC_ADD_SWIG_COMMAND (${SWIG_REPORT_SYSTEM_C} ${CMAKE_CURRENT_SOURCE_DIR}/report-system.i ${report_system_HEADERS})
|
||||
ELSE()
|
||||
SET (SWIG_REPORT_SYSTEM_C swig-report-system.c)
|
||||
ENDIF()
|
||||
|
||||
|
||||
SET (report_system_SOURCES
|
||||
${SWIG_REPORT_SYSTEM_C}
|
||||
|
@ -25,16 +25,28 @@ IF (UNIX)
|
||||
TARGET_COMPILE_OPTIONS(test-core PRIVATE -fPIC)
|
||||
ENDIF()
|
||||
|
||||
SET (SWIG_UNITTEST_SUPPORT_GUILE_C ${CMAKE_CURRENT_BINARY_DIR}/swig-unittest-support-guile.c)
|
||||
GNC_ADD_SWIG_COMMAND (${SWIG_UNITTEST_SUPPORT_GUILE_C}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/unittest-support.i ${test_core_HEADERS})
|
||||
IF (BUILDING_FROM_VCS)
|
||||
SET (SWIG_UNITTEST_SUPPORT_GUILE_C ${CMAKE_CURRENT_BINARY_DIR}/swig-unittest-support-guile.c)
|
||||
GNC_ADD_SWIG_COMMAND (${SWIG_UNITTEST_SUPPORT_GUILE_C}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/unittest-support.i ${test_core_HEADERS})
|
||||
SET (SWIG_UNITTEST_SUPPORT_PYTHON_C ${CMAKE_CURRENT_BINARY_DIR}/swig-unittest-support-python.c)
|
||||
GNC_ADD_SWIG_PYTHON_COMMAND (swig-unittest-support-python ${SWIG_UNITTEST_SUPPORT_PYTHON_C} ${CMAKE_CURRENT_SOURCE_DIR}/unittest-support.i)
|
||||
ELSE()
|
||||
SET (SWIG_UNITTEST_SUPPORT_GUILE_C swig-unittest-support-guile.c)
|
||||
SET (SWIG_UNITTEST_SUPPORT_PYTHON_C swig-unittest-support-python.c)
|
||||
ENDIF()
|
||||
|
||||
|
||||
SET(test_core_guile_SOURCES ${SWIG_UNITTEST_SUPPORT_GUILE_C})
|
||||
|
||||
ADD_LIBRARY(test-core-guile ${test_core_guile_SOURCES})
|
||||
ADD_LIBRARY(test-core-guile ${SWIG_UNITTEST_SUPPORT_GUILE_C})
|
||||
TARGET_LINK_LIBRARIES(test-core-guile test-core ${GUILE_LDFLAGS} ${GLIB2_LDFLAGS})
|
||||
|
||||
IF (WITH_PYTHON)
|
||||
ADD_LIBRARY(unittest_support MODULE ${SWIG_UNITTEST_SUPPORT_PYTHON_C})
|
||||
TARGET_LINK_LIBRARIES(unittest_support test-core ${PYTHON_LIBRARIES})
|
||||
TARGET_INCLUDE_DIRECTORIES(unittest_support PRIVATE ${PYTHON_INCLUDE_DIRS})
|
||||
SET_TARGET_PROPERTIES(unittest_support PROPERTIES PREFIX "_")
|
||||
ENDIF()
|
||||
|
||||
SET(test_core_SCHEME unittest-support.scm)
|
||||
|
||||
SET(GUILE_OUTPUT_DIR gnucash)
|
||||
|
Loading…
Reference in New Issue
Block a user