help to make Yap work with dynamic libs
git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@1638 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
parent
f9987d9fe9
commit
871bb9e024
4
C/agc.c
4
C/agc.c
@ -252,6 +252,10 @@ mark_global_cell(CELL *pt)
|
||||
#else
|
||||
return pt + 3;
|
||||
#endif
|
||||
case (CELL)FunctorIntArray:
|
||||
return pt + (4+pt[1]);
|
||||
case (CELL)FunctorDoubleArray:
|
||||
return pt + (4+((SIZEOF_DOUBLE -SIZEOF_LONG_INT) + pt[1]*SIZEOF_DOUBLE)/SIZEOF_LONG_INT);
|
||||
#if USE_GMP
|
||||
case (CELL)FunctorBigInt:
|
||||
{
|
||||
|
@ -44,7 +44,7 @@ float_to_int(Float v, union arith_ret *o)
|
||||
Int i = (Int)v;
|
||||
if (i-v == 0.0) {
|
||||
o->Int = i;
|
||||
return(long_int_e);
|
||||
return long_int_e;
|
||||
} else {
|
||||
mpz_init_set_d(o->big, v);
|
||||
return big_int_e;
|
||||
|
140
C/cmppreds.c
140
C/cmppreds.c
@ -334,59 +334,125 @@ compare(Term t1, Term t2) /* compare terms t1 and t2 */
|
||||
|
||||
if (IsExtensionFunctor(fun1)) {
|
||||
/* float, long, big, dbref */
|
||||
if (IsFloatTerm(t1)) {
|
||||
if (IsFloatTerm(t2))
|
||||
return(rfloat(FloatOfTerm(t1) - FloatOfTerm(t2)));
|
||||
if (IsRefTerm(t2))
|
||||
return 1;
|
||||
return -1;
|
||||
}
|
||||
if (IsLongIntTerm(t1)) {
|
||||
if (IsIntTerm(t2))
|
||||
return LongIntOfTerm(t1) - IntOfTerm(t2);
|
||||
if (IsFloatTerm(t2)) {
|
||||
return 1;
|
||||
switch ((CELL)fun1) {
|
||||
case double_e:
|
||||
{
|
||||
if (IsFloatTerm(t2))
|
||||
return(rfloat(FloatOfTerm(t1) - FloatOfTerm(t2)));
|
||||
if (IsRefTerm(t2))
|
||||
return 1;
|
||||
return -1;
|
||||
}
|
||||
if (IsLongIntTerm(t2))
|
||||
return LongIntOfTerm(t1) - LongIntOfTerm(t2);
|
||||
case long_int_e:
|
||||
{
|
||||
if (IsIntTerm(t2))
|
||||
return LongIntOfTerm(t1) - IntOfTerm(t2);
|
||||
if (IsFloatTerm(t2)) {
|
||||
return 1;
|
||||
}
|
||||
if (IsLongIntTerm(t2))
|
||||
return LongIntOfTerm(t1) - LongIntOfTerm(t2);
|
||||
#ifdef USE_GMP
|
||||
if (IsBigIntTerm(t2))
|
||||
return -mpz_cmp_si(Yap_BigIntOfTerm(t2), LongIntOfTerm(t1));
|
||||
if (IsBigIntTerm(t2))
|
||||
return -mpz_cmp_si(Yap_BigIntOfTerm(t2), LongIntOfTerm(t1));
|
||||
#endif
|
||||
if (IsRefTerm(t2))
|
||||
return 1;
|
||||
return -1;
|
||||
}
|
||||
#ifdef USE_GMP
|
||||
if (IsBigIntTerm(t1)) {
|
||||
if (IsIntTerm(t2))
|
||||
return mpz_cmp_si(Yap_BigIntOfTerm(t1), IntOfTerm(t2));
|
||||
if (IsFloatTerm(t2)) {
|
||||
return 1;
|
||||
if (IsRefTerm(t2))
|
||||
return 1;
|
||||
return -1;
|
||||
}
|
||||
#ifdef USE_GMP
|
||||
case big_int_e:
|
||||
{
|
||||
if (IsIntTerm(t2))
|
||||
return mpz_cmp_si(Yap_BigIntOfTerm(t1), IntOfTerm(t2));
|
||||
if (IsFloatTerm(t2)) {
|
||||
return 1;
|
||||
}
|
||||
if (IsLongIntTerm(t2))
|
||||
return mpz_cmp_si(Yap_BigIntOfTerm(t1), LongIntOfTerm(t2));
|
||||
if (IsBigIntTerm(t2))
|
||||
return mpz_cmp(Yap_BigIntOfTerm(t1), Yap_BigIntOfTerm(t2));
|
||||
if (IsRefTerm(t2))
|
||||
return 1;
|
||||
return -1;
|
||||
}
|
||||
if (IsLongIntTerm(t2))
|
||||
return mpz_cmp_si(Yap_BigIntOfTerm(t1), LongIntOfTerm(t2));
|
||||
if (IsBigIntTerm(t2))
|
||||
return mpz_cmp(Yap_BigIntOfTerm(t1), Yap_BigIntOfTerm(t2));
|
||||
if (IsRefTerm(t2))
|
||||
return 1;
|
||||
return -1;
|
||||
}
|
||||
#endif
|
||||
if (IsRefTerm(t1)) {
|
||||
case int_array_e:
|
||||
{
|
||||
Functor f2;
|
||||
|
||||
if (!IsApplTerm(t2))
|
||||
return 1;
|
||||
f2 = FunctorOfTerm(t2);
|
||||
if (f2 == FunctorDoubleArray) {
|
||||
UInt dim, i;
|
||||
Int *ar1, *ar2;
|
||||
|
||||
if ((dim = Yap_SizeOfIntArray(t1)) != Yap_SizeOfIntArray(t2)) {
|
||||
return dim-Yap_SizeOfIntArray(t2);
|
||||
}
|
||||
ar1 = Yap_IntArrayOfTerm(t1);
|
||||
ar2 = Yap_IntArrayOfTerm(t2);
|
||||
for (i=0;i<dim;i++) {
|
||||
if (ar1[i]-ar2[i])
|
||||
return ar1[i]-ar2[i] > 0;
|
||||
}
|
||||
return 0;
|
||||
} else if (f2 == FunctorIntArray) {
|
||||
return -1;
|
||||
} else
|
||||
return 1;
|
||||
}
|
||||
case double_array_e:
|
||||
{
|
||||
Functor f2;
|
||||
|
||||
if (!IsApplTerm(t2))
|
||||
return 1;
|
||||
f2 = FunctorOfTerm(t2);
|
||||
if (f2 == FunctorDoubleArray) {
|
||||
UInt dim, i;
|
||||
Float *ar1, *ar2;
|
||||
|
||||
if ((dim = Yap_SizeOfFloatArray(t1)) != Yap_SizeOfFloatArray(t2)) {
|
||||
return dim-Yap_SizeOfFloatArray(t2);
|
||||
}
|
||||
ar1 = Yap_FloatArrayOfTerm(t1);
|
||||
ar2 = Yap_FloatArrayOfTerm(t2);
|
||||
for (i=0;i<dim;i++) {
|
||||
if (ar1[i]-ar2[i])
|
||||
return ar1[i]-ar2[i];
|
||||
}
|
||||
return 0;
|
||||
} else {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
case db_ref_e:
|
||||
if (IsRefTerm(t2))
|
||||
return Unsigned(RefOfTerm(t2)) -
|
||||
Unsigned(RefOfTerm(t1));
|
||||
Unsigned(RefOfTerm(t1));
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
if (!IsApplTerm(t2)) {
|
||||
if (IsPairTerm(t2)) {
|
||||
Int out;
|
||||
Functor f = FunctorOfTerm(t1);
|
||||
|
||||
if (!(out = ArityOfFunctor(f))-2)
|
||||
out = strcmp(RepAtom(NameOfFunctor(f))->StrOfAE,".");
|
||||
return out;
|
||||
}
|
||||
return 1;
|
||||
} else {
|
||||
Functor fun2 = FunctorOfTerm(t2);
|
||||
Int r;
|
||||
|
||||
if (IsExtensionFunctor(fun2)) {
|
||||
if (fun2 == FunctorDoubleArray ||
|
||||
fun2 == FunctorIntArray)
|
||||
return -1;
|
||||
return 1;
|
||||
}
|
||||
r = ArityOfFunctor(fun1) - ArityOfFunctor(fun2);
|
||||
@ -404,7 +470,7 @@ compare(Term t1, Term t2) /* compare terms t1 and t2 */
|
||||
}
|
||||
}
|
||||
|
||||
int Yap_compare_terms(register CELL d0, register CELL d1)
|
||||
int Yap_compare_terms(CELL d0, CELL d1)
|
||||
{
|
||||
return (compare(Deref(d0),Deref(d1)));
|
||||
}
|
||||
|
17
C/compiler.c
17
C/compiler.c
@ -11,8 +11,13 @@
|
||||
* File: compiler.c *
|
||||
* comments: Clause compiler *
|
||||
* *
|
||||
* Last rev: $Date: 2006-05-16 18:37:30 $,$Author: vsc $ *
|
||||
* Last rev: $Date: 2006-05-19 13:48:11 $,$Author: vsc $ *
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 1.75 2006/05/16 18:37:30 vsc
|
||||
* WIN32 fixes
|
||||
* compiler bug fixes
|
||||
* extend interface
|
||||
*
|
||||
* Revision 1.74 2006/04/13 02:04:24 vsc
|
||||
* fix debugging typo
|
||||
*
|
||||
@ -541,8 +546,14 @@ c_arg(Int argno, Term t, unsigned int arity, unsigned int level, compiler_struct
|
||||
Yap_emit((cglobs->onhead ? (argno == (Int)arity ? unify_last_atom_op
|
||||
: unify_atom_op) :
|
||||
write_atom_op), (CELL) t, Zero, &cglobs->cint);
|
||||
}
|
||||
else if (IsIntegerTerm(t) || IsFloatTerm(t) || IsBigIntTerm(t)) {
|
||||
} else if (Yap_IsIntArrayTerm(t) || Yap_IsFloatArrayTerm(t)) {
|
||||
Yap_Error_TYPE = TYPE_ERROR_NUMBER;
|
||||
Yap_Error_Term = t;
|
||||
Yap_ErrorMessage = Yap_ErrorSay;
|
||||
sprintf(Yap_ErrorMessage, "compiling array term");
|
||||
save_machine_regs();
|
||||
longjmp(cglobs->cint.CompilerBotch,1);
|
||||
} else if (IsIntegerTerm(t) || IsFloatTerm(t) || IsBigIntTerm(t)) {
|
||||
if (!IsIntTerm(t)) {
|
||||
/* we are taking a blob, that is a binary that is supposed to be
|
||||
guarded in the clause itself. Possible examples include
|
||||
|
@ -198,6 +198,8 @@ static int can_unify_complex(register CELL *pt0,
|
||||
if (IsExtensionFunctor(f)) {
|
||||
switch((CELL)f) {
|
||||
case (CELL)FunctorDBRef:
|
||||
case (CELL)FunctorIntArray:
|
||||
case (CELL)FunctorDoubleArray:
|
||||
if (d0 == d1) continue;
|
||||
goto comparison_failed;
|
||||
case (CELL)FunctorLongInt:
|
||||
@ -337,7 +339,9 @@ can_unify(Term t1, Term t2, Term *Vars)
|
||||
if (IsExtensionFunctor(f)) {
|
||||
switch((CELL)f) {
|
||||
case (CELL)FunctorDBRef:
|
||||
if (t1 == t2) return(FALSE);
|
||||
case (CELL)FunctorIntArray:
|
||||
case (CELL)FunctorDoubleArray:
|
||||
if (t1 == t2) return FALSE;
|
||||
return FALSE;
|
||||
case (CELL)FunctorLongInt:
|
||||
if (RepAppl(t1)[1] == RepAppl(t2)[1]) return(TRUE);
|
||||
|
44
C/dbase.c
44
C/dbase.c
@ -663,6 +663,22 @@ copy_double(CELL *st, CELL *pt)
|
||||
return st+(2+SIZEOF_DOUBLE/SIZEOF_LONG_INT);
|
||||
}
|
||||
|
||||
static CELL *
|
||||
copy_int_array(CELL *st, CELL *pt)
|
||||
{
|
||||
UInt sz = SIZEOF_LONG_INT*(pt[1]+4);
|
||||
memcpy((void *)st, (void *)pt, sz);
|
||||
return (CELL *)((char *)st+sz);
|
||||
}
|
||||
|
||||
static CELL *
|
||||
copy_double_array(CELL *st, CELL *pt)
|
||||
{
|
||||
UInt sz = SIZEOF_LONG_INT*4+SIZEOF_DOUBLE*pt[1]+(SIZEOF_DOUBLE-SIZEOF_LONG_INT);
|
||||
memcpy((void *)st, (void *)pt, sz);
|
||||
return (CELL *)((char *)st+sz);
|
||||
}
|
||||
|
||||
#ifdef USE_GMP
|
||||
static CELL *
|
||||
copy_big_int(CELL *st, CELL *pt)
|
||||
@ -780,9 +796,29 @@ static CELL *MkDBTerm(register CELL *pt0, register CELL *pt0_end,
|
||||
CodeMax = copy_long_int(CodeMax, ap2);
|
||||
++pt0;
|
||||
continue;
|
||||
case (CELL)FunctorIntArray:
|
||||
CheckDBOverflow(4+Yap_SizeOfIntArray(d0));
|
||||
#ifdef IDB_USE_MBIT
|
||||
*StoPoint++ = AbsAppl(CodeMax)|MBIT;
|
||||
#else
|
||||
*StoPoint++ = AbsAppl(CodeMax);
|
||||
#endif
|
||||
CodeMax = copy_int_array(CodeMax, ap2);
|
||||
++pt0;
|
||||
continue;
|
||||
case (CELL)FunctorDoubleArray:
|
||||
CheckDBOverflow(4+Yap_SizeOfFloatArray(d0));
|
||||
#ifdef IDB_USE_MBIT
|
||||
*StoPoint++ = AbsAppl(CodeMax)|MBIT;
|
||||
#else
|
||||
*StoPoint++ = AbsAppl(CodeMax);
|
||||
#endif
|
||||
CodeMax = copy_double_array(CodeMax, ap2);
|
||||
++pt0;
|
||||
continue;
|
||||
#ifdef USE_GMP
|
||||
case (CELL)FunctorBigInt:
|
||||
CheckDBOverflow(3);
|
||||
CheckDBOverflow(2+Yap_SizeOfBigInt(d0));
|
||||
/* first thing, store a link to the list before we move on */
|
||||
#ifdef IDB_USE_MBIT
|
||||
*StoPoint++ = AbsAppl(CodeMax)|MBIT;
|
||||
@ -1523,6 +1559,12 @@ CreateDBStruct(Term Tm, DBProp p, int InFlag, int *pstat, UInt extra_size, struc
|
||||
fun = FunctorOfTerm(Tm);
|
||||
if (IsExtensionFunctor(fun)) {
|
||||
switch((CELL)fun) {
|
||||
case (CELL)FunctorIntArray:
|
||||
ntp = copy_int_array(ntp0, RepAppl(Tm));
|
||||
break;
|
||||
case (CELL)FunctorDoubleArray:
|
||||
ntp = copy_double_array(ntp0, RepAppl(Tm));
|
||||
break;
|
||||
case (CELL)FunctorDouble:
|
||||
ntp = copy_double(ntp0, RepAppl(Tm));
|
||||
break;
|
||||
|
12
C/grow.c
12
C/grow.c
@ -485,6 +485,18 @@ AdjustGlobal(void)
|
||||
pt += 2;
|
||||
#endif
|
||||
break;
|
||||
case (CELL)FunctorDoubleArray:
|
||||
{
|
||||
Int sz = 3+(SIZEOF_DOUBLE-SIZEOF_LONG_INT)/SIZEOF_LONG_INT+pt[0];
|
||||
pt += sz;
|
||||
}
|
||||
break;
|
||||
case (CELL)FunctorIntArray:
|
||||
{
|
||||
Int sz = 3+pt[0];
|
||||
pt += sz;
|
||||
}
|
||||
break;
|
||||
#if USE_GMP
|
||||
case (CELL)FunctorBigInt:
|
||||
{
|
||||
|
46
C/heapgc.c
46
C/heapgc.c
@ -1277,6 +1277,43 @@ mark_variable(CELL_PTR current)
|
||||
MARK(next+2);
|
||||
#endif
|
||||
POP_CONTINUATION();
|
||||
case (CELL)FunctorIntArray:
|
||||
MARK(next);
|
||||
/* size is given by functor + friends */
|
||||
if (next < HGEN) {
|
||||
total_oldies+=4+next[1];
|
||||
}
|
||||
total_marked += 4+next[1];
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i <= 4+next[1]; i++) {
|
||||
PUSH_POINTER(next+i);
|
||||
}
|
||||
#if GC_NO_TAGS
|
||||
MARK(next+(3+next[1]));
|
||||
#endif
|
||||
}
|
||||
POP_CONTINUATION();
|
||||
case (CELL)FunctorDoubleArray:
|
||||
MARK(next);
|
||||
{
|
||||
UInt sz = 4+next[1]+(SIZEOF_DOUBLE-SIZEOF_LONG_INT);
|
||||
/* size is given by functor + friends */
|
||||
if (next < HGEN) {
|
||||
total_oldies+=sz;
|
||||
}
|
||||
total_marked += sz;
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i <= sz; i++) {
|
||||
PUSH_POINTER(next+i);
|
||||
}
|
||||
#if GC_NO_TAGS
|
||||
MARK(next+(sz-1));
|
||||
#endif
|
||||
}
|
||||
}
|
||||
POP_CONTINUATION();
|
||||
#ifdef USE_GMP
|
||||
case (CELL)FunctorBigInt:
|
||||
MARK(next);
|
||||
@ -3025,8 +3062,13 @@ compact_heap(void)
|
||||
) {
|
||||
/* oops, we found a blob */
|
||||
int nofcells = (UNMARK_CELL(*current)-EndSpecials) / sizeof(CELL);
|
||||
CELL *ptr = current - nofcells ;
|
||||
CELL *ptr;
|
||||
|
||||
if (!nofcells) {
|
||||
/* Arrays */
|
||||
nofcells = current[-1];
|
||||
}
|
||||
ptr = current - nofcells;
|
||||
if (MARKED_PTR(ptr)) {
|
||||
#ifdef DEBUG
|
||||
found_marked+=nofcells;
|
||||
@ -3130,6 +3172,8 @@ compact_heap(void)
|
||||
/* oops, we found a blob */
|
||||
int nofcells = (uccur-EndSpecials) / sizeof(CELL) , i;
|
||||
|
||||
|
||||
//FIX THIS
|
||||
*dest++ = current[nofcells-1];
|
||||
current ++;
|
||||
for (i = 0; i < nofcells-2; i++) {
|
||||
|
@ -319,6 +319,9 @@ p_eq(void)
|
||||
return (d0 == d1);
|
||||
case (CELL)FunctorLongInt:
|
||||
return(LongIntOfTerm(d0) == LongIntOfTerm(d1));
|
||||
case (CELL)FunctorIntArray:
|
||||
case (CELL)FunctorDoubleArray:
|
||||
return !Yap_compare_terms(d0,d1);
|
||||
#ifdef USE_GMP
|
||||
case (CELL)FunctorBigInt:
|
||||
return (mpz_cmp(Yap_BigIntOfTerm(d0), Yap_BigIntOfTerm(d1)) == 0);
|
||||
|
43
C/other.c
43
C/other.c
@ -22,6 +22,9 @@ static char SccsId[] = "%W% %G%";
|
||||
#include "Yap.h"
|
||||
#include "Yatom.h"
|
||||
#include "Heap.h"
|
||||
#if HAVE_STRING_H
|
||||
#include <string.h>
|
||||
#endif
|
||||
|
||||
/* exile Yap_standard_regs here, otherwise WIN32 linkers may complain */
|
||||
REGSTORE Yap_standard_regs;
|
||||
@ -95,3 +98,43 @@ Yap_MkNewApplTerm(Functor f, unsigned int n)
|
||||
}
|
||||
return (AbsAppl(t));
|
||||
}
|
||||
|
||||
Term
|
||||
Yap_MkIntArrayTerm (UInt sz, Int *ptr)
|
||||
{
|
||||
CELL *h0 = H;
|
||||
|
||||
H[0] = (CELL) FunctorLongInt;
|
||||
H[1] = (CELL) (sz);
|
||||
memcpy((void *)(H+2), (void *)ptr, sz*sizeof(Int));
|
||||
H += sz+2;
|
||||
H[0] = (CELL) (sz);
|
||||
#if GC_NO_TAGS
|
||||
H[1] = EndSpecials;
|
||||
#else
|
||||
H[1] = EndSpecials | MBIT;
|
||||
#endif
|
||||
H += 2;
|
||||
return AbsAppl(h0);
|
||||
}
|
||||
|
||||
Term
|
||||
Yap_MkFloatArrayTerm (UInt sz, Float *ptr)
|
||||
{
|
||||
CELL *h0 = H;
|
||||
|
||||
H[0] = (CELL) FunctorLongInt;
|
||||
H[1] = (CELL) (sz);
|
||||
H[2] = 0;
|
||||
memcpy((void *)(H+3), (void *)ptr, sz*sizeof(Float));
|
||||
H += sz+3;
|
||||
H[0] = (CELL) (sz);
|
||||
#if GC_NO_TAGS
|
||||
H[1] = EndSpecials;
|
||||
#else
|
||||
H[1] = EndSpecials | MBIT;
|
||||
#endif
|
||||
H += 2;
|
||||
return AbsAppl(h0);
|
||||
}
|
||||
|
||||
|
@ -227,6 +227,8 @@ OCUnify_complex(register CELL *pt0, register CELL *pt0_end,
|
||||
if (IsExtensionFunctor(f)) {
|
||||
switch((CELL)f) {
|
||||
case (CELL)FunctorDBRef:
|
||||
case (CELL)FunctorIntArray:
|
||||
case (CELL)FunctorDoubleArray:
|
||||
if (d0 == d1) continue;
|
||||
goto cufail;
|
||||
case (CELL)FunctorLongInt:
|
||||
@ -385,6 +387,8 @@ oc_unify_nvar_nvar:
|
||||
if (IsExtensionFunctor((Functor)d0)) {
|
||||
switch(d0) {
|
||||
case (CELL)FunctorDBRef:
|
||||
case (CELL)FunctorIntArray:
|
||||
case (CELL)FunctorDoubleArray:
|
||||
return(pt0 == pt1);
|
||||
case (CELL)FunctorLongInt:
|
||||
return(pt0[1] == pt1[1]);
|
||||
@ -526,6 +530,8 @@ unify_nvar_nvar:
|
||||
if (IsExtensionFunctor((Functor)d0)) {
|
||||
switch(d0) {
|
||||
case (CELL)FunctorDBRef:
|
||||
case (CELL)FunctorIntArray:
|
||||
case (CELL)FunctorDoubleArray:
|
||||
return(pt0 == pt1);
|
||||
case (CELL)FunctorLongInt:
|
||||
return(pt0[1] == pt1[1]);
|
||||
|
@ -442,6 +442,8 @@ writeTerm(Term t, int p, int depth, int rinfixarg, struct write_globs *wglb)
|
||||
case (CELL)FunctorDouble:
|
||||
wrputf(FloatOfTerm(t),wglb->writech);
|
||||
return;
|
||||
case (CELL)FunctorIntArray:
|
||||
case (CELL)FunctorDoubleArray:
|
||||
case (CELL)FunctorDBRef:
|
||||
wrputref(RefOfTerm(t), wglb->Quote_illegal, wglb->writech);
|
||||
return;
|
||||
|
99
H/TermExt.h
99
H/TermExt.h
@ -10,7 +10,7 @@
|
||||
* File: TermExt.h *
|
||||
* mods: *
|
||||
* comments: Extensions to standard terms for YAP *
|
||||
* version: $Id: TermExt.h,v 1.7 2006-03-03 23:11:03 vsc Exp $ *
|
||||
* version: $Id: TermExt.h,v 1.8 2006-05-19 13:48:11 vsc Exp $ *
|
||||
*************************************************************************/
|
||||
|
||||
#ifdef USE_SYSTEM_MALLOC
|
||||
@ -41,35 +41,37 @@
|
||||
#define TermNil MkAtomTerm(AtomNil)
|
||||
#define TermDot MkAtomTerm(AtomDot)
|
||||
|
||||
typedef enum
|
||||
{
|
||||
#if defined(IN_SECOND_QUADRANT) && !GC_NO_TAGS
|
||||
typedef enum
|
||||
{
|
||||
db_ref_e = sizeof (Functor *) | RBIT,
|
||||
long_int_e = 2 * sizeof (Functor *) | RBIT,
|
||||
int_array_e = 2 * sizeof (Functor *) | RBIT,
|
||||
double_array_e = 3 * sizeof (Functor *) | RBIT,
|
||||
long_int_e = 4 * sizeof (Functor *) | RBIT,
|
||||
#ifdef USE_GMP
|
||||
big_int_e = 3 * sizeof (Functor *) | RBIT,
|
||||
double_e = 4 * sizeof (Functor *) | RBIT
|
||||
big_int_e = 5 * sizeof (Functor *) | RBIT,
|
||||
double_e = 6 * sizeof (Functor *) | RBIT
|
||||
#else
|
||||
double_e = 3 * sizeof (Functor *) | RBIT
|
||||
double_e = 5 * sizeof (Functor *) | RBIT
|
||||
#endif
|
||||
}
|
||||
blob_type;
|
||||
#else
|
||||
typedef enum
|
||||
{
|
||||
db_ref_e = sizeof (Functor *),
|
||||
long_int_e = 2 * sizeof (Functor *),
|
||||
int_array_e = 2 * sizeof (Functor *),
|
||||
double_array_e = 3 * sizeof (Functor *),
|
||||
long_int_e = 4 * sizeof (Functor *),
|
||||
#ifdef USE_GMP
|
||||
big_int_e = 3 * sizeof (Functor *),
|
||||
double_e = 4 * sizeof (Functor *)
|
||||
big_int_e = 5 * sizeof (Functor *),
|
||||
double_e = 6 * sizeof (Functor *)
|
||||
#else
|
||||
double_e = 3 * sizeof (Functor *)
|
||||
double_e = 5 * sizeof (Functor *)
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
blob_type;
|
||||
#endif
|
||||
|
||||
#define FunctorDBRef ((Functor)(db_ref_e))
|
||||
#define FunctorIntArray ((Functor)(int_array_e))
|
||||
#define FunctorDoubleArray ((Functor)(double_array_e))
|
||||
#define FunctorLongInt ((Functor)(long_int_e))
|
||||
#ifdef USE_GMP
|
||||
#define FunctorBigInt ((Functor)(big_int_e))
|
||||
@ -324,6 +326,58 @@ IsLongIntTerm (Term t)
|
||||
}
|
||||
|
||||
|
||||
Term Yap_MkIntArrayTerm (UInt, Int *);
|
||||
|
||||
inline EXTERN Int *Yap_IntArrayOfTerm (Term t);
|
||||
|
||||
inline EXTERN Int *
|
||||
Yap_IntArrayOfTerm (Term t)
|
||||
{
|
||||
return (Int *) (RepAppl(t)+2);
|
||||
}
|
||||
|
||||
inline EXTERN UInt Yap_SizeOfIntArray (Term t);
|
||||
|
||||
inline EXTERN UInt
|
||||
Yap_SizeOfIntArray (Term t)
|
||||
{
|
||||
return (UInt) (RepAppl(t)[1]);
|
||||
}
|
||||
|
||||
inline EXTERN int Yap_IsIntArrayTerm (Term);
|
||||
|
||||
inline EXTERN int
|
||||
Yap_IsIntArrayTerm (Term t)
|
||||
{
|
||||
return (int) (IsApplTerm (t) && FunctorOfTerm (t) == FunctorIntArray);
|
||||
}
|
||||
|
||||
|
||||
Term Yap_MkFloatArrayTerm (UInt, Float *);
|
||||
|
||||
inline EXTERN Float *Yap_FloatArrayOfTerm (Term t);
|
||||
|
||||
inline EXTERN Float *
|
||||
Yap_FloatArrayOfTerm (Term t)
|
||||
{
|
||||
return (Float *) (RepAppl(t)+2);
|
||||
}
|
||||
|
||||
inline EXTERN UInt Yap_SizeOfFloatArray (Term t);
|
||||
|
||||
inline EXTERN UInt
|
||||
Yap_SizeOfFloatArray (Term t)
|
||||
{
|
||||
return (UInt) (RepAppl(t)[1]);
|
||||
}
|
||||
|
||||
inline EXTERN int Yap_IsFloatArrayTerm (Term);
|
||||
|
||||
inline EXTERN int
|
||||
Yap_IsFloatArrayTerm (Term t)
|
||||
{
|
||||
return (int) (IsApplTerm (t) && FunctorOfTerm (t) == FunctorDoubleArray);
|
||||
}
|
||||
|
||||
|
||||
#ifdef USE_GMP
|
||||
@ -363,6 +417,17 @@ IsLargeIntTerm (Term t)
|
||||
}
|
||||
|
||||
|
||||
inline EXTERN UInt Yap_SizeOfBigInt (Term);
|
||||
|
||||
inline EXTERN UInt
|
||||
Yap_SizeOfBigInt (Term t)
|
||||
{
|
||||
CELL *pt = RepAppl(t)+1;
|
||||
return 2+(sizeof(MP_INT)+
|
||||
(((MP_INT *)pt)->_mp_alloc*sizeof(mp_limb_t)))/sizeof(CELL);
|
||||
}
|
||||
|
||||
|
||||
|
||||
#else
|
||||
|
||||
@ -542,6 +607,8 @@ unify_extension (Functor f, CELL d0, CELL * pt0, CELL d1)
|
||||
switch (BlobOfFunctor (f))
|
||||
{
|
||||
case db_ref_e:
|
||||
case int_array_e:
|
||||
case double_array_e:
|
||||
return (d0 == d1);
|
||||
case long_int_e:
|
||||
return (pt0[1] == RepAppl (d1)[1]);
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $Id: jpl.yap,v 1.5 2005-05-25 18:18:00 vsc Exp $
|
||||
/* $Id: jpl.yap,v 1.6 2006-05-19 13:48:11 vsc Exp $
|
||||
|
||||
Part of JPL -- SWI-Prolog/Java interface
|
||||
|
||||
@ -4272,28 +4272,32 @@ report_java_setup_problem(E) :-
|
||||
load_jpl_lib :-
|
||||
jpl_java_home(JavaHome),
|
||||
fetch_arch(Arch),
|
||||
gen_jvm_lib(JavaHome,Arch,JLib),
|
||||
load_foreign_files([jpl], [JLib], jpl_install), !.
|
||||
gen_jvm_lib(JavaHome,Arch,JPL,JLibs),
|
||||
load_foreign_files(JPL, JLibs, jpl_install), !.
|
||||
|
||||
fetch_arch(Arch) :-
|
||||
current_prolog_flag(host_type,Name),
|
||||
atom_codes(Name,Codes),
|
||||
gen_arch(Codes,Arch).
|
||||
|
||||
gen_arch(L,mac) :-
|
||||
append(_,[0'd,0'a,0'r,0'w,0'i,0'n|_],L), !.
|
||||
gen_arch([0'x,0'8,0'6,0'_,0'6,0'4|_],amd64).
|
||||
gen_arch([0'i,_,0'8,0'6|_],i386). % take all versions of X86
|
||||
gen_arch([0's,0'p,0'a,0'r,0'c|_],sparc).
|
||||
gen_arch([0'/,0'u,0's,0'r|_],mac).
|
||||
|
||||
gen_jvm_lib(JavaHome,Arch,JLib) :-
|
||||
gen_jvm_lib(_,mac,[jpl],[]) :- !.
|
||||
gen_jvm_lib(JavaHome,Arch,[jpl], [JLib]) :-
|
||||
atom_concat([JavaHome,'/jre/lib/',Arch,'/client/libjvm.so'],JLib),
|
||||
exists(JLib), !.
|
||||
gen_jvm_lib(JavaHome,Arch,JLib) :-
|
||||
gen_jvm_lib(JavaHome,Arch,[jpl], [JLib]) :-
|
||||
atom_concat([JavaHome,'/jre/lib/',Arch,'/server/libjvm.so'],JLib),
|
||||
exists(JLib), !.
|
||||
gen_jvm_lib(JavaHome,Arch,JLib) :-
|
||||
gen_jvm_lib(JavaHome,Arch,[jpl], [JLib]) :-
|
||||
atom_concat([JavaHome,'/jre/lib/',Arch,'/classic/libjvm.so'],JLib),
|
||||
exists(JLib), !.
|
||||
gen_jvm_lib(JavaHome,Arch,JLib) :-
|
||||
gen_jvm_lib(JavaHome,Arch,[jpl], [JLib]) :-
|
||||
atom_concat([JavaHome,'/jre/lib/',Arch,'/libjvm.so'],JLib),
|
||||
exists(JLib), !.
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
#
|
||||
#
|
||||
JAVA_HOME=@JAVA_HOME@
|
||||
JVM_INC = -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux
|
||||
JVM_LIB = -L$(JAVA_HOME)/jre/lib/i386 -L$(JAVA_HOME)/jre/lib/i386/client -ljava -lverify -ljvm
|
||||
JVM_INC = @JAVAINCPATH@
|
||||
JVM_LIB = @JAVALIBPATH@ -ljava -lverify -ljvm
|
||||
#
|
||||
#
|
||||
#
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $Id: jpl.c,v 1.9 2006-02-01 13:28:56 vsc Exp $
|
||||
/* $Id: jpl.c,v 1.10 2006-05-19 13:48:11 vsc Exp $
|
||||
|
||||
Part of JPL -- SWI-Prolog/Java interface
|
||||
|
||||
@ -608,7 +608,7 @@ JNI_term_to_ref(JNIEnv *env, term_t tp, jobject *J)
|
||||
YAP_Term t = YAP_GetFromSlot(tp);
|
||||
|
||||
if (YAP_IsAtomTerm(t)) {
|
||||
char *cp = YAP_AtomName(YAP_AtomOfTerm(t));
|
||||
const char *cp = YAP_AtomName(YAP_AtomOfTerm(t));
|
||||
return ((*J=(*env)->NewStringUTF(env,cp)) != NULL);
|
||||
} else if (YAP_IsApplTerm(t) &&
|
||||
YAP_FunctorOfTerm(t) == JNI_functor_at_1) {
|
||||
@ -630,7 +630,7 @@ JNI_term_to_jobject(JNIEnv *env, term_t tp, jobject *J)
|
||||
YAP_Term t = YAP_GetFromSlot(tp);
|
||||
|
||||
if (YAP_IsAtomTerm(t)) {
|
||||
char *cp = YAP_AtomName(YAP_AtomOfTerm(t));
|
||||
const char *cp = YAP_AtomName(YAP_AtomOfTerm(t));
|
||||
return ((*J=(*env)->NewStringUTF(env,cp)) != NULL);
|
||||
} else if (YAP_IsApplTerm(t) &&
|
||||
YAP_FunctorOfTerm(t) == JNI_functor_at_1) {
|
||||
@ -1853,7 +1853,7 @@ jni_supported_jvm_version(
|
||||
static int
|
||||
jni_get_created_jvm_count(void)
|
||||
{
|
||||
int n;
|
||||
jint n;
|
||||
|
||||
return ( JNI_GetCreatedJavaVMs(NULL,0,&n) == 0 // what does the '0' arg mean?
|
||||
? n
|
||||
@ -1890,7 +1890,7 @@ jni_create_jvm_c(
|
||||
char cpopt[1000];
|
||||
JavaVMOption opt[MAX_JVM_OPTIONS];
|
||||
int r;
|
||||
int n;
|
||||
jint n;
|
||||
int optn = 0;
|
||||
|
||||
DEBUG(1, Sdprintf( "[creating JVM with 'java.class.path=%s']\n", classpath));
|
||||
@ -2938,7 +2938,7 @@ jni_func_1_plc(
|
||||
// jlong jl; // "
|
||||
void *p1; // temp for converted (JVM) arg
|
||||
char *c1; // "
|
||||
int i1; // "
|
||||
jint i1; // "
|
||||
// jlong l1; // "
|
||||
// double d1; // "
|
||||
jboolean r; // Prolog exit/fail outcome
|
||||
@ -3078,7 +3078,7 @@ jni_func_2_plc(
|
||||
char *c1; // "
|
||||
char *c2; // "
|
||||
// int i1; // "
|
||||
int i2; // "
|
||||
jint i2; // "
|
||||
// jlong l1; // "
|
||||
// jlong l2; // "
|
||||
// double d1; // "
|
||||
@ -4852,14 +4852,15 @@ Java_jpl_fli_Prolog_reset_1term_1refs(
|
||||
jobject jafter
|
||||
)
|
||||
{
|
||||
term_t term;
|
||||
long term;
|
||||
|
||||
|
||||
if ( jpl_ensure_pvm_init(env)
|
||||
// && jafter != NULL // redundant: getLongValue checks this
|
||||
&& getLongValue(env,jafter,&term) // SWI RM -> oughta be non-null
|
||||
&& getLongValue(env,jafter,&term) // SWI RM -> oughta be non-null
|
||||
)
|
||||
{
|
||||
PL_reset_term_refs( term); // void; SWI RM -> "always succeeds"
|
||||
PL_reset_term_refs( (term_t)term); // void; SWI RM -> "always succeeds"
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -526,8 +526,8 @@ libYap.a: $(LIB_OBJECTS)
|
||||
$(AR) rc libYap.a $(LIB_OBJECTS)
|
||||
$(RANLIB) libYap.a
|
||||
|
||||
@IN_UNIX@@DO_SECOND_LD@libYap@SHLIB_SUFFIX@: $(LIB_OBJECTS)
|
||||
@IN_UNIX@@DO_SECOND_LD@ @SHLIB_LD@ -o libYap@SHLIB_SUFFIX@ $(LIB_OBJECTS) $(LIBS)
|
||||
@IN_UNIX@@DO_SECOND_LD@@YAPLIB@: $(LIB_OBJECTS)
|
||||
@IN_UNIX@@DO_SECOND_LD@ @DYNLIB_LD@ -o @YAPLIB@ $(LIB_OBJECTS) $(LIBS)
|
||||
|
||||
install: install_bin install_data
|
||||
|
||||
|
@ -28,6 +28,7 @@ allocate up to 3GB).</li>
|
||||
<li> FIXED: compilation bug in arg(X,1,A).</li>
|
||||
<li> NEW: extend interface to pass chunks of integers/floats.</li>
|
||||
<li> FIXED: get rid of some more global variables.</li>
|
||||
>>>>>>> 1.73
|
||||
<li> NEW: thread_yield/0 (request Paulo Moura).</li>
|
||||
<li> FIXED: current_thread was not returning aliases (obs Paulo Moura).</li>
|
||||
<li> FIXED: AuxSp was not properly initialised for new threads (obs Paulo Moura).</li>
|
||||
|
41
configure
vendored
41
configure
vendored
@ -309,7 +309,7 @@ ac_includes_default="\
|
||||
# include <unistd.h>
|
||||
#endif"
|
||||
|
||||
ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT GCC C_INTERF_FLAGS C_PARSER_FLAGS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os LN_S INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA RANLIB ac_ct_RANLIB INDENT ac_ct_INDENT AR ac_ct_AR MPI_CC ac_ct_MPI_CC INSTALL_INFO CPP EGREP M4 M4GENHDRS INSTALL_DLLS MERGE_DLL_OBJS SHLIB_CFLAGS SHLIB_SUFFIX EXEC_SUFFIX DO_SECOND_LD SHLIB_LD YAPLIB YAP_EXTRAS NO_BUILTIN_REGEXP ENABLE_JPL JAVA_HOME JAVAC JAR IN_UNIX YAPMPILIB MPI_OBJS MPI_LIBS INSTALL_COMMAND CROSS_SIMULATOR INSTALLCLP M4GENABSMI LIBOBJS LTLIBOBJS'
|
||||
ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT GCC C_INTERF_FLAGS C_PARSER_FLAGS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os LN_S INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA RANLIB ac_ct_RANLIB INDENT ac_ct_INDENT AR ac_ct_AR MPI_CC ac_ct_MPI_CC INSTALL_INFO CPP EGREP M4 M4GENHDRS INSTALL_DLLS MERGE_DLL_OBJS SHLIB_CFLAGS SHLIB_SUFFIX EXEC_SUFFIX DO_SECOND_LD SHLIB_LD DYNLIB_LD YAPLIB YAP_EXTRAS NO_BUILTIN_REGEXP ENABLE_JPL JAVA_HOME JAVAC JAR IN_UNIX YAPMPILIB MPI_OBJS MPI_LIBS INSTALL_COMMAND CROSS_SIMULATOR INSTALLCLP JAVALIBPATH JAVAINCPATH M4GENABSMI LIBOBJS LTLIBOBJS'
|
||||
ac_subst_files=''
|
||||
|
||||
# Initialize some variables set by options.
|
||||
@ -6017,6 +6017,8 @@ fi
|
||||
LDFLAGS="-dynamic $LDFLAGS"
|
||||
;;
|
||||
*)
|
||||
JAVALIBPATH="-L$JAVA_HOME/jre/lib/i386 -L$JAVA_HOME/jre/lib/i386/client"
|
||||
JAVAINCPATH="-I$JAVA_HOME/include -I$JAVA_HOME/include/linux"
|
||||
if test "$CC" != "lcc"
|
||||
then
|
||||
LDFLAGS="-rdynamic $LDFLAGS"
|
||||
@ -6263,11 +6265,13 @@ fi
|
||||
fi
|
||||
fi
|
||||
SHLIB_CFLAGS="-fno-common"
|
||||
SHLIB_SUFFIX=".so"
|
||||
SHLIB_SUFFIX=".dylib"
|
||||
DO_SECOND_LD=""
|
||||
SHLIB_LD="cc -bundle -flat_namespace -undefined suppress"
|
||||
SHLIB_LD="gcc -bundle -flat_namespace -undefined suppress"
|
||||
INSTALL_DLLS=""
|
||||
CC="cc -no-cpp-precomp"
|
||||
JAVALIBPATH="-L/System/Library/Frameworks/JavaVM.framework/Libraries"
|
||||
JAVAINCPATH="-I/System/Library/Frameworks/JavaVM.framework/Headers"
|
||||
;;
|
||||
*netbsd*|*freebsd*)
|
||||
if echo __ELF__ | ${CC:-cc} -E - | grep -q __ELF__
|
||||
@ -6392,9 +6396,18 @@ esac
|
||||
if test "$dynamic_loading" = "yes"
|
||||
then
|
||||
YAP_EXTRAS="$SHLIB_CFLAGS $YAP_EXTRAS"
|
||||
YAPLIB=libYap"$SHLIB_SUFFIX"
|
||||
CROSS_SIMULATOR="LD_LIBRARY_PATH=."
|
||||
LDFLAGS="$LDFLAGS -Wl,-R,$prefix/lib"
|
||||
case "$target_os" in
|
||||
*darwin*)
|
||||
YAPLIB=libYap"$SHLIB_SUFFIX"
|
||||
DYNLIB_LD="gcc -dynamiclib"
|
||||
;;
|
||||
*)
|
||||
LDFLAGS="$LDFLAGS -Wl,-R,$prefix/lib"
|
||||
YAPLIB=libYap"$SHLIB_SUFFIX"
|
||||
DYNLIB_LD="$SHLIB_LD"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
if test "$coroutining" = "yes"
|
||||
@ -12637,6 +12650,10 @@ EXEC_SUFFIX=""
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -15218,6 +15235,7 @@ _ACEOF
|
||||
|
||||
fi
|
||||
|
||||
mkdir -p library/matrices
|
||||
mkdir -p library/mpi
|
||||
mkdir -p library/random
|
||||
mkdir -p library/regex
|
||||
@ -15237,7 +15255,7 @@ mkdir -p LGPL/clp
|
||||
mkdir -p LGPL/clpr
|
||||
mkdir -p LGPL/chr
|
||||
|
||||
ac_config_files="$ac_config_files Makefile library/regex/Makefile library/system/Makefile library/random/Makefile library/yap2swi/Makefile library/mpi/Makefile .depend library/Makefile LGPL/chr/Makefile LGPL/chr/chr_swi_bootstrap.yap CLPBN/Makefile LGPL/clp/Makefile LGPL/clpr/Makefile library/Tries/Makefile LGPL/JPL/Makefile LGPL/JPL/src/Makefile LGPL/JPL/java/Makefile LGPL/JPL/jpl_paths.yap"
|
||||
ac_config_files="$ac_config_files Makefile library/matrices/Makefile library/regex/Makefile library/system/Makefile library/random/Makefile library/yap2swi/Makefile library/mpi/Makefile .depend library/Makefile LGPL/chr/Makefile LGPL/chr/chr_swi_bootstrap.yap CLPBN/Makefile LGPL/clp/Makefile LGPL/clpr/Makefile library/Tries/Makefile LGPL/JPL/Makefile LGPL/JPL/src/Makefile LGPL/JPL/java/Makefile LGPL/JPL/jpl_paths.yap"
|
||||
cat >confcache <<\_ACEOF
|
||||
# This file is a shell script that caches the results of configure
|
||||
# tests run on this system so they can be shared between configure
|
||||
@ -15320,10 +15338,9 @@ for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
|
||||
# 1. Remove the extension, and $U if already installed.
|
||||
ac_i=`echo "$ac_i" |
|
||||
sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
|
||||
# 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
|
||||
# will be set to the directory where LIBOBJS objects are built.
|
||||
ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
|
||||
ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'
|
||||
# 2. Add them.
|
||||
ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
|
||||
ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
|
||||
done
|
||||
LIBOBJS=$ac_libobjs
|
||||
|
||||
@ -15765,6 +15782,7 @@ do
|
||||
case "$ac_config_target" in
|
||||
# Handling of arguments.
|
||||
"Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
|
||||
"library/matrices/Makefile" ) CONFIG_FILES="$CONFIG_FILES library/matrices/Makefile" ;;
|
||||
"library/regex/Makefile" ) CONFIG_FILES="$CONFIG_FILES library/regex/Makefile" ;;
|
||||
"library/system/Makefile" ) CONFIG_FILES="$CONFIG_FILES library/system/Makefile" ;;
|
||||
"library/random/Makefile" ) CONFIG_FILES="$CONFIG_FILES library/random/Makefile" ;;
|
||||
@ -15913,6 +15931,7 @@ s,@SHLIB_SUFFIX@,$SHLIB_SUFFIX,;t t
|
||||
s,@EXEC_SUFFIX@,$EXEC_SUFFIX,;t t
|
||||
s,@DO_SECOND_LD@,$DO_SECOND_LD,;t t
|
||||
s,@SHLIB_LD@,$SHLIB_LD,;t t
|
||||
s,@DYNLIB_LD@,$DYNLIB_LD,;t t
|
||||
s,@YAPLIB@,$YAPLIB,;t t
|
||||
s,@YAP_EXTRAS@,$YAP_EXTRAS,;t t
|
||||
s,@NO_BUILTIN_REGEXP@,$NO_BUILTIN_REGEXP,;t t
|
||||
@ -15927,6 +15946,8 @@ s,@MPI_LIBS@,$MPI_LIBS,;t t
|
||||
s,@INSTALL_COMMAND@,$INSTALL_COMMAND,;t t
|
||||
s,@CROSS_SIMULATOR@,$CROSS_SIMULATOR,;t t
|
||||
s,@INSTALLCLP@,$INSTALLCLP,;t t
|
||||
s,@JAVALIBPATH@,$JAVALIBPATH,;t t
|
||||
s,@JAVAINCPATH@,$JAVAINCPATH,;t t
|
||||
s,@M4GENABSMI@,$M4GENABSMI,;t t
|
||||
s,@LIBOBJS@,$LIBOBJS,;t t
|
||||
s,@LTLIBOBJS@,$LTLIBOBJS,;t t
|
||||
|
28
configure.in
28
configure.in
@ -591,6 +591,8 @@ case "$target_os" in
|
||||
LDFLAGS="-dynamic $LDFLAGS"
|
||||
;;
|
||||
*)
|
||||
JAVALIBPATH="-L$JAVA_HOME/jre/lib/i386 -L$JAVA_HOME/jre/lib/i386/client"
|
||||
JAVAINCPATH="-I$JAVA_HOME/include -I$JAVA_HOME/include/linux"
|
||||
if test "$CC" != "lcc"
|
||||
then
|
||||
LDFLAGS="-rdynamic $LDFLAGS"
|
||||
@ -692,11 +694,13 @@ dnl Linux has both elf and a.out, in this case we found elf
|
||||
fi
|
||||
fi
|
||||
SHLIB_CFLAGS="-fno-common"
|
||||
SHLIB_SUFFIX=".so"
|
||||
SHLIB_SUFFIX=".dylib"
|
||||
DO_SECOND_LD=""
|
||||
SHLIB_LD="cc -bundle -flat_namespace -undefined suppress"
|
||||
SHLIB_LD="gcc -bundle -flat_namespace -undefined suppress"
|
||||
INSTALL_DLLS=""
|
||||
CC="cc -no-cpp-precomp"
|
||||
JAVALIBPATH="-L/System/Library/Frameworks/JavaVM.framework/Libraries"
|
||||
JAVAINCPATH="-I/System/Library/Frameworks/JavaVM.framework/Headers"
|
||||
;;
|
||||
*netbsd*|*freebsd*)
|
||||
if echo __ELF__ | ${CC:-cc} -E - | grep -q __ELF__
|
||||
@ -754,9 +758,18 @@ esac
|
||||
if test "$dynamic_loading" = "yes"
|
||||
then
|
||||
YAP_EXTRAS="$SHLIB_CFLAGS $YAP_EXTRAS"
|
||||
YAPLIB=libYap"$SHLIB_SUFFIX"
|
||||
CROSS_SIMULATOR="LD_LIBRARY_PATH=."
|
||||
LDFLAGS="$LDFLAGS -Wl,-R,$prefix/lib"
|
||||
case "$target_os" in
|
||||
*darwin*)
|
||||
YAPLIB=libYap"$SHLIB_SUFFIX"
|
||||
DYNLIB_LD="gcc -dynamiclib"
|
||||
;;
|
||||
*)
|
||||
LDFLAGS="$LDFLAGS -Wl,-R,$prefix/lib"
|
||||
YAPLIB=libYap"$SHLIB_SUFFIX"
|
||||
DYNLIB_LD="$SHLIB_LD"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
if test "$coroutining" = "yes"
|
||||
@ -945,8 +958,10 @@ AC_SUBST(EXEC_SUFFIX)
|
||||
dnl how to call the loader
|
||||
AC_SUBST(DO_SECOND_LD)
|
||||
AC_SUBST(SHLIB_LD)
|
||||
AC_SUBST(DYNLIB_LD)
|
||||
dnl objects in YAP library
|
||||
AC_SUBST(YAPLIB)
|
||||
AC_SUBST(LDFLAGS)
|
||||
dnl install_info
|
||||
AC_SUBST(INSTALL_INFO)
|
||||
dnl let YAP_EXTRAS fall through configure, from the env into Makefile
|
||||
@ -963,6 +978,8 @@ AC_SUBST(MPI_LIBS)
|
||||
AC_SUBST(INSTALL_COMMAND)
|
||||
AC_SUBST(CROSS_SIMULATOR)
|
||||
AC_SUBST(INSTALLCLP)
|
||||
AC_SUBST(JAVALIBPATH)
|
||||
AC_SUBST(JAVAINCPATH)
|
||||
|
||||
|
||||
dnl check for threaded code
|
||||
@ -1231,6 +1248,7 @@ AC_DEFINE(GC_NO_TAGS,1)
|
||||
AC_DEFINE(USE_DL_MALLOC,1)
|
||||
fi
|
||||
|
||||
mkdir -p library/matrices
|
||||
mkdir -p library/mpi
|
||||
mkdir -p library/random
|
||||
mkdir -p library/regex
|
||||
@ -1250,7 +1268,7 @@ mkdir -p LGPL/clp
|
||||
mkdir -p LGPL/clpr
|
||||
mkdir -p LGPL/chr
|
||||
|
||||
AC_OUTPUT(Makefile library/regex/Makefile library/system/Makefile library/random/Makefile library/yap2swi/Makefile library/mpi/Makefile .depend library/Makefile LGPL/chr/Makefile LGPL/chr/chr_swi_bootstrap.yap CLPBN/Makefile LGPL/clp/Makefile LGPL/clpr/Makefile library/Tries/Makefile LGPL/JPL/Makefile LGPL/JPL/src/Makefile LGPL/JPL/java/Makefile LGPL/JPL/jpl_paths.yap)
|
||||
AC_OUTPUT(Makefile library/matrices/Makefile library/regex/Makefile library/system/Makefile library/random/Makefile library/yap2swi/Makefile library/mpi/Makefile .depend library/Makefile LGPL/chr/Makefile LGPL/chr/chr_swi_bootstrap.yap CLPBN/Makefile LGPL/clp/Makefile LGPL/clpr/Makefile library/Tries/Makefile LGPL/JPL/Makefile LGPL/JPL/src/Makefile LGPL/JPL/java/Makefile LGPL/JPL/jpl_paths.yap)
|
||||
|
||||
make depend
|
||||
|
||||
|
@ -36,6 +36,7 @@ PROGRAMS= $(srcdir)/apply_macros.yap \
|
||||
$(srcdir)/listing.yap \
|
||||
$(srcdir)/lists.yap \
|
||||
$(srcdir)/logtalk.yap \
|
||||
$(srcdir)/matrices.yap \
|
||||
$(srcdir)/ordsets.yap \
|
||||
$(srcdir)/prandom.yap \
|
||||
$(srcdir)/queues.yap \
|
||||
|
Reference in New Issue
Block a user