This commit is contained in:
Vitor Santos Costa
2017-10-11 02:24:15 +01:00
parent da94db80cf
commit 6b0478db00
34 changed files with 1177 additions and 703 deletions

View File

@@ -5,8 +5,9 @@ set (PYTHON_SOURCES python.c pl2py.c pybips.c py2pl.c pl2pl.c pypreds.c)
set (CMAKE_POSITION_INDEPENDENT_CODE TRUE)
message( ${GMP_INCLUDE_DIRS} )
include_directories( ${CMAKE_BINARY_DIR}
${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/os )
${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/os ${GMP_INCLUDE_DIRS} )
#talk to python.pl
add_lib(YAPPython pyload.c ${PYTHON_HEADERS} )
@@ -18,8 +19,13 @@ add_library (Py4YAP OBJECT ${PYTHON_SOURCES} ${PYTHON_HEADERS})
else()
add_lib(Py4YAP ${PYTHON_SOURCES} ${PYTHON_HEADERS})
add_corelib(Py4YAP ${PYTHON_SOURCES} ${PYTHON_HEADERS})
MY_set_target_properties(
Py4YAP
PROPERTIES VERSION ${YAP_FULL_VERSION}
SOVERSION ${YAP_MAJOR_VERSION}.${YAP_MINOR_VERSION}
)
target_link_libraries(Py4YAP libYap ${PYTHON_LIBRARIES})
@@ -40,7 +46,7 @@ set (PYTHON_PL python.pl)
install(FILES python.pl DESTINATION ${libpl} )
add_to_group( pl_library PYTHON_PL )
add_to_group( PYTHON_PL pl_library )
set_target_properties (YAPPython PROPERTIES PREFIX "")
@@ -48,4 +54,3 @@ set_target_properties (YAPPython PROPERTIES PREFIX "")
LIBRARY DESTINATION ${dlls}
RUNTIME DESTINATION ${dlls}
ARCHIVE DESTINATION ${dlls} )

View File

@@ -8,19 +8,23 @@ include(FindPythonModule)
list (APPEND pl_library ${CMAKE_CURRENT_SOURCE_DIR}/prolog/jupyter.yap ${CMAKE_CURRENT_SOURCE_DIR}/prolog/yapi.yap )
set (PYTHON_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/yap4py/yapi.py ${CMAKE_CURRENT_SOURCE_DIR}/yap4py/__init__.py ${CMAKE_CURRENT_SOURCE_DIR}/yap4py/__main__.py)
SET_SOURCE_FILES_PROPERTIES(../../swig/yap.i PROPERTIES CPLUSPLUS ON)
SET_SOURCE_FILES_PROPERTIES(../../swig/yap.i PROPERTIES SWIG_FLAGS "-O;-py3")
SET_SOURCE_FILES_PROPERTIES(../../swiyap.i PROPERTIES SWIG_MODULE_NAME yap)
#SET_SOURCE_FILES_PROPERTIES(../../swi/yap.i PROPERTIES OUTPUT_NAME yap)
configure_file("setup.py.in" ${CMAKE_CURRENT_BINARY_DIR}/setup.py)
configure_file("MANIFEST.in" ${CMAKE_CURRENT_BINARY_DIR}/MANIFEST.in)
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/YAP4PY.md" ${CMAKE_CURRENT_BINARY_DIR}/README)
INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_PATH})
INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_PATH} ${CMAKE_CURRENT_BINARY_DIR}/yap4py/include
INCLUDE_DIRECTORIES("${CMAKE_CURRENT_BINARY_DIR}/yap4py/include")
DEPENDS ${SWIG_SOURCES} YAP++
)
SET_SOURCE_FILES_PROPERTIES(../../swig/yap.i PROPERTIES CPLUSPLUS ON)
SET_SOURCE_FILES_PROPERTIES(../../swig/yap.i PROPERTIES SWIG_FLAGS "-O;-py3")
SET_SOURCE_FILES_PROPERTIES(../../swiyap.i PROPERTIES SWIG_MODULE_NAME yap)
#SET_SOURCE_FILES_PROPERTIES(../../swi/yap.i PROPERTIES OUTPUT_NAME yap)
SWIG_ADD_LIBRARY(Py2YAP LANGUAGE python SHARED SOURCES ../../swig/yap.i )
if (WIN32)
@@ -31,14 +35,21 @@ else()
set_target_properties ( ${SWIG_MODULE_Py2YAP_REAL_NAME}
PROPERTIES
NO_SONAME ON
OUTPUT_NAME yapc
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
DEPENDS YAPPython YAPPython YAP++
OUTPUT_NAME yap
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
DEPENDS YAPPython
)
# inform we are compiling YAP
SET(SWIG_SOURCES
${CMAKE_SOURCE_DIR}/packages/swig/yap.i
)
# inform we are compiling YAP
# s used in MSYS
#
#
# INSTALL ( TARGETS ${SWIG_MODULE_Py2YAP_REAL_NAME}
# RUNTIME DESTINATION ${PYTHON_MODULE_PATH}
# ARCHIVE DESTINATION ${PYTHON_MODULE_PATH}
@@ -46,25 +57,63 @@ else()
# )
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/yap4y)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/yap4py)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/yap4py/include)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/yap4py/prolog)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/yap4py/prolog/os)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/yap4py/prolog/pl)
file(COPY ../../swig/yap.i DESTINATION .)
file(COPY ${CMAKE_SOURCE_DIR}/CXX/yapi.cpp DESTINATION .)
file(COPY ${pl_library} DESTINATION yap4py/prolog)
file(COPY ${pl_os_library} DESTINATION yap4py/prolog/os)
file(COPY ${c_headers} DESTINATION yap4py/include)
file(COPY ${cxx_headers} DESTINATION yap4py/include)
add_custom_command( OUTPUT yap.i
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/packages/swig/yap.i .
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
DEPENDS ${CMAKE_SOURCE_DIR}/packages/swig/yap.i )
add_custom_command( OUTPUT yapi.cpp
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/CXX/yapi.cpp .
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
DEPENDS ${CMAKE_SOURCE_DIR}/CXX/yapi.cpp )
add_custom_command( OUTPUT yap4py/prolog/lists.yap
COMMAND ${CMAKE_COMMAND} -E copy ${pl_library} yap4py/prolog
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
DEPENDS ${pl_library} )
add_custom_command( OUTPUT yap4py/prolog/os/yio.yap
COMMAND ${CMAKE_COMMAND} -E copy ${pl_os_library} yap4py/prolog/os
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
DEPENDS ${pl_os_library} )
add_custom_command( OUTPUT yap4py/prolog/pl/boot.yap
COMMAND ${CMAKE_COMMAND} -E copy ${pl_boot_library} yap4py/prolog/pl
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
DEPENDS ${pl_boot_library} )
add_custom_command( OUTPUT yap4py/include/YapInterface.h
COMMAND ${CMAKE_COMMAND} -E copy ${c_headers} yap4py/include
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
DEPENDS ${c_headers} )
add_custom_command( OUTPUT yap4py/include/yapi.hh
COMMAND ${CMAKE_COMMAND} -E copy ${cxx_headers} yap4py/include
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
DEPENDS ${cxx_headers} )
if (CONDA)
set(bdist bdist_conda)
else()
set(bdist bdist_wheel)
endif()
add_custom_target( YAP4PY ALL
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/startup.yss ${CMAKE_CURRENT_BINARY_DIR}/yap4py
COMMAND ${CMAKE_COMMAND} -E copy ${CONFIGURATION_HEADERS} ${CMAKE_CURRENT_BINARY_DIR}/yap4py/include
COMMAND ${PYTHON_EXECUTABLE} setup.py sdist bdist_wheel
COMMAND ${SWIG_EXECUTABLE} -c++ -python -O -py3 -module "yap" -outcurrentdir -addextern -Iyap4py/include -outdir ${CMAKE_CURRENT_BINARY_DIR} -I${GMP_INCLUDE_DIRS} -DX_API="" -o yapPyTHON_wrap.cxx ${SWIG_SOURCES}
COMMAND ${PYTHON_EXECUTABLE} setup.py sdist ${bdist}
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
DEPENDS STARTUP ${PYTHON_SOURCES} ${PROLOG_SOURCES} ${CMAKE_CURRENT_BINARY_DIR}/setup.py ${SWIG_MODULE_Py2YAP_REAL_NAME} )
DEPENDS ${YAP_DLLS} STARTUP yap4py/prolog/pl/boot.yap yapi.cpp yap4py/include/yapi.hh yap4py/include/YapInterface.h yap4py/prolog/os/yio.yap yap4py/prolog/lists.yap yap.i
)
function(f_copy filename output )
get_filename_component(base ${filename} NAME_WE)

View File

@@ -4,6 +4,9 @@ include README.md
recursive-include yap4py/prolog *.*
recursive-include html *.*
recursive-include docs *.*
recursive-include so *.*
recursive-include dll *.*
recursive-include dylib *.*
# Documentation
graft docs

View File

@@ -17,10 +17,9 @@ if platform.system() == 'Windows':
load('libYap*')
else:
def load( dll ):
dll = glob.glob(os.path.join(yap_lib_path,dll))[0]
dll = os.path.join(yap_lib_path,dll)
dll = os.path.abspath(dll)
ctypes.CDLL(dll, mode=ctypes.RTLD_GLOBAL)
if platform.system() == 'Apple'::
load('libYap*')
load('libYAP+*')
load('libPy4YAP*')
if platform.system() == 'Apple':
load('libYap.dylib')
load('libPy4YAP.dylib' )

View File

@@ -57,7 +57,9 @@ if platform.system() == 'Darwin':
so = 'dylib'
#or dll in glob('yap/dlls/*'):
# move( dll ,'lib' )
libs = glob('../../../*.{dylib;dll;so}'+'../../../*/*.{dylib;dll;so}'+'../../../*/*/*.{dylib;dll;so}')
for l in libs:
copy2(l, 'yap4py', follow_symlinks=False)
cplus=['${RELATIVE_SOURCE}CXX/yapi.cpp']

View File

@@ -50,37 +50,29 @@ import shutil
from distutils.core import setup
here = abspath(dirname(__file__))
libpydir = abspath(dirname(os.path.dirname('stdlib')))
libpyauxdir = abspath(os.path.dirname('stdlib'))
libpydir = abspath(sysconfig.get_path('platlib'))
libpyauxdir = abspath(os.path.dirname('std lib'))
#pkg_root = join(here, name)
here = path.abspath(path.dirname(__file__))
sys.path.insert(0, "${CMAKE_CURRENT_SOURCE_DIR}")
if 'conda' in sys.version or 'Continuum' in sys.version:\
my_extra_link_args = []
if platform.system() == 'Windows':
local_libs = []
win_libs = ['wsock32','ws2_32']
my_extra_link_args = ['-Wl,-export-all-symbols']
else:
# if platform.system() == 'Darwin':
my_extra_link_args = []
#if platform.system() == 'Darwin':
my_extra_link_args = ['-Wl,-rpath','-Wl,@loader_path/../../..']
win_libs = []
local_libs = ['Py4YAP']
# or dll in glob('yap/dlls/*'):
# move( dll ,'lib' )
native_sources = ["yap.i",'yapi.cpp']
native_sources = ["yapPYTHON_wrap.cxx",'yapi.cpp']
for i in '${PYTHON_SOURCES}'.split(";"):
copy2(i, 'yap4py')
my_libs0 = '${YAP_DLLS}'.split(";")
my_libs = []
for i in my_libs0:
my_libs = glob(i) + my_libs
for i in my_libs:
copy2(i, 'yap4py')
here = path.abspath(path.dirname(__file__))
#gmp_dir = path.abspath(path.dirname("${GMP_LIBRARIES}"))
#python_libdir = path.abspath(path.dirname("${PYTHON_LIBRARIES}")
# Get the long description from the README file
@@ -93,10 +85,11 @@ extensions = [Extension('_yap', native_sources,
('_YAP_NOT_INSTALLED_', '1'),
('YAP_PYTHON', '1'),
('_GNU_SOURCE', '1')],
runtime_library_dirs=['yap4py'],
runtime_library_dirs=[abspath(sysconfig.get_path('platlib')),
abspath(sysconfig.get_path('platlib'))],
swig_opts=['-modern', '-c++', '-py3',
'-DX_API', '-Iyap4py/include' ],
library_dirs=["yap4py"],
library_dirs=[".",'../../..'],
extra_link_args=my_extra_link_args,
libraries=['Yap','Py4YAP','gmp']+win_libs+local_libs,
include_dirs=['yap4py/include']
@@ -111,6 +104,8 @@ package_data = {
'': '*.*'
}
data_files=[('../..', glob('lib*.*'))]
version_ns = {'__version__': '6.3.5', 'minor-version': '6', 'minor-version': '3', 'patch': '5'}
setup_args = dict(
@@ -118,9 +113,11 @@ setup_args = dict(
version=version_ns['__version__'],
scripts=glob(join('scripts', '*')),
packages=packages,
py_modules=['yap','yap4py'],
ext_modules=extensions,
py_modules=['yap','yap4py.yapi'],
package_data=package_data,
include_package_data=True,
data_files = data_files,
# requirements=[
# 'm2w64-gmp',
# 'm2-msys2-keyring',
@@ -132,7 +129,6 @@ setup_args = dict(
author_email='vsc@dcc.fc.up.pt',
url='http://www.dcc.fc.up/~vsc/yap',
license='BSD',
ext_modules=extensions,
platforms="Linux, Mac OS X, Windows",
keywords=['Interactive', 'Interpreter', 'Shell', 'Web'],
classifiers=[

View File

@@ -20,5 +20,5 @@ else:
dll = glob.glob(os.path.join(yap_lib_path,dll))[0]
dll = os.path.abspath(dll)
ctypes.CDLL(dll, mode=ctypes.RTLD_GLOBAL)
load('libYap*')
load('libPy4YAP*')
# load('libYap*')
# load('libPy4YAP*')

View File

@@ -1,4 +1,4 @@
"""The main routine of the yap python project."""
"""The main routine of the yap python project."""
import sys
import yap4py.yapi