python vs modules
This commit is contained in:
parent
3a06d4fecb
commit
97aad19cd0
@ -77,6 +77,8 @@ struct foreign_context {
|
|||||||
struct PL_local_data *engine; /* invoking engine */
|
struct PL_local_data *engine; /* invoking engine */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
X_API bool python_in_python;
|
||||||
|
|
||||||
X_API int YAP_Reset(yap_reset_t mode);
|
X_API int YAP_Reset(yap_reset_t mode);
|
||||||
|
|
||||||
#if !HAVE_STRNCPY
|
#if !HAVE_STRNCPY
|
||||||
|
1
C/save.c
1
C/save.c
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* *
|
* *
|
||||||
* YAP Prolog *
|
* YAP Prolog *
|
||||||
|
47
CXX/yapdb.hh
47
CXX/yapdb.hh
@ -74,53 +74,6 @@ public:
|
|||||||
virtual YAPModule module() { return YAPModule(m->AtomOfME); };
|
virtual YAPModule module() { return YAPModule(m->AtomOfME); };
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief YAPFunctor represents Prolog functors Name/Arity
|
|
||||||
*/
|
|
||||||
class X_API YAPFunctor : public YAPProp {
|
|
||||||
friend class YAPApplTerm;
|
|
||||||
friend class YAPTerm;
|
|
||||||
friend class YAPPredicate;
|
|
||||||
friend class YAPQuery;
|
|
||||||
Functor f;
|
|
||||||
/// Constructor: receives Prolog functor and casts it to YAPFunctor
|
|
||||||
///
|
|
||||||
/// Notice that this is designed for internal use only.
|
|
||||||
inline YAPFunctor(Functor ff) { f = ff; }
|
|
||||||
|
|
||||||
public:
|
|
||||||
/// Constructor: receives name as an atom, plus arity
|
|
||||||
///
|
|
||||||
/// This is the default method, and the most popular
|
|
||||||
YAPFunctor(YAPAtom at, uintptr_t arity) { f = Yap_MkFunctor(at.a, arity); }
|
|
||||||
|
|
||||||
/// Constructor: receives name as a string plus arity
|
|
||||||
///
|
|
||||||
/// Notice that this is designed for ISO-LATIN-1 right now
|
|
||||||
/// Note: Python confuses the 3 constructors,
|
|
||||||
/// use YAPFunctorFromString
|
|
||||||
inline YAPFunctor(const char *s, uintptr_t arity, bool isutf8 = true) {
|
|
||||||
f = Yap_MkFunctor(Yap_LookupAtom(s), arity);
|
|
||||||
}
|
|
||||||
/// Constructor: receives name as a wide string plus arity
|
|
||||||
///
|
|
||||||
/// Notice that this is designed for UNICODE right now
|
|
||||||
///
|
|
||||||
/// Note: Python confuses the 3 constructors,
|
|
||||||
/// use YAPFunctorFromWideString
|
|
||||||
inline YAPFunctor(const wchar_t *s, uintptr_t arity) {
|
|
||||||
CACHE_REGS f = Yap_MkFunctor(UTF32ToAtom(s PASS_REGS), arity);
|
|
||||||
}
|
|
||||||
/// Getter: extract name of functor as an atom
|
|
||||||
///
|
|
||||||
/// this is for external usage.
|
|
||||||
YAPAtom name(void) { return YAPAtom(NameOfFunctor(f)); }
|
|
||||||
|
|
||||||
/// Getter: extract arity of functor as an unsigned integer
|
|
||||||
///
|
|
||||||
/// this is for external usage.
|
|
||||||
uintptr_t arity(void) { return ArityOfFunctor(f); }
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Predicates
|
* @brief Predicates
|
||||||
|
13
CXX/yapi.cpp
13
CXX/yapi.cpp
@ -195,8 +195,6 @@ YAPApplTerm::YAPApplTerm(YAPFunctor f) : YAPTerm()
|
|||||||
RECOVER_H();
|
RECOVER_H();
|
||||||
}
|
}
|
||||||
|
|
||||||
YAPFunctor YAPApplTerm::getFunctor() { return YAPFunctor(FunctorOfTerm(gt())); }
|
|
||||||
|
|
||||||
Term &YAPTerm::operator[](arity_t i)
|
Term &YAPTerm::operator[](arity_t i)
|
||||||
{
|
{
|
||||||
BACKUP_MACHINE_REGS();
|
BACKUP_MACHINE_REGS();
|
||||||
@ -408,12 +406,6 @@ YAPListTerm::YAPListTerm(YAPTerm ts[], arity_t n)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
YAPVarTerm::YAPVarTerm()
|
|
||||||
{
|
|
||||||
CACHE_REGS
|
|
||||||
mk(MkVarTerm());
|
|
||||||
}
|
|
||||||
|
|
||||||
const char *YAPAtom::getName(void) { return Yap_AtomToUTF8Text(a, nullptr); }
|
const char *YAPAtom::getName(void) { return Yap_AtomToUTF8Text(a, nullptr); }
|
||||||
|
|
||||||
void YAPQuery::openQuery(Term t, Term *ts)
|
void YAPQuery::openQuery(Term t, Term *ts)
|
||||||
@ -1127,8 +1119,9 @@ YAPEngine::YAPEngine(int argc, char *argv[],
|
|||||||
/* ignore flags for now */
|
/* ignore flags for now */
|
||||||
BACKUP_MACHINE_REGS();
|
BACKUP_MACHINE_REGS();
|
||||||
Yap_RebootHandles(worker_id);
|
Yap_RebootHandles(worker_id);
|
||||||
while (B->cp_b)
|
while (B && B->cp_b)
|
||||||
B = B->cp_b;
|
B = B->cp_b;
|
||||||
|
if (B) {
|
||||||
P = FAILCODE;
|
P = FAILCODE;
|
||||||
Yap_exec_absmi(true, YAP_EXEC_ABSMI);
|
Yap_exec_absmi(true, YAP_EXEC_ABSMI);
|
||||||
/* recover stack space */
|
/* recover stack space */
|
||||||
@ -1138,7 +1131,7 @@ YAPEngine::YAPEngine(int argc, char *argv[],
|
|||||||
DEPTH = B->cp_depth;
|
DEPTH = B->cp_depth;
|
||||||
#endif /* DEPTH_LIMIT */
|
#endif /* DEPTH_LIMIT */
|
||||||
YENV = ENV = B->cp_env;
|
YENV = ENV = B->cp_env;
|
||||||
|
}
|
||||||
RECOVER_MACHINE_REGS();
|
RECOVER_MACHINE_REGS();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
74
CXX/yapt.hh
74
CXX/yapt.hh
@ -256,6 +256,54 @@ public:
|
|||||||
inline bool initialized() { return t != 0; };
|
inline bool initialized() { return t != 0; };
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief YAPFunctor represents Prolog functors Name/Arity
|
||||||
|
*/
|
||||||
|
class X_API YAPFunctor : public YAPProp {
|
||||||
|
friend class YAPApplTerm;
|
||||||
|
friend class YAPTerm;
|
||||||
|
friend class YAPPredicate;
|
||||||
|
friend class YAPQuery;
|
||||||
|
Functor f;
|
||||||
|
/// Constructor: receives Prolog functor and casts it to YAPFunctor
|
||||||
|
///
|
||||||
|
/// Notice that this is designed for internal use only.
|
||||||
|
inline YAPFunctor(Functor ff) { f = ff; }
|
||||||
|
|
||||||
|
public:
|
||||||
|
/// Constructor: receives name as an atom, plus arity
|
||||||
|
///
|
||||||
|
/// This is the default method, and the most popular
|
||||||
|
YAPFunctor(YAPAtom at, uintptr_t arity) { f = Yap_MkFunctor(at.a, arity); }
|
||||||
|
|
||||||
|
/// Constructor: receives name as a string plus arity
|
||||||
|
///
|
||||||
|
/// Notice that this is designed for ISO-LATIN-1 right now
|
||||||
|
/// Note: Python confuses the 3 constructors,
|
||||||
|
/// use YAPFunctorFromString
|
||||||
|
inline YAPFunctor(const char *s, uintptr_t arity, bool isutf8 = true) {
|
||||||
|
f = Yap_MkFunctor(Yap_LookupAtom(s), arity);
|
||||||
|
}
|
||||||
|
/// Constructor: receives name as a wide string plus arity
|
||||||
|
///
|
||||||
|
/// Notice that this is designed for UNICODE right now
|
||||||
|
///
|
||||||
|
/// Note: Python confuses the 3 constructors,
|
||||||
|
/// use YAPFunctorFromWideString
|
||||||
|
inline YAPFunctor(const wchar_t *s, uintptr_t arity) {
|
||||||
|
CACHE_REGS f = Yap_MkFunctor(UTF32ToAtom(s PASS_REGS), arity);
|
||||||
|
}
|
||||||
|
/// Getter: extract name of functor as an atom
|
||||||
|
///
|
||||||
|
/// this is for external usage.
|
||||||
|
YAPAtom name(void) { return YAPAtom(NameOfFunctor(f)); }
|
||||||
|
|
||||||
|
/// Getter: extract arity of functor as an unsigned integer
|
||||||
|
///
|
||||||
|
/// this is for external usage.
|
||||||
|
uintptr_t arity(void) { return ArityOfFunctor(f); }
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Compound Term
|
* @brief Compound Term
|
||||||
*/
|
*/
|
||||||
@ -273,7 +321,9 @@ public:
|
|||||||
YAPApplTerm(YAPFunctor f, YAPTerm ts[]);
|
YAPApplTerm(YAPFunctor f, YAPTerm ts[]);
|
||||||
YAPApplTerm(const std::string s, std::vector<YAPTerm> ts);
|
YAPApplTerm(const std::string s, std::vector<YAPTerm> ts);
|
||||||
YAPApplTerm(YAPFunctor f);
|
YAPApplTerm(YAPFunctor f);
|
||||||
YAPFunctor getFunctor();
|
inline Functor functor() { return FunctorOfTerm(gt()); }
|
||||||
|
inline YAPFunctor getFunctor() { return YAPFunctor(FunctorOfTerm(gt())); }
|
||||||
|
|
||||||
Term getArg(arity_t i) {
|
Term getArg(arity_t i) {
|
||||||
BACKUP_MACHINE_REGS();
|
BACKUP_MACHINE_REGS();
|
||||||
Term t0 = gt();
|
Term t0 = gt();
|
||||||
@ -480,7 +530,7 @@ class X_API YAPVarTerm : public YAPTerm {
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
/// constructor
|
/// constructor
|
||||||
YAPVarTerm();
|
YAPVarTerm() {mk(MkVarTerm()); };
|
||||||
/// get the internal representation
|
/// get the internal representation
|
||||||
CELL *getVar() { return VarOfTerm(gt()); }
|
CELL *getVar() { return VarOfTerm(gt()); }
|
||||||
/// is the variable bound to another one
|
/// is the variable bound to another one
|
||||||
@ -490,16 +540,16 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
bool unbound() { return IsUnboundVar(VarOfTerm(gt())); }
|
bool unbound() { return IsUnboundVar(VarOfTerm(gt())); }
|
||||||
virtual bool isVar() { return true; } /// type check for unbound
|
inline bool isVar() { return true; } /// type check for unbound
|
||||||
virtual bool isAtom() { return false; } /// type check for atom
|
inline bool isAtom() { return false; } /// type check for atom
|
||||||
virtual bool isInteger() { return false; } /// type check for integer
|
inline bool isInteger() { return false; } /// type check for integer
|
||||||
virtual bool isFloat() { return false; } /// type check for floating-point
|
inline bool isFloat() { return false; } /// type check for floating-point
|
||||||
virtual bool isString() { return false; } /// type check for a string " ... "
|
inline bool isString() { return false; } /// type check for a string " ... "
|
||||||
virtual bool isCompound() { return false; } /// is a primitive term
|
inline bool isCompound() { return false; } /// is a primitive term
|
||||||
virtual bool isAppl() { return false; } /// is a structured term
|
inline bool isAppl() { return false; } /// is a structured term
|
||||||
virtual bool isPair() { return false; } /// is a pair term
|
inline bool isPair() { return false; } /// is a pair term
|
||||||
virtual bool isGround() { return false; } /// term is ground
|
inline bool isGround() { return false; } /// term is ground
|
||||||
virtual bool isList() { return false; } /// term is a list
|
inline bool isList() { return false; } /// term is a list
|
||||||
};
|
};
|
||||||
|
|
||||||
/// @}
|
/// @}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* xsswi.c */
|
/* swi.c */
|
||||||
/*
|
/*
|
||||||
* Project: jpl for Yap Prolog
|
* Project: jpl for Yap Prolog
|
||||||
* Author: Steve Moyle and Vitor Santos Costa
|
* Author: Steve Moyle and Vitor Santos Costa
|
||||||
@ -800,7 +800,7 @@ X_API int PL_get_head(term_t ts, term_t h) {
|
|||||||
|
|
||||||
* */
|
* */
|
||||||
|
|
||||||
/** @brief t unifies with the true/false value in a.
|
/*b* @brief t unifies with the true/false value in a.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
X_API int PL_unify_bool(term_t t, int a) {
|
X_API int PL_unify_bool(term_t t, int a) {
|
||||||
|
@ -9,11 +9,27 @@ set (CMAKE_POSITION_INDEPENDENT_CODE TRUE)
|
|||||||
|
|
||||||
include_directories( ${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/include )
|
include_directories( ${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/include )
|
||||||
|
|
||||||
add_library (Obj4Py OBJECT ${PYTHON_SOURCES} ${PYTHON_HEADERS})
|
|
||||||
if (WIN32)
|
if (WIN32)
|
||||||
|
add_library (Py4YAP OBJECT ${PYTHON_SOURCES} ${PYTHON_HEADERS})
|
||||||
add_library (YAPPython SHARED pyload.c ${PYTHON_HEADERS} )
|
add_library (YAPPython SHARED pyload.c ${PYTHON_HEADERS} )
|
||||||
|
else()
|
||||||
|
add_library (Py4YAP SHARED ${PYTHON_SOURCES} ${PYTHON_HEADERS})
|
||||||
|
add_library (YAPPython SHARED pyload.c ${PYTHON_SOURCES} ${PYTHON_HEADERS})
|
||||||
|
|
||||||
|
# arithmetic hassle.
|
||||||
|
set_property(TARGET Py4YAP PROPERTY CXX_STANDARD 11)
|
||||||
|
set_property(TARGET Py4YAP PROPERTY CXX_STANDARD_REQUIRED ON)
|
||||||
|
|
||||||
|
target_link_libraries(Py4YAP libYap ${PYTHON_LIBRARIES})
|
||||||
|
target_link_libraries(YAPPython Py4YAP)
|
||||||
|
|
||||||
|
MY_install(TARGETS Py4YAP
|
||||||
|
LIBRARY DESTINATION ${libdir}
|
||||||
|
RUNTIME DESTINATION ${dlls}
|
||||||
|
ARCHIVE DESTINATION ${libdir} )
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
||||||
# arithmetic hassle.
|
# arithmetic hassle.
|
||||||
set_property(TARGET YAPPython PROPERTY CXX_STANDARD 11)
|
set_property(TARGET YAPPython PROPERTY CXX_STANDARD 11)
|
||||||
set_property(TARGET YAPPython PROPERTY CXX_STANDARD_REQUIRED ON)
|
set_property(TARGET YAPPython PROPERTY CXX_STANDARD_REQUIRED ON)
|
||||||
|
@ -30,13 +30,8 @@ foreign_t python_to_term(PyObject *pVal, term_t t) {
|
|||||||
//fputs("<<*** ",stderr);Yap_DebugPlWrite(YAP_GetFromSlot(t)); fputs(" >>***\n",stderr);
|
//fputs("<<*** ",stderr);Yap_DebugPlWrite(YAP_GetFromSlot(t)); fputs(" >>***\n",stderr);
|
||||||
rc= PL_unify_atom(t, ATOM_none);
|
rc= PL_unify_atom(t, ATOM_none);
|
||||||
//fputs("<<*** ",stderr);Yap_DebugPlWrite(YAP_GetFromSlot(t)); fputs(" >>***\n",stderr);
|
//fputs("<<*** ",stderr);Yap_DebugPlWrite(YAP_GetFromSlot(t)); fputs(" >>***\n",stderr);
|
||||||
}
|
} else if (PyBool_Check(pVal)) {
|
||||||
if (PyBool_Check(pVal)) {
|
rc = rc && PL_unify_bool(t, PyObject_IsTrue(pVal));
|
||||||
if (PyObject_IsTrue(pVal)) {
|
|
||||||
rc = rc && PL_unify_atom(t, ATOM_true);
|
|
||||||
} else {
|
|
||||||
rc = rc && PL_unify_atom(t, ATOM_false);
|
|
||||||
}
|
|
||||||
} else if (PyLong_Check(pVal)) {
|
} else if (PyLong_Check(pVal)) {
|
||||||
rc = rc && PL_unify_int64(t, PyLong_AsLong(pVal));
|
rc = rc && PL_unify_int64(t, PyLong_AsLong(pVal));
|
||||||
#if PY_MAJOR_VERSION < 3
|
#if PY_MAJOR_VERSION < 3
|
||||||
|
@ -76,7 +76,7 @@ extern PyObject *py_F2P;
|
|||||||
extern PyObject *py_Sys;
|
extern PyObject *py_Sys;
|
||||||
extern PyObject *py_ModDict;
|
extern PyObject *py_ModDict;
|
||||||
|
|
||||||
extern bool python_in_python;
|
extern X_API bool python_in_python;
|
||||||
|
|
||||||
extern bool python_release_GIL(term_t state);
|
extern bool python_release_GIL(term_t state);
|
||||||
extern term_t python_acquire_GIL(void);
|
extern term_t python_acquire_GIL(void);
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
#include "py4yap.h"
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @section Python Built-Ins
|
* @section Python Built-Ins
|
||||||
@ -10,7 +8,7 @@
|
|||||||
|
|
||||||
//@{
|
//@{
|
||||||
|
|
||||||
#include "python.h"
|
#include "py4yap.h"
|
||||||
|
|
||||||
static PyObject *finalLookup(PyObject *i, const char *s) {
|
static PyObject *finalLookup(PyObject *i, const char *s) {
|
||||||
PyObject *rc;
|
PyObject *rc;
|
||||||
|
@ -8,7 +8,7 @@ X_API bool init_python_dll(void);
|
|||||||
X_API bool init_python_dll(void)
|
X_API bool init_python_dll(void)
|
||||||
{
|
{
|
||||||
do_init_python();
|
do_init_python();
|
||||||
|
install_pypreds();
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
|
|
||||||
|
|
||||||
#include "py4yap.h"
|
#include "py4yap.h"
|
||||||
#include <VFS.h>
|
#include <VFS.h>
|
||||||
|
|
||||||
@ -109,7 +110,7 @@ init_python_stream(void)
|
|||||||
|
|
||||||
X_API PyObject *py_F2P;
|
X_API PyObject *py_F2P;
|
||||||
|
|
||||||
bool python_in_python;
|
extern X_API bool python_in_python;
|
||||||
|
|
||||||
static void add_modules(void) {
|
static void add_modules(void) {
|
||||||
py_Main = PyImport_AddModule("__main__");
|
py_Main = PyImport_AddModule("__main__");
|
||||||
@ -199,7 +200,6 @@ X_API bool do_init_python(void) {
|
|||||||
Py_Initialize();
|
Py_Initialize();
|
||||||
install_py_constants();
|
install_py_constants();
|
||||||
PL_reset_term_refs(t);
|
PL_reset_term_refs(t);
|
||||||
install_pypreds();
|
|
||||||
install_pl2pl();
|
install_pl2pl();
|
||||||
// PyGILState_Release(gstate);
|
// PyGILState_Release(gstate);
|
||||||
add_modules();
|
add_modules();
|
||||||
|
@ -26,8 +26,6 @@ if (WIN32)
|
|||||||
|
|
||||||
set (SYS_DLLS ${GMP_LIBRARIES})
|
set (SYS_DLLS ${GMP_LIBRARIES})
|
||||||
|
|
||||||
message(STATUS "SYS_ = ${tmp}")
|
|
||||||
|
|
||||||
set (SYS_DLLS c:/msys64/mingw64/bin/libgmp-10.dll)
|
set (SYS_DLLS c:/msys64/mingw64/bin/libgmp-10.dll)
|
||||||
|
|
||||||
endif()
|
endif()
|
||||||
@ -50,18 +48,19 @@ endif()
|
|||||||
$<TARGET_FILE:itries>
|
$<TARGET_FILE:itries>
|
||||||
$<TARGET_FILE:sys>
|
$<TARGET_FILE:sys>
|
||||||
$<TARGET_FILE:yap_random>
|
$<TARGET_FILE:yap_random>
|
||||||
|
$<TARGET_FILE:YAP++>
|
||||||
$<TARGET_FILE:YAPPython>
|
$<TARGET_FILE:YAPPython>
|
||||||
)
|
)
|
||||||
if (TARGET real)
|
if (TARGET real)
|
||||||
list(APPEND python_dlls $<TARGET_FILE:real>
|
list(APPEND python_dlls $<TARGET_FILE:real>
|
||||||
)
|
)
|
||||||
message(STATUS "${python_dlls}")
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set (PL ${pl_library} ${PROLOG_SOURCES} )
|
set (PL ${pl_library} ${PROLOG_SOURCES} )
|
||||||
|
|
||||||
add_custom_target( YAP4PY_SETUP
|
add_custom_target( YAP4PY_SETUP
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/packages/swig/yap.i ${CMAKE_CURRENT_BINARY_DIR}
|
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/packages/swig/yap.i ${CMAKE_CURRENT_BINARY_DIR}
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/config.h ${CMAKE_CURRENT_BINARY_DIR}
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy ${PYTHON_SOURCES} ${CMAKE_CURRENT_BINARY_DIR}/yap4py
|
COMMAND ${CMAKE_COMMAND} -E copy ${PYTHON_SOURCES} ${CMAKE_CURRENT_BINARY_DIR}/yap4py
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy ${python_dlls} ${SYS_DLLS} ${CMAKE_BINARY_DIR}/libYap${CMAKE_SHARED_LIBRARY_SUFFIX} ${CMAKE_BINARY_DIR}/${YAP_STARTUP} ${PYTHON_SOURCES} ${CMAKE_CURRENT_BINARY_DIR}/yap4py
|
COMMAND ${CMAKE_COMMAND} -E copy ${python_dlls} ${SYS_DLLS} ${CMAKE_BINARY_DIR}/libYap${CMAKE_SHARED_LIBRARY_SUFFIX} ${CMAKE_BINARY_DIR}/${YAP_STARTUP} ${PYTHON_SOURCES} ${CMAKE_CURRENT_BINARY_DIR}/yap4py
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy ${PL} ${CMAKE_CURRENT_BINARY_DIR}/yap4py/prolog
|
COMMAND ${CMAKE_COMMAND} -E copy ${PL} ${CMAKE_CURRENT_BINARY_DIR}/yap4py/prolog
|
||||||
|
@ -14,11 +14,12 @@ if platform.system() == 'Windows':
|
|||||||
dll = glob.glob(os.path.join(yap_lib_path,dll))[0]
|
dll = glob.glob(os.path.join(yap_lib_path,dll))[0]
|
||||||
dll = os.path.abspath(dll)
|
dll = os.path.abspath(dll)
|
||||||
ctypes.WinDLL(dll)
|
ctypes.WinDLL(dll)
|
||||||
|
load('libYap*')
|
||||||
else:
|
else:
|
||||||
def load( dll ):
|
def load( dll ):
|
||||||
dll = glob.glob(os.path.join(yap_lib_path,dll))[0]
|
dll = glob.glob(os.path.join(yap_lib_path,dll))[0]
|
||||||
dll = os.path.abspath(dll)
|
dll = os.path.abspath(dll)
|
||||||
ctypes.CDLL(dll, mode=ctypes.RTLD_GLOBAL)
|
ctypes.CDLL(dll, mode=ctypes.RTLD_GLOBAL)
|
||||||
|
load('libYAP+*')
|
||||||
|
load('libPy4YAP*')
|
||||||
load('libYap*')
|
load('libYap*')
|
||||||
|
@ -54,31 +54,38 @@ pkg_root = pjoin(here, name)
|
|||||||
my_extra_link_args = []
|
my_extra_link_args = []
|
||||||
if platform.system() == 'Darwin':
|
if platform.system() == 'Darwin':
|
||||||
my_extra_link_args = ['-Wl,-rpath', '-Wl,${_ABS_PYTHON_MODULE_PATH}']
|
my_extra_link_args = ['-Wl,-rpath', '-Wl,${_ABS_PYTHON_MODULE_PATH}']
|
||||||
|
win_libs = []
|
||||||
|
local_libs = ['YAP++','Py4YAP']
|
||||||
# or dll in glob('yap/dlls/*'):
|
# or dll in glob('yap/dlls/*'):
|
||||||
# move( dll ,'lib' )
|
# move( dll ,'lib' )
|
||||||
elif platform.system() == 'Windows':
|
elif platform.system() == 'Windows':
|
||||||
|
local_libs = []
|
||||||
|
win_libs = ['wsock32','ws2_32']
|
||||||
my_extra_link_args = ['-Wl,-export-all-symbols']
|
my_extra_link_args = ['-Wl,-export-all-symbols']
|
||||||
|
|
||||||
cplus = ['']
|
cplus = ['']
|
||||||
bpy2yap = \
|
bpy2yap = []
|
||||||
native_sources = ['yap.i']
|
native_sources = ['yap.i']
|
||||||
here = path.abspath(path.dirname(__file__))
|
here = path.abspath(path.dirname(__file__))
|
||||||
|
|
||||||
# Get the long description from the README file
|
# Get the long description from the README file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extensions = [Extension('_yap', native_sources,
|
extensions = [Extension('_yap', native_sources,
|
||||||
define_macros=[('MAJOR_VERSION', '1'),
|
define_macros=[('MAJOR_VERSION', '1'),
|
||||||
('MINOR_VERSION', '0'),
|
('MINOR_VERSION', '0'),
|
||||||
('_YAP_NOT_INSTALLED_', '1'),
|
('_YAP_NOT_INSTALLED_', '1'),
|
||||||
|
('YAP_PYTHON', '1'),
|
||||||
('_GNU_SOURCE', '1')],
|
('_GNU_SOURCE', '1')],
|
||||||
runtime_library_dirs=['yap4py', '${libdir}', '${bindir}'],
|
runtime_library_dirs=['yap4py', '${libdir}', '${bindir}'],
|
||||||
swig_opts=['-modern', '-c++', '-py3',
|
swig_opts=['-modern', '-c++', '-py3',
|
||||||
'-DX_API', '-I${CMAKE_SOURCE_DIR}/CXX', '-I${CMAKE_SOURCE_DIR}/include',
|
'-DX_API', '-I${CMAKE_SOURCE_DIR}/CXX', '-I${CMAKE_SOURCE_DIR}/include',
|
||||||
'-I${CMAKE_SOURCE_DIR}/H', '-I${CMAKE_SOURCE_DIR}/H/generated',
|
'-I${CMAKE_SOURCE_DIR}/H', '-I${CMAKE_SOURCE_DIR}/H/generated',
|
||||||
'-I${CMAKE_SOURCE_DIR}/os', '-I${CMAKE_SOURCE_DIR}/OPTYap', '-I../../..'],
|
'-I${CMAKE_SOURCE_DIR}/os', '-I${CMAKE_SOURCE_DIR}/OPTYap', '-I../../..'],
|
||||||
library_dirs=['../../..', '../../../CXX', '../../packages/python', "${dlls}", "${bindir}", '.'],
|
library_dirs=['../../..', '../../../CXX', '..', "${dlls}", "${bindir}", '.'],
|
||||||
extra_link_args=my_extra_link_args,
|
extra_link_args=my_extra_link_args,
|
||||||
libraries=['Yap','${PYTHON_LIBRARIES}','${GMP_LIBRARIES}','wsock32','ws2_32'],
|
libraries=['Yap','${PYTHON_LIBRARIES}','${GMP_LIBRARIES}']+win_libs+local_libs,
|
||||||
include_dirs=['../../..',
|
include_dirs=['../../..',
|
||||||
'${GMP_INCLUDE_DIRS}',
|
'${GMP_INCLUDE_DIRS}',
|
||||||
'${CMAKE_SOURCE_DIR}/H',
|
'${CMAKE_SOURCE_DIR}/H',
|
||||||
|
Reference in New Issue
Block a user